@pgplex/pgconsole 0.0.4 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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=[],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}]);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)}};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}}};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=``,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}]);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()=>(await queryClient$1.getConstraints({connectionId,schema,table:table$1})).constraints,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}})}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(),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}),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`,`0.0.4`,` (`,`8830059`,`) · `,new Date(`2026-02-06T14:28:32.494Z`).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}){let[searchQuery,setSearchQuery]=(0,import_react.useState)(``),queryClient$2=useQueryClient(),{mutate:refreshSchemaCache}=useRefreshSchemaCache(),{data:materializedViewsData=[],isLoading:mvLoading,refetch:refetchMaterializedViews}=useMaterializedViews(connectionId,selectedSchema||``),{data:functionsData=[],isLoading:functionsLoading,refetch:refetchFunctions}=useFunctions(connectionId,selectedSchema||``),{data:proceduresData=[],isLoading:proceduresLoading,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;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(),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`})]}),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=[],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}]);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=``,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}]);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()=>(await queryClient$1.getConstraints({connectionId,schema,table:table$1})).constraints,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`,`0.1.0`,` (`,`11fe598`,`) · `,new Date(`2026-02-07T18:09:34.559Z`).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=`
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)||`
@@ -80,7 +80,7 @@ Please change the parent <Route path="${parentPath}"> to <Route path="${parentPa
80
80
  `,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`,`
81
81
  `,`"`,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(`
82
82
  `)||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(`
83
- `)||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(value===``)return{...prev,[colName]:null};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-qjXzJq_H.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(`
83
+ `)||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(value===``)return{...prev,[colName]:null};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-CiHxzEYZ.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(`
84
84
  `)}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(`
85
85
  `)}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(`
86
86
  `)}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=`
@@ -98,8 +98,8 @@ Please change the parent <Route path="${parentPath}"> to <Route path="${parentPa
98
98
  `}),result}function trimMarkdownSpaceStart(value){let index$4=0,code$2=value.charCodeAt(index$4);for(;code$2===9||code$2===32;)index$4++,code$2=value.charCodeAt(index$4);return value.slice(index$4)}function toHast(tree,options$1){let state$1=createState(tree,options$1),node$1=state$1.one(tree,void 0),foot=footer(state$1),result=Array.isArray(node$1)?{type:`root`,children:node$1}:node$1||{type:`root`,children:[]};return foot&&(`children`in result,result.children.push({type:`text`,value:`
99
99
  `},foot)),result}function remarkRehype(destination,options$1){return destination&&`run`in destination?async function(tree,file){let hastTree=toHast(tree,{file,...options$1});await destination.run(hastTree,file)}:function(tree,file){return toHast(tree,{file,...destination||options$1})}}function bail(error){if(error)throw error}var require_extend=__commonJSMin(((exports,module)=>{var hasOwn=Object.prototype.hasOwnProperty,toStr=Object.prototype.toString,defineProperty=Object.defineProperty,gOPD=Object.getOwnPropertyDescriptor,isArray=function(arr){return typeof Array.isArray==`function`?Array.isArray(arr):toStr.call(arr)===`[object Array]`},isPlainObject$1=function(obj){if(!obj||toStr.call(obj)!==`[object Object]`)return!1;var hasOwnConstructor=hasOwn.call(obj,`constructor`),hasIsPrototypeOf=obj.constructor&&obj.constructor.prototype&&hasOwn.call(obj.constructor.prototype,`isPrototypeOf`);if(obj.constructor&&!hasOwnConstructor&&!hasIsPrototypeOf)return!1;for(var key$1 in obj);return key$1===void 0||hasOwn.call(obj,key$1)},setProperty=function(target,options$1){defineProperty&&options$1.name===`__proto__`?defineProperty(target,options$1.name,{enumerable:!0,configurable:!0,value:options$1.newValue,writable:!0}):target[options$1.name]=options$1.newValue},getProperty=function(obj,name$2){if(name$2===`__proto__`)if(hasOwn.call(obj,name$2)){if(gOPD)return gOPD(obj,name$2).value}else return;return obj[name$2]};module.exports=function extend$1(){var options$1,name$2,src,copy,copyIsArray,clone$1,target=arguments[0],i$3=1,length=arguments.length,deep=!1;for(typeof target==`boolean`&&(deep=target,target=arguments[1]||{},i$3=2),(target==null||typeof target!=`object`&&typeof target!=`function`)&&(target={});i$3<length;++i$3)if(options$1=arguments[i$3],options$1!=null)for(name$2 in options$1)src=getProperty(target,name$2),copy=getProperty(options$1,name$2),target!==copy&&(deep&&copy&&(isPlainObject$1(copy)||(copyIsArray=isArray(copy)))?(copyIsArray?(copyIsArray=!1,clone$1=src&&isArray(src)?src:[]):clone$1=src&&isPlainObject$1(src)?src:{},setProperty(target,{name:name$2,newValue:extend$1(deep,clone$1,copy)})):copy!==void 0&&setProperty(target,{name:name$2,newValue:copy}));return target}}));function isPlainObject(value){if(typeof value!=`object`||!value)return!1;let prototype=Object.getPrototypeOf(value);return(prototype===null||prototype===Object.prototype||Object.getPrototypeOf(prototype)===null)&&!(Symbol.toStringTag in value)&&!(Symbol.iterator in value)}function trough(){let fns=[],pipeline={run,use:use$1};return pipeline;function run(...values){let middlewareIndex=-1,callback=values.pop();if(typeof callback!=`function`)throw TypeError(`Expected function as last argument, not `+callback);next(null,...values);function next(error,...output){let fn=fns[++middlewareIndex],index$4=-1;if(error){callback(error);return}for(;++index$4<values.length;)(output[index$4]===null||output[index$4]===void 0)&&(output[index$4]=values[index$4]);values=output,fn?wrap(fn,next)(...output):callback(null,...output)}}function use$1(middelware){if(typeof middelware!=`function`)throw TypeError("Expected `middelware` to be a function, not "+middelware);return fns.push(middelware),pipeline}}function wrap(middleware,callback){let called;return wrapped;function wrapped(...parameters){let fnExpectsCallback=middleware.length>parameters.length,result;fnExpectsCallback&&parameters.push(done);try{result=middleware.apply(this,parameters)}catch(error){let exception=error;if(fnExpectsCallback&&called)throw exception;return done(exception)}fnExpectsCallback||(result&&result.then&&typeof result.then==`function`?result.then(then,done):result instanceof Error?done(result):then(result))}function done(error,...output){called||(called=!0,callback(error,...output))}function then(value){done(null,value)}}const minpath={basename:basename$1,dirname,extname,join,sep:`/`};function basename$1(path,extname$1){if(extname$1!==void 0&&typeof extname$1!=`string`)throw TypeError(`"ext" argument must be a string`);assertPath$1(path);let start=0,end=-1,index$4=path.length,seenNonSlash;if(extname$1===void 0||extname$1.length===0||extname$1.length>path.length){for(;index$4--;)if(path.codePointAt(index$4)===47){if(seenNonSlash){start=index$4+1;break}}else end<0&&(seenNonSlash=!0,end=index$4+1);return end<0?``:path.slice(start,end)}if(extname$1===path)return``;let firstNonSlashEnd=-1,extnameIndex=extname$1.length-1;for(;index$4--;)if(path.codePointAt(index$4)===47){if(seenNonSlash){start=index$4+1;break}}else firstNonSlashEnd<0&&(seenNonSlash=!0,firstNonSlashEnd=index$4+1),extnameIndex>-1&&(path.codePointAt(index$4)===extname$1.codePointAt(extnameIndex--)?extnameIndex<0&&(end=index$4):(extnameIndex=-1,end=firstNonSlashEnd));return start===end?end=firstNonSlashEnd:end<0&&(end=path.length),path.slice(start,end)}function dirname(path){if(assertPath$1(path),path.length===0)return`.`;let end=-1,index$4=path.length,unmatchedSlash;for(;--index$4;)if(path.codePointAt(index$4)===47){if(unmatchedSlash){end=index$4;break}}else unmatchedSlash||=!0;return end<0?path.codePointAt(0)===47?`/`:`.`:end===1&&path.codePointAt(0)===47?`//`:path.slice(0,end)}function extname(path){assertPath$1(path);let index$4=path.length,end=-1,startPart=0,startDot=-1,preDotState=0,unmatchedSlash;for(;index$4--;){let code$2=path.codePointAt(index$4);if(code$2===47){if(unmatchedSlash){startPart=index$4+1;break}continue}end<0&&(unmatchedSlash=!0,end=index$4+1),code$2===46?startDot<0?startDot=index$4:preDotState!==1&&(preDotState=1):startDot>-1&&(preDotState=-1)}return startDot<0||end<0||preDotState===0||preDotState===1&&startDot===end-1&&startDot===startPart+1?``:path.slice(startDot,end)}function join(...segments){let index$4=-1,joined;for(;++index$4<segments.length;)assertPath$1(segments[index$4]),segments[index$4]&&(joined=joined===void 0?segments[index$4]:joined+`/`+segments[index$4]);return joined===void 0?`.`:normalize(joined)}function normalize(path){assertPath$1(path);let absolute=path.codePointAt(0)===47,value=normalizeString(path,!absolute);return value.length===0&&!absolute&&(value=`.`),value.length>0&&path.codePointAt(path.length-1)===47&&(value+=`/`),absolute?`/`+value:value}function normalizeString(path,allowAboveRoot){let result=``,lastSegmentLength=0,lastSlash=-1,dots=0,index$4=-1,code$2,lastSlashIndex;for(;++index$4<=path.length;){if(index$4<path.length)code$2=path.codePointAt(index$4);else if(code$2===47)break;else code$2=47;if(code$2===47){if(!(lastSlash===index$4-1||dots===1))if(lastSlash!==index$4-1&&dots===2){if(result.length<2||lastSegmentLength!==2||result.codePointAt(result.length-1)!==46||result.codePointAt(result.length-2)!==46){if(result.length>2){if(lastSlashIndex=result.lastIndexOf(`/`),lastSlashIndex!==result.length-1){lastSlashIndex<0?(result=``,lastSegmentLength=0):(result=result.slice(0,lastSlashIndex),lastSegmentLength=result.length-1-result.lastIndexOf(`/`)),lastSlash=index$4,dots=0;continue}}else if(result.length>0){result=``,lastSegmentLength=0,lastSlash=index$4,dots=0;continue}}allowAboveRoot&&(result=result.length>0?result+`/..`:`..`,lastSegmentLength=2)}else result.length>0?result+=`/`+path.slice(lastSlash+1,index$4):result=path.slice(lastSlash+1,index$4),lastSegmentLength=index$4-lastSlash-1;lastSlash=index$4,dots=0}else code$2===46&&dots>-1?dots++:dots=-1}return result}function assertPath$1(path){if(typeof path!=`string`)throw TypeError(`Path must be a string. Received `+JSON.stringify(path))}const minproc={cwd};function cwd(){return`/`}function isUrl(fileUrlOrPath){return!!(typeof fileUrlOrPath==`object`&&fileUrlOrPath&&`href`in fileUrlOrPath&&fileUrlOrPath.href&&`protocol`in fileUrlOrPath&&fileUrlOrPath.protocol&&fileUrlOrPath.auth===void 0)}function urlToPath(path){if(typeof path==`string`)path=new URL(path);else if(!isUrl(path)){let error=TypeError('The "path" argument must be of type string or an instance of URL. Received `'+path+"`");throw error.code=`ERR_INVALID_ARG_TYPE`,error}if(path.protocol!==`file:`){let error=TypeError(`The URL must be of scheme file`);throw error.code=`ERR_INVALID_URL_SCHEME`,error}return getPathFromURLPosix(path)}function getPathFromURLPosix(url){if(url.hostname!==``){let error=TypeError(`File URL host must be "localhost" or empty on darwin`);throw error.code=`ERR_INVALID_FILE_URL_HOST`,error}let pathname=url.pathname,index$4=-1;for(;++index$4<pathname.length;)if(pathname.codePointAt(index$4)===37&&pathname.codePointAt(index$4+1)===50){let third=pathname.codePointAt(index$4+2);if(third===70||third===102){let error=TypeError(`File URL path must not include encoded / characters`);throw error.code=`ERR_INVALID_FILE_URL_PATH`,error}}return decodeURIComponent(pathname)}var order=[`history`,`path`,`basename`,`stem`,`extname`,`dirname`],VFile=class{constructor(value){let options$1;options$1=value?isUrl(value)?{path:value}:typeof value==`string`||isUint8Array$1(value)?{value}:value:{},this.cwd=`cwd`in options$1?``:minproc.cwd(),this.data={},this.history=[],this.messages=[],this.value,this.map,this.result,this.stored;let index$4=-1;for(;++index$4<order.length;){let field$1=order[index$4];field$1 in options$1&&options$1[field$1]!==void 0&&options$1[field$1]!==null&&(this[field$1]=field$1===`history`?[...options$1[field$1]]:options$1[field$1])}let field;for(field in options$1)order.includes(field)||(this[field]=options$1[field])}get basename(){return typeof this.path==`string`?minpath.basename(this.path):void 0}set basename(basename$2){assertNonEmpty(basename$2,`basename`),assertPart(basename$2,`basename`),this.path=minpath.join(this.dirname||``,basename$2)}get dirname(){return typeof this.path==`string`?minpath.dirname(this.path):void 0}set dirname(dirname$1){assertPath(this.basename,`dirname`),this.path=minpath.join(dirname$1||``,this.basename)}get extname(){return typeof this.path==`string`?minpath.extname(this.path):void 0}set extname(extname$1){if(assertPart(extname$1,`extname`),assertPath(this.dirname,`extname`),extname$1){if(extname$1.codePointAt(0)!==46)throw Error("`extname` must start with `.`");if(extname$1.includes(`.`,1))throw Error("`extname` cannot contain multiple dots")}this.path=minpath.join(this.dirname,this.stem+(extname$1||``))}get path(){return this.history[this.history.length-1]}set path(path){isUrl(path)&&(path=urlToPath(path)),assertNonEmpty(path,`path`),this.path!==path&&this.history.push(path)}get stem(){return typeof this.path==`string`?minpath.basename(this.path,this.extname):void 0}set stem(stem){assertNonEmpty(stem,`stem`),assertPart(stem,`stem`),this.path=minpath.join(this.dirname||``,stem+(this.extname||``))}fail(causeOrReason,optionsOrParentOrPlace,origin){let message=this.message(causeOrReason,optionsOrParentOrPlace,origin);throw message.fatal=!0,message}info(causeOrReason,optionsOrParentOrPlace,origin){let message=this.message(causeOrReason,optionsOrParentOrPlace,origin);return message.fatal=void 0,message}message(causeOrReason,optionsOrParentOrPlace,origin){let message=new VFileMessage(causeOrReason,optionsOrParentOrPlace,origin);return this.path&&(message.name=this.path+`:`+message.name,message.file=this.path),message.fatal=!1,this.messages.push(message),message}toString(encoding){return this.value===void 0?``:typeof this.value==`string`?this.value:new TextDecoder(encoding||void 0).decode(this.value)}};function assertPart(part,name$2){if(part&&part.includes(minpath.sep))throw Error("`"+name$2+"` cannot be a path: did not expect `"+minpath.sep+"`")}function assertNonEmpty(part,name$2){if(!part)throw Error("`"+name$2+"` cannot be empty")}function assertPath(path,name$2){if(!path)throw Error("Setting `"+name$2+"` requires `path` to be set too")}function isUint8Array$1(value){return!!(value&&typeof value==`object`&&`byteLength`in value&&`byteOffset`in value)}const CallableInstance=(function(property){let proto$1=this.constructor.prototype,value=proto$1[property],apply=function(){return value.apply(apply,arguments)};return Object.setPrototypeOf(apply,proto$1),apply});var import_extend=__toESM(require_extend(),1),own$3={}.hasOwnProperty,Processor=class Processor extends CallableInstance{constructor(){super(`copy`),this.Compiler=void 0,this.Parser=void 0,this.attachers=[],this.compiler=void 0,this.freezeIndex=-1,this.frozen=void 0,this.namespace={},this.parser=void 0,this.transformers=trough()}copy(){let destination=new Processor,index$4=-1;for(;++index$4<this.attachers.length;){let attacher=this.attachers[index$4];destination.use(...attacher)}return destination.data((0,import_extend.default)(!0,{},this.namespace)),destination}data(key$1,value){return typeof key$1==`string`?arguments.length===2?(assertUnfrozen(`data`,this.frozen),this.namespace[key$1]=value,this):own$3.call(this.namespace,key$1)&&this.namespace[key$1]||void 0:key$1?(assertUnfrozen(`data`,this.frozen),this.namespace=key$1,this):this.namespace}freeze(){if(this.frozen)return this;let self$1=this;for(;++this.freezeIndex<this.attachers.length;){let[attacher,...options$1]=this.attachers[this.freezeIndex];if(options$1[0]===!1)continue;options$1[0]===!0&&(options$1[0]=void 0);let transformer=attacher.call(self$1,...options$1);typeof transformer==`function`&&this.transformers.use(transformer)}return this.frozen=!0,this.freezeIndex=1/0,this}parse(file){this.freeze();let realFile=vfile(file),parser$1=this.parser||this.Parser;return assertParser(`parse`,parser$1),parser$1(String(realFile),realFile)}process(file,done){let self$1=this;return this.freeze(),assertParser(`process`,this.parser||this.Parser),assertCompiler(`process`,this.compiler||this.Compiler),done?executor(void 0,done):new Promise(executor);function executor(resolve,reject){let realFile=vfile(file),parseTree=self$1.parse(realFile);self$1.run(parseTree,realFile,function(error,tree,file$1){if(error||!tree||!file$1)return realDone(error);let compileTree=tree,compileResult=self$1.stringify(compileTree,file$1);looksLikeAValue(compileResult)?file$1.value=compileResult:file$1.result=compileResult,realDone(error,file$1)});function realDone(error,file$1){error||!file$1?reject(error):resolve?resolve(file$1):done(void 0,file$1)}}}processSync(file){let complete=!1,result;return this.freeze(),assertParser(`processSync`,this.parser||this.Parser),assertCompiler(`processSync`,this.compiler||this.Compiler),this.process(file,realDone),assertDone(`processSync`,`process`,complete),result;function realDone(error,file$1){complete=!0,bail(error),result=file$1}}run(tree,file,done){assertNode(tree),this.freeze();let transformers=this.transformers;return!done&&typeof file==`function`&&(done=file,file=void 0),done?executor(void 0,done):new Promise(executor);function executor(resolve,reject){let realFile=vfile(file);transformers.run(tree,realFile,realDone);function realDone(error,outputTree,file$1){let resultingTree=outputTree||tree;error?reject(error):resolve?resolve(resultingTree):done(void 0,resultingTree,file$1)}}}runSync(tree,file){let complete=!1,result;return this.run(tree,file,realDone),assertDone(`runSync`,`run`,complete),result;function realDone(error,tree$1){bail(error),result=tree$1,complete=!0}}stringify(tree,file){this.freeze();let realFile=vfile(file),compiler$1=this.compiler||this.Compiler;return assertCompiler(`stringify`,compiler$1),assertNode(tree),compiler$1(tree,realFile)}use(value,...parameters){let attachers=this.attachers,namespace=this.namespace;if(assertUnfrozen(`use`,this.frozen),value!=null)if(typeof value==`function`)addPlugin(value,parameters);else if(typeof value==`object`)Array.isArray(value)?addList(value):addPreset(value);else throw TypeError("Expected usable value, not `"+value+"`");return this;function add$1(value$1){if(typeof value$1==`function`)addPlugin(value$1,[]);else if(typeof value$1==`object`)if(Array.isArray(value$1)){let[plugin,...parameters$1]=value$1;addPlugin(plugin,parameters$1)}else addPreset(value$1);else throw TypeError("Expected usable value, not `"+value$1+"`")}function addPreset(result){if(!(`plugins`in result)&&!(`settings`in result))throw Error("Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither");addList(result.plugins),result.settings&&(namespace.settings=(0,import_extend.default)(!0,namespace.settings,result.settings))}function addList(plugins){let index$4=-1;if(plugins!=null)if(Array.isArray(plugins))for(;++index$4<plugins.length;){let thing=plugins[index$4];add$1(thing)}else throw TypeError("Expected a list of plugins, not `"+plugins+"`")}function addPlugin(plugin,parameters$1){let index$4=-1,entryIndex=-1;for(;++index$4<attachers.length;)if(attachers[index$4][0]===plugin){entryIndex=index$4;break}if(entryIndex===-1)attachers.push([plugin,...parameters$1]);else if(parameters$1.length>0){let[primary,...rest]=parameters$1,currentPrimary=attachers[entryIndex][1];isPlainObject(currentPrimary)&&isPlainObject(primary)&&(primary=(0,import_extend.default)(!0,currentPrimary,primary)),attachers[entryIndex]=[plugin,primary,...rest]}}}};const unified=new Processor().freeze();function assertParser(name$2,value){if(typeof value!=`function`)throw TypeError("Cannot `"+name$2+"` without `parser`")}function assertCompiler(name$2,value){if(typeof value!=`function`)throw TypeError("Cannot `"+name$2+"` without `compiler`")}function assertUnfrozen(name$2,frozen){if(frozen)throw Error("Cannot call `"+name$2+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function assertNode(node$1){if(!isPlainObject(node$1)||typeof node$1.type!=`string`)throw TypeError("Expected node, got `"+node$1+"`")}function assertDone(name$2,asyncName,complete){if(!complete)throw Error("`"+name$2+"` finished async. Use `"+asyncName+"` instead")}function vfile(value){return looksLikeAVFile(value)?value:new VFile(value)}function looksLikeAVFile(value){return!!(value&&typeof value==`object`&&`message`in value&&`messages`in value)}function looksLikeAValue(value){return typeof value==`string`||isUint8Array(value)}function isUint8Array(value){return!!(value&&typeof value==`object`&&`byteLength`in value&&`byteOffset`in value)}var emptyPlugins=[],emptyRemarkRehypeOptions={allowDangerousHtml:!0},safeProtocol=/^(https?|ircs?|mailto|xmpp)$/i,deprecations=[{from:`astPlugins`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowDangerousHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowNode`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowElement`},{from:`allowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowedElements`},{from:`className`,id:`remove-classname`},{from:`disallowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`disallowedElements`},{from:`escapeHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`includeElementIndex`,id:`#remove-includeelementindex`},{from:`includeNodeIndex`,id:`change-includenodeindex-to-includeelementindex`},{from:`linkTarget`,id:`remove-linktarget`},{from:`plugins`,id:`change-plugins-to-remarkplugins`,to:`remarkPlugins`},{from:`rawSourcePos`,id:`#remove-rawsourcepos`},{from:`renderers`,id:`change-renderers-to-components`,to:`components`},{from:`source`,id:`change-source-to-children`,to:`children`},{from:`sourcePos`,id:`#remove-sourcepos`},{from:`transformImageUri`,id:`#add-urltransform`,to:`urlTransform`},{from:`transformLinkUri`,id:`#add-urltransform`,to:`urlTransform`}];function Markdown(options$1){let processor=createProcessor(options$1),file=createFile(options$1);return post(processor.runSync(processor.parse(file),file),options$1)}function createProcessor(options$1){let rehypePlugins=options$1.rehypePlugins||emptyPlugins,remarkPlugins=options$1.remarkPlugins||emptyPlugins,remarkRehypeOptions=options$1.remarkRehypeOptions?{...options$1.remarkRehypeOptions,...emptyRemarkRehypeOptions}:emptyRemarkRehypeOptions;return unified().use(remarkParse).use(remarkPlugins).use(remarkRehype,remarkRehypeOptions).use(rehypePlugins)}function createFile(options$1){let children=options$1.children||``,file=new VFile;return typeof children==`string`?file.value=children:``+children,file}function post(tree,options$1){let allowedElements=options$1.allowedElements,allowElement=options$1.allowElement,components=options$1.components,disallowedElements=options$1.disallowedElements,skipHtml=options$1.skipHtml,unwrapDisallowed=options$1.unwrapDisallowed,urlTransform=options$1.urlTransform||defaultUrlTransform;for(let deprecation of deprecations)Object.hasOwn(options$1,deprecation.from)&&``+deprecation.from+(deprecation.to?"use `"+deprecation.to+"` instead":`remove it`)+deprecation.id;return visit(tree,transform$1),toJsxRuntime(tree,{Fragment:import_jsx_runtime.Fragment,components,ignoreInvalidStyle:!0,jsx:import_jsx_runtime.jsx,jsxs:import_jsx_runtime.jsxs,passKeys:!0,passNode:!0});function transform$1(node$1,index$4,parent){if(node$1.type===`raw`&&parent&&typeof index$4==`number`)return skipHtml?parent.children.splice(index$4,1):parent.children[index$4]={type:`text`,value:node$1.value},index$4;if(node$1.type===`element`){let key$1;for(key$1 in urlAttributes)if(Object.hasOwn(urlAttributes,key$1)&&Object.hasOwn(node$1.properties,key$1)){let value=node$1.properties[key$1],test=urlAttributes[key$1];(test===null||test.includes(node$1.tagName))&&(node$1.properties[key$1]=urlTransform(String(value||``),key$1,node$1))}}if(node$1.type===`element`){let remove$1=allowedElements?!allowedElements.includes(node$1.tagName):disallowedElements?disallowedElements.includes(node$1.tagName):!1;if(!remove$1&&allowElement&&typeof index$4==`number`&&(remove$1=!allowElement(node$1,index$4,parent)),remove$1&&parent&&typeof index$4==`number`)return unwrapDisallowed&&node$1.children?parent.children.splice(index$4,1,...node$1.children):parent.children.splice(index$4,1),index$4}}}function defaultUrlTransform(value){let colon=value.indexOf(`:`),questionMark=value.indexOf(`?`),numberSign=value.indexOf(`#`),slash=value.indexOf(`/`);return colon===-1||slash!==-1&&colon>slash||questionMark!==-1&&colon>questionMark||numberSign!==-1&&colon>numberSign||safeProtocol.test(value.slice(0,colon))?value:``}function getSeverityBadgeVariant(severity){switch(severity){case`high`:return`destructive`;case`moderate`:return`warning`;default:return`default`}}function RiskAssessmentModal({open,onClose,connectionId,providerId,sqlStatements}){let[loading,setLoading]=(0,import_react.useState)(!0),[assessment,setAssessment]=(0,import_react.useState)(null),[error,setError]=(0,import_react.useState)(null);return(0,import_react.useEffect)(()=>{open&&(async()=>{setLoading(!0),setError(null),setAssessment(null);try{let response=await aiClient.assessChangeRisk({connectionId,providerId,sqlStatements,schemas:[]});response.error?setError(response.error):setAssessment({overallRisk:response.overallRisk,findings:response.findings})}catch(err){setError(err instanceof Error?err.message:`Failed to assess risk`)}finally{setLoading(!1)}})()},[open,connectionId,providerId,sqlStatements]),(0,import_jsx_runtime.jsx)(DialogRoot,{open,onOpenChange:isOpen=>!isOpen&&onClose(),children:(0,import_jsx_runtime.jsxs)(DialogPortal$1,{children:[(0,import_jsx_runtime.jsx)(DialogBackdrop$1,{className:`fixed inset-0 z-[60] bg-black/20`}),(0,import_jsx_runtime.jsx)(DialogViewport$1,{className:`fixed inset-0 z-[60] 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-xl flex flex-col h-[60vh]`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-gray-100`,children:[(0,import_jsx_runtime.jsx)(DialogTitle$1,{className:`text-lg font-semibold`,children:`Risk Assessment`}),(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`icon-sm`,onClick:onClose,children:(0,import_jsx_runtime.jsx)(X,{className:`w-4 h-4`})})]}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden min-h-0 p-6`,children:[loading&&(0,import_jsx_runtime.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3`,children:[(0,import_jsx_runtime.jsx)(Spinner,{className:`size-8 text-gray-400`}),(0,import_jsx_runtime.jsx)(`p`,{className:`text-gray-600`,children:`Assessing changes...`})]}),error&&(0,import_jsx_runtime.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,import_jsx_runtime.jsxs)(Alert,{variant:`error`,className:`max-w-md`,children:[(0,import_jsx_runtime.jsx)(`p`,{className:`font-semibold`,children:`Assessment Failed`}),(0,import_jsx_runtime.jsx)(`p`,{className:`text-sm mt-1`,children:error})]})}),!loading&&!error&&assessment&&(0,import_jsx_runtime.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto`,children:(0,import_jsx_runtime.jsx)(`div`,{className:`space-y-3`,children:assessment.findings.map((finding,index$4)=>(0,import_jsx_runtime.jsxs)(`div`,{className:`border rounded-lg p-4 space-y-2`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(Badge,{variant:getSeverityBadgeVariant(finding.severity),children:finding.severity.toUpperCase()}),(0,import_jsx_runtime.jsx)(`span`,{className:`font-semibold`,children:finding.category})]}),(0,import_jsx_runtime.jsx)(Markdown,{components:{h2:({children})=>(0,import_jsx_runtime.jsx)(`h2`,{className:`text-base font-semibold mt-2 mb-1 text-gray-900`,children}),h3:({children})=>(0,import_jsx_runtime.jsx)(`h3`,{className:`text-sm font-semibold mt-2 mb-1 text-gray-900`,children}),p:({children})=>(0,import_jsx_runtime.jsx)(`p`,{className:`text-sm text-gray-700 mb-2`,children}),ul:({children})=>(0,import_jsx_runtime.jsx)(`ul`,{className:`list-disc list-inside text-sm text-gray-700 mb-2 space-y-1`,children}),ol:({children})=>(0,import_jsx_runtime.jsx)(`ol`,{className:`list-decimal list-inside text-sm text-gray-700 mb-2 space-y-1`,children}),li:({children})=>(0,import_jsx_runtime.jsx)(`li`,{className:`text-sm`,children}),code:({children})=>(0,import_jsx_runtime.jsx)(`code`,{className:`bg-gray-100 px-1 py-0.5 rounded text-xs font-mono`,children}),strong:({children})=>(0,import_jsx_runtime.jsx)(`strong`,{className:`font-semibold text-gray-900`,children})},children:finding.description})]},`${finding.severity}-${finding.category}-${index$4}`))})})]})]})})]})})}function generateSQL(change){return change.type===`delete`?generateDeleteSQL(change):change.type===`update`?generateUpdateSQL(change):change.type===`insert`?generateInsertSQL(change):``}var AI_STORAGE_KEY$1=`pgconsole-ai`;function getAIProvider(connectionId){try{let stored=localStorage.getItem(AI_STORAGE_KEY$1);return stored&&JSON.parse(stored).byConnection[connectionId]?.provider||null}catch{return null}}function SQLPreview({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:`h-full bg-gray-50 rounded-md overflow-hidden border border-gray-200`})}function StagedChangesModal({open,onClose,connectionId,stagedChanges,onExecuteAll}){let[executingAll,setExecutingAll]=(0,import_react.useState)(!1),[riskModalOpen,setRiskModalOpen]=(0,import_react.useState)(!1),[aiProviderId,setAiProviderId]=(0,import_react.useState)(null);(0,import_react.useEffect)(()=>{setAiProviderId(getAIProvider(connectionId))},[connectionId]),(0,import_react.useEffect)(()=>{open&&stagedChanges.length===0&&onClose()},[open,stagedChanges.length,onClose]);let allSQL=(0,import_react.useMemo)(()=>stagedChanges.map(change=>generateSQL(change)).filter(sql=>sql).join(`
100
100
 
101
- `),[stagedChanges]),[formattedSQL,setFormattedSQL]=(0,import_react.useState)(``);(0,import_react.useEffect)(()=>{async function formatAllSQL(){if(!allSQL){setFormattedSQL(``);return}try{setFormattedSQL(await formatSql(allSQL))}catch{setFormattedSQL(allSQL)}}formatAllSQL()},[allSQL]);let statementCount=(0,import_react.useMemo)(()=>stagedChanges.reduce((count,change)=>count+(generateSQL(change).match(/;/g)||[]).length,0),[stagedChanges]),handleExecuteAll=(0,import_react.useCallback)(async()=>{setExecutingAll(!0);try{await onExecuteAll(),toastManager.add({type:`success`,title:`All changes executed successfully`})}catch(error){toastManager.add({type:`error`,title:`Failed to execute changes`,description:error instanceof Error?error.message:`Unknown error`})}finally{setExecutingAll(!1)}},[onExecuteAll]);return(0,import_jsx_runtime.jsxs)(DialogRoot,{open,onOpenChange:isOpen=>!isOpen&&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-4xl rounded-2xl border bg-white shadow-lg flex flex-col h-[70vh]`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-gray-100`,children:[(0,import_jsx_runtime.jsxs)(DialogTitle$1,{className:`text-lg font-semibold`,children:[`Preview Changes (`,statementCount,` `,statementCount===1?`statement`:`statements`,`)`]}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[aiProviderId?(0,import_jsx_runtime.jsxs)(Button,{variant:`secondary`,size:`sm`,onClick:()=>setRiskModalOpen(!0),disabled:stagedChanges.length===0,children:[(0,import_jsx_runtime.jsx)(Sparkles,{className:`w-4 h-4 mr-1`}),`Assess Risk`]}):(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{children:(0,import_jsx_runtime.jsx)(`span`,{children:(0,import_jsx_runtime.jsxs)(Button,{variant:`secondary`,size:`sm`,disabled:!0,children:[(0,import_jsx_runtime.jsx)(Sparkles,{className:`w-4 h-4 mr-1`}),`Assess Risk`]})})}),(0,import_jsx_runtime.jsx)(TooltipPopup,{children:`Configure an AI provider in Settings to enable risk assessment`})]}),(0,import_jsx_runtime.jsxs)(Button,{size:`sm`,onClick:handleExecuteAll,disabled:executingAll||stagedChanges.length===0,children:[(0,import_jsx_runtime.jsx)(Play,{className:`w-4 h-4 mr-1`}),executingAll?`Executing...`:`Execute All`]}),(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`icon-sm`,onClick:onClose,disabled:executingAll,children:(0,import_jsx_runtime.jsx)(X,{className:`w-4 h-4`})})]})]}),(0,import_jsx_runtime.jsx)(`div`,{className:`flex-1 flex flex-col overflow-hidden min-h-0 p-4`,children:stagedChanges.length===0?(0,import_jsx_runtime.jsx)(`div`,{className:`flex items-center justify-center h-full text-gray-500`,children:`No staged changes`}):(0,import_jsx_runtime.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto`,children:(0,import_jsx_runtime.jsx)(SQLPreview,{sql:formattedSQL})})})]})})]}),riskModalOpen&&aiProviderId&&(0,import_jsx_runtime.jsx)(RiskAssessmentModal,{open:riskModalOpen,onClose:()=>setRiskModalOpen(!1),connectionId,providerId:aiProviderId,sqlStatements:stagedChanges.map(change=>generateSQL(change))})]})}function isJsonType(type){return type===`json`||type===`jsonb`}var isStaged=status=>status===`staged-delete`||status===`staged-update`||status===`staged-insert`,updateRow=(rows,idx,update$1)=>rows.map((row,i$3)=>i$3===idx?{...row,...update$1}:row),ROW_HEIGHT=28,ROWS_PER_PAGE=1e4,HEADER_ROW_HEIGHT=29,HEADER_FONT=`500 12px -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif`,CELL_FONT=`400 12px -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif`,measurementCanvas=null;function measureText(text$5,font){measurementCanvas||=document.createElement(`canvas`);let context=measurementCanvas.getContext(`2d`);return context.font=font,context.measureText(text$5).width}var HighlightedText=(0,import_react.memo)(function({text:text$5,filter}){if(!filter)return(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children:text$5});let lowerText=text$5.toLowerCase(),lowerFilter=filter.toLowerCase(),parts=[],lastIndex=0,index$4=lowerText.indexOf(lowerFilter);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+filter.length),highlight:!0}),lastIndex=index$4+filter.length,index$4=lowerText.indexOf(lowerFilter,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 getPageNumbers(currentPage,totalPages){if(totalPages<=7)return Array.from({length:totalPages},(_$2,i$3)=>i$3+1);let pages=[];return pages.push(1),currentPage<=3?pages.push(2,3,4,`ellipsis`,totalPages):currentPage>=totalPages-2?pages.push(`ellipsis`,totalPages-3,totalPages-2,totalPages-1,totalPages):pages.push(`ellipsis`,currentPage-1,currentPage,currentPage+1,`ellipsis`,totalPages),pages}function Pagination({currentPage,totalPages,onPageChange}){if(totalPages<=1)return null;let pageNumbers=getPageNumbers(currentPage,totalPages);return(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,import_jsx_runtime.jsx)(`button`,{onClick:()=>onPageChange(currentPage-1),disabled:currentPage<=1,className:`p-0.5 rounded hover:bg-accent disabled:opacity-30 disabled:cursor-not-allowed text-gray-400`,children:(0,import_jsx_runtime.jsx)(ChevronLeft,{className:`w-3 h-3`})}),pageNumbers.map((page,idx)=>page===`ellipsis`?(0,import_jsx_runtime.jsx)(`span`,{className:`px-1 text-gray-400`,children:(0,import_jsx_runtime.jsx)(Ellipsis,{className:`w-3 h-3`})},`ellipsis-${idx}`):(0,import_jsx_runtime.jsx)(`button`,{onClick:()=>onPageChange(page),className:`min-w-[20px] h-5 px-1 rounded text-xs font-medium transition-colors ${page===currentPage?`bg-white border border-blue-500 text-blue-600`:`text-gray-600 hover:bg-accent`}`,children:page},page)),(0,import_jsx_runtime.jsx)(`button`,{onClick:()=>onPageChange(currentPage+1),disabled:currentPage>=totalPages,className:`p-0.5 rounded hover:bg-accent disabled:opacity-30 disabled:cursor-not-allowed text-gray-400`,children:(0,import_jsx_runtime.jsx)(ChevronRight,{className:`w-3 h-3`})})]})}function ResultContent({result,filter,allDisplayRows,displayRows,selectedRowIndex,onRowClick,onRowDoubleClick,onExpandJson,selectedIndices,onRowSelect,onDeleteRows,onDuplicateRows,onDiscardRows,onPinRows,onUnpinRows,onRowHover,hasWrite,isExplainResult}){let scrollRef=(0,import_react.useRef)(null),[currentPage,setCurrentPage]=(0,import_react.useState)(1),[contextMenu,setContextMenu]=(0,import_react.useState)(null);(0,import_react.useEffect)(()=>{let handleClickOutside=()=>setContextMenu(null);if(contextMenu)return document.addEventListener(`click`,handleClickOutside),()=>document.removeEventListener(`click`,handleClickOutside)},[contextMenu]);let handleContextMenu=(0,import_react.useCallback)((e,rowIndex,rowStatus)=>{e.preventDefault(),!isExplainResult&&(selectedIndices.has(rowIndex)||onRowSelect(rowIndex,e),setContextMenu({x:e.clientX,y:e.clientY,rowIndex,rowStatus}))},[selectedIndices,onRowSelect,isExplainResult]),handleDeleteFromContextMenu=(0,import_react.useCallback)(()=>{selectedIndices.size>0&&onDeleteRows(Array.from(selectedIndices)),setContextMenu(null)},[selectedIndices,onDeleteRows]),handleDuplicateFromContextMenu=(0,import_react.useCallback)(()=>{selectedIndices.size>0&&onDuplicateRows(Array.from(selectedIndices)),setContextMenu(null)},[selectedIndices,onDuplicateRows]),handleDiscardFromContextMenu=(0,import_react.useCallback)(()=>{selectedIndices.size>0&&onDiscardRows(Array.from(selectedIndices)),setContextMenu(null)},[selectedIndices,onDiscardRows]),handlePinFromContextMenu=(0,import_react.useCallback)(()=>{selectedIndices.size>0&&onPinRows(Array.from(selectedIndices)),setContextMenu(null)},[selectedIndices,onPinRows]),handleUnpinFromContextMenu=(0,import_react.useCallback)(()=>{selectedIndices.size>0&&onUnpinRows(Array.from(selectedIndices)),setContextMenu(null)},[selectedIndices,onUnpinRows]),pinnedItems=(0,import_react.useMemo)(()=>{let pinned=[];return allDisplayRows.forEach((row,idx)=>{row.pinned&&pinned.push({row,pos:idx})}),pinned},[allDisplayRows]),totalPages=Math.max(1,Math.ceil(displayRows.length/ROWS_PER_PAGE));(0,import_react.useEffect)(()=>{currentPage>totalPages&&setCurrentPage(1)},[displayRows.length,totalPages,currentPage]),(0,import_react.useEffect)(()=>{setCurrentPage(1)},[filter]);let pageStartIndex=(currentPage-1)*ROWS_PER_PAGE,paginatedRows=(0,import_react.useMemo)(()=>displayRows.slice(pageStartIndex,pageStartIndex+ROWS_PER_PAGE),[displayRows,pageStartIndex]),virtualizer=useVirtualizer({count:paginatedRows.length,getScrollElement:()=>scrollRef.current,estimateSize:()=>ROW_HEIGHT,overscan:5});(0,import_react.useEffect)(()=>{scrollRef.current?.scrollTo({top:0})},[currentPage]);let columnWidths=(0,import_react.useMemo)(()=>{let PADDING=22,MIN=80,MAX$1=400;return result.columns.map(col=>{let headerWidth=Math.ceil(measureText(col.name,HEADER_FONT)*1.2)+22,contentWidth=0;for(let row of result.rows.slice(0,200)){let value=row[col.name];value!==null&&(contentWidth=Math.max(contentWidth,measureText(String(value),CELL_FONT)))}return contentWidth+=22,Math.min(Math.max(headerWidth,contentWidth,80),400)})},[result.rows,result.columns]),gridTemplateColumns=columnWidths.map(w$2=>`${w$2}px`).join(` `),totalGridWidth=columnWidths.reduce((sum,w$2)=>sum+w$2,0),normalRowCount=displayRows.filter(r$4=>r$4.status===`normal`).length,isFiltered=filter&&normalRowCount!==result.rows.length;if(result.error){let time=result.executionTime>=1e3?`${(result.executionTime/1e3).toFixed(1)}s`:`${result.executionTime}ms`;return(0,import_jsx_runtime.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,import_jsx_runtime.jsx)(`div`,{className:`flex-1 p-4 overflow-auto`,children:(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-red-600 whitespace-pre-wrap`,children:result.error})}),(0,import_jsx_runtime.jsxs)(`div`,{className:`h-8 px-3 flex items-center text-xs text-gray-500 border-t border-gray-200 bg-gray-50`,children:[`Executed in `,time]})]})}return(0,import_jsx_runtime.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,import_jsx_runtime.jsxs)(`div`,{ref:scrollRef,className:`flex-1 overflow-auto`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`sticky top-0 z-10 border-b border-gray-200 bg-gray-50`,style:{display:`grid`,gridTemplateColumns:`${gridTemplateColumns} 1fr`,minWidth:totalGridWidth},children:[result.columns.map(col=>(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{className:`w-full px-2 py-1.5 text-xs font-medium text-gray-700 truncate border-r border-gray-200 last:border-r-0 text-left`,children:col.name}),(0,import_jsx_runtime.jsx)(TooltipPopup,{side:`top`,sideOffset:4,children:(0,import_jsx_runtime.jsx)(`span`,{children:col.type||`unknown`})})]},col.name)),(0,import_jsx_runtime.jsx)(`div`,{})]}),pinnedItems.length>0&&(0,import_jsx_runtime.jsx)(`div`,{className:`sticky z-[9] border-b border-gray-300 shadow-[0_1px_3px_rgba(0,0,0,0.08)] mb-1`,style:{top:HEADER_ROW_HEIGHT},children:pinnedItems.map(({row:pinnedRow,pos})=>{let globalRowIndex=pos+1,{data,status,originalData}=pinnedRow,isSelected=selectedIndices.has(globalRowIndex)||selectedRowIndex===globalRowIndex,isStagedInsert=status===`staged-insert`;return(0,import_jsx_runtime.jsxs)(`div`,{className:`group border-b border-gray-100 select-none ${isStagedInsert?`bg-green-100`:status===`staged-delete`?`bg-red-100 text-gray-400`:status===`staged-update`?`bg-amber-100`:isSelected?`bg-blue-50`:`bg-white hover:bg-gray-50`}`,style:{height:`${ROW_HEIGHT}px`,display:`grid`,gridTemplateColumns:`${gridTemplateColumns} 1fr`,minWidth:totalGridWidth},onContextMenu:e=>handleContextMenu(e,globalRowIndex,status),onMouseEnter:()=>onRowHover(globalRowIndex),onMouseLeave:()=>onRowHover(null),children:[result.columns.map(col=>{let isJson=isJsonType(col.type),cellValue=data[col.name];return(0,import_jsx_runtime.jsxs)(`div`,{className:`group/cell relative px-2 flex items-center text-xs truncate border-r border-gray-100 last:border-r-0 cursor-pointer ${status===`staged-update`&&originalData&&originalData[col.name]!==cellValue?`font-medium`:``}`,onClick:e=>{onRowSelect(globalRowIndex,e),!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&onRowClick(globalRowIndex,data,col.name)},onDoubleClick:()=>{onRowDoubleClick(globalRowIndex,data,col.name)},children:[isStagedInsert&&cellValue===void 0?(0,import_jsx_runtime.jsx)(`span`,{className:`text-gray-400 italic`,children:`DEFAULT`}):cellValue===null?(0,import_jsx_runtime.jsx)(`span`,{className:`text-gray-400 italic`,children:`null`}):cellValue===``?(0,import_jsx_runtime.jsx)(`span`,{className:`text-gray-300 italic`,children:`(empty)`}):(0,import_jsx_runtime.jsx)(HighlightedText,{text:String(cellValue),filter}),isJson&&cellValue!=null&&(0,import_jsx_runtime.jsxs)(`button`,{className:`absolute right-1 px-1.5 py-0.5 rounded bg-white border border-gray-200 shadow-sm opacity-0 group-hover/cell:opacity-100 hover:bg-gray-50 transition-opacity flex items-center gap-1`,onClick:e=>{e.stopPropagation(),onExpandJson(cellValue,col.name,globalRowIndex)},title:`Expand JSON`,children:[(0,import_jsx_runtime.jsx)(Expand,{className:`w-3 h-3 text-gray-500`}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-xs text-gray-500`,children:`Expand`})]})]},col.name)}),(0,import_jsx_runtime.jsx)(`div`,{className:`cursor-pointer flex items-center justify-end pr-2`,onClick:e=>{onRowSelect(globalRowIndex,e),!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&onRowClick(globalRowIndex,data,void 0)},children:(0,import_jsx_runtime.jsx)(Pin,{className:`w-3 h-3 text-blue-400`})})]},globalRowIndex)})}),(0,import_jsx_runtime.jsx)(`div`,{style:{height:`${virtualizer.getTotalSize()}px`,minWidth:totalGridWidth,position:`relative`},children:virtualizer.getVirtualItems().map(virtualRow=>{let displayRow=paginatedRows[virtualRow.index],globalRowIndex=pageStartIndex+virtualRow.index+1,{data,status,originalData}=displayRow,isSelected=selectedIndices.has(globalRowIndex)||selectedRowIndex===globalRowIndex,isStagedInsert=status===`staged-insert`;return(0,import_jsx_runtime.jsxs)(`div`,{className:`group absolute top-0 left-0 w-full border-b border-gray-100 select-none ${isStagedInsert?`bg-green-100`:status===`staged-delete`?`bg-red-100 text-gray-400`:status===`staged-update`?`bg-amber-100`:isSelected?`bg-blue-50`:`hover:bg-gray-50`}`,style:{height:`${ROW_HEIGHT}px`,transform:`translateY(${virtualRow.start}px)`,display:`grid`,gridTemplateColumns:`${gridTemplateColumns} 1fr`},onContextMenu:e=>handleContextMenu(e,globalRowIndex,status),onMouseEnter:()=>onRowHover(globalRowIndex),onMouseLeave:()=>onRowHover(null),children:[result.columns.map(col=>{let isJson=isJsonType(col.type),cellValue=data[col.name];return(0,import_jsx_runtime.jsxs)(`div`,{className:`group/cell relative px-2 flex items-center text-xs truncate border-r border-gray-100 last:border-r-0 cursor-pointer ${status===`staged-update`&&originalData&&originalData[col.name]!==cellValue?`font-medium`:``}`,onClick:e=>{onRowSelect(globalRowIndex,e),!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&onRowClick(globalRowIndex,data,col.name)},onDoubleClick:()=>{onRowDoubleClick(globalRowIndex,data,col.name)},children:[isStagedInsert&&cellValue===void 0?(0,import_jsx_runtime.jsx)(`span`,{className:`text-gray-400 italic`,children:`DEFAULT`}):cellValue===null?(0,import_jsx_runtime.jsx)(`span`,{className:`text-gray-400 italic`,children:`null`}):cellValue===``?(0,import_jsx_runtime.jsx)(`span`,{className:`text-gray-300 italic`,children:`(empty)`}):(0,import_jsx_runtime.jsx)(HighlightedText,{text:String(cellValue),filter}),isJson&&cellValue!=null&&(0,import_jsx_runtime.jsxs)(`button`,{className:`absolute right-1 px-1.5 py-0.5 rounded bg-white border border-gray-200 shadow-sm opacity-0 group-hover/cell:opacity-100 hover:bg-gray-50 transition-opacity flex items-center gap-1`,onClick:e=>{e.stopPropagation(),onExpandJson(cellValue,col.name,globalRowIndex)},title:`Expand JSON`,children:[(0,import_jsx_runtime.jsx)(Expand,{className:`w-3 h-3 text-gray-500`}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-xs text-gray-500`,children:`Expand`})]})]},col.name)}),(0,import_jsx_runtime.jsx)(`div`,{className:`cursor-pointer`,onClick:e=>{onRowSelect(globalRowIndex,e),!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&onRowClick(globalRowIndex,data,void 0)}})]},virtualRow.index)})})]}),(0,import_jsx_runtime.jsxs)(`div`,{className:`shrink-0 h-6 px-2 flex items-center justify-between border-t border-gray-200 bg-gray-50`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`text-xs text-gray-500`,children:[`Executed in `,result.executionTime>=1e3?`${(result.executionTime/1e3).toFixed(1)}s`:`${result.executionTime}ms`]}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,import_jsx_runtime.jsx)(Pagination,{currentPage,totalPages,onPageChange:page=>{page>=1&&page<=totalPages&&setCurrentPage(page)}}),(0,import_jsx_runtime.jsxs)(`span`,{className:`text-xs text-gray-500`,children:[pinnedItems.length>0&&`${pinnedItems.length} pinned · `,isFiltered?`${normalRowCount.toLocaleString()} of ${result.rows.length.toLocaleString()} rows`:`${displayRows.length.toLocaleString()} rows`]})]})]}),contextMenu&&(0,import_jsx_runtime.jsxs)(`div`,{className:`fixed z-50 bg-white border border-gray-200 rounded-md shadow-lg py-1 min-w-[140px]`,style:{left:contextMenu.x,top:contextMenu.y},children:[allDisplayRows[contextMenu.rowIndex-1]?.pinned?(0,import_jsx_runtime.jsxs)(`button`,{className:`w-full px-3 py-1.5 text-left text-sm hover:bg-gray-100 flex items-center`,onClick:handleUnpinFromContextMenu,children:[(0,import_jsx_runtime.jsxs)(`span`,{className:`flex-1`,children:[`Unpin `,selectedIndices.size>1?`${selectedIndices.size} rows`:`row`]}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-xs text-gray-400 ml-3`,children:`Space`})]}):(0,import_jsx_runtime.jsxs)(`button`,{className:`w-full px-3 py-1.5 text-left text-sm hover:bg-gray-100 flex items-center`,onClick:handlePinFromContextMenu,children:[(0,import_jsx_runtime.jsxs)(`span`,{className:`flex-1`,children:[`Pin `,selectedIndices.size>1?`${selectedIndices.size} rows`:`row`]}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-xs text-gray-400 ml-3`,children:`Space`})]}),hasWrite&&selectedIndices.size===1&&contextMenu.rowStatus===`normal`&&(0,import_jsx_runtime.jsx)(`button`,{className:`w-full px-3 py-1.5 text-left text-sm hover:bg-gray-100`,onClick:handleDuplicateFromContextMenu,children:`Duplicate row`}),hasWrite&&contextMenu.rowStatus===`normal`&&(0,import_jsx_runtime.jsxs)(`button`,{className:`w-full px-3 py-1.5 text-left text-sm hover:bg-gray-100`,onClick:handleDeleteFromContextMenu,children:[`Delete `,selectedIndices.size>1?`${selectedIndices.size} rows`:`row`]}),contextMenu.rowStatus!==`normal`&&(0,import_jsx_runtime.jsxs)(`button`,{className:`w-full px-3 py-1.5 text-left text-sm hover:bg-gray-100 text-amber-600`,onClick:handleDiscardFromContextMenu,children:[`Discard `,selectedIndices.size>1?`${selectedIndices.size} changes`:`change`]})]})]})}function QueryResults({resultTabs,activeResultTabId,onResultTabChange,isExecuting,isCancelling,executingPid,onCancelQuery,connectionId,onRefreshQuery}){let{hasWrite,hasExport}=useConnectionPermissions(connectionId),[filterInput,setFilterInput]=(0,import_react.useState)(``),[debouncedFilter,setDebouncedFilter]=(0,import_react.useState)(``),[elapsedTime,setElapsedTime]=(0,import_react.useState)(0),[selectedRow,setSelectedRow]=(0,import_react.useState)(null),[drawerOpen,setDrawerOpen]=(0,import_react.useState)(!1),[jsonModal,setJsonModal]=(0,import_react.useState)(null),[hoveredRowIndex,setHoveredRowIndex]=(0,import_react.useState)(null),[isEditingRow,setIsEditingRow]=(0,import_react.useState)(!1),[autoEditColumn,setAutoEditColumn]=(0,import_react.useState)(null),[displayRowsMap,setDisplayRowsMap]=(0,import_react.useState)({}),[pendingNewRow,setPendingNewRow]=(0,import_react.useState)(null),activeTabIdRef=(0,import_react.useRef)(activeResultTabId);activeTabIdRef.current=activeResultTabId;let displayRows=activeResultTabId?displayRowsMap[activeResultTabId]??[]:[],setDisplayRows=(0,import_react.useCallback)(updater=>{let tabId=activeTabIdRef.current;tabId&&setDisplayRowsMap(prev=>{let current=prev[tabId]??[],next=typeof updater==`function`?updater(current):updater;return{...prev,[tabId]:next}})},[]);(0,import_react.useEffect)(()=>{let timer=setTimeout(()=>{setDebouncedFilter(filterInput)},300);return()=>clearTimeout(timer)},[filterInput]);let prevSelectedIndexRef=(0,import_react.useRef)(null);(0,import_react.useEffect)(()=>{setSelectedRow(null),setDrawerOpen(!1),setIsEditingRow(!1),setAutoEditColumn(null),setPendingNewRow(null),prevSelectedIndexRef.current=null},[activeResultTabId]),(0,import_react.useEffect)(()=>{let currentIndex=selectedRow?.index??null,prevIndex=prevSelectedIndexRef.current;prevIndex!==null&&currentIndex!==null&&prevIndex!==currentIndex&&!pendingNewRow&&(setIsEditingRow(!1),setAutoEditColumn(null)),prevSelectedIndexRef.current=currentIndex},[selectedRow?.index,pendingNewRow]),useKeyboardShortcut(`toggle-row-pin`,` `,()=>{let targetIndex=selectedRow?.index??hoveredRowIndex;if(targetIndex===null)return;let row=displayRows[targetIndex-1];row&&(row.pinned?handleUnpinRows([targetIndex]):handlePinRows([targetIndex]))},{when:()=>(selectedRow!==null||hoveredRowIndex!==null)&&!isEditingRow}),(0,import_react.useEffect)(()=>{if(!isExecuting){setElapsedTime(0);return}if(isCancelling)return;let startTime$1=Date.now()-elapsedTime*1e3,interval=setInterval(()=>{setElapsedTime((Date.now()-startTime$1)/1e3)},100);return()=>clearInterval(interval)},[isExecuting,isCancelling]);let activeResult=resultTabs.find(rt=>rt.id===activeResultTabId),isExplainResult=(0,import_react.useMemo)(()=>activeResult?.sql?activeResult.sql.trim().toUpperCase().startsWith(`EXPLAIN`):!1,[activeResult?.sql]);(0,import_react.useEffect)(()=>{activeResult&&setDisplayRowsMap(prev=>{if(prev[activeResult.id])return prev;let rows=activeResult.result.rows.map(row=>({data:row,status:`normal`}));return{...prev,[activeResult.id]:rows}})},[activeResult?.id]),(0,import_react.useEffect)(()=>{let tabIds=new Set(resultTabs.map(rt=>rt.id));setDisplayRowsMap(prev=>{let stale=Object.keys(prev).filter(k$2=>!tabIds.has(k$2));if(stale.length===0)return prev;let next={...prev};for(let k$2 of stale)delete next[k$2];return next})},[resultTabs]);let filteredDisplayRows=(0,import_react.useMemo)(()=>{if(!debouncedFilter||!activeResult)return displayRows;let lowerFilter=debouncedFilter.toLowerCase();return displayRows.filter(displayRow=>activeResult.result.columns.some(col=>{let value=displayRow.data[col.name];return value===null?!1:String(value).toLowerCase().includes(lowerFilter)}))},[displayRows,debouncedFilter,activeResult]),[previewModalOpen,setPreviewModalOpen]=(0,import_react.useState)(!1),executeSQL=useExecuteSQL(),stagedChanges=(0,import_react.useMemo)(()=>{if(!activeResult)return[];let columns=activeResult.result.columns,changes=[],deletes=[],updates=[],inserts=[];if(displayRows.forEach((displayRow,idx)=>{displayRow.status===`staged-delete`?deletes.push({row:displayRow.data,index:idx+1}):displayRow.status===`staged-update`&&displayRow.originalData?updates.push({row:displayRow.data,original:displayRow.originalData,index:idx+1}):displayRow.status===`staged-insert`&&inserts.push({row:displayRow.data})}),deletes.length>0){let tableName=columns[0]?.tableName||``,schemaName=columns[0]?.schemaName||``,pkColumns=columns.filter(c=>c.isPrimaryKey);changes.push({id:`delete`,type:`delete`,tables:[{tableName,schemaName,primaryKeyColumns:pkColumns.map(c=>c.name),rows:deletes.map(d$1=>{let pk={};return pkColumns.forEach(c=>{pk[c.name]=d$1.row[c.name]}),pk})}],rowCount:deletes.length,createdAt:new Date,rowIndices:deletes.map(d$1=>d$1.index)})}if(updates.length>0){let tableName=columns[0]?.tableName||``,schemaName=columns[0]?.schemaName||``,pkColumns=columns.filter(c=>c.isPrimaryKey);changes.push({id:`update`,type:`update`,tables:[{tableName,schemaName,primaryKeyColumns:pkColumns.map(c=>c.name),rows:updates.map(u$1=>{let changed={};return columns.forEach(c=>{c.isPrimaryKey?changed[c.name]=u$1.original[c.name]:u$1.row[c.name]!==u$1.original[c.name]&&(changed[c.name]=u$1.row[c.name])}),changed})}],rowCount:updates.length,createdAt:new Date,originalRows:updates.map(u$1=>{let pk={};return pkColumns.forEach(c=>{pk[c.name]=u$1.original[c.name]}),pk}),rowIndices:updates.map(u$1=>u$1.index)})}if(inserts.length>0){let tableName=columns[0]?.tableName||``,schemaName=columns[0]?.schemaName||``;changes.push({id:`insert`,type:`insert`,tables:[{tableName,schemaName,primaryKeyColumns:[],rows:inserts.map(i$3=>i$3.row)}],rowCount:inserts.length,createdAt:new Date})}return changes},[displayRows,activeResult]),statementCount=(0,import_react.useMemo)(()=>stagedChanges.reduce((count,change)=>{let sql=``;return change.type===`delete`?sql=generateDeleteSQL(change):change.type===`update`?sql=generateUpdateSQL(change):change.type===`insert`&&(sql=generateInsertSQL(change)),count+(sql.match(/;/g)||[]).length},0),[stagedChanges]),hasStagedChanges=displayRows.some(r$4=>isStaged(r$4.status)),selectionRef=(0,import_react.useRef)(null),handleDeleteSelection=(0,import_react.useCallback)(indices=>{let indexSet=new Set(indices.map(i$3=>i$3-1));setDisplayRows(prev=>prev.map((row,idx)=>indexSet.has(idx)&&row.status===`normal`?{...row,status:`staged-delete`}:row)),selectionRef.current?.clearSelection()},[]),handleDiscardSelection=(0,import_react.useCallback)(indices=>{let indexSet=new Set(indices.map(i$3=>i$3-1));setDisplayRows(prev=>prev.filter((row,idx)=>!(indexSet.has(idx)&&row.status===`staged-insert`)).map((row,idx)=>indexSet.has(idx)?row.status===`staged-delete`?{...row,status:`normal`}:row.status===`staged-update`?{data:row.originalData,status:`normal`,pinned:row.pinned}:row:row)),selectionRef.current?.clearSelection()},[]),handlePinRows=(0,import_react.useCallback)(indices=>{let indexSet=new Set(indices.map(i$3=>i$3-1));setDisplayRows(prev=>prev.map((row,idx)=>indexSet.has(idx)?{...row,pinned:!0}:row)),selectionRef.current?.clearSelection()},[]),handleUnpinRows=(0,import_react.useCallback)(indices=>{let indexSet=new Set(indices.map(i$3=>i$3-1));setDisplayRows(prev=>prev.map((row,idx)=>indexSet.has(idx)?{...row,pinned:!1}:row)),selectionRef.current?.clearSelection()},[]),handleSaveEdit=(0,import_react.useCallback)(updatedRow=>{if(!selectedRow)return;if(pendingNewRow){setDisplayRows(prev=>[...prev,{data:updatedRow,status:`staged-insert`}]),setPendingNewRow(null),setSelectedRow(null),setDrawerOpen(!1),setIsEditingRow(!1);return}let idx=selectedRow.index-1,row=displayRows[idx];if(!row)return;let originalData=row.originalData||row.data;setDisplayRows(prev=>updateRow(prev,idx,{data:updatedRow,status:`staged-update`,originalData})),setIsEditingRow(!1)},[selectedRow,displayRows,pendingNewRow]),handleDuplicateSelection=(0,import_react.useCallback)(indices=>{if(!activeResult||indices.length!==1)return;let source=displayRows[indices[0]-1];if(!source)return;let newData={};for(let col of activeResult.result.columns)newData[col.name]=col.isPrimaryKey?``:source.data[col.name];let firstFocusableCol=activeResult.result.columns.find(col=>col.isPrimaryKey)??activeResult.result.columns[0];setPendingNewRow(newData),setSelectedRow({index:displayRows.length+1,data:newData}),setDrawerOpen(!0),setIsEditingRow(!0),setAutoEditColumn(firstFocusableCol?.name??null),selectionRef.current?.clearSelection()},[activeResult,displayRows]),handleAddRow=(0,import_react.useCallback)(()=>{if(!activeResult)return;let newData={};for(let col of activeResult.result.columns)newData[col.name]=col.hasDefault?void 0:col.isPrimaryKey?``:null;let firstFocusableCol=activeResult.result.columns.find(col=>!col.hasDefault||col.isPrimaryKey)??activeResult.result.columns[0];setPendingNewRow(newData),setSelectedRow({index:displayRows.length+1,data:newData}),setDrawerOpen(!0),setIsEditingRow(!0),setAutoEditColumn(firstFocusableCol?.name??null),selectionRef.current?.clearSelection()},[activeResult,displayRows]),selection=useRowSelection({totalRows:displayRows.length,onDelete:handleDeleteSelection});selectionRef.current=selection;let selectRowAt=(0,import_react.useCallback)(index$4=>{let row=displayRows[index$4-1];row&&(setSelectedRow({index:index$4,data:row.data}),selection.handleRowClick(index$4,{shiftKey:!1,metaKey:!1,ctrlKey:!1}))},[displayRows,selection]);useKeyboardShortcut(`row-nav-prev`,[`k`,`ArrowUp`],()=>{selectedRow?handlePreviousRow():hoveredRowIndex!==null&&selectRowAt(hoveredRowIndex)},{when:()=>(selectedRow!==null||hoveredRowIndex!==null)&&!isEditingRow}),useKeyboardShortcut(`row-nav-next`,[`j`,`ArrowDown`],()=>{selectedRow?handleNextRow():hoveredRowIndex!==null&&selectRowAt(hoveredRowIndex)},{when:()=>(selectedRow!==null||hoveredRowIndex!==null)&&!isEditingRow});let handleExecuteAll=(0,import_react.useCallback)(async()=>{for(let change of stagedChanges){let sql=change.type===`delete`?generateDeleteSQL(change):change.type===`update`?generateUpdateSQL(change):generateInsertSQL(change);sql&&await executeSQL.mutateAsync({connectionId,sql})}setPreviewModalOpen(!1);let activeResult$1=resultTabs.find(rt=>rt.id===activeResultTabId);activeResult$1?.sql&&onRefreshQuery&&onRefreshQuery(activeResult$1.sql)},[stagedChanges,executeSQL,connectionId,resultTabs,activeResultTabId,onRefreshQuery]),handleDiscardAll=(0,import_react.useCallback)(()=>{setDisplayRows(prev=>prev.filter(r$4=>r$4.status!==`staged-insert`).map(r$4=>r$4.status===`staged-delete`?{data:r$4.data,status:`normal`,pinned:r$4.pinned}:r$4.status===`staged-update`?{data:r$4.originalData,status:`normal`,pinned:r$4.pinned}:r$4))},[]),handleSaveJsonModal=(0,import_react.useCallback)(newValue=>{if(!jsonModal)return;let valueToStore;try{let parsed=JSON.parse(newValue);valueToStore=JSON.stringify(parsed)}catch{valueToStore=newValue}if(pendingNewRow){let updatedData$1={...pendingNewRow,[jsonModal.columnName]:valueToStore};setPendingNewRow(updatedData$1),selectedRow&&setSelectedRow({...selectedRow,data:updatedData$1});return}let idx=jsonModal.rowIndex-1,row=displayRows[idx];if(!row)return;let updatedData={...row.data,[jsonModal.columnName]:valueToStore};if(row.status===`staged-insert`)setDisplayRows(prev=>updateRow(prev,idx,{data:updatedData}));else{let originalData=row.originalData||row.data;setDisplayRows(prev=>updateRow(prev,idx,{data:updatedData,status:`staged-update`,originalData}))}selectedRow?.index===jsonModal.rowIndex&&setSelectedRow({...selectedRow,data:updatedData})},[jsonModal,displayRows,selectedRow,pendingNewRow]),handleRowClick=(0,import_react.useCallback)((rowIndex,row,column)=>{isExplainResult||(setSelectedRow({index:rowIndex,data:row,column}),setDrawerOpen(!0))},[isExplainResult]),handleRowDoubleClick=(0,import_react.useCallback)((rowIndex,row,column)=>{if(isExplainResult)return;let displayRow=displayRows[rowIndex-1];if(!hasWrite||displayRow&&displayRow.status!==`normal`){setSelectedRow({index:rowIndex,data:row,column}),setDrawerOpen(!0);return}setSelectedRow({index:rowIndex,data:row,column}),setDrawerOpen(!0),setIsEditingRow(!0),setAutoEditColumn(column)},[displayRows,hasWrite,isExplainResult]),handleClosePanel=(0,import_react.useCallback)(()=>{pendingNewRow&&(setPendingNewRow(null),setSelectedRow(null),setIsEditingRow(!1),setAutoEditColumn(null)),setDrawerOpen(!1)},[pendingNewRow]),handleExpandJson=(0,import_react.useCallback)((value,columnName,rowIndex)=>{setJsonModal({value,columnName,rowIndex})},[]),handleCloseJsonModal=(0,import_react.useCallback)(()=>{setJsonModal(null)},[]),handlePreviousRow=(0,import_react.useCallback)(()=>{if(!selectedRow||selectedRow.index<=1)return;let newIndex=selectedRow.index-1,newDisplayRow=displayRows[newIndex-1];newDisplayRow&&(setSelectedRow({index:newIndex,data:newDisplayRow.data}),selection.handleRowClick(newIndex,{shiftKey:!1,metaKey:!1,ctrlKey:!1}))},[selectedRow,displayRows,selection]),handleNextRow=(0,import_react.useCallback)(()=>{if(!selectedRow||selectedRow.index>=displayRows.length)return;let newIndex=selectedRow.index+1,newDisplayRow=displayRows[newIndex-1];newDisplayRow&&(setSelectedRow({index:newIndex,data:newDisplayRow.data}),selection.handleRowClick(newIndex,{shiftKey:!1,metaKey:!1,ctrlKey:!1}))},[selectedRow,displayRows,selection]),handleCopyAsMarkdown=(0,import_react.useCallback)(async()=>{if(!activeResult)return;let{columns}=activeResult.result,columnNames=columns.map(col=>col.name),lines=[];lines.push(`| ${columnNames.join(` | `)} |`),lines.push(`| ${columnNames.map(()=>`---`).join(` | `)} |`);for(let displayRow of displayRows){if(displayRow.status!==`normal`)continue;let cells$1=columnNames.map(colName=>{let value=displayRow.data[colName];return value===null?`null`:String(value).replace(/\|/g,`\\|`).replace(/\n/g,` `)});lines.push(`| ${cells$1.join(` | `)} |`)}await navigator.clipboard.writeText(lines.join(`
102
- `))},[activeResult,displayRows]),handleExport=(0,import_react.useCallback)(()=>{if(!activeResult)return;let filename=`export-${new Date().toISOString().slice(0,19).replace(/[-:T]/g,m$2=>m$2===`T`?`-`:``)}.csv`,rows=displayRows.filter(r$4=>r$4.status===`normal`).map(r$4=>r$4.data);exportToCsv(activeResult.result.columns,rows,filename)},[activeResult,displayRows]);return isExecuting&&resultTabs.length===0?(0,import_jsx_runtime.jsxs)(`div`,{className:`h-full flex flex-col items-center justify-center gap-3`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`text-sm text-gray-500`,children:[`Executing query...`,elapsedTime>=1&&` (${elapsedTime.toFixed(1)}s)`,executingPid&&(0,import_jsx_runtime.jsxs)(`span`,{className:`ml-2 text-gray-400`,children:[`PID `,executingPid]})]}),elapsedTime>=1&&onCancelQuery&&(0,import_jsx_runtime.jsxs)(Button,{variant:`outline`,size:`sm`,onClick:onCancelQuery,disabled:isCancelling,className:`text-red-600 border-red-200 hover:bg-red-50 hover:border-red-300`,children:[(0,import_jsx_runtime.jsx)(X,{className:`w-3 h-3 mr-1`}),isCancelling?`Cancelling...`:`Cancel`]})]}):!isExecuting&&resultTabs.length===0?(0,import_jsx_runtime.jsxs)(`div`,{className:`h-full flex items-center justify-center text-sm text-gray-400`,children:[`Run a query to see results (`,navigator.platform.includes(`Mac`)?`⌘`:`Ctrl`,` + Enter)`]}):(0,import_jsx_runtime.jsxs)(`div`,{className:`h-full flex flex-col relative`,children:[hasStagedChanges&&(0,import_jsx_runtime.jsxs)(`div`,{className:`absolute -top-3 left-1/2 -translate-x-1/2 z-30 flex items-center gap-2 p-1.5 bg-white/80 backdrop-blur-sm rounded-lg shadow-sm border border-gray-200/50 text-xs`,children:[(0,import_jsx_runtime.jsx)(`button`,{className:`px-2 py-1 text-gray-600 hover:text-gray-900 bg-white hover:bg-gray-100 border border-gray-300 rounded shadow-sm`,onClick:handleDiscardAll,children:`Discard`}),(0,import_jsx_runtime.jsxs)(`button`,{className:`px-2 py-1 text-primary-foreground bg-primary hover:bg-primary/80 rounded shadow-sm flex items-center gap-1.5`,onClick:()=>setPreviewModalOpen(!0),children:[`Preview changes`,(0,import_jsx_runtime.jsx)(`span`,{className:`px-1.5 py-0.5 bg-primary-foreground/20 text-primary-foreground rounded-full text-xs font-medium`,children:statementCount})]})]}),(0,import_jsx_runtime.jsxs)(`div`,{className:`shrink-0 flex items-center border-b border-gray-200 bg-gray-50 py-1`,children:[(0,import_jsx_runtime.jsx)(TabBar,{tabs:resultTabs.map(rt=>({id:rt.id,label:rt.title,className:rt.result.error?`text-red-500`:void 0})),activeTabId:activeResultTabId,onTabSelect:onResultTabChange,className:`flex-1 min-w-0`}),(0,import_jsx_runtime.jsxs)(`div`,{className:`shrink-0 px-2 flex items-center`,children:[(0,import_jsx_runtime.jsx)(SearchInput,{value:filterInput,onChange:e=>setFilterInput(e.target.value),onClear:()=>setFilterInput(``),size:`sm`,className:`w-40 mr-2`}),hasWrite&&!isExplainResult&&(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`xs`,onClick:handleAddRow,disabled:!activeResult||!!activeResult.result.error,title:`Add row`,children:(0,import_jsx_runtime.jsx)(Plus,{className:`w-4 h-4`})}),(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`xs`,onClick:handleCopyAsMarkdown,disabled:!activeResult||!!activeResult.result.error||activeResult.result.rows.length===0,title:`Copy as Markdown table`,children:(0,import_jsx_runtime.jsx)(Clipboard,{className:`w-4 h-4`})}),hasExport&&(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`xs`,onClick:handleExport,disabled:!activeResult||!!activeResult.result.error||activeResult.result.rows.length===0,title:`Export to CSV`,children:(0,import_jsx_runtime.jsx)(Download,{className:`w-4 h-4 mr-1`})})]})]}),(0,import_jsx_runtime.jsx)(`div`,{className:`flex-1 min-h-0 relative`,children:activeResult&&(0,import_jsx_runtime.jsx)(ResultContent,{result:activeResult.result,filter:debouncedFilter,allDisplayRows:displayRows,displayRows:filteredDisplayRows,selectedRowIndex:selectedRow?.index??null,onRowClick:handleRowClick,onRowDoubleClick:handleRowDoubleClick,onExpandJson:handleExpandJson,selectedIndices:selection.selectedIndices,onRowSelect:(index$4,event)=>{if(event.metaKey||event.ctrlKey){let wasSelected=selection.selectedIndices.has(index$4),isInDetailPanel=selectedRow?.index===index$4;wasSelected||isInDetailPanel?(isInDetailPanel&&(setSelectedRow(null),setDrawerOpen(!1)),wasSelected&&selection.handleRowClick(index$4,event)):selection.handleRowClick(index$4,event)}else selection.handleRowClick(index$4,event)},onDeleteRows:handleDeleteSelection,onDuplicateRows:handleDuplicateSelection,onDiscardRows:handleDiscardSelection,onPinRows:handlePinRows,onUnpinRows:handleUnpinRows,onRowHover:setHoveredRowIndex,hasWrite,isExplainResult})}),selectedRow&&activeResult&&!isExplainResult&&(()=>{if(pendingNewRow)return(0,import_jsx_runtime.jsx)(RowDetailPanel,{row:selectedRow.data,columns:activeResult.result.columns,open:drawerOpen,onClose:handleClosePanel,onPrevious:()=>{},onNext:()=>{},hasPrevious:!1,hasNext:!1,scrollToColumn:selectedRow.column,currentIndex:selectedRow.index,totalCount:displayRows.length+1,onExpandJson:(value,columnName)=>handleExpandJson(value,columnName,selectedRow.index),onEdit:void 0,isEditing:isEditingRow,onCancelEdit:handleClosePanel,onSaveEdit:handleSaveEdit,autoEditColumn,onAutoEditHandled:()=>setAutoEditColumn(null),onDelete:void 0,stagedType:void 0,stagedOverrides:void 0,onDiscardStaged:void 0,isNewRow:!0});let displayRow=displayRows[selectedRow.index-1];if(!displayRow)return null;let{status,originalData}=displayRow,isStagedInsert=status===`staged-insert`,stagedType=status===`staged-delete`?`delete`:status===`staged-update`?`update`:status===`staged-insert`?`insert`:void 0,stagedOverrides=status===`staged-update`&&originalData?Object.fromEntries(Object.entries(displayRow.data).filter(([key$1,val])=>originalData[key$1]!==val)):void 0;return(0,import_jsx_runtime.jsx)(RowDetailPanel,{row:displayRow.data,columns:activeResult.result.columns,open:drawerOpen,onClose:handleClosePanel,onPrevious:handlePreviousRow,onNext:handleNextRow,hasPrevious:selectedRow.index>1,hasNext:selectedRow.index<displayRows.length,scrollToColumn:selectedRow.column,currentIndex:selectedRow.index,totalCount:displayRows.length,onExpandJson:(value,columnName)=>handleExpandJson(value,columnName,selectedRow.index),onEdit:hasWrite&&!isStagedInsert?()=>setIsEditingRow(!0):void 0,isEditing:isEditingRow,onCancelEdit:()=>{setIsEditingRow(!1),setAutoEditColumn(null)},onSaveEdit:handleSaveEdit,autoEditColumn,onAutoEditHandled:()=>setAutoEditColumn(null),onDelete:hasWrite&&!isStagedInsert?()=>handleDeleteSelection([selectedRow.index]):void 0,stagedType,stagedOverrides,onDiscardStaged:()=>{let idx=selectedRow.index-1;status===`staged-insert`?(setDisplayRows(prev=>prev.filter((_$2,i$3)=>i$3!==idx)),setSelectedRow(null),setDrawerOpen(!1)):status===`staged-delete`?setDisplayRows(prev=>updateRow(prev,idx,{status:`normal`})):status===`staged-update`&&setDisplayRows(prev=>updateRow(prev,idx,{data:originalData,status:`normal`}))},isNewRow:!1})})(),jsonModal&&(0,import_jsx_runtime.jsx)(JsonExpandModal,{open:!0,onClose:handleCloseJsonModal,value:jsonModal.value,columnName:jsonModal.columnName,onSave:hasWrite&&!isExplainResult?handleSaveJsonModal:void 0}),(0,import_jsx_runtime.jsx)(StagedChangesModal,{open:previewModalOpen,onClose:()=>setPreviewModalOpen(!1),connectionId,stagedChanges,onExecuteAll:handleExecuteAll})]})}const TabsRootContext=import_react.createContext(void 0);function useTabsRootContext(){let context=import_react.useContext(TabsRootContext);if(context===void 0)throw Error(formatErrorMessage(64));return context}let TabsRootDataAttributes=function(TabsRootDataAttributes$1){return TabsRootDataAttributes$1.activationDirection=`data-activation-direction`,TabsRootDataAttributes$1.orientation=`data-orientation`,TabsRootDataAttributes$1}({});const tabsStateAttributesMapping={tabActivationDirection:dir=>({[TabsRootDataAttributes.activationDirection]:dir})},TabsRoot=import_react.forwardRef(function(componentProps,forwardedRef){let{className,defaultValue:defaultValueProp=0,onValueChange:onValueChangeProp,orientation=`horizontal`,render,value:valueProp,...elementProps}=componentProps,direction=useDirection(),hasExplicitDefaultValueProp=Object.hasOwn(componentProps,`defaultValue`),tabPanelRefs=import_react.useRef([]),[mountedTabPanels,setMountedTabPanels]=import_react.useState(()=>new Map),[value,setValue]=useControlled({controlled:valueProp,default:defaultValueProp,name:`Tabs`,state:`value`}),isControlled=valueProp!==void 0,[tabMap,setTabMap]=import_react.useState(()=>new Map),[tabActivationDirection,setTabActivationDirection]=import_react.useState(`none`),onValueChange=useStableCallback((newValue,eventDetails)=>{onValueChangeProp?.(newValue,eventDetails),!eventDetails.isCanceled&&(setValue(newValue),setTabActivationDirection(eventDetails.activationDirection))}),registerMountedTabPanel=useStableCallback((panelValue,panelId)=>{setMountedTabPanels(prev=>{if(prev.get(panelValue)===panelId)return prev;let next=new Map(prev);return next.set(panelValue,panelId),next})}),unregisterMountedTabPanel=useStableCallback((panelValue,panelId)=>{setMountedTabPanels(prev=>{if(!prev.has(panelValue)||prev.get(panelValue)!==panelId)return prev;let next=new Map(prev);return next.delete(panelValue),next})}),getTabPanelIdByValue=import_react.useCallback(tabValue=>mountedTabPanels.get(tabValue),[mountedTabPanels]),getTabIdByPanelValue=import_react.useCallback(tabPanelValue=>{for(let tabMetadata of tabMap.values())if(tabPanelValue===tabMetadata?.value)return tabMetadata?.id},[tabMap]),getTabElementBySelectedValue=import_react.useCallback(selectedValue=>{if(selectedValue===void 0)return null;for(let[tabElement,tabMetadata]of tabMap.entries())if(tabMetadata!=null&&selectedValue===(tabMetadata.value??tabMetadata.index))return tabElement;return null},[tabMap]),tabsContextValue=import_react.useMemo(()=>({direction,getTabElementBySelectedValue,getTabIdByPanelValue,getTabPanelIdByValue,onValueChange,orientation,registerMountedTabPanel,setTabMap,unregisterMountedTabPanel,tabActivationDirection,value}),[direction,getTabElementBySelectedValue,getTabIdByPanelValue,getTabPanelIdByValue,onValueChange,orientation,registerMountedTabPanel,setTabMap,unregisterMountedTabPanel,tabActivationDirection,value]),selectedTabMetadata=import_react.useMemo(()=>{for(let tabMetadata of tabMap.values())if(tabMetadata!=null&&tabMetadata.value===value)return tabMetadata},[tabMap,value]),firstEnabledTabValue=import_react.useMemo(()=>{for(let tabMetadata of tabMap.values())if(tabMetadata!=null&&!tabMetadata.disabled)return tabMetadata.value},[tabMap]);useIsoLayoutEffect(()=>{if(isControlled||tabMap.size===0)return;let selectionIsDisabled=selectedTabMetadata?.disabled;if(hasExplicitDefaultValueProp&&selectionIsDisabled&&value===defaultValueProp||!selectionIsDisabled&&!(selectedTabMetadata==null&&value!==null))return;let fallbackValue=firstEnabledTabValue??null;value!==fallbackValue&&(setValue(fallbackValue),setTabActivationDirection(`none`))},[defaultValueProp,firstEnabledTabValue,hasExplicitDefaultValueProp,isControlled,selectedTabMetadata,setTabActivationDirection,setValue,tabMap,value]);let element$3=useRenderElement(`div`,componentProps,{state:{orientation,tabActivationDirection},ref:forwardedRef,props:elementProps,stateAttributesMapping:tabsStateAttributesMapping});return(0,import_jsx_runtime.jsx)(TabsRootContext.Provider,{value:tabsContextValue,children:(0,import_jsx_runtime.jsx)(CompositeList,{elementsRef:tabPanelRefs,children:element$3})})}),ACTIVE_COMPOSITE_ITEM=`data-composite-item-active`,TabsListContext=import_react.createContext(void 0);function useTabsListContext(){let context=import_react.useContext(TabsListContext);if(context===void 0)throw Error(formatErrorMessage(65));return context}const TabsTab$1=import_react.forwardRef(function(componentProps,forwardedRef){let{className,disabled:disabled$1=!1,render,value,id:idProp,nativeButton=!0,...elementProps}=componentProps,{value:activeTabValue,getTabPanelIdByValue,orientation}=useTabsRootContext(),{activateOnFocus,highlightedTabIndex,onTabActivation,setHighlightedTabIndex,tabsListElement}=useTabsListContext(),id=useBaseUiId(idProp),{compositeProps,compositeRef,index:index$4}=useCompositeItem({metadata:import_react.useMemo(()=>({disabled:disabled$1,id,value}),[disabled$1,id,value])}),active=value===activeTabValue,isNavigatingRef=import_react.useRef(!1);useIsoLayoutEffect(()=>{if(isNavigatingRef.current){isNavigatingRef.current=!1;return}if(!(active&&index$4>-1&&highlightedTabIndex!==index$4))return;let listElement=tabsListElement;if(listElement!=null){let activeEl=activeElement(ownerDocument(listElement));if(activeEl&&contains(listElement,activeEl))return}disabled$1||setHighlightedTabIndex(index$4)},[active,index$4,highlightedTabIndex,setHighlightedTabIndex,disabled$1,tabsListElement]);let{getButtonProps,buttonRef}=useButton({disabled:disabled$1,native:nativeButton,focusableWhenDisabled:!0}),tabPanelId=getTabPanelIdByValue(value),isPressingRef=import_react.useRef(!1),isMainButtonRef=import_react.useRef(!1);function onClick(event){active||disabled$1||onTabActivation(value,createChangeEventDetails(none$3,event.nativeEvent,void 0,{activationDirection:`none`}))}function onFocus(event){active||(index$4>-1&&!disabled$1&&setHighlightedTabIndex(index$4),!disabled$1&&activateOnFocus&&(!isPressingRef.current||isPressingRef.current&&isMainButtonRef.current)&&onTabActivation(value,createChangeEventDetails(none$3,event.nativeEvent,void 0,{activationDirection:`none`})))}function onPointerDown(event){if(active||disabled$1)return;isPressingRef.current=!0;function handlePointerUp(){isPressingRef.current=!1,isMainButtonRef.current=!1}(!event.button||event.button===0)&&(isMainButtonRef.current=!0,ownerDocument(event.currentTarget).addEventListener(`pointerup`,handlePointerUp,{once:!0}))}return useRenderElement(`button`,componentProps,{state:import_react.useMemo(()=>({disabled:disabled$1,active,orientation}),[disabled$1,active,orientation]),ref:[forwardedRef,buttonRef,compositeRef],props:[compositeProps,{role:`tab`,"aria-controls":tabPanelId,"aria-selected":active,id,onClick,onFocus,onPointerDown,[ACTIVE_COMPOSITE_ITEM]:active?``:void 0,onKeyDownCapture(){isNavigatingRef.current=!0}},elementProps,getButtonProps]})}),script='!function(){const t=document.currentScript.previousElementSibling;if(!t)return;const e=t.closest(\'[role="tablist"]\');if(!e)return;const i=e.querySelector("[data-active]");if(!i)return;if(0===i.offsetWidth||0===e.offsetWidth)return;let o=0,n=0,h=0,l=0,r=0,f=0;function s(t){const e=getComputedStyle(t);let i=parseFloat(e.width)||0,o=parseFloat(e.height)||0;return(Math.round(i)!==t.offsetWidth||Math.round(o)!==t.offsetHeight)&&(i=t.offsetWidth,o=t.offsetHeight),{width:i,height:o}}if(null!=i&&null!=e){const{width:t,height:c}=s(i),{width:u,height:d}=s(e),a=i.getBoundingClientRect(),g=e.getBoundingClientRect(),p=u>0?g.width/u:1,b=d>0?g.height/d:1;if(Math.abs(p)>Number.EPSILON&&Math.abs(b)>Number.EPSILON){const t=a.left-g.left,i=a.top-g.top;o=t/p+e.scrollLeft-e.clientLeft,h=i/b+e.scrollTop-e.clientTop}else o=i.offsetLeft,h=i.offsetTop;r=t,f=c,n=e.scrollWidth-o-r,l=e.scrollHeight-h-f}function c(e,i){t.style.setProperty(`--active-tab-${e}`,`${i}px`)}c("left",o),c("right",n),c("top",h),c("bottom",l),c("width",r),c("height",f),r>0&&f>0&&t.removeAttribute("hidden")}();';let TabsIndicatorCssVars=function(TabsIndicatorCssVars$1){return TabsIndicatorCssVars$1.activeTabLeft=`--active-tab-left`,TabsIndicatorCssVars$1.activeTabRight=`--active-tab-right`,TabsIndicatorCssVars$1.activeTabTop=`--active-tab-top`,TabsIndicatorCssVars$1.activeTabBottom=`--active-tab-bottom`,TabsIndicatorCssVars$1.activeTabWidth=`--active-tab-width`,TabsIndicatorCssVars$1.activeTabHeight=`--active-tab-height`,TabsIndicatorCssVars$1}({});var stateAttributesMapping$1={...tabsStateAttributesMapping,activeTabPosition:()=>null,activeTabSize:()=>null};const TabsIndicator=import_react.forwardRef(function(componentProps,forwardedRef){let{className,render,renderBeforeHydration=!1,...elementProps}=componentProps,{nonce}=useCSPContext(),{getTabElementBySelectedValue,orientation,tabActivationDirection,value}=useTabsRootContext(),{tabsListElement}=useTabsListContext(),[isMounted,setIsMounted]=import_react.useState(!1),{value:activeTabValue}=useTabsRootContext();useOnMount(()=>setIsMounted(!0));let rerender=useForcedRerendering();import_react.useEffect(()=>{if(value!=null&&tabsListElement!=null&&typeof ResizeObserver<`u`){let resizeObserver=new ResizeObserver(rerender);return resizeObserver.observe(tabsListElement),()=>{resizeObserver.disconnect()}}},[value,tabsListElement,rerender]);let left=0,right=0,top$1=0,bottom=0,width=0,height=0,isTabSelected=!1;if(value!=null&&tabsListElement!=null){let activeTab=getTabElementBySelectedValue(value);if(isTabSelected=!0,activeTab!=null){let{width:computedWidth,height:computedHeight}=getCssDimensions(activeTab),{width:tabListWidth,height:tabListHeight}=getCssDimensions(tabsListElement),tabRect=activeTab.getBoundingClientRect(),tabsListRect=tabsListElement.getBoundingClientRect(),scaleX=tabListWidth>0?tabsListRect.width/tabListWidth:1,scaleY=tabListHeight>0?tabsListRect.height/tabListHeight:1;if(Math.abs(scaleX)>2**-52&&Math.abs(scaleY)>2**-52){let tabLeftDelta=tabRect.left-tabsListRect.left,tabTopDelta=tabRect.top-tabsListRect.top;left=tabLeftDelta/scaleX+tabsListElement.scrollLeft-tabsListElement.clientLeft,top$1=tabTopDelta/scaleY+tabsListElement.scrollTop-tabsListElement.clientTop}else left=activeTab.offsetLeft,top$1=activeTab.offsetTop;width=computedWidth,height=computedHeight,right=tabsListElement.scrollWidth-left-width,bottom=tabsListElement.scrollHeight-top$1-height}}let activeTabPosition=import_react.useMemo(()=>isTabSelected?{left,right,top:top$1,bottom}:null,[left,right,top$1,bottom,isTabSelected]),activeTabSize=import_react.useMemo(()=>isTabSelected?{width,height}:null,[width,height,isTabSelected]),style$1=import_react.useMemo(()=>{if(isTabSelected)return{[TabsIndicatorCssVars.activeTabLeft]:`${left}px`,[TabsIndicatorCssVars.activeTabRight]:`${right}px`,[TabsIndicatorCssVars.activeTabTop]:`${top$1}px`,[TabsIndicatorCssVars.activeTabBottom]:`${bottom}px`,[TabsIndicatorCssVars.activeTabWidth]:`${width}px`,[TabsIndicatorCssVars.activeTabHeight]:`${height}px`}},[left,right,top$1,bottom,width,height,isTabSelected]),displayIndicator=isTabSelected&&width>0&&height>0,element$3=useRenderElement(`span`,componentProps,{state:import_react.useMemo(()=>({orientation,activeTabPosition,activeTabSize,tabActivationDirection}),[orientation,activeTabPosition,activeTabSize,tabActivationDirection]),ref:forwardedRef,props:[{role:`presentation`,style:style$1,hidden:!displayIndicator},elementProps,{suppressHydrationWarning:!0}],stateAttributesMapping:stateAttributesMapping$1});return activeTabValue==null?null:(0,import_jsx_runtime.jsxs)(import_react.Fragment,{children:[element$3,!isMounted&&renderBeforeHydration&&(0,import_jsx_runtime.jsx)(`script`,{nonce,dangerouslySetInnerHTML:{__html:'!function(){const t=document.currentScript.previousElementSibling;if(!t)return;const e=t.closest(\'[role="tablist"]\');if(!e)return;const i=e.querySelector("[data-active]");if(!i)return;if(0===i.offsetWidth||0===e.offsetWidth)return;let o=0,n=0,h=0,l=0,r=0,f=0;function s(t){const e=getComputedStyle(t);let i=parseFloat(e.width)||0,o=parseFloat(e.height)||0;return(Math.round(i)!==t.offsetWidth||Math.round(o)!==t.offsetHeight)&&(i=t.offsetWidth,o=t.offsetHeight),{width:i,height:o}}if(null!=i&&null!=e){const{width:t,height:c}=s(i),{width:u,height:d}=s(e),a=i.getBoundingClientRect(),g=e.getBoundingClientRect(),p=u>0?g.width/u:1,b=d>0?g.height/d:1;if(Math.abs(p)>Number.EPSILON&&Math.abs(b)>Number.EPSILON){const t=a.left-g.left,i=a.top-g.top;o=t/p+e.scrollLeft-e.clientLeft,h=i/b+e.scrollTop-e.clientTop}else o=i.offsetLeft,h=i.offsetTop;r=t,f=c,n=e.scrollWidth-o-r,l=e.scrollHeight-h-f}function c(e,i){t.style.setProperty(`--active-tab-${e}`,`${i}px`)}c("left",o),c("right",n),c("top",h),c("bottom",l),c("width",r),c("height",f),r>0&&f>0&&t.removeAttribute("hidden")}();'},suppressHydrationWarning:!0})]})});let TabsPanelDataAttributes=function(TabsPanelDataAttributes$1){return TabsPanelDataAttributes$1.index=`data-index`,TabsPanelDataAttributes$1.activationDirection=`data-activation-direction`,TabsPanelDataAttributes$1.orientation=`data-orientation`,TabsPanelDataAttributes$1.hidden=`data-hidden`,TabsPanelDataAttributes$1}({});const TabsPanel$1=import_react.forwardRef(function(componentProps,forwardedRef){let{className,value,render,keepMounted=!1,...elementProps}=componentProps,{value:selectedValue,getTabIdByPanelValue,orientation,tabActivationDirection,registerMountedTabPanel,unregisterMountedTabPanel}=useTabsRootContext(),id=useBaseUiId(),{ref:listItemRef,index:index$4}=useCompositeListItem({metadata:import_react.useMemo(()=>({id,value}),[id,value])}),hidden=value!==selectedValue,correspondingTabId=getTabIdByPanelValue(value),element$3=useRenderElement(`div`,componentProps,{state:import_react.useMemo(()=>({hidden,orientation,tabActivationDirection}),[hidden,orientation,tabActivationDirection]),ref:[forwardedRef,listItemRef],props:[{"aria-labelledby":correspondingTabId,hidden,id:id??void 0,role:`tabpanel`,tabIndex:hidden?-1:0,[TabsPanelDataAttributes.index]:index$4},elementProps],stateAttributesMapping:tabsStateAttributesMapping});return useIsoLayoutEffect(()=>{if(!(hidden&&!keepMounted)&&id!=null)return registerMountedTabPanel(value,id),()=>{unregisterMountedTabPanel(value,id)}},[hidden,keepMounted,value,id,registerMountedTabPanel,unregisterMountedTabPanel]),!hidden||keepMounted?element$3:null});function isElementDisabled(element$3){return element$3==null||element$3.hasAttribute(`disabled`)||element$3.getAttribute(`aria-disabled`)===`true`}var EMPTY_ARRAY$1=[];function useCompositeRoot(params){let{itemSizes,cols=1,loopFocus=!0,dense=!1,orientation=`both`,direction,highlightedIndex:externalHighlightedIndex,onHighlightedIndexChange:externalSetHighlightedIndex,rootRef:externalRef,enableHomeAndEndKeys=!1,stopEventPropagation=!1,disabledIndices,modifierKeys=EMPTY_ARRAY$1}=params,[internalHighlightedIndex,internalSetHighlightedIndex]=import_react.useState(0),isGrid=cols>1,rootRef=import_react.useRef(null),mergedRef=useMergedRefs(rootRef,externalRef),elementsRef=import_react.useRef([]),hasSetDefaultIndexRef=import_react.useRef(!1),highlightedIndex=externalHighlightedIndex??internalHighlightedIndex,onHighlightedIndexChange=useStableCallback((index$4,shouldScrollIntoView=!1)=>{if((externalSetHighlightedIndex??internalSetHighlightedIndex)(index$4),shouldScrollIntoView){let newActiveItem=elementsRef.current[index$4];scrollIntoViewIfNeeded(rootRef.current,newActiveItem,direction,orientation)}}),onMapChange=useStableCallback(map=>{if(map.size===0||hasSetDefaultIndexRef.current)return;hasSetDefaultIndexRef.current=!0;let sortedElements=Array.from(map.keys()),activeItem=sortedElements.find(compositeElement=>compositeElement?.hasAttribute(`data-composite-item-active`))??null,activeIndex=activeItem?sortedElements.indexOf(activeItem):-1;activeIndex!==-1&&onHighlightedIndexChange(activeIndex),scrollIntoViewIfNeeded(rootRef.current,activeItem,direction,orientation)}),props=import_react.useMemo(()=>({"aria-orientation":orientation===`both`?void 0:orientation,ref:mergedRef,onFocus(event){!rootRef.current||!isNativeInput(event.target)||event.target.setSelectionRange(0,event.target.value.length??0)},onKeyDown(event){let RELEVANT_KEYS=enableHomeAndEndKeys?ALL_KEYS:ARROW_KEYS;if(!RELEVANT_KEYS.has(event.key)||isModifierKeySet(event,modifierKeys)||!rootRef.current)return;let isRtl=direction===`rtl`,horizontalForwardKey=isRtl?ARROW_LEFT:ARROW_RIGHT,forwardKey={horizontal:horizontalForwardKey,vertical:ARROW_DOWN,both:horizontalForwardKey}[orientation],horizontalBackwardKey=isRtl?ARROW_RIGHT:ARROW_LEFT,backwardKey={horizontal:horizontalBackwardKey,vertical:ARROW_UP,both:horizontalBackwardKey}[orientation];if(isNativeInput(event.target)&&!isElementDisabled(event.target)){let selectionStart=event.target.selectionStart,selectionEnd=event.target.selectionEnd,textContent=event.target.value??``;if(selectionStart==null||event.shiftKey||selectionStart!==selectionEnd||event.key!==backwardKey&&selectionStart<textContent.length||event.key!==forwardKey&&selectionStart>0)return}let nextIndex=highlightedIndex,minIndex=getMinListIndex(elementsRef,disabledIndices),maxIndex=getMaxListIndex(elementsRef,disabledIndices);if(isGrid){let sizes=itemSizes||Array.from({length:elementsRef.current.length},()=>({width:1,height:1})),cellMap=createGridCellMap(sizes,cols,dense),minGridIndex=cellMap.findIndex(index$4=>index$4!=null&&!isListIndexDisabled(elementsRef,index$4,disabledIndices)),maxGridIndex=cellMap.reduce((foundIndex,index$4,cellIndex)=>index$4!=null&&!isListIndexDisabled(elementsRef,index$4,disabledIndices)?cellIndex:foundIndex,-1);nextIndex=cellMap[getGridNavigatedIndex({current:cellMap.map(itemIndex=>itemIndex?elementsRef.current[itemIndex]:null)},{event,orientation,loopFocus,cols,disabledIndices:getGridCellIndices([...disabledIndices||elementsRef.current.map((_$2,index$4)=>isListIndexDisabled(elementsRef,index$4)?index$4:void 0),void 0],cellMap),minIndex:minGridIndex,maxIndex:maxGridIndex,prevIndex:getGridCellIndexOfCorner(highlightedIndex>maxIndex?minIndex:highlightedIndex,sizes,cellMap,cols,event.key===`ArrowDown`?`bl`:event.key===`ArrowRight`?`tr`:`tl`),rtl:isRtl})]}let forwardKeys={horizontal:[horizontalForwardKey],vertical:[ARROW_DOWN],both:[horizontalForwardKey,ARROW_DOWN]}[orientation],backwardKeys={horizontal:[horizontalBackwardKey],vertical:[ARROW_UP],both:[horizontalBackwardKey,ARROW_UP]}[orientation],preventedKeys=isGrid?RELEVANT_KEYS:{horizontal:enableHomeAndEndKeys?HORIZONTAL_KEYS_WITH_EXTRA_KEYS:HORIZONTAL_KEYS,vertical:enableHomeAndEndKeys?VERTICAL_KEYS_WITH_EXTRA_KEYS:VERTICAL_KEYS,both:RELEVANT_KEYS}[orientation];enableHomeAndEndKeys&&(event.key===`Home`?nextIndex=minIndex:event.key===`End`&&(nextIndex=maxIndex)),nextIndex===highlightedIndex&&(forwardKeys.includes(event.key)||backwardKeys.includes(event.key))&&(nextIndex=loopFocus&&nextIndex===maxIndex&&forwardKeys.includes(event.key)?minIndex:loopFocus&&nextIndex===minIndex&&backwardKeys.includes(event.key)?maxIndex:findNonDisabledListIndex(elementsRef,{startingIndex:nextIndex,decrement:backwardKeys.includes(event.key),disabledIndices})),nextIndex!==highlightedIndex&&!isIndexOutOfListBounds(elementsRef,nextIndex)&&(stopEventPropagation&&event.stopPropagation(),preventedKeys.has(event.key)&&event.preventDefault(),onHighlightedIndexChange(nextIndex,!0),queueMicrotask(()=>{elementsRef.current[nextIndex]?.focus()}))}}),[cols,dense,direction,disabledIndices,elementsRef,enableHomeAndEndKeys,highlightedIndex,isGrid,itemSizes,loopFocus,mergedRef,modifierKeys,onHighlightedIndexChange,orientation,stopEventPropagation]);return import_react.useMemo(()=>({props,highlightedIndex,onHighlightedIndexChange,elementsRef,disabledIndices,onMapChange,relayKeyboardEvent:props.onKeyDown}),[props,highlightedIndex,onHighlightedIndexChange,elementsRef,disabledIndices,onMapChange])}function isModifierKeySet(event,ignoredModifierKeys){for(let key$1 of MODIFIER_KEYS$1.values())if(!ignoredModifierKeys.includes(key$1)&&event.getModifierState(key$1))return!0;return!1}function CompositeRoot(componentProps){let{render,className,refs=EMPTY_ARRAY,props=EMPTY_ARRAY,state:state$1=EMPTY_OBJECT,stateAttributesMapping:stateAttributesMapping$13,highlightedIndex:highlightedIndexProp,onHighlightedIndexChange:onHighlightedIndexChangeProp,orientation,dense,itemSizes,loopFocus,cols,enableHomeAndEndKeys,onMapChange:onMapChangeProp,stopEventPropagation=!0,rootRef,disabledIndices,modifierKeys,highlightItemOnHover=!1,tag=`div`,...elementProps}=componentProps,{props:defaultProps,highlightedIndex,onHighlightedIndexChange,elementsRef,onMapChange:onMapChangeUnwrapped,relayKeyboardEvent}=useCompositeRoot({itemSizes,cols,loopFocus,dense,orientation,highlightedIndex:highlightedIndexProp,onHighlightedIndexChange:onHighlightedIndexChangeProp,rootRef,stopEventPropagation,enableHomeAndEndKeys,direction:useDirection(),disabledIndices,modifierKeys}),element$3=useRenderElement(tag,componentProps,{state:state$1,ref:refs,props:[defaultProps,...props,elementProps],stateAttributesMapping:stateAttributesMapping$13}),contextValue=import_react.useMemo(()=>({highlightedIndex,onHighlightedIndexChange,highlightItemOnHover,relayKeyboardEvent}),[highlightedIndex,onHighlightedIndexChange,highlightItemOnHover,relayKeyboardEvent]);return(0,import_jsx_runtime.jsx)(CompositeRootContext.Provider,{value:contextValue,children:(0,import_jsx_runtime.jsx)(CompositeList,{elementsRef,onMapChange:newMap=>{onMapChangeProp?.(newMap),onMapChangeUnwrapped(newMap)},children:element$3})})}const TabsList$1=import_react.forwardRef(function(componentProps,forwardedRef){let{activateOnFocus=!1,className,loopFocus=!0,render,...elementProps}=componentProps,{getTabElementBySelectedValue,onValueChange,orientation,value,setTabMap,tabActivationDirection}=useTabsRootContext(),[highlightedTabIndex,setHighlightedTabIndex]=import_react.useState(0),[tabsListElement,setTabsListElement]=import_react.useState(null),detectActivationDirection=useActivationDirectionDetector(value,orientation,tabsListElement,getTabElementBySelectedValue),onTabActivation=useStableCallback((newValue,eventDetails)=>{newValue!==value&&(eventDetails.activationDirection=detectActivationDirection(newValue),onValueChange(newValue,eventDetails))}),state$1=import_react.useMemo(()=>({orientation,tabActivationDirection}),[orientation,tabActivationDirection]),defaultProps={"aria-orientation":orientation===`vertical`?`vertical`:void 0,role:`tablist`},tabsListContextValue=import_react.useMemo(()=>({activateOnFocus,highlightedTabIndex,onTabActivation,setHighlightedTabIndex,tabsListElement,value}),[activateOnFocus,highlightedTabIndex,onTabActivation,setHighlightedTabIndex,tabsListElement,value]);return(0,import_jsx_runtime.jsx)(TabsListContext.Provider,{value:tabsListContextValue,children:(0,import_jsx_runtime.jsx)(CompositeRoot,{render,className,state:state$1,refs:[forwardedRef,setTabsListElement],props:[defaultProps,elementProps],stateAttributesMapping:tabsStateAttributesMapping,highlightedIndex:highlightedTabIndex,enableHomeAndEndKeys:!0,loopFocus,orientation,onHighlightedIndexChange:setHighlightedTabIndex,onMapChange:setTabMap,disabledIndices:EMPTY_ARRAY})})});function getInset(tab$1,tabsList){let{left:tabLeft,top:tabTop}=tab$1.getBoundingClientRect(),{left:listLeft,top:listTop}=tabsList.getBoundingClientRect();return{left:tabLeft-listLeft,top:tabTop-listTop}}function useActivationDirectionDetector(activeTabValue,orientation,tabsListElement,getTabElement){let[previousTabEdge,setPreviousTabEdge]=import_react.useState(null);return useIsoLayoutEffect(()=>{if(activeTabValue==null||tabsListElement==null){setPreviousTabEdge(null);return}let activeTab=getTabElement(activeTabValue);if(activeTab==null){setPreviousTabEdge(null);return}let{left,top:top$1}=getInset(activeTab,tabsListElement);setPreviousTabEdge(orientation===`horizontal`?left:top$1)},[orientation,getTabElement,tabsListElement,activeTabValue]),import_react.useCallback(newValue=>{if(newValue===activeTabValue)return`none`;if(newValue==null)return setPreviousTabEdge(null),`none`;if(newValue!=null&&tabsListElement!=null){let activeTabElement=getTabElement(newValue);if(activeTabElement!=null){let{left,top:top$1}=getInset(activeTabElement,tabsListElement);if(previousTabEdge==null)return setPreviousTabEdge(orientation===`horizontal`?left:top$1),`none`;if(orientation===`horizontal`){if(left<previousTabEdge)return setPreviousTabEdge(left),`left`;if(left>previousTabEdge)return setPreviousTabEdge(left),`right`}else if(top$1<previousTabEdge)return setPreviousTabEdge(top$1),`up`;else if(top$1>previousTabEdge)return setPreviousTabEdge(top$1),`down`}}return`none`},[getTabElement,orientation,previousTabEdge,tabsListElement,activeTabValue])}function Tabs({className,...props}){return(0,import_jsx_runtime.jsx)(TabsRoot,{className:cn(`flex flex-col gap-2 data-[orientation=vertical]:flex-row`,className),"data-slot":`tabs`,...props})}function TabsList({variant=`default`,className,children,...props}){return(0,import_jsx_runtime.jsxs)(TabsList$1,{className:cn(`relative z-0 flex w-fit items-center justify-center gap-x-0.5 text-muted-foreground`,`data-[orientation=vertical]:flex-col`,variant===`default`?`rounded-lg bg-muted p-0.5 text-muted-foreground/72`:`data-[orientation=vertical]:px-1 data-[orientation=horizontal]:py-1 *:data-[slot=tabs-trigger]:hover:bg-accent`,className),"data-slot":`tabs-list`,...props,children:[children,(0,import_jsx_runtime.jsx)(TabsIndicator,{className:cn(`-translate-y-(--active-tab-bottom) absolute bottom-0 left-0 h-(--active-tab-height) w-(--active-tab-width) translate-x-(--active-tab-left) transition-[width,translate] duration-200 ease-in-out`,variant===`underline`?`data-[orientation=vertical]:-translate-x-px z-10 bg-primary data-[orientation=horizontal]:h-0.5 data-[orientation=vertical]:w-0.5 data-[orientation=horizontal]:translate-y-px`:`-z-1 rounded-md bg-background shadow-sm dark:bg-accent`),"data-slot":`tab-indicator`})]})}function TabsTab({className,...props}){return(0,import_jsx_runtime.jsx)(TabsTab$1,{className:cn(`[&_svg]:-mx-0.5 flex shrink-0 grow cursor-pointer items-center justify-center whitespace-nowrap rounded-md border border-transparent font-medium text-base outline-none transition-[color,background-color,box-shadow] focus-visible:ring-2 focus-visible:ring-ring data-disabled:pointer-events-none data-disabled:opacity-64 sm:text-sm [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0`,`hover:text-muted-foreground data-active:text-foreground`,`h-9 gap-1.5 px-[calc(--spacing(2.5)-1px)] sm:h-8`,`data-[orientation=vertical]:w-full data-[orientation=vertical]:justify-start`,className),"data-slot":`tabs-trigger`,...props})}function TabsPanel({className,...props}){return(0,import_jsx_runtime.jsx)(TabsPanel$1,{className:cn(`flex-1 outline-none`,className),"data-slot":`tabs-content`,...props})}function TableSchemaContent({connectionId,schema,table:table$1,onNewQuery}){let[visitedTabs,setVisitedTabs]=(0,import_react.useState)(new Set([`columns`])),handleTabChange=value=>{setVisitedTabs(prev=>new Set(prev).add(value))},{data:columns,isLoading:columnsLoading}=useColumns(connectionId,schema,table$1),{data:tableInfo,isLoading:tableInfoLoading}=useTableInfo(connectionId,schema,table$1),{data:indexes,isLoading:indexesLoading}=useIndexes(connectionId,schema,table$1,visitedTabs.has(`indexes`)),{data:constraints,isLoading:constraintsLoading}=useConstraints(connectionId,schema,table$1,visitedTabs.has(`constraints`)),{data:triggers,isLoading:triggersLoading}=useTriggers(connectionId,schema,table$1,visitedTabs.has(`triggers`)),{data:policies,isLoading:policiesLoading}=usePolicies(connectionId,schema,table$1,visitedTabs.has(`policies`)),{data:grants,isLoading:grantsLoading}=useGrants(connectionId,schema,table$1,visitedTabs.has(`grants`)),handleNewQuery=()=>{onNewQuery?.(`SELECT * FROM "${schema}"."${table$1}" LIMIT 100;`)},kind=tableInfo?.kind||`table`;return(0,import_jsx_runtime.jsx)(ScrollArea,{className:`h-full`,children:(0,import_jsx_runtime.jsxs)(`div`,{className:`p-4 space-y-6`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(`h1`,{className:`text-lg font-semibold`,children:table$1}),(0,import_jsx_runtime.jsx)(Badge,{variant:`secondary`,children:schema}),(0,import_jsx_runtime.jsx)(Badge,{variant:`muted`,children:getKindLabel(kind)}),(0,import_jsx_runtime.jsx)(Button,{variant:`outline`,size:`xs`,onClick:handleNewQuery,children:`New Query`})]}),(0,import_jsx_runtime.jsx)(`section`,{children:tableInfoLoading?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`Loading...`}):tableInfo?(0,import_jsx_runtime.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-4 text-sm`,children:[(0,import_jsx_runtime.jsx)(InfoItem,{label:`Owner`,value:tableInfo.owner}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Rows (est.)`,value:formatRowCount(tableInfo.rowCount)}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Total Size`,value:formatBytes(tableInfo.totalSize)}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Table Size`,value:formatBytes(tableInfo.tableSize)}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Index Size`,value:formatBytes(tableInfo.indexSize)}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Encoding`,value:tableInfo.encoding}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Collation`,value:tableInfo.collation}),tableInfo.comment&&(0,import_jsx_runtime.jsxs)(`div`,{className:`col-span-2 md:col-span-4`,children:[(0,import_jsx_runtime.jsx)(`div`,{className:`text-gray-500`,children:`Comment`}),(0,import_jsx_runtime.jsx)(`div`,{children:tableInfo.comment})]})]}):null}),(0,import_jsx_runtime.jsxs)(Tabs,{defaultValue:`columns`,className:`flex-1`,onValueChange:value=>handleTabChange(value),children:[(0,import_jsx_runtime.jsxs)(TabsList,{variant:`underline`,children:[(0,import_jsx_runtime.jsx)(TabsTab,{value:`columns`,children:`Columns`}),(0,import_jsx_runtime.jsx)(TabsTab,{value:`indexes`,children:`Indexes`}),(0,import_jsx_runtime.jsx)(TabsTab,{value:`constraints`,children:`Constraints`}),(0,import_jsx_runtime.jsx)(TabsTab,{value:`triggers`,children:`Triggers`}),(0,import_jsx_runtime.jsx)(TabsTab,{value:`policies`,children:`Policies`}),(0,import_jsx_runtime.jsx)(TabsTab,{value:`grants`,children:`Grants`})]}),(0,import_jsx_runtime.jsx)(TabsPanel,{value:`columns`,className:`pt-4`,children:(0,import_jsx_runtime.jsx)(ColumnsTable,{columns,isLoading:columnsLoading})}),(0,import_jsx_runtime.jsx)(TabsPanel,{value:`indexes`,className:`pt-4`,children:(0,import_jsx_runtime.jsx)(IndexesTable,{indexes,isLoading:indexesLoading})}),(0,import_jsx_runtime.jsx)(TabsPanel,{value:`constraints`,className:`pt-4`,children:(0,import_jsx_runtime.jsx)(ConstraintsTable,{constraints,isLoading:constraintsLoading})}),(0,import_jsx_runtime.jsx)(TabsPanel,{value:`triggers`,className:`pt-4`,children:(0,import_jsx_runtime.jsx)(TriggersTable,{triggers,isLoading:triggersLoading})}),(0,import_jsx_runtime.jsx)(TabsPanel,{value:`policies`,className:`pt-4`,children:(0,import_jsx_runtime.jsx)(PoliciesTable,{policies,isLoading:policiesLoading})}),(0,import_jsx_runtime.jsx)(TabsPanel,{value:`grants`,className:`pt-4`,children:(0,import_jsx_runtime.jsx)(GrantsTable,{grants,isLoading:grantsLoading})})]})]})})}function ViewSchemaContent({connectionId,schema,view,objectType,onNewQuery}){let{data:columns,isLoading:columnsLoading}=useColumns(connectionId,schema,view),{data:tableInfo,isLoading:tableInfoLoading}=useTableInfo(connectionId,schema,view),handleNewQuery=()=>{onNewQuery?.(`SELECT * FROM "${schema}"."${view}" LIMIT 100;`)},isMaterializedView=objectType===`materialized_view`,kind=tableInfo?.kind||objectType;return(0,import_jsx_runtime.jsx)(ScrollArea,{className:`h-full`,children:(0,import_jsx_runtime.jsxs)(`div`,{className:`p-4 space-y-6`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(`h1`,{className:`text-lg font-semibold`,children:view}),(0,import_jsx_runtime.jsx)(Badge,{variant:`secondary`,children:schema}),(0,import_jsx_runtime.jsx)(Badge,{variant:`muted`,children:getKindLabel(kind)}),(0,import_jsx_runtime.jsx)(Button,{variant:`outline`,size:`xs`,onClick:handleNewQuery,children:`New Query`})]}),(0,import_jsx_runtime.jsx)(`section`,{children:tableInfoLoading?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`Loading...`}):tableInfo?(0,import_jsx_runtime.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-4 text-sm`,children:[(0,import_jsx_runtime.jsx)(InfoItem,{label:`Owner`,value:tableInfo.owner}),isMaterializedView&&(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(InfoItem,{label:`Rows (est.)`,value:formatRowCount(tableInfo.rowCount)}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Total Size`,value:formatBytes(tableInfo.totalSize)}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Table Size`,value:formatBytes(tableInfo.tableSize)}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Index Size`,value:formatBytes(tableInfo.indexSize)})]}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Encoding`,value:tableInfo.encoding}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Collation`,value:tableInfo.collation}),tableInfo.comment&&(0,import_jsx_runtime.jsxs)(`div`,{className:`col-span-2 md:col-span-4`,children:[(0,import_jsx_runtime.jsx)(`div`,{className:`text-gray-500`,children:`Comment`}),(0,import_jsx_runtime.jsx)(`div`,{children:tableInfo.comment})]})]}):null}),(0,import_jsx_runtime.jsx)(`section`,{children:(0,import_jsx_runtime.jsx)(ColumnsTable,{columns,isLoading:columnsLoading})}),tableInfo?.definition&&(0,import_jsx_runtime.jsx)(SQLDefinition,{sql:tableInfo.definition})]})})}function FunctionArgumentList({arguments:args}){return args.length===0?(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm text-gray-500`,children:`No arguments`}):(0,import_jsx_runtime.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:args.map((arg,index$4)=>(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-1.5 text-sm`,children:[(0,import_jsx_runtime.jsx)(`span`,{className:`font-medium text-gray-700`,children:arg.name||`$${index$4+1}`}),(0,import_jsx_runtime.jsx)(`span`,{className:`px-1.5 py-0.5 bg-gray-100 rounded text-gray-600`,children:arg.type}),arg.mode&&(0,import_jsx_runtime.jsxs)(`span`,{className:`text-gray-400`,children:[`(`,arg.mode,`)`]}),arg.defaultValue&&(0,import_jsx_runtime.jsxs)(`span`,{className:`text-gray-400`,children:[`= `,arg.defaultValue]})]},arg.name||`arg_${index$4}`))})}var HoverSlotStyles={position:`absolute`,top:0,bottom:0,textAlign:`center`},DIFFS_TAG_NAME=`diffs-container`,COMMIT_METADATA_SPLIT=/(?=^From [a-f0-9]+ .+$)/m,GIT_DIFF_FILE_BREAK_REGEX=/(?=^diff --git)/gm,UNIFIED_DIFF_FILE_BREAK_REGEX=/(?=^---\s+\S)/gm,FILE_CONTEXT_BLOB=/(?=^@@ )/gm,HUNK_HEADER=/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@(?: (.*))?/m,SPLIT_WITH_NEWLINES=RegExp(`(?<=\\n)`,``),FILENAME_HEADER_REGEX=/^(---|\+\+\+)\s+([^\t\r\n]+)/,FILENAME_HEADER_REGEX_GIT=/^(---|\+\+\+)\s+[ab]\/([^\t\r\n]+)/,ALTERNATE_FILE_NAMES_GIT=/^diff --git (?:"a\/(.+?)"|a\/(.+?)) (?:"b\/(.+?)"|b\/(.+?))$/,FILE_MODE_FROM_INDEX=/^index (?:[0-9a-f]+)\.\.(?:[0-9a-f]+)(?: (\d+))?/,HEADER_METADATA_SLOT_ID=`header-metadata`,DEFAULT_THEMES={dark:`pierre-dark`,light:`pierre-light`},UNSAFE_CSS_ATTRIBUTE=`data-unsafe-css`;function getLineAnnotationName(annotation){return`annotation-${`side`in annotation?`${annotation.side}-`:``}${annotation.lineNumber}`}function templateRender(children,__html){return typeof window>`u`&&__html!=null?(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(`template`,{shadowrootmode:`open`,dangerouslySetInnerHTML:{__html}}),children]}):(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children})}var ResolvedThemes=new Map,ResolvingThemes=new Map,RegisteredCustomThemes=new Map,AttachedThemes=new Set;function attachResolvedThemes(themes,highlighter$1){themes=Array.isArray(themes)?themes:[themes];for(let themeRef of themes){let resolvedTheme;if(typeof themeRef==`string`){if(resolvedTheme=ResolvedThemes.get(themeRef),resolvedTheme==null)throw Error(`loadResolvedThemes: ${themeRef} is not resolved, you must resolve it before calling loadResolvedThemes`)}else resolvedTheme=themeRef,themeRef=themeRef.name,ResolvedThemes.has(themeRef)||ResolvedThemes.set(themeRef,resolvedTheme);AttachedThemes.has(themeRef)||(AttachedThemes.add(themeRef),highlighter$1.loadThemeSync(resolvedTheme))}}var ResolvedLanguages=new Map,ResolvingLanguages=new Map,AttachedLanguages=new Set;function attachResolvedLanguages(resolvedLanguages,highlighter$1){resolvedLanguages=Array.isArray(resolvedLanguages)?resolvedLanguages:[resolvedLanguages];for(let resolvedLang of resolvedLanguages){if(AttachedLanguages.has(resolvedLang.name))continue;let lang=ResolvedLanguages.get(resolvedLang.name);lang??(lang=resolvedLang,ResolvedLanguages.set(resolvedLang.name,lang)),AttachedLanguages.add(lang.name),highlighter$1.loadLanguageSync(lang.data)}}function isWorkerContext(){return typeof WorkerGlobalScope<`u`&&typeof self<`u`&&self instanceof WorkerGlobalScope}var ShikiError$1=class extends Error{constructor(message){super(message),this.name=`ShikiError`}};function clone(something){return doClone(something)}function doClone(something){return Array.isArray(something)?cloneArray(something):something instanceof RegExp?something:typeof something==`object`?cloneObj(something):something}function cloneArray(arr){let r$4=[];for(let i$3=0,len=arr.length;i$3<len;i$3++)r$4[i$3]=doClone(arr[i$3]);return r$4}function cloneObj(obj){let r$4={};for(let key$1 in obj)r$4[key$1]=doClone(obj[key$1]);return r$4}function mergeObjects(target,...sources){return sources.forEach(source=>{for(let key$1 in source)target[key$1]=source[key$1]}),target}function basename(path){let idx=~path.lastIndexOf(`/`)||~path.lastIndexOf(`\\`);return idx===0?path:~idx===path.length-1?basename(path.substring(0,path.length-1)):path.substr(~idx+1)}var CAPTURING_REGEX_SOURCE=/\$(\d+)|\${(\d+):\/(downcase|upcase)}/g,RegexSource=class{static hasCaptures(regexSource){return regexSource===null?!1:(CAPTURING_REGEX_SOURCE.lastIndex=0,CAPTURING_REGEX_SOURCE.test(regexSource))}static replaceCaptures(regexSource,captureSource,captureIndices){return regexSource.replace(CAPTURING_REGEX_SOURCE,(match,index$4,commandIndex,command$1)=>{let capture=captureIndices[parseInt(index$4||commandIndex,10)];if(capture){let result=captureSource.substring(capture.start,capture.end);for(;result[0]===`.`;)result=result.substring(1);switch(command$1){case`downcase`:return result.toLowerCase();case`upcase`:return result.toUpperCase();default:return result}}else return match})}};function strcmp(a$1,b$2){return a$1<b$2?-1:a$1>b$2?1:0}function strArrCmp(a$1,b$2){if(a$1===null&&b$2===null)return 0;if(!a$1)return-1;if(!b$2)return 1;let len1=a$1.length,len2=b$2.length;if(len1===len2){for(let i$3=0;i$3<len1;i$3++){let res=strcmp(a$1[i$3],b$2[i$3]);if(res!==0)return res}return 0}return len1-len2}function isValidHexColor(hex){return!!(/^#[0-9a-f]{6}$/i.test(hex)||/^#[0-9a-f]{8}$/i.test(hex)||/^#[0-9a-f]{3}$/i.test(hex)||/^#[0-9a-f]{4}$/i.test(hex))}function escapeRegExpCharacters(value){return value.replace(/[\-\\\{\}\*\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,`\\$&`)}var CachedFn=class{constructor(fn){this.fn=fn}cache=new Map;get(key$1){if(this.cache.has(key$1))return this.cache.get(key$1);let value=this.fn(key$1);return this.cache.set(key$1,value),value}},Theme=class{constructor(_colorMap,_defaults,_root){this._colorMap=_colorMap,this._defaults=_defaults,this._root=_root}static createFromRawTheme(source,colorMap){return this.createFromParsedTheme(parseTheme(source),colorMap)}static createFromParsedTheme(source,colorMap){return resolveParsedThemeRules(source,colorMap)}_cachedMatchRoot=new CachedFn(scopeName=>this._root.match(scopeName));getColorMap(){return this._colorMap.getColorMap()}getDefaults(){return this._defaults}match(scopePath){if(scopePath===null)return this._defaults;let scopeName=scopePath.scopeName,effectiveRule=this._cachedMatchRoot.get(scopeName).find(v$1=>_scopePathMatchesParentScopes(scopePath.parent,v$1.parentScopes));return effectiveRule?new StyleAttributes(effectiveRule.fontStyle,effectiveRule.foreground,effectiveRule.background):null}},ScopeStack=class _ScopeStack{constructor(parent,scopeName){this.parent=parent,this.scopeName=scopeName}static push(path,scopeNames){for(let name$2 of scopeNames)path=new _ScopeStack(path,name$2);return path}static from(...segments){let result=null;for(let i$3=0;i$3<segments.length;i$3++)result=new _ScopeStack(result,segments[i$3]);return result}push(scopeName){return new _ScopeStack(this,scopeName)}getSegments(){let item=this,result=[];for(;item;)result.push(item.scopeName),item=item.parent;return result.reverse(),result}toString(){return this.getSegments().join(` `)}extends(other){return this===other?!0:this.parent===null?!1:this.parent.extends(other)}getExtensionIfDefined(base$1){let result=[],item=this;for(;item&&item!==base$1;)result.push(item.scopeName),item=item.parent;return item===base$1?result.reverse():void 0}};function _scopePathMatchesParentScopes(scopePath,parentScopes){if(parentScopes.length===0)return!0;for(let index$4=0;index$4<parentScopes.length;index$4++){let scopePattern=parentScopes[index$4],scopeMustMatch=!1;if(scopePattern===`>`){if(index$4===parentScopes.length-1)return!1;scopePattern=parentScopes[++index$4],scopeMustMatch=!0}for(;scopePath&&!_matchesScope(scopePath.scopeName,scopePattern);){if(scopeMustMatch)return!1;scopePath=scopePath.parent}if(!scopePath)return!1;scopePath=scopePath.parent}return!0}function _matchesScope(scopeName,scopePattern){return scopePattern===scopeName||scopeName.startsWith(scopePattern)&&scopeName[scopePattern.length]===`.`}var StyleAttributes=class{constructor(fontStyle,foregroundId,backgroundId){this.fontStyle=fontStyle,this.foregroundId=foregroundId,this.backgroundId=backgroundId}};function parseTheme(source){if(!source||!source.settings||!Array.isArray(source.settings))return[];let settings=source.settings,result=[],resultLen=0;for(let i$3=0,len=settings.length;i$3<len;i$3++){let entry=settings[i$3];if(!entry.settings)continue;let scopes;if(typeof entry.scope==`string`){let _scope=entry.scope;_scope=_scope.replace(/^[,]+/,``),_scope=_scope.replace(/[,]+$/,``),scopes=_scope.split(`,`)}else scopes=Array.isArray(entry.scope)?entry.scope:[``];let fontStyle=-1;if(typeof entry.settings.fontStyle==`string`){fontStyle=0;let segments=entry.settings.fontStyle.split(` `);for(let j$1=0,lenJ=segments.length;j$1<lenJ;j$1++)switch(segments[j$1]){case`italic`:fontStyle|=1;break;case`bold`:fontStyle|=2;break;case`underline`:fontStyle|=4;break;case`strikethrough`:fontStyle|=8;break}}let foreground=null;typeof entry.settings.foreground==`string`&&isValidHexColor(entry.settings.foreground)&&(foreground=entry.settings.foreground);let background=null;typeof entry.settings.background==`string`&&isValidHexColor(entry.settings.background)&&(background=entry.settings.background);for(let j$1=0,lenJ=scopes.length;j$1<lenJ;j$1++){let segments=scopes[j$1].trim().split(` `),scope=segments[segments.length-1],parentScopes=null;segments.length>1&&(parentScopes=segments.slice(0,segments.length-1),parentScopes.reverse()),result[resultLen++]=new ParsedThemeRule(scope,parentScopes,i$3,fontStyle,foreground,background)}}return result}var ParsedThemeRule=class{constructor(scope,parentScopes,index$4,fontStyle,foreground,background){this.scope=scope,this.parentScopes=parentScopes,this.index=index$4,this.fontStyle=fontStyle,this.foreground=foreground,this.background=background}},FontStyle=(FontStyle2=>(FontStyle2[FontStyle2.NotSet=-1]=`NotSet`,FontStyle2[FontStyle2.None=0]=`None`,FontStyle2[FontStyle2.Italic=1]=`Italic`,FontStyle2[FontStyle2.Bold=2]=`Bold`,FontStyle2[FontStyle2.Underline=4]=`Underline`,FontStyle2[FontStyle2.Strikethrough=8]=`Strikethrough`,FontStyle2))(FontStyle||{});function resolveParsedThemeRules(parsedThemeRules,_colorMap){parsedThemeRules.sort((a$1,b$2)=>{let r$4=strcmp(a$1.scope,b$2.scope);return r$4!==0||(r$4=strArrCmp(a$1.parentScopes,b$2.parentScopes),r$4!==0)?r$4:a$1.index-b$2.index});let defaultFontStyle=0,defaultForeground=`#000000`,defaultBackground=`#ffffff`;for(;parsedThemeRules.length>=1&&parsedThemeRules[0].scope===``;){let incomingDefaults=parsedThemeRules.shift();incomingDefaults.fontStyle!==-1&&(defaultFontStyle=incomingDefaults.fontStyle),incomingDefaults.foreground!==null&&(defaultForeground=incomingDefaults.foreground),incomingDefaults.background!==null&&(defaultBackground=incomingDefaults.background)}let colorMap=new ColorMap(_colorMap),defaults$2=new StyleAttributes(defaultFontStyle,colorMap.getId(defaultForeground),colorMap.getId(defaultBackground)),root$4=new ThemeTrieElement(new ThemeTrieElementRule(0,null,-1,0,0),[]);for(let i$3=0,len=parsedThemeRules.length;i$3<len;i$3++){let rule=parsedThemeRules[i$3];root$4.insert(0,rule.scope,rule.parentScopes,rule.fontStyle,colorMap.getId(rule.foreground),colorMap.getId(rule.background))}return new Theme(colorMap,defaults$2,root$4)}var ColorMap=class{_isFrozen;_lastColorId;_id2color;_color2id;constructor(_colorMap){if(this._lastColorId=0,this._id2color=[],this._color2id=Object.create(null),Array.isArray(_colorMap)){this._isFrozen=!0;for(let i$3=0,len=_colorMap.length;i$3<len;i$3++)this._color2id[_colorMap[i$3]]=i$3,this._id2color[i$3]=_colorMap[i$3]}else this._isFrozen=!1}getId(color$1){if(color$1===null)return 0;color$1=color$1.toUpperCase();let value=this._color2id[color$1];if(value)return value;if(this._isFrozen)throw Error(`Missing color in color map - ${color$1}`);return value=++this._lastColorId,this._color2id[color$1]=value,this._id2color[value]=color$1,value}getColorMap(){return this._id2color.slice(0)}},emptyParentScopes=Object.freeze([]),ThemeTrieElementRule=class _ThemeTrieElementRule{scopeDepth;parentScopes;fontStyle;foreground;background;constructor(scopeDepth,parentScopes,fontStyle,foreground,background){this.scopeDepth=scopeDepth,this.parentScopes=parentScopes||emptyParentScopes,this.fontStyle=fontStyle,this.foreground=foreground,this.background=background}clone(){return new _ThemeTrieElementRule(this.scopeDepth,this.parentScopes,this.fontStyle,this.foreground,this.background)}static cloneArr(arr){let r$4=[];for(let i$3=0,len=arr.length;i$3<len;i$3++)r$4[i$3]=arr[i$3].clone();return r$4}acceptOverwrite(scopeDepth,fontStyle,foreground,background){this.scopeDepth>scopeDepth?console.log(`how did this happen?`):this.scopeDepth=scopeDepth,fontStyle!==-1&&(this.fontStyle=fontStyle),foreground!==0&&(this.foreground=foreground),background!==0&&(this.background=background)}},ThemeTrieElement=class _ThemeTrieElement{constructor(_mainRule,rulesWithParentScopes=[],_children={}){this._mainRule=_mainRule,this._children=_children,this._rulesWithParentScopes=rulesWithParentScopes}_rulesWithParentScopes;static _cmpBySpecificity(a$1,b$2){if(a$1.scopeDepth!==b$2.scopeDepth)return b$2.scopeDepth-a$1.scopeDepth;let aParentIndex=0,bParentIndex=0;for(;a$1.parentScopes[aParentIndex]===`>`&&aParentIndex++,b$2.parentScopes[bParentIndex]===`>`&&bParentIndex++,!(aParentIndex>=a$1.parentScopes.length||bParentIndex>=b$2.parentScopes.length);){let parentScopeLengthDiff=b$2.parentScopes[bParentIndex].length-a$1.parentScopes[aParentIndex].length;if(parentScopeLengthDiff!==0)return parentScopeLengthDiff;aParentIndex++,bParentIndex++}return b$2.parentScopes.length-a$1.parentScopes.length}match(scope){if(scope!==``){let dotIndex=scope.indexOf(`.`),head$1,tail;if(dotIndex===-1?(head$1=scope,tail=``):(head$1=scope.substring(0,dotIndex),tail=scope.substring(dotIndex+1)),this._children.hasOwnProperty(head$1))return this._children[head$1].match(tail)}let rules=this._rulesWithParentScopes.concat(this._mainRule);return rules.sort(_ThemeTrieElement._cmpBySpecificity),rules}insert(scopeDepth,scope,parentScopes,fontStyle,foreground,background){if(scope===``){this._doInsertHere(scopeDepth,parentScopes,fontStyle,foreground,background);return}let dotIndex=scope.indexOf(`.`),head$1,tail;dotIndex===-1?(head$1=scope,tail=``):(head$1=scope.substring(0,dotIndex),tail=scope.substring(dotIndex+1));let child;this._children.hasOwnProperty(head$1)?child=this._children[head$1]:(child=new _ThemeTrieElement(this._mainRule.clone(),ThemeTrieElementRule.cloneArr(this._rulesWithParentScopes)),this._children[head$1]=child),child.insert(scopeDepth+1,tail,parentScopes,fontStyle,foreground,background)}_doInsertHere(scopeDepth,parentScopes,fontStyle,foreground,background){if(parentScopes===null){this._mainRule.acceptOverwrite(scopeDepth,fontStyle,foreground,background);return}for(let i$3=0,len=this._rulesWithParentScopes.length;i$3<len;i$3++){let rule=this._rulesWithParentScopes[i$3];if(strArrCmp(rule.parentScopes,parentScopes)===0){rule.acceptOverwrite(scopeDepth,fontStyle,foreground,background);return}}fontStyle===-1&&(fontStyle=this._mainRule.fontStyle),foreground===0&&(foreground=this._mainRule.foreground),background===0&&(background=this._mainRule.background),this._rulesWithParentScopes.push(new ThemeTrieElementRule(scopeDepth,parentScopes,fontStyle,foreground,background))}},EncodedTokenMetadata=class _EncodedTokenMetadata{static toBinaryStr(encodedTokenAttributes){return encodedTokenAttributes.toString(2).padStart(32,`0`)}static print(encodedTokenAttributes){let languageId=_EncodedTokenMetadata.getLanguageId(encodedTokenAttributes),tokenType=_EncodedTokenMetadata.getTokenType(encodedTokenAttributes),fontStyle=_EncodedTokenMetadata.getFontStyle(encodedTokenAttributes),foreground=_EncodedTokenMetadata.getForeground(encodedTokenAttributes),background=_EncodedTokenMetadata.getBackground(encodedTokenAttributes);console.log({languageId,tokenType,fontStyle,foreground,background})}static getLanguageId(encodedTokenAttributes){return(encodedTokenAttributes&255)>>>0}static getTokenType(encodedTokenAttributes){return(encodedTokenAttributes&768)>>>8}static containsBalancedBrackets(encodedTokenAttributes){return(encodedTokenAttributes&1024)!=0}static getFontStyle(encodedTokenAttributes){return(encodedTokenAttributes&30720)>>>11}static getForeground(encodedTokenAttributes){return(encodedTokenAttributes&16744448)>>>15}static getBackground(encodedTokenAttributes){return(encodedTokenAttributes&4278190080)>>>24}static set(encodedTokenAttributes,languageId,tokenType,containsBalancedBrackets,fontStyle,foreground,background){let _languageId=_EncodedTokenMetadata.getLanguageId(encodedTokenAttributes),_tokenType=_EncodedTokenMetadata.getTokenType(encodedTokenAttributes),_containsBalancedBracketsBit=_EncodedTokenMetadata.containsBalancedBrackets(encodedTokenAttributes)?1:0,_fontStyle=_EncodedTokenMetadata.getFontStyle(encodedTokenAttributes),_foreground=_EncodedTokenMetadata.getForeground(encodedTokenAttributes),_background=_EncodedTokenMetadata.getBackground(encodedTokenAttributes);return languageId!==0&&(_languageId=languageId),tokenType!==8&&(_tokenType=fromOptionalTokenType(tokenType)),containsBalancedBrackets!==null&&(_containsBalancedBracketsBit=containsBalancedBrackets?1:0),fontStyle!==-1&&(_fontStyle=fontStyle),foreground!==0&&(_foreground=foreground),background!==0&&(_background=background),(_languageId<<0|_tokenType<<8|_containsBalancedBracketsBit<<10|_fontStyle<<11|_foreground<<15|_background<<24)>>>0}};function toOptionalTokenType(standardType){return standardType}function fromOptionalTokenType(standardType){return standardType}function createMatchers(selector,matchesName){let results=[],tokenizer=newTokenizer(selector),token$1=tokenizer.next();for(;token$1!==null;){let priority=0;if(token$1.length===2&&token$1.charAt(1)===`:`){switch(token$1.charAt(0)){case`R`:priority=1;break;case`L`:priority=-1;break;default:console.log(`Unknown priority ${token$1} in scope selector`)}token$1=tokenizer.next()}let matcher=parseConjunction();if(results.push({matcher,priority}),token$1!==`,`)break;token$1=tokenizer.next()}return results;function parseOperand(){if(token$1===`-`){token$1=tokenizer.next();let expressionToNegate=parseOperand();return matcherInput=>!!expressionToNegate&&!expressionToNegate(matcherInput)}if(token$1===`(`){token$1=tokenizer.next();let expressionInParents=parseInnerExpression();return token$1===`)`&&(token$1=tokenizer.next()),expressionInParents}if(isIdentifier(token$1)){let identifiers=[];do identifiers.push(token$1),token$1=tokenizer.next();while(isIdentifier(token$1));return matcherInput=>matchesName(identifiers,matcherInput)}return null}function parseConjunction(){let matchers=[],matcher=parseOperand();for(;matcher;)matchers.push(matcher),matcher=parseOperand();return matcherInput=>matchers.every(matcher2=>matcher2(matcherInput))}function parseInnerExpression(){let matchers=[],matcher=parseConjunction();for(;matcher&&(matchers.push(matcher),token$1===`|`||token$1===`,`);){do token$1=tokenizer.next();while(token$1===`|`||token$1===`,`);matcher=parseConjunction()}return matcherInput=>matchers.some(matcher2=>matcher2(matcherInput))}}function isIdentifier(token$1){return!!token$1&&!!token$1.match(/[\w\.:]+/)}function newTokenizer(input){let regex=/([LR]:|[\w\.:][\w\.:\-]*|[\,\|\-\(\)])/g,match=regex.exec(input);return{next:()=>{if(!match)return null;let res=match[0];return match=regex.exec(input),res}}}function disposeOnigString(str){typeof str.dispose==`function`&&str.dispose()}var TopLevelRuleReference=class{constructor(scopeName){this.scopeName=scopeName}toKey(){return this.scopeName}},TopLevelRepositoryRuleReference=class{constructor(scopeName,ruleName){this.scopeName=scopeName,this.ruleName=ruleName}toKey(){return`${this.scopeName}#${this.ruleName}`}},ExternalReferenceCollector=class{_references=[];_seenReferenceKeys=new Set;get references(){return this._references}visitedRule=new Set;add(reference){let key$1=reference.toKey();this._seenReferenceKeys.has(key$1)||(this._seenReferenceKeys.add(key$1),this._references.push(reference))}},ScopeDependencyProcessor=class{constructor(repo,initialScopeName){this.repo=repo,this.initialScopeName=initialScopeName,this.seenFullScopeRequests.add(this.initialScopeName),this.Q=[new TopLevelRuleReference(this.initialScopeName)]}seenFullScopeRequests=new Set;seenPartialScopeRequests=new Set;Q;processQueue(){let q$1=this.Q;this.Q=[];let deps=new ExternalReferenceCollector;for(let dep of q$1)collectReferencesOfReference(dep,this.initialScopeName,this.repo,deps);for(let dep of deps.references)if(dep instanceof TopLevelRuleReference){if(this.seenFullScopeRequests.has(dep.scopeName))continue;this.seenFullScopeRequests.add(dep.scopeName),this.Q.push(dep)}else{if(this.seenFullScopeRequests.has(dep.scopeName)||this.seenPartialScopeRequests.has(dep.toKey()))continue;this.seenPartialScopeRequests.add(dep.toKey()),this.Q.push(dep)}}};function collectReferencesOfReference(reference,baseGrammarScopeName,repo,result){let selfGrammar=repo.lookup(reference.scopeName);if(!selfGrammar){if(reference.scopeName===baseGrammarScopeName)throw Error(`No grammar provided for <${baseGrammarScopeName}>`);return}let baseGrammar=repo.lookup(baseGrammarScopeName);reference instanceof TopLevelRuleReference?collectExternalReferencesInTopLevelRule({baseGrammar,selfGrammar},result):collectExternalReferencesInTopLevelRepositoryRule(reference.ruleName,{baseGrammar,selfGrammar,repository:selfGrammar.repository},result);let injections=repo.injections(reference.scopeName);if(injections)for(let injection of injections)result.add(new TopLevelRuleReference(injection))}function collectExternalReferencesInTopLevelRepositoryRule(ruleName,context,result){if(context.repository&&context.repository[ruleName]){let rule=context.repository[ruleName];collectExternalReferencesInRules([rule],context,result)}}function collectExternalReferencesInTopLevelRule(context,result){context.selfGrammar.patterns&&Array.isArray(context.selfGrammar.patterns)&&collectExternalReferencesInRules(context.selfGrammar.patterns,{...context,repository:context.selfGrammar.repository},result),context.selfGrammar.injections&&collectExternalReferencesInRules(Object.values(context.selfGrammar.injections),{...context,repository:context.selfGrammar.repository},result)}function collectExternalReferencesInRules(rules,context,result){for(let rule of rules){if(result.visitedRule.has(rule))continue;result.visitedRule.add(rule);let patternRepository=rule.repository?mergeObjects({},context.repository,rule.repository):context.repository;Array.isArray(rule.patterns)&&collectExternalReferencesInRules(rule.patterns,{...context,repository:patternRepository},result);let include=rule.include;if(!include)continue;let reference=parseInclude(include);switch(reference.kind){case 0:collectExternalReferencesInTopLevelRule({...context,selfGrammar:context.baseGrammar},result);break;case 1:collectExternalReferencesInTopLevelRule(context,result);break;case 2:collectExternalReferencesInTopLevelRepositoryRule(reference.ruleName,{...context,repository:patternRepository},result);break;case 3:case 4:let selfGrammar=reference.scopeName===context.selfGrammar.scopeName?context.selfGrammar:reference.scopeName===context.baseGrammar.scopeName?context.baseGrammar:void 0;if(selfGrammar){let newContext={baseGrammar:context.baseGrammar,selfGrammar,repository:patternRepository};reference.kind===4?collectExternalReferencesInTopLevelRepositoryRule(reference.ruleName,newContext,result):collectExternalReferencesInTopLevelRule(newContext,result)}else reference.kind===4?result.add(new TopLevelRepositoryRuleReference(reference.scopeName,reference.ruleName)):result.add(new TopLevelRuleReference(reference.scopeName));break}}}var BaseReference=class{kind=0},SelfReference=class{kind=1},RelativeReference=class{constructor(ruleName){this.ruleName=ruleName}kind=2},TopLevelReference=class{constructor(scopeName){this.scopeName=scopeName}kind=3},TopLevelRepositoryReference=class{constructor(scopeName,ruleName){this.scopeName=scopeName,this.ruleName=ruleName}kind=4};function parseInclude(include){if(include===`$base`)return new BaseReference;if(include===`$self`)return new SelfReference;let indexOfSharp=include.indexOf(`#`);return indexOfSharp===-1?new TopLevelReference(include):indexOfSharp===0?new RelativeReference(include.substring(1)):new TopLevelRepositoryReference(include.substring(0,indexOfSharp),include.substring(indexOfSharp+1))}var HAS_BACK_REFERENCES=/\\(\d+)/,BACK_REFERENCING_END=/\\(\d+)/g,endRuleId=-1,whileRuleId=-2;function ruleIdFromNumber(id){return id}function ruleIdToNumber(id){return id}var Rule=class{$location;id;_nameIsCapturing;_name;_contentNameIsCapturing;_contentName;constructor($location,id,name$2,contentName){this.$location=$location,this.id=id,this._name=name$2||null,this._nameIsCapturing=RegexSource.hasCaptures(this._name),this._contentName=contentName||null,this._contentNameIsCapturing=RegexSource.hasCaptures(this._contentName)}get debugName(){let location=this.$location?`${basename(this.$location.filename)}:${this.$location.line}`:`unknown`;return`${this.constructor.name}#${this.id} @ ${location}`}getName(lineText,captureIndices){return!this._nameIsCapturing||this._name===null||lineText===null||captureIndices===null?this._name:RegexSource.replaceCaptures(this._name,lineText,captureIndices)}getContentName(lineText,captureIndices){return!this._contentNameIsCapturing||this._contentName===null?this._contentName:RegexSource.replaceCaptures(this._contentName,lineText,captureIndices)}},CaptureRule=class extends Rule{retokenizeCapturedWithRuleId;constructor($location,id,name$2,contentName,retokenizeCapturedWithRuleId){super($location,id,name$2,contentName),this.retokenizeCapturedWithRuleId=retokenizeCapturedWithRuleId}dispose(){}collectPatterns(grammar,out){throw Error(`Not supported!`)}compile(grammar,endRegexSource){throw Error(`Not supported!`)}compileAG(grammar,endRegexSource,allowA,allowG){throw Error(`Not supported!`)}},MatchRule=class extends Rule{_match;captures;_cachedCompiledPatterns;constructor($location,id,name$2,match,captures){super($location,id,name$2,null),this._match=new RegExpSource(match,this.id),this.captures=captures,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&=(this._cachedCompiledPatterns.dispose(),null)}get debugMatchRegExp(){return`${this._match.source}`}collectPatterns(grammar,out){out.push(this._match)}compile(grammar,endRegexSource){return this._getCachedCompiledPatterns(grammar).compile(grammar)}compileAG(grammar,endRegexSource,allowA,allowG){return this._getCachedCompiledPatterns(grammar).compileAG(grammar,allowA,allowG)}_getCachedCompiledPatterns(grammar){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new RegExpSourceList,this.collectPatterns(grammar,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}},IncludeOnlyRule=class extends Rule{hasMissingPatterns;patterns;_cachedCompiledPatterns;constructor($location,id,name$2,contentName,patterns){super($location,id,name$2,contentName),this.patterns=patterns.patterns,this.hasMissingPatterns=patterns.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&=(this._cachedCompiledPatterns.dispose(),null)}collectPatterns(grammar,out){for(let pattern of this.patterns)grammar.getRule(pattern).collectPatterns(grammar,out)}compile(grammar,endRegexSource){return this._getCachedCompiledPatterns(grammar).compile(grammar)}compileAG(grammar,endRegexSource,allowA,allowG){return this._getCachedCompiledPatterns(grammar).compileAG(grammar,allowA,allowG)}_getCachedCompiledPatterns(grammar){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new RegExpSourceList,this.collectPatterns(grammar,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}},BeginEndRule=class extends Rule{_begin;beginCaptures;_end;endHasBackReferences;endCaptures;applyEndPatternLast;hasMissingPatterns;patterns;_cachedCompiledPatterns;constructor($location,id,name$2,contentName,begin,beginCaptures,end,endCaptures,applyEndPatternLast,patterns){super($location,id,name$2,contentName),this._begin=new RegExpSource(begin,this.id),this.beginCaptures=beginCaptures,this._end=new RegExpSource(end||`￿`,-1),this.endHasBackReferences=this._end.hasBackReferences,this.endCaptures=endCaptures,this.applyEndPatternLast=applyEndPatternLast||!1,this.patterns=patterns.patterns,this.hasMissingPatterns=patterns.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&=(this._cachedCompiledPatterns.dispose(),null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugEndRegExp(){return`${this._end.source}`}getEndWithResolvedBackReferences(lineText,captureIndices){return this._end.resolveBackReferences(lineText,captureIndices)}collectPatterns(grammar,out){out.push(this._begin)}compile(grammar,endRegexSource){return this._getCachedCompiledPatterns(grammar,endRegexSource).compile(grammar)}compileAG(grammar,endRegexSource,allowA,allowG){return this._getCachedCompiledPatterns(grammar,endRegexSource).compileAG(grammar,allowA,allowG)}_getCachedCompiledPatterns(grammar,endRegexSource){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new RegExpSourceList;for(let pattern of this.patterns)grammar.getRule(pattern).collectPatterns(grammar,this._cachedCompiledPatterns);this.applyEndPatternLast?this._cachedCompiledPatterns.push(this._end.hasBackReferences?this._end.clone():this._end):this._cachedCompiledPatterns.unshift(this._end.hasBackReferences?this._end.clone():this._end)}return this._end.hasBackReferences&&(this.applyEndPatternLast?this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length()-1,endRegexSource):this._cachedCompiledPatterns.setSource(0,endRegexSource)),this._cachedCompiledPatterns}},BeginWhileRule=class extends Rule{_begin;beginCaptures;whileCaptures;_while;whileHasBackReferences;hasMissingPatterns;patterns;_cachedCompiledPatterns;_cachedCompiledWhilePatterns;constructor($location,id,name$2,contentName,begin,beginCaptures,_while,whileCaptures,patterns){super($location,id,name$2,contentName),this._begin=new RegExpSource(begin,this.id),this.beginCaptures=beginCaptures,this.whileCaptures=whileCaptures,this._while=new RegExpSource(_while,whileRuleId),this.whileHasBackReferences=this._while.hasBackReferences,this.patterns=patterns.patterns,this.hasMissingPatterns=patterns.hasMissingPatterns,this._cachedCompiledPatterns=null,this._cachedCompiledWhilePatterns=null}dispose(){this._cachedCompiledPatterns&&=(this._cachedCompiledPatterns.dispose(),null),this._cachedCompiledWhilePatterns&&=(this._cachedCompiledWhilePatterns.dispose(),null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugWhileRegExp(){return`${this._while.source}`}getWhileWithResolvedBackReferences(lineText,captureIndices){return this._while.resolveBackReferences(lineText,captureIndices)}collectPatterns(grammar,out){out.push(this._begin)}compile(grammar,endRegexSource){return this._getCachedCompiledPatterns(grammar).compile(grammar)}compileAG(grammar,endRegexSource,allowA,allowG){return this._getCachedCompiledPatterns(grammar).compileAG(grammar,allowA,allowG)}_getCachedCompiledPatterns(grammar){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new RegExpSourceList;for(let pattern of this.patterns)grammar.getRule(pattern).collectPatterns(grammar,this._cachedCompiledPatterns)}return this._cachedCompiledPatterns}compileWhile(grammar,endRegexSource){return this._getCachedCompiledWhilePatterns(grammar,endRegexSource).compile(grammar)}compileWhileAG(grammar,endRegexSource,allowA,allowG){return this._getCachedCompiledWhilePatterns(grammar,endRegexSource).compileAG(grammar,allowA,allowG)}_getCachedCompiledWhilePatterns(grammar,endRegexSource){return this._cachedCompiledWhilePatterns||(this._cachedCompiledWhilePatterns=new RegExpSourceList,this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences?this._while.clone():this._while)),this._while.hasBackReferences&&this._cachedCompiledWhilePatterns.setSource(0,endRegexSource||`￿`),this._cachedCompiledWhilePatterns}},RuleFactory=class _RuleFactory{static createCaptureRule(helper,$location,name$2,contentName,retokenizeCapturedWithRuleId){return helper.registerRule(id=>new CaptureRule($location,id,name$2,contentName,retokenizeCapturedWithRuleId))}static getCompiledRuleId(desc,helper,repository){return desc.id||helper.registerRule(id=>{if(desc.id=id,desc.match)return new MatchRule(desc.$vscodeTextmateLocation,desc.id,desc.name,desc.match,_RuleFactory._compileCaptures(desc.captures,helper,repository));if(desc.begin===void 0){desc.repository&&(repository=mergeObjects({},repository,desc.repository));let patterns=desc.patterns;return patterns===void 0&&desc.include&&(patterns=[{include:desc.include}]),new IncludeOnlyRule(desc.$vscodeTextmateLocation,desc.id,desc.name,desc.contentName,_RuleFactory._compilePatterns(patterns,helper,repository))}return desc.while?new BeginWhileRule(desc.$vscodeTextmateLocation,desc.id,desc.name,desc.contentName,desc.begin,_RuleFactory._compileCaptures(desc.beginCaptures||desc.captures,helper,repository),desc.while,_RuleFactory._compileCaptures(desc.whileCaptures||desc.captures,helper,repository),_RuleFactory._compilePatterns(desc.patterns,helper,repository)):new BeginEndRule(desc.$vscodeTextmateLocation,desc.id,desc.name,desc.contentName,desc.begin,_RuleFactory._compileCaptures(desc.beginCaptures||desc.captures,helper,repository),desc.end,_RuleFactory._compileCaptures(desc.endCaptures||desc.captures,helper,repository),desc.applyEndPatternLast,_RuleFactory._compilePatterns(desc.patterns,helper,repository))}),desc.id}static _compileCaptures(captures,helper,repository){let r$4=[];if(captures){let maximumCaptureId=0;for(let captureId in captures){if(captureId===`$vscodeTextmateLocation`)continue;let numericCaptureId=parseInt(captureId,10);numericCaptureId>maximumCaptureId&&(maximumCaptureId=numericCaptureId)}for(let i$3=0;i$3<=maximumCaptureId;i$3++)r$4[i$3]=null;for(let captureId in captures){if(captureId===`$vscodeTextmateLocation`)continue;let numericCaptureId=parseInt(captureId,10),retokenizeCapturedWithRuleId=0;captures[captureId].patterns&&(retokenizeCapturedWithRuleId=_RuleFactory.getCompiledRuleId(captures[captureId],helper,repository)),r$4[numericCaptureId]=_RuleFactory.createCaptureRule(helper,captures[captureId].$vscodeTextmateLocation,captures[captureId].name,captures[captureId].contentName,retokenizeCapturedWithRuleId)}}return r$4}static _compilePatterns(patterns,helper,repository){let r$4=[];if(patterns)for(let i$3=0,len=patterns.length;i$3<len;i$3++){let pattern=patterns[i$3],ruleId=-1;if(pattern.include){let reference=parseInclude(pattern.include);switch(reference.kind){case 0:case 1:ruleId=_RuleFactory.getCompiledRuleId(repository[pattern.include],helper,repository);break;case 2:let localIncludedRule=repository[reference.ruleName];localIncludedRule&&(ruleId=_RuleFactory.getCompiledRuleId(localIncludedRule,helper,repository));break;case 3:case 4:let externalGrammarName=reference.scopeName,externalGrammarInclude=reference.kind===4?reference.ruleName:null,externalGrammar=helper.getExternalGrammar(externalGrammarName,repository);if(externalGrammar)if(externalGrammarInclude){let externalIncludedRule=externalGrammar.repository[externalGrammarInclude];externalIncludedRule&&(ruleId=_RuleFactory.getCompiledRuleId(externalIncludedRule,helper,externalGrammar.repository))}else ruleId=_RuleFactory.getCompiledRuleId(externalGrammar.repository.$self,helper,externalGrammar.repository);break}}else ruleId=_RuleFactory.getCompiledRuleId(pattern,helper,repository);if(ruleId!==-1){let rule=helper.getRule(ruleId),skipRule=!1;if((rule instanceof IncludeOnlyRule||rule instanceof BeginEndRule||rule instanceof BeginWhileRule)&&rule.hasMissingPatterns&&rule.patterns.length===0&&(skipRule=!0),skipRule)continue;r$4.push(ruleId)}}return{patterns:r$4,hasMissingPatterns:(patterns?patterns.length:0)!==r$4.length}}},RegExpSource=class _RegExpSource{source;ruleId;hasAnchor;hasBackReferences;_anchorCache;constructor(regExpSource,ruleId){if(regExpSource&&typeof regExpSource==`string`){let len=regExpSource.length,lastPushedPos=0,output=[],hasAnchor=!1;for(let pos=0;pos<len;pos++)if(regExpSource.charAt(pos)===`\\`&&pos+1<len){let nextCh=regExpSource.charAt(pos+1);nextCh===`z`?(output.push(regExpSource.substring(lastPushedPos,pos)),output.push(`$(?!\\n)(?<!\\n)`),lastPushedPos=pos+2):(nextCh===`A`||nextCh===`G`)&&(hasAnchor=!0),pos++}this.hasAnchor=hasAnchor,lastPushedPos===0?this.source=regExpSource:(output.push(regExpSource.substring(lastPushedPos,len)),this.source=output.join(``))}else this.hasAnchor=!1,this.source=regExpSource;this.hasAnchor?this._anchorCache=this._buildAnchorCache():this._anchorCache=null,this.ruleId=ruleId,typeof this.source==`string`?this.hasBackReferences=HAS_BACK_REFERENCES.test(this.source):this.hasBackReferences=!1}clone(){return new _RegExpSource(this.source,this.ruleId)}setSource(newSource){this.source!==newSource&&(this.source=newSource,this.hasAnchor&&(this._anchorCache=this._buildAnchorCache()))}resolveBackReferences(lineText,captureIndices){if(typeof this.source!=`string`)throw Error(`This method should only be called if the source is a string`);let capturedValues=captureIndices.map(capture=>lineText.substring(capture.start,capture.end));return BACK_REFERENCING_END.lastIndex=0,this.source.replace(BACK_REFERENCING_END,(match,g1)=>escapeRegExpCharacters(capturedValues[parseInt(g1,10)]||``))}_buildAnchorCache(){if(typeof this.source!=`string`)throw Error(`This method should only be called if the source is a string`);let A0_G0_result=[],A0_G1_result=[],A1_G0_result=[],A1_G1_result=[],pos,len,ch,nextCh;for(pos=0,len=this.source.length;pos<len;pos++)ch=this.source.charAt(pos),A0_G0_result[pos]=ch,A0_G1_result[pos]=ch,A1_G0_result[pos]=ch,A1_G1_result[pos]=ch,ch===`\\`&&pos+1<len&&(nextCh=this.source.charAt(pos+1),nextCh===`A`?(A0_G0_result[pos+1]=`￿`,A0_G1_result[pos+1]=`￿`,A1_G0_result[pos+1]=`A`,A1_G1_result[pos+1]=`A`):nextCh===`G`?(A0_G0_result[pos+1]=`￿`,A0_G1_result[pos+1]=`G`,A1_G0_result[pos+1]=`￿`,A1_G1_result[pos+1]=`G`):(A0_G0_result[pos+1]=nextCh,A0_G1_result[pos+1]=nextCh,A1_G0_result[pos+1]=nextCh,A1_G1_result[pos+1]=nextCh),pos++);return{A0_G0:A0_G0_result.join(``),A0_G1:A0_G1_result.join(``),A1_G0:A1_G0_result.join(``),A1_G1:A1_G1_result.join(``)}}resolveAnchors(allowA,allowG){return!this.hasAnchor||!this._anchorCache||typeof this.source!=`string`?this.source:allowA?allowG?this._anchorCache.A1_G1:this._anchorCache.A1_G0:allowG?this._anchorCache.A0_G1:this._anchorCache.A0_G0}},RegExpSourceList=class{_items;_hasAnchors;_cached;_anchorCache;constructor(){this._items=[],this._hasAnchors=!1,this._cached=null,this._anchorCache={A0_G0:null,A0_G1:null,A1_G0:null,A1_G1:null}}dispose(){this._disposeCaches()}_disposeCaches(){this._cached&&=(this._cached.dispose(),null),this._anchorCache.A0_G0&&(this._anchorCache.A0_G0.dispose(),this._anchorCache.A0_G0=null),this._anchorCache.A0_G1&&(this._anchorCache.A0_G1.dispose(),this._anchorCache.A0_G1=null),this._anchorCache.A1_G0&&(this._anchorCache.A1_G0.dispose(),this._anchorCache.A1_G0=null),this._anchorCache.A1_G1&&(this._anchorCache.A1_G1.dispose(),this._anchorCache.A1_G1=null)}push(item){this._items.push(item),this._hasAnchors=this._hasAnchors||item.hasAnchor}unshift(item){this._items.unshift(item),this._hasAnchors=this._hasAnchors||item.hasAnchor}length(){return this._items.length}setSource(index$4,newSource){this._items[index$4].source!==newSource&&(this._disposeCaches(),this._items[index$4].setSource(newSource))}compile(onigLib){return this._cached||=new CompiledRule(onigLib,this._items.map(e=>e.source),this._items.map(e=>e.ruleId)),this._cached}compileAG(onigLib,allowA,allowG){return this._hasAnchors?allowA?allowG?(this._anchorCache.A1_G1||(this._anchorCache.A1_G1=this._resolveAnchors(onigLib,allowA,allowG)),this._anchorCache.A1_G1):(this._anchorCache.A1_G0||(this._anchorCache.A1_G0=this._resolveAnchors(onigLib,allowA,allowG)),this._anchorCache.A1_G0):allowG?(this._anchorCache.A0_G1||(this._anchorCache.A0_G1=this._resolveAnchors(onigLib,allowA,allowG)),this._anchorCache.A0_G1):(this._anchorCache.A0_G0||(this._anchorCache.A0_G0=this._resolveAnchors(onigLib,allowA,allowG)),this._anchorCache.A0_G0):this.compile(onigLib)}_resolveAnchors(onigLib,allowA,allowG){return new CompiledRule(onigLib,this._items.map(e=>e.resolveAnchors(allowA,allowG)),this._items.map(e=>e.ruleId))}},CompiledRule=class{constructor(onigLib,regExps,rules){this.regExps=regExps,this.rules=rules,this.scanner=onigLib.createOnigScanner(regExps)}scanner;dispose(){typeof this.scanner.dispose==`function`&&this.scanner.dispose()}toString(){let r$4=[];for(let i$3=0,len=this.rules.length;i$3<len;i$3++)r$4.push(` - `+this.rules[i$3]+`: `+this.regExps[i$3]);return r$4.join(`
101
+ `),[stagedChanges]),[formattedSQL,setFormattedSQL]=(0,import_react.useState)(``);(0,import_react.useEffect)(()=>{async function formatAllSQL(){if(!allSQL){setFormattedSQL(``);return}try{setFormattedSQL(await formatSql(allSQL))}catch{setFormattedSQL(allSQL)}}formatAllSQL()},[allSQL]);let statementCount=(0,import_react.useMemo)(()=>stagedChanges.reduce((count,change)=>count+(generateSQL(change).match(/;/g)||[]).length,0),[stagedChanges]),handleExecuteAll=(0,import_react.useCallback)(async()=>{setExecutingAll(!0);try{await onExecuteAll(),toastManager.add({type:`success`,title:`All changes executed successfully`})}catch(error){toastManager.add({type:`error`,title:`Failed to execute changes`,description:error instanceof Error?error.message:`Unknown error`})}finally{setExecutingAll(!1)}},[onExecuteAll]);return(0,import_jsx_runtime.jsxs)(DialogRoot,{open,onOpenChange:isOpen=>!isOpen&&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-4xl rounded-2xl border bg-white shadow-lg flex flex-col h-[70vh]`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-gray-100`,children:[(0,import_jsx_runtime.jsxs)(DialogTitle$1,{className:`text-lg font-semibold`,children:[`Preview Changes (`,statementCount,` `,statementCount===1?`statement`:`statements`,`)`]}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[aiProviderId?(0,import_jsx_runtime.jsxs)(Button,{variant:`secondary`,size:`sm`,onClick:()=>setRiskModalOpen(!0),disabled:stagedChanges.length===0,children:[(0,import_jsx_runtime.jsx)(Sparkles,{className:`w-4 h-4 mr-1`}),`Assess Risk`]}):(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{children:(0,import_jsx_runtime.jsx)(`span`,{children:(0,import_jsx_runtime.jsxs)(Button,{variant:`secondary`,size:`sm`,disabled:!0,children:[(0,import_jsx_runtime.jsx)(Sparkles,{className:`w-4 h-4 mr-1`}),`Assess Risk`]})})}),(0,import_jsx_runtime.jsx)(TooltipPopup,{children:`Configure an AI provider in Settings to enable risk assessment`})]}),(0,import_jsx_runtime.jsxs)(Button,{size:`sm`,onClick:handleExecuteAll,disabled:executingAll||stagedChanges.length===0,children:[(0,import_jsx_runtime.jsx)(Play,{className:`w-4 h-4 mr-1`}),executingAll?`Executing...`:`Execute All`]}),(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`icon-sm`,onClick:onClose,disabled:executingAll,children:(0,import_jsx_runtime.jsx)(X,{className:`w-4 h-4`})})]})]}),(0,import_jsx_runtime.jsx)(`div`,{className:`flex-1 flex flex-col overflow-hidden min-h-0 p-4`,children:stagedChanges.length===0?(0,import_jsx_runtime.jsx)(`div`,{className:`flex items-center justify-center h-full text-gray-500`,children:`No staged changes`}):(0,import_jsx_runtime.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto`,children:(0,import_jsx_runtime.jsx)(SQLPreview,{sql:formattedSQL})})})]})})]}),riskModalOpen&&aiProviderId&&(0,import_jsx_runtime.jsx)(RiskAssessmentModal,{open:riskModalOpen,onClose:()=>setRiskModalOpen(!1),connectionId,providerId:aiProviderId,sqlStatements:stagedChanges.map(change=>generateSQL(change))})]})}function isJsonType(type){return type===`json`||type===`jsonb`}var isStaged=status=>status===`staged-delete`||status===`staged-update`||status===`staged-insert`,updateRow=(rows,idx,update$1)=>rows.map((row,i$3)=>i$3===idx?{...row,...update$1}:row),ROW_HEIGHT=28,ROWS_PER_PAGE=1e4,HEADER_ROW_HEIGHT=29,HEADER_FONT=`500 12px -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif`,CELL_FONT=`400 12px -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif`,measurementCanvas=null;function measureText(text$5,font){measurementCanvas||=document.createElement(`canvas`);let context=measurementCanvas.getContext(`2d`);return context.font=font,context.measureText(text$5).width}var HighlightedText=(0,import_react.memo)(function({text:text$5,filter}){if(!filter)return(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children:text$5});let lowerText=text$5.toLowerCase(),lowerFilter=filter.toLowerCase(),parts=[],lastIndex=0,index$4=lowerText.indexOf(lowerFilter);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+filter.length),highlight:!0}),lastIndex=index$4+filter.length,index$4=lowerText.indexOf(lowerFilter,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 getPageNumbers(currentPage,totalPages){if(totalPages<=7)return Array.from({length:totalPages},(_$2,i$3)=>i$3+1);let pages=[];return pages.push(1),currentPage<=3?pages.push(2,3,4,`ellipsis`,totalPages):currentPage>=totalPages-2?pages.push(`ellipsis`,totalPages-3,totalPages-2,totalPages-1,totalPages):pages.push(`ellipsis`,currentPage-1,currentPage,currentPage+1,`ellipsis`,totalPages),pages}function Pagination({currentPage,totalPages,onPageChange}){if(totalPages<=1)return null;let pageNumbers=getPageNumbers(currentPage,totalPages);return(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,import_jsx_runtime.jsx)(`button`,{onClick:()=>onPageChange(currentPage-1),disabled:currentPage<=1,className:`p-0.5 rounded hover:bg-accent disabled:opacity-30 disabled:cursor-not-allowed text-gray-400`,children:(0,import_jsx_runtime.jsx)(ChevronLeft,{className:`w-3 h-3`})}),pageNumbers.map((page,idx)=>page===`ellipsis`?(0,import_jsx_runtime.jsx)(`span`,{className:`px-1 text-gray-400`,children:(0,import_jsx_runtime.jsx)(Ellipsis,{className:`w-3 h-3`})},`ellipsis-${idx}`):(0,import_jsx_runtime.jsx)(`button`,{onClick:()=>onPageChange(page),className:`min-w-[20px] h-5 px-1 rounded text-xs font-medium transition-colors ${page===currentPage?`bg-white border border-blue-500 text-blue-600`:`text-gray-600 hover:bg-accent`}`,children:page},page)),(0,import_jsx_runtime.jsx)(`button`,{onClick:()=>onPageChange(currentPage+1),disabled:currentPage>=totalPages,className:`p-0.5 rounded hover:bg-accent disabled:opacity-30 disabled:cursor-not-allowed text-gray-400`,children:(0,import_jsx_runtime.jsx)(ChevronRight,{className:`w-3 h-3`})})]})}function ResultContent({result,filter,allDisplayRows,displayRows,selectedRowIndex,onRowClick,onRowDoubleClick,onExpandJson,selectedIndices,onRowSelect,onDeleteRows,onDuplicateRows,onDiscardRows,onPinRows,onUnpinRows,onRowHover,hasWrite,isExplainResult}){let scrollRef=(0,import_react.useRef)(null),[currentPage,setCurrentPage]=(0,import_react.useState)(1),[contextMenu,setContextMenu]=(0,import_react.useState)(null);(0,import_react.useEffect)(()=>{let handleClickOutside=()=>setContextMenu(null);if(contextMenu)return document.addEventListener(`click`,handleClickOutside),()=>document.removeEventListener(`click`,handleClickOutside)},[contextMenu]);let handleContextMenu=(0,import_react.useCallback)((e,rowIndex,rowStatus)=>{e.preventDefault(),!isExplainResult&&(selectedIndices.has(rowIndex)||onRowSelect(rowIndex,e),setContextMenu({x:e.clientX,y:e.clientY,rowIndex,rowStatus}))},[selectedIndices,onRowSelect,isExplainResult]),handleDeleteFromContextMenu=(0,import_react.useCallback)(()=>{selectedIndices.size>0&&onDeleteRows(Array.from(selectedIndices)),setContextMenu(null)},[selectedIndices,onDeleteRows]),handleDuplicateFromContextMenu=(0,import_react.useCallback)(()=>{selectedIndices.size>0&&onDuplicateRows(Array.from(selectedIndices)),setContextMenu(null)},[selectedIndices,onDuplicateRows]),handleDiscardFromContextMenu=(0,import_react.useCallback)(()=>{selectedIndices.size>0&&onDiscardRows(Array.from(selectedIndices)),setContextMenu(null)},[selectedIndices,onDiscardRows]),handlePinFromContextMenu=(0,import_react.useCallback)(()=>{selectedIndices.size>0&&onPinRows(Array.from(selectedIndices)),setContextMenu(null)},[selectedIndices,onPinRows]),handleUnpinFromContextMenu=(0,import_react.useCallback)(()=>{selectedIndices.size>0&&onUnpinRows(Array.from(selectedIndices)),setContextMenu(null)},[selectedIndices,onUnpinRows]),pinnedItems=(0,import_react.useMemo)(()=>{let pinned=[];return allDisplayRows.forEach((row,idx)=>{row.pinned&&pinned.push({row,pos:idx})}),pinned},[allDisplayRows]),totalPages=Math.max(1,Math.ceil(displayRows.length/ROWS_PER_PAGE));(0,import_react.useEffect)(()=>{currentPage>totalPages&&setCurrentPage(1)},[displayRows.length,totalPages,currentPage]),(0,import_react.useEffect)(()=>{setCurrentPage(1)},[filter]);let pageStartIndex=(currentPage-1)*ROWS_PER_PAGE,paginatedRows=(0,import_react.useMemo)(()=>displayRows.slice(pageStartIndex,pageStartIndex+ROWS_PER_PAGE),[displayRows,pageStartIndex]),virtualizer=useVirtualizer({count:paginatedRows.length,getScrollElement:()=>scrollRef.current,estimateSize:()=>ROW_HEIGHT,overscan:5});(0,import_react.useEffect)(()=>{scrollRef.current?.scrollTo({top:0})},[currentPage]);let columnWidths=(0,import_react.useMemo)(()=>{let PADDING=22,MIN=80,MAX$1=400;return result.columns.map(col=>{let headerWidth=Math.ceil(measureText(col.name,HEADER_FONT)*1.2)+22,contentWidth=0;for(let row of result.rows.slice(0,200)){let value=row[col.name];value!==null&&(contentWidth=Math.max(contentWidth,measureText(String(value),CELL_FONT)))}return contentWidth+=22,Math.min(Math.max(headerWidth,contentWidth,80),400)})},[result.rows,result.columns]),gridTemplateColumns=columnWidths.map(w$2=>`${w$2}px`).join(` `),totalGridWidth=columnWidths.reduce((sum,w$2)=>sum+w$2,0),normalRowCount=displayRows.filter(r$4=>r$4.status===`normal`).length,isFiltered=filter&&normalRowCount!==result.rows.length;if(result.error){let time=result.executionTime>=1e3?`${(result.executionTime/1e3).toFixed(1)}s`:`${result.executionTime}ms`;return(0,import_jsx_runtime.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,import_jsx_runtime.jsx)(`div`,{className:`flex-1 p-4 overflow-auto`,children:(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-red-600 whitespace-pre-wrap`,children:result.error})}),(0,import_jsx_runtime.jsxs)(`div`,{className:`h-8 px-3 flex items-center text-xs text-gray-500 border-t border-gray-200 bg-gray-50`,children:[`Executed in `,time]})]})}return(0,import_jsx_runtime.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,import_jsx_runtime.jsxs)(`div`,{ref:scrollRef,className:`flex-1 overflow-auto`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`sticky top-0 z-10 border-b border-gray-200 bg-gray-50`,style:{display:`grid`,gridTemplateColumns:`${gridTemplateColumns} 1fr`,minWidth:totalGridWidth},children:[result.columns.map(col=>(0,import_jsx_runtime.jsxs)(Tooltip,{children:[(0,import_jsx_runtime.jsx)(TooltipTrigger,{className:`w-full px-2 py-1.5 text-xs font-medium text-gray-700 truncate border-r border-gray-200 last:border-r-0 text-left`,children:col.name}),(0,import_jsx_runtime.jsx)(TooltipPopup,{side:`top`,sideOffset:4,children:(0,import_jsx_runtime.jsx)(`span`,{children:col.type||`unknown`})})]},col.name)),(0,import_jsx_runtime.jsx)(`div`,{})]}),pinnedItems.length>0&&(0,import_jsx_runtime.jsx)(`div`,{className:`sticky z-[9] border-b border-gray-300 shadow-[0_1px_3px_rgba(0,0,0,0.08)] mb-1`,style:{top:HEADER_ROW_HEIGHT},children:pinnedItems.map(({row:pinnedRow,pos})=>{let globalRowIndex=pos+1,{data,status,originalData}=pinnedRow,isSelected=selectedIndices.has(globalRowIndex)||selectedRowIndex===globalRowIndex,isStagedInsert=status===`staged-insert`;return(0,import_jsx_runtime.jsxs)(`div`,{className:`group border-b border-gray-100 select-none ${isStagedInsert?`bg-green-100`:status===`staged-delete`?`bg-red-100 text-gray-400`:status===`staged-update`?`bg-amber-100`:isSelected?`bg-blue-50`:`bg-white hover:bg-gray-50`}`,style:{height:`${ROW_HEIGHT}px`,display:`grid`,gridTemplateColumns:`${gridTemplateColumns} 1fr`,minWidth:totalGridWidth},onContextMenu:e=>handleContextMenu(e,globalRowIndex,status),onMouseEnter:()=>onRowHover(globalRowIndex),onMouseLeave:()=>onRowHover(null),children:[result.columns.map(col=>{let isJson=isJsonType(col.type),cellValue=data[col.name];return(0,import_jsx_runtime.jsxs)(`div`,{className:`group/cell relative px-2 flex items-center text-xs truncate border-r border-gray-100 last:border-r-0 cursor-pointer ${status===`staged-update`&&originalData&&originalData[col.name]!==cellValue?`font-medium`:``}`,onClick:e=>{onRowSelect(globalRowIndex,e),!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&onRowClick(globalRowIndex,data,col.name)},onDoubleClick:()=>{onRowDoubleClick(globalRowIndex,data,col.name)},children:[isStagedInsert&&cellValue===void 0?(0,import_jsx_runtime.jsx)(`span`,{className:`text-gray-400 italic`,children:`DEFAULT`}):cellValue===null?(0,import_jsx_runtime.jsx)(`span`,{className:`text-gray-400 italic`,children:`null`}):cellValue===``?(0,import_jsx_runtime.jsx)(`span`,{className:`text-gray-300 italic`,children:`(empty)`}):(0,import_jsx_runtime.jsx)(HighlightedText,{text:String(cellValue),filter}),isJson&&cellValue!=null&&(0,import_jsx_runtime.jsxs)(`button`,{className:`absolute right-1 px-1.5 py-0.5 rounded bg-white border border-gray-200 shadow-sm opacity-0 group-hover/cell:opacity-100 hover:bg-gray-50 transition-opacity flex items-center gap-1`,onClick:e=>{e.stopPropagation(),onExpandJson(cellValue,col.name,globalRowIndex)},title:`Expand JSON`,children:[(0,import_jsx_runtime.jsx)(Expand,{className:`w-3 h-3 text-gray-500`}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-xs text-gray-500`,children:`Expand`})]})]},col.name)}),(0,import_jsx_runtime.jsx)(`div`,{className:`cursor-pointer flex items-center justify-end pr-2`,onClick:e=>{onRowSelect(globalRowIndex,e),!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&onRowClick(globalRowIndex,data,void 0)},children:(0,import_jsx_runtime.jsx)(Pin,{className:`w-3 h-3 text-blue-400`})})]},globalRowIndex)})}),(0,import_jsx_runtime.jsx)(`div`,{style:{height:`${virtualizer.getTotalSize()}px`,minWidth:totalGridWidth,position:`relative`},children:virtualizer.getVirtualItems().map(virtualRow=>{let displayRow=paginatedRows[virtualRow.index],globalRowIndex=pageStartIndex+virtualRow.index+1,{data,status,originalData}=displayRow,isSelected=selectedIndices.has(globalRowIndex)||selectedRowIndex===globalRowIndex,isStagedInsert=status===`staged-insert`;return(0,import_jsx_runtime.jsxs)(`div`,{className:`group absolute top-0 left-0 w-full border-b border-gray-100 select-none ${isStagedInsert?`bg-green-100`:status===`staged-delete`?`bg-red-100 text-gray-400`:status===`staged-update`?`bg-amber-100`:isSelected?`bg-blue-50`:`hover:bg-gray-50`}`,style:{height:`${ROW_HEIGHT}px`,transform:`translateY(${virtualRow.start}px)`,display:`grid`,gridTemplateColumns:`${gridTemplateColumns} 1fr`},onContextMenu:e=>handleContextMenu(e,globalRowIndex,status),onMouseEnter:()=>onRowHover(globalRowIndex),onMouseLeave:()=>onRowHover(null),children:[result.columns.map(col=>{let isJson=isJsonType(col.type),cellValue=data[col.name];return(0,import_jsx_runtime.jsxs)(`div`,{className:`group/cell relative px-2 flex items-center text-xs truncate border-r border-gray-100 last:border-r-0 cursor-pointer ${status===`staged-update`&&originalData&&originalData[col.name]!==cellValue?`font-medium`:``}`,onClick:e=>{onRowSelect(globalRowIndex,e),!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&onRowClick(globalRowIndex,data,col.name)},onDoubleClick:()=>{onRowDoubleClick(globalRowIndex,data,col.name)},children:[isStagedInsert&&cellValue===void 0?(0,import_jsx_runtime.jsx)(`span`,{className:`text-gray-400 italic`,children:`DEFAULT`}):cellValue===null?(0,import_jsx_runtime.jsx)(`span`,{className:`text-gray-400 italic`,children:`null`}):cellValue===``?(0,import_jsx_runtime.jsx)(`span`,{className:`text-gray-300 italic`,children:`(empty)`}):(0,import_jsx_runtime.jsx)(HighlightedText,{text:String(cellValue),filter}),isJson&&cellValue!=null&&(0,import_jsx_runtime.jsxs)(`button`,{className:`absolute right-1 px-1.5 py-0.5 rounded bg-white border border-gray-200 shadow-sm opacity-0 group-hover/cell:opacity-100 hover:bg-gray-50 transition-opacity flex items-center gap-1`,onClick:e=>{e.stopPropagation(),onExpandJson(cellValue,col.name,globalRowIndex)},title:`Expand JSON`,children:[(0,import_jsx_runtime.jsx)(Expand,{className:`w-3 h-3 text-gray-500`}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-xs text-gray-500`,children:`Expand`})]})]},col.name)}),(0,import_jsx_runtime.jsx)(`div`,{className:`cursor-pointer`,onClick:e=>{onRowSelect(globalRowIndex,e),!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&onRowClick(globalRowIndex,data,void 0)}})]},virtualRow.index)})})]}),(0,import_jsx_runtime.jsxs)(`div`,{className:`shrink-0 h-6 px-2 flex items-center justify-between border-t border-gray-200 bg-gray-50`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`text-xs text-gray-500`,children:[`Executed in `,result.executionTime>=1e3?`${(result.executionTime/1e3).toFixed(1)}s`:`${result.executionTime}ms`]}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,import_jsx_runtime.jsx)(Pagination,{currentPage,totalPages,onPageChange:page=>{page>=1&&page<=totalPages&&setCurrentPage(page)}}),(0,import_jsx_runtime.jsxs)(`span`,{className:`text-xs text-gray-500`,children:[pinnedItems.length>0&&`${pinnedItems.length} pinned · `,isFiltered?`${normalRowCount.toLocaleString()} of ${result.rows.length.toLocaleString()} rows`:`${displayRows.length.toLocaleString()} rows`]})]})]}),contextMenu&&(0,import_jsx_runtime.jsxs)(`div`,{className:`fixed z-50 bg-white border border-gray-200 rounded-md shadow-lg py-1 min-w-[140px]`,style:{left:contextMenu.x,top:contextMenu.y},children:[allDisplayRows[contextMenu.rowIndex-1]?.pinned?(0,import_jsx_runtime.jsxs)(`button`,{className:`w-full px-3 py-1.5 text-left text-sm hover:bg-gray-100 flex items-center`,onClick:handleUnpinFromContextMenu,children:[(0,import_jsx_runtime.jsxs)(`span`,{className:`flex-1`,children:[`Unpin `,selectedIndices.size>1?`${selectedIndices.size} rows`:`row`]}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-xs text-gray-400 ml-3`,children:`Space`})]}):(0,import_jsx_runtime.jsxs)(`button`,{className:`w-full px-3 py-1.5 text-left text-sm hover:bg-gray-100 flex items-center`,onClick:handlePinFromContextMenu,children:[(0,import_jsx_runtime.jsxs)(`span`,{className:`flex-1`,children:[`Pin `,selectedIndices.size>1?`${selectedIndices.size} rows`:`row`]}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-xs text-gray-400 ml-3`,children:`Space`})]}),hasWrite&&selectedIndices.size===1&&contextMenu.rowStatus===`normal`&&(0,import_jsx_runtime.jsx)(`button`,{className:`w-full px-3 py-1.5 text-left text-sm hover:bg-gray-100`,onClick:handleDuplicateFromContextMenu,children:`Duplicate row`}),hasWrite&&contextMenu.rowStatus===`normal`&&(0,import_jsx_runtime.jsxs)(`button`,{className:`w-full px-3 py-1.5 text-left text-sm hover:bg-gray-100`,onClick:handleDeleteFromContextMenu,children:[`Delete `,selectedIndices.size>1?`${selectedIndices.size} rows`:`row`]}),contextMenu.rowStatus!==`normal`&&(0,import_jsx_runtime.jsxs)(`button`,{className:`w-full px-3 py-1.5 text-left text-sm hover:bg-gray-100 text-amber-600`,onClick:handleDiscardFromContextMenu,children:[`Discard `,selectedIndices.size>1?`${selectedIndices.size} changes`:`change`]})]})]})}function QueryResults({resultTabs,activeResultTabId,onResultTabChange,isExecuting,isCancelling,executingPid,onCancelQuery,connectionId,onRefreshQuery}){let{hasWrite,hasExport}=useConnectionPermissions(connectionId),[filterInput,setFilterInput]=(0,import_react.useState)(``),[debouncedFilter,setDebouncedFilter]=(0,import_react.useState)(``),[elapsedTime,setElapsedTime]=(0,import_react.useState)(0),[selectedRow,setSelectedRow]=(0,import_react.useState)(null),[drawerOpen,setDrawerOpen]=(0,import_react.useState)(!1),[jsonModal,setJsonModal]=(0,import_react.useState)(null),[hoveredRowIndex,setHoveredRowIndex]=(0,import_react.useState)(null),[isEditingRow,setIsEditingRow]=(0,import_react.useState)(!1),[autoEditColumn,setAutoEditColumn]=(0,import_react.useState)(null),[displayRowsMap,setDisplayRowsMap]=(0,import_react.useState)({}),[pendingNewRow,setPendingNewRow]=(0,import_react.useState)(null),activeTabIdRef=(0,import_react.useRef)(activeResultTabId);activeTabIdRef.current=activeResultTabId;let displayRows=activeResultTabId?displayRowsMap[activeResultTabId]??[]:[],setDisplayRows=(0,import_react.useCallback)(updater=>{let tabId=activeTabIdRef.current;tabId&&setDisplayRowsMap(prev=>{let current=prev[tabId]??[],next=typeof updater==`function`?updater(current):updater;return{...prev,[tabId]:next}})},[]);(0,import_react.useEffect)(()=>{let timer=setTimeout(()=>{setDebouncedFilter(filterInput)},300);return()=>clearTimeout(timer)},[filterInput]);let prevSelectedIndexRef=(0,import_react.useRef)(null);(0,import_react.useEffect)(()=>{setSelectedRow(null),setDrawerOpen(!1),setIsEditingRow(!1),setAutoEditColumn(null),setPendingNewRow(null),prevSelectedIndexRef.current=null},[activeResultTabId]),(0,import_react.useEffect)(()=>{let currentIndex=selectedRow?.index??null,prevIndex=prevSelectedIndexRef.current;prevIndex!==null&&currentIndex!==null&&prevIndex!==currentIndex&&!pendingNewRow&&(setIsEditingRow(!1),setAutoEditColumn(null)),prevSelectedIndexRef.current=currentIndex},[selectedRow?.index,pendingNewRow]),useKeyboardShortcut(`toggle-row-pin`,` `,()=>{let targetIndex=selectedRow?.index??hoveredRowIndex;if(targetIndex===null)return;let row=displayRows[targetIndex-1];row&&(row.pinned?handleUnpinRows([targetIndex]):handlePinRows([targetIndex]))},{when:()=>(selectedRow!==null||hoveredRowIndex!==null)&&!isEditingRow}),(0,import_react.useEffect)(()=>{if(!isExecuting){setElapsedTime(0);return}if(isCancelling)return;let startTime$1=Date.now()-elapsedTime*1e3,interval=setInterval(()=>{setElapsedTime((Date.now()-startTime$1)/1e3)},100);return()=>clearInterval(interval)},[isExecuting,isCancelling]);let activeResult=resultTabs.find(rt=>rt.id===activeResultTabId),isExplainResult=(0,import_react.useMemo)(()=>activeResult?.sql?activeResult.sql.trim().toUpperCase().startsWith(`EXPLAIN`):!1,[activeResult?.sql]);(0,import_react.useEffect)(()=>{activeResult&&setDisplayRowsMap(prev=>{if(prev[activeResult.id])return prev;let rows=activeResult.result.rows.map(row=>({data:row,status:`normal`}));return{...prev,[activeResult.id]:rows}})},[activeResult?.id]),(0,import_react.useEffect)(()=>{let tabIds=new Set(resultTabs.map(rt=>rt.id));setDisplayRowsMap(prev=>{let stale=Object.keys(prev).filter(k$2=>!tabIds.has(k$2));if(stale.length===0)return prev;let next={...prev};for(let k$2 of stale)delete next[k$2];return next})},[resultTabs]);let filteredDisplayRows=(0,import_react.useMemo)(()=>{if(!debouncedFilter||!activeResult)return displayRows;let lowerFilter=debouncedFilter.toLowerCase();return displayRows.filter(displayRow=>activeResult.result.columns.some(col=>{let value=displayRow.data[col.name];return value===null?!1:String(value).toLowerCase().includes(lowerFilter)}))},[displayRows,debouncedFilter,activeResult]),[previewModalOpen,setPreviewModalOpen]=(0,import_react.useState)(!1),executeSQL=useExecuteSQL(),stagedChanges=(0,import_react.useMemo)(()=>{if(!activeResult)return[];let columns=activeResult.result.columns,changes=[],deletes=[],updates=[],inserts=[];if(displayRows.forEach((displayRow,idx)=>{displayRow.status===`staged-delete`?deletes.push({row:displayRow.data,index:idx+1}):displayRow.status===`staged-update`&&displayRow.originalData?updates.push({row:displayRow.data,original:displayRow.originalData,index:idx+1}):displayRow.status===`staged-insert`&&inserts.push({row:displayRow.data})}),deletes.length>0){let tableName=columns[0]?.tableName||``,schemaName=columns[0]?.schemaName||``,pkColumns=columns.filter(c=>c.isPrimaryKey);changes.push({id:`delete`,type:`delete`,tables:[{tableName,schemaName,primaryKeyColumns:pkColumns.map(c=>c.name),rows:deletes.map(d$1=>{let pk={};return pkColumns.forEach(c=>{pk[c.name]=d$1.row[c.name]}),pk})}],rowCount:deletes.length,createdAt:new Date,rowIndices:deletes.map(d$1=>d$1.index)})}if(updates.length>0){let tableName=columns[0]?.tableName||``,schemaName=columns[0]?.schemaName||``,pkColumns=columns.filter(c=>c.isPrimaryKey);changes.push({id:`update`,type:`update`,tables:[{tableName,schemaName,primaryKeyColumns:pkColumns.map(c=>c.name),rows:updates.map(u$1=>{let changed={};return columns.forEach(c=>{c.isPrimaryKey?changed[c.name]=u$1.original[c.name]:u$1.row[c.name]!==u$1.original[c.name]&&(changed[c.name]=u$1.row[c.name])}),changed})}],rowCount:updates.length,createdAt:new Date,originalRows:updates.map(u$1=>{let pk={};return pkColumns.forEach(c=>{pk[c.name]=u$1.original[c.name]}),pk}),rowIndices:updates.map(u$1=>u$1.index)})}if(inserts.length>0){let tableName=columns[0]?.tableName||``,schemaName=columns[0]?.schemaName||``;changes.push({id:`insert`,type:`insert`,tables:[{tableName,schemaName,primaryKeyColumns:[],rows:inserts.map(i$3=>i$3.row)}],rowCount:inserts.length,createdAt:new Date})}return changes},[displayRows,activeResult]),statementCount=(0,import_react.useMemo)(()=>stagedChanges.reduce((count,change)=>{let sql=``;return change.type===`delete`?sql=generateDeleteSQL(change):change.type===`update`?sql=generateUpdateSQL(change):change.type===`insert`&&(sql=generateInsertSQL(change)),count+(sql.match(/;/g)||[]).length},0),[stagedChanges]),hasStagedChanges=displayRows.some(r$4=>isStaged(r$4.status)),selectionRef=(0,import_react.useRef)(null),handleDeleteSelection=(0,import_react.useCallback)(indices=>{let indexSet=new Set(indices.map(i$3=>i$3-1));setDisplayRows(prev=>prev.map((row,idx)=>indexSet.has(idx)&&row.status===`normal`?{...row,status:`staged-delete`}:row)),selectionRef.current?.clearSelection()},[]),handleDiscardSelection=(0,import_react.useCallback)(indices=>{let indexSet=new Set(indices.map(i$3=>i$3-1));setDisplayRows(prev=>prev.filter((row,idx)=>!(indexSet.has(idx)&&row.status===`staged-insert`)).map((row,idx)=>indexSet.has(idx)?row.status===`staged-delete`?{...row,status:`normal`}:row.status===`staged-update`?{data:row.originalData,status:`normal`,pinned:row.pinned}:row:row)),selectionRef.current?.clearSelection()},[]),handlePinRows=(0,import_react.useCallback)(indices=>{let indexSet=new Set(indices.map(i$3=>i$3-1));setDisplayRows(prev=>prev.map((row,idx)=>indexSet.has(idx)?{...row,pinned:!0}:row)),selectionRef.current?.clearSelection()},[]),handleUnpinRows=(0,import_react.useCallback)(indices=>{let indexSet=new Set(indices.map(i$3=>i$3-1));setDisplayRows(prev=>prev.map((row,idx)=>indexSet.has(idx)?{...row,pinned:!1}:row)),selectionRef.current?.clearSelection()},[]),handleSaveEdit=(0,import_react.useCallback)(updatedRow=>{if(!selectedRow)return;if(pendingNewRow){setDisplayRows(prev=>[...prev,{data:updatedRow,status:`staged-insert`}]),setPendingNewRow(null),setSelectedRow(null),setDrawerOpen(!1),setIsEditingRow(!1);return}let idx=selectedRow.index-1,row=displayRows[idx];if(!row)return;let originalData=row.originalData||row.data;setDisplayRows(prev=>updateRow(prev,idx,{data:updatedRow,status:`staged-update`,originalData})),setIsEditingRow(!1)},[selectedRow,displayRows,pendingNewRow]),handleDuplicateSelection=(0,import_react.useCallback)(indices=>{if(!activeResult||indices.length!==1)return;let source=displayRows[indices[0]-1];if(!source)return;let newData={};for(let col of activeResult.result.columns)newData[col.name]=col.isPrimaryKey?``:source.data[col.name];let firstFocusableCol=activeResult.result.columns.find(col=>col.isPrimaryKey)??activeResult.result.columns[0];setPendingNewRow(newData),setSelectedRow({index:displayRows.length+1,data:newData}),setDrawerOpen(!0),setIsEditingRow(!0),setAutoEditColumn(firstFocusableCol?.name??null),selectionRef.current?.clearSelection()},[activeResult,displayRows]),handleAddRow=(0,import_react.useCallback)(()=>{if(!activeResult)return;let newData={};for(let col of activeResult.result.columns)newData[col.name]=col.hasDefault?void 0:col.isPrimaryKey?``:null;let firstFocusableCol=activeResult.result.columns.find(col=>!col.hasDefault||col.isPrimaryKey)??activeResult.result.columns[0];setPendingNewRow(newData),setSelectedRow({index:displayRows.length+1,data:newData}),setDrawerOpen(!0),setIsEditingRow(!0),setAutoEditColumn(firstFocusableCol?.name??null),selectionRef.current?.clearSelection()},[activeResult,displayRows]),selection=useRowSelection({totalRows:displayRows.length,onDelete:hasWrite?handleDeleteSelection:void 0});selectionRef.current=selection;let selectRowAt=(0,import_react.useCallback)(index$4=>{let row=displayRows[index$4-1];row&&(setSelectedRow({index:index$4,data:row.data}),selection.handleRowClick(index$4,{shiftKey:!1,metaKey:!1,ctrlKey:!1}))},[displayRows,selection]);useKeyboardShortcut(`row-nav-prev`,[`k`,`ArrowUp`],()=>{selectedRow?handlePreviousRow():hoveredRowIndex!==null&&selectRowAt(hoveredRowIndex)},{when:()=>(selectedRow!==null||hoveredRowIndex!==null)&&!isEditingRow}),useKeyboardShortcut(`row-nav-next`,[`j`,`ArrowDown`],()=>{selectedRow?handleNextRow():hoveredRowIndex!==null&&selectRowAt(hoveredRowIndex)},{when:()=>(selectedRow!==null||hoveredRowIndex!==null)&&!isEditingRow});let handleExecuteAll=(0,import_react.useCallback)(async()=>{for(let change of stagedChanges){let sql=change.type===`delete`?generateDeleteSQL(change):change.type===`update`?generateUpdateSQL(change):generateInsertSQL(change);sql&&await executeSQL.mutateAsync({connectionId,sql})}setPreviewModalOpen(!1);let activeResult$1=resultTabs.find(rt=>rt.id===activeResultTabId);activeResult$1?.sql&&onRefreshQuery&&onRefreshQuery(activeResult$1.sql)},[stagedChanges,executeSQL,connectionId,resultTabs,activeResultTabId,onRefreshQuery]),handleDiscardAll=(0,import_react.useCallback)(()=>{setDisplayRows(prev=>prev.filter(r$4=>r$4.status!==`staged-insert`).map(r$4=>r$4.status===`staged-delete`?{data:r$4.data,status:`normal`,pinned:r$4.pinned}:r$4.status===`staged-update`?{data:r$4.originalData,status:`normal`,pinned:r$4.pinned}:r$4))},[]),handleSaveJsonModal=(0,import_react.useCallback)(newValue=>{if(!jsonModal)return;let valueToStore;try{let parsed=JSON.parse(newValue);valueToStore=JSON.stringify(parsed)}catch{valueToStore=newValue}if(pendingNewRow){let updatedData$1={...pendingNewRow,[jsonModal.columnName]:valueToStore};setPendingNewRow(updatedData$1),selectedRow&&setSelectedRow({...selectedRow,data:updatedData$1});return}let idx=jsonModal.rowIndex-1,row=displayRows[idx];if(!row)return;let updatedData={...row.data,[jsonModal.columnName]:valueToStore};if(row.status===`staged-insert`)setDisplayRows(prev=>updateRow(prev,idx,{data:updatedData}));else{let originalData=row.originalData||row.data;setDisplayRows(prev=>updateRow(prev,idx,{data:updatedData,status:`staged-update`,originalData}))}selectedRow?.index===jsonModal.rowIndex&&setSelectedRow({...selectedRow,data:updatedData})},[jsonModal,displayRows,selectedRow,pendingNewRow]),handleRowClick=(0,import_react.useCallback)((rowIndex,row,column)=>{isExplainResult||(setSelectedRow({index:rowIndex,data:row,column}),setDrawerOpen(!0))},[isExplainResult]),handleRowDoubleClick=(0,import_react.useCallback)((rowIndex,row,column)=>{if(isExplainResult)return;let displayRow=displayRows[rowIndex-1];if(!hasWrite||displayRow&&displayRow.status!==`normal`){setSelectedRow({index:rowIndex,data:row,column}),setDrawerOpen(!0);return}setSelectedRow({index:rowIndex,data:row,column}),setDrawerOpen(!0),setIsEditingRow(!0),setAutoEditColumn(column)},[displayRows,hasWrite,isExplainResult]),handleClosePanel=(0,import_react.useCallback)(()=>{pendingNewRow&&(setPendingNewRow(null),setSelectedRow(null),setIsEditingRow(!1),setAutoEditColumn(null)),setDrawerOpen(!1)},[pendingNewRow]),handleExpandJson=(0,import_react.useCallback)((value,columnName,rowIndex)=>{setJsonModal({value,columnName,rowIndex})},[]),handleCloseJsonModal=(0,import_react.useCallback)(()=>{setJsonModal(null)},[]),handlePreviousRow=(0,import_react.useCallback)(()=>{if(!selectedRow||selectedRow.index<=1)return;let newIndex=selectedRow.index-1,newDisplayRow=displayRows[newIndex-1];newDisplayRow&&(setSelectedRow({index:newIndex,data:newDisplayRow.data}),selection.handleRowClick(newIndex,{shiftKey:!1,metaKey:!1,ctrlKey:!1}))},[selectedRow,displayRows,selection]),handleNextRow=(0,import_react.useCallback)(()=>{if(!selectedRow||selectedRow.index>=displayRows.length)return;let newIndex=selectedRow.index+1,newDisplayRow=displayRows[newIndex-1];newDisplayRow&&(setSelectedRow({index:newIndex,data:newDisplayRow.data}),selection.handleRowClick(newIndex,{shiftKey:!1,metaKey:!1,ctrlKey:!1}))},[selectedRow,displayRows,selection]),handleCopyAsMarkdown=(0,import_react.useCallback)(async()=>{if(!activeResult)return;let{columns}=activeResult.result,columnNames=columns.map(col=>col.name),lines=[];lines.push(`| ${columnNames.join(` | `)} |`),lines.push(`| ${columnNames.map(()=>`---`).join(` | `)} |`);for(let displayRow of displayRows){if(displayRow.status!==`normal`)continue;let cells$1=columnNames.map(colName=>{let value=displayRow.data[colName];return value===null?`null`:String(value).replace(/\|/g,`\\|`).replace(/\n/g,` `)});lines.push(`| ${cells$1.join(` | `)} |`)}await navigator.clipboard.writeText(lines.join(`
102
+ `))},[activeResult,displayRows]),handleExport=(0,import_react.useCallback)(()=>{if(!activeResult)return;let filename=`export-${new Date().toISOString().slice(0,19).replace(/[-:T]/g,m$2=>m$2===`T`?`-`:``)}.csv`,rows=displayRows.filter(r$4=>r$4.status===`normal`).map(r$4=>r$4.data);exportToCsv(activeResult.result.columns,rows,filename),queryClient$1.auditExport({connectionId,sql:activeResult.sql||``,rowCount:rows.length,format:`csv`}).catch(()=>{})},[activeResult,displayRows,connectionId]);return isExecuting&&resultTabs.length===0?(0,import_jsx_runtime.jsxs)(`div`,{className:`h-full flex flex-col items-center justify-center gap-3`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`text-sm text-gray-500`,children:[`Executing query...`,elapsedTime>=1&&` (${elapsedTime.toFixed(1)}s)`,executingPid&&(0,import_jsx_runtime.jsxs)(`span`,{className:`ml-2 text-gray-400`,children:[`PID `,executingPid]})]}),elapsedTime>=1&&onCancelQuery&&(0,import_jsx_runtime.jsxs)(Button,{variant:`outline`,size:`sm`,onClick:onCancelQuery,disabled:isCancelling,className:`text-red-600 border-red-200 hover:bg-red-50 hover:border-red-300`,children:[(0,import_jsx_runtime.jsx)(X,{className:`w-3 h-3 mr-1`}),isCancelling?`Cancelling...`:`Cancel`]})]}):!isExecuting&&resultTabs.length===0?(0,import_jsx_runtime.jsxs)(`div`,{className:`h-full flex items-center justify-center text-sm text-gray-400`,children:[`Run a query to see results (`,navigator.platform.includes(`Mac`)?`⌘`:`Ctrl`,` + Enter)`]}):(0,import_jsx_runtime.jsxs)(`div`,{className:`h-full flex flex-col relative`,children:[hasStagedChanges&&(0,import_jsx_runtime.jsxs)(`div`,{className:`absolute -top-3 left-1/2 -translate-x-1/2 z-30 flex items-center gap-2 p-1.5 bg-white/80 backdrop-blur-sm rounded-lg shadow-sm border border-gray-200/50 text-xs`,children:[(0,import_jsx_runtime.jsx)(`button`,{className:`px-2 py-1 text-gray-600 hover:text-gray-900 bg-white hover:bg-gray-100 border border-gray-300 rounded shadow-sm`,onClick:handleDiscardAll,children:`Discard`}),(0,import_jsx_runtime.jsxs)(`button`,{className:`px-2 py-1 text-primary-foreground bg-primary hover:bg-primary/80 rounded shadow-sm flex items-center gap-1.5`,onClick:()=>setPreviewModalOpen(!0),children:[`Preview changes`,(0,import_jsx_runtime.jsx)(`span`,{className:`px-1.5 py-0.5 bg-primary-foreground/20 text-primary-foreground rounded-full text-xs font-medium`,children:statementCount})]})]}),(0,import_jsx_runtime.jsxs)(`div`,{className:`shrink-0 flex items-center border-b border-gray-200 bg-gray-50 py-1`,children:[(0,import_jsx_runtime.jsx)(TabBar,{tabs:resultTabs.map(rt=>({id:rt.id,label:rt.title,className:rt.result.error?`text-red-500`:void 0})),activeTabId:activeResultTabId,onTabSelect:onResultTabChange,className:`flex-1 min-w-0`}),(0,import_jsx_runtime.jsxs)(`div`,{className:`shrink-0 px-2 flex items-center`,children:[(0,import_jsx_runtime.jsx)(SearchInput,{value:filterInput,onChange:e=>setFilterInput(e.target.value),onClear:()=>setFilterInput(``),size:`sm`,className:`w-40 mr-2`}),hasWrite&&!isExplainResult&&(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`xs`,onClick:handleAddRow,disabled:!activeResult||!!activeResult.result.error,title:`Add row`,children:(0,import_jsx_runtime.jsx)(Plus,{className:`w-4 h-4`})}),(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`xs`,onClick:handleCopyAsMarkdown,disabled:!activeResult||!!activeResult.result.error||activeResult.result.rows.length===0,title:`Copy as Markdown table`,children:(0,import_jsx_runtime.jsx)(Clipboard,{className:`w-4 h-4`})}),hasExport&&(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`xs`,onClick:handleExport,disabled:!activeResult||!!activeResult.result.error||activeResult.result.rows.length===0,title:`Export to CSV`,children:(0,import_jsx_runtime.jsx)(Download,{className:`w-4 h-4 mr-1`})})]})]}),(0,import_jsx_runtime.jsx)(`div`,{className:`flex-1 min-h-0 relative`,children:activeResult&&(0,import_jsx_runtime.jsx)(ResultContent,{result:activeResult.result,filter:debouncedFilter,allDisplayRows:displayRows,displayRows:filteredDisplayRows,selectedRowIndex:selectedRow?.index??null,onRowClick:handleRowClick,onRowDoubleClick:handleRowDoubleClick,onExpandJson:handleExpandJson,selectedIndices:selection.selectedIndices,onRowSelect:(index$4,event)=>{if(event.metaKey||event.ctrlKey){let wasSelected=selection.selectedIndices.has(index$4),isInDetailPanel=selectedRow?.index===index$4;wasSelected||isInDetailPanel?(isInDetailPanel&&(setSelectedRow(null),setDrawerOpen(!1)),wasSelected&&selection.handleRowClick(index$4,event)):selection.handleRowClick(index$4,event)}else selection.handleRowClick(index$4,event)},onDeleteRows:handleDeleteSelection,onDuplicateRows:handleDuplicateSelection,onDiscardRows:handleDiscardSelection,onPinRows:handlePinRows,onUnpinRows:handleUnpinRows,onRowHover:setHoveredRowIndex,hasWrite,isExplainResult})}),selectedRow&&activeResult&&!isExplainResult&&(()=>{if(pendingNewRow)return(0,import_jsx_runtime.jsx)(RowDetailPanel,{row:selectedRow.data,columns:activeResult.result.columns,open:drawerOpen,onClose:handleClosePanel,onPrevious:()=>{},onNext:()=>{},hasPrevious:!1,hasNext:!1,scrollToColumn:selectedRow.column,currentIndex:selectedRow.index,totalCount:displayRows.length+1,onExpandJson:(value,columnName)=>handleExpandJson(value,columnName,selectedRow.index),onEdit:void 0,isEditing:isEditingRow,onCancelEdit:handleClosePanel,onSaveEdit:handleSaveEdit,autoEditColumn,onAutoEditHandled:()=>setAutoEditColumn(null),onDelete:void 0,stagedType:void 0,stagedOverrides:void 0,onDiscardStaged:void 0,isNewRow:!0});let displayRow=displayRows[selectedRow.index-1];if(!displayRow)return null;let{status,originalData}=displayRow,isStagedInsert=status===`staged-insert`,stagedType=status===`staged-delete`?`delete`:status===`staged-update`?`update`:status===`staged-insert`?`insert`:void 0,stagedOverrides=status===`staged-update`&&originalData?Object.fromEntries(Object.entries(displayRow.data).filter(([key$1,val])=>originalData[key$1]!==val)):void 0;return(0,import_jsx_runtime.jsx)(RowDetailPanel,{row:displayRow.data,columns:activeResult.result.columns,open:drawerOpen,onClose:handleClosePanel,onPrevious:handlePreviousRow,onNext:handleNextRow,hasPrevious:selectedRow.index>1,hasNext:selectedRow.index<displayRows.length,scrollToColumn:selectedRow.column,currentIndex:selectedRow.index,totalCount:displayRows.length,onExpandJson:(value,columnName)=>handleExpandJson(value,columnName,selectedRow.index),onEdit:hasWrite&&!isStagedInsert?()=>setIsEditingRow(!0):void 0,isEditing:isEditingRow,onCancelEdit:()=>{setIsEditingRow(!1),setAutoEditColumn(null)},onSaveEdit:handleSaveEdit,autoEditColumn,onAutoEditHandled:()=>setAutoEditColumn(null),onDelete:hasWrite&&!isStagedInsert?()=>handleDeleteSelection([selectedRow.index]):void 0,stagedType,stagedOverrides,onDiscardStaged:()=>{let idx=selectedRow.index-1;status===`staged-insert`?(setDisplayRows(prev=>prev.filter((_$2,i$3)=>i$3!==idx)),setSelectedRow(null),setDrawerOpen(!1)):status===`staged-delete`?setDisplayRows(prev=>updateRow(prev,idx,{status:`normal`})):status===`staged-update`&&setDisplayRows(prev=>updateRow(prev,idx,{data:originalData,status:`normal`}))},isNewRow:!1})})(),jsonModal&&(0,import_jsx_runtime.jsx)(JsonExpandModal,{open:!0,onClose:handleCloseJsonModal,value:jsonModal.value,columnName:jsonModal.columnName,onSave:hasWrite&&!isExplainResult?handleSaveJsonModal:void 0}),(0,import_jsx_runtime.jsx)(StagedChangesModal,{open:previewModalOpen,onClose:()=>setPreviewModalOpen(!1),connectionId,stagedChanges,onExecuteAll:handleExecuteAll})]})}const TabsRootContext=import_react.createContext(void 0);function useTabsRootContext(){let context=import_react.useContext(TabsRootContext);if(context===void 0)throw Error(formatErrorMessage(64));return context}let TabsRootDataAttributes=function(TabsRootDataAttributes$1){return TabsRootDataAttributes$1.activationDirection=`data-activation-direction`,TabsRootDataAttributes$1.orientation=`data-orientation`,TabsRootDataAttributes$1}({});const tabsStateAttributesMapping={tabActivationDirection:dir=>({[TabsRootDataAttributes.activationDirection]:dir})},TabsRoot=import_react.forwardRef(function(componentProps,forwardedRef){let{className,defaultValue:defaultValueProp=0,onValueChange:onValueChangeProp,orientation=`horizontal`,render,value:valueProp,...elementProps}=componentProps,direction=useDirection(),hasExplicitDefaultValueProp=Object.hasOwn(componentProps,`defaultValue`),tabPanelRefs=import_react.useRef([]),[mountedTabPanels,setMountedTabPanels]=import_react.useState(()=>new Map),[value,setValue]=useControlled({controlled:valueProp,default:defaultValueProp,name:`Tabs`,state:`value`}),isControlled=valueProp!==void 0,[tabMap,setTabMap]=import_react.useState(()=>new Map),[tabActivationDirection,setTabActivationDirection]=import_react.useState(`none`),onValueChange=useStableCallback((newValue,eventDetails)=>{onValueChangeProp?.(newValue,eventDetails),!eventDetails.isCanceled&&(setValue(newValue),setTabActivationDirection(eventDetails.activationDirection))}),registerMountedTabPanel=useStableCallback((panelValue,panelId)=>{setMountedTabPanels(prev=>{if(prev.get(panelValue)===panelId)return prev;let next=new Map(prev);return next.set(panelValue,panelId),next})}),unregisterMountedTabPanel=useStableCallback((panelValue,panelId)=>{setMountedTabPanels(prev=>{if(!prev.has(panelValue)||prev.get(panelValue)!==panelId)return prev;let next=new Map(prev);return next.delete(panelValue),next})}),getTabPanelIdByValue=import_react.useCallback(tabValue=>mountedTabPanels.get(tabValue),[mountedTabPanels]),getTabIdByPanelValue=import_react.useCallback(tabPanelValue=>{for(let tabMetadata of tabMap.values())if(tabPanelValue===tabMetadata?.value)return tabMetadata?.id},[tabMap]),getTabElementBySelectedValue=import_react.useCallback(selectedValue=>{if(selectedValue===void 0)return null;for(let[tabElement,tabMetadata]of tabMap.entries())if(tabMetadata!=null&&selectedValue===(tabMetadata.value??tabMetadata.index))return tabElement;return null},[tabMap]),tabsContextValue=import_react.useMemo(()=>({direction,getTabElementBySelectedValue,getTabIdByPanelValue,getTabPanelIdByValue,onValueChange,orientation,registerMountedTabPanel,setTabMap,unregisterMountedTabPanel,tabActivationDirection,value}),[direction,getTabElementBySelectedValue,getTabIdByPanelValue,getTabPanelIdByValue,onValueChange,orientation,registerMountedTabPanel,setTabMap,unregisterMountedTabPanel,tabActivationDirection,value]),selectedTabMetadata=import_react.useMemo(()=>{for(let tabMetadata of tabMap.values())if(tabMetadata!=null&&tabMetadata.value===value)return tabMetadata},[tabMap,value]),firstEnabledTabValue=import_react.useMemo(()=>{for(let tabMetadata of tabMap.values())if(tabMetadata!=null&&!tabMetadata.disabled)return tabMetadata.value},[tabMap]);useIsoLayoutEffect(()=>{if(isControlled||tabMap.size===0)return;let selectionIsDisabled=selectedTabMetadata?.disabled;if(hasExplicitDefaultValueProp&&selectionIsDisabled&&value===defaultValueProp||!selectionIsDisabled&&!(selectedTabMetadata==null&&value!==null))return;let fallbackValue=firstEnabledTabValue??null;value!==fallbackValue&&(setValue(fallbackValue),setTabActivationDirection(`none`))},[defaultValueProp,firstEnabledTabValue,hasExplicitDefaultValueProp,isControlled,selectedTabMetadata,setTabActivationDirection,setValue,tabMap,value]);let element$3=useRenderElement(`div`,componentProps,{state:{orientation,tabActivationDirection},ref:forwardedRef,props:elementProps,stateAttributesMapping:tabsStateAttributesMapping});return(0,import_jsx_runtime.jsx)(TabsRootContext.Provider,{value:tabsContextValue,children:(0,import_jsx_runtime.jsx)(CompositeList,{elementsRef:tabPanelRefs,children:element$3})})}),ACTIVE_COMPOSITE_ITEM=`data-composite-item-active`,TabsListContext=import_react.createContext(void 0);function useTabsListContext(){let context=import_react.useContext(TabsListContext);if(context===void 0)throw Error(formatErrorMessage(65));return context}const TabsTab$1=import_react.forwardRef(function(componentProps,forwardedRef){let{className,disabled:disabled$1=!1,render,value,id:idProp,nativeButton=!0,...elementProps}=componentProps,{value:activeTabValue,getTabPanelIdByValue,orientation}=useTabsRootContext(),{activateOnFocus,highlightedTabIndex,onTabActivation,setHighlightedTabIndex,tabsListElement}=useTabsListContext(),id=useBaseUiId(idProp),{compositeProps,compositeRef,index:index$4}=useCompositeItem({metadata:import_react.useMemo(()=>({disabled:disabled$1,id,value}),[disabled$1,id,value])}),active=value===activeTabValue,isNavigatingRef=import_react.useRef(!1);useIsoLayoutEffect(()=>{if(isNavigatingRef.current){isNavigatingRef.current=!1;return}if(!(active&&index$4>-1&&highlightedTabIndex!==index$4))return;let listElement=tabsListElement;if(listElement!=null){let activeEl=activeElement(ownerDocument(listElement));if(activeEl&&contains(listElement,activeEl))return}disabled$1||setHighlightedTabIndex(index$4)},[active,index$4,highlightedTabIndex,setHighlightedTabIndex,disabled$1,tabsListElement]);let{getButtonProps,buttonRef}=useButton({disabled:disabled$1,native:nativeButton,focusableWhenDisabled:!0}),tabPanelId=getTabPanelIdByValue(value),isPressingRef=import_react.useRef(!1),isMainButtonRef=import_react.useRef(!1);function onClick(event){active||disabled$1||onTabActivation(value,createChangeEventDetails(none$3,event.nativeEvent,void 0,{activationDirection:`none`}))}function onFocus(event){active||(index$4>-1&&!disabled$1&&setHighlightedTabIndex(index$4),!disabled$1&&activateOnFocus&&(!isPressingRef.current||isPressingRef.current&&isMainButtonRef.current)&&onTabActivation(value,createChangeEventDetails(none$3,event.nativeEvent,void 0,{activationDirection:`none`})))}function onPointerDown(event){if(active||disabled$1)return;isPressingRef.current=!0;function handlePointerUp(){isPressingRef.current=!1,isMainButtonRef.current=!1}(!event.button||event.button===0)&&(isMainButtonRef.current=!0,ownerDocument(event.currentTarget).addEventListener(`pointerup`,handlePointerUp,{once:!0}))}return useRenderElement(`button`,componentProps,{state:import_react.useMemo(()=>({disabled:disabled$1,active,orientation}),[disabled$1,active,orientation]),ref:[forwardedRef,buttonRef,compositeRef],props:[compositeProps,{role:`tab`,"aria-controls":tabPanelId,"aria-selected":active,id,onClick,onFocus,onPointerDown,[ACTIVE_COMPOSITE_ITEM]:active?``:void 0,onKeyDownCapture(){isNavigatingRef.current=!0}},elementProps,getButtonProps]})}),script='!function(){const t=document.currentScript.previousElementSibling;if(!t)return;const e=t.closest(\'[role="tablist"]\');if(!e)return;const i=e.querySelector("[data-active]");if(!i)return;if(0===i.offsetWidth||0===e.offsetWidth)return;let o=0,n=0,h=0,l=0,r=0,f=0;function s(t){const e=getComputedStyle(t);let i=parseFloat(e.width)||0,o=parseFloat(e.height)||0;return(Math.round(i)!==t.offsetWidth||Math.round(o)!==t.offsetHeight)&&(i=t.offsetWidth,o=t.offsetHeight),{width:i,height:o}}if(null!=i&&null!=e){const{width:t,height:c}=s(i),{width:u,height:d}=s(e),a=i.getBoundingClientRect(),g=e.getBoundingClientRect(),p=u>0?g.width/u:1,b=d>0?g.height/d:1;if(Math.abs(p)>Number.EPSILON&&Math.abs(b)>Number.EPSILON){const t=a.left-g.left,i=a.top-g.top;o=t/p+e.scrollLeft-e.clientLeft,h=i/b+e.scrollTop-e.clientTop}else o=i.offsetLeft,h=i.offsetTop;r=t,f=c,n=e.scrollWidth-o-r,l=e.scrollHeight-h-f}function c(e,i){t.style.setProperty(`--active-tab-${e}`,`${i}px`)}c("left",o),c("right",n),c("top",h),c("bottom",l),c("width",r),c("height",f),r>0&&f>0&&t.removeAttribute("hidden")}();';let TabsIndicatorCssVars=function(TabsIndicatorCssVars$1){return TabsIndicatorCssVars$1.activeTabLeft=`--active-tab-left`,TabsIndicatorCssVars$1.activeTabRight=`--active-tab-right`,TabsIndicatorCssVars$1.activeTabTop=`--active-tab-top`,TabsIndicatorCssVars$1.activeTabBottom=`--active-tab-bottom`,TabsIndicatorCssVars$1.activeTabWidth=`--active-tab-width`,TabsIndicatorCssVars$1.activeTabHeight=`--active-tab-height`,TabsIndicatorCssVars$1}({});var stateAttributesMapping$1={...tabsStateAttributesMapping,activeTabPosition:()=>null,activeTabSize:()=>null};const TabsIndicator=import_react.forwardRef(function(componentProps,forwardedRef){let{className,render,renderBeforeHydration=!1,...elementProps}=componentProps,{nonce}=useCSPContext(),{getTabElementBySelectedValue,orientation,tabActivationDirection,value}=useTabsRootContext(),{tabsListElement}=useTabsListContext(),[isMounted,setIsMounted]=import_react.useState(!1),{value:activeTabValue}=useTabsRootContext();useOnMount(()=>setIsMounted(!0));let rerender=useForcedRerendering();import_react.useEffect(()=>{if(value!=null&&tabsListElement!=null&&typeof ResizeObserver<`u`){let resizeObserver=new ResizeObserver(rerender);return resizeObserver.observe(tabsListElement),()=>{resizeObserver.disconnect()}}},[value,tabsListElement,rerender]);let left=0,right=0,top$1=0,bottom=0,width=0,height=0,isTabSelected=!1;if(value!=null&&tabsListElement!=null){let activeTab=getTabElementBySelectedValue(value);if(isTabSelected=!0,activeTab!=null){let{width:computedWidth,height:computedHeight}=getCssDimensions(activeTab),{width:tabListWidth,height:tabListHeight}=getCssDimensions(tabsListElement),tabRect=activeTab.getBoundingClientRect(),tabsListRect=tabsListElement.getBoundingClientRect(),scaleX=tabListWidth>0?tabsListRect.width/tabListWidth:1,scaleY=tabListHeight>0?tabsListRect.height/tabListHeight:1;if(Math.abs(scaleX)>2**-52&&Math.abs(scaleY)>2**-52){let tabLeftDelta=tabRect.left-tabsListRect.left,tabTopDelta=tabRect.top-tabsListRect.top;left=tabLeftDelta/scaleX+tabsListElement.scrollLeft-tabsListElement.clientLeft,top$1=tabTopDelta/scaleY+tabsListElement.scrollTop-tabsListElement.clientTop}else left=activeTab.offsetLeft,top$1=activeTab.offsetTop;width=computedWidth,height=computedHeight,right=tabsListElement.scrollWidth-left-width,bottom=tabsListElement.scrollHeight-top$1-height}}let activeTabPosition=import_react.useMemo(()=>isTabSelected?{left,right,top:top$1,bottom}:null,[left,right,top$1,bottom,isTabSelected]),activeTabSize=import_react.useMemo(()=>isTabSelected?{width,height}:null,[width,height,isTabSelected]),style$1=import_react.useMemo(()=>{if(isTabSelected)return{[TabsIndicatorCssVars.activeTabLeft]:`${left}px`,[TabsIndicatorCssVars.activeTabRight]:`${right}px`,[TabsIndicatorCssVars.activeTabTop]:`${top$1}px`,[TabsIndicatorCssVars.activeTabBottom]:`${bottom}px`,[TabsIndicatorCssVars.activeTabWidth]:`${width}px`,[TabsIndicatorCssVars.activeTabHeight]:`${height}px`}},[left,right,top$1,bottom,width,height,isTabSelected]),displayIndicator=isTabSelected&&width>0&&height>0,element$3=useRenderElement(`span`,componentProps,{state:import_react.useMemo(()=>({orientation,activeTabPosition,activeTabSize,tabActivationDirection}),[orientation,activeTabPosition,activeTabSize,tabActivationDirection]),ref:forwardedRef,props:[{role:`presentation`,style:style$1,hidden:!displayIndicator},elementProps,{suppressHydrationWarning:!0}],stateAttributesMapping:stateAttributesMapping$1});return activeTabValue==null?null:(0,import_jsx_runtime.jsxs)(import_react.Fragment,{children:[element$3,!isMounted&&renderBeforeHydration&&(0,import_jsx_runtime.jsx)(`script`,{nonce,dangerouslySetInnerHTML:{__html:'!function(){const t=document.currentScript.previousElementSibling;if(!t)return;const e=t.closest(\'[role="tablist"]\');if(!e)return;const i=e.querySelector("[data-active]");if(!i)return;if(0===i.offsetWidth||0===e.offsetWidth)return;let o=0,n=0,h=0,l=0,r=0,f=0;function s(t){const e=getComputedStyle(t);let i=parseFloat(e.width)||0,o=parseFloat(e.height)||0;return(Math.round(i)!==t.offsetWidth||Math.round(o)!==t.offsetHeight)&&(i=t.offsetWidth,o=t.offsetHeight),{width:i,height:o}}if(null!=i&&null!=e){const{width:t,height:c}=s(i),{width:u,height:d}=s(e),a=i.getBoundingClientRect(),g=e.getBoundingClientRect(),p=u>0?g.width/u:1,b=d>0?g.height/d:1;if(Math.abs(p)>Number.EPSILON&&Math.abs(b)>Number.EPSILON){const t=a.left-g.left,i=a.top-g.top;o=t/p+e.scrollLeft-e.clientLeft,h=i/b+e.scrollTop-e.clientTop}else o=i.offsetLeft,h=i.offsetTop;r=t,f=c,n=e.scrollWidth-o-r,l=e.scrollHeight-h-f}function c(e,i){t.style.setProperty(`--active-tab-${e}`,`${i}px`)}c("left",o),c("right",n),c("top",h),c("bottom",l),c("width",r),c("height",f),r>0&&f>0&&t.removeAttribute("hidden")}();'},suppressHydrationWarning:!0})]})});let TabsPanelDataAttributes=function(TabsPanelDataAttributes$1){return TabsPanelDataAttributes$1.index=`data-index`,TabsPanelDataAttributes$1.activationDirection=`data-activation-direction`,TabsPanelDataAttributes$1.orientation=`data-orientation`,TabsPanelDataAttributes$1.hidden=`data-hidden`,TabsPanelDataAttributes$1}({});const TabsPanel$1=import_react.forwardRef(function(componentProps,forwardedRef){let{className,value,render,keepMounted=!1,...elementProps}=componentProps,{value:selectedValue,getTabIdByPanelValue,orientation,tabActivationDirection,registerMountedTabPanel,unregisterMountedTabPanel}=useTabsRootContext(),id=useBaseUiId(),{ref:listItemRef,index:index$4}=useCompositeListItem({metadata:import_react.useMemo(()=>({id,value}),[id,value])}),hidden=value!==selectedValue,correspondingTabId=getTabIdByPanelValue(value),element$3=useRenderElement(`div`,componentProps,{state:import_react.useMemo(()=>({hidden,orientation,tabActivationDirection}),[hidden,orientation,tabActivationDirection]),ref:[forwardedRef,listItemRef],props:[{"aria-labelledby":correspondingTabId,hidden,id:id??void 0,role:`tabpanel`,tabIndex:hidden?-1:0,[TabsPanelDataAttributes.index]:index$4},elementProps],stateAttributesMapping:tabsStateAttributesMapping});return useIsoLayoutEffect(()=>{if(!(hidden&&!keepMounted)&&id!=null)return registerMountedTabPanel(value,id),()=>{unregisterMountedTabPanel(value,id)}},[hidden,keepMounted,value,id,registerMountedTabPanel,unregisterMountedTabPanel]),!hidden||keepMounted?element$3:null});function isElementDisabled(element$3){return element$3==null||element$3.hasAttribute(`disabled`)||element$3.getAttribute(`aria-disabled`)===`true`}var EMPTY_ARRAY$1=[];function useCompositeRoot(params){let{itemSizes,cols=1,loopFocus=!0,dense=!1,orientation=`both`,direction,highlightedIndex:externalHighlightedIndex,onHighlightedIndexChange:externalSetHighlightedIndex,rootRef:externalRef,enableHomeAndEndKeys=!1,stopEventPropagation=!1,disabledIndices,modifierKeys=EMPTY_ARRAY$1}=params,[internalHighlightedIndex,internalSetHighlightedIndex]=import_react.useState(0),isGrid=cols>1,rootRef=import_react.useRef(null),mergedRef=useMergedRefs(rootRef,externalRef),elementsRef=import_react.useRef([]),hasSetDefaultIndexRef=import_react.useRef(!1),highlightedIndex=externalHighlightedIndex??internalHighlightedIndex,onHighlightedIndexChange=useStableCallback((index$4,shouldScrollIntoView=!1)=>{if((externalSetHighlightedIndex??internalSetHighlightedIndex)(index$4),shouldScrollIntoView){let newActiveItem=elementsRef.current[index$4];scrollIntoViewIfNeeded(rootRef.current,newActiveItem,direction,orientation)}}),onMapChange=useStableCallback(map=>{if(map.size===0||hasSetDefaultIndexRef.current)return;hasSetDefaultIndexRef.current=!0;let sortedElements=Array.from(map.keys()),activeItem=sortedElements.find(compositeElement=>compositeElement?.hasAttribute(`data-composite-item-active`))??null,activeIndex=activeItem?sortedElements.indexOf(activeItem):-1;activeIndex!==-1&&onHighlightedIndexChange(activeIndex),scrollIntoViewIfNeeded(rootRef.current,activeItem,direction,orientation)}),props=import_react.useMemo(()=>({"aria-orientation":orientation===`both`?void 0:orientation,ref:mergedRef,onFocus(event){!rootRef.current||!isNativeInput(event.target)||event.target.setSelectionRange(0,event.target.value.length??0)},onKeyDown(event){let RELEVANT_KEYS=enableHomeAndEndKeys?ALL_KEYS:ARROW_KEYS;if(!RELEVANT_KEYS.has(event.key)||isModifierKeySet(event,modifierKeys)||!rootRef.current)return;let isRtl=direction===`rtl`,horizontalForwardKey=isRtl?ARROW_LEFT:ARROW_RIGHT,forwardKey={horizontal:horizontalForwardKey,vertical:ARROW_DOWN,both:horizontalForwardKey}[orientation],horizontalBackwardKey=isRtl?ARROW_RIGHT:ARROW_LEFT,backwardKey={horizontal:horizontalBackwardKey,vertical:ARROW_UP,both:horizontalBackwardKey}[orientation];if(isNativeInput(event.target)&&!isElementDisabled(event.target)){let selectionStart=event.target.selectionStart,selectionEnd=event.target.selectionEnd,textContent=event.target.value??``;if(selectionStart==null||event.shiftKey||selectionStart!==selectionEnd||event.key!==backwardKey&&selectionStart<textContent.length||event.key!==forwardKey&&selectionStart>0)return}let nextIndex=highlightedIndex,minIndex=getMinListIndex(elementsRef,disabledIndices),maxIndex=getMaxListIndex(elementsRef,disabledIndices);if(isGrid){let sizes=itemSizes||Array.from({length:elementsRef.current.length},()=>({width:1,height:1})),cellMap=createGridCellMap(sizes,cols,dense),minGridIndex=cellMap.findIndex(index$4=>index$4!=null&&!isListIndexDisabled(elementsRef,index$4,disabledIndices)),maxGridIndex=cellMap.reduce((foundIndex,index$4,cellIndex)=>index$4!=null&&!isListIndexDisabled(elementsRef,index$4,disabledIndices)?cellIndex:foundIndex,-1);nextIndex=cellMap[getGridNavigatedIndex({current:cellMap.map(itemIndex=>itemIndex?elementsRef.current[itemIndex]:null)},{event,orientation,loopFocus,cols,disabledIndices:getGridCellIndices([...disabledIndices||elementsRef.current.map((_$2,index$4)=>isListIndexDisabled(elementsRef,index$4)?index$4:void 0),void 0],cellMap),minIndex:minGridIndex,maxIndex:maxGridIndex,prevIndex:getGridCellIndexOfCorner(highlightedIndex>maxIndex?minIndex:highlightedIndex,sizes,cellMap,cols,event.key===`ArrowDown`?`bl`:event.key===`ArrowRight`?`tr`:`tl`),rtl:isRtl})]}let forwardKeys={horizontal:[horizontalForwardKey],vertical:[ARROW_DOWN],both:[horizontalForwardKey,ARROW_DOWN]}[orientation],backwardKeys={horizontal:[horizontalBackwardKey],vertical:[ARROW_UP],both:[horizontalBackwardKey,ARROW_UP]}[orientation],preventedKeys=isGrid?RELEVANT_KEYS:{horizontal:enableHomeAndEndKeys?HORIZONTAL_KEYS_WITH_EXTRA_KEYS:HORIZONTAL_KEYS,vertical:enableHomeAndEndKeys?VERTICAL_KEYS_WITH_EXTRA_KEYS:VERTICAL_KEYS,both:RELEVANT_KEYS}[orientation];enableHomeAndEndKeys&&(event.key===`Home`?nextIndex=minIndex:event.key===`End`&&(nextIndex=maxIndex)),nextIndex===highlightedIndex&&(forwardKeys.includes(event.key)||backwardKeys.includes(event.key))&&(nextIndex=loopFocus&&nextIndex===maxIndex&&forwardKeys.includes(event.key)?minIndex:loopFocus&&nextIndex===minIndex&&backwardKeys.includes(event.key)?maxIndex:findNonDisabledListIndex(elementsRef,{startingIndex:nextIndex,decrement:backwardKeys.includes(event.key),disabledIndices})),nextIndex!==highlightedIndex&&!isIndexOutOfListBounds(elementsRef,nextIndex)&&(stopEventPropagation&&event.stopPropagation(),preventedKeys.has(event.key)&&event.preventDefault(),onHighlightedIndexChange(nextIndex,!0),queueMicrotask(()=>{elementsRef.current[nextIndex]?.focus()}))}}),[cols,dense,direction,disabledIndices,elementsRef,enableHomeAndEndKeys,highlightedIndex,isGrid,itemSizes,loopFocus,mergedRef,modifierKeys,onHighlightedIndexChange,orientation,stopEventPropagation]);return import_react.useMemo(()=>({props,highlightedIndex,onHighlightedIndexChange,elementsRef,disabledIndices,onMapChange,relayKeyboardEvent:props.onKeyDown}),[props,highlightedIndex,onHighlightedIndexChange,elementsRef,disabledIndices,onMapChange])}function isModifierKeySet(event,ignoredModifierKeys){for(let key$1 of MODIFIER_KEYS$1.values())if(!ignoredModifierKeys.includes(key$1)&&event.getModifierState(key$1))return!0;return!1}function CompositeRoot(componentProps){let{render,className,refs=EMPTY_ARRAY,props=EMPTY_ARRAY,state:state$1=EMPTY_OBJECT,stateAttributesMapping:stateAttributesMapping$13,highlightedIndex:highlightedIndexProp,onHighlightedIndexChange:onHighlightedIndexChangeProp,orientation,dense,itemSizes,loopFocus,cols,enableHomeAndEndKeys,onMapChange:onMapChangeProp,stopEventPropagation=!0,rootRef,disabledIndices,modifierKeys,highlightItemOnHover=!1,tag=`div`,...elementProps}=componentProps,{props:defaultProps,highlightedIndex,onHighlightedIndexChange,elementsRef,onMapChange:onMapChangeUnwrapped,relayKeyboardEvent}=useCompositeRoot({itemSizes,cols,loopFocus,dense,orientation,highlightedIndex:highlightedIndexProp,onHighlightedIndexChange:onHighlightedIndexChangeProp,rootRef,stopEventPropagation,enableHomeAndEndKeys,direction:useDirection(),disabledIndices,modifierKeys}),element$3=useRenderElement(tag,componentProps,{state:state$1,ref:refs,props:[defaultProps,...props,elementProps],stateAttributesMapping:stateAttributesMapping$13}),contextValue=import_react.useMemo(()=>({highlightedIndex,onHighlightedIndexChange,highlightItemOnHover,relayKeyboardEvent}),[highlightedIndex,onHighlightedIndexChange,highlightItemOnHover,relayKeyboardEvent]);return(0,import_jsx_runtime.jsx)(CompositeRootContext.Provider,{value:contextValue,children:(0,import_jsx_runtime.jsx)(CompositeList,{elementsRef,onMapChange:newMap=>{onMapChangeProp?.(newMap),onMapChangeUnwrapped(newMap)},children:element$3})})}const TabsList$1=import_react.forwardRef(function(componentProps,forwardedRef){let{activateOnFocus=!1,className,loopFocus=!0,render,...elementProps}=componentProps,{getTabElementBySelectedValue,onValueChange,orientation,value,setTabMap,tabActivationDirection}=useTabsRootContext(),[highlightedTabIndex,setHighlightedTabIndex]=import_react.useState(0),[tabsListElement,setTabsListElement]=import_react.useState(null),detectActivationDirection=useActivationDirectionDetector(value,orientation,tabsListElement,getTabElementBySelectedValue),onTabActivation=useStableCallback((newValue,eventDetails)=>{newValue!==value&&(eventDetails.activationDirection=detectActivationDirection(newValue),onValueChange(newValue,eventDetails))}),state$1=import_react.useMemo(()=>({orientation,tabActivationDirection}),[orientation,tabActivationDirection]),defaultProps={"aria-orientation":orientation===`vertical`?`vertical`:void 0,role:`tablist`},tabsListContextValue=import_react.useMemo(()=>({activateOnFocus,highlightedTabIndex,onTabActivation,setHighlightedTabIndex,tabsListElement,value}),[activateOnFocus,highlightedTabIndex,onTabActivation,setHighlightedTabIndex,tabsListElement,value]);return(0,import_jsx_runtime.jsx)(TabsListContext.Provider,{value:tabsListContextValue,children:(0,import_jsx_runtime.jsx)(CompositeRoot,{render,className,state:state$1,refs:[forwardedRef,setTabsListElement],props:[defaultProps,elementProps],stateAttributesMapping:tabsStateAttributesMapping,highlightedIndex:highlightedTabIndex,enableHomeAndEndKeys:!0,loopFocus,orientation,onHighlightedIndexChange:setHighlightedTabIndex,onMapChange:setTabMap,disabledIndices:EMPTY_ARRAY})})});function getInset(tab$1,tabsList){let{left:tabLeft,top:tabTop}=tab$1.getBoundingClientRect(),{left:listLeft,top:listTop}=tabsList.getBoundingClientRect();return{left:tabLeft-listLeft,top:tabTop-listTop}}function useActivationDirectionDetector(activeTabValue,orientation,tabsListElement,getTabElement){let[previousTabEdge,setPreviousTabEdge]=import_react.useState(null);return useIsoLayoutEffect(()=>{if(activeTabValue==null||tabsListElement==null){setPreviousTabEdge(null);return}let activeTab=getTabElement(activeTabValue);if(activeTab==null){setPreviousTabEdge(null);return}let{left,top:top$1}=getInset(activeTab,tabsListElement);setPreviousTabEdge(orientation===`horizontal`?left:top$1)},[orientation,getTabElement,tabsListElement,activeTabValue]),import_react.useCallback(newValue=>{if(newValue===activeTabValue)return`none`;if(newValue==null)return setPreviousTabEdge(null),`none`;if(newValue!=null&&tabsListElement!=null){let activeTabElement=getTabElement(newValue);if(activeTabElement!=null){let{left,top:top$1}=getInset(activeTabElement,tabsListElement);if(previousTabEdge==null)return setPreviousTabEdge(orientation===`horizontal`?left:top$1),`none`;if(orientation===`horizontal`){if(left<previousTabEdge)return setPreviousTabEdge(left),`left`;if(left>previousTabEdge)return setPreviousTabEdge(left),`right`}else if(top$1<previousTabEdge)return setPreviousTabEdge(top$1),`up`;else if(top$1>previousTabEdge)return setPreviousTabEdge(top$1),`down`}}return`none`},[getTabElement,orientation,previousTabEdge,tabsListElement,activeTabValue])}function Tabs({className,...props}){return(0,import_jsx_runtime.jsx)(TabsRoot,{className:cn(`flex flex-col gap-2 data-[orientation=vertical]:flex-row`,className),"data-slot":`tabs`,...props})}function TabsList({variant=`default`,className,children,...props}){return(0,import_jsx_runtime.jsxs)(TabsList$1,{className:cn(`relative z-0 flex w-fit items-center justify-center gap-x-0.5 text-muted-foreground`,`data-[orientation=vertical]:flex-col`,variant===`default`?`rounded-lg bg-muted p-0.5 text-muted-foreground/72`:`data-[orientation=vertical]:px-1 data-[orientation=horizontal]:py-1 *:data-[slot=tabs-trigger]:hover:bg-accent`,className),"data-slot":`tabs-list`,...props,children:[children,(0,import_jsx_runtime.jsx)(TabsIndicator,{className:cn(`-translate-y-(--active-tab-bottom) absolute bottom-0 left-0 h-(--active-tab-height) w-(--active-tab-width) translate-x-(--active-tab-left) transition-[width,translate] duration-200 ease-in-out`,variant===`underline`?`data-[orientation=vertical]:-translate-x-px z-10 bg-primary data-[orientation=horizontal]:h-0.5 data-[orientation=vertical]:w-0.5 data-[orientation=horizontal]:translate-y-px`:`-z-1 rounded-md bg-background shadow-sm dark:bg-accent`),"data-slot":`tab-indicator`})]})}function TabsTab({className,...props}){return(0,import_jsx_runtime.jsx)(TabsTab$1,{className:cn(`[&_svg]:-mx-0.5 flex shrink-0 grow cursor-pointer items-center justify-center whitespace-nowrap rounded-md border border-transparent font-medium text-base outline-none transition-[color,background-color,box-shadow] focus-visible:ring-2 focus-visible:ring-ring data-disabled:pointer-events-none data-disabled:opacity-64 sm:text-sm [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0`,`hover:text-muted-foreground data-active:text-foreground`,`h-9 gap-1.5 px-[calc(--spacing(2.5)-1px)] sm:h-8`,`data-[orientation=vertical]:w-full data-[orientation=vertical]:justify-start`,className),"data-slot":`tabs-trigger`,...props})}function TabsPanel({className,...props}){return(0,import_jsx_runtime.jsx)(TabsPanel$1,{className:cn(`flex-1 outline-none`,className),"data-slot":`tabs-content`,...props})}function TableSchemaContent({connectionId,schema,table:table$1,onNewQuery}){let[visitedTabs,setVisitedTabs]=(0,import_react.useState)(new Set([`columns`])),handleTabChange=value=>{setVisitedTabs(prev=>new Set(prev).add(value))},{data:columns,isLoading:columnsLoading}=useColumns(connectionId,schema,table$1),{data:tableInfo,isLoading:tableInfoLoading}=useTableInfo(connectionId,schema,table$1),{data:indexes,isLoading:indexesLoading}=useIndexes(connectionId,schema,table$1,visitedTabs.has(`indexes`)),{data:constraints,isLoading:constraintsLoading}=useConstraints(connectionId,schema,table$1,visitedTabs.has(`constraints`)),{data:triggers,isLoading:triggersLoading}=useTriggers(connectionId,schema,table$1,visitedTabs.has(`triggers`)),{data:policies,isLoading:policiesLoading}=usePolicies(connectionId,schema,table$1,visitedTabs.has(`policies`)),{data:grants,isLoading:grantsLoading}=useGrants(connectionId,schema,table$1,visitedTabs.has(`grants`)),handleNewQuery=()=>{onNewQuery?.(`SELECT * FROM "${schema}"."${table$1}" LIMIT 100;`)},kind=tableInfo?.kind||`table`;return(0,import_jsx_runtime.jsx)(ScrollArea,{className:`h-full`,children:(0,import_jsx_runtime.jsxs)(`div`,{className:`p-4 space-y-6`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(`h1`,{className:`text-lg font-semibold`,children:table$1}),(0,import_jsx_runtime.jsx)(Badge,{variant:`secondary`,children:schema}),(0,import_jsx_runtime.jsx)(Badge,{variant:`muted`,children:getKindLabel(kind)}),(0,import_jsx_runtime.jsx)(Button,{variant:`outline`,size:`xs`,onClick:handleNewQuery,children:`New Query`})]}),(0,import_jsx_runtime.jsx)(`section`,{children:tableInfoLoading?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`Loading...`}):tableInfo?(0,import_jsx_runtime.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-4 text-sm`,children:[(0,import_jsx_runtime.jsx)(InfoItem,{label:`Owner`,value:tableInfo.owner}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Rows (est.)`,value:formatRowCount(tableInfo.rowCount)}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Total Size`,value:formatBytes(tableInfo.totalSize)}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Table Size`,value:formatBytes(tableInfo.tableSize)}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Index Size`,value:formatBytes(tableInfo.indexSize)}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Encoding`,value:tableInfo.encoding}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Collation`,value:tableInfo.collation}),tableInfo.comment&&(0,import_jsx_runtime.jsxs)(`div`,{className:`col-span-2 md:col-span-4`,children:[(0,import_jsx_runtime.jsx)(`div`,{className:`text-gray-500`,children:`Comment`}),(0,import_jsx_runtime.jsx)(`div`,{children:tableInfo.comment})]})]}):null}),(0,import_jsx_runtime.jsxs)(Tabs,{defaultValue:`columns`,className:`flex-1`,onValueChange:value=>handleTabChange(value),children:[(0,import_jsx_runtime.jsxs)(TabsList,{variant:`underline`,children:[(0,import_jsx_runtime.jsx)(TabsTab,{value:`columns`,children:`Columns`}),(0,import_jsx_runtime.jsx)(TabsTab,{value:`indexes`,children:`Indexes`}),(0,import_jsx_runtime.jsx)(TabsTab,{value:`constraints`,children:`Constraints`}),(0,import_jsx_runtime.jsx)(TabsTab,{value:`triggers`,children:`Triggers`}),(0,import_jsx_runtime.jsx)(TabsTab,{value:`policies`,children:`Policies`}),(0,import_jsx_runtime.jsx)(TabsTab,{value:`grants`,children:`Grants`})]}),(0,import_jsx_runtime.jsx)(TabsPanel,{value:`columns`,className:`pt-4`,children:(0,import_jsx_runtime.jsx)(ColumnsTable,{columns,isLoading:columnsLoading})}),(0,import_jsx_runtime.jsx)(TabsPanel,{value:`indexes`,className:`pt-4`,children:(0,import_jsx_runtime.jsx)(IndexesTable,{indexes,isLoading:indexesLoading})}),(0,import_jsx_runtime.jsx)(TabsPanel,{value:`constraints`,className:`pt-4`,children:(0,import_jsx_runtime.jsx)(ConstraintsTable,{constraints,isLoading:constraintsLoading})}),(0,import_jsx_runtime.jsx)(TabsPanel,{value:`triggers`,className:`pt-4`,children:(0,import_jsx_runtime.jsx)(TriggersTable,{triggers,isLoading:triggersLoading})}),(0,import_jsx_runtime.jsx)(TabsPanel,{value:`policies`,className:`pt-4`,children:(0,import_jsx_runtime.jsx)(PoliciesTable,{policies,isLoading:policiesLoading})}),(0,import_jsx_runtime.jsx)(TabsPanel,{value:`grants`,className:`pt-4`,children:(0,import_jsx_runtime.jsx)(GrantsTable,{grants,isLoading:grantsLoading})})]})]})})}function ViewSchemaContent({connectionId,schema,view,objectType,onNewQuery}){let{data:columns,isLoading:columnsLoading}=useColumns(connectionId,schema,view),{data:tableInfo,isLoading:tableInfoLoading}=useTableInfo(connectionId,schema,view),handleNewQuery=()=>{onNewQuery?.(`SELECT * FROM "${schema}"."${view}" LIMIT 100;`)},isMaterializedView=objectType===`materialized_view`,kind=tableInfo?.kind||objectType;return(0,import_jsx_runtime.jsx)(ScrollArea,{className:`h-full`,children:(0,import_jsx_runtime.jsxs)(`div`,{className:`p-4 space-y-6`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(`h1`,{className:`text-lg font-semibold`,children:view}),(0,import_jsx_runtime.jsx)(Badge,{variant:`secondary`,children:schema}),(0,import_jsx_runtime.jsx)(Badge,{variant:`muted`,children:getKindLabel(kind)}),(0,import_jsx_runtime.jsx)(Button,{variant:`outline`,size:`xs`,onClick:handleNewQuery,children:`New Query`})]}),(0,import_jsx_runtime.jsx)(`section`,{children:tableInfoLoading?(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`Loading...`}):tableInfo?(0,import_jsx_runtime.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-4 text-sm`,children:[(0,import_jsx_runtime.jsx)(InfoItem,{label:`Owner`,value:tableInfo.owner}),isMaterializedView&&(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(InfoItem,{label:`Rows (est.)`,value:formatRowCount(tableInfo.rowCount)}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Total Size`,value:formatBytes(tableInfo.totalSize)}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Table Size`,value:formatBytes(tableInfo.tableSize)}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Index Size`,value:formatBytes(tableInfo.indexSize)})]}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Encoding`,value:tableInfo.encoding}),(0,import_jsx_runtime.jsx)(InfoItem,{label:`Collation`,value:tableInfo.collation}),tableInfo.comment&&(0,import_jsx_runtime.jsxs)(`div`,{className:`col-span-2 md:col-span-4`,children:[(0,import_jsx_runtime.jsx)(`div`,{className:`text-gray-500`,children:`Comment`}),(0,import_jsx_runtime.jsx)(`div`,{children:tableInfo.comment})]})]}):null}),(0,import_jsx_runtime.jsx)(`section`,{children:(0,import_jsx_runtime.jsx)(ColumnsTable,{columns,isLoading:columnsLoading})}),tableInfo?.definition&&(0,import_jsx_runtime.jsx)(SQLDefinition,{sql:tableInfo.definition})]})})}function FunctionArgumentList({arguments:args}){return args.length===0?(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm text-gray-500`,children:`No arguments`}):(0,import_jsx_runtime.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:args.map((arg,index$4)=>(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-1.5 text-sm`,children:[(0,import_jsx_runtime.jsx)(`span`,{className:`font-medium text-gray-700`,children:arg.name||`$${index$4+1}`}),(0,import_jsx_runtime.jsx)(`span`,{className:`px-1.5 py-0.5 bg-gray-100 rounded text-gray-600`,children:arg.type}),arg.mode&&(0,import_jsx_runtime.jsxs)(`span`,{className:`text-gray-400`,children:[`(`,arg.mode,`)`]}),arg.defaultValue&&(0,import_jsx_runtime.jsxs)(`span`,{className:`text-gray-400`,children:[`= `,arg.defaultValue]})]},arg.name||`arg_${index$4}`))})}var HoverSlotStyles={position:`absolute`,top:0,bottom:0,textAlign:`center`},DIFFS_TAG_NAME=`diffs-container`,COMMIT_METADATA_SPLIT=/(?=^From [a-f0-9]+ .+$)/m,GIT_DIFF_FILE_BREAK_REGEX=/(?=^diff --git)/gm,UNIFIED_DIFF_FILE_BREAK_REGEX=/(?=^---\s+\S)/gm,FILE_CONTEXT_BLOB=/(?=^@@ )/gm,HUNK_HEADER=/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@(?: (.*))?/m,SPLIT_WITH_NEWLINES=RegExp(`(?<=\\n)`,``),FILENAME_HEADER_REGEX=/^(---|\+\+\+)\s+([^\t\r\n]+)/,FILENAME_HEADER_REGEX_GIT=/^(---|\+\+\+)\s+[ab]\/([^\t\r\n]+)/,ALTERNATE_FILE_NAMES_GIT=/^diff --git (?:"a\/(.+?)"|a\/(.+?)) (?:"b\/(.+?)"|b\/(.+?))$/,FILE_MODE_FROM_INDEX=/^index (?:[0-9a-f]+)\.\.(?:[0-9a-f]+)(?: (\d+))?/,HEADER_METADATA_SLOT_ID=`header-metadata`,DEFAULT_THEMES={dark:`pierre-dark`,light:`pierre-light`},UNSAFE_CSS_ATTRIBUTE=`data-unsafe-css`;function getLineAnnotationName(annotation){return`annotation-${`side`in annotation?`${annotation.side}-`:``}${annotation.lineNumber}`}function templateRender(children,__html){return typeof window>`u`&&__html!=null?(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(`template`,{shadowrootmode:`open`,dangerouslySetInnerHTML:{__html}}),children]}):(0,import_jsx_runtime.jsx)(import_jsx_runtime.Fragment,{children})}var ResolvedThemes=new Map,ResolvingThemes=new Map,RegisteredCustomThemes=new Map,AttachedThemes=new Set;function attachResolvedThemes(themes,highlighter$1){themes=Array.isArray(themes)?themes:[themes];for(let themeRef of themes){let resolvedTheme;if(typeof themeRef==`string`){if(resolvedTheme=ResolvedThemes.get(themeRef),resolvedTheme==null)throw Error(`loadResolvedThemes: ${themeRef} is not resolved, you must resolve it before calling loadResolvedThemes`)}else resolvedTheme=themeRef,themeRef=themeRef.name,ResolvedThemes.has(themeRef)||ResolvedThemes.set(themeRef,resolvedTheme);AttachedThemes.has(themeRef)||(AttachedThemes.add(themeRef),highlighter$1.loadThemeSync(resolvedTheme))}}var ResolvedLanguages=new Map,ResolvingLanguages=new Map,AttachedLanguages=new Set;function attachResolvedLanguages(resolvedLanguages,highlighter$1){resolvedLanguages=Array.isArray(resolvedLanguages)?resolvedLanguages:[resolvedLanguages];for(let resolvedLang of resolvedLanguages){if(AttachedLanguages.has(resolvedLang.name))continue;let lang=ResolvedLanguages.get(resolvedLang.name);lang??(lang=resolvedLang,ResolvedLanguages.set(resolvedLang.name,lang)),AttachedLanguages.add(lang.name),highlighter$1.loadLanguageSync(lang.data)}}function isWorkerContext(){return typeof WorkerGlobalScope<`u`&&typeof self<`u`&&self instanceof WorkerGlobalScope}var ShikiError$1=class extends Error{constructor(message){super(message),this.name=`ShikiError`}};function clone(something){return doClone(something)}function doClone(something){return Array.isArray(something)?cloneArray(something):something instanceof RegExp?something:typeof something==`object`?cloneObj(something):something}function cloneArray(arr){let r$4=[];for(let i$3=0,len=arr.length;i$3<len;i$3++)r$4[i$3]=doClone(arr[i$3]);return r$4}function cloneObj(obj){let r$4={};for(let key$1 in obj)r$4[key$1]=doClone(obj[key$1]);return r$4}function mergeObjects(target,...sources){return sources.forEach(source=>{for(let key$1 in source)target[key$1]=source[key$1]}),target}function basename(path){let idx=~path.lastIndexOf(`/`)||~path.lastIndexOf(`\\`);return idx===0?path:~idx===path.length-1?basename(path.substring(0,path.length-1)):path.substr(~idx+1)}var CAPTURING_REGEX_SOURCE=/\$(\d+)|\${(\d+):\/(downcase|upcase)}/g,RegexSource=class{static hasCaptures(regexSource){return regexSource===null?!1:(CAPTURING_REGEX_SOURCE.lastIndex=0,CAPTURING_REGEX_SOURCE.test(regexSource))}static replaceCaptures(regexSource,captureSource,captureIndices){return regexSource.replace(CAPTURING_REGEX_SOURCE,(match,index$4,commandIndex,command$1)=>{let capture=captureIndices[parseInt(index$4||commandIndex,10)];if(capture){let result=captureSource.substring(capture.start,capture.end);for(;result[0]===`.`;)result=result.substring(1);switch(command$1){case`downcase`:return result.toLowerCase();case`upcase`:return result.toUpperCase();default:return result}}else return match})}};function strcmp(a$1,b$2){return a$1<b$2?-1:a$1>b$2?1:0}function strArrCmp(a$1,b$2){if(a$1===null&&b$2===null)return 0;if(!a$1)return-1;if(!b$2)return 1;let len1=a$1.length,len2=b$2.length;if(len1===len2){for(let i$3=0;i$3<len1;i$3++){let res=strcmp(a$1[i$3],b$2[i$3]);if(res!==0)return res}return 0}return len1-len2}function isValidHexColor(hex){return!!(/^#[0-9a-f]{6}$/i.test(hex)||/^#[0-9a-f]{8}$/i.test(hex)||/^#[0-9a-f]{3}$/i.test(hex)||/^#[0-9a-f]{4}$/i.test(hex))}function escapeRegExpCharacters(value){return value.replace(/[\-\\\{\}\*\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,`\\$&`)}var CachedFn=class{constructor(fn){this.fn=fn}cache=new Map;get(key$1){if(this.cache.has(key$1))return this.cache.get(key$1);let value=this.fn(key$1);return this.cache.set(key$1,value),value}},Theme=class{constructor(_colorMap,_defaults,_root){this._colorMap=_colorMap,this._defaults=_defaults,this._root=_root}static createFromRawTheme(source,colorMap){return this.createFromParsedTheme(parseTheme(source),colorMap)}static createFromParsedTheme(source,colorMap){return resolveParsedThemeRules(source,colorMap)}_cachedMatchRoot=new CachedFn(scopeName=>this._root.match(scopeName));getColorMap(){return this._colorMap.getColorMap()}getDefaults(){return this._defaults}match(scopePath){if(scopePath===null)return this._defaults;let scopeName=scopePath.scopeName,effectiveRule=this._cachedMatchRoot.get(scopeName).find(v$1=>_scopePathMatchesParentScopes(scopePath.parent,v$1.parentScopes));return effectiveRule?new StyleAttributes(effectiveRule.fontStyle,effectiveRule.foreground,effectiveRule.background):null}},ScopeStack=class _ScopeStack{constructor(parent,scopeName){this.parent=parent,this.scopeName=scopeName}static push(path,scopeNames){for(let name$2 of scopeNames)path=new _ScopeStack(path,name$2);return path}static from(...segments){let result=null;for(let i$3=0;i$3<segments.length;i$3++)result=new _ScopeStack(result,segments[i$3]);return result}push(scopeName){return new _ScopeStack(this,scopeName)}getSegments(){let item=this,result=[];for(;item;)result.push(item.scopeName),item=item.parent;return result.reverse(),result}toString(){return this.getSegments().join(` `)}extends(other){return this===other?!0:this.parent===null?!1:this.parent.extends(other)}getExtensionIfDefined(base$1){let result=[],item=this;for(;item&&item!==base$1;)result.push(item.scopeName),item=item.parent;return item===base$1?result.reverse():void 0}};function _scopePathMatchesParentScopes(scopePath,parentScopes){if(parentScopes.length===0)return!0;for(let index$4=0;index$4<parentScopes.length;index$4++){let scopePattern=parentScopes[index$4],scopeMustMatch=!1;if(scopePattern===`>`){if(index$4===parentScopes.length-1)return!1;scopePattern=parentScopes[++index$4],scopeMustMatch=!0}for(;scopePath&&!_matchesScope(scopePath.scopeName,scopePattern);){if(scopeMustMatch)return!1;scopePath=scopePath.parent}if(!scopePath)return!1;scopePath=scopePath.parent}return!0}function _matchesScope(scopeName,scopePattern){return scopePattern===scopeName||scopeName.startsWith(scopePattern)&&scopeName[scopePattern.length]===`.`}var StyleAttributes=class{constructor(fontStyle,foregroundId,backgroundId){this.fontStyle=fontStyle,this.foregroundId=foregroundId,this.backgroundId=backgroundId}};function parseTheme(source){if(!source||!source.settings||!Array.isArray(source.settings))return[];let settings=source.settings,result=[],resultLen=0;for(let i$3=0,len=settings.length;i$3<len;i$3++){let entry=settings[i$3];if(!entry.settings)continue;let scopes;if(typeof entry.scope==`string`){let _scope=entry.scope;_scope=_scope.replace(/^[,]+/,``),_scope=_scope.replace(/[,]+$/,``),scopes=_scope.split(`,`)}else scopes=Array.isArray(entry.scope)?entry.scope:[``];let fontStyle=-1;if(typeof entry.settings.fontStyle==`string`){fontStyle=0;let segments=entry.settings.fontStyle.split(` `);for(let j$1=0,lenJ=segments.length;j$1<lenJ;j$1++)switch(segments[j$1]){case`italic`:fontStyle|=1;break;case`bold`:fontStyle|=2;break;case`underline`:fontStyle|=4;break;case`strikethrough`:fontStyle|=8;break}}let foreground=null;typeof entry.settings.foreground==`string`&&isValidHexColor(entry.settings.foreground)&&(foreground=entry.settings.foreground);let background=null;typeof entry.settings.background==`string`&&isValidHexColor(entry.settings.background)&&(background=entry.settings.background);for(let j$1=0,lenJ=scopes.length;j$1<lenJ;j$1++){let segments=scopes[j$1].trim().split(` `),scope=segments[segments.length-1],parentScopes=null;segments.length>1&&(parentScopes=segments.slice(0,segments.length-1),parentScopes.reverse()),result[resultLen++]=new ParsedThemeRule(scope,parentScopes,i$3,fontStyle,foreground,background)}}return result}var ParsedThemeRule=class{constructor(scope,parentScopes,index$4,fontStyle,foreground,background){this.scope=scope,this.parentScopes=parentScopes,this.index=index$4,this.fontStyle=fontStyle,this.foreground=foreground,this.background=background}},FontStyle=(FontStyle2=>(FontStyle2[FontStyle2.NotSet=-1]=`NotSet`,FontStyle2[FontStyle2.None=0]=`None`,FontStyle2[FontStyle2.Italic=1]=`Italic`,FontStyle2[FontStyle2.Bold=2]=`Bold`,FontStyle2[FontStyle2.Underline=4]=`Underline`,FontStyle2[FontStyle2.Strikethrough=8]=`Strikethrough`,FontStyle2))(FontStyle||{});function resolveParsedThemeRules(parsedThemeRules,_colorMap){parsedThemeRules.sort((a$1,b$2)=>{let r$4=strcmp(a$1.scope,b$2.scope);return r$4!==0||(r$4=strArrCmp(a$1.parentScopes,b$2.parentScopes),r$4!==0)?r$4:a$1.index-b$2.index});let defaultFontStyle=0,defaultForeground=`#000000`,defaultBackground=`#ffffff`;for(;parsedThemeRules.length>=1&&parsedThemeRules[0].scope===``;){let incomingDefaults=parsedThemeRules.shift();incomingDefaults.fontStyle!==-1&&(defaultFontStyle=incomingDefaults.fontStyle),incomingDefaults.foreground!==null&&(defaultForeground=incomingDefaults.foreground),incomingDefaults.background!==null&&(defaultBackground=incomingDefaults.background)}let colorMap=new ColorMap(_colorMap),defaults$2=new StyleAttributes(defaultFontStyle,colorMap.getId(defaultForeground),colorMap.getId(defaultBackground)),root$4=new ThemeTrieElement(new ThemeTrieElementRule(0,null,-1,0,0),[]);for(let i$3=0,len=parsedThemeRules.length;i$3<len;i$3++){let rule=parsedThemeRules[i$3];root$4.insert(0,rule.scope,rule.parentScopes,rule.fontStyle,colorMap.getId(rule.foreground),colorMap.getId(rule.background))}return new Theme(colorMap,defaults$2,root$4)}var ColorMap=class{_isFrozen;_lastColorId;_id2color;_color2id;constructor(_colorMap){if(this._lastColorId=0,this._id2color=[],this._color2id=Object.create(null),Array.isArray(_colorMap)){this._isFrozen=!0;for(let i$3=0,len=_colorMap.length;i$3<len;i$3++)this._color2id[_colorMap[i$3]]=i$3,this._id2color[i$3]=_colorMap[i$3]}else this._isFrozen=!1}getId(color$1){if(color$1===null)return 0;color$1=color$1.toUpperCase();let value=this._color2id[color$1];if(value)return value;if(this._isFrozen)throw Error(`Missing color in color map - ${color$1}`);return value=++this._lastColorId,this._color2id[color$1]=value,this._id2color[value]=color$1,value}getColorMap(){return this._id2color.slice(0)}},emptyParentScopes=Object.freeze([]),ThemeTrieElementRule=class _ThemeTrieElementRule{scopeDepth;parentScopes;fontStyle;foreground;background;constructor(scopeDepth,parentScopes,fontStyle,foreground,background){this.scopeDepth=scopeDepth,this.parentScopes=parentScopes||emptyParentScopes,this.fontStyle=fontStyle,this.foreground=foreground,this.background=background}clone(){return new _ThemeTrieElementRule(this.scopeDepth,this.parentScopes,this.fontStyle,this.foreground,this.background)}static cloneArr(arr){let r$4=[];for(let i$3=0,len=arr.length;i$3<len;i$3++)r$4[i$3]=arr[i$3].clone();return r$4}acceptOverwrite(scopeDepth,fontStyle,foreground,background){this.scopeDepth>scopeDepth?console.log(`how did this happen?`):this.scopeDepth=scopeDepth,fontStyle!==-1&&(this.fontStyle=fontStyle),foreground!==0&&(this.foreground=foreground),background!==0&&(this.background=background)}},ThemeTrieElement=class _ThemeTrieElement{constructor(_mainRule,rulesWithParentScopes=[],_children={}){this._mainRule=_mainRule,this._children=_children,this._rulesWithParentScopes=rulesWithParentScopes}_rulesWithParentScopes;static _cmpBySpecificity(a$1,b$2){if(a$1.scopeDepth!==b$2.scopeDepth)return b$2.scopeDepth-a$1.scopeDepth;let aParentIndex=0,bParentIndex=0;for(;a$1.parentScopes[aParentIndex]===`>`&&aParentIndex++,b$2.parentScopes[bParentIndex]===`>`&&bParentIndex++,!(aParentIndex>=a$1.parentScopes.length||bParentIndex>=b$2.parentScopes.length);){let parentScopeLengthDiff=b$2.parentScopes[bParentIndex].length-a$1.parentScopes[aParentIndex].length;if(parentScopeLengthDiff!==0)return parentScopeLengthDiff;aParentIndex++,bParentIndex++}return b$2.parentScopes.length-a$1.parentScopes.length}match(scope){if(scope!==``){let dotIndex=scope.indexOf(`.`),head$1,tail;if(dotIndex===-1?(head$1=scope,tail=``):(head$1=scope.substring(0,dotIndex),tail=scope.substring(dotIndex+1)),this._children.hasOwnProperty(head$1))return this._children[head$1].match(tail)}let rules=this._rulesWithParentScopes.concat(this._mainRule);return rules.sort(_ThemeTrieElement._cmpBySpecificity),rules}insert(scopeDepth,scope,parentScopes,fontStyle,foreground,background){if(scope===``){this._doInsertHere(scopeDepth,parentScopes,fontStyle,foreground,background);return}let dotIndex=scope.indexOf(`.`),head$1,tail;dotIndex===-1?(head$1=scope,tail=``):(head$1=scope.substring(0,dotIndex),tail=scope.substring(dotIndex+1));let child;this._children.hasOwnProperty(head$1)?child=this._children[head$1]:(child=new _ThemeTrieElement(this._mainRule.clone(),ThemeTrieElementRule.cloneArr(this._rulesWithParentScopes)),this._children[head$1]=child),child.insert(scopeDepth+1,tail,parentScopes,fontStyle,foreground,background)}_doInsertHere(scopeDepth,parentScopes,fontStyle,foreground,background){if(parentScopes===null){this._mainRule.acceptOverwrite(scopeDepth,fontStyle,foreground,background);return}for(let i$3=0,len=this._rulesWithParentScopes.length;i$3<len;i$3++){let rule=this._rulesWithParentScopes[i$3];if(strArrCmp(rule.parentScopes,parentScopes)===0){rule.acceptOverwrite(scopeDepth,fontStyle,foreground,background);return}}fontStyle===-1&&(fontStyle=this._mainRule.fontStyle),foreground===0&&(foreground=this._mainRule.foreground),background===0&&(background=this._mainRule.background),this._rulesWithParentScopes.push(new ThemeTrieElementRule(scopeDepth,parentScopes,fontStyle,foreground,background))}},EncodedTokenMetadata=class _EncodedTokenMetadata{static toBinaryStr(encodedTokenAttributes){return encodedTokenAttributes.toString(2).padStart(32,`0`)}static print(encodedTokenAttributes){let languageId=_EncodedTokenMetadata.getLanguageId(encodedTokenAttributes),tokenType=_EncodedTokenMetadata.getTokenType(encodedTokenAttributes),fontStyle=_EncodedTokenMetadata.getFontStyle(encodedTokenAttributes),foreground=_EncodedTokenMetadata.getForeground(encodedTokenAttributes),background=_EncodedTokenMetadata.getBackground(encodedTokenAttributes);console.log({languageId,tokenType,fontStyle,foreground,background})}static getLanguageId(encodedTokenAttributes){return(encodedTokenAttributes&255)>>>0}static getTokenType(encodedTokenAttributes){return(encodedTokenAttributes&768)>>>8}static containsBalancedBrackets(encodedTokenAttributes){return(encodedTokenAttributes&1024)!=0}static getFontStyle(encodedTokenAttributes){return(encodedTokenAttributes&30720)>>>11}static getForeground(encodedTokenAttributes){return(encodedTokenAttributes&16744448)>>>15}static getBackground(encodedTokenAttributes){return(encodedTokenAttributes&4278190080)>>>24}static set(encodedTokenAttributes,languageId,tokenType,containsBalancedBrackets,fontStyle,foreground,background){let _languageId=_EncodedTokenMetadata.getLanguageId(encodedTokenAttributes),_tokenType=_EncodedTokenMetadata.getTokenType(encodedTokenAttributes),_containsBalancedBracketsBit=_EncodedTokenMetadata.containsBalancedBrackets(encodedTokenAttributes)?1:0,_fontStyle=_EncodedTokenMetadata.getFontStyle(encodedTokenAttributes),_foreground=_EncodedTokenMetadata.getForeground(encodedTokenAttributes),_background=_EncodedTokenMetadata.getBackground(encodedTokenAttributes);return languageId!==0&&(_languageId=languageId),tokenType!==8&&(_tokenType=fromOptionalTokenType(tokenType)),containsBalancedBrackets!==null&&(_containsBalancedBracketsBit=containsBalancedBrackets?1:0),fontStyle!==-1&&(_fontStyle=fontStyle),foreground!==0&&(_foreground=foreground),background!==0&&(_background=background),(_languageId<<0|_tokenType<<8|_containsBalancedBracketsBit<<10|_fontStyle<<11|_foreground<<15|_background<<24)>>>0}};function toOptionalTokenType(standardType){return standardType}function fromOptionalTokenType(standardType){return standardType}function createMatchers(selector,matchesName){let results=[],tokenizer=newTokenizer(selector),token$1=tokenizer.next();for(;token$1!==null;){let priority=0;if(token$1.length===2&&token$1.charAt(1)===`:`){switch(token$1.charAt(0)){case`R`:priority=1;break;case`L`:priority=-1;break;default:console.log(`Unknown priority ${token$1} in scope selector`)}token$1=tokenizer.next()}let matcher=parseConjunction();if(results.push({matcher,priority}),token$1!==`,`)break;token$1=tokenizer.next()}return results;function parseOperand(){if(token$1===`-`){token$1=tokenizer.next();let expressionToNegate=parseOperand();return matcherInput=>!!expressionToNegate&&!expressionToNegate(matcherInput)}if(token$1===`(`){token$1=tokenizer.next();let expressionInParents=parseInnerExpression();return token$1===`)`&&(token$1=tokenizer.next()),expressionInParents}if(isIdentifier(token$1)){let identifiers=[];do identifiers.push(token$1),token$1=tokenizer.next();while(isIdentifier(token$1));return matcherInput=>matchesName(identifiers,matcherInput)}return null}function parseConjunction(){let matchers=[],matcher=parseOperand();for(;matcher;)matchers.push(matcher),matcher=parseOperand();return matcherInput=>matchers.every(matcher2=>matcher2(matcherInput))}function parseInnerExpression(){let matchers=[],matcher=parseConjunction();for(;matcher&&(matchers.push(matcher),token$1===`|`||token$1===`,`);){do token$1=tokenizer.next();while(token$1===`|`||token$1===`,`);matcher=parseConjunction()}return matcherInput=>matchers.some(matcher2=>matcher2(matcherInput))}}function isIdentifier(token$1){return!!token$1&&!!token$1.match(/[\w\.:]+/)}function newTokenizer(input){let regex=/([LR]:|[\w\.:][\w\.:\-]*|[\,\|\-\(\)])/g,match=regex.exec(input);return{next:()=>{if(!match)return null;let res=match[0];return match=regex.exec(input),res}}}function disposeOnigString(str){typeof str.dispose==`function`&&str.dispose()}var TopLevelRuleReference=class{constructor(scopeName){this.scopeName=scopeName}toKey(){return this.scopeName}},TopLevelRepositoryRuleReference=class{constructor(scopeName,ruleName){this.scopeName=scopeName,this.ruleName=ruleName}toKey(){return`${this.scopeName}#${this.ruleName}`}},ExternalReferenceCollector=class{_references=[];_seenReferenceKeys=new Set;get references(){return this._references}visitedRule=new Set;add(reference){let key$1=reference.toKey();this._seenReferenceKeys.has(key$1)||(this._seenReferenceKeys.add(key$1),this._references.push(reference))}},ScopeDependencyProcessor=class{constructor(repo,initialScopeName){this.repo=repo,this.initialScopeName=initialScopeName,this.seenFullScopeRequests.add(this.initialScopeName),this.Q=[new TopLevelRuleReference(this.initialScopeName)]}seenFullScopeRequests=new Set;seenPartialScopeRequests=new Set;Q;processQueue(){let q$1=this.Q;this.Q=[];let deps=new ExternalReferenceCollector;for(let dep of q$1)collectReferencesOfReference(dep,this.initialScopeName,this.repo,deps);for(let dep of deps.references)if(dep instanceof TopLevelRuleReference){if(this.seenFullScopeRequests.has(dep.scopeName))continue;this.seenFullScopeRequests.add(dep.scopeName),this.Q.push(dep)}else{if(this.seenFullScopeRequests.has(dep.scopeName)||this.seenPartialScopeRequests.has(dep.toKey()))continue;this.seenPartialScopeRequests.add(dep.toKey()),this.Q.push(dep)}}};function collectReferencesOfReference(reference,baseGrammarScopeName,repo,result){let selfGrammar=repo.lookup(reference.scopeName);if(!selfGrammar){if(reference.scopeName===baseGrammarScopeName)throw Error(`No grammar provided for <${baseGrammarScopeName}>`);return}let baseGrammar=repo.lookup(baseGrammarScopeName);reference instanceof TopLevelRuleReference?collectExternalReferencesInTopLevelRule({baseGrammar,selfGrammar},result):collectExternalReferencesInTopLevelRepositoryRule(reference.ruleName,{baseGrammar,selfGrammar,repository:selfGrammar.repository},result);let injections=repo.injections(reference.scopeName);if(injections)for(let injection of injections)result.add(new TopLevelRuleReference(injection))}function collectExternalReferencesInTopLevelRepositoryRule(ruleName,context,result){if(context.repository&&context.repository[ruleName]){let rule=context.repository[ruleName];collectExternalReferencesInRules([rule],context,result)}}function collectExternalReferencesInTopLevelRule(context,result){context.selfGrammar.patterns&&Array.isArray(context.selfGrammar.patterns)&&collectExternalReferencesInRules(context.selfGrammar.patterns,{...context,repository:context.selfGrammar.repository},result),context.selfGrammar.injections&&collectExternalReferencesInRules(Object.values(context.selfGrammar.injections),{...context,repository:context.selfGrammar.repository},result)}function collectExternalReferencesInRules(rules,context,result){for(let rule of rules){if(result.visitedRule.has(rule))continue;result.visitedRule.add(rule);let patternRepository=rule.repository?mergeObjects({},context.repository,rule.repository):context.repository;Array.isArray(rule.patterns)&&collectExternalReferencesInRules(rule.patterns,{...context,repository:patternRepository},result);let include=rule.include;if(!include)continue;let reference=parseInclude(include);switch(reference.kind){case 0:collectExternalReferencesInTopLevelRule({...context,selfGrammar:context.baseGrammar},result);break;case 1:collectExternalReferencesInTopLevelRule(context,result);break;case 2:collectExternalReferencesInTopLevelRepositoryRule(reference.ruleName,{...context,repository:patternRepository},result);break;case 3:case 4:let selfGrammar=reference.scopeName===context.selfGrammar.scopeName?context.selfGrammar:reference.scopeName===context.baseGrammar.scopeName?context.baseGrammar:void 0;if(selfGrammar){let newContext={baseGrammar:context.baseGrammar,selfGrammar,repository:patternRepository};reference.kind===4?collectExternalReferencesInTopLevelRepositoryRule(reference.ruleName,newContext,result):collectExternalReferencesInTopLevelRule(newContext,result)}else reference.kind===4?result.add(new TopLevelRepositoryRuleReference(reference.scopeName,reference.ruleName)):result.add(new TopLevelRuleReference(reference.scopeName));break}}}var BaseReference=class{kind=0},SelfReference=class{kind=1},RelativeReference=class{constructor(ruleName){this.ruleName=ruleName}kind=2},TopLevelReference=class{constructor(scopeName){this.scopeName=scopeName}kind=3},TopLevelRepositoryReference=class{constructor(scopeName,ruleName){this.scopeName=scopeName,this.ruleName=ruleName}kind=4};function parseInclude(include){if(include===`$base`)return new BaseReference;if(include===`$self`)return new SelfReference;let indexOfSharp=include.indexOf(`#`);return indexOfSharp===-1?new TopLevelReference(include):indexOfSharp===0?new RelativeReference(include.substring(1)):new TopLevelRepositoryReference(include.substring(0,indexOfSharp),include.substring(indexOfSharp+1))}var HAS_BACK_REFERENCES=/\\(\d+)/,BACK_REFERENCING_END=/\\(\d+)/g,endRuleId=-1,whileRuleId=-2;function ruleIdFromNumber(id){return id}function ruleIdToNumber(id){return id}var Rule=class{$location;id;_nameIsCapturing;_name;_contentNameIsCapturing;_contentName;constructor($location,id,name$2,contentName){this.$location=$location,this.id=id,this._name=name$2||null,this._nameIsCapturing=RegexSource.hasCaptures(this._name),this._contentName=contentName||null,this._contentNameIsCapturing=RegexSource.hasCaptures(this._contentName)}get debugName(){let location=this.$location?`${basename(this.$location.filename)}:${this.$location.line}`:`unknown`;return`${this.constructor.name}#${this.id} @ ${location}`}getName(lineText,captureIndices){return!this._nameIsCapturing||this._name===null||lineText===null||captureIndices===null?this._name:RegexSource.replaceCaptures(this._name,lineText,captureIndices)}getContentName(lineText,captureIndices){return!this._contentNameIsCapturing||this._contentName===null?this._contentName:RegexSource.replaceCaptures(this._contentName,lineText,captureIndices)}},CaptureRule=class extends Rule{retokenizeCapturedWithRuleId;constructor($location,id,name$2,contentName,retokenizeCapturedWithRuleId){super($location,id,name$2,contentName),this.retokenizeCapturedWithRuleId=retokenizeCapturedWithRuleId}dispose(){}collectPatterns(grammar,out){throw Error(`Not supported!`)}compile(grammar,endRegexSource){throw Error(`Not supported!`)}compileAG(grammar,endRegexSource,allowA,allowG){throw Error(`Not supported!`)}},MatchRule=class extends Rule{_match;captures;_cachedCompiledPatterns;constructor($location,id,name$2,match,captures){super($location,id,name$2,null),this._match=new RegExpSource(match,this.id),this.captures=captures,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&=(this._cachedCompiledPatterns.dispose(),null)}get debugMatchRegExp(){return`${this._match.source}`}collectPatterns(grammar,out){out.push(this._match)}compile(grammar,endRegexSource){return this._getCachedCompiledPatterns(grammar).compile(grammar)}compileAG(grammar,endRegexSource,allowA,allowG){return this._getCachedCompiledPatterns(grammar).compileAG(grammar,allowA,allowG)}_getCachedCompiledPatterns(grammar){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new RegExpSourceList,this.collectPatterns(grammar,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}},IncludeOnlyRule=class extends Rule{hasMissingPatterns;patterns;_cachedCompiledPatterns;constructor($location,id,name$2,contentName,patterns){super($location,id,name$2,contentName),this.patterns=patterns.patterns,this.hasMissingPatterns=patterns.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&=(this._cachedCompiledPatterns.dispose(),null)}collectPatterns(grammar,out){for(let pattern of this.patterns)grammar.getRule(pattern).collectPatterns(grammar,out)}compile(grammar,endRegexSource){return this._getCachedCompiledPatterns(grammar).compile(grammar)}compileAG(grammar,endRegexSource,allowA,allowG){return this._getCachedCompiledPatterns(grammar).compileAG(grammar,allowA,allowG)}_getCachedCompiledPatterns(grammar){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new RegExpSourceList,this.collectPatterns(grammar,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}},BeginEndRule=class extends Rule{_begin;beginCaptures;_end;endHasBackReferences;endCaptures;applyEndPatternLast;hasMissingPatterns;patterns;_cachedCompiledPatterns;constructor($location,id,name$2,contentName,begin,beginCaptures,end,endCaptures,applyEndPatternLast,patterns){super($location,id,name$2,contentName),this._begin=new RegExpSource(begin,this.id),this.beginCaptures=beginCaptures,this._end=new RegExpSource(end||`￿`,-1),this.endHasBackReferences=this._end.hasBackReferences,this.endCaptures=endCaptures,this.applyEndPatternLast=applyEndPatternLast||!1,this.patterns=patterns.patterns,this.hasMissingPatterns=patterns.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&=(this._cachedCompiledPatterns.dispose(),null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugEndRegExp(){return`${this._end.source}`}getEndWithResolvedBackReferences(lineText,captureIndices){return this._end.resolveBackReferences(lineText,captureIndices)}collectPatterns(grammar,out){out.push(this._begin)}compile(grammar,endRegexSource){return this._getCachedCompiledPatterns(grammar,endRegexSource).compile(grammar)}compileAG(grammar,endRegexSource,allowA,allowG){return this._getCachedCompiledPatterns(grammar,endRegexSource).compileAG(grammar,allowA,allowG)}_getCachedCompiledPatterns(grammar,endRegexSource){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new RegExpSourceList;for(let pattern of this.patterns)grammar.getRule(pattern).collectPatterns(grammar,this._cachedCompiledPatterns);this.applyEndPatternLast?this._cachedCompiledPatterns.push(this._end.hasBackReferences?this._end.clone():this._end):this._cachedCompiledPatterns.unshift(this._end.hasBackReferences?this._end.clone():this._end)}return this._end.hasBackReferences&&(this.applyEndPatternLast?this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length()-1,endRegexSource):this._cachedCompiledPatterns.setSource(0,endRegexSource)),this._cachedCompiledPatterns}},BeginWhileRule=class extends Rule{_begin;beginCaptures;whileCaptures;_while;whileHasBackReferences;hasMissingPatterns;patterns;_cachedCompiledPatterns;_cachedCompiledWhilePatterns;constructor($location,id,name$2,contentName,begin,beginCaptures,_while,whileCaptures,patterns){super($location,id,name$2,contentName),this._begin=new RegExpSource(begin,this.id),this.beginCaptures=beginCaptures,this.whileCaptures=whileCaptures,this._while=new RegExpSource(_while,whileRuleId),this.whileHasBackReferences=this._while.hasBackReferences,this.patterns=patterns.patterns,this.hasMissingPatterns=patterns.hasMissingPatterns,this._cachedCompiledPatterns=null,this._cachedCompiledWhilePatterns=null}dispose(){this._cachedCompiledPatterns&&=(this._cachedCompiledPatterns.dispose(),null),this._cachedCompiledWhilePatterns&&=(this._cachedCompiledWhilePatterns.dispose(),null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugWhileRegExp(){return`${this._while.source}`}getWhileWithResolvedBackReferences(lineText,captureIndices){return this._while.resolveBackReferences(lineText,captureIndices)}collectPatterns(grammar,out){out.push(this._begin)}compile(grammar,endRegexSource){return this._getCachedCompiledPatterns(grammar).compile(grammar)}compileAG(grammar,endRegexSource,allowA,allowG){return this._getCachedCompiledPatterns(grammar).compileAG(grammar,allowA,allowG)}_getCachedCompiledPatterns(grammar){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new RegExpSourceList;for(let pattern of this.patterns)grammar.getRule(pattern).collectPatterns(grammar,this._cachedCompiledPatterns)}return this._cachedCompiledPatterns}compileWhile(grammar,endRegexSource){return this._getCachedCompiledWhilePatterns(grammar,endRegexSource).compile(grammar)}compileWhileAG(grammar,endRegexSource,allowA,allowG){return this._getCachedCompiledWhilePatterns(grammar,endRegexSource).compileAG(grammar,allowA,allowG)}_getCachedCompiledWhilePatterns(grammar,endRegexSource){return this._cachedCompiledWhilePatterns||(this._cachedCompiledWhilePatterns=new RegExpSourceList,this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences?this._while.clone():this._while)),this._while.hasBackReferences&&this._cachedCompiledWhilePatterns.setSource(0,endRegexSource||`￿`),this._cachedCompiledWhilePatterns}},RuleFactory=class _RuleFactory{static createCaptureRule(helper,$location,name$2,contentName,retokenizeCapturedWithRuleId){return helper.registerRule(id=>new CaptureRule($location,id,name$2,contentName,retokenizeCapturedWithRuleId))}static getCompiledRuleId(desc,helper,repository){return desc.id||helper.registerRule(id=>{if(desc.id=id,desc.match)return new MatchRule(desc.$vscodeTextmateLocation,desc.id,desc.name,desc.match,_RuleFactory._compileCaptures(desc.captures,helper,repository));if(desc.begin===void 0){desc.repository&&(repository=mergeObjects({},repository,desc.repository));let patterns=desc.patterns;return patterns===void 0&&desc.include&&(patterns=[{include:desc.include}]),new IncludeOnlyRule(desc.$vscodeTextmateLocation,desc.id,desc.name,desc.contentName,_RuleFactory._compilePatterns(patterns,helper,repository))}return desc.while?new BeginWhileRule(desc.$vscodeTextmateLocation,desc.id,desc.name,desc.contentName,desc.begin,_RuleFactory._compileCaptures(desc.beginCaptures||desc.captures,helper,repository),desc.while,_RuleFactory._compileCaptures(desc.whileCaptures||desc.captures,helper,repository),_RuleFactory._compilePatterns(desc.patterns,helper,repository)):new BeginEndRule(desc.$vscodeTextmateLocation,desc.id,desc.name,desc.contentName,desc.begin,_RuleFactory._compileCaptures(desc.beginCaptures||desc.captures,helper,repository),desc.end,_RuleFactory._compileCaptures(desc.endCaptures||desc.captures,helper,repository),desc.applyEndPatternLast,_RuleFactory._compilePatterns(desc.patterns,helper,repository))}),desc.id}static _compileCaptures(captures,helper,repository){let r$4=[];if(captures){let maximumCaptureId=0;for(let captureId in captures){if(captureId===`$vscodeTextmateLocation`)continue;let numericCaptureId=parseInt(captureId,10);numericCaptureId>maximumCaptureId&&(maximumCaptureId=numericCaptureId)}for(let i$3=0;i$3<=maximumCaptureId;i$3++)r$4[i$3]=null;for(let captureId in captures){if(captureId===`$vscodeTextmateLocation`)continue;let numericCaptureId=parseInt(captureId,10),retokenizeCapturedWithRuleId=0;captures[captureId].patterns&&(retokenizeCapturedWithRuleId=_RuleFactory.getCompiledRuleId(captures[captureId],helper,repository)),r$4[numericCaptureId]=_RuleFactory.createCaptureRule(helper,captures[captureId].$vscodeTextmateLocation,captures[captureId].name,captures[captureId].contentName,retokenizeCapturedWithRuleId)}}return r$4}static _compilePatterns(patterns,helper,repository){let r$4=[];if(patterns)for(let i$3=0,len=patterns.length;i$3<len;i$3++){let pattern=patterns[i$3],ruleId=-1;if(pattern.include){let reference=parseInclude(pattern.include);switch(reference.kind){case 0:case 1:ruleId=_RuleFactory.getCompiledRuleId(repository[pattern.include],helper,repository);break;case 2:let localIncludedRule=repository[reference.ruleName];localIncludedRule&&(ruleId=_RuleFactory.getCompiledRuleId(localIncludedRule,helper,repository));break;case 3:case 4:let externalGrammarName=reference.scopeName,externalGrammarInclude=reference.kind===4?reference.ruleName:null,externalGrammar=helper.getExternalGrammar(externalGrammarName,repository);if(externalGrammar)if(externalGrammarInclude){let externalIncludedRule=externalGrammar.repository[externalGrammarInclude];externalIncludedRule&&(ruleId=_RuleFactory.getCompiledRuleId(externalIncludedRule,helper,externalGrammar.repository))}else ruleId=_RuleFactory.getCompiledRuleId(externalGrammar.repository.$self,helper,externalGrammar.repository);break}}else ruleId=_RuleFactory.getCompiledRuleId(pattern,helper,repository);if(ruleId!==-1){let rule=helper.getRule(ruleId),skipRule=!1;if((rule instanceof IncludeOnlyRule||rule instanceof BeginEndRule||rule instanceof BeginWhileRule)&&rule.hasMissingPatterns&&rule.patterns.length===0&&(skipRule=!0),skipRule)continue;r$4.push(ruleId)}}return{patterns:r$4,hasMissingPatterns:(patterns?patterns.length:0)!==r$4.length}}},RegExpSource=class _RegExpSource{source;ruleId;hasAnchor;hasBackReferences;_anchorCache;constructor(regExpSource,ruleId){if(regExpSource&&typeof regExpSource==`string`){let len=regExpSource.length,lastPushedPos=0,output=[],hasAnchor=!1;for(let pos=0;pos<len;pos++)if(regExpSource.charAt(pos)===`\\`&&pos+1<len){let nextCh=regExpSource.charAt(pos+1);nextCh===`z`?(output.push(regExpSource.substring(lastPushedPos,pos)),output.push(`$(?!\\n)(?<!\\n)`),lastPushedPos=pos+2):(nextCh===`A`||nextCh===`G`)&&(hasAnchor=!0),pos++}this.hasAnchor=hasAnchor,lastPushedPos===0?this.source=regExpSource:(output.push(regExpSource.substring(lastPushedPos,len)),this.source=output.join(``))}else this.hasAnchor=!1,this.source=regExpSource;this.hasAnchor?this._anchorCache=this._buildAnchorCache():this._anchorCache=null,this.ruleId=ruleId,typeof this.source==`string`?this.hasBackReferences=HAS_BACK_REFERENCES.test(this.source):this.hasBackReferences=!1}clone(){return new _RegExpSource(this.source,this.ruleId)}setSource(newSource){this.source!==newSource&&(this.source=newSource,this.hasAnchor&&(this._anchorCache=this._buildAnchorCache()))}resolveBackReferences(lineText,captureIndices){if(typeof this.source!=`string`)throw Error(`This method should only be called if the source is a string`);let capturedValues=captureIndices.map(capture=>lineText.substring(capture.start,capture.end));return BACK_REFERENCING_END.lastIndex=0,this.source.replace(BACK_REFERENCING_END,(match,g1)=>escapeRegExpCharacters(capturedValues[parseInt(g1,10)]||``))}_buildAnchorCache(){if(typeof this.source!=`string`)throw Error(`This method should only be called if the source is a string`);let A0_G0_result=[],A0_G1_result=[],A1_G0_result=[],A1_G1_result=[],pos,len,ch,nextCh;for(pos=0,len=this.source.length;pos<len;pos++)ch=this.source.charAt(pos),A0_G0_result[pos]=ch,A0_G1_result[pos]=ch,A1_G0_result[pos]=ch,A1_G1_result[pos]=ch,ch===`\\`&&pos+1<len&&(nextCh=this.source.charAt(pos+1),nextCh===`A`?(A0_G0_result[pos+1]=`￿`,A0_G1_result[pos+1]=`￿`,A1_G0_result[pos+1]=`A`,A1_G1_result[pos+1]=`A`):nextCh===`G`?(A0_G0_result[pos+1]=`￿`,A0_G1_result[pos+1]=`G`,A1_G0_result[pos+1]=`￿`,A1_G1_result[pos+1]=`G`):(A0_G0_result[pos+1]=nextCh,A0_G1_result[pos+1]=nextCh,A1_G0_result[pos+1]=nextCh,A1_G1_result[pos+1]=nextCh),pos++);return{A0_G0:A0_G0_result.join(``),A0_G1:A0_G1_result.join(``),A1_G0:A1_G0_result.join(``),A1_G1:A1_G1_result.join(``)}}resolveAnchors(allowA,allowG){return!this.hasAnchor||!this._anchorCache||typeof this.source!=`string`?this.source:allowA?allowG?this._anchorCache.A1_G1:this._anchorCache.A1_G0:allowG?this._anchorCache.A0_G1:this._anchorCache.A0_G0}},RegExpSourceList=class{_items;_hasAnchors;_cached;_anchorCache;constructor(){this._items=[],this._hasAnchors=!1,this._cached=null,this._anchorCache={A0_G0:null,A0_G1:null,A1_G0:null,A1_G1:null}}dispose(){this._disposeCaches()}_disposeCaches(){this._cached&&=(this._cached.dispose(),null),this._anchorCache.A0_G0&&(this._anchorCache.A0_G0.dispose(),this._anchorCache.A0_G0=null),this._anchorCache.A0_G1&&(this._anchorCache.A0_G1.dispose(),this._anchorCache.A0_G1=null),this._anchorCache.A1_G0&&(this._anchorCache.A1_G0.dispose(),this._anchorCache.A1_G0=null),this._anchorCache.A1_G1&&(this._anchorCache.A1_G1.dispose(),this._anchorCache.A1_G1=null)}push(item){this._items.push(item),this._hasAnchors=this._hasAnchors||item.hasAnchor}unshift(item){this._items.unshift(item),this._hasAnchors=this._hasAnchors||item.hasAnchor}length(){return this._items.length}setSource(index$4,newSource){this._items[index$4].source!==newSource&&(this._disposeCaches(),this._items[index$4].setSource(newSource))}compile(onigLib){return this._cached||=new CompiledRule(onigLib,this._items.map(e=>e.source),this._items.map(e=>e.ruleId)),this._cached}compileAG(onigLib,allowA,allowG){return this._hasAnchors?allowA?allowG?(this._anchorCache.A1_G1||(this._anchorCache.A1_G1=this._resolveAnchors(onigLib,allowA,allowG)),this._anchorCache.A1_G1):(this._anchorCache.A1_G0||(this._anchorCache.A1_G0=this._resolveAnchors(onigLib,allowA,allowG)),this._anchorCache.A1_G0):allowG?(this._anchorCache.A0_G1||(this._anchorCache.A0_G1=this._resolveAnchors(onigLib,allowA,allowG)),this._anchorCache.A0_G1):(this._anchorCache.A0_G0||(this._anchorCache.A0_G0=this._resolveAnchors(onigLib,allowA,allowG)),this._anchorCache.A0_G0):this.compile(onigLib)}_resolveAnchors(onigLib,allowA,allowG){return new CompiledRule(onigLib,this._items.map(e=>e.resolveAnchors(allowA,allowG)),this._items.map(e=>e.ruleId))}},CompiledRule=class{constructor(onigLib,regExps,rules){this.regExps=regExps,this.rules=rules,this.scanner=onigLib.createOnigScanner(regExps)}scanner;dispose(){typeof this.scanner.dispose==`function`&&this.scanner.dispose()}toString(){let r$4=[];for(let i$3=0,len=this.rules.length;i$3<len;i$3++)r$4.push(` - `+this.rules[i$3]+`: `+this.regExps[i$3]);return r$4.join(`
103
103
  `)}findNextMatchSync(string$3,startPosition,options$1){let result=this.scanner.findNextMatchSync(string$3,startPosition,options$1);return result?{ruleId:this.rules[result.index],captureIndices:result.captureIndices}:null}},BasicScopeAttributes=class{constructor(languageId,tokenType){this.languageId=languageId,this.tokenType=tokenType}},BasicScopeAttributesProvider=class _BasicScopeAttributesProvider{_defaultAttributes;_embeddedLanguagesMatcher;constructor(initialLanguageId,embeddedLanguages){this._defaultAttributes=new BasicScopeAttributes(initialLanguageId,8),this._embeddedLanguagesMatcher=new ScopeMatcher(Object.entries(embeddedLanguages||{}))}getDefaultAttributes(){return this._defaultAttributes}getBasicScopeAttributes(scopeName){return scopeName===null?_BasicScopeAttributesProvider._NULL_SCOPE_METADATA:this._getBasicScopeAttributes.get(scopeName)}static _NULL_SCOPE_METADATA=new BasicScopeAttributes(0,0);_getBasicScopeAttributes=new CachedFn(scopeName=>new BasicScopeAttributes(this._scopeToLanguage(scopeName),this._toStandardTokenType(scopeName)));_scopeToLanguage(scope){return this._embeddedLanguagesMatcher.match(scope)||0}_toStandardTokenType(scopeName){let m$2=scopeName.match(_BasicScopeAttributesProvider.STANDARD_TOKEN_TYPE_REGEXP);if(!m$2)return 8;switch(m$2[1]){case`comment`:return 1;case`string`:return 2;case`regex`:return 3;case`meta.embedded`:return 0}throw Error(`Unexpected match for standard token type!`)}static STANDARD_TOKEN_TYPE_REGEXP=/\b(comment|string|regex|meta\.embedded)\b/},ScopeMatcher=class{values;scopesRegExp;constructor(values){if(values.length===0)this.values=null,this.scopesRegExp=null;else{this.values=new Map(values);let escapedScopes=values.map(([scopeName,value])=>escapeRegExpCharacters(scopeName));escapedScopes.sort(),escapedScopes.reverse(),this.scopesRegExp=RegExp(`^((${escapedScopes.join(`)|(`)}))($|\\.)`,``)}}match(scope){if(!this.scopesRegExp)return;let m$2=scope.match(this.scopesRegExp);if(m$2)return this.values.get(m$2[1])}};typeof process<`u`&&{}.VSCODE_TEXTMATE_DEBUG;var UseOnigurumaFindOptions=!1,TokenizeStringResult=class{constructor(stack,stoppedEarly){this.stack=stack,this.stoppedEarly=stoppedEarly}};function _tokenizeString(grammar,lineText,isFirstLine,linePos,stack,lineTokens,checkWhileConditions,timeLimit){let lineLength=lineText.content.length,STOP=!1,anchorPosition=-1;if(checkWhileConditions){let whileCheckResult=_checkWhileConditions(grammar,lineText,isFirstLine,linePos,stack,lineTokens);stack=whileCheckResult.stack,linePos=whileCheckResult.linePos,isFirstLine=whileCheckResult.isFirstLine,anchorPosition=whileCheckResult.anchorPosition}let startTime$1=Date.now();for(;!STOP;){if(timeLimit!==0&&Date.now()-startTime$1>timeLimit)return new TokenizeStringResult(stack,!0);scanNext()}return new TokenizeStringResult(stack,!1);function scanNext(){let r$4=matchRuleOrInjections(grammar,lineText,isFirstLine,linePos,stack,anchorPosition);if(!r$4){lineTokens.produce(stack,lineLength),STOP=!0;return}let captureIndices=r$4.captureIndices,matchedRuleId=r$4.matchedRuleId,hasAdvanced=captureIndices&&captureIndices.length>0?captureIndices[0].end>linePos:!1;if(matchedRuleId===endRuleId){let poppedRule=stack.getRule(grammar);lineTokens.produce(stack,captureIndices[0].start),stack=stack.withContentNameScopesList(stack.nameScopesList),handleCaptures(grammar,lineText,isFirstLine,stack,lineTokens,poppedRule.endCaptures,captureIndices),lineTokens.produce(stack,captureIndices[0].end);let popped=stack;if(stack=stack.parent,anchorPosition=popped.getAnchorPos(),!hasAdvanced&&popped.getEnterPos()===linePos){stack=popped,lineTokens.produce(stack,lineLength),STOP=!0;return}}else{let _rule=grammar.getRule(matchedRuleId);lineTokens.produce(stack,captureIndices[0].start);let beforePush=stack,scopeName=_rule.getName(lineText.content,captureIndices),nameScopesList=stack.contentNameScopesList.pushAttributed(scopeName,grammar);if(stack=stack.push(matchedRuleId,linePos,anchorPosition,captureIndices[0].end===lineLength,null,nameScopesList,nameScopesList),_rule instanceof BeginEndRule){let pushedRule=_rule;handleCaptures(grammar,lineText,isFirstLine,stack,lineTokens,pushedRule.beginCaptures,captureIndices),lineTokens.produce(stack,captureIndices[0].end),anchorPosition=captureIndices[0].end;let contentName=pushedRule.getContentName(lineText.content,captureIndices),contentNameScopesList=nameScopesList.pushAttributed(contentName,grammar);if(stack=stack.withContentNameScopesList(contentNameScopesList),pushedRule.endHasBackReferences&&(stack=stack.withEndRule(pushedRule.getEndWithResolvedBackReferences(lineText.content,captureIndices))),!hasAdvanced&&beforePush.hasSameRuleAs(stack)){stack=stack.pop(),lineTokens.produce(stack,lineLength),STOP=!0;return}}else if(_rule instanceof BeginWhileRule){let pushedRule=_rule;handleCaptures(grammar,lineText,isFirstLine,stack,lineTokens,pushedRule.beginCaptures,captureIndices),lineTokens.produce(stack,captureIndices[0].end),anchorPosition=captureIndices[0].end;let contentName=pushedRule.getContentName(lineText.content,captureIndices),contentNameScopesList=nameScopesList.pushAttributed(contentName,grammar);if(stack=stack.withContentNameScopesList(contentNameScopesList),pushedRule.whileHasBackReferences&&(stack=stack.withEndRule(pushedRule.getWhileWithResolvedBackReferences(lineText.content,captureIndices))),!hasAdvanced&&beforePush.hasSameRuleAs(stack)){stack=stack.pop(),lineTokens.produce(stack,lineLength),STOP=!0;return}}else if(handleCaptures(grammar,lineText,isFirstLine,stack,lineTokens,_rule.captures,captureIndices),lineTokens.produce(stack,captureIndices[0].end),stack=stack.pop(),!hasAdvanced){stack=stack.safePop(),lineTokens.produce(stack,lineLength),STOP=!0;return}}captureIndices[0].end>linePos&&(linePos=captureIndices[0].end,isFirstLine=!1)}}function _checkWhileConditions(grammar,lineText,isFirstLine,linePos,stack,lineTokens){let anchorPosition=stack.beginRuleCapturedEOL?0:-1,whileRules=[];for(let node$1=stack;node$1;node$1=node$1.pop()){let nodeRule=node$1.getRule(grammar);nodeRule instanceof BeginWhileRule&&whileRules.push({rule:nodeRule,stack:node$1})}for(let whileRule=whileRules.pop();whileRule;whileRule=whileRules.pop()){let{ruleScanner,findOptions}=prepareRuleWhileSearch(whileRule.rule,grammar,whileRule.stack.endRule,isFirstLine,linePos===anchorPosition),r$4=ruleScanner.findNextMatchSync(lineText,linePos,findOptions);if(r$4){if(r$4.ruleId!==whileRuleId){stack=whileRule.stack.pop();break}r$4.captureIndices&&r$4.captureIndices.length&&(lineTokens.produce(whileRule.stack,r$4.captureIndices[0].start),handleCaptures(grammar,lineText,isFirstLine,whileRule.stack,lineTokens,whileRule.rule.whileCaptures,r$4.captureIndices),lineTokens.produce(whileRule.stack,r$4.captureIndices[0].end),anchorPosition=r$4.captureIndices[0].end,r$4.captureIndices[0].end>linePos&&(linePos=r$4.captureIndices[0].end,isFirstLine=!1))}else{stack=whileRule.stack.pop();break}}return{stack,linePos,anchorPosition,isFirstLine}}function matchRuleOrInjections(grammar,lineText,isFirstLine,linePos,stack,anchorPosition){let matchResult=matchRule(grammar,lineText,isFirstLine,linePos,stack,anchorPosition),injections=grammar.getInjections();if(injections.length===0)return matchResult;let injectionResult=matchInjections(injections,grammar,lineText,isFirstLine,linePos,stack,anchorPosition);if(!injectionResult)return matchResult;if(!matchResult)return injectionResult;let matchResultScore=matchResult.captureIndices[0].start,injectionResultScore=injectionResult.captureIndices[0].start;return injectionResultScore<matchResultScore||injectionResult.priorityMatch&&injectionResultScore===matchResultScore?injectionResult:matchResult}function matchRule(grammar,lineText,isFirstLine,linePos,stack,anchorPosition){let{ruleScanner,findOptions}=prepareRuleSearch(stack.getRule(grammar),grammar,stack.endRule,isFirstLine,linePos===anchorPosition),r$4=ruleScanner.findNextMatchSync(lineText,linePos,findOptions);return r$4?{captureIndices:r$4.captureIndices,matchedRuleId:r$4.ruleId}:null}function matchInjections(injections,grammar,lineText,isFirstLine,linePos,stack,anchorPosition){let bestMatchRating=Number.MAX_VALUE,bestMatchCaptureIndices=null,bestMatchRuleId,bestMatchResultPriority=0,scopes=stack.contentNameScopesList.getScopeNames();for(let i$3=0,len=injections.length;i$3<len;i$3++){let injection=injections[i$3];if(!injection.matcher(scopes))continue;let{ruleScanner,findOptions}=prepareRuleSearch(grammar.getRule(injection.ruleId),grammar,null,isFirstLine,linePos===anchorPosition),matchResult=ruleScanner.findNextMatchSync(lineText,linePos,findOptions);if(!matchResult)continue;let matchRating=matchResult.captureIndices[0].start;if(!(matchRating>=bestMatchRating)&&(bestMatchRating=matchRating,bestMatchCaptureIndices=matchResult.captureIndices,bestMatchRuleId=matchResult.ruleId,bestMatchResultPriority=injection.priority,bestMatchRating===linePos))break}return bestMatchCaptureIndices?{priorityMatch:bestMatchResultPriority===-1,captureIndices:bestMatchCaptureIndices,matchedRuleId:bestMatchRuleId}:null}function prepareRuleSearch(rule,grammar,endRegexSource,allowA,allowG){return UseOnigurumaFindOptions?{ruleScanner:rule.compile(grammar,endRegexSource),findOptions:getFindOptions(allowA,allowG)}:{ruleScanner:rule.compileAG(grammar,endRegexSource,allowA,allowG),findOptions:0}}function prepareRuleWhileSearch(rule,grammar,endRegexSource,allowA,allowG){return UseOnigurumaFindOptions?{ruleScanner:rule.compileWhile(grammar,endRegexSource),findOptions:getFindOptions(allowA,allowG)}:{ruleScanner:rule.compileWhileAG(grammar,endRegexSource,allowA,allowG),findOptions:0}}function getFindOptions(allowA,allowG){let options$1=0;return allowA||(options$1|=1),allowG||(options$1|=4),options$1}function handleCaptures(grammar,lineText,isFirstLine,stack,lineTokens,captures,captureIndices){if(captures.length===0)return;let lineTextContent=lineText.content,len=Math.min(captures.length,captureIndices.length),localStack=[],maxEnd=captureIndices[0].end;for(let i$3=0;i$3<len;i$3++){let captureRule=captures[i$3];if(captureRule===null)continue;let captureIndex=captureIndices[i$3];if(captureIndex.length===0)continue;if(captureIndex.start>maxEnd)break;for(;localStack.length>0&&localStack[localStack.length-1].endPos<=captureIndex.start;)lineTokens.produceFromScopes(localStack[localStack.length-1].scopes,localStack[localStack.length-1].endPos),localStack.pop();if(localStack.length>0?lineTokens.produceFromScopes(localStack[localStack.length-1].scopes,captureIndex.start):lineTokens.produce(stack,captureIndex.start),captureRule.retokenizeCapturedWithRuleId){let scopeName=captureRule.getName(lineTextContent,captureIndices),nameScopesList=stack.contentNameScopesList.pushAttributed(scopeName,grammar),contentName=captureRule.getContentName(lineTextContent,captureIndices),contentNameScopesList=nameScopesList.pushAttributed(contentName,grammar),stackClone=stack.push(captureRule.retokenizeCapturedWithRuleId,captureIndex.start,-1,!1,null,nameScopesList,contentNameScopesList),onigSubStr=grammar.createOnigString(lineTextContent.substring(0,captureIndex.end));_tokenizeString(grammar,onigSubStr,isFirstLine&&captureIndex.start===0,captureIndex.start,stackClone,lineTokens,!1,0),disposeOnigString(onigSubStr);continue}let captureRuleScopeName=captureRule.getName(lineTextContent,captureIndices);if(captureRuleScopeName!==null){let captureRuleScopesList=(localStack.length>0?localStack[localStack.length-1].scopes:stack.contentNameScopesList).pushAttributed(captureRuleScopeName,grammar);localStack.push(new LocalStackElement(captureRuleScopesList,captureIndex.end))}}for(;localStack.length>0;)lineTokens.produceFromScopes(localStack[localStack.length-1].scopes,localStack[localStack.length-1].endPos),localStack.pop()}var LocalStackElement=class{scopes;endPos;constructor(scopes,endPos){this.scopes=scopes,this.endPos=endPos}};function createGrammar(scopeName,grammar,initialLanguage,embeddedLanguages,tokenTypes,balancedBracketSelectors,grammarRepository,onigLib){return new Grammar(scopeName,grammar,initialLanguage,embeddedLanguages,tokenTypes,balancedBracketSelectors,grammarRepository,onigLib)}function collectInjections(result,selector,rule,ruleFactoryHelper,grammar){let matchers=createMatchers(selector,nameMatcher),ruleId=RuleFactory.getCompiledRuleId(rule,ruleFactoryHelper,grammar.repository);for(let matcher of matchers)result.push({debugSelector:selector,matcher:matcher.matcher,ruleId,grammar,priority:matcher.priority})}function nameMatcher(identifers,scopes){if(scopes.length<identifers.length)return!1;let lastIndex=0;return identifers.every(identifier=>{for(let i$3=lastIndex;i$3<scopes.length;i$3++)if(scopesAreMatching(scopes[i$3],identifier))return lastIndex=i$3+1,!0;return!1})}function scopesAreMatching(thisScopeName,scopeName){if(!thisScopeName)return!1;if(thisScopeName===scopeName)return!0;let len=scopeName.length;return thisScopeName.length>len&&thisScopeName.substr(0,len)===scopeName&&thisScopeName[len]===`.`}var Grammar=class{constructor(_rootScopeName,grammar,initialLanguage,embeddedLanguages,tokenTypes,balancedBracketSelectors,grammarRepository,_onigLib){if(this._rootScopeName=_rootScopeName,this.balancedBracketSelectors=balancedBracketSelectors,this._onigLib=_onigLib,this._basicScopeAttributesProvider=new BasicScopeAttributesProvider(initialLanguage,embeddedLanguages),this._rootId=-1,this._lastRuleId=0,this._ruleId2desc=[null],this._includedGrammars={},this._grammarRepository=grammarRepository,this._grammar=initGrammar(grammar,null),this._injections=null,this._tokenTypeMatchers=[],tokenTypes)for(let selector of Object.keys(tokenTypes)){let matchers=createMatchers(selector,nameMatcher);for(let matcher of matchers)this._tokenTypeMatchers.push({matcher:matcher.matcher,type:tokenTypes[selector]})}}_rootId;_lastRuleId;_ruleId2desc;_includedGrammars;_grammarRepository;_grammar;_injections;_basicScopeAttributesProvider;_tokenTypeMatchers;get themeProvider(){return this._grammarRepository}dispose(){for(let rule of this._ruleId2desc)rule&&rule.dispose()}createOnigScanner(sources){return this._onigLib.createOnigScanner(sources)}createOnigString(sources){return this._onigLib.createOnigString(sources)}getMetadataForScope(scope){return this._basicScopeAttributesProvider.getBasicScopeAttributes(scope)}_collectInjections(){let grammarRepository={lookup:scopeName2=>scopeName2===this._rootScopeName?this._grammar:this.getExternalGrammar(scopeName2),injections:scopeName2=>this._grammarRepository.injections(scopeName2)},result=[],scopeName=this._rootScopeName,grammar=grammarRepository.lookup(scopeName);if(grammar){let rawInjections=grammar.injections;if(rawInjections)for(let expression in rawInjections)collectInjections(result,expression,rawInjections[expression],this,grammar);let injectionScopeNames=this._grammarRepository.injections(scopeName);injectionScopeNames&&injectionScopeNames.forEach(injectionScopeName=>{let injectionGrammar=this.getExternalGrammar(injectionScopeName);if(injectionGrammar){let selector=injectionGrammar.injectionSelector;selector&&collectInjections(result,selector,injectionGrammar,this,injectionGrammar)}})}return result.sort((i1,i2)=>i1.priority-i2.priority),result}getInjections(){return this._injections===null&&(this._injections=this._collectInjections()),this._injections}registerRule(factory$1){let id=++this._lastRuleId,result=factory$1(ruleIdFromNumber(id));return this._ruleId2desc[id]=result,result}getRule(ruleId){return this._ruleId2desc[ruleIdToNumber(ruleId)]}getExternalGrammar(scopeName,repository){if(this._includedGrammars[scopeName])return this._includedGrammars[scopeName];if(this._grammarRepository){let rawIncludedGrammar=this._grammarRepository.lookup(scopeName);if(rawIncludedGrammar)return this._includedGrammars[scopeName]=initGrammar(rawIncludedGrammar,repository&&repository.$base),this._includedGrammars[scopeName]}}tokenizeLine(lineText,prevState,timeLimit=0){let r$4=this._tokenize(lineText,prevState,!1,timeLimit);return{tokens:r$4.lineTokens.getResult(r$4.ruleStack,r$4.lineLength),ruleStack:r$4.ruleStack,stoppedEarly:r$4.stoppedEarly}}tokenizeLine2(lineText,prevState,timeLimit=0){let r$4=this._tokenize(lineText,prevState,!0,timeLimit);return{tokens:r$4.lineTokens.getBinaryResult(r$4.ruleStack,r$4.lineLength),ruleStack:r$4.ruleStack,stoppedEarly:r$4.stoppedEarly}}_tokenize(lineText,prevState,emitBinaryTokens,timeLimit){this._rootId===-1&&(this._rootId=RuleFactory.getCompiledRuleId(this._grammar.repository.$self,this,this._grammar.repository),this.getInjections());let isFirstLine;if(!prevState||prevState===StateStackImpl.NULL){isFirstLine=!0;let rawDefaultMetadata=this._basicScopeAttributesProvider.getDefaultAttributes(),defaultStyle=this.themeProvider.getDefaults(),defaultMetadata=EncodedTokenMetadata.set(0,rawDefaultMetadata.languageId,rawDefaultMetadata.tokenType,null,defaultStyle.fontStyle,defaultStyle.foregroundId,defaultStyle.backgroundId),rootScopeName=this.getRule(this._rootId).getName(null,null),scopeList;scopeList=rootScopeName?AttributedScopeStack.createRootAndLookUpScopeName(rootScopeName,defaultMetadata,this):AttributedScopeStack.createRoot(`unknown`,defaultMetadata),prevState=new StateStackImpl(null,this._rootId,-1,-1,!1,null,scopeList,scopeList)}else isFirstLine=!1,prevState.reset();lineText+=`
104
104
  `;let onigLineText=this.createOnigString(lineText),lineLength=onigLineText.content.length,lineTokens=new LineTokens(emitBinaryTokens,lineText,this._tokenTypeMatchers,this.balancedBracketSelectors),r$4=_tokenizeString(this,onigLineText,isFirstLine,0,prevState,lineTokens,!0,timeLimit);return disposeOnigString(onigLineText),{lineLength,lineTokens,ruleStack:r$4.stack,stoppedEarly:r$4.stoppedEarly}}};function initGrammar(grammar,base$1){return grammar=clone(grammar),grammar.repository=grammar.repository||{},grammar.repository.$self={$vscodeTextmateLocation:grammar.$vscodeTextmateLocation,patterns:grammar.patterns,name:grammar.scopeName},grammar.repository.$base=base$1||grammar.repository.$self,grammar}var AttributedScopeStack=class _AttributedScopeStack{constructor(parent,scopePath,tokenAttributes){this.parent=parent,this.scopePath=scopePath,this.tokenAttributes=tokenAttributes}static fromExtension(namesScopeList,contentNameScopesList){let current=namesScopeList,scopeNames=namesScopeList?.scopePath??null;for(let frame of contentNameScopesList)scopeNames=ScopeStack.push(scopeNames,frame.scopeNames),current=new _AttributedScopeStack(current,scopeNames,frame.encodedTokenAttributes);return current}static createRoot(scopeName,tokenAttributes){return new _AttributedScopeStack(null,new ScopeStack(null,scopeName),tokenAttributes)}static createRootAndLookUpScopeName(scopeName,tokenAttributes,grammar){let rawRootMetadata=grammar.getMetadataForScope(scopeName),scopePath=new ScopeStack(null,scopeName),rootStyle=grammar.themeProvider.themeMatch(scopePath);return new _AttributedScopeStack(null,scopePath,_AttributedScopeStack.mergeAttributes(tokenAttributes,rawRootMetadata,rootStyle))}get scopeName(){return this.scopePath.scopeName}toString(){return this.getScopeNames().join(` `)}equals(other){return _AttributedScopeStack.equals(this,other)}static equals(a$1,b$2){do{if(a$1===b$2||!a$1&&!b$2)return!0;if(!a$1||!b$2||a$1.scopeName!==b$2.scopeName||a$1.tokenAttributes!==b$2.tokenAttributes)return!1;a$1=a$1.parent,b$2=b$2.parent}while(!0)}static mergeAttributes(existingTokenAttributes,basicScopeAttributes,styleAttributes){let fontStyle=-1,foreground=0,background=0;return styleAttributes!==null&&(fontStyle=styleAttributes.fontStyle,foreground=styleAttributes.foregroundId,background=styleAttributes.backgroundId),EncodedTokenMetadata.set(existingTokenAttributes,basicScopeAttributes.languageId,basicScopeAttributes.tokenType,null,fontStyle,foreground,background)}pushAttributed(scopePath,grammar){if(scopePath===null)return this;if(scopePath.indexOf(` `)===-1)return _AttributedScopeStack._pushAttributed(this,scopePath,grammar);let scopes=scopePath.split(/ /g),result=this;for(let scope of scopes)result=_AttributedScopeStack._pushAttributed(result,scope,grammar);return result}static _pushAttributed(target,scopeName,grammar){let rawMetadata=grammar.getMetadataForScope(scopeName),newPath=target.scopePath.push(scopeName),scopeThemeMatchResult=grammar.themeProvider.themeMatch(newPath);return new _AttributedScopeStack(target,newPath,_AttributedScopeStack.mergeAttributes(target.tokenAttributes,rawMetadata,scopeThemeMatchResult))}getScopeNames(){return this.scopePath.getSegments()}getExtensionIfDefined(base$1){let result=[],self$1=this;for(;self$1&&self$1!==base$1;)result.push({encodedTokenAttributes:self$1.tokenAttributes,scopeNames:self$1.scopePath.getExtensionIfDefined(self$1.parent?.scopePath??null)}),self$1=self$1.parent;return self$1===base$1?result.reverse():void 0}},StateStackImpl=class _StateStackImpl{constructor(parent,ruleId,enterPos,anchorPos,beginRuleCapturedEOL,endRule,nameScopesList,contentNameScopesList){this.parent=parent,this.ruleId=ruleId,this.beginRuleCapturedEOL=beginRuleCapturedEOL,this.endRule=endRule,this.nameScopesList=nameScopesList,this.contentNameScopesList=contentNameScopesList,this.depth=this.parent?this.parent.depth+1:1,this._enterPos=enterPos,this._anchorPos=anchorPos}_stackElementBrand=void 0;static NULL=new _StateStackImpl(null,0,0,0,!1,null,null,null);_enterPos;_anchorPos;depth;equals(other){return other===null?!1:_StateStackImpl._equals(this,other)}static _equals(a$1,b$2){return a$1===b$2?!0:this._structuralEquals(a$1,b$2)?AttributedScopeStack.equals(a$1.contentNameScopesList,b$2.contentNameScopesList):!1}static _structuralEquals(a$1,b$2){do{if(a$1===b$2||!a$1&&!b$2)return!0;if(!a$1||!b$2||a$1.depth!==b$2.depth||a$1.ruleId!==b$2.ruleId||a$1.endRule!==b$2.endRule)return!1;a$1=a$1.parent,b$2=b$2.parent}while(!0)}clone(){return this}static _reset(el){for(;el;)el._enterPos=-1,el._anchorPos=-1,el=el.parent}reset(){_StateStackImpl._reset(this)}pop(){return this.parent}safePop(){return this.parent?this.parent:this}push(ruleId,enterPos,anchorPos,beginRuleCapturedEOL,endRule,nameScopesList,contentNameScopesList){return new _StateStackImpl(this,ruleId,enterPos,anchorPos,beginRuleCapturedEOL,endRule,nameScopesList,contentNameScopesList)}getEnterPos(){return this._enterPos}getAnchorPos(){return this._anchorPos}getRule(grammar){return grammar.getRule(this.ruleId)}toString(){let r$4=[];return this._writeString(r$4,0),`[`+r$4.join(`,`)+`]`}_writeString(res,outIndex){return this.parent&&(outIndex=this.parent._writeString(res,outIndex)),res[outIndex++]=`(${this.ruleId}, ${this.nameScopesList?.toString()}, ${this.contentNameScopesList?.toString()})`,outIndex}withContentNameScopesList(contentNameScopeStack){return this.contentNameScopesList===contentNameScopeStack?this:this.parent.push(this.ruleId,this._enterPos,this._anchorPos,this.beginRuleCapturedEOL,this.endRule,this.nameScopesList,contentNameScopeStack)}withEndRule(endRule){return this.endRule===endRule?this:new _StateStackImpl(this.parent,this.ruleId,this._enterPos,this._anchorPos,this.beginRuleCapturedEOL,endRule,this.nameScopesList,this.contentNameScopesList)}hasSameRuleAs(other){let el=this;for(;el&&el._enterPos===other._enterPos;){if(el.ruleId===other.ruleId)return!0;el=el.parent}return!1}toStateStackFrame(){return{ruleId:ruleIdToNumber(this.ruleId),beginRuleCapturedEOL:this.beginRuleCapturedEOL,endRule:this.endRule,nameScopesList:this.nameScopesList?.getExtensionIfDefined(this.parent?.nameScopesList??null)??[],contentNameScopesList:this.contentNameScopesList?.getExtensionIfDefined(this.nameScopesList)??[]}}static pushFrame(self$1,frame){let namesScopeList=AttributedScopeStack.fromExtension(self$1?.nameScopesList??null,frame.nameScopesList);return new _StateStackImpl(self$1,ruleIdFromNumber(frame.ruleId),frame.enterPos??-1,frame.anchorPos??-1,frame.beginRuleCapturedEOL,frame.endRule,namesScopeList,AttributedScopeStack.fromExtension(namesScopeList,frame.contentNameScopesList))}},BalancedBracketSelectors=class{balancedBracketScopes;unbalancedBracketScopes;allowAny=!1;constructor(balancedBracketScopes,unbalancedBracketScopes){this.balancedBracketScopes=balancedBracketScopes.flatMap(selector=>selector===`*`?(this.allowAny=!0,[]):createMatchers(selector,nameMatcher).map(m$2=>m$2.matcher)),this.unbalancedBracketScopes=unbalancedBracketScopes.flatMap(selector=>createMatchers(selector,nameMatcher).map(m$2=>m$2.matcher))}get matchesAlways(){return this.allowAny&&this.unbalancedBracketScopes.length===0}get matchesNever(){return this.balancedBracketScopes.length===0&&!this.allowAny}match(scopes){for(let excluder of this.unbalancedBracketScopes)if(excluder(scopes))return!1;for(let includer of this.balancedBracketScopes)if(includer(scopes))return!0;return this.allowAny}},LineTokens=class{constructor(emitBinaryTokens,lineText,tokenTypeOverrides,balancedBracketSelectors){this.balancedBracketSelectors=balancedBracketSelectors,this._emitBinaryTokens=emitBinaryTokens,this._tokenTypeOverrides=tokenTypeOverrides,this._lineText=null,this._tokens=[],this._binaryTokens=[],this._lastTokenEndIndex=0}_emitBinaryTokens;_lineText;_tokens;_binaryTokens;_lastTokenEndIndex;_tokenTypeOverrides;produce(stack,endIndex){this.produceFromScopes(stack.contentNameScopesList,endIndex)}produceFromScopes(scopesList,endIndex){if(this._lastTokenEndIndex>=endIndex)return;if(this._emitBinaryTokens){let metadata=scopesList?.tokenAttributes??0,containsBalancedBrackets=!1;if(this.balancedBracketSelectors?.matchesAlways&&(containsBalancedBrackets=!0),this._tokenTypeOverrides.length>0||this.balancedBracketSelectors&&!this.balancedBracketSelectors.matchesAlways&&!this.balancedBracketSelectors.matchesNever){let scopes2=scopesList?.getScopeNames()??[];for(let tokenType of this._tokenTypeOverrides)tokenType.matcher(scopes2)&&(metadata=EncodedTokenMetadata.set(metadata,0,toOptionalTokenType(tokenType.type),null,-1,0,0));this.balancedBracketSelectors&&(containsBalancedBrackets=this.balancedBracketSelectors.match(scopes2))}if(containsBalancedBrackets&&(metadata=EncodedTokenMetadata.set(metadata,0,8,containsBalancedBrackets,-1,0,0)),this._binaryTokens.length>0&&this._binaryTokens[this._binaryTokens.length-1]===metadata){this._lastTokenEndIndex=endIndex;return}this._binaryTokens.push(this._lastTokenEndIndex),this._binaryTokens.push(metadata),this._lastTokenEndIndex=endIndex;return}let scopes=scopesList?.getScopeNames()??[];this._tokens.push({startIndex:this._lastTokenEndIndex,endIndex,scopes}),this._lastTokenEndIndex=endIndex}getResult(stack,lineLength){return this._tokens.length>0&&this._tokens[this._tokens.length-1].startIndex===lineLength-1&&this._tokens.pop(),this._tokens.length===0&&(this._lastTokenEndIndex=-1,this.produce(stack,lineLength),this._tokens[this._tokens.length-1].startIndex=0),this._tokens}getBinaryResult(stack,lineLength){this._binaryTokens.length>0&&this._binaryTokens[this._binaryTokens.length-2]===lineLength-1&&(this._binaryTokens.pop(),this._binaryTokens.pop()),this._binaryTokens.length===0&&(this._lastTokenEndIndex=-1,this.produce(stack,lineLength),this._binaryTokens[this._binaryTokens.length-2]=0);let result=new Uint32Array(this._binaryTokens.length);for(let i$3=0,len=this._binaryTokens.length;i$3<len;i$3++)result[i$3]=this._binaryTokens[i$3];return result}},SyncRegistry=class{constructor(theme$1,_onigLib){this._onigLib=_onigLib,this._theme=theme$1}_grammars=new Map;_rawGrammars=new Map;_injectionGrammars=new Map;_theme;dispose(){for(let grammar of this._grammars.values())grammar.dispose()}setTheme(theme$1){this._theme=theme$1}getColorMap(){return this._theme.getColorMap()}addGrammar(grammar,injectionScopeNames){this._rawGrammars.set(grammar.scopeName,grammar),injectionScopeNames&&this._injectionGrammars.set(grammar.scopeName,injectionScopeNames)}lookup(scopeName){return this._rawGrammars.get(scopeName)}injections(targetScope){return this._injectionGrammars.get(targetScope)}getDefaults(){return this._theme.getDefaults()}themeMatch(scopePath){return this._theme.match(scopePath)}grammarForScopeName(scopeName,initialLanguage,embeddedLanguages,tokenTypes,balancedBracketSelectors){if(!this._grammars.has(scopeName)){let rawGrammar=this._rawGrammars.get(scopeName);if(!rawGrammar)return null;this._grammars.set(scopeName,createGrammar(scopeName,rawGrammar,initialLanguage,embeddedLanguages,tokenTypes,balancedBracketSelectors,this,this._onigLib))}return this._grammars.get(scopeName)}},Registry=class{_options;_syncRegistry;_ensureGrammarCache;constructor(options$1){this._options=options$1,this._syncRegistry=new SyncRegistry(Theme.createFromRawTheme(options$1.theme,options$1.colorMap),options$1.onigLib),this._ensureGrammarCache=new Map}dispose(){this._syncRegistry.dispose()}setTheme(theme$1,colorMap){this._syncRegistry.setTheme(Theme.createFromRawTheme(theme$1,colorMap))}getColorMap(){return this._syncRegistry.getColorMap()}loadGrammarWithEmbeddedLanguages(initialScopeName,initialLanguage,embeddedLanguages){return this.loadGrammarWithConfiguration(initialScopeName,initialLanguage,{embeddedLanguages})}loadGrammarWithConfiguration(initialScopeName,initialLanguage,configuration){return this._loadGrammar(initialScopeName,initialLanguage,configuration.embeddedLanguages,configuration.tokenTypes,new BalancedBracketSelectors(configuration.balancedBracketSelectors||[],configuration.unbalancedBracketSelectors||[]))}loadGrammar(initialScopeName){return this._loadGrammar(initialScopeName,0,null,null,null)}_loadGrammar(initialScopeName,initialLanguage,embeddedLanguages,tokenTypes,balancedBracketSelectors){let dependencyProcessor=new ScopeDependencyProcessor(this._syncRegistry,initialScopeName);for(;dependencyProcessor.Q.length>0;)dependencyProcessor.Q.map(request=>this._loadSingleGrammar(request.scopeName)),dependencyProcessor.processQueue();return this._grammarForScopeName(initialScopeName,initialLanguage,embeddedLanguages,tokenTypes,balancedBracketSelectors)}_loadSingleGrammar(scopeName){this._ensureGrammarCache.has(scopeName)||(this._doLoadSingleGrammar(scopeName),this._ensureGrammarCache.set(scopeName,!0))}_doLoadSingleGrammar(scopeName){let grammar=this._options.loadGrammar(scopeName);if(grammar){let injections=typeof this._options.getInjections==`function`?this._options.getInjections(scopeName):void 0;this._syncRegistry.addGrammar(grammar,injections)}}addGrammar(rawGrammar,injections=[],initialLanguage=0,embeddedLanguages=null){return this._syncRegistry.addGrammar(rawGrammar,injections),this._grammarForScopeName(rawGrammar.scopeName,initialLanguage,embeddedLanguages)}_grammarForScopeName(scopeName,initialLanguage=0,embeddedLanguages=null,tokenTypes=null,balancedBracketSelectors=null){return this._syncRegistry.grammarForScopeName(scopeName,initialLanguage,embeddedLanguages,tokenTypes,balancedBracketSelectors)}},INITIAL=StateStackImpl.NULL;const htmlVoidElements=[`area`,`base`,`basefont`,`bgsound`,`br`,`col`,`command`,`embed`,`frame`,`hr`,`image`,`img`,`input`,`keygen`,`link`,`meta`,`param`,`source`,`track`,`wbr`];var own$2={}.hasOwnProperty;function zwitch(key$1,options$1){let settings=options$1||{};function one$3(value,...parameters){let fn=one$3.invalid,handlers$2=one$3.handlers;if(value&&own$2.call(value,key$1)){let id=String(value[key$1]);fn=own$2.call(handlers$2,id)?handlers$2[id]:one$3.unknown}if(fn)return fn.call(this,value,...parameters)}return one$3.handlers=settings.handlers||{},one$3.invalid=settings.invalid,one$3.unknown=settings.unknown,one$3}var defaultSubsetRegex=/["&'<>`]/g,surrogatePairsRegex=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,controlCharactersRegex=/[\x01-\t\v\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,regexEscapeRegex=/[|\\{}()[\]^$+*?.]/g,subsetToRegexCache=new WeakMap;function core(value,options$1){if(value=value.replace(options$1.subset?charactersToExpressionCached(options$1.subset):defaultSubsetRegex,basic),options$1.subset||options$1.escapeOnly)return value;return value.replace(surrogatePairsRegex,surrogate).replace(controlCharactersRegex,basic);function surrogate(pair$1,index$4,all$2){return options$1.format((pair$1.charCodeAt(0)-55296)*1024+pair$1.charCodeAt(1)-56320+65536,all$2.charCodeAt(index$4+2),options$1)}function basic(character,index$4,all$2){return options$1.format(character.charCodeAt(0),all$2.charCodeAt(index$4+1),options$1)}}function charactersToExpressionCached(subset){let cached=subsetToRegexCache.get(subset);return cached||(cached=charactersToExpression(subset),subsetToRegexCache.set(subset,cached)),cached}function charactersToExpression(subset){let groups=[],index$4=-1;for(;++index$4<subset.length;)groups.push(subset[index$4].replace(regexEscapeRegex,`\\$&`));return RegExp(`(?:`+groups.join(`|`)+`)`,`g`)}var hexadecimalRegex=/[\dA-Fa-f]/;function toHexadecimal(code$2,next,omit){let value=`&#x`+code$2.toString(16).toUpperCase();return omit&&next&&!hexadecimalRegex.test(String.fromCharCode(next))?value:value+`;`}var decimalRegex=/\d/;function toDecimal(code$2,next,omit){let value=`&#`+String(code$2);return omit&&next&&!decimalRegex.test(String.fromCharCode(next))?value:value+`;`}const characterEntitiesLegacy=`AElig.AMP.Aacute.Acirc.Agrave.Aring.Atilde.Auml.COPY.Ccedil.ETH.Eacute.Ecirc.Egrave.Euml.GT.Iacute.Icirc.Igrave.Iuml.LT.Ntilde.Oacute.Ocirc.Ograve.Oslash.Otilde.Ouml.QUOT.REG.THORN.Uacute.Ucirc.Ugrave.Uuml.Yacute.aacute.acirc.acute.aelig.agrave.amp.aring.atilde.auml.brvbar.ccedil.cedil.cent.copy.curren.deg.divide.eacute.ecirc.egrave.eth.euml.frac12.frac14.frac34.gt.iacute.icirc.iexcl.igrave.iquest.iuml.laquo.lt.macr.micro.middot.nbsp.not.ntilde.oacute.ocirc.ograve.ordf.ordm.oslash.otilde.ouml.para.plusmn.pound.quot.raquo.reg.sect.shy.sup1.sup2.sup3.szlig.thorn.times.uacute.ucirc.ugrave.uml.uuml.yacute.yen.yuml`.split(`.`),characterEntitiesHtml4={nbsp:`\xA0`,iexcl:`¡`,cent:`¢`,pound:`£`,curren:`¤`,yen:`¥`,brvbar:`¦`,sect:`§`,uml:`¨`,copy:`©`,ordf:`ª`,laquo:`«`,not:`¬`,shy:`­`,reg:`®`,macr:`¯`,deg:`°`,plusmn:`±`,sup2:`²`,sup3:`³`,acute:`´`,micro:`µ`,para:`¶`,middot:`·`,cedil:`¸`,sup1:`¹`,ordm:`º`,raquo:`»`,frac14:`¼`,frac12:`½`,frac34:`¾`,iquest:`¿`,Agrave:`À`,Aacute:`Á`,Acirc:`Â`,Atilde:`Ã`,Auml:`Ä`,Aring:`Å`,AElig:`Æ`,Ccedil:`Ç`,Egrave:`È`,Eacute:`É`,Ecirc:`Ê`,Euml:`Ë`,Igrave:`Ì`,Iacute:`Í`,Icirc:`Î`,Iuml:`Ï`,ETH:`Ð`,Ntilde:`Ñ`,Ograve:`Ò`,Oacute:`Ó`,Ocirc:`Ô`,Otilde:`Õ`,Ouml:`Ö`,times:`×`,Oslash:`Ø`,Ugrave:`Ù`,Uacute:`Ú`,Ucirc:`Û`,Uuml:`Ü`,Yacute:`Ý`,THORN:`Þ`,szlig:`ß`,agrave:`à`,aacute:`á`,acirc:`â`,atilde:`ã`,auml:`ä`,aring:`å`,aelig:`æ`,ccedil:`ç`,egrave:`è`,eacute:`é`,ecirc:`ê`,euml:`ë`,igrave:`ì`,iacute:`í`,icirc:`î`,iuml:`ï`,eth:`ð`,ntilde:`ñ`,ograve:`ò`,oacute:`ó`,ocirc:`ô`,otilde:`õ`,ouml:`ö`,divide:`÷`,oslash:`ø`,ugrave:`ù`,uacute:`ú`,ucirc:`û`,uuml:`ü`,yacute:`ý`,thorn:`þ`,yuml:`ÿ`,fnof:`ƒ`,Alpha:`Α`,Beta:`Β`,Gamma:`Γ`,Delta:`Δ`,Epsilon:`Ε`,Zeta:`Ζ`,Eta:`Η`,Theta:`Θ`,Iota:`Ι`,Kappa:`Κ`,Lambda:`Λ`,Mu:`Μ`,Nu:`Ν`,Xi:`Ξ`,Omicron:`Ο`,Pi:`Π`,Rho:`Ρ`,Sigma:`Σ`,Tau:`Τ`,Upsilon:`Υ`,Phi:`Φ`,Chi:`Χ`,Psi:`Ψ`,Omega:`Ω`,alpha:`α`,beta:`β`,gamma:`γ`,delta:`δ`,epsilon:`ε`,zeta:`ζ`,eta:`η`,theta:`θ`,iota:`ι`,kappa:`κ`,lambda:`λ`,mu:`μ`,nu:`ν`,xi:`ξ`,omicron:`ο`,pi:`π`,rho:`ρ`,sigmaf:`ς`,sigma:`σ`,tau:`τ`,upsilon:`υ`,phi:`φ`,chi:`χ`,psi:`ψ`,omega:`ω`,thetasym:`ϑ`,upsih:`ϒ`,piv:`ϖ`,bull:`•`,hellip:`…`,prime:`′`,Prime:`″`,oline:`‾`,frasl:`⁄`,weierp:`℘`,image:`ℑ`,real:`ℜ`,trade:`™`,alefsym:`ℵ`,larr:`←`,uarr:`↑`,rarr:`→`,darr:`↓`,harr:`↔`,crarr:`↵`,lArr:`⇐`,uArr:`⇑`,rArr:`⇒`,dArr:`⇓`,hArr:`⇔`,forall:`∀`,part:`∂`,exist:`∃`,empty:`∅`,nabla:`∇`,isin:`∈`,notin:`∉`,ni:`∋`,prod:`∏`,sum:`∑`,minus:`−`,lowast:`∗`,radic:`√`,prop:`∝`,infin:`∞`,ang:`∠`,and:`∧`,or:`∨`,cap:`∩`,cup:`∪`,int:`∫`,there4:`∴`,sim:`∼`,cong:`≅`,asymp:`≈`,ne:`≠`,equiv:`≡`,le:`≤`,ge:`≥`,sub:`⊂`,sup:`⊃`,nsub:`⊄`,sube:`⊆`,supe:`⊇`,oplus:`⊕`,otimes:`⊗`,perp:`⊥`,sdot:`⋅`,lceil:`⌈`,rceil:`⌉`,lfloor:`⌊`,rfloor:`⌋`,lang:`〈`,rang:`〉`,loz:`◊`,spades:`♠`,clubs:`♣`,hearts:`♥`,diams:`♦`,quot:`"`,amp:`&`,lt:`<`,gt:`>`,OElig:`Œ`,oelig:`œ`,Scaron:`Š`,scaron:`š`,Yuml:`Ÿ`,circ:`ˆ`,tilde:`˜`,ensp:` `,emsp:` `,thinsp:` `,zwnj:`‌`,zwj:`‍`,lrm:`‎`,rlm:`‏`,ndash:`–`,mdash:`—`,lsquo:`‘`,rsquo:`’`,sbquo:`‚`,ldquo:`“`,rdquo:`”`,bdquo:`„`,dagger:`†`,Dagger:`‡`,permil:`‰`,lsaquo:`‹`,rsaquo:`›`,euro:`€`},dangerous=[`cent`,`copy`,`divide`,`gt`,`lt`,`not`,`para`,`times`];var own$1={}.hasOwnProperty,characters={},key;for(key in characterEntitiesHtml4)own$1.call(characterEntitiesHtml4,key)&&(characters[characterEntitiesHtml4[key]]=key);var notAlphanumericRegex=/[^\dA-Za-z]/;function toNamed(code$2,next,omit,attribute){let character=String.fromCharCode(code$2);if(own$1.call(characters,character)){let name$2=characters[character],value=`&`+name$2;return omit&&characterEntitiesLegacy.includes(name$2)&&!dangerous.includes(name$2)&&(!attribute||next&&next!==61&&notAlphanumericRegex.test(String.fromCharCode(next)))?value:value+`;`}return``}function formatSmart(code$2,next,options$1){let numeric=toHexadecimal(code$2,next,options$1.omitOptionalSemicolons),named;if((options$1.useNamedReferences||options$1.useShortestReferences)&&(named=toNamed(code$2,next,options$1.omitOptionalSemicolons,options$1.attribute)),(options$1.useShortestReferences||!named)&&options$1.useShortestReferences){let decimal=toDecimal(code$2,next,options$1.omitOptionalSemicolons);decimal.length<numeric.length&&(numeric=decimal)}return named&&(!options$1.useShortestReferences||named.length<numeric.length)?named:numeric}function stringifyEntities(value,options$1){return core(value,Object.assign({format:formatSmart},options$1))}var htmlCommentRegex=/^>|^->|<!--|-->|--!>|<!-$/g,bogusCommentEntitySubset=[`>`],commentEntitySubset=[`<`,`>`];function comment(node$1,_1,_2,state$1){return state$1.settings.bogusComments?`<?`+stringifyEntities(node$1.value,Object.assign({},state$1.settings.characterReferences,{subset:bogusCommentEntitySubset}))+`>`:`<!--`+node$1.value.replace(htmlCommentRegex,encode)+`-->`;function encode($0){return stringifyEntities($0,Object.assign({},state$1.settings.characterReferences,{subset:commentEntitySubset}))}}function doctype(_1,_2,_3,state$1){return`<!`+(state$1.settings.upperDoctype?`DOCTYPE`:`doctype`)+(state$1.settings.tightDoctype?``:` `)+`html>`}function ccount(value,character){let source=String(value);if(typeof character!=`string`)throw TypeError(`Expected character`);let count=0,index$4=source.indexOf(character);for(;index$4!==-1;)count++,index$4=source.indexOf(character,index$4+character.length);return count}const siblingAfter=siblings(1),siblingBefore=siblings(-1);var emptyChildren$1=[];function siblings(increment$1){return sibling;function sibling(parent,index$4,includeWhitespace){let siblings$1=parent?parent.children:emptyChildren$1,offset$3=(index$4||0)+increment$1,next=siblings$1[offset$3];if(!includeWhitespace)for(;next&&whitespace(next);)offset$3+=increment$1,next=siblings$1[offset$3];return next}}var own={}.hasOwnProperty;function omission(handlers$2){return omit;function omit(node$1,index$4,parent){return own.call(handlers$2,node$1.tagName)&&handlers$2[node$1.tagName](node$1,index$4,parent)}}const closing=omission({body:body$1,caption:headOrColgroupOrCaption,colgroup:headOrColgroupOrCaption,dd,dt,head:headOrColgroupOrCaption,html:html$2,li,optgroup,option,p,rp:rubyElement,rt:rubyElement,tbody:tbody$1,td:cells,tfoot,th:cells,thead,tr});function headOrColgroupOrCaption(_$2,index$4,parent){let next=siblingAfter(parent,index$4,!0);return!next||next.type!==`comment`&&!(next.type===`text`&&whitespace(next.value.charAt(0)))}function html$2(_$2,index$4,parent){let next=siblingAfter(parent,index$4);return!next||next.type!==`comment`}function body$1(_$2,index$4,parent){let next=siblingAfter(parent,index$4);return!next||next.type!==`comment`}function p(_$2,index$4,parent){let next=siblingAfter(parent,index$4);return next?next.type===`element`&&(next.tagName===`address`||next.tagName===`article`||next.tagName===`aside`||next.tagName===`blockquote`||next.tagName===`details`||next.tagName===`div`||next.tagName===`dl`||next.tagName===`fieldset`||next.tagName===`figcaption`||next.tagName===`figure`||next.tagName===`footer`||next.tagName===`form`||next.tagName===`h1`||next.tagName===`h2`||next.tagName===`h3`||next.tagName===`h4`||next.tagName===`h5`||next.tagName===`h6`||next.tagName===`header`||next.tagName===`hgroup`||next.tagName===`hr`||next.tagName===`main`||next.tagName===`menu`||next.tagName===`nav`||next.tagName===`ol`||next.tagName===`p`||next.tagName===`pre`||next.tagName===`section`||next.tagName===`table`||next.tagName===`ul`):!parent||!(parent.type===`element`&&(parent.tagName===`a`||parent.tagName===`audio`||parent.tagName===`del`||parent.tagName===`ins`||parent.tagName===`map`||parent.tagName===`noscript`||parent.tagName===`video`))}function li(_$2,index$4,parent){let next=siblingAfter(parent,index$4);return!next||next.type===`element`&&next.tagName===`li`}function dt(_$2,index$4,parent){let next=siblingAfter(parent,index$4);return!!(next&&next.type===`element`&&(next.tagName===`dt`||next.tagName===`dd`))}function dd(_$2,index$4,parent){let next=siblingAfter(parent,index$4);return!next||next.type===`element`&&(next.tagName===`dt`||next.tagName===`dd`)}function rubyElement(_$2,index$4,parent){let next=siblingAfter(parent,index$4);return!next||next.type===`element`&&(next.tagName===`rp`||next.tagName===`rt`)}function optgroup(_$2,index$4,parent){let next=siblingAfter(parent,index$4);return!next||next.type===`element`&&next.tagName===`optgroup`}function option(_$2,index$4,parent){let next=siblingAfter(parent,index$4);return!next||next.type===`element`&&(next.tagName===`option`||next.tagName===`optgroup`)}function thead(_$2,index$4,parent){let next=siblingAfter(parent,index$4);return!!(next&&next.type===`element`&&(next.tagName===`tbody`||next.tagName===`tfoot`))}function tbody$1(_$2,index$4,parent){let next=siblingAfter(parent,index$4);return!next||next.type===`element`&&(next.tagName===`tbody`||next.tagName===`tfoot`)}function tfoot(_$2,index$4,parent){return!siblingAfter(parent,index$4)}function tr(_$2,index$4,parent){let next=siblingAfter(parent,index$4);return!next||next.type===`element`&&next.tagName===`tr`}function cells(_$2,index$4,parent){let next=siblingAfter(parent,index$4);return!next||next.type===`element`&&(next.tagName===`td`||next.tagName===`th`)}const opening=omission({body,colgroup,head,html:html$1,tbody});function html$1(node$1){let head$1=siblingAfter(node$1,-1);return!head$1||head$1.type!==`comment`}function head(node$1){let seen$1=new Set;for(let child$1 of node$1.children)if(child$1.type===`element`&&(child$1.tagName===`base`||child$1.tagName===`title`)){if(seen$1.has(child$1.tagName))return!1;seen$1.add(child$1.tagName)}let child=node$1.children[0];return!child||child.type===`element`}function body(node$1){let head$1=siblingAfter(node$1,-1,!0);return!head$1||head$1.type!==`comment`&&!(head$1.type===`text`&&whitespace(head$1.value.charAt(0)))&&!(head$1.type===`element`&&(head$1.tagName===`meta`||head$1.tagName===`link`||head$1.tagName===`script`||head$1.tagName===`style`||head$1.tagName===`template`))}function colgroup(node$1,index$4,parent){let previous$1=siblingBefore(parent,index$4),head$1=siblingAfter(node$1,-1,!0);return parent&&previous$1&&previous$1.type===`element`&&previous$1.tagName===`colgroup`&&closing(previous$1,parent.children.indexOf(previous$1),parent)?!1:!!(head$1&&head$1.type===`element`&&head$1.tagName===`col`)}function tbody(node$1,index$4,parent){let previous$1=siblingBefore(parent,index$4),head$1=siblingAfter(node$1,-1);return parent&&previous$1&&previous$1.type===`element`&&(previous$1.tagName===`thead`||previous$1.tagName===`tbody`)&&closing(previous$1,parent.children.indexOf(previous$1),parent)?!1:!!(head$1&&head$1.type===`element`&&head$1.tagName===`tr`)}var constants={name:[[`
105
105
  \f\r &/=>`.split(``),`
@@ -1388,5 +1388,5 @@ XID_Start XIDS`.split(/\s/).map(p$1=>[w(p$1),p$1])),LowerToAlternativeLowerCaseM
1388
1388
  WHERE
1389
1389
  /* condition */;`}async function generateDelete(table$1,pkColumns){return pkColumns.length>0?formatSql(`DELETE FROM ${table$1} WHERE ${pkColumns.map(c=>`${c} = '<${c}>'`).join(` AND `)}`):(await formatSql(`DELETE FROM ${table$1}`)).replace(/;$/,``)+`
1390
1390
  WHERE
1391
- /* condition */;`}async function generateCreateTable(){return formatSql(`CREATE TABLE table_name (id serial PRIMARY KEY, column_name data_type)`)}async function generateAlterAddColumn(table$1){return formatSql(`ALTER TABLE ${table$1} ADD COLUMN column_name data_type`)}var MIN_PANEL_WIDTH=200,MAX_PANEL_WIDTH=600,MIN_SIDEBAR_WIDTH=160,MAX_SIDEBAR_WIDTH=400;function SQLEditorLayout({connectionId,editorTabs,selectedSchema,selectedObject,onSchemaChange,onObjectSelect,schemas,tables,isSchemasLoading,isTablesLoading}){let[isDraggingPanel,setIsDraggingPanel]=(0,import_react.useState)(!1),[isDraggingSidebar,setIsDraggingSidebar]=(0,import_react.useState)(!1),containerRef=(0,import_react.useRef)(null),insertAtCursorRef=(0,import_react.useRef)(null),executeSQL=useExecuteSQL(),[initialPrompt,setInitialPrompt]=(0,import_react.useState)(null);useSchemaStoreSync(connectionId,selectedSchema);let handlePanelResizeStart=(0,import_react.useCallback)(e=>{e.preventDefault(),setIsDraggingPanel(!0)},[]),handleSidebarResizeStart=(0,import_react.useCallback)(e=>{e.preventDefault(),setIsDraggingSidebar(!0)},[]);(0,import_react.useEffect)(()=>{if(!isDraggingPanel)return;let handleMouseMove=e=>{if(!containerRef.current)return;let newWidth=containerRef.current.getBoundingClientRect().right-e.clientX,clampedWidth=Math.max(MIN_PANEL_WIDTH,Math.min(newWidth,MAX_PANEL_WIDTH));editorTabs.setRightPanelWidth(clampedWidth)},handleMouseUp=()=>{setIsDraggingPanel(!1)};return document.addEventListener(`mousemove`,handleMouseMove),document.addEventListener(`mouseup`,handleMouseUp),()=>{document.removeEventListener(`mousemove`,handleMouseMove),document.removeEventListener(`mouseup`,handleMouseUp)}},[isDraggingPanel,editorTabs]),(0,import_react.useEffect)(()=>{if(!isDraggingSidebar)return;let handleMouseMove=e=>{if(!containerRef.current)return;let containerRect=containerRef.current.getBoundingClientRect(),newWidth=e.clientX-containerRect.left,clampedWidth=Math.max(MIN_SIDEBAR_WIDTH,Math.min(newWidth,MAX_SIDEBAR_WIDTH));editorTabs.setLeftSidebarWidth(clampedWidth)},handleMouseUp=()=>{setIsDraggingSidebar(!1)};return document.addEventListener(`mousemove`,handleMouseMove),document.addEventListener(`mouseup`,handleMouseUp),()=>{document.removeEventListener(`mousemove`,handleMouseMove),document.removeEventListener(`mouseup`,handleMouseUp)}},[isDraggingSidebar,editorTabs]);let prevSelectedObjectRef=(0,import_react.useRef)(null);(0,import_react.useEffect)(()=>{let prev=prevSelectedObjectRef.current,curr=selectedObject,changed=curr&&(!prev||prev.schema!==curr.schema||prev.name!==curr.name||prev.type!==curr.type||prev.arguments!==curr.arguments);if(prevSelectedObjectRef.current=curr,changed){curr.type===`table`||curr.type===`view`||curr.type===`materialized_view`?schemaStore.setSelectedTable({schema:curr.schema,name:curr.name}):schemaStore.setSelectedTable(null);let activeTabType=editorTabs.activeTab?.tab.type;(!activeTabType||activeTabType===`schema`)&&editorTabs.createSchemaTab(curr.schema,curr.name,curr.type,curr.arguments)}},[selectedObject,editorTabs]);let handleObjectSelect=obj=>{onObjectSelect(obj)},handleViewSchema=(schema,objectName,objectType,args)=>{onObjectSelect({schema,name:objectName,type:objectType,arguments:args},{replace:!1}),editorTabs.createSchemaTab(schema,objectName,objectType,args)},handleObjectDoubleClick=async(schema,objectName,objectType,args)=>{if(objectType===`function`||objectType===`procedure`){editorTabs.createSchemaTab(schema,objectName,objectType,args);return}let query=`SELECT * FROM ${schema}.${objectName} LIMIT 100;`,existingTab=editorTabs.tabs.find(t$1=>t$1.tab.type===`query`&&t$1.tab.content.trim()===query.trim()),tabId;existingTab?(tabId=existingTab.tab.id,editorTabs.setActiveTabId(tabId),editorTabs.setTabExecuting(tabId,!0)):tabId=editorTabs.createTab(query,{isExecuting:!0});try{let selectedSchema$1=schemaStore.getSelectedSchema(),searchPath=selectedSchema$1?selectedSchema$1===`public`?`public`:`${selectedSchema$1}, public`:void 0,result=await executeSQL.mutateAsync({connectionId,sql:query,searchPath});editorTabs.setTabResults(tabId,[{columns:result.error?[]:result.columns,rows:result.error?[]:result.rows,rowCount:result.error?0:result.rowCount,executionTime:result.executionTime,error:result.error||void 0}],{isExecuting:!1})}catch(err){editorTabs.setTabResults(tabId,[{columns:[],rows:[],rowCount:0,executionTime:0,error:err instanceof Error?err.message:`Query execution failed`}],{isExecuting:!1})}},handleRunSQL=async sql=>{let tabId;editorTabs.activeTab?.tab.type===`query`?(tabId=editorTabs.activeTab.tab.id,editorTabs.setTabExecuting(tabId,!0)):tabId=editorTabs.createTab(``,{isExecuting:!0});try{let selectedSchema$1=schemaStore.getSelectedSchema(),searchPath=selectedSchema$1?selectedSchema$1===`public`?`public`:`${selectedSchema$1}, public`:void 0,result=await executeSQL.mutateAsync({connectionId,sql,searchPath});editorTabs.setTabResults(tabId,[{columns:result.error?[]:result.columns,rows:result.error?[]:result.rows,rowCount:result.error?0:result.rowCount,executionTime:result.executionTime,error:result.error||void 0}],{isExecuting:!1})}catch(err){editorTabs.setTabResults(tabId,[{columns:[],rows:[],rowCount:0,executionTime:0,error:err instanceof Error?err.message:`Query execution failed`}],{isExecuting:!1})}},handleExplainWithAI=sql=>{editorTabs.setRightPanelOpen(!0),editorTabs.setRightPanelActiveTab(`chat`),setInitialPrompt({sql,action:`explain`})},handleGenerateSQL=async(schema,objectName,_objectType,sqlType)=>{try{let sql;if(sqlType===`select`)sql=await generateSelect(objectName);else if(sqlType===`alter_add_column`)sql=await generateAlterAddColumn(objectName);else if(sqlType===`create_table`)sql=await generateCreateTable();else{let columns=(await queryClient$1.getColumns({connectionId,schema,table:objectName})).columns.map(c=>({name:c.name,type:c.type,nullable:c.nullable}));if(columns.length===0){toastManager.add({title:`Cannot generate SQL`,description:`Table has no columns`,type:`error`});return}if(sqlType===`insert`)sql=await generateInsert(objectName,columns);else{let pkColumns=(await queryClient$1.getConstraints({connectionId,schema,table:objectName})).constraints.find(c=>c.type===`PRIMARY KEY`)?.columns??[];sql=sqlType===`update`?await generateUpdate(objectName,columns,pkColumns):await generateDelete(objectName,pkColumns)}}editorTabs.activeTab?.tab.type===`query`&&insertAtCursorRef.current?insertAtCursorRef.current(sql):editorTabs.createTab(sql)}catch(err){toastManager.add({title:`Failed to generate SQL`,description:err instanceof Error?err.message:`Unknown error`,type:`error`})}};return(0,import_jsx_runtime.jsxs)(`div`,{ref:containerRef,className:`flex flex-1 h-full overflow-hidden`,children:[(0,import_jsx_runtime.jsx)(`div`,{className:`flex-shrink-0`,style:{width:editorTabs.leftSidebarWidth},children:(0,import_jsx_runtime.jsx)(ObjectSidebar,{connectionId,selectedObject,onObjectSelect:handleObjectSelect,onObjectDoubleClick:handleObjectDoubleClick,onViewSchema:handleViewSchema,onGenerateSQL:handleGenerateSQL,selectedSchema,onSchemaChange,onNewQuery:editorTabs.createTab,schemas,tables,isSchemasLoading,isTablesLoading})}),(0,import_jsx_runtime.jsx)(ResizeHandle,{direction:`vertical`,isDragging:isDraggingSidebar,onMouseDown:handleSidebarResizeStart}),(0,import_jsx_runtime.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,import_jsx_runtime.jsx)(EditorArea,{editorTabs,connectionId,selectedSchema,rightPanelOpen:editorTabs.rightPanel.open,onRightPanelToggle:()=>editorTabs.setRightPanelOpen(!editorTabs.rightPanel.open),onEditorReady:insertFn=>{insertAtCursorRef.current=insertFn},selectedObject,onGenerateSQL:handleGenerateSQL,onExplainWithAI:handleExplainWithAI,onViewSchema:handleViewSchema})}),editorTabs.rightPanel.open&&(0,import_jsx_runtime.jsx)(ResizeHandle,{direction:`vertical`,isDragging:isDraggingPanel,onMouseDown:handlePanelResizeStart}),(0,import_jsx_runtime.jsx)(RightPanel,{open:editorTabs.rightPanel.open,width:editorTabs.rightPanel.width,activeTab:editorTabs.rightPanel.activeTab,onActiveTabChange:editorTabs.setRightPanelActiveTab,connectionId,selectedObject,selectedSchema:selectedSchema??void 0,onInsertSQL:sql=>{editorTabs.activeTab&&editorTabs.activeTab.tab.type===`query`&&insertAtCursorRef.current?insertAtCursorRef.current(sql):editorTabs.createTab(sql)},onRunSQL:handleRunSQL,onViewSchema:handleViewSchema,initialPrompt,onInitialPromptProcessed:()=>setInitialPrompt(null)})]})}var DEFAULT_EDITOR_HEIGHT=0,DEFAULT_RIGHT_PANEL_WIDTH=320,DEFAULT_LEFT_SIDEBAR_WIDTH=240,CONTENT_STORAGE_KEY=`pgconsole-editor`,LAYOUT_STORAGE_KEY=`pgconsole-layout`;function loadContentFromStorage(){try{let stored=localStorage.getItem(CONTENT_STORAGE_KEY);return stored?JSON.parse(stored):{byConnection:{}}}catch{return{byConnection:{}}}}function loadLayoutFromStorage(){try{let stored=localStorage.getItem(LAYOUT_STORAGE_KEY);return stored?JSON.parse(stored):{byConnection:{}}}catch{return{byConnection:{}}}}function loadFromStorage(){let content$3=loadContentFromStorage(),layout=loadLayoutFromStorage(),restored={},globalActiveTab=layout.rightPanelActiveTab??`context`;for(let[connId,connContent]of Object.entries(content$3.byConnection??{})){let connLayout=layout.byConnection?.[connId],editorHeight=connLayout?.editorHeight??DEFAULT_EDITOR_HEIGHT;restored[connId]={activeTabId:connContent.activeTabId,tabCounter:connContent.tabCounter||0,rightPanel:{open:connContent.rightPanelOpen??!0,activeTab:globalActiveTab,width:connLayout?.rightPanelWidth??DEFAULT_RIGHT_PANEL_WIDTH},leftSidebarWidth:connLayout?.leftSidebarWidth??DEFAULT_LEFT_SIDEBAR_WIDTH,tabs:connContent.tabs.map(t$1=>({tab:t$1.tab,resultTabs:[],activeResultTabId:null,isExecuting:!1,editorHeight}))}}return restored}function saveContentToStorage(tabsByConnection){try{let toSave={byConnection:{}};for(let[connId,connState]of Object.entries(tabsByConnection))toSave.byConnection[connId]={activeTabId:connState.activeTabId,tabCounter:connState.tabCounter,rightPanelOpen:connState.rightPanel.open,tabs:connState.tabs.map(t$1=>({tab:t$1.tab}))};localStorage.setItem(CONTENT_STORAGE_KEY,JSON.stringify(toSave))}catch{}}function saveLayoutToStorage(tabsByConnection){try{let toSave={byConnection:{}},firstConnection=Object.values(tabsByConnection)[0];firstConnection&&(toSave.rightPanelActiveTab=firstConnection.rightPanel.activeTab);for(let[connId,connState]of Object.entries(tabsByConnection)){let editorHeight=connState.tabs.find(t$1=>t$1.tab.id===connState.activeTabId)?.editorHeight??connState.tabs[0]?.editorHeight??DEFAULT_EDITOR_HEIGHT;toSave.byConnection[connId]={editorHeight,rightPanelWidth:connState.rightPanel.width,leftSidebarWidth:connState.leftSidebarWidth??DEFAULT_LEFT_SIDEBAR_WIDTH}}localStorage.setItem(LAYOUT_STORAGE_KEY,JSON.stringify(toSave))}catch{}}function useEditorTabs(connectionId){let[tabsByConnection,setTabsByConnection]=(0,import_react.useState)(loadFromStorage);(0,import_react.useEffect)(()=>{saveContentToStorage(tabsByConnection),saveLayoutToStorage(tabsByConnection)},[tabsByConnection]);let getGlobalActiveTab=()=>Object.values(tabsByConnection)[0]?.rightPanel.activeTab??`context`,getDefaultRightPanel=()=>({open:!0,activeTab:getGlobalActiveTab(),width:DEFAULT_RIGHT_PANEL_WIDTH}),currentState=tabsByConnection[connectionId]??{tabs:[],activeTabId:``,tabCounter:0,rightPanel:getDefaultRightPanel(),leftSidebarWidth:DEFAULT_LEFT_SIDEBAR_WIDTH},tabs=currentState.tabs,activeTabId=currentState.activeTabId,rightPanel=currentState.rightPanel??getDefaultRightPanel(),leftSidebarWidth=currentState.leftSidebarWidth??DEFAULT_LEFT_SIDEBAR_WIDTH,activeTab=(0,import_react.useMemo)(()=>tabs.find(t$1=>t$1.tab.id===activeTabId)??null,[tabs,activeTabId]),getEmptyState=()=>({tabs:[],activeTabId:``,tabCounter:0,rightPanel:getDefaultRightPanel(),leftSidebarWidth:DEFAULT_LEFT_SIDEBAR_WIDTH}),setActiveTabId=(0,import_react.useCallback)(id=>{setTabsByConnection(prev=>({...prev,[connectionId]:{...prev[connectionId]??getEmptyState(),activeTabId:id}}))},[connectionId]),setTabs=(0,import_react.useCallback)(updater=>{setTabsByConnection(prev=>{let current=prev[connectionId]??getEmptyState();return{...prev,[connectionId]:{...current,tabs:updater(current.tabs)}}})},[connectionId]),createTab=(0,import_react.useCallback)((content$3=``,options$1)=>{let newTabId=`tab-${Date.now()}-${Math.random().toString(36).slice(2,7)}`;return setTabsByConnection(prev=>{let current=prev[connectionId]??getEmptyState(),inheritedHeight=current.tabs.find(t$1=>t$1.tab.id===current.activeTabId)?.editorHeight??DEFAULT_EDITOR_HEIGHT,newTab={tab:{type:`query`,id:newTabId,name:`SQL ${current.tabCounter+1}`,content:content$3},resultTabs:[],activeResultTabId:null,isExecuting:options$1?.isExecuting??!1,editorHeight:inheritedHeight};return{...prev,[connectionId]:{...current,tabs:[newTab,...current.tabs],activeTabId:newTabId,tabCounter:current.tabCounter+1}}}),newTabId},[connectionId]),createSchemaTab=(0,import_react.useCallback)((schema,table$1,objectType,args)=>{let tabId=args===void 0?`schema.${schema}.${table$1}`:`schema.${schema}.${table$1}(${args})`;return setTabsByConnection(prev=>{let current=prev[connectionId]??getEmptyState();if(current.tabs.find(t$1=>t$1.tab.id===tabId))return{...prev,[connectionId]:{...current,activeTabId:tabId}};let newTab={tab:{type:`schema`,id:tabId,name:table$1,schema,table:table$1,objectType,arguments:args},resultTabs:[],activeResultTabId:null,isExecuting:!1,editorHeight:0};return{...prev,[connectionId]:{...current,tabs:[newTab,...current.tabs],activeTabId:tabId}}}),tabId},[connectionId]),closeTab=(0,import_react.useCallback)(id=>{setTabsByConnection(prev=>{let current=prev[connectionId]??getEmptyState(),remaining=current.tabs.filter(t$1=>t$1.tab.id!==id),newActiveId=current.activeTabId===id?remaining[0]?.tab.id??``:current.activeTabId;return{...prev,[connectionId]:{...current,tabs:remaining,activeTabId:newActiveId}}})},[connectionId]),closeOtherTabs=(0,import_react.useCallback)(id=>{setTabs(prev=>prev.filter(t$1=>t$1.tab.id===id)),setActiveTabId(id)},[setTabs,setActiveTabId]),closeTabsToRight=(0,import_react.useCallback)(id=>{setTabs(prev=>{let index$4=prev.findIndex(t$1=>t$1.tab.id===id);return index$4===-1?prev:prev.slice(0,index$4+1)})},[setTabs]),closeAllTabs=(0,import_react.useCallback)(()=>{setTabsByConnection(prev=>{let current=prev[connectionId]??getEmptyState();return{...prev,[connectionId]:{...current,tabs:[],activeTabId:``}}})},[connectionId]),updateTabContent=(0,import_react.useCallback)((id,content$3)=>{setTabs(prev=>prev.map(t$1=>t$1.tab.id===id?{...t$1,tab:{...t$1.tab,content:content$3}}:t$1))},[setTabs]),formatTimestamp=()=>new Date().toLocaleTimeString(`en-US`,{hour12:!1,hour:`2-digit`,minute:`2-digit`,second:`2-digit`});return{tabs,activeTab,activeTabId,setActiveTabId,createTab,createSchemaTab,closeTab,closeOtherTabs,closeTabsToRight,closeAllTabs,updateTabContent,setTabResults:(0,import_react.useCallback)((id,results,options$1)=>{let timeStr=formatTimestamp(),newResultTabs=results.map((result,index$4)=>{let isCancelled=result.error?.toLowerCase().includes(`cancel`),title=results.length>1?`${timeStr} (${index$4+1})`:timeStr;return isCancelled&&(title+=` (cancelled)`),{id:crypto.randomUUID(),title,result,sql:options$1?.sql}});setTabs(prev=>prev.map(t$1=>t$1.tab.id===id?{...t$1,resultTabs:[...newResultTabs,...t$1.resultTabs],activeResultTabId:newResultTabs[0]?.id??t$1.activeResultTabId,...options$1?.isExecuting!==void 0&&{isExecuting:options$1.isExecuting}}:t$1))},[setTabs]),setActiveResultTab:(0,import_react.useCallback)((tabId,resultTabId)=>{setTabs(prev=>prev.map(t$1=>t$1.tab.id===tabId?{...t$1,activeResultTabId:resultTabId}:t$1))},[setTabs]),setTabExecuting:(0,import_react.useCallback)((id,isExecuting)=>{setTabs(prev=>prev.map(t$1=>t$1.tab.id===id?{...t$1,isExecuting}:t$1))},[setTabs]),setEditorHeight:(0,import_react.useCallback)((id,height)=>{setTabs(prev=>prev.map(t$1=>t$1.tab.id===id?{...t$1,editorHeight:height}:t$1))},[setTabs]),setFoldedRanges:(0,import_react.useCallback)((id,ranges)=>{setTabs(prev=>prev.map(t$1=>t$1.tab.id===id?{...t$1,foldedRanges:ranges}:t$1))},[setTabs]),getFoldedRanges:(0,import_react.useCallback)(id=>tabs.find(t$1=>t$1.tab.id===id)?.foldedRanges??[],[tabs]),rightPanel,setRightPanelOpen:(0,import_react.useCallback)(open=>{setTabsByConnection(prev=>{let current=prev[connectionId]??getEmptyState();return{...prev,[connectionId]:{...current,rightPanel:{...current.rightPanel,open}}}})},[connectionId]),setRightPanelActiveTab:(0,import_react.useCallback)(activeTab$1=>{setTabsByConnection(prev=>{let updated={};for(let[connId,connState]of Object.entries(prev))updated[connId]={...connState,rightPanel:{...connState.rightPanel,activeTab:activeTab$1}};return updated[connectionId]||(updated[connectionId]={...getEmptyState(),rightPanel:{...getEmptyState().rightPanel,activeTab:activeTab$1}}),updated})},[connectionId]),setRightPanelWidth:(0,import_react.useCallback)(width=>{setTabsByConnection(prev=>{let current=prev[connectionId]??getEmptyState();return{...prev,[connectionId]:{...current,rightPanel:{...current.rightPanel,width}}}})},[connectionId]),leftSidebarWidth,setLeftSidebarWidth:(0,import_react.useCallback)(width=>{setTabsByConnection(prev=>{let current=prev[connectionId]??getEmptyState();return{...prev,[connectionId]:{...current,leftSidebarWidth:width}}})},[connectionId])}}var OBJECT_TYPES=[`table`,`view`,`materialized_view`,`function`,`procedure`];function parseObjectFromUrl(searchParams){for(let type of OBJECT_TYPES){let value=searchParams.get(type);if(value){let match=value.match(/^([^(]+)(?:\(([^)]*)\))?$/);return match?{name:match[1],type,arguments:match[2]}:{name:value,type}}}return null}function setObjectParams(searchParams,object){for(let type of OBJECT_TYPES)searchParams.delete(type);if(object){let value=object.arguments?`${object.name}(${object.arguments})`:object.name;searchParams.set(object.type,value)}}function useEditorNavigation(connectionId){let[searchParams,setSearchParams]=useSearchParams(),prevConnectionIdRef=(0,import_react.useRef)(null),schemaFromUrl=searchParams.get(`schema`),objectFromUrl=parseObjectFromUrl(searchParams),{data:schemas=[],isLoading:isSchemasLoading}=useSchemas(connectionId),effectiveSchema=schemaFromUrl&&schemas.includes(schemaFromUrl)?schemaFromUrl:schemas.length>0?schemas.includes(`public`)?`public`:schemas[0]:null,{data:tables=[],isLoading:isTablesLoading}=useTables(connectionId,effectiveSchema||``),effectiveObject=(()=>{if(!effectiveSchema)return null;if(objectFromUrl&&(objectFromUrl.type===`function`||objectFromUrl.type===`procedure`||tables.some(t$1=>t$1.name===objectFromUrl.name)))return{schema:effectiveSchema,name:objectFromUrl.name,type:objectFromUrl.type,arguments:objectFromUrl.arguments};if(tables.length>0){let firstTable=tables.find(t$1=>t$1.type===`table`)||tables[0];return{schema:effectiveSchema,name:firstTable.name,type:firstTable.type===`view`?`view`:`table`}}return null})();(0,import_react.useEffect)(()=>{if(!connectionId||isSchemasLoading)return;let connectionChanged=prevConnectionIdRef.current!==null&&prevConnectionIdRef.current!==connectionId;if(prevConnectionIdRef.current=connectionId,connectionChanged){setSearchParams(prev=>{let newParams=new URLSearchParams;return newParams.set(`connectionId`,prev.get(`connectionId`)||connectionId),newParams},{replace:!0});return}let needsSchemaUpdate=effectiveSchema&&effectiveSchema!==schemaFromUrl,needsObjectUpdate=!isTablesLoading&&effectiveObject&&(!objectFromUrl||objectFromUrl.name!==effectiveObject.name||objectFromUrl.type!==effectiveObject.type);(needsSchemaUpdate||needsObjectUpdate)&&setSearchParams(prev=>{let newParams=new URLSearchParams(prev);return needsSchemaUpdate&&effectiveSchema&&newParams.set(`schema`,effectiveSchema),needsObjectUpdate&&setObjectParams(newParams,effectiveObject),newParams},{replace:!0})},[connectionId,isSchemasLoading,isTablesLoading,effectiveSchema,schemaFromUrl,effectiveObject,objectFromUrl,setSearchParams]);let setSchema=(0,import_react.useCallback)(schema=>{setSearchParams(prev=>{let newParams=new URLSearchParams(prev);return schema?newParams.set(`schema`,schema):newParams.delete(`schema`),setObjectParams(newParams,null),newParams},{replace:!0})},[setSearchParams]),setObject=(0,import_react.useCallback)((object,options$1)=>{setSearchParams(prev=>{let newParams=new URLSearchParams(prev);return setObjectParams(newParams,object),newParams},{replace:options$1?.replace??!0})},[setSearchParams]);return{schema:effectiveSchema,object:effectiveObject,isLoading:isSchemasLoading||isTablesLoading,isSchemasLoading,isTablesLoading,schemas,tables,setSchema,setObject}}var DEFAULT_COLOR=`#2563eb`;function Banner({text:text$5,link:link$1,color:color$1=DEFAULT_COLOR}){let style$1={backgroundColor:color$1};return link$1?(0,import_jsx_runtime.jsxs)(`a`,{href:link$1,target:`_blank`,rel:`noopener noreferrer`,className:`flex h-10 items-center justify-center gap-1.5 text-sm font-medium text-white hover:opacity-90`,style:style$1,children:[text$5,(0,import_jsx_runtime.jsx)(ArrowRight,{size:14})]}):(0,import_jsx_runtime.jsx)(`div`,{className:`flex h-10 items-center justify-center text-sm font-medium text-white`,style:style$1,children:text$5})}function useSetting(){let{data,isLoading}=useQuery({queryKey:[`setting`],queryFn:async()=>{let res=await fetch(`/api/setting`);if(!res.ok)throw Error(`Failed to fetch setting`);return res.json()}});return{banner:data?.banner,plan:data?.plan??`FREE`,licenseExpiry:data?.licenseExpiry,licenseEmail:data?.licenseEmail,maxUsers:data?.maxUsers??1,userCount:data?.userCount??0,stripeCustomerId:data?.stripeCustomerId,isLoading}}var Dialog=DialogRoot,DialogPortal=DialogPortal$1;function DialogBackdrop({className,...props}){return(0,import_jsx_runtime.jsx)(DialogBackdrop$1,{className:cn(`fixed inset-0 z-50 bg-black/32 backdrop-blur-sm transition-all duration-200 data-ending-style:opacity-0 data-starting-style:opacity-0`,className),"data-slot":`dialog-backdrop`,...props})}function DialogViewport({className,...props}){return(0,import_jsx_runtime.jsx)(DialogViewport$1,{className:cn(`fixed inset-0 z-50 grid grid-rows-[1fr_auto_3fr] justify-items-center p-4`,className),"data-slot":`dialog-viewport`,...props})}function DialogPopup({className,children,showCloseButton=!0,bottomStickOnMobile=!0,...props}){return(0,import_jsx_runtime.jsxs)(DialogPortal,{children:[(0,import_jsx_runtime.jsx)(DialogBackdrop,{}),(0,import_jsx_runtime.jsx)(DialogViewport,{className:cn(bottomStickOnMobile&&`max-sm:grid-rows-[1fr_auto] max-sm:pt-12`),children:(0,import_jsx_runtime.jsxs)(DialogPopup$1,{className:cn(`-translate-y-[calc(1.25rem*var(--nested-dialogs))] relative row-start-2 flex max-h-full min-h-0 w-full min-w-0 max-w-lg scale-[calc(1-0.1*var(--nested-dialogs))] flex-col rounded-2xl border bg-popover bg-clip-padding text-popover-foreground opacity-[calc(1-0.1*var(--nested-dialogs))] shadow-lg transition-[scale,opacity,translate] duration-200 ease-in-out will-change-transform before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-2xl)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] data-nested:data-ending-style:translate-y-8 data-nested:data-starting-style:translate-y-8 data-nested-dialog-open:origin-top data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 dark:bg-clip-border dark:before:shadow-[0_-1px_--theme(--color-white/8%)]`,bottomStickOnMobile&&`max-sm:rounded-none max-sm:border-x-0 max-sm:border-t max-sm:border-b-0 max-sm:opacity-[calc(1-min(var(--nested-dialogs),1))] max-sm:data-ending-style:translate-y-4 max-sm:data-starting-style:translate-y-4 max-sm:before:hidden max-sm:before:rounded-none`,className),"data-slot":`dialog-popup`,...props,children:[children,showCloseButton&&(0,import_jsx_runtime.jsx)(DialogClose,{"aria-label":`Close`,className:`absolute end-2 top-2`,render:(0,import_jsx_runtime.jsx)(Button,{size:`icon`,variant:`ghost`}),children:(0,import_jsx_runtime.jsx)(X,{})})]})})]})}function DialogHeader({className,...props}){return(0,import_jsx_runtime.jsx)(`div`,{className:cn(`flex flex-col gap-2 p-6 in-[[data-slot=dialog-popup]:has([data-slot=dialog-panel])]:pb-3 max-sm:pb-4`,className),"data-slot":`dialog-header`,...props})}function DialogFooter({className,variant=`default`,...props}){return(0,import_jsx_runtime.jsx)(`div`,{className:cn(`flex flex-col-reverse gap-2 px-6 sm:flex-row sm:justify-end sm:rounded-b-[calc(var(--radius-2xl)-1px)]`,variant===`default`&&`border-t bg-muted/50 py-4`,variant===`bare`&&`in-[[data-slot=dialog-popup]:has([data-slot=dialog-panel])]:pt-3 pt-4 pb-6`,className),"data-slot":`dialog-footer`,...props})}function DialogTitle({className,...props}){return(0,import_jsx_runtime.jsx)(DialogTitle$1,{className:cn(`font-heading text-xl leading-none`,className),"data-slot":`dialog-title`,...props})}function DialogDescription({className,...props}){return(0,import_jsx_runtime.jsx)(DialogDescription$1,{className:cn(`text-muted-foreground text-sm`,className),"data-slot":`dialog-description`,...props})}function DialogPanel({className,...props}){return(0,import_jsx_runtime.jsx)(ScrollArea,{children:(0,import_jsx_runtime.jsx)(`div`,{className:cn(`px-6 in-[[data-slot=dialog-popup]:has([data-slot=dialog-header])]:pt-1 in-[[data-slot=dialog-popup]:not(:has([data-slot=dialog-header]))]:pt-6 in-[[data-slot=dialog-popup]:not(:has([data-slot=dialog-footer]))]:pb-6! in-[[data-slot=dialog-popup]:not(:has([data-slot=dialog-footer].border-t))]:pb-1 pb-6`,className),"data-slot":`dialog-panel`,...props})})}var PLAN_LABELS={FREE:`Free`,TEAM:`Team`,ENTERPRISE:`Enterprise`},PLAN_COLORS={FREE:`bg-gray-100 text-gray-700`,TEAM:`bg-blue-100 text-blue-700`,ENTERPRISE:`bg-purple-100 text-purple-700`};function formatDate(timestamp){return new Date(timestamp*1e3).toLocaleDateString(void 0,{year:`numeric`,month:`long`,day:`numeric`})}function isExpired(timestamp){return timestamp*1e3<Date.now()}function SubscriptionModalProvider({children}){let[isOpen,setIsOpen]=(0,import_react.useState)(!1),[reason,setReason]=(0,import_react.useState)(),{plan,licenseExpiry,licenseEmail,maxUsers,userCount,stripeCustomerId}=useSetting(),isOwner=useOwner(),[isLoading,setIsLoading]=(0,import_react.useState)(!1),[billingCycle,setBillingCycle]=(0,import_react.useState)(`annual`),handleCheckout=async()=>{setIsLoading(!0);try{let res=await fetch(`/api/stripe/checkout`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({billingCycle})});if(!res.ok){let data=await res.json();throw Error(data.error||`Failed to create checkout session`)}let{url}=await res.json();window.location.href=url}catch(error){console.error(`Checkout error:`,error),toastManager.add({type:`error`,title:`Checkout failed`,description:error instanceof Error?error.message:`Failed to create checkout session`}),setIsLoading(!1)}},handlePortal=async()=>{setIsLoading(!0);try{let res=await fetch(`/api/stripe/portal`,{method:`POST`});if(!res.ok){let data=await res.json();throw Error(data.error||`Failed to create portal session`)}let{url}=await res.json();window.location.href=url}catch(error){console.error(`Portal error:`,error),toastManager.add({type:`error`,title:`Billing portal failed`,description:error instanceof Error?error.message:`Failed to open billing portal`}),setIsLoading(!1)}},open=(0,import_react.useCallback)(r$4=>{setReason(r$4),setIsOpen(!0)},[]),contextValue=(0,import_react.useMemo)(()=>({open}),[open]),expired=licenseExpiry?isExpired(licenseExpiry):!1;return(0,import_jsx_runtime.jsxs)(SubscriptionModalContext.Provider,{value:contextValue,children:[children,(0,import_jsx_runtime.jsx)(Dialog,{open:isOpen,onOpenChange:setIsOpen,children:(0,import_jsx_runtime.jsxs)(DialogPopup,{className:`max-w-md`,children:[(0,import_jsx_runtime.jsxs)(DialogHeader,{children:[(0,import_jsx_runtime.jsx)(DialogTitle,{children:`Subscription`}),reason&&(0,import_jsx_runtime.jsx)(DialogDescription,{children:reason})]}),(0,import_jsx_runtime.jsx)(DialogPanel,{children:(0,import_jsx_runtime.jsxs)(`div`,{className:`space-y-4`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(Shield,{size:16,className:`text-gray-500`}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm text-gray-600`,children:`Plan`})]}),(0,import_jsx_runtime.jsx)(Badge,{className:PLAN_COLORS[plan],children:PLAN_LABELS[plan]})]}),licenseEmail&&(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(Mail,{size:16,className:`text-gray-500`}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm text-gray-600`,children:`Licensee`})]}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm font-medium text-gray-900`,children:licenseEmail})]}),licenseExpiry&&(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(Calendar,{size:16,className:`text-gray-500`}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm text-gray-600`,children:`Expires`})]}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm font-medium ${expired?`text-red-600`:`text-gray-900`}`,children:expired?`Expired`:formatDate(licenseExpiry)})]}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(Users,{size:16,className:`text-gray-500`}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm text-gray-600`,children:`Users`})]}),(0,import_jsx_runtime.jsxs)(`span`,{className:`text-sm font-medium text-gray-900`,children:[userCount,` / `,maxUsers]})]}),isOwner&&!stripeCustomerId&&(0,import_jsx_runtime.jsxs)(`div`,{className:`pt-4 border-t`,children:[(0,import_jsx_runtime.jsx)(`p`,{className:`text-sm font-medium text-gray-700 mb-3`,children:`Select billing cycle:`}),(0,import_jsx_runtime.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,import_jsx_runtime.jsxs)(`button`,{type:`button`,onClick:()=>setBillingCycle(`monthly`),className:`p-3 rounded-lg border text-left transition-colors ${billingCycle===`monthly`?`border-blue-500 bg-blue-50`:`border-gray-200 hover:border-gray-300`}`,children:[(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm font-medium text-gray-900`,children:`Monthly`}),(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`$20/user/mo`})]}),(0,import_jsx_runtime.jsxs)(`button`,{type:`button`,onClick:()=>setBillingCycle(`annual`),className:`p-3 rounded-lg border text-left transition-colors ${billingCycle===`annual`?`border-blue-500 bg-blue-50`:`border-gray-200 hover:border-gray-300`}`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm font-medium text-gray-900`,children:`Annual`}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-xs text-green-600 font-medium`,children:`Save 20%`})]}),(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`$16/user/mo`})]})]})]})]})}),(0,import_jsx_runtime.jsxs)(DialogFooter,{variant:`bare`,children:[(0,import_jsx_runtime.jsx)(Button,{variant:`outline`,onClick:()=>setIsOpen(!1),children:`Close`}),isOwner&&(stripeCustomerId?(0,import_jsx_runtime.jsx)(Button,{onClick:handlePortal,disabled:isLoading,children:isLoading?`Loading...`:`Manage Billing`}):(0,import_jsx_runtime.jsx)(Button,{onClick:handleCheckout,disabled:isLoading,children:isLoading?`Loading...`:`Upgrade`}))]})]})})]})}var TOML_EXAMPLE=`[general]
1392
- license = "your-license-key"`;function CheckoutSuccessModal({open,onClose}){let[copied,setCopied]=(0,import_react.useState)(!1);return(0,import_react.useEffect)(()=>{if(copied){let timer=setTimeout(()=>setCopied(!1),2e3);return()=>clearTimeout(timer)}},[copied]),(0,import_jsx_runtime.jsx)(Dialog,{open,onOpenChange:o$2=>!o$2&&onClose(),children:(0,import_jsx_runtime.jsxs)(DialogPopup,{className:`max-w-md`,children:[(0,import_jsx_runtime.jsxs)(DialogHeader,{children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(CircleCheckBig,{className:`text-green-500`,size:24}),(0,import_jsx_runtime.jsx)(DialogTitle,{children:`Payment Successful`})]}),(0,import_jsx_runtime.jsx)(DialogDescription,{children:`Your license key will arrive by email shortly.`})]}),(0,import_jsx_runtime.jsx)(DialogPanel,{children:(0,import_jsx_runtime.jsxs)(`div`,{className:`space-y-4`,children:[(0,import_jsx_runtime.jsx)(`p`,{className:`text-sm text-gray-600`,children:`To activate your license:`}),(0,import_jsx_runtime.jsxs)(`ol`,{className:`list-decimal list-inside space-y-2 text-sm text-gray-700`,children:[(0,import_jsx_runtime.jsx)(`li`,{children:`Check your email for the license key`}),(0,import_jsx_runtime.jsxs)(`li`,{children:[`Open your `,(0,import_jsx_runtime.jsx)(`code`,{className:`bg-gray-100 px-1 rounded`,children:`pgconsole.toml`}),` file`]}),(0,import_jsx_runtime.jsx)(`li`,{children:`Add the license key:`})]}),(0,import_jsx_runtime.jsxs)(`div`,{className:`relative`,children:[(0,import_jsx_runtime.jsx)(`pre`,{className:`bg-gray-50 border rounded p-3 text-sm font-mono overflow-x-auto`,children:TOML_EXAMPLE}),(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`sm`,className:`absolute top-2 right-2`,onClick:async()=>{await navigator.clipboard.writeText(TOML_EXAMPLE),setCopied(!0)},children:copied?(0,import_jsx_runtime.jsx)(Check,{size:14}):(0,import_jsx_runtime.jsx)(Copy,{size:14})})]}),(0,import_jsx_runtime.jsx)(`ol`,{className:`list-decimal list-inside space-y-2 text-sm text-gray-700`,start:4,children:(0,import_jsx_runtime.jsx)(`li`,{children:`Restart pgconsole`})})]})}),(0,import_jsx_runtime.jsx)(DialogFooter,{variant:`bare`,children:(0,import_jsx_runtime.jsx)(Button,{onClick:onClose,children:`Got it`})})]})})}var EXPIRY_WARNING_DAYS=7;function LicenseExpiryBanner(){let{licenseExpiry}=useSetting(),isOwner=useOwner(),subscriptionModal=useSubscriptionModal();if(!licenseExpiry)return null;let now$1=Date.now(),expiryMs=licenseExpiry*1e3,daysUntilExpiry=Math.ceil((expiryMs-now$1)/(1e3*60*60*24));if(daysUntilExpiry>EXPIRY_WARNING_DAYS)return null;let message=daysUntilExpiry<0?`Your license has expired.`:daysUntilExpiry===0?`Your license expires today.`:daysUntilExpiry===1?`Your license expires tomorrow.`:`Your license expires in ${daysUntilExpiry} days.`;return isOwner?(0,import_jsx_runtime.jsxs)(`button`,{onClick:()=>subscriptionModal.open(),className:`flex h-10 w-full items-center justify-center gap-1.5 bg-primary text-sm font-medium text-primary-foreground hover:opacity-90`,children:[message,` Click to renew.`]}):(0,import_jsx_runtime.jsx)(`div`,{className:`flex h-10 items-center justify-center bg-primary text-sm font-medium text-primary-foreground`,children:message})}function AppLayout(){let{user,isPending:sessionPending,serverError,authEnabled}=useSession(),{data:connections}=useConnections(),{banner}=useSetting(),[searchParams]=useSearchParams(),navigate=useNavigate(),location=useLocation(),hasShownInvalidToast=(0,import_react.useRef)(!1),[showCheckoutSuccess,setShowCheckoutSuccess]=(0,import_react.useState)(!1);(0,import_react.useEffect)(()=>{let params=new URLSearchParams(window.location.search);if(params.get(`checkout`)===`success`){setShowCheckoutSuccess(!0),params.delete(`checkout`);let newUrl=params.toString()?`${window.location.pathname}?${params.toString()}`:window.location.pathname;window.history.replaceState({},``,newUrl)}},[]);let handleCloseCheckoutSuccess=()=>{setShowCheckoutSuccess(!1)},connectionIdFromUrl=searchParams.get(`connectionId`),isEditorRoute=location.pathname===`/`,isSignInRoute=location.pathname===`/signin`,selectedConnectionId=(()=>!connections||connections.length===0?``:connectionIdFromUrl&&connections.some(c=>c.id===connectionIdFromUrl)?connectionIdFromUrl:connections[0].id)(),navigation$1=useEditorNavigation(selectedConnectionId),editorTabs=useEditorTabs(selectedConnectionId);return(0,import_react.useEffect)(()=>{if(!connections||connections.length===0||!isEditorRoute)return;let isValidConnection=connectionIdFromUrl&&connections.some(c=>c.id===connectionIdFromUrl);connectionIdFromUrl?isValidConnection||(hasShownInvalidToast.current||(hasShownInvalidToast.current=!0,toastManager.add({title:`Connection not found`,description:`Connection "${connectionIdFromUrl}" does not exist`,type:`error`})),navigate(`/?connectionId=${connections[0].id}`,{replace:!0})):navigate(`/?connectionId=${connections[0].id}`,{replace:!0})},[connections,connectionIdFromUrl,isEditorRoute,navigate]),sessionPending?(0,import_jsx_runtime.jsx)(`div`,{className:`flex h-screen w-screen items-center justify-center bg-white`,children:(0,import_jsx_runtime.jsx)(`div`,{className:`text-gray-600`,children:`Loading...`})}):serverError?(0,import_jsx_runtime.jsx)(`div`,{className:`flex h-screen w-screen items-center justify-center bg-white`,children:(0,import_jsx_runtime.jsxs)(`div`,{className:`text-center space-y-4 max-w-md px-4`,children:[(0,import_jsx_runtime.jsx)(CircleAlert,{className:`mx-auto text-red-500`,size:48}),(0,import_jsx_runtime.jsx)(`h1`,{className:`text-xl font-semibold text-gray-900`,children:`Cannot connect to server`}),(0,import_jsx_runtime.jsx)(`p`,{className:`text-gray-600`,children:`The backend server is not responding. Please make sure the server is running.`}),(0,import_jsx_runtime.jsx)(Button,{onClick:()=>window.location.reload(),children:`Retry`})]})}):authEnabled&&!user&&!isSignInRoute?(0,import_jsx_runtime.jsx)(Navigate,{to:`/signin`,replace:!0}):user&&isSignInRoute?(0,import_jsx_runtime.jsx)(Navigate,{to:`/`,replace:!0}):(0,import_jsx_runtime.jsx)(ToastProvider,{children:(0,import_jsx_runtime.jsxs)(SubscriptionModalProvider,{children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex flex-col h-screen w-screen overflow-hidden bg-white`,children:[!isSignInRoute&&banner?.text&&(0,import_jsx_runtime.jsx)(Banner,{text:banner.text,link:banner.link,color:banner.color}),!isSignInRoute&&(0,import_jsx_runtime.jsx)(LicenseExpiryBanner,{}),!isSignInRoute&&(0,import_jsx_runtime.jsx)(Header,{selectedConnectionId}),(0,import_jsx_runtime.jsx)(`div`,{className:`flex flex-1 overflow-hidden`,children:(0,import_jsx_runtime.jsxs)(Routes,{children:[(0,import_jsx_runtime.jsx)(Route,{path:`/`,element:(0,import_jsx_runtime.jsx)(SQLEditorLayout,{connectionId:selectedConnectionId,editorTabs,selectedSchema:navigation$1.schema,selectedObject:navigation$1.object,onSchemaChange:navigation$1.setSchema,onObjectSelect:navigation$1.setObject,schemas:navigation$1.schemas,tables:navigation$1.tables,isSchemasLoading:navigation$1.isSchemasLoading,isTablesLoading:navigation$1.isTablesLoading})}),(0,import_jsx_runtime.jsx)(Route,{path:`/signin`,element:(0,import_jsx_runtime.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,import_jsx_runtime.jsx)(SignIn,{})})}),(0,import_jsx_runtime.jsx)(Route,{path:`*`,element:(0,import_jsx_runtime.jsx)(Navigate,{to:`/`,replace:!0})})]})})]}),(0,import_jsx_runtime.jsx)(CheckoutSuccessModal,{open:showCheckoutSuccess,onClose:handleCloseCheckoutSuccess})]})})}function App(){return(0,import_jsx_runtime.jsx)(BrowserRouter,{children:(0,import_jsx_runtime.jsx)(AppLayout,{})})}var App_default=App,queryClient=new QueryClient({defaultOptions:{queries:{retry:1,refetchOnWindowFocus:!1}}});(0,import_client.createRoot)(document.getElementById(`root`)).render((0,import_jsx_runtime.jsx)(import_react.StrictMode,{children:(0,import_jsx_runtime.jsx)(QueryClientProvider,{client:queryClient,children:(0,import_jsx_runtime.jsx)(KeyboardShortcutsProvider,{children:(0,import_jsx_runtime.jsx)(App_default,{})})})}));export{parseSql as _,SQL_KEYWORDS as a,getGroupByKeywords as c,tokenize as d,getEditorInfo as f,isModuleLoaded as g,ensureModuleLoaded as h,RETRIGGER_KEYWORDS as i,getOrderByModifiers as l,formatSqlOneLine as m,autocomplete as n,getAllKeywords as o,formatSql as p,isMatch as r,getExpressionKeywords as s,isDDLStatement as t,getStatementKeywords as u};
1391
+ /* condition */;`}async function generateCreateTable(){return formatSql(`CREATE TABLE table_name (id serial PRIMARY KEY, column_name data_type)`)}async function generateAlterAddColumn(table$1){return formatSql(`ALTER TABLE ${table$1} ADD COLUMN column_name data_type`)}var MIN_PANEL_WIDTH=200,MAX_PANEL_WIDTH=600,MIN_SIDEBAR_WIDTH=160,MAX_SIDEBAR_WIDTH=400;function SQLEditorLayout({connectionId,editorTabs,selectedSchema,selectedObject,onSchemaChange,onObjectSelect,schemas,tables,isSchemasLoading,isTablesLoading,schemasError,tablesError}){let[isDraggingPanel,setIsDraggingPanel]=(0,import_react.useState)(!1),[isDraggingSidebar,setIsDraggingSidebar]=(0,import_react.useState)(!1),containerRef=(0,import_react.useRef)(null),insertAtCursorRef=(0,import_react.useRef)(null),executeSQL=useExecuteSQL(),[initialPrompt,setInitialPrompt]=(0,import_react.useState)(null);useSchemaStoreSync(connectionId,selectedSchema);let handlePanelResizeStart=(0,import_react.useCallback)(e=>{e.preventDefault(),setIsDraggingPanel(!0)},[]),handleSidebarResizeStart=(0,import_react.useCallback)(e=>{e.preventDefault(),setIsDraggingSidebar(!0)},[]);(0,import_react.useEffect)(()=>{if(!isDraggingPanel)return;let handleMouseMove=e=>{if(!containerRef.current)return;let newWidth=containerRef.current.getBoundingClientRect().right-e.clientX,clampedWidth=Math.max(MIN_PANEL_WIDTH,Math.min(newWidth,MAX_PANEL_WIDTH));editorTabs.setRightPanelWidth(clampedWidth)},handleMouseUp=()=>{setIsDraggingPanel(!1)};return document.addEventListener(`mousemove`,handleMouseMove),document.addEventListener(`mouseup`,handleMouseUp),()=>{document.removeEventListener(`mousemove`,handleMouseMove),document.removeEventListener(`mouseup`,handleMouseUp)}},[isDraggingPanel,editorTabs]),(0,import_react.useEffect)(()=>{if(!isDraggingSidebar)return;let handleMouseMove=e=>{if(!containerRef.current)return;let containerRect=containerRef.current.getBoundingClientRect(),newWidth=e.clientX-containerRect.left,clampedWidth=Math.max(MIN_SIDEBAR_WIDTH,Math.min(newWidth,MAX_SIDEBAR_WIDTH));editorTabs.setLeftSidebarWidth(clampedWidth)},handleMouseUp=()=>{setIsDraggingSidebar(!1)};return document.addEventListener(`mousemove`,handleMouseMove),document.addEventListener(`mouseup`,handleMouseUp),()=>{document.removeEventListener(`mousemove`,handleMouseMove),document.removeEventListener(`mouseup`,handleMouseUp)}},[isDraggingSidebar,editorTabs]);let prevSelectedObjectRef=(0,import_react.useRef)(null);(0,import_react.useEffect)(()=>{let prev=prevSelectedObjectRef.current,curr=selectedObject,changed=curr&&(!prev||prev.schema!==curr.schema||prev.name!==curr.name||prev.type!==curr.type||prev.arguments!==curr.arguments);if(prevSelectedObjectRef.current=curr,changed){curr.type===`table`||curr.type===`view`||curr.type===`materialized_view`?schemaStore.setSelectedTable({schema:curr.schema,name:curr.name}):schemaStore.setSelectedTable(null);let activeTabType=editorTabs.activeTab?.tab.type;(!activeTabType||activeTabType===`schema`)&&editorTabs.createSchemaTab(curr.schema,curr.name,curr.type,curr.arguments)}},[selectedObject,editorTabs]);let handleObjectSelect=obj=>{onObjectSelect(obj)},handleViewSchema=(schema,objectName,objectType,args)=>{onObjectSelect({schema,name:objectName,type:objectType,arguments:args},{replace:!1}),editorTabs.createSchemaTab(schema,objectName,objectType,args)},handleObjectDoubleClick=async(schema,objectName,objectType,args)=>{if(objectType===`function`||objectType===`procedure`){editorTabs.createSchemaTab(schema,objectName,objectType,args);return}let query=`SELECT * FROM ${schema}.${objectName} LIMIT 100;`,existingTab=editorTabs.tabs.find(t$1=>t$1.tab.type===`query`&&t$1.tab.content.trim()===query.trim()),tabId;existingTab?(tabId=existingTab.tab.id,editorTabs.setActiveTabId(tabId),editorTabs.setTabExecuting(tabId,!0)):tabId=editorTabs.createTab(query,{isExecuting:!0});try{let selectedSchema$1=schemaStore.getSelectedSchema(),searchPath=selectedSchema$1?selectedSchema$1===`public`?`public`:`${selectedSchema$1}, public`:void 0,result=await executeSQL.mutateAsync({connectionId,sql:query,searchPath});editorTabs.setTabResults(tabId,[{columns:result.error?[]:result.columns,rows:result.error?[]:result.rows,rowCount:result.error?0:result.rowCount,executionTime:result.executionTime,error:result.error||void 0}],{isExecuting:!1,sql:query})}catch(err){editorTabs.setTabResults(tabId,[{columns:[],rows:[],rowCount:0,executionTime:0,error:err instanceof Error?err.message:`Query execution failed`}],{isExecuting:!1})}},handleRunSQL=async sql=>{let tabId;editorTabs.activeTab?.tab.type===`query`?(tabId=editorTabs.activeTab.tab.id,editorTabs.setTabExecuting(tabId,!0)):tabId=editorTabs.createTab(``,{isExecuting:!0});try{let selectedSchema$1=schemaStore.getSelectedSchema(),searchPath=selectedSchema$1?selectedSchema$1===`public`?`public`:`${selectedSchema$1}, public`:void 0,result=await executeSQL.mutateAsync({connectionId,sql,searchPath});editorTabs.setTabResults(tabId,[{columns:result.error?[]:result.columns,rows:result.error?[]:result.rows,rowCount:result.error?0:result.rowCount,executionTime:result.executionTime,error:result.error||void 0}],{isExecuting:!1,sql})}catch(err){editorTabs.setTabResults(tabId,[{columns:[],rows:[],rowCount:0,executionTime:0,error:err instanceof Error?err.message:`Query execution failed`}],{isExecuting:!1})}},handleExplainWithAI=sql=>{editorTabs.setRightPanelOpen(!0),editorTabs.setRightPanelActiveTab(`chat`),setInitialPrompt({sql,action:`explain`})},handleGenerateSQL=async(schema,objectName,_objectType,sqlType)=>{try{let sql;if(sqlType===`select`)sql=await generateSelect(objectName);else if(sqlType===`alter_add_column`)sql=await generateAlterAddColumn(objectName);else if(sqlType===`create_table`)sql=await generateCreateTable();else{let columns=(await queryClient$1.getColumns({connectionId,schema,table:objectName})).columns.map(c=>({name:c.name,type:c.type,nullable:c.nullable}));if(columns.length===0){toastManager.add({title:`Cannot generate SQL`,description:`Table has no columns`,type:`error`});return}if(sqlType===`insert`)sql=await generateInsert(objectName,columns);else{let pkColumns=(await queryClient$1.getConstraints({connectionId,schema,table:objectName})).constraints.find(c=>c.type===`PRIMARY KEY`)?.columns??[];sql=sqlType===`update`?await generateUpdate(objectName,columns,pkColumns):await generateDelete(objectName,pkColumns)}}editorTabs.activeTab?.tab.type===`query`&&insertAtCursorRef.current?insertAtCursorRef.current(sql):editorTabs.createTab(sql)}catch(err){toastManager.add({title:`Failed to generate SQL`,description:err instanceof Error?err.message:`Unknown error`,type:`error`})}};return(0,import_jsx_runtime.jsxs)(`div`,{ref:containerRef,className:`flex flex-1 h-full overflow-hidden`,children:[(0,import_jsx_runtime.jsx)(`div`,{className:`flex-shrink-0`,style:{width:editorTabs.leftSidebarWidth},children:(0,import_jsx_runtime.jsx)(ObjectSidebar,{connectionId,selectedObject,onObjectSelect:handleObjectSelect,onObjectDoubleClick:handleObjectDoubleClick,onViewSchema:handleViewSchema,onGenerateSQL:handleGenerateSQL,selectedSchema,onSchemaChange,onNewQuery:editorTabs.createTab,schemas,tables,isSchemasLoading,isTablesLoading,schemasError,tablesError})}),(0,import_jsx_runtime.jsx)(ResizeHandle,{direction:`vertical`,isDragging:isDraggingSidebar,onMouseDown:handleSidebarResizeStart}),(0,import_jsx_runtime.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,import_jsx_runtime.jsx)(EditorArea,{editorTabs,connectionId,selectedSchema,rightPanelOpen:editorTabs.rightPanel.open,onRightPanelToggle:()=>editorTabs.setRightPanelOpen(!editorTabs.rightPanel.open),onEditorReady:insertFn=>{insertAtCursorRef.current=insertFn},selectedObject,onGenerateSQL:handleGenerateSQL,onExplainWithAI:handleExplainWithAI,onViewSchema:handleViewSchema})}),editorTabs.rightPanel.open&&(0,import_jsx_runtime.jsx)(ResizeHandle,{direction:`vertical`,isDragging:isDraggingPanel,onMouseDown:handlePanelResizeStart}),(0,import_jsx_runtime.jsx)(RightPanel,{open:editorTabs.rightPanel.open,width:editorTabs.rightPanel.width,activeTab:editorTabs.rightPanel.activeTab,onActiveTabChange:editorTabs.setRightPanelActiveTab,connectionId,selectedObject,selectedSchema:selectedSchema??void 0,onInsertSQL:sql=>{editorTabs.activeTab&&editorTabs.activeTab.tab.type===`query`&&insertAtCursorRef.current?insertAtCursorRef.current(sql):editorTabs.createTab(sql)},onRunSQL:handleRunSQL,onViewSchema:handleViewSchema,initialPrompt,onInitialPromptProcessed:()=>setInitialPrompt(null)})]})}var DEFAULT_EDITOR_HEIGHT=0,DEFAULT_RIGHT_PANEL_WIDTH=320,DEFAULT_LEFT_SIDEBAR_WIDTH=240,CONTENT_STORAGE_KEY=`pgconsole-editor`,LAYOUT_STORAGE_KEY=`pgconsole-layout`;function loadContentFromStorage(){try{let stored=localStorage.getItem(CONTENT_STORAGE_KEY);return stored?JSON.parse(stored):{byConnection:{}}}catch{return{byConnection:{}}}}function loadLayoutFromStorage(){try{let stored=localStorage.getItem(LAYOUT_STORAGE_KEY);return stored?JSON.parse(stored):{byConnection:{}}}catch{return{byConnection:{}}}}function loadFromStorage(){let content$3=loadContentFromStorage(),layout=loadLayoutFromStorage(),restored={},globalActiveTab=layout.rightPanelActiveTab??`context`;for(let[connId,connContent]of Object.entries(content$3.byConnection??{})){let connLayout=layout.byConnection?.[connId],editorHeight=connLayout?.editorHeight??DEFAULT_EDITOR_HEIGHT;restored[connId]={activeTabId:connContent.activeTabId,tabCounter:connContent.tabCounter||0,rightPanel:{open:connContent.rightPanelOpen??!0,activeTab:globalActiveTab,width:connLayout?.rightPanelWidth??DEFAULT_RIGHT_PANEL_WIDTH},leftSidebarWidth:connLayout?.leftSidebarWidth??DEFAULT_LEFT_SIDEBAR_WIDTH,tabs:connContent.tabs.map(t$1=>({tab:t$1.tab,resultTabs:[],activeResultTabId:null,isExecuting:!1,editorHeight}))}}return restored}function saveContentToStorage(tabsByConnection){try{let toSave={byConnection:{}};for(let[connId,connState]of Object.entries(tabsByConnection))toSave.byConnection[connId]={activeTabId:connState.activeTabId,tabCounter:connState.tabCounter,rightPanelOpen:connState.rightPanel.open,tabs:connState.tabs.map(t$1=>({tab:t$1.tab}))};localStorage.setItem(CONTENT_STORAGE_KEY,JSON.stringify(toSave))}catch{}}function saveLayoutToStorage(tabsByConnection){try{let toSave={byConnection:{}},firstConnection=Object.values(tabsByConnection)[0];firstConnection&&(toSave.rightPanelActiveTab=firstConnection.rightPanel.activeTab);for(let[connId,connState]of Object.entries(tabsByConnection)){let editorHeight=connState.tabs.find(t$1=>t$1.tab.id===connState.activeTabId)?.editorHeight??connState.tabs[0]?.editorHeight??DEFAULT_EDITOR_HEIGHT;toSave.byConnection[connId]={editorHeight,rightPanelWidth:connState.rightPanel.width,leftSidebarWidth:connState.leftSidebarWidth??DEFAULT_LEFT_SIDEBAR_WIDTH}}localStorage.setItem(LAYOUT_STORAGE_KEY,JSON.stringify(toSave))}catch{}}function useEditorTabs(connectionId){let[tabsByConnection,setTabsByConnection]=(0,import_react.useState)(loadFromStorage);(0,import_react.useEffect)(()=>{saveContentToStorage(tabsByConnection),saveLayoutToStorage(tabsByConnection)},[tabsByConnection]);let getGlobalActiveTab=()=>Object.values(tabsByConnection)[0]?.rightPanel.activeTab??`context`,getDefaultRightPanel=()=>({open:!0,activeTab:getGlobalActiveTab(),width:DEFAULT_RIGHT_PANEL_WIDTH}),currentState=tabsByConnection[connectionId]??{tabs:[],activeTabId:``,tabCounter:0,rightPanel:getDefaultRightPanel(),leftSidebarWidth:DEFAULT_LEFT_SIDEBAR_WIDTH},tabs=currentState.tabs,activeTabId=currentState.activeTabId,rightPanel=currentState.rightPanel??getDefaultRightPanel(),leftSidebarWidth=currentState.leftSidebarWidth??DEFAULT_LEFT_SIDEBAR_WIDTH,activeTab=(0,import_react.useMemo)(()=>tabs.find(t$1=>t$1.tab.id===activeTabId)??null,[tabs,activeTabId]),getEmptyState=()=>({tabs:[],activeTabId:``,tabCounter:0,rightPanel:getDefaultRightPanel(),leftSidebarWidth:DEFAULT_LEFT_SIDEBAR_WIDTH}),setActiveTabId=(0,import_react.useCallback)(id=>{setTabsByConnection(prev=>({...prev,[connectionId]:{...prev[connectionId]??getEmptyState(),activeTabId:id}}))},[connectionId]),setTabs=(0,import_react.useCallback)(updater=>{setTabsByConnection(prev=>{let current=prev[connectionId]??getEmptyState();return{...prev,[connectionId]:{...current,tabs:updater(current.tabs)}}})},[connectionId]),createTab=(0,import_react.useCallback)((content$3=``,options$1)=>{let newTabId=`tab-${Date.now()}-${Math.random().toString(36).slice(2,7)}`;return setTabsByConnection(prev=>{let current=prev[connectionId]??getEmptyState(),inheritedHeight=current.tabs.find(t$1=>t$1.tab.id===current.activeTabId)?.editorHeight??DEFAULT_EDITOR_HEIGHT,newTab={tab:{type:`query`,id:newTabId,name:`SQL ${current.tabCounter+1}`,content:content$3},resultTabs:[],activeResultTabId:null,isExecuting:options$1?.isExecuting??!1,editorHeight:inheritedHeight};return{...prev,[connectionId]:{...current,tabs:[newTab,...current.tabs],activeTabId:newTabId,tabCounter:current.tabCounter+1}}}),newTabId},[connectionId]),createSchemaTab=(0,import_react.useCallback)((schema,table$1,objectType,args)=>{let tabId=args===void 0?`schema.${schema}.${table$1}`:`schema.${schema}.${table$1}(${args})`;return setTabsByConnection(prev=>{let current=prev[connectionId]??getEmptyState();if(current.tabs.find(t$1=>t$1.tab.id===tabId))return{...prev,[connectionId]:{...current,activeTabId:tabId}};let newTab={tab:{type:`schema`,id:tabId,name:table$1,schema,table:table$1,objectType,arguments:args},resultTabs:[],activeResultTabId:null,isExecuting:!1,editorHeight:0};return{...prev,[connectionId]:{...current,tabs:[newTab,...current.tabs],activeTabId:tabId}}}),tabId},[connectionId]),closeTab=(0,import_react.useCallback)(id=>{setTabsByConnection(prev=>{let current=prev[connectionId]??getEmptyState(),remaining=current.tabs.filter(t$1=>t$1.tab.id!==id),newActiveId=current.activeTabId===id?remaining[0]?.tab.id??``:current.activeTabId;return{...prev,[connectionId]:{...current,tabs:remaining,activeTabId:newActiveId}}})},[connectionId]),closeOtherTabs=(0,import_react.useCallback)(id=>{setTabs(prev=>prev.filter(t$1=>t$1.tab.id===id)),setActiveTabId(id)},[setTabs,setActiveTabId]),closeTabsToRight=(0,import_react.useCallback)(id=>{setTabs(prev=>{let index$4=prev.findIndex(t$1=>t$1.tab.id===id);return index$4===-1?prev:prev.slice(0,index$4+1)})},[setTabs]),closeAllTabs=(0,import_react.useCallback)(()=>{setTabsByConnection(prev=>{let current=prev[connectionId]??getEmptyState();return{...prev,[connectionId]:{...current,tabs:[],activeTabId:``}}})},[connectionId]),updateTabContent=(0,import_react.useCallback)((id,content$3)=>{setTabs(prev=>prev.map(t$1=>t$1.tab.id===id?{...t$1,tab:{...t$1.tab,content:content$3}}:t$1))},[setTabs]),formatTimestamp=()=>new Date().toLocaleTimeString(`en-US`,{hour12:!1,hour:`2-digit`,minute:`2-digit`,second:`2-digit`});return{tabs,activeTab,activeTabId,setActiveTabId,createTab,createSchemaTab,closeTab,closeOtherTabs,closeTabsToRight,closeAllTabs,updateTabContent,setTabResults:(0,import_react.useCallback)((id,results,options$1)=>{let timeStr=formatTimestamp(),newResultTabs=results.map((result,index$4)=>{let isCancelled=result.error?.toLowerCase().includes(`cancel`),title=results.length>1?`${timeStr} (${index$4+1})`:timeStr;return isCancelled&&(title+=` (cancelled)`),{id:crypto.randomUUID(),title,result,sql:options$1?.sql}});setTabs(prev=>prev.map(t$1=>t$1.tab.id===id?{...t$1,resultTabs:[...newResultTabs,...t$1.resultTabs],activeResultTabId:newResultTabs[0]?.id??t$1.activeResultTabId,...options$1?.isExecuting!==void 0&&{isExecuting:options$1.isExecuting}}:t$1))},[setTabs]),setActiveResultTab:(0,import_react.useCallback)((tabId,resultTabId)=>{setTabs(prev=>prev.map(t$1=>t$1.tab.id===tabId?{...t$1,activeResultTabId:resultTabId}:t$1))},[setTabs]),setTabExecuting:(0,import_react.useCallback)((id,isExecuting)=>{setTabs(prev=>prev.map(t$1=>t$1.tab.id===id?{...t$1,isExecuting}:t$1))},[setTabs]),setEditorHeight:(0,import_react.useCallback)((id,height)=>{setTabs(prev=>prev.map(t$1=>t$1.tab.id===id?{...t$1,editorHeight:height}:t$1))},[setTabs]),setFoldedRanges:(0,import_react.useCallback)((id,ranges)=>{setTabs(prev=>prev.map(t$1=>t$1.tab.id===id?{...t$1,foldedRanges:ranges}:t$1))},[setTabs]),getFoldedRanges:(0,import_react.useCallback)(id=>tabs.find(t$1=>t$1.tab.id===id)?.foldedRanges??[],[tabs]),rightPanel,setRightPanelOpen:(0,import_react.useCallback)(open=>{setTabsByConnection(prev=>{let current=prev[connectionId]??getEmptyState();return{...prev,[connectionId]:{...current,rightPanel:{...current.rightPanel,open}}}})},[connectionId]),setRightPanelActiveTab:(0,import_react.useCallback)(activeTab$1=>{setTabsByConnection(prev=>{let updated={};for(let[connId,connState]of Object.entries(prev))updated[connId]={...connState,rightPanel:{...connState.rightPanel,activeTab:activeTab$1}};return updated[connectionId]||(updated[connectionId]={...getEmptyState(),rightPanel:{...getEmptyState().rightPanel,activeTab:activeTab$1}}),updated})},[connectionId]),setRightPanelWidth:(0,import_react.useCallback)(width=>{setTabsByConnection(prev=>{let current=prev[connectionId]??getEmptyState();return{...prev,[connectionId]:{...current,rightPanel:{...current.rightPanel,width}}}})},[connectionId]),leftSidebarWidth,setLeftSidebarWidth:(0,import_react.useCallback)(width=>{setTabsByConnection(prev=>{let current=prev[connectionId]??getEmptyState();return{...prev,[connectionId]:{...current,leftSidebarWidth:width}}})},[connectionId])}}var OBJECT_TYPES=[`table`,`view`,`materialized_view`,`function`,`procedure`];function parseObjectFromUrl(searchParams){for(let type of OBJECT_TYPES){let value=searchParams.get(type);if(value){let match=value.match(/^([^(]+)(?:\(([^)]*)\))?$/);return match?{name:match[1],type,arguments:match[2]}:{name:value,type}}}return null}function setObjectParams(searchParams,object){for(let type of OBJECT_TYPES)searchParams.delete(type);if(object){let value=object.arguments?`${object.name}(${object.arguments})`:object.name;searchParams.set(object.type,value)}}function useEditorNavigation(connectionId){let[searchParams,setSearchParams]=useSearchParams(),prevConnectionIdRef=(0,import_react.useRef)(null),schemaFromUrl=searchParams.get(`schema`),objectFromUrl=parseObjectFromUrl(searchParams),{data:schemas=[],isLoading:isSchemasLoading,error:schemasError}=useSchemas(connectionId),effectiveSchema=schemaFromUrl&&schemas.includes(schemaFromUrl)?schemaFromUrl:schemas.length>0?schemas.includes(`public`)?`public`:schemas[0]:null,{data:tables=[],isLoading:isTablesLoading,error:tablesError}=useTables(connectionId,effectiveSchema||``),effectiveObject=(()=>{if(!effectiveSchema)return null;if(objectFromUrl&&(objectFromUrl.type===`function`||objectFromUrl.type===`procedure`||tables.some(t$1=>t$1.name===objectFromUrl.name)))return{schema:effectiveSchema,name:objectFromUrl.name,type:objectFromUrl.type,arguments:objectFromUrl.arguments};if(tables.length>0){let firstTable=tables.find(t$1=>t$1.type===`table`)||tables[0];return{schema:effectiveSchema,name:firstTable.name,type:firstTable.type===`view`?`view`:`table`}}return null})();(0,import_react.useEffect)(()=>{if(!connectionId||isSchemasLoading)return;let connectionChanged=prevConnectionIdRef.current!==null&&prevConnectionIdRef.current!==connectionId;if(prevConnectionIdRef.current=connectionId,connectionChanged){setSearchParams(prev=>{let newParams=new URLSearchParams;return newParams.set(`connectionId`,prev.get(`connectionId`)||connectionId),newParams},{replace:!0});return}let needsSchemaUpdate=effectiveSchema&&effectiveSchema!==schemaFromUrl,needsObjectUpdate=!isTablesLoading&&effectiveObject&&(!objectFromUrl||objectFromUrl.name!==effectiveObject.name||objectFromUrl.type!==effectiveObject.type);(needsSchemaUpdate||needsObjectUpdate)&&setSearchParams(prev=>{let newParams=new URLSearchParams(prev);return needsSchemaUpdate&&effectiveSchema&&newParams.set(`schema`,effectiveSchema),needsObjectUpdate&&setObjectParams(newParams,effectiveObject),newParams},{replace:!0})},[connectionId,isSchemasLoading,isTablesLoading,effectiveSchema,schemaFromUrl,effectiveObject,objectFromUrl,setSearchParams]);let setSchema=(0,import_react.useCallback)(schema=>{setSearchParams(prev=>{let newParams=new URLSearchParams(prev);return schema?newParams.set(`schema`,schema):newParams.delete(`schema`),setObjectParams(newParams,null),newParams},{replace:!0})},[setSearchParams]),setObject=(0,import_react.useCallback)((object,options$1)=>{setSearchParams(prev=>{let newParams=new URLSearchParams(prev);return setObjectParams(newParams,object),newParams},{replace:options$1?.replace??!0})},[setSearchParams]);return{schema:effectiveSchema,object:effectiveObject,isLoading:isSchemasLoading||isTablesLoading,isSchemasLoading,isTablesLoading,schemasError,tablesError,schemas,tables,setSchema,setObject}}var DEFAULT_COLOR=`#2563eb`;function Banner({text:text$5,link:link$1,color:color$1=DEFAULT_COLOR}){let style$1={backgroundColor:color$1};return link$1?(0,import_jsx_runtime.jsxs)(`a`,{href:link$1,target:`_blank`,rel:`noopener noreferrer`,className:`flex h-10 items-center justify-center gap-1.5 text-sm font-medium text-white hover:opacity-90`,style:style$1,children:[text$5,(0,import_jsx_runtime.jsx)(ArrowRight,{size:14})]}):(0,import_jsx_runtime.jsx)(`div`,{className:`flex h-10 items-center justify-center text-sm font-medium text-white`,style:style$1,children:text$5})}function useSetting(){let{data,isLoading}=useQuery({queryKey:[`setting`],queryFn:async()=>{let res=await fetch(`/api/setting`);if(!res.ok)throw Error(`Failed to fetch setting`);return res.json()}});return{banner:data?.banner,plan:data?.plan??`FREE`,licenseExpiry:data?.licenseExpiry,licenseEmail:data?.licenseEmail,maxUsers:data?.maxUsers??1,userCount:data?.userCount??0,stripeCustomerId:data?.stripeCustomerId,isLoading}}var Dialog=DialogRoot,DialogPortal=DialogPortal$1;function DialogBackdrop({className,...props}){return(0,import_jsx_runtime.jsx)(DialogBackdrop$1,{className:cn(`fixed inset-0 z-50 bg-black/32 backdrop-blur-sm transition-all duration-200 data-ending-style:opacity-0 data-starting-style:opacity-0`,className),"data-slot":`dialog-backdrop`,...props})}function DialogViewport({className,...props}){return(0,import_jsx_runtime.jsx)(DialogViewport$1,{className:cn(`fixed inset-0 z-50 grid grid-rows-[1fr_auto_3fr] justify-items-center p-4`,className),"data-slot":`dialog-viewport`,...props})}function DialogPopup({className,children,showCloseButton=!0,bottomStickOnMobile=!0,...props}){return(0,import_jsx_runtime.jsxs)(DialogPortal,{children:[(0,import_jsx_runtime.jsx)(DialogBackdrop,{}),(0,import_jsx_runtime.jsx)(DialogViewport,{className:cn(bottomStickOnMobile&&`max-sm:grid-rows-[1fr_auto] max-sm:pt-12`),children:(0,import_jsx_runtime.jsxs)(DialogPopup$1,{className:cn(`-translate-y-[calc(1.25rem*var(--nested-dialogs))] relative row-start-2 flex max-h-full min-h-0 w-full min-w-0 max-w-lg scale-[calc(1-0.1*var(--nested-dialogs))] flex-col rounded-2xl border bg-popover bg-clip-padding text-popover-foreground opacity-[calc(1-0.1*var(--nested-dialogs))] shadow-lg transition-[scale,opacity,translate] duration-200 ease-in-out will-change-transform before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-2xl)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] data-nested:data-ending-style:translate-y-8 data-nested:data-starting-style:translate-y-8 data-nested-dialog-open:origin-top data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0 dark:bg-clip-border dark:before:shadow-[0_-1px_--theme(--color-white/8%)]`,bottomStickOnMobile&&`max-sm:rounded-none max-sm:border-x-0 max-sm:border-t max-sm:border-b-0 max-sm:opacity-[calc(1-min(var(--nested-dialogs),1))] max-sm:data-ending-style:translate-y-4 max-sm:data-starting-style:translate-y-4 max-sm:before:hidden max-sm:before:rounded-none`,className),"data-slot":`dialog-popup`,...props,children:[children,showCloseButton&&(0,import_jsx_runtime.jsx)(DialogClose,{"aria-label":`Close`,className:`absolute end-2 top-2`,render:(0,import_jsx_runtime.jsx)(Button,{size:`icon`,variant:`ghost`}),children:(0,import_jsx_runtime.jsx)(X,{})})]})})]})}function DialogHeader({className,...props}){return(0,import_jsx_runtime.jsx)(`div`,{className:cn(`flex flex-col gap-2 p-6 in-[[data-slot=dialog-popup]:has([data-slot=dialog-panel])]:pb-3 max-sm:pb-4`,className),"data-slot":`dialog-header`,...props})}function DialogFooter({className,variant=`default`,...props}){return(0,import_jsx_runtime.jsx)(`div`,{className:cn(`flex flex-col-reverse gap-2 px-6 sm:flex-row sm:justify-end sm:rounded-b-[calc(var(--radius-2xl)-1px)]`,variant===`default`&&`border-t bg-muted/50 py-4`,variant===`bare`&&`in-[[data-slot=dialog-popup]:has([data-slot=dialog-panel])]:pt-3 pt-4 pb-6`,className),"data-slot":`dialog-footer`,...props})}function DialogTitle({className,...props}){return(0,import_jsx_runtime.jsx)(DialogTitle$1,{className:cn(`font-heading text-xl leading-none`,className),"data-slot":`dialog-title`,...props})}function DialogDescription({className,...props}){return(0,import_jsx_runtime.jsx)(DialogDescription$1,{className:cn(`text-muted-foreground text-sm`,className),"data-slot":`dialog-description`,...props})}function DialogPanel({className,...props}){return(0,import_jsx_runtime.jsx)(ScrollArea,{children:(0,import_jsx_runtime.jsx)(`div`,{className:cn(`px-6 in-[[data-slot=dialog-popup]:has([data-slot=dialog-header])]:pt-1 in-[[data-slot=dialog-popup]:not(:has([data-slot=dialog-header]))]:pt-6 in-[[data-slot=dialog-popup]:not(:has([data-slot=dialog-footer]))]:pb-6! in-[[data-slot=dialog-popup]:not(:has([data-slot=dialog-footer].border-t))]:pb-1 pb-6`,className),"data-slot":`dialog-panel`,...props})})}var PLAN_LABELS={FREE:`Free`,TEAM:`Team`,ENTERPRISE:`Enterprise`},PLAN_COLORS={FREE:`bg-gray-100 text-gray-700`,TEAM:`bg-blue-100 text-blue-700`,ENTERPRISE:`bg-purple-100 text-purple-700`};function formatDate(timestamp){return new Date(timestamp*1e3).toLocaleDateString(void 0,{year:`numeric`,month:`long`,day:`numeric`})}function isExpired(timestamp){return timestamp*1e3<Date.now()}function SubscriptionModalProvider({children}){let[isOpen,setIsOpen]=(0,import_react.useState)(!1),[reason,setReason]=(0,import_react.useState)(),{plan,licenseExpiry,licenseEmail,maxUsers,userCount,stripeCustomerId}=useSetting(),isOwner=useOwner(),[isLoading,setIsLoading]=(0,import_react.useState)(!1),[billingCycle,setBillingCycle]=(0,import_react.useState)(`annual`),handleCheckout=async()=>{setIsLoading(!0);try{let res=await fetch(`/api/stripe/checkout`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({billingCycle})});if(!res.ok){let data=await res.json();throw Error(data.error||`Failed to create checkout session`)}let{url}=await res.json();window.location.href=url}catch(error){console.error(`Checkout error:`,error),toastManager.add({type:`error`,title:`Checkout failed`,description:error instanceof Error?error.message:`Failed to create checkout session`}),setIsLoading(!1)}},handlePortal=async()=>{setIsLoading(!0);try{let res=await fetch(`/api/stripe/portal`,{method:`POST`});if(!res.ok){let data=await res.json();throw Error(data.error||`Failed to create portal session`)}let{url}=await res.json();window.location.href=url}catch(error){console.error(`Portal error:`,error),toastManager.add({type:`error`,title:`Billing portal failed`,description:error instanceof Error?error.message:`Failed to open billing portal`}),setIsLoading(!1)}},open=(0,import_react.useCallback)(r$4=>{setReason(r$4),setIsOpen(!0)},[]),contextValue=(0,import_react.useMemo)(()=>({open}),[open]),expired=licenseExpiry?isExpired(licenseExpiry):!1;return(0,import_jsx_runtime.jsxs)(SubscriptionModalContext.Provider,{value:contextValue,children:[children,(0,import_jsx_runtime.jsx)(Dialog,{open:isOpen,onOpenChange:setIsOpen,children:(0,import_jsx_runtime.jsxs)(DialogPopup,{className:`max-w-md`,children:[(0,import_jsx_runtime.jsxs)(DialogHeader,{children:[(0,import_jsx_runtime.jsx)(DialogTitle,{children:`Subscription`}),reason&&(0,import_jsx_runtime.jsx)(DialogDescription,{children:reason})]}),(0,import_jsx_runtime.jsx)(DialogPanel,{children:(0,import_jsx_runtime.jsxs)(`div`,{className:`space-y-4`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(Shield,{size:16,className:`text-gray-500`}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm text-gray-600`,children:`Plan`})]}),(0,import_jsx_runtime.jsx)(Badge,{className:PLAN_COLORS[plan],children:PLAN_LABELS[plan]})]}),licenseEmail&&(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(Mail,{size:16,className:`text-gray-500`}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm text-gray-600`,children:`Licensee`})]}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm font-medium text-gray-900`,children:licenseEmail})]}),licenseExpiry&&(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(Calendar,{size:16,className:`text-gray-500`}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm text-gray-600`,children:`Expires`})]}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm font-medium ${expired?`text-red-600`:`text-gray-900`}`,children:expired?`Expired`:formatDate(licenseExpiry)})]}),(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(Users,{size:16,className:`text-gray-500`}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm text-gray-600`,children:`Users`})]}),(0,import_jsx_runtime.jsxs)(`span`,{className:`text-sm font-medium text-gray-900`,children:[userCount,` / `,maxUsers]})]}),isOwner&&!stripeCustomerId&&(0,import_jsx_runtime.jsxs)(`div`,{className:`pt-4 border-t`,children:[(0,import_jsx_runtime.jsx)(`p`,{className:`text-sm font-medium text-gray-700 mb-3`,children:`Select billing cycle:`}),(0,import_jsx_runtime.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,import_jsx_runtime.jsxs)(`button`,{type:`button`,onClick:()=>setBillingCycle(`monthly`),className:`p-3 rounded-lg border text-left transition-colors ${billingCycle===`monthly`?`border-blue-500 bg-blue-50`:`border-gray-200 hover:border-gray-300`}`,children:[(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm font-medium text-gray-900`,children:`Monthly`}),(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`$10/user/mo`})]}),(0,import_jsx_runtime.jsxs)(`button`,{type:`button`,onClick:()=>setBillingCycle(`annual`),className:`p-3 rounded-lg border text-left transition-colors ${billingCycle===`annual`?`border-blue-500 bg-blue-50`:`border-gray-200 hover:border-gray-300`}`,children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(`span`,{className:`text-sm font-medium text-gray-900`,children:`Annual`}),(0,import_jsx_runtime.jsx)(`span`,{className:`text-xs text-green-600 font-medium`,children:`Save 20%`})]}),(0,import_jsx_runtime.jsx)(`div`,{className:`text-sm text-gray-500`,children:`$8/user/mo`})]})]})]})]})}),(0,import_jsx_runtime.jsxs)(DialogFooter,{variant:`bare`,children:[(0,import_jsx_runtime.jsx)(Button,{variant:`outline`,onClick:()=>setIsOpen(!1),children:`Close`}),isOwner&&(stripeCustomerId?(0,import_jsx_runtime.jsx)(Button,{onClick:handlePortal,disabled:isLoading,children:isLoading?`Loading...`:`Manage Billing`}):(0,import_jsx_runtime.jsx)(Button,{onClick:handleCheckout,disabled:isLoading,children:isLoading?`Loading...`:`Upgrade`}))]})]})})]})}var TOML_EXAMPLE=`[general]
1392
+ license = "your-license-key"`;function CheckoutSuccessModal({open,onClose}){let[copied,setCopied]=(0,import_react.useState)(!1);return(0,import_react.useEffect)(()=>{if(copied){let timer=setTimeout(()=>setCopied(!1),2e3);return()=>clearTimeout(timer)}},[copied]),(0,import_jsx_runtime.jsx)(Dialog,{open,onOpenChange:o$2=>!o$2&&onClose(),children:(0,import_jsx_runtime.jsxs)(DialogPopup,{className:`max-w-md`,children:[(0,import_jsx_runtime.jsxs)(DialogHeader,{children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,import_jsx_runtime.jsx)(CircleCheckBig,{className:`text-green-500`,size:24}),(0,import_jsx_runtime.jsx)(DialogTitle,{children:`Payment Successful`})]}),(0,import_jsx_runtime.jsx)(DialogDescription,{children:`Your license key will arrive by email shortly.`})]}),(0,import_jsx_runtime.jsx)(DialogPanel,{children:(0,import_jsx_runtime.jsxs)(`div`,{className:`space-y-4`,children:[(0,import_jsx_runtime.jsx)(`p`,{className:`text-sm text-gray-600`,children:`To activate your license:`}),(0,import_jsx_runtime.jsxs)(`ol`,{className:`list-decimal list-inside space-y-2 text-sm text-gray-700`,children:[(0,import_jsx_runtime.jsx)(`li`,{children:`Check your email for the license key`}),(0,import_jsx_runtime.jsxs)(`li`,{children:[`Open your `,(0,import_jsx_runtime.jsx)(`code`,{className:`bg-gray-100 px-1 rounded`,children:`pgconsole.toml`}),` file`]}),(0,import_jsx_runtime.jsx)(`li`,{children:`Add the license key:`})]}),(0,import_jsx_runtime.jsxs)(`div`,{className:`relative`,children:[(0,import_jsx_runtime.jsx)(`pre`,{className:`bg-gray-50 border rounded p-3 text-sm font-mono overflow-x-auto`,children:TOML_EXAMPLE}),(0,import_jsx_runtime.jsx)(Button,{variant:`ghost`,size:`sm`,className:`absolute top-2 right-2`,onClick:async()=>{await navigator.clipboard.writeText(TOML_EXAMPLE),setCopied(!0)},children:copied?(0,import_jsx_runtime.jsx)(Check,{size:14}):(0,import_jsx_runtime.jsx)(Copy,{size:14})})]}),(0,import_jsx_runtime.jsx)(`ol`,{className:`list-decimal list-inside space-y-2 text-sm text-gray-700`,start:4,children:(0,import_jsx_runtime.jsx)(`li`,{children:`Restart pgconsole`})})]})}),(0,import_jsx_runtime.jsx)(DialogFooter,{variant:`bare`,children:(0,import_jsx_runtime.jsx)(Button,{onClick:onClose,children:`Got it`})})]})})}var EXPIRY_WARNING_DAYS=7;function LicenseExpiryBanner(){let{licenseExpiry}=useSetting(),isOwner=useOwner(),subscriptionModal=useSubscriptionModal();if(!licenseExpiry)return null;let now$1=Date.now(),expiryMs=licenseExpiry*1e3,daysUntilExpiry=Math.ceil((expiryMs-now$1)/(1e3*60*60*24));if(daysUntilExpiry>EXPIRY_WARNING_DAYS)return null;let message=daysUntilExpiry<0?`Your license has expired.`:daysUntilExpiry===0?`Your license expires today.`:daysUntilExpiry===1?`Your license expires tomorrow.`:`Your license expires in ${daysUntilExpiry} days.`;return isOwner?(0,import_jsx_runtime.jsxs)(`button`,{onClick:()=>subscriptionModal.open(),className:`flex h-10 w-full items-center justify-center gap-1.5 bg-primary text-sm font-medium text-primary-foreground hover:opacity-90`,children:[message,` Click to renew.`]}):(0,import_jsx_runtime.jsx)(`div`,{className:`flex h-10 items-center justify-center bg-primary text-sm font-medium text-primary-foreground`,children:message})}function AppLayout(){let{user,isPending:sessionPending,serverError,authEnabled}=useSession(),{data:connections}=useConnections(),{banner}=useSetting(),[searchParams]=useSearchParams(),navigate=useNavigate(),location=useLocation(),hasShownInvalidToast=(0,import_react.useRef)(!1),[showCheckoutSuccess,setShowCheckoutSuccess]=(0,import_react.useState)(!1);(0,import_react.useEffect)(()=>{let params=new URLSearchParams(window.location.search);if(params.get(`checkout`)===`success`){setShowCheckoutSuccess(!0),params.delete(`checkout`);let newUrl=params.toString()?`${window.location.pathname}?${params.toString()}`:window.location.pathname;window.history.replaceState({},``,newUrl)}},[]);let handleCloseCheckoutSuccess=()=>{setShowCheckoutSuccess(!1)},connectionIdFromUrl=searchParams.get(`connectionId`),isEditorRoute=location.pathname===`/`,isSignInRoute=location.pathname===`/signin`,selectedConnectionId=(()=>!connections||connections.length===0?``:connectionIdFromUrl&&connections.some(c=>c.id===connectionIdFromUrl)?connectionIdFromUrl:connections[0].id)(),navigation$1=useEditorNavigation(selectedConnectionId),editorTabs=useEditorTabs(selectedConnectionId);return(0,import_react.useEffect)(()=>{if(!connections||connections.length===0||!isEditorRoute)return;let isValidConnection=connectionIdFromUrl&&connections.some(c=>c.id===connectionIdFromUrl);connectionIdFromUrl?isValidConnection||(hasShownInvalidToast.current||(hasShownInvalidToast.current=!0,toastManager.add({title:`Connection not found`,description:`Connection "${connectionIdFromUrl}" does not exist`,type:`error`})),navigate(`/?connectionId=${connections[0].id}`,{replace:!0})):navigate(`/?connectionId=${connections[0].id}`,{replace:!0})},[connections,connectionIdFromUrl,isEditorRoute,navigate]),sessionPending?(0,import_jsx_runtime.jsx)(`div`,{className:`flex h-screen w-screen items-center justify-center bg-white`,children:(0,import_jsx_runtime.jsx)(`div`,{className:`text-gray-600`,children:`Loading...`})}):serverError?(0,import_jsx_runtime.jsx)(`div`,{className:`flex h-screen w-screen items-center justify-center bg-white`,children:(0,import_jsx_runtime.jsxs)(`div`,{className:`text-center space-y-4 max-w-md px-4`,children:[(0,import_jsx_runtime.jsx)(CircleAlert,{className:`mx-auto text-red-500`,size:48}),(0,import_jsx_runtime.jsx)(`h1`,{className:`text-xl font-semibold text-gray-900`,children:`Cannot connect to server`}),(0,import_jsx_runtime.jsx)(`p`,{className:`text-gray-600`,children:`The backend server is not responding. Please make sure the server is running.`}),(0,import_jsx_runtime.jsx)(Button,{onClick:()=>window.location.reload(),children:`Retry`})]})}):authEnabled&&!user&&!isSignInRoute?(0,import_jsx_runtime.jsx)(Navigate,{to:`/signin`,replace:!0}):user&&isSignInRoute?(0,import_jsx_runtime.jsx)(Navigate,{to:`/`,replace:!0}):(0,import_jsx_runtime.jsx)(ToastProvider,{children:(0,import_jsx_runtime.jsxs)(SubscriptionModalProvider,{children:[(0,import_jsx_runtime.jsxs)(`div`,{className:`flex flex-col h-screen w-screen overflow-hidden bg-white`,children:[!isSignInRoute&&banner?.text&&(0,import_jsx_runtime.jsx)(Banner,{text:banner.text,link:banner.link,color:banner.color}),!isSignInRoute&&(0,import_jsx_runtime.jsx)(LicenseExpiryBanner,{}),!isSignInRoute&&(0,import_jsx_runtime.jsx)(Header,{selectedConnectionId}),(0,import_jsx_runtime.jsx)(`div`,{className:`flex flex-1 overflow-hidden`,children:(0,import_jsx_runtime.jsxs)(Routes,{children:[(0,import_jsx_runtime.jsx)(Route,{path:`/`,element:(0,import_jsx_runtime.jsx)(SQLEditorLayout,{connectionId:selectedConnectionId,editorTabs,selectedSchema:navigation$1.schema,selectedObject:navigation$1.object,onSchemaChange:navigation$1.setSchema,onObjectSelect:navigation$1.setObject,schemas:navigation$1.schemas,tables:navigation$1.tables,isSchemasLoading:navigation$1.isSchemasLoading,isTablesLoading:navigation$1.isTablesLoading,schemasError:navigation$1.schemasError,tablesError:navigation$1.tablesError})}),(0,import_jsx_runtime.jsx)(Route,{path:`/signin`,element:(0,import_jsx_runtime.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,import_jsx_runtime.jsx)(SignIn,{})})}),(0,import_jsx_runtime.jsx)(Route,{path:`*`,element:(0,import_jsx_runtime.jsx)(Navigate,{to:`/`,replace:!0})})]})})]}),(0,import_jsx_runtime.jsx)(CheckoutSuccessModal,{open:showCheckoutSuccess,onClose:handleCloseCheckoutSuccess})]})})}function App(){return(0,import_jsx_runtime.jsx)(BrowserRouter,{children:(0,import_jsx_runtime.jsx)(AppLayout,{})})}var App_default=App,queryClient=new QueryClient({defaultOptions:{queries:{retry:1,refetchOnWindowFocus:!1}}});(0,import_client.createRoot)(document.getElementById(`root`)).render((0,import_jsx_runtime.jsx)(import_react.StrictMode,{children:(0,import_jsx_runtime.jsx)(QueryClientProvider,{client:queryClient,children:(0,import_jsx_runtime.jsx)(KeyboardShortcutsProvider,{children:(0,import_jsx_runtime.jsx)(App_default,{})})})}));export{parseSql as _,SQL_KEYWORDS as a,getGroupByKeywords as c,tokenize as d,getEditorInfo as f,isModuleLoaded as g,ensureModuleLoaded as h,RETRIGGER_KEYWORDS as i,getOrderByModifiers as l,formatSqlOneLine as m,autocomplete as n,getAllKeywords as o,formatSql as p,isMatch as r,getExpressionKeywords as s,isDDLStatement as t,getStatementKeywords as u};