likec4 1.6.0 → 1.6.1-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__app__/react/likec4.tsx +2 -1
- package/dist/__app__/src/-view-lazy-data-BinAQ6yB.js +1 -0
- package/dist/__app__/src/const.js +2 -2
- package/dist/__app__/src/data/_hmr.ts +7 -0
- package/dist/__app__/src/data/index.mjs +5 -0
- package/dist/__app__/src/data/store.ts +41 -0
- package/dist/__app__/src/favicon.svg +6 -0
- package/dist/__app__/src/index-Dx7-rAaw.js +2 -0
- package/dist/__app__/src/main.js +108 -0
- package/dist/__app__/src/renderIcon.js +1 -0
- package/dist/__app__/src/style.css +1 -1
- package/dist/__app__/{src/lib → webcomponent}/webcomponent.mjs +1657 -7631
- package/dist/cli/index.mjs +140 -138
- package/package.json +14 -23
- package/react/index.d.ts +1 -0
- package/react/index.mjs +9 -136
- package/dist/__app__/src/-view-lazy-data-WZmbIsHq.mjs +0 -9
- package/dist/__app__/src/index-ChCFoQrG.mjs +0 -452
- package/dist/__app__/src/main.mjs +0 -38107
- package/dist/__app__/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import{jsxs,jsx,Fragment}from"react/jsx-runtime";import*as React from"react";import React__default,{useState as useState$1,Fragment as Fragment$1,createContext as createContext$1,useContext as useContext$1,useRef as useRef$1,useEffect as useEffect$1,useMemo as useMemo$1,useCallback as useCallback$1,useLayoutEffect as useLayoutEffect$3,useId as useId$3,forwardRef as forwardRef$1,cloneElement,Children,createElement as createElement$1,memo as memo$1,useInsertionEffect as useInsertionEffect$1,isValidElement,Component,StrictMode}from"react";import{createRoot}from"react-dom/client";import*as ReactDOM from"react-dom";import ReactDOM__default,{flushSync,createPortal}from"react-dom";import{ComponentName,basepath,useHashHistory}from"./const.js";import{DEV}from"esm-env";import{$views,useLikeC4View}from"./data/index.mjs";import{useStore as useStore$2}from"@nanostores/react";import{R as RenderIcon}from"./renderIcon.js";import{batched}from"nanostores";const pushStateEvent="pushstate",popStateEvent="popstate",beforeUnloadEvent="beforeunload",beforeUnloadListener=event=>(event.preventDefault(),event.returnValue=""),stopBlocking=()=>{removeEventListener(beforeUnloadEvent,beforeUnloadListener,{capture:!0})};function createHistory(opts){let location=opts.getLocation();const subscribers=new Set;let blockers=[];const notify=()=>{location=opts.getLocation(),subscribers.forEach(subscriber=>subscriber())},tryNavigation=async(task,navigateOpts)=>{var _a;if(!(navigateOpts?.ignoreBlocker??!1)&&typeof document<"u"&&blockers.length){for(const blocker of blockers)if(!await blocker()){(_a=opts.onBlocked)==null||_a.call(opts,notify);return}}task()};return{get location(){return location},subscribers,subscribe:cb=>(subscribers.add(cb),()=>{subscribers.delete(cb)}),push:(path,state,navigateOpts)=>{state=assignKey(state),tryNavigation(()=>{opts.pushState(path,state),notify()},navigateOpts)},replace:(path,state,navigateOpts)=>{state=assignKey(state),tryNavigation(()=>{opts.replaceState(path,state),notify()},navigateOpts)},go:(index2,navigateOpts)=>{tryNavigation(()=>{opts.go(index2),notify()},navigateOpts)},back:navigateOpts=>{tryNavigation(()=>{opts.back(),notify()},navigateOpts)},forward:navigateOpts=>{tryNavigation(()=>{opts.forward(),notify()},navigateOpts)},createHref:str=>opts.createHref(str),block:blocker=>(blockers.push(blocker),blockers.length===1&&addEventListener(beforeUnloadEvent,beforeUnloadListener,{capture:!0}),()=>{blockers=blockers.filter(b2=>b2!==blocker),blockers.length||stopBlocking()}),flush:()=>{var _a;return(_a=opts.flush)==null?void 0:_a.call(opts)},destroy:()=>{var _a;return(_a=opts.destroy)==null?void 0:_a.call(opts)},notify}}function assignKey(state){return state||(state={}),{...state,key:createRandomKey()}}function createBrowserHistory(opts){const win2=opts?.window??(typeof document<"u"?window:void 0),originalPushState=win2.history.pushState,originalReplaceState=win2.history.replaceState,createHref=opts?.createHref??(path=>path),parseLocation=opts?.parseLocation??(()=>parseHref(`${win2.location.pathname}${win2.location.search}${win2.location.hash}`,win2.history.state));let currentLocation=parseLocation(),rollbackLocation;const getLocation=()=>currentLocation;let next,scheduled;const flush=()=>{if(!next)return;(next.isPush?originalPushState:originalReplaceState).call(win2.history,next.state,"",next.href),next=void 0,scheduled=void 0,rollbackLocation=void 0},queueHistoryAction=(type,destHref,state)=>{const href=createHref(destHref);scheduled||(rollbackLocation=currentLocation),currentLocation=parseHref(destHref,state),next={href,state,isPush:next?.isPush||type==="push"},scheduled||(scheduled=Promise.resolve().then(()=>flush()))},onPushPop=()=>{currentLocation=parseLocation(),history.notify()},history=createHistory({getLocation,pushState:(href,state)=>queueHistoryAction("push",href,state),replaceState:(href,state)=>queueHistoryAction("replace",href,state),back:()=>win2.history.back(),forward:()=>win2.history.forward(),go:n2=>win2.history.go(n2),createHref:href=>createHref(href),flush,destroy:()=>{win2.history.pushState=originalPushState,win2.history.replaceState=originalReplaceState,win2.removeEventListener(pushStateEvent,onPushPop),win2.removeEventListener(popStateEvent,onPushPop)},onBlocked:onUpdate=>{rollbackLocation&¤tLocation!==rollbackLocation&&(currentLocation=rollbackLocation,onUpdate())}});return win2.addEventListener(pushStateEvent,onPushPop),win2.addEventListener(popStateEvent,onPushPop),win2.history.pushState=function(...args){const res=originalPushState.apply(win2.history,args);return onPushPop(),res},win2.history.replaceState=function(...args){const res=originalReplaceState.apply(win2.history,args);return onPushPop(),res},history}function createHashHistory(opts){const win2=typeof document<"u"?window:void 0;return createBrowserHistory({window:win2,parseLocation:()=>{const hashHref=win2.location.hash.split("#").slice(1).join("#")??"/";return parseHref(hashHref,win2.history.state)},createHref:href=>`${win2.location.pathname}${win2.location.search}#${href}`})}function createMemoryHistory(opts={initialEntries:["/"]}){const entries=opts.initialEntries;let index2=opts.initialIndex??entries.length-1,currentState={key:createRandomKey()};return createHistory({getLocation:()=>parseHref(entries[index2],currentState),pushState:(path,state)=>{currentState=state,entries.splice,index2<entries.length-1&&entries.splice(index2+1),entries.push(path),index2=Math.max(entries.length-1,0)},replaceState:(path,state)=>{currentState=state,entries[index2]=path},back:()=>{currentState=assignKey(currentState),index2=Math.max(index2-1,0)},forward:()=>{currentState=assignKey(currentState),index2=Math.min(index2+1,entries.length-1)},go:n2=>{currentState=assignKey(currentState),index2=Math.min(Math.max(index2+n2,0),entries.length-1)},createHref:path=>path})}function parseHref(href,state){const hashIndex=href.indexOf("#"),searchIndex=href.indexOf("?");return{href,pathname:href.substring(0,hashIndex>0?searchIndex>0?Math.min(hashIndex,searchIndex):hashIndex:searchIndex>0?searchIndex:href.length),hash:hashIndex>-1?href.substring(hashIndex):"",search:searchIndex>-1?href.slice(searchIndex,hashIndex===-1?void 0:hashIndex):"",state:state||{}}}function createRandomKey(){return(Math.random()+1).toString(36).substring(7)}var prefix="Invariant failed";function invariant$2(condition,message){if(!condition)throw new Error(prefix)}const routerContext=React.createContext(null);function getRouterContext(){return typeof document>"u"?routerContext:window.__TSR_ROUTER_CONTEXT__?window.__TSR_ROUTER_CONTEXT__:(window.__TSR_ROUTER_CONTEXT__=routerContext,routerContext)}function useRouter(opts){const value=React.useContext(getRouterContext());return opts?.warn,value}function getDefaultExportFromCjs(x2){return x2&&x2.__esModule&&Object.prototype.hasOwnProperty.call(x2,"default")?x2.default:x2}function getDefaultExportFromNamespaceIfNotNamed(n2){return n2&&Object.prototype.hasOwnProperty.call(n2,"default")&&Object.keys(n2).length===1?n2.default:n2}var withSelector$1={exports:{}},withSelector_production_min$1={},shim$1={exports:{}},useSyncExternalStoreShim_production_min$1={};var e$4=React__default;function h$3(a2,b2){return a2===b2&&(a2!==0||1/a2===1/b2)||a2!==a2&&b2!==b2}var k$1=typeof Object.is=="function"?Object.is:h$3,l$4=e$4.useState,m$2=e$4.useEffect,n$8=e$4.useLayoutEffect,p$3=e$4.useDebugValue;function q$3(a2,b2){var d2=b2(),f2=l$4({inst:{value:d2,getSnapshot:b2}}),c2=f2[0].inst,g=f2[1];return n$8(function(){c2.value=d2,c2.getSnapshot=b2,r$7(c2)&&g({inst:c2})},[a2,d2,b2]),m$2(function(){return r$7(c2)&&g({inst:c2}),a2(function(){r$7(c2)&&g({inst:c2})})},[a2]),p$3(d2),d2}function r$7(a2){var b2=a2.getSnapshot;a2=a2.value;try{var d2=b2();return!k$1(a2,d2)}catch{return!0}}function t$7(a2,b2){return b2()}var u$b=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?t$7:q$3;useSyncExternalStoreShim_production_min$1.useSyncExternalStore=e$4.useSyncExternalStore!==void 0?e$4.useSyncExternalStore:u$b;shim$1.exports=useSyncExternalStoreShim_production_min$1;var shimExports$1=shim$1.exports;var h$2=React__default,n$7=shimExports$1;function p$2(a2,b2){return a2===b2&&(a2!==0||1/a2===1/b2)||a2!==a2&&b2!==b2}var q$2=typeof Object.is=="function"?Object.is:p$2,r$6=n$7.useSyncExternalStore,t$6=h$2.useRef,u$a=h$2.useEffect,v$1=h$2.useMemo,w$1=h$2.useDebugValue;withSelector_production_min$1.useSyncExternalStoreWithSelector=function(a2,b2,e2,l2,g){var c2=t$6(null);if(c2.current===null){var f2={hasValue:!1,value:null};c2.current=f2}else f2=c2.current;c2=v$1(function(){function a3(a4){if(!c3){if(c3=!0,d3=a4,a4=l2(a4),g!==void 0&&f2.hasValue){var b3=f2.value;if(g(b3,a4))return k2=b3}return k2=a4}if(b3=k2,q$2(d3,a4))return b3;var e3=l2(a4);return g!==void 0&&g(b3,e3)?b3:(d3=a4,k2=e3)}var c3=!1,d3,k2,m2=e2===void 0?null:e2;return[function(){return a3(b2())},m2===null?void 0:function(){return a3(m2())}]},[b2,e2,l2,g]);var d2=r$6(a2,c2[0],c2[1]);return u$a(function(){f2.hasValue=!0,f2.value=d2},[d2]),w$1(d2),d2};withSelector$1.exports=withSelector_production_min$1;var withSelectorExports$1=withSelector$1.exports;class Store{constructor(initialState2,options){this.listeners=new Set,this._batching=!1,this._flushing=0,this.subscribe=listener=>{var _a,_b;this.listeners.add(listener);const unsub=(_b=(_a=this.options)==null?void 0:_a.onSubscribe)==null?void 0:_b.call(_a,listener,this);return()=>{this.listeners.delete(listener),unsub?.()}},this.setState=updater=>{var _a,_b,_c;const previous=this.state;this.state=(_a=this.options)!=null&&_a.updateFn?this.options.updateFn(previous)(updater):updater(previous),(_c=(_b=this.options)==null?void 0:_b.onUpdate)==null||_c.call(_b),this._flush()},this._flush=()=>{if(this._batching)return;const flushId=++this._flushing;this.listeners.forEach(listener=>{this._flushing===flushId&&listener()})},this.batch=cb=>{if(this._batching)return cb();this._batching=!0,cb(),this._batching=!1,this._flush()},this.state=initialState2,this.options=options}}function useStore$1(store,selector2=d2=>d2){return withSelectorExports$1.useSyncExternalStoreWithSelector(store.subscribe,()=>store.state,()=>store.state,selector2,shallow)}function shallow(objA,objB){if(Object.is(objA,objB))return!0;if(typeof objA!="object"||objA===null||typeof objB!="object"||objB===null)return!1;const keysA=Object.keys(objA);if(keysA.length!==Object.keys(objB).length)return!1;for(let i2=0;i2<keysA.length;i2++)if(!Object.prototype.hasOwnProperty.call(objB,keysA[i2])||!Object.is(objA[keysA[i2]],objB[keysA[i2]]))return!1;return!0}const rootRouteId="__root__";function encode(obj,pfx){let k2,i2,tmp,str="";for(k2 in obj)if((tmp=obj[k2])!==void 0)if(Array.isArray(tmp))for(i2=0;i2<tmp.length;i2++)str&&(str+="&"),str+=encodeURIComponent(k2)+"="+encodeURIComponent(tmp[i2]);else str&&(str+="&"),str+=encodeURIComponent(k2)+"="+encodeURIComponent(tmp);return""+str}function toValue(mix2){if(!mix2)return"";const str=decodeURIComponent(mix2);return str==="false"?!1:str==="true"?!0:+str*0===0&&+str+""===str?+str:str}function decode(str,pfx){let tmp,k2;const out={},arr=str.split("&");for(;tmp=arr.shift();){const equalIndex=tmp.indexOf("=");if(equalIndex!==-1){k2=tmp.slice(0,equalIndex);const value=tmp.slice(equalIndex+1);out[k2]!==void 0?out[k2]=[].concat(out[k2],toValue(value)):out[k2]=toValue(value)}else k2=tmp,out[k2]=""}return out}const defaultParseSearch=parseSearchWith(JSON.parse),defaultStringifySearch=stringifySearchWith(JSON.stringify,JSON.parse);function parseSearchWith(parser){return searchStr=>{searchStr.substring(0,1)==="?"&&(searchStr=searchStr.substring(1));const query=decode(searchStr);for(const key in query){const value=query[key];if(typeof value=="string")try{query[key]=parser(value)}catch{}}return query}}function stringifySearchWith(stringify,parser){function stringifyValue(val){if(typeof val=="object"&&val!==null)try{return stringify(val)}catch{}else if(typeof val=="string"&&typeof parser=="function")try{return parser(val),stringify(val)}catch{}return val}return search=>{search={...search},Object.keys(search).forEach(key=>{const val=search[key];typeof val>"u"||val===void 0?delete search[key]:search[key]=stringifyValue(val)});const searchStr=encode(search).toString();return searchStr?`?${searchStr}`:""}}function last(arr){return arr[arr.length-1]}function isFunction(d2){return typeof d2=="function"}function functionalUpdate(updater,previous){return isFunction(updater)?updater(previous):updater}function pick(parent,keys2){return keys2.reduce((obj,key)=>(obj[key]=parent[key],obj),{})}function replaceEqualDeep(prev,_next){if(prev===_next)return prev;const next=_next,array2=isPlainArray(prev)&&isPlainArray(next);if(array2||isPlainObject(prev)&&isPlainObject(next)){const prevItems=array2?prev:Object.keys(prev),prevSize=prevItems.length,nextItems=array2?next:Object.keys(next),nextSize=nextItems.length,copy=array2?[]:{};let equalItems=0;for(let i2=0;i2<nextSize;i2++){const key=array2?i2:nextItems[i2];(!array2&&prevItems.includes(key)||array2)&&prev[key]===void 0&&next[key]===void 0?(copy[key]=void 0,equalItems++):(copy[key]=replaceEqualDeep(prev[key],next[key]),copy[key]===prev[key]&&prev[key]!==void 0&&equalItems++)}return prevSize===nextSize&&equalItems===prevSize?prev:copy}return next}function isPlainObject(o2){if(!hasObjectPrototype(o2))return!1;const ctor=o2.constructor;if(typeof ctor>"u")return!0;const prot=ctor.prototype;return!(!hasObjectPrototype(prot)||!prot.hasOwnProperty("isPrototypeOf"))}function hasObjectPrototype(o2){return Object.prototype.toString.call(o2)==="[object Object]"}function isPlainArray(value){return Array.isArray(value)&&value.length===Object.keys(value).length}function deepEqual$2(a2,b2,partial=!1){if(a2===b2)return!0;if(typeof a2!=typeof b2)return!1;if(isPlainObject(a2)&&isPlainObject(b2)){const aKeys=Object.keys(a2).filter(key=>a2[key]!==void 0),bKeys=Object.keys(b2).filter(key=>b2[key]!==void 0);return!partial&&aKeys.length!==bKeys.length?!1:!bKeys.some(key=>!(key in a2)||!deepEqual$2(a2[key],b2[key],partial))}return Array.isArray(a2)&&Array.isArray(b2)?a2.length!==b2.length?!1:!a2.some((item,index2)=>!deepEqual$2(item,b2[index2],partial)):!1}const useLayoutEffect$2=typeof window<"u"?React.useLayoutEffect:React.useEffect;function createControlledPromise(onResolve){let resolveLoadPromise,rejectLoadPromise;const controlledPromise=new Promise((resolve,reject)=>{resolveLoadPromise=resolve,rejectLoadPromise=reject});return controlledPromise.status="pending",controlledPromise.resolve=value=>{controlledPromise.status="resolved",controlledPromise.value=value,resolveLoadPromise(value),onResolve?.(value)},controlledPromise.reject=e2=>{controlledPromise.status="rejected",rejectLoadPromise(e2)},controlledPromise}function usePrevious$1(value){const ref=React.useRef({value,prev:null}),current=ref.current.value;return value!==current&&(ref.current={value,prev:current}),ref.current.prev}function joinPaths(paths){return cleanPath(paths.filter(Boolean).join("/"))}function cleanPath(path){return path.replace(/\/{2,}/g,"/")}function trimPathLeft(path){return path==="/"?path:path.replace(/^\/{1,}/,"")}function trimPathRight(path){return path==="/"?path:path.replace(/\/{1,}$/,"")}function trimPath(path){return trimPathRight(trimPathLeft(path))}function removeTrailingSlash(value,basepath2){return value.endsWith("/")&&value!=="/"&&value!==`${basepath2}/`?value.slice(0,-1):value}function exactPathTest(pathName1,pathName2,basepath2){return removeTrailingSlash(pathName1,basepath2)===removeTrailingSlash(pathName2,basepath2)}function resolvePath({basepath:basepath2,base,to,trailingSlash="never"}){var _a,_b;base=base.replace(new RegExp(`^${basepath2}`),"/"),to=to.replace(new RegExp(`^${basepath2}`),"/");let baseSegments=parsePathname(base);const toSegments=parsePathname(to);baseSegments.length>1&&((_a=last(baseSegments))==null?void 0:_a.value)==="/"&&baseSegments.pop(),toSegments.forEach((toSegment,index2)=>{toSegment.value==="/"?index2?index2===toSegments.length-1&&baseSegments.push(toSegment):baseSegments=[toSegment]:toSegment.value===".."?baseSegments.pop():toSegment.value==="."||baseSegments.push(toSegment)}),baseSegments.length>1&&(((_b=last(baseSegments))==null?void 0:_b.value)==="/"?trailingSlash==="never"&&baseSegments.pop():trailingSlash==="always"&&baseSegments.push({type:"pathname",value:"/"}));const joined=joinPaths([basepath2,...baseSegments.map(d2=>d2.value)]);return cleanPath(joined)}function parsePathname(pathname){if(!pathname)return[];pathname=cleanPath(pathname);const segments=[];if(pathname.slice(0,1)==="/"&&(pathname=pathname.substring(1),segments.push({type:"pathname",value:"/"})),!pathname)return segments;const split=pathname.split("/").filter(Boolean);return segments.push(...split.map(part=>part==="$"||part==="*"?{type:"wildcard",value:part}:part.charAt(0)==="$"?{type:"param",value:part}:{type:"pathname",value:decodeURIComponent(part)})),pathname.slice(-1)==="/"&&(pathname=pathname.substring(1),segments.push({type:"pathname",value:"/"})),segments}function interpolatePath({path,params,leaveWildcards,leaveParams}){const interpolatedPathSegments=parsePathname(path),encodedParams={};for(const[key,value]of Object.entries(params)){const isValueString=typeof value=="string";["*","_splat"].includes(key)?encodedParams[key]=isValueString?encodeURI(value):value:encodedParams[key]=isValueString?encodeURIComponent(value):value}return joinPaths(interpolatedPathSegments.map(segment=>{if(segment.type==="wildcard"){const value=encodedParams._splat;return leaveWildcards?`${segment.value}${value??""}`:value}if(segment.type==="param"){if(leaveParams){const value=encodedParams[segment.value];return`${segment.value}${value??""}`}return encodedParams[segment.value.substring(1)]??"undefined"}return segment.value}))}function matchPathname(basepath2,currentPathname,matchLocation){const pathParams=matchByPath(basepath2,currentPathname,matchLocation);if(!(matchLocation.to&&!pathParams))return pathParams??{}}function removeBasepath(basepath2,pathname){switch(!0){case basepath2==="/":return pathname;case pathname===basepath2:return"";case pathname.length<basepath2.length:return pathname;case pathname[basepath2.length]!=="/":return pathname;case pathname.startsWith(basepath2):return pathname.slice(basepath2.length);default:return pathname}}function matchByPath(basepath2,from,matchLocation){from=removeBasepath(basepath2,from);const to=removeBasepath(basepath2,`${matchLocation.to??"$"}`),baseSegments=parsePathname(from),routeSegments=parsePathname(to);from.startsWith("/")||baseSegments.unshift({type:"pathname",value:"/"}),to.startsWith("/")||routeSegments.unshift({type:"pathname",value:"/"});const params={};return(()=>{for(let i2=0;i2<Math.max(baseSegments.length,routeSegments.length);i2++){const baseSegment=baseSegments[i2],routeSegment=routeSegments[i2],isLastBaseSegment=i2>=baseSegments.length-1,isLastRouteSegment=i2>=routeSegments.length-1;if(routeSegment){if(routeSegment.type==="wildcard"){if(baseSegment?.value){const _splat=decodeURI(joinPaths(baseSegments.slice(i2).map(d2=>d2.value)));return params["*"]=_splat,params._splat=_splat,!0}return!1}if(routeSegment.type==="pathname"){if(routeSegment.value==="/"&&!baseSegment?.value)return!0;if(baseSegment){if(matchLocation.caseSensitive){if(routeSegment.value!==baseSegment.value)return!1}else if(routeSegment.value.toLowerCase()!==baseSegment.value.toLowerCase())return!1}}if(!baseSegment)return!1;if(routeSegment.type==="param"){if(baseSegment.value==="/")return!1;baseSegment.value.charAt(0)!=="$"&&(params[routeSegment.value.substring(1)]=decodeURIComponent(baseSegment.value))}}if(!isLastBaseSegment&&isLastRouteSegment)return params["**"]=joinPaths(baseSegments.slice(i2+1).map(d2=>d2.value)),!!matchLocation.fuzzy&&routeSegment?.value!=="/"}return!0})()?params:void 0}function isRedirect(obj){return!!obj?.isRedirect}function isResolvedRedirect(obj){return!!obj?.isRedirect&&obj.href}function CatchBoundary(props2){const errorComponent=props2.errorComponent??ErrorComponent;return jsx(CatchBoundaryImpl,{getResetKey:props2.getResetKey,onCatch:props2.onCatch,children:({error,reset})=>error?React.createElement(errorComponent,{error,reset}):props2.children})}class CatchBoundaryImpl extends React.Component{constructor(){super(...arguments),this.state={error:null}}static getDerivedStateFromProps(props2){return{resetKey:props2.getResetKey()}}static getDerivedStateFromError(error){return{error}}reset(){this.setState({error:null})}componentDidUpdate(prevProps,prevState){prevState.error&&prevState.resetKey!==this.state.resetKey&&this.reset()}componentDidCatch(error,errorInfo){this.props.onCatch&&this.props.onCatch(error,errorInfo)}render(){return this.props.children({error:this.state.resetKey!==this.props.getResetKey()?null:this.state.error,reset:()=>{this.reset()}})}}function ErrorComponent({error}){const[show,setShow]=React.useState(!1);return jsxs("div",{style:{padding:".5rem",maxWidth:"100%"},children:[jsxs("div",{style:{display:"flex",alignItems:"center",gap:".5rem"},children:[jsx("strong",{style:{fontSize:"1rem"},children:"Something went wrong!"}),jsx("button",{style:{appearance:"none",fontSize:".6em",border:"1px solid currentColor",padding:".1rem .2rem",fontWeight:"bold",borderRadius:".25rem"},onClick:()=>setShow(d2=>!d2),children:show?"Hide Error":"Show Error"})]}),jsx("div",{style:{height:".25rem"}}),show?jsx("div",{children:jsx("pre",{style:{fontSize:".7em",border:"1px solid red",borderRadius:".25rem",padding:".3rem",color:"red",overflow:"auto"},children:error.message?jsx("code",{children:error.message}):null})}):null]})}function useRouterState(opts){const contextRouter=useRouter({warn:opts?.router===void 0});return useStore$1((opts?.router||contextRouter).__store,opts?.select)}function notFound(options={}){if(options.isNotFound=!0,options.throw)throw options;return options}function isNotFound(obj){return!!obj?.isNotFound}function CatchNotFound(props2){const resetKey=useRouterState({select:s2=>`not-found-${s2.location.pathname}-${s2.status}`});return jsx(CatchBoundary,{getResetKey:()=>resetKey,onCatch:(error,errorInfo)=>{var _a;if(isNotFound(error))(_a=props2.onCatch)==null||_a.call(props2,error,errorInfo);else throw error},errorComponent:({error})=>{var _a;return(_a=props2.fallback)==null?void 0:_a.call(props2,error)},children:props2.children})}function DefaultGlobalNotFound(){return jsx("p",{children:"Not Found"})}const componentTypes=["component","errorComponent","pendingComponent","notFoundComponent"];function createRouter$1(options){return new Router(options)}class Router{constructor(options){this.tempLocationKey=`${Math.round(Math.random()*1e7)}`,this.resetNextScroll=!0,this.shouldViewTransition=void 0,this.subscribers=new Set,this.startReactTransition=fn=>fn(),this.update=newOptions=>{newOptions.notFoundRoute&&console.warn("The notFoundRoute API is deprecated and will be removed in the next major version. See https://tanstack.com/router/v1/docs/guide/not-found-errors#migrating-from-notfoundroute for more info.");const previousOptions=this.options;this.options={...this.options,...newOptions},this.isServer=this.options.isServer??typeof document>"u",(!this.basepath||newOptions.basepath&&newOptions.basepath!==previousOptions.basepath)&&(newOptions.basepath===void 0||newOptions.basepath===""||newOptions.basepath==="/"?this.basepath="/":this.basepath=`/${trimPath(newOptions.basepath)}`),(!this.history||this.options.history&&this.options.history!==this.history)&&(this.history=this.options.history??(this.isServer?createMemoryHistory({initialEntries:[this.basepath||"/"]}):createBrowserHistory()),this.latestLocation=this.parseLocation()),this.options.routeTree!==this.routeTree&&(this.routeTree=this.options.routeTree,this.buildRouteTree()),this.__store||(this.__store=new Store(getInitialRouterState(this.latestLocation),{onUpdate:()=>{this.__store.state={...this.state,cachedMatches:this.state.cachedMatches.filter(d2=>!["redirected"].includes(d2.status))}}}))},this.buildRouteTree=()=>{this.routesById={},this.routesByPath={};const notFoundRoute=this.options.notFoundRoute;notFoundRoute&&(notFoundRoute.init({originalIndex:99999999999}),this.routesById[notFoundRoute.id]=notFoundRoute);const recurseRoutes=childRoutes=>{childRoutes.forEach((childRoute,i2)=>{childRoute.init({originalIndex:i2});const existingRoute=this.routesById[childRoute.id];if(invariant$2(!existingRoute,`Duplicate routes found with id: ${String(childRoute.id)}`),this.routesById[childRoute.id]=childRoute,!childRoute.isRoot&&childRoute.path){const trimmedFullPath=trimPathRight(childRoute.fullPath);(!this.routesByPath[trimmedFullPath]||childRoute.fullPath.endsWith("/"))&&(this.routesByPath[trimmedFullPath]=childRoute)}const children2=childRoute.children;children2?.length&&recurseRoutes(children2)})};recurseRoutes([this.routeTree]);const scoredRoutes=[];Object.values(this.routesById).forEach((d2,i2)=>{var _a;if(d2.isRoot||!d2.path)return;const trimmed=trimPathLeft(d2.fullPath),parsed=parsePathname(trimmed);for(;parsed.length>1&&((_a=parsed[0])==null?void 0:_a.value)==="/";)parsed.shift();const scores=parsed.map(segment=>segment.value==="/"?.75:segment.type==="param"?.5:segment.type==="wildcard"?.25:1);scoredRoutes.push({child:d2,trimmed,parsed,index:i2,scores})}),this.flatRoutes=scoredRoutes.sort((a2,b2)=>{const minLength=Math.min(a2.scores.length,b2.scores.length);for(let i2=0;i2<minLength;i2++)if(a2.scores[i2]!==b2.scores[i2])return b2.scores[i2]-a2.scores[i2];if(a2.scores.length!==b2.scores.length)return b2.scores.length-a2.scores.length;for(let i2=0;i2<minLength;i2++)if(a2.parsed[i2].value!==b2.parsed[i2].value)return a2.parsed[i2].value>b2.parsed[i2].value?1:-1;return a2.index-b2.index}).map((d2,i2)=>(d2.child.rank=i2,d2.child))},this.subscribe=(eventType,fn)=>{const listener={eventType,fn};return this.subscribers.add(listener),()=>{this.subscribers.delete(listener)}},this.emit=routerEvent=>{this.subscribers.forEach(listener=>{listener.eventType===routerEvent.type&&listener.fn(routerEvent)})},this.parseLocation=previousLocation=>{const parse2=({pathname,search,hash,state})=>{const parsedSearch=this.options.parseSearch(search),searchStr=this.options.stringifySearch(parsedSearch);return{pathname,searchStr,search:replaceEqualDeep(previousLocation?.search,parsedSearch),hash:hash.split("#").reverse()[0]??"",href:`${pathname}${searchStr}${hash}`,state:replaceEqualDeep(previousLocation?.state,state)}},location=parse2(this.history.location),{__tempLocation,__tempKey}=location.state;if(__tempLocation&&(!__tempKey||__tempKey===this.tempLocationKey)){const parsedTempLocation=parse2(__tempLocation);return parsedTempLocation.state.key=location.state.key,delete parsedTempLocation.state.__tempLocation,{...parsedTempLocation,maskedLocation:location}}return location},this.resolvePathWithBase=(from,path)=>resolvePath({basepath:this.basepath,base:from,to:cleanPath(path),trailingSlash:this.options.trailingSlash}),this.matchRoutes=(pathname,locationSearch,opts)=>{let routeParams={};const foundRoute=this.flatRoutes.find(route=>{const matchedParams=matchPathname(this.basepath,trimPathRight(pathname),{to:route.fullPath,caseSensitive:route.options.caseSensitive??this.options.caseSensitive,fuzzy:!0});return matchedParams?(routeParams=matchedParams,!0):!1});let routeCursor=foundRoute||this.routesById[rootRouteId];const matchedRoutes=[routeCursor];let isGlobalNotFound=!1;for((foundRoute?foundRoute.path!=="/"&&routeParams["**"]:trimPathRight(pathname))&&(this.options.notFoundRoute?matchedRoutes.push(this.options.notFoundRoute):isGlobalNotFound=!0);routeCursor.parentRoute;)routeCursor=routeCursor.parentRoute,matchedRoutes.unshift(routeCursor);const globalNotFoundRouteId=(()=>{if(isGlobalNotFound){if(this.options.notFoundMode!=="root")for(let i2=matchedRoutes.length-1;i2>=0;i2--){const route=matchedRoutes[i2];if(route.children)return route.id}return rootRouteId}})(),parseErrors=matchedRoutes.map(route=>{var _a;let parsedParamsError;const parseParams=((_a=route.options.params)==null?void 0:_a.parse)??route.options.parseParams;if(parseParams)try{const parsedParams=parseParams(routeParams);Object.assign(routeParams,parsedParams)}catch(err){if(parsedParamsError=new PathParamError(err.message,{cause:err}),opts?.throwOnError)throw parsedParamsError;return parsedParamsError}}),matches=[];return matchedRoutes.forEach((route,index2)=>{var _a,_b,_c,_d,_e,_f,_g,_h,_i,_j;const parentMatch=matches[index2-1],[preMatchSearch,searchError]=(()=>{const parentSearch=parentMatch?.search??locationSearch;try{const validator=typeof route.options.validateSearch=="object"?route.options.validateSearch.parse:route.options.validateSearch,search=validator?.(parentSearch)??{};return[{...parentSearch,...search},void 0]}catch(err){const searchParamError=new SearchParamError(err.message,{cause:err});if(opts?.throwOnError)throw searchParamError;return[parentSearch,searchParamError]}})(),loaderDeps=((_b=(_a=route.options).loaderDeps)==null?void 0:_b.call(_a,{search:preMatchSearch}))??"",loaderDepsHash=loaderDeps?JSON.stringify(loaderDeps):"",interpolatedPath=interpolatePath({path:route.fullPath,params:routeParams}),matchId=interpolatePath({path:route.id,params:routeParams,leaveWildcards:!0})+loaderDepsHash,existingMatch=this.getMatch(matchId),cause=this.state.matches.find(d2=>d2.id===matchId)?"stay":"enter";let match;if(existingMatch)match={...existingMatch,cause,params:routeParams};else{const status=route.options.loader||route.options.beforeLoad||route.lazyFn?"pending":"success";match={id:matchId,index:index2,routeId:route.id,params:routeParams,pathname:joinPaths([this.basepath,interpolatedPath]),updatedAt:Date.now(),search:{},searchError:void 0,status,isFetching:!1,error:void 0,paramsError:parseErrors[index2],routeContext:void 0,context:void 0,abortController:new AbortController,fetchCount:0,cause,loaderDeps,invalid:!1,preload:!1,links:(_d=(_c=route.options).links)==null?void 0:_d.call(_c),scripts:(_f=(_e=route.options).scripts)==null?void 0:_f.call(_e),staticData:route.options.staticData||{},loadPromise:createControlledPromise()}}match.status==="success"&&(match.meta=(_h=(_g=route.options).meta)==null?void 0:_h.call(_g,{matches,match,params:match.params,loaderData:match.loaderData}),match.headers=(_j=(_i=route.options).headers)==null?void 0:_j.call(_i,{loaderData:match.loaderData})),opts?.preload||(match.globalNotFound=globalNotFoundRouteId===route.id),match.search=replaceEqualDeep(match.search,preMatchSearch),match.searchError=searchError,matches.push(match)}),matches},this.cancelMatch=id2=>{const match=this.getMatch(id2);match&&(match.abortController.abort(),clearTimeout(match.pendingTimeout))},this.cancelMatches=()=>{var _a;(_a=this.state.pendingMatches)==null||_a.forEach(match=>{this.cancelMatch(match.id)})},this.buildLocation=opts=>{const build=(dest={},matches)=>{var _a,_b,_c;const fromMatches=dest._fromLocation!=null?this.matchRoutes(dest._fromLocation.pathname,dest.fromSearch||dest._fromLocation.search):this.state.matches,fromMatch=dest.from!=null?fromMatches.find(d2=>matchPathname(this.basepath,trimPathRight(d2.pathname),{to:dest.from,caseSensitive:!1,fuzzy:!1})):void 0,fromPath=fromMatch?.pathname||this.latestLocation.pathname;invariant$2(dest.from==null||fromMatch!=null,"Could not find match for from: "+dest.from);const fromSearch=((_a=last(fromMatches))==null?void 0:_a.search)||this.latestLocation.search,stayingMatches=matches?.filter(d2=>fromMatches.find(e2=>e2.routeId===d2.routeId)),fromRouteByFromPathRouteId=this.routesById[(_b=stayingMatches?.find(d2=>d2.pathname===fromPath))==null?void 0:_b.routeId];let pathname=dest.to?this.resolvePathWithBase(fromPath,`${dest.to}`):this.resolvePathWithBase(fromPath,fromRouteByFromPathRouteId?.to??fromPath);const prevParams={...(_c=last(fromMatches))==null?void 0:_c.params};let nextParams=(dest.params??!0)===!0?prevParams:{...prevParams,...functionalUpdate(dest.params,prevParams)};Object.keys(nextParams).length>0&&matches?.map(d2=>{var _a2;const route=this.looseRoutesById[d2.routeId];return((_a2=route?.options.params)==null?void 0:_a2.stringify)??route.options.stringifyParams}).filter(Boolean).forEach(fn=>{nextParams={...nextParams,...fn(nextParams)}}),pathname=interpolatePath({path:pathname,params:nextParams??{},leaveWildcards:!1,leaveParams:opts.leaveParams});const preSearchFilters=stayingMatches?.map(match=>this.looseRoutesById[match.routeId].options.preSearchFilters??[]).flat().filter(Boolean)??[],postSearchFilters=stayingMatches?.map(match=>this.looseRoutesById[match.routeId].options.postSearchFilters??[]).flat().filter(Boolean)??[],preFilteredSearch=preSearchFilters.length?preSearchFilters.reduce((prev,next)=>next(prev),fromSearch):fromSearch,destSearch=dest.search===!0?preFilteredSearch:dest.search?functionalUpdate(dest.search,preFilteredSearch):preSearchFilters.length?preFilteredSearch:{},postFilteredSearch=postSearchFilters.length?postSearchFilters.reduce((prev,next)=>next(prev),destSearch):destSearch,search=replaceEqualDeep(fromSearch,postFilteredSearch),searchStr=this.options.stringifySearch(search),hash=dest.hash===!0?this.latestLocation.hash:dest.hash?functionalUpdate(dest.hash,this.latestLocation.hash):void 0,hashStr=hash?`#${hash}`:"";let nextState=dest.state===!0?this.latestLocation.state:dest.state?functionalUpdate(dest.state,this.latestLocation.state):{};return nextState=replaceEqualDeep(this.latestLocation.state,nextState),{pathname,search,searchStr,state:nextState,hash:hash??"",href:`${pathname}${searchStr}${hashStr}`,unmaskOnReload:dest.unmaskOnReload}},buildWithMatches=(dest={},maskedDest)=>{var _a;const next=build(dest);let maskedNext=maskedDest?build(maskedDest):void 0;if(!maskedNext){let params={};const foundMask=(_a=this.options.routeMasks)==null?void 0:_a.find(d2=>{const match=matchPathname(this.basepath,next.pathname,{to:d2.from,caseSensitive:!1,fuzzy:!1});return match?(params=match,!0):!1});if(foundMask){const{from,...maskProps}=foundMask;maskedDest={...pick(opts,["from"]),...maskProps,params},maskedNext=build(maskedDest)}}const nextMatches=this.matchRoutes(next.pathname,next.search),maskedMatches=maskedNext?this.matchRoutes(maskedNext.pathname,maskedNext.search):void 0,maskedFinal=maskedNext?build(maskedDest,maskedMatches):void 0,final=build(dest,nextMatches);return maskedFinal&&(final.maskedLocation=maskedFinal),final};return opts.mask?buildWithMatches(opts,{...pick(opts,["from"]),...opts.mask}):buildWithMatches(opts)},this.commitLocation=({viewTransition,ignoreBlocker,...next})=>{const isSameState=()=>{next.state.key=this.latestLocation.state.key;const isEqual=deepEqual$2(next.state,this.latestLocation.state);return delete next.state.key,isEqual},isSameUrl=this.latestLocation.href===next.href,previousCommitPromise=this.commitLocationPromise;if(this.commitLocationPromise=createControlledPromise(()=>{previousCommitPromise?.resolve()}),isSameUrl&&isSameState())this.load();else{let{maskedLocation,...nextHistory}=next;maskedLocation&&(nextHistory={...maskedLocation,state:{...maskedLocation.state,__tempKey:void 0,__tempLocation:{...nextHistory,search:nextHistory.searchStr,state:{...nextHistory.state,__tempKey:void 0,__tempLocation:void 0,key:void 0}}}},(nextHistory.unmaskOnReload??this.options.unmaskOnReload??!1)&&(nextHistory.state.__tempKey=this.tempLocationKey)),this.shouldViewTransition=viewTransition,this.history[next.replace?"replace":"push"](nextHistory.href,nextHistory.state,{ignoreBlocker})}return this.resetNextScroll=next.resetScroll??!0,this.history.subscribers.size||this.load(),this.commitLocationPromise},this.buildAndCommitLocation=({replace,resetScroll,viewTransition,ignoreBlocker,...rest}={})=>{const location=this.buildLocation(rest);return this.commitLocation({...location,viewTransition,replace,resetScroll,ignoreBlocker})},this.navigate=({from,to,__isRedirect,...rest})=>{const toString=String(to);let isExternal;try{new URL(`${toString}`),isExternal=!0}catch{}return invariant$2(!isExternal),this.buildAndCommitLocation({...rest,from,to})},this.load=async()=>{this.latestLocation=this.parseLocation(this.latestLocation),this.__store.setState(s2=>({...s2,loadedAt:Date.now()}));let redirect,notFound2;const loadPromise=new Promise(resolve=>{this.startReactTransition(async()=>{var _a;try{const next=this.latestLocation,prevLocation=this.state.resolvedLocation,pathDidChange=prevLocation.href!==next.href;this.cancelMatches();let pendingMatches;this.__store.batch(()=>{pendingMatches=this.matchRoutes(next.pathname,next.search),this.__store.setState(s2=>({...s2,status:"pending",isLoading:!0,location:next,pendingMatches,cachedMatches:s2.cachedMatches.filter(d2=>!pendingMatches.find(e2=>e2.id===d2.id))}))}),this.state.redirect||this.emit({type:"onBeforeNavigate",fromLocation:prevLocation,toLocation:next,pathChanged:pathDidChange}),this.emit({type:"onBeforeLoad",fromLocation:prevLocation,toLocation:next,pathChanged:pathDidChange}),await this.loadMatches({matches:pendingMatches,location:next,onReady:async()=>{this.startViewTransition(async()=>{let exitingMatches,enteringMatches,stayingMatches;this.__store.batch(()=>{this.__store.setState(s2=>{const previousMatches=s2.matches,newMatches=s2.pendingMatches||s2.matches;return exitingMatches=previousMatches.filter(match=>!newMatches.find(d2=>d2.id===match.id)),enteringMatches=newMatches.filter(match=>!previousMatches.find(d2=>d2.id===match.id)),stayingMatches=previousMatches.filter(match=>newMatches.find(d2=>d2.id===match.id)),{...s2,isLoading:!1,matches:newMatches,pendingMatches:void 0,cachedMatches:[...s2.cachedMatches,...exitingMatches.filter(d2=>d2.status!=="error")]}}),this.cleanCache()}),[[exitingMatches,"onLeave"],[enteringMatches,"onEnter"],[stayingMatches,"onStay"]].forEach(([matches,hook])=>{matches.forEach(match=>{var _a2,_b;(_b=(_a2=this.looseRoutesById[match.routeId].options)[hook])==null||_b.call(_a2,match)})})})}})}catch(err){isResolvedRedirect(err)?(redirect=err,this.isServer||this.navigate({...err,replace:!0,__isRedirect:!0})):isNotFound(err)&&(notFound2=err),this.__store.setState(s2=>({...s2,statusCode:redirect?redirect.statusCode:notFound2?404:s2.matches.some(d2=>d2.status==="error")?500:200,redirect}))}this.latestLoadPromise===loadPromise&&((_a=this.commitLocationPromise)==null||_a.resolve(),this.latestLoadPromise=void 0,this.commitLocationPromise=void 0),resolve()})});for(this.latestLoadPromise=loadPromise,await loadPromise;this.latestLoadPromise&&loadPromise!==this.latestLoadPromise;)await this.latestLoadPromise},this.startViewTransition=fn=>{var _a,_b;const shouldViewTransition=this.shouldViewTransition??this.options.defaultViewTransition;delete this.shouldViewTransition,(_b=(_a=shouldViewTransition&&typeof document<"u"?document:void 0)==null?void 0:_a.startViewTransition)!=null&&_b.call(_a,fn)||fn()},this.updateMatch=(id2,updater)=>{var _a;let updated;const isPending=(_a=this.state.pendingMatches)==null?void 0:_a.find(d2=>d2.id===id2),isMatched=this.state.matches.find(d2=>d2.id===id2),matchesKey=isPending?"pendingMatches":isMatched?"matches":"cachedMatches";return this.__store.setState(s2=>{var _a2;return{...s2,[matchesKey]:(_a2=s2[matchesKey])==null?void 0:_a2.map(d2=>d2.id===id2?updated=updater(d2):d2)}}),updated},this.getMatch=matchId=>[...this.state.cachedMatches,...this.state.pendingMatches??[],...this.state.matches].find(d2=>d2.id===matchId),this.loadMatches=async({location,matches,preload:preload2,onReady,updateMatch=this.updateMatch})=>{let firstBadMatchIndex,rendered=!1;const triggerOnReady=async()=>{rendered||(rendered=!0,await onReady?.())};!this.isServer&&!this.state.matches.length&&triggerOnReady();const handleRedirectAndNotFound=(match,err)=>{var _a,_b,_c;if(isResolvedRedirect(err))throw err;if(isRedirect(err)||isNotFound(err)){if(updateMatch(match.id,prev=>({...prev,status:isRedirect(err)?"redirected":isNotFound(err)?"notFound":"error",isFetching:!1,error:err,beforeLoadPromise:void 0,loaderPromise:void 0})),err.routeId||(err.routeId=match.routeId),(_a=match.beforeLoadPromise)==null||_a.resolve(),(_b=match.loaderPromise)==null||_b.resolve(),(_c=match.loadPromise)==null||_c.resolve(),isRedirect(err))throw rendered=!0,err=this.resolveRedirect({...err,_fromLocation:location}),err;if(isNotFound(err))throw this._handleNotFound(matches,err,{updateMatch}),err}};try{await new Promise((resolveAll,rejectAll)=>{(async()=>{var _a,_b,_c;try{const handleSerialError=(index2,err,routerCode)=>{var _a2,_b2;const{id:matchId,routeId}=matches[index2],route=this.looseRoutesById[routeId];if(err instanceof Promise)throw err;err.routerCode=routerCode,firstBadMatchIndex=firstBadMatchIndex??index2,handleRedirectAndNotFound(this.getMatch(matchId),err);try{(_b2=(_a2=route.options).onError)==null||_b2.call(_a2,err)}catch(errorHandlerErr){err=errorHandlerErr,handleRedirectAndNotFound(this.getMatch(matchId),err)}updateMatch(matchId,prev=>{var _a3;return(_a3=prev.beforeLoadPromise)==null||_a3.resolve(),{...prev,error:err,status:"error",isFetching:!1,updatedAt:Date.now(),abortController:new AbortController,beforeLoadPromise:void 0}})};for(const[index2,{id:matchId,routeId}]of matches.entries()){const existingMatch=this.getMatch(matchId);if(existingMatch.beforeLoadPromise||existingMatch.loaderPromise)await existingMatch.beforeLoadPromise;else{try{updateMatch(matchId,prev=>({...prev,loadPromise:createControlledPromise(()=>{var _a2;(_a2=prev.loadPromise)==null||_a2.resolve()}),beforeLoadPromise:createControlledPromise()}));const route=this.looseRoutesById[routeId],abortController=new AbortController,parentMatchId=(_a=matches[index2-1])==null?void 0:_a.id,getParentContext=()=>parentMatchId?this.getMatch(parentMatchId).context??this.options.context??{}:this.options.context??{},pendingMs=route.options.pendingMs??this.options.defaultPendingMs,shouldPending=!!(onReady&&!this.isServer&&!preload2&&(route.options.loader||route.options.beforeLoad)&&typeof pendingMs=="number"&&pendingMs!==1/0&&(route.options.pendingComponent??this.options.defaultPendingComponent));let pendingTimeout;shouldPending&&(pendingTimeout=setTimeout(()=>{try{triggerOnReady()}catch{}},pendingMs));const{paramsError,searchError}=this.getMatch(matchId);paramsError&&handleSerialError(index2,paramsError,"PARSE_PARAMS"),searchError&&handleSerialError(index2,searchError,"VALIDATE_SEARCH");const parentContext=getParentContext();updateMatch(matchId,prev=>({...prev,isFetching:"beforeLoad",fetchCount:prev.fetchCount+1,routeContext:replaceEqualDeep(prev.routeContext,parentContext),context:replaceEqualDeep(prev.context,parentContext),abortController,pendingTimeout}));const{search,params,routeContext,cause}=this.getMatch(matchId),beforeLoadFnContext={search,abortController,params,preload:!!preload2,context:routeContext,location,navigate:opts=>this.navigate({...opts,_fromLocation:location}),buildLocation:this.buildLocation,cause:preload2?"preload":cause},beforeLoadContext=await((_c=(_b=route.options).beforeLoad)==null?void 0:_c.call(_b,beforeLoadFnContext))??{};(isRedirect(beforeLoadContext)||isNotFound(beforeLoadContext))&&handleSerialError(index2,beforeLoadContext,"BEFORE_LOAD"),updateMatch(matchId,prev=>{const routeContext2={...prev.routeContext,...beforeLoadContext};return{...prev,routeContext:replaceEqualDeep(prev.routeContext,routeContext2),context:replaceEqualDeep(prev.context,routeContext2),abortController}})}catch(err){handleSerialError(index2,err,"BEFORE_LOAD")}updateMatch(matchId,prev=>{var _a2;return(_a2=prev.beforeLoadPromise)==null||_a2.resolve(),{...prev,beforeLoadPromise:void 0,isFetching:!1}})}}const validResolvedMatches=matches.slice(0,firstBadMatchIndex),matchPromises=[];validResolvedMatches.forEach(({id:matchId,routeId},index2)=>{matchPromises.push((async()=>{const{loaderPromise:prevLoaderPromise}=this.getMatch(matchId);if(prevLoaderPromise)await prevLoaderPromise;else{const parentMatchPromise=matchPromises[index2-1],route=this.looseRoutesById[routeId],getLoaderContext=()=>{const{params,loaderDeps,abortController,context,cause}=this.getMatch(matchId);return{params,deps:loaderDeps,preload:!!preload2,parentMatchPromise,abortController,context,location,navigate:opts=>this.navigate({...opts,_fromLocation:location}),cause:preload2?"preload":cause,route}},age=Date.now()-this.getMatch(matchId).updatedAt,staleAge=preload2?route.options.preloadStaleTime??this.options.defaultPreloadStaleTime??3e4:route.options.staleTime??this.options.defaultStaleTime??0,shouldReloadOption=route.options.shouldReload,shouldReload=typeof shouldReloadOption=="function"?shouldReloadOption(getLoaderContext()):shouldReloadOption;updateMatch(matchId,prev=>({...prev,loaderPromise:createControlledPromise(),preload:!!preload2&&!this.state.matches.find(d2=>d2.id===matchId)}));const runLoader=async()=>{var _a2,_b2,_c2,_d,_e,_f,_g,_h;try{const potentialPendingMinPromise=async()=>{const latestMatch=this.getMatch(matchId);latestMatch.minPendingPromise&&await latestMatch.minPendingPromise};try{route._lazyPromise=route._lazyPromise||(route.lazyFn?route.lazyFn().then(lazyRoute=>{Object.assign(route.options,lazyRoute.options)}):Promise.resolve());const componentsPromise=this.getMatch(matchId).componentsPromise||route._lazyPromise.then(()=>Promise.all(componentTypes.map(async type=>{const component=route.options[type];component?.preload&&await component.preload()})));updateMatch(matchId,prev=>({...prev,isFetching:"loader",componentsPromise})),await route._lazyPromise;let loaderData=await((_b2=(_a2=route.options).loader)==null?void 0:_b2.call(_a2,getLoaderContext()));this.serializeLoaderData&&(loaderData=this.serializeLoaderData(loaderData,{router:this,match:this.getMatch(matchId)})),handleRedirectAndNotFound(this.getMatch(matchId),loaderData),await potentialPendingMinPromise();const meta=(_d=(_c2=route.options).meta)==null?void 0:_d.call(_c2,{matches,match:this.getMatch(matchId),params:this.getMatch(matchId).params,loaderData}),headers=(_f=(_e=route.options).headers)==null?void 0:_f.call(_e,{loaderData});updateMatch(matchId,prev=>({...prev,error:void 0,status:"success",isFetching:!1,updatedAt:Date.now(),loaderData,meta,headers}))}catch(e2){let error=e2;await potentialPendingMinPromise(),handleRedirectAndNotFound(this.getMatch(matchId),e2);try{(_h=(_g=route.options).onError)==null||_h.call(_g,e2)}catch(onErrorError){error=onErrorError,handleRedirectAndNotFound(this.getMatch(matchId),onErrorError)}updateMatch(matchId,prev=>({...prev,error,status:"error",isFetching:!1}))}await this.getMatch(matchId).componentsPromise}catch(err){handleRedirectAndNotFound(this.getMatch(matchId),err)}},{status,invalid}=this.getMatch(matchId);status==="success"&&(invalid||(shouldReload??age>staleAge))?(async()=>{try{await runLoader()}catch{}})():status!=="success"&&await runLoader();const{loaderPromise,loadPromise}=this.getMatch(matchId);loaderPromise?.resolve(),loadPromise?.resolve()}updateMatch(matchId,prev=>({...prev,isFetching:!1,loaderPromise:void 0}))})())}),await Promise.all(matchPromises),resolveAll()}catch(err){rejectAll(err)}})()}),await triggerOnReady()}catch(err){if(isRedirect(err)||isNotFound(err))throw isNotFound(err)&&!preload2&&await triggerOnReady(),err}return matches},this.invalidate=()=>{const invalidate=d2=>({...d2,invalid:!0,...d2.status==="error"?{status:"pending",error:void 0}:{}});return this.__store.setState(s2=>{var _a;return{...s2,matches:s2.matches.map(invalidate),cachedMatches:s2.cachedMatches.map(invalidate),pendingMatches:(_a=s2.pendingMatches)==null?void 0:_a.map(invalidate)}}),this.load()},this.resolveRedirect=err=>{const redirect=err;return redirect.href||(redirect.href=this.buildLocation(redirect).href),redirect},this.cleanCache=()=>{this.__store.setState(s2=>({...s2,cachedMatches:s2.cachedMatches.filter(d2=>{const route=this.looseRoutesById[d2.routeId];if(!route.options.loader)return!1;const gcTime=(d2.preload?route.options.preloadGcTime??this.options.defaultPreloadGcTime:route.options.gcTime??this.options.defaultGcTime)??5*60*1e3;return d2.status!=="error"&&Date.now()-d2.updatedAt<gcTime})}))},this.preloadRoute=async opts=>{const next=this.buildLocation(opts);let matches=this.matchRoutes(next.pathname,next.search,{throwOnError:!0,preload:!0});const loadedMatchIds=Object.fromEntries([...this.state.matches,...this.state.pendingMatches??[],...this.state.cachedMatches].map(d2=>[d2.id,!0]));this.__store.batch(()=>{matches.forEach(match=>{loadedMatchIds[match.id]||this.__store.setState(s2=>({...s2,cachedMatches:[...s2.cachedMatches,match]}))})});const activeMatchIds=new Set([...this.state.matches,...this.state.pendingMatches??[]].map(d2=>d2.id));try{return matches=await this.loadMatches({matches,location:next,preload:!0,updateMatch:(id2,updater)=>{activeMatchIds.has(id2)?matches=matches.map(d2=>d2.id===id2?updater(d2):d2):this.updateMatch(id2,updater)}}),matches}catch(err){if(isRedirect(err))return await this.preloadRoute({...err,_fromLocation:next});console.error(err);return}},this.matchRoute=(location,opts)=>{const matchLocation={...location,to:location.to?this.resolvePathWithBase(location.from||"",location.to):void 0,params:location.params||{},leaveParams:!0},next=this.buildLocation(matchLocation);if(opts?.pending&&this.state.status!=="pending")return!1;const baseLocation=(opts?.pending===void 0?!this.state.isLoading:opts.pending)?this.latestLocation:this.state.resolvedLocation,match=matchPathname(this.basepath,baseLocation.pathname,{...opts,to:next.pathname});return!match||location.params&&!deepEqual$2(match,location.params,!0)?!1:match&&(opts?.includeSearch??!0)?deepEqual$2(baseLocation.search,next.search,!0)?match:!1:match},this.dehydrate=()=>{var _a;const pickError=((_a=this.options.errorSerializer)==null?void 0:_a.serialize)??defaultSerializeError;return{state:{dehydratedMatches:this.state.matches.map(d2=>({...pick(d2,["id","status","updatedAt"]),error:d2.error?{data:pickError(d2.error),__isServerError:!0}:void 0}))},manifest:this.manifest}},this.hydrate=()=>{var _a,_b,_c;let ctx;typeof document<"u"&&(ctx=this.options.transformer.parse((_a=window.__TSR__)==null?void 0:_a.dehydrated)),invariant$2(ctx),this.dehydratedData=ctx.payload,(_c=(_b=this.options).hydrate)==null||_c.call(_b,ctx.payload);const dehydratedState=ctx.router.state,matches=this.matchRoutes(this.state.location.pathname,this.state.location.search).map(match=>{const dehydratedMatch=dehydratedState.dehydratedMatches.find(d2=>d2.id===match.id);return invariant$2(dehydratedMatch,`Could not find a client-side match for dehydrated match with id: ${match.id}!`),{...match,...dehydratedMatch}});this.__store.setState(s2=>({...s2,matches})),this.manifest=ctx.router.manifest},this.injectedHtml=[],this.injectHtml=html=>{const cb=()=>(this.injectedHtml=this.injectedHtml.filter(d2=>d2!==cb),html);this.injectedHtml.push(cb)},this.streamedKeys=new Set,this.getStreamedValue=key=>{var _a;if(this.isServer)return;const streamedValue=(_a=window.__TSR__)==null?void 0:_a.streamedValues[key];if(streamedValue)return streamedValue.parsed||(streamedValue.parsed=this.options.transformer.parse(streamedValue.value)),streamedValue.parsed},this.streamValue=(key,value)=>{var _a;this.streamedKeys.has(key),this.streamedKeys.add(key);const children2=`__TSR__.streamedValues['${key}'] = { value: ${(_a=this.serializer)==null?void 0:_a.call(this,this.options.transformer.stringify(value))}}`;this.injectHtml(`<script class='tsr-once'>${children2}; __TSR__.cleanScripts()<\/script>`)},this._handleNotFound=(matches,err,{updateMatch=this.updateMatch}={})=>{const matchesByRouteId=Object.fromEntries(matches.map(match2=>[match2.routeId,match2]));let routeCursor=(err.global?this.looseRoutesById[rootRouteId]:this.looseRoutesById[err.routeId])||this.looseRoutesById[rootRouteId];for(;!routeCursor.options.notFoundComponent&&!this.options.defaultNotFoundComponent&&routeCursor.id!==rootRouteId;)routeCursor=routeCursor.parentRoute,invariant$2(routeCursor);const match=matchesByRouteId[routeCursor.id];invariant$2(match,"Could not find match for route: "+routeCursor.id),updateMatch(match.id,prev=>({...prev,status:"notFound",error:err,isFetching:!1})),err.routerCode==="BEFORE_LOAD"&&routeCursor.parentRoute&&(err.routeId=routeCursor.parentRoute.id,this._handleNotFound(matches,err,{updateMatch}))},this.hasNotFoundMatch=()=>this.__store.state.matches.some(d2=>d2.status==="notFound"||d2.globalNotFound),this.update({defaultPreloadDelay:50,defaultPendingMs:1e3,defaultPendingMinMs:500,context:void 0,...options,stringifySearch:options.stringifySearch??defaultStringifySearch,parseSearch:options.parseSearch??defaultParseSearch}),typeof document<"u"&&(window.__TSR__ROUTER__=this)}get state(){return this.__store.state}get looseRoutesById(){return this.routesById}}class SearchParamError extends Error{}class PathParamError extends Error{}function getInitialRouterState(location){return{loadedAt:0,isLoading:!1,isTransitioning:!1,status:"idle",resolvedLocation:{...location},location,matches:[],pendingMatches:[],cachedMatches:[],statusCode:200}}function defaultSerializeError(err){return err instanceof Error?{name:err.name,message:err.message}:{data:err}}function isServerSideError(error){return!(typeof error=="object"&&error&&"data"in error)||!("__isServerError"in error&&error.__isServerError)||!(typeof error.data=="object"&&error.data)?!1:error.__isServerError===!0}function defaultDeserializeError(serializedData){if("name"in serializedData&&"message"in serializedData){const error=new Error(serializedData.message);return error.name=serializedData.name,error}return serializedData.data}const matchContext=React.createContext(void 0);function useMatch(opts){const nearestMatchId=React.useContext(matchContext);return useRouterState({select:state=>{const match=state.matches.find(d2=>opts.from?opts.from===d2.routeId:d2.id===nearestMatchId);if(invariant$2(!((opts.shouldThrow??!0)&&!match),`Could not find ${opts.from?`an active match from "${opts.from}"`:"a nearest match!"}`),match!==void 0)return opts.select?opts.select(match):match}})}function useLoaderDeps(opts){return useMatch({...opts,select:s2=>typeof opts.select=="function"?opts.select(s2.loaderDeps):s2.loaderDeps})}function useLoaderData(opts){return useMatch({...opts,select:s2=>typeof opts.select=="function"?opts.select(s2.loaderData):s2.loaderData})}function useParams(opts){return useMatch({...opts,select:match=>opts.select?opts.select(match.params):match.params})}function useSearch(opts){return useMatch({...opts,select:match=>opts.select?opts.select(match.search):match.search})}function useNavigate(_defaultOpts){const router=useRouter();return React.useCallback(options=>router.navigate({...options}),[router])}let Route$b=class{constructor(options){this.init=opts=>{var _a,_b;this.originalIndex=opts.originalIndex;const options2=this.options,isRoot=!options2?.path&&!options2?.id;this.parentRoute=(_b=(_a=this.options)==null?void 0:_a.getParentRoute)==null?void 0:_b.call(_a),isRoot?this.path=rootRouteId:invariant$2(this.parentRoute);let path=isRoot?rootRouteId:options2.path;path&&path!=="/"&&(path=trimPathLeft(path));const customId=options2?.id||path;let id2=isRoot?rootRouteId:joinPaths([this.parentRoute.id===rootRouteId?"":this.parentRoute.id,customId]);path===rootRouteId&&(path="/"),id2!==rootRouteId&&(id2=joinPaths(["/",id2]));const fullPath=id2===rootRouteId?"/":joinPaths([this.parentRoute.fullPath,path]);this.path=path,this.id=id2,this.fullPath=fullPath,this.to=fullPath},this.updateLoader=options2=>(Object.assign(this.options,options2),this),this.update=options2=>(Object.assign(this.options,options2),this),this.lazy=lazyFn=>(this.lazyFn=lazyFn,this),this.useMatch=opts=>useMatch({...opts,from:this.id}),this.useRouteContext=opts=>useMatch({...opts,from:this.id,select:d2=>opts?.select?opts.select(d2.context):d2.context}),this.useSearch=opts=>useSearch({...opts,from:this.id}),this.useParams=opts=>useParams({...opts,from:this.id}),this.useLoaderDeps=opts=>useLoaderDeps({...opts,from:this.id}),this.useLoaderData=opts=>useLoaderData({...opts,from:this.id}),this.useNavigate=()=>useNavigate({from:this.id}),this.options=options||{},this.isRoot=!options?.getParentRoute,invariant$2(!(options?.id&&options?.path)),this.$$typeof=Symbol.for("react.memo")}addChildren(children2){return this.children=Array.isArray(children2)?children2:Object.values(children2),this}};function createRoute(options){return new Route$b(options)}function createRootRouteWithContext(){return options=>createRootRoute(options)}class RootRoute extends Route$b{constructor(options){super(options)}addChildren(children2){return super.addChildren(children2)}}function createRootRoute(options){return new RootRoute(options)}function createFileRoute(path){return new FileRoute(path,{silent:!0}).createRoute}class FileRoute{constructor(path,_opts){this.path=path,this.createRoute=options=>{this.silent;const route=createRoute(options);return route.isRoot=!1,route},this.silent=_opts?.silent}}const preloadWarning="Error preloading route! ☝️";function useLinkProps(options){const router=useRouter(),[isTransitioning,setIsTransitioning]=React.useState(!1),{activeProps=()=>({className:"active"}),inactiveProps=()=>({}),activeOptions,hash,search,params,to,state,mask,preload:userPreload,preloadDelay:userPreloadDelay,replace,startTransition,resetScroll,viewTransition,children:children2,target,disabled,style:style2,className,onClick,onFocus,onMouseEnter,onMouseLeave,onTouchStart,ignoreBlocker,...rest}=options;let type="internal";try{new URL(`${to}`),type="external"}catch{}const next=router.buildLocation(options),preload2=userPreload??router.options.defaultPreload,preloadDelay=userPreloadDelay??router.options.defaultPreloadDelay??0,isActive=useRouterState({select:s2=>{const currentPathSplit=removeTrailingSlash(s2.location.pathname,router.basepath).split("/"),pathIsFuzzyEqual=removeTrailingSlash(next.pathname,router.basepath).split("/").every((d2,i2)=>d2===currentPathSplit[i2]),pathTest=activeOptions?.exact?exactPathTest(s2.location.pathname,next.pathname,router.basepath):pathIsFuzzyEqual,hashTest=activeOptions?.includeHash?s2.location.hash===next.hash:!0,searchTest=activeOptions?.includeSearch??!0?deepEqual$2(s2.location.search,next.search,!activeOptions?.exact):!0;return pathTest&&hashTest&&searchTest}});if(type==="external")return{...rest,type,href:to,...children2&&{children:children2},...target&&{target},...disabled&&{disabled},...style2&&{style:style2},...className&&{className},...onClick&&{onClick},...onFocus&&{onFocus},...onMouseEnter&&{onMouseEnter},...onMouseLeave&&{onMouseLeave},...onTouchStart&&{onTouchStart}};const handleClick=e2=>{if(!disabled&&!isCtrlEvent(e2)&&!e2.defaultPrevented&&(!target||target==="_self")&&e2.button===0){e2.preventDefault(),flushSync(()=>{setIsTransitioning(!0)});const unsub=router.subscribe("onResolved",()=>{unsub(),setIsTransitioning(!1)});router.commitLocation({...next,replace,resetScroll,startTransition,viewTransition,ignoreBlocker})}},doPreload=()=>{router.preloadRoute(options).catch(err=>{console.warn(err),console.warn(preloadWarning)})},handleFocus=e2=>{disabled||preload2&&doPreload()},handleTouchStart=handleFocus,handleEnter=e2=>{if(disabled)return;const eventTarget=e2.target||{};if(preload2){if(eventTarget.preloadTimeout)return;eventTarget.preloadTimeout=setTimeout(()=>{eventTarget.preloadTimeout=null,doPreload()},preloadDelay)}},handleLeave=e2=>{if(disabled)return;const eventTarget=e2.target||{};eventTarget.preloadTimeout&&(clearTimeout(eventTarget.preloadTimeout),eventTarget.preloadTimeout=null)},composeHandlers=handlers=>e2=>{var _a;(_a=e2.persist)==null||_a.call(e2),handlers.filter(Boolean).forEach(handler=>{e2.defaultPrevented||handler(e2)})},resolvedActiveProps=isActive?functionalUpdate(activeProps,{})??{}:{},resolvedInactiveProps=isActive?{}:functionalUpdate(inactiveProps,{}),resolvedClassName=[className,resolvedActiveProps.className,resolvedInactiveProps.className].filter(Boolean).join(" "),resolvedStyle={...style2,...resolvedActiveProps.style,...resolvedInactiveProps.style};return{...resolvedActiveProps,...resolvedInactiveProps,...rest,href:disabled?void 0:next.maskedLocation?router.history.createHref(next.maskedLocation.href):router.history.createHref(next.href),onClick:composeHandlers([onClick,handleClick]),onFocus:composeHandlers([onFocus,handleFocus]),onMouseEnter:composeHandlers([onMouseEnter,handleEnter]),onMouseLeave:composeHandlers([onMouseLeave,handleLeave]),onTouchStart:composeHandlers([onTouchStart,handleTouchStart]),disabled:!!disabled,target,...Object.keys(resolvedStyle).length&&{style:resolvedStyle},...resolvedClassName&&{className:resolvedClassName},...disabled&&{role:"link","aria-disabled":!0},...isActive&&{"data-status":"active","aria-current":"page"},...isTransitioning&&{"data-transitioning":"transitioning"}}}const Link=React.forwardRef((props2,ref)=>{const{_asChild,...rest}=props2,{type,...linkProps}=useLinkProps(rest),children2=typeof rest.children=="function"?rest.children({isActive:linkProps["data-status"]==="active"}):rest.children;return typeof _asChild>"u"&&delete linkProps.disabled,React.createElement(_asChild||"a",{...linkProps,ref},children2)});function isCtrlEvent(e2){return!!(e2.metaKey||e2.altKey||e2.ctrlKey||e2.shiftKey)}function Transitioner(){const router=useRouter(),mountLoadForRouter=React.useRef({router,mounted:!1}),routerState=useRouterState({select:s2=>pick(s2,["isLoading","location","resolvedLocation","isTransitioning"])}),[isTransitioning,startReactTransition_]=React.useTransition(),hasPendingMatches=useRouterState({select:s2=>s2.matches.some(d2=>d2.status==="pending")}),previousIsLoading=usePrevious$1(routerState.isLoading),isAnyPending=routerState.isLoading||isTransitioning||hasPendingMatches,previousIsAnyPending=usePrevious$1(isAnyPending);return router.isServer||(router.startReactTransition=startReactTransition_),React.useEffect(()=>{const unsub=router.history.subscribe(router.load),nextLocation=router.buildLocation({to:router.latestLocation.pathname,search:!0,params:!0,hash:!0,state:!0});return trimPathRight(router.latestLocation.href)!==trimPathRight(nextLocation.href)&&router.commitLocation({...nextLocation,replace:!0}),()=>{unsub()}},[router,router.history]),useLayoutEffect$2(()=>{var _a;if((_a=window.__TSR__)!=null&&_a.dehydrated||mountLoadForRouter.current.router===router&&mountLoadForRouter.current.mounted)return;mountLoadForRouter.current={router,mounted:!0},(async()=>{try{await router.load()}catch(err){console.error(err)}})()},[router]),useLayoutEffect$2(()=>{if(previousIsLoading&&!routerState.isLoading){const toLocation=router.state.location,fromLocation=router.state.resolvedLocation,pathChanged=fromLocation.href!==toLocation.href;router.emit({type:"onLoad",fromLocation,toLocation,pathChanged})}},[previousIsLoading,router,routerState.isLoading]),useLayoutEffect$2(()=>{if(previousIsAnyPending&&!isAnyPending){const toLocation=router.state.location,fromLocation=router.state.resolvedLocation,pathChanged=fromLocation.href!==toLocation.href;if(router.emit({type:"onResolved",fromLocation,toLocation,pathChanged}),router.__store.setState(s2=>({...s2,status:"idle",resolvedLocation:s2.location})),document.querySelector&&router.state.location.hash!==""){const el=document.getElementById(router.state.location.hash);el&&el.scrollIntoView()}}},[isAnyPending,previousIsAnyPending,router]),null}function SafeFragment(props2){return jsx(Fragment,{children:props2.children})}function renderRouteNotFound(router,route,data){return route.options.notFoundComponent?jsx(route.options.notFoundComponent,{data}):router.options.defaultNotFoundComponent?jsx(router.options.defaultNotFoundComponent,{data}):jsx(DefaultGlobalNotFound,{})}function Match({matchId}){var _a,_b;const router=useRouter(),routeId=useRouterState({select:s2=>{var _a2;return(_a2=s2.matches.find(d2=>d2.id===matchId))==null?void 0:_a2.routeId}});invariant$2(routeId);const route=router.routesById[routeId],PendingComponent=route.options.pendingComponent??router.options.defaultPendingComponent,pendingElement=PendingComponent?jsx(PendingComponent,{}):null,routeErrorComponent=route.options.errorComponent??router.options.defaultErrorComponent,routeOnCatch=route.options.onCatch??router.options.defaultOnCatch,routeNotFoundComponent=route.isRoot?route.options.notFoundComponent??((_a=router.options.notFoundRoute)==null?void 0:_a.options.component):route.options.notFoundComponent,ResolvedSuspenseBoundary=(!route.isRoot||route.options.wrapInSuspense)&&(route.options.wrapInSuspense??PendingComponent??((_b=route.options.errorComponent)==null?void 0:_b.preload))?React.Suspense:SafeFragment,ResolvedCatchBoundary=routeErrorComponent?CatchBoundary:SafeFragment,ResolvedNotFoundBoundary=routeNotFoundComponent?CatchNotFound:SafeFragment,resetKey=useRouterState({select:s2=>s2.loadedAt});return jsx(matchContext.Provider,{value:matchId,children:jsx(ResolvedSuspenseBoundary,{fallback:pendingElement,children:jsx(ResolvedCatchBoundary,{getResetKey:()=>resetKey,errorComponent:routeErrorComponent||ErrorComponent,onCatch:(error,errorInfo)=>{if(isNotFound(error))throw error;routeOnCatch?.(error,errorInfo)},children:jsx(ResolvedNotFoundBoundary,{fallback:error=>{if(!routeNotFoundComponent||error.routeId&&error.routeId!==routeId||!error.routeId&&!route.isRoot)throw error;return React.createElement(routeNotFoundComponent,error)},children:jsx(MatchInner,{matchId})})})})})}function MatchInner({matchId}){var _a,_b;const router=useRouter(),routeId=useRouterState({select:s2=>{var _a2;return(_a2=s2.matches.find(d2=>d2.id===matchId))==null?void 0:_a2.routeId}}),route=router.routesById[routeId],matchIndex=useRouterState({select:s2=>s2.matches.findIndex(d2=>d2.id===matchId)}),match=useRouterState({select:s2=>{const match2=s2.matches[matchIndex];return pick(match2,["id","status","error","loadPromise","minPendingPromise"])}}),RouteErrorComponent=(route.options.errorComponent??router.options.defaultErrorComponent)||ErrorComponent;if(match.status==="notFound"){let error;return isServerSideError(match.error)?error=(((_a=router.options.errorSerializer)==null?void 0:_a.deserialize)??defaultDeserializeError)(match.error.data):error=match.error,invariant$2(isNotFound(error)),renderRouteNotFound(router,route,error)}if(match.status==="redirected")throw invariant$2(isRedirect(match.error)),match.loadPromise;if(match.status==="error"){if(router.isServer)return jsx(RouteErrorComponent,{error:match.error,info:{componentStack:""}});throw isServerSideError(match.error)?(((_b=router.options.errorSerializer)==null?void 0:_b.deserialize)??defaultDeserializeError)(match.error.data):match.error}if(match.status==="pending"){const pendingMinMs=route.options.pendingMinMs??router.options.defaultPendingMinMs;if(pendingMinMs&&!match.minPendingPromise&&!router.isServer){const minPendingPromise=createControlledPromise();Promise.resolve().then(()=>{router.updateMatch(match.id,prev=>({...prev,minPendingPromise}))}),setTimeout(()=>{minPendingPromise.resolve(),router.updateMatch(match.id,prev=>({...prev,minPendingPromise:void 0}))},pendingMinMs)}throw match.loadPromise}const Comp=route.options.component??router.options.defaultComponent;return jsxs(Fragment,{children:[Comp?jsx(Comp,{}):jsx(Outlet,{}),router.AfterEachMatch?jsx(router.AfterEachMatch,{match,matchIndex}):null]})}const Outlet=React.memo(function(){const router=useRouter(),matchId=React.useContext(matchContext),routeId=useRouterState({select:s2=>{var _a;return(_a=s2.matches.find(d2=>d2.id===matchId))==null?void 0:_a.routeId}}),route=router.routesById[routeId],{parentGlobalNotFound}=useRouterState({select:s2=>{const parentMatch=s2.matches.find(d2=>d2.id===matchId);return invariant$2(parentMatch),{parentGlobalNotFound:parentMatch.globalNotFound}}}),childMatchId=useRouterState({select:s2=>{var _a;const matches=s2.matches,index2=matches.findIndex(d2=>d2.id===matchId);return(_a=matches[index2+1])==null?void 0:_a.id}});if(parentGlobalNotFound)return renderRouteNotFound(router,route,void 0);if(!childMatchId)return null;const nextMatch=jsx(Match,{matchId:childMatchId}),pendingElement=router.options.defaultPendingComponent?jsx(router.options.defaultPendingComponent,{}):null;return matchId===rootRouteId?jsx(React.Suspense,{fallback:pendingElement,children:nextMatch}):nextMatch});function Matches(){const router=useRouter(),pendingElement=router.options.defaultPendingComponent?jsx(router.options.defaultPendingComponent,{}):null,ResolvedSuspense=router.state.matches.length?SafeFragment:React.Suspense,inner2=jsxs(ResolvedSuspense,{fallback:pendingElement,children:[jsx(Transitioner,{}),jsx(MatchesInner,{})]});return router.options.InnerWrap?jsx(router.options.InnerWrap,{children:inner2}):inner2}function MatchesInner(){const matchId=useRouterState({select:s2=>{var _a;return(_a=s2.matches[0])==null?void 0:_a.id}}),resetKey=useRouterState({select:s2=>s2.loadedAt});return jsx(matchContext.Provider,{value:matchId,children:jsx(CatchBoundary,{getResetKey:()=>resetKey,errorComponent:ErrorComponent,onCatch:error=>{error.message||error.toString()},children:matchId?jsx(Match,{matchId}):null})})}function RouterContextProvider({router,children:children2,...rest}){router.update({...router.options,...rest,context:{...router.options.context,...rest.context}});const routerContext2=getRouterContext(),provider=jsx(routerContext2.Provider,{value:router,children:children2});return router.options.Wrap?jsx(router.options.Wrap,{children:provider}):provider}function RouterProvider({router,...rest}){return jsx(RouterContextProvider,{router,...rest,children:jsx(Matches,{})})}const useLayoutEffect$1=typeof window<"u"?React.useLayoutEffect:React.useEffect,windowKey="window",delimiter="___";let weakScrolledElements=new WeakSet;const sessionsStorage=typeof window<"u"&&window.sessionStorage,cache=sessionsStorage?(()=>{const storageKey="tsr-scroll-restoration-v2";return{state:JSON.parse(window.sessionStorage.getItem(storageKey)||"null")||{cached:{},next:{}},set:updater=>{cache.state=functionalUpdate(updater,cache.state),window.sessionStorage.setItem(storageKey,JSON.stringify(cache.state))}}})():void 0,defaultGetKey=location=>location.state.key||location.href;function useScrollRestoration(options){const router=useRouter();useLayoutEffect$1(()=>{const getKey=options?.getKey||defaultGetKey,{history}=window;history.scrollRestoration="manual";const onScroll=event=>{if(weakScrolledElements.has(event.target))return;weakScrolledElements.add(event.target);let elementSelector="";if(event.target===document||event.target===window)elementSelector=windowKey;else{const attrId=event.target.getAttribute("data-scroll-restoration-id");attrId?elementSelector=`[data-scroll-restoration-id="${attrId}"]`:elementSelector=getCssSelector(event.target)}cache.state.next[elementSelector]||cache.set(c2=>({...c2,next:{...c2.next,[elementSelector]:{scrollX:NaN,scrollY:NaN}}}))};typeof document<"u"&&document.addEventListener("scroll",onScroll,!0);const unsubOnBeforeLoad=router.subscribe("onBeforeLoad",event=>{if(event.pathChanged){const restoreKey=getKey(event.fromLocation);for(const elementSelector in cache.state.next){const entry=cache.state.next[elementSelector];if(elementSelector===windowKey)entry.scrollX=window.scrollX||0,entry.scrollY=window.scrollY||0;else if(elementSelector){const element=document.querySelector(elementSelector);entry.scrollX=element?.scrollLeft||0,entry.scrollY=element?.scrollTop||0}cache.set(c2=>{const next={...c2.next};return delete next[elementSelector],{...c2,next,cached:{...c2.cached,[[restoreKey,elementSelector].join(delimiter)]:entry}}})}}}),unsubOnResolved=router.subscribe("onResolved",event=>{if(event.pathChanged){if(!router.resetNextScroll)return;router.resetNextScroll=!0;const restoreKey=getKey(event.toLocation);let windowRestored=!1;for(const cacheKey in cache.state.cached){const entry=cache.state.cached[cacheKey],[key,elementSelector]=cacheKey.split(delimiter);if(key===restoreKey){if(elementSelector===windowKey)windowRestored=!0,window.scrollTo(entry.scrollX,entry.scrollY);else if(elementSelector){const element=document.querySelector(elementSelector);element&&(element.scrollLeft=entry.scrollX,element.scrollTop=entry.scrollY)}}}windowRestored||window.scrollTo(0,0),cache.set(c2=>({...c2,next:{}})),weakScrolledElements=new WeakSet}});return()=>{document.removeEventListener("scroll",onScroll),unsubOnBeforeLoad(),unsubOnResolved()}},[options?.getKey,router])}function ScrollRestoration(props2){return useScrollRestoration(props2),null}function getCssSelector(el){const path=[];let parent;for(;parent=el.parentNode;)path.unshift(`${el.tagName}:nth-child(${[].indexOf.call(parent.children,el)+1})`),el=parent;return`${path.join(" > ")}`.toLowerCase()}var __assign=function(){return __assign=Object.assign||function(t2){for(var s2,i2=1,n2=arguments.length;i2<n2;i2++){s2=arguments[i2];for(var p2 in s2)Object.prototype.hasOwnProperty.call(s2,p2)&&(t2[p2]=s2[p2])}return t2},__assign.apply(this,arguments)};function __rest(s2,e2){var t2={};for(var p2 in s2)Object.prototype.hasOwnProperty.call(s2,p2)&&e2.indexOf(p2)<0&&(t2[p2]=s2[p2]);if(s2!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i2=0,p2=Object.getOwnPropertySymbols(s2);i2<p2.length;i2++)e2.indexOf(p2[i2])<0&&Object.prototype.propertyIsEnumerable.call(s2,p2[i2])&&(t2[p2[i2]]=s2[p2[i2]]);return t2}function __spreadArray(to,from,pack){if(pack||arguments.length===2)for(var i2=0,l2=from.length,ar;i2<l2;i2++)(ar||!(i2 in from))&&(ar||(ar=Array.prototype.slice.call(from,0,i2)),ar[i2]=from[i2]);return to.concat(ar||Array.prototype.slice.call(from))}var zeroRightClassName="right-scroll-bar-position",fullWidthClassName="width-before-scroll-bar",noScrollbarsClassName="with-scroll-bars-hidden",removedBarSizeVariable="--removed-body-scroll-bar-size";function assignRef$1(ref,value){return typeof ref=="function"?ref(value):ref&&(ref.current=value),ref}function useCallbackRef$1(initialValue,callback){var ref=useState$1(function(){return{value:initialValue,callback,facade:{get current(){return ref.value},set current(value){var last2=ref.value;last2!==value&&(ref.value=value,ref.callback(value,last2))}}}})[0];return ref.callback=callback,ref.facade}var useIsomorphicLayoutEffect$4=typeof window<"u"?React.useLayoutEffect:React.useEffect,currentValues=new WeakMap;function useMergeRefs(refs,defaultValue){var callbackRef=useCallbackRef$1(null,function(newValue){return refs.forEach(function(ref){return assignRef$1(ref,newValue)})});return useIsomorphicLayoutEffect$4(function(){var oldValue=currentValues.get(callbackRef);if(oldValue){var prevRefs_1=new Set(oldValue),nextRefs_1=new Set(refs),current_1=callbackRef.current;prevRefs_1.forEach(function(ref){nextRefs_1.has(ref)||assignRef$1(ref,null)}),nextRefs_1.forEach(function(ref){prevRefs_1.has(ref)||assignRef$1(ref,current_1)})}currentValues.set(callbackRef,refs)},[refs]),callbackRef}function ItoI(a2){return a2}function innerCreateMedium(defaults,middleware){middleware===void 0&&(middleware=ItoI);var buffer=[],assigned=!1,medium={read:function(){if(assigned)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return buffer.length?buffer[buffer.length-1]:defaults},useMedium:function(data){var item=middleware(data,assigned);return buffer.push(item),function(){buffer=buffer.filter(function(x2){return x2!==item})}},assignSyncMedium:function(cb){for(assigned=!0;buffer.length;){var cbs=buffer;buffer=[],cbs.forEach(cb)}buffer={push:function(x2){return cb(x2)},filter:function(){return buffer}}},assignMedium:function(cb){assigned=!0;var pendingQueue=[];if(buffer.length){var cbs=buffer;buffer=[],cbs.forEach(cb),pendingQueue=buffer}var executeQueue=function(){var cbs2=pendingQueue;pendingQueue=[],cbs2.forEach(cb)},cycle=function(){return Promise.resolve().then(executeQueue)};cycle(),buffer={push:function(x2){pendingQueue.push(x2),cycle()},filter:function(filter2){return pendingQueue=pendingQueue.filter(filter2),buffer}}}};return medium}function createSidecarMedium(options){options===void 0&&(options={});var medium=innerCreateMedium(null);return medium.options=__assign({async:!0,ssr:!1},options),medium}var SideCar$1=function(_a){var sideCar=_a.sideCar,rest=__rest(_a,["sideCar"]);if(!sideCar)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var Target=sideCar.read();if(!Target)throw new Error("Sidecar medium not found");return React.createElement(Target,__assign({},rest))};SideCar$1.isSideCarExport=!0;function exportSidecar(medium,exported){return medium.useMedium(exported),SideCar$1}var effectCar=createSidecarMedium(),nothing=function(){},RemoveScroll=React.forwardRef(function(props2,parentRef){var ref=React.useRef(null),_a=React.useState({onScrollCapture:nothing,onWheelCapture:nothing,onTouchMoveCapture:nothing}),callbacks=_a[0],setCallbacks=_a[1],forwardProps=props2.forwardProps,children2=props2.children,className=props2.className,removeScrollBar=props2.removeScrollBar,enabled=props2.enabled,shards=props2.shards,sideCar=props2.sideCar,noIsolation=props2.noIsolation,inert=props2.inert,allowPinchZoom=props2.allowPinchZoom,_b=props2.as,Container2=_b===void 0?"div":_b,gapMode=props2.gapMode,rest=__rest(props2,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as","gapMode"]),SideCar2=sideCar,containerRef=useMergeRefs([ref,parentRef]),containerProps=__assign(__assign({},rest),callbacks);return React.createElement(React.Fragment,null,enabled&&React.createElement(SideCar2,{sideCar:effectCar,removeScrollBar,shards,noIsolation,inert,setCallbacks,allowPinchZoom:!!allowPinchZoom,lockRef:ref,gapMode}),forwardProps?React.cloneElement(React.Children.only(children2),__assign(__assign({},containerProps),{ref:containerRef})):React.createElement(Container2,__assign({},containerProps,{className,ref:containerRef}),children2))});RemoveScroll.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};RemoveScroll.classNames={fullWidth:fullWidthClassName,zeroRight:zeroRightClassName};var getNonce=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function makeStyleTag(){if(!document)return null;var tag=document.createElement("style");tag.type="text/css";var nonce=getNonce();return nonce&&tag.setAttribute("nonce",nonce),tag}function injectStyles(tag,css){tag.styleSheet?tag.styleSheet.cssText=css:tag.appendChild(document.createTextNode(css))}function insertStyleTag(tag){var head=document.head||document.getElementsByTagName("head")[0];head.appendChild(tag)}var stylesheetSingleton=function(){var counter2=0,stylesheet=null;return{add:function(style2){counter2==0&&(stylesheet=makeStyleTag())&&(injectStyles(stylesheet,style2),insertStyleTag(stylesheet)),counter2++},remove:function(){counter2--,!counter2&&stylesheet&&(stylesheet.parentNode&&stylesheet.parentNode.removeChild(stylesheet),stylesheet=null)}}},styleHookSingleton=function(){var sheet=stylesheetSingleton();return function(styles,isDynamic){React.useEffect(function(){return sheet.add(styles),function(){sheet.remove()}},[styles&&isDynamic])}},styleSingleton=function(){var useStyle2=styleHookSingleton(),Sheet=function(_a){var styles=_a.styles,dynamic=_a.dynamic;return useStyle2(styles,dynamic),null};return Sheet},zeroGap={left:0,top:0,right:0,gap:0},parse=function(x2){return parseInt(x2||"",10)||0},getOffset=function(gapMode){var cs=window.getComputedStyle(document.body),left=cs[gapMode==="padding"?"paddingLeft":"marginLeft"],top=cs[gapMode==="padding"?"paddingTop":"marginTop"],right=cs[gapMode==="padding"?"paddingRight":"marginRight"];return[parse(left),parse(top),parse(right)]},getGapWidth=function(gapMode){if(gapMode===void 0&&(gapMode="margin"),typeof window>"u")return zeroGap;var offsets=getOffset(gapMode),documentWidth=document.documentElement.clientWidth,windowWidth=window.innerWidth;return{left:offsets[0],top:offsets[1],right:offsets[2],gap:Math.max(0,windowWidth-documentWidth+offsets[2]-offsets[0])}},Style=styleSingleton(),lockAttribute="data-scroll-locked",getStyles=function(_a,allowRelative,gapMode,important){var left=_a.left,top=_a.top,right=_a.right,gap=_a.gap;return gapMode===void 0&&(gapMode="margin"),`
|
|
2
|
+
.`.concat(noScrollbarsClassName,` {
|
|
3
|
+
overflow: hidden `).concat(important,`;
|
|
4
|
+
padding-right: `).concat(gap,"px ").concat(important,`;
|
|
5
|
+
}
|
|
6
|
+
body[`).concat(lockAttribute,`] {
|
|
7
|
+
overflow: hidden `).concat(important,`;
|
|
8
|
+
overscroll-behavior: contain;
|
|
9
|
+
`).concat([allowRelative&&"position: relative ".concat(important,";"),gapMode==="margin"&&`
|
|
10
|
+
padding-left: `.concat(left,`px;
|
|
11
|
+
padding-top: `).concat(top,`px;
|
|
12
|
+
padding-right: `).concat(right,`px;
|
|
13
|
+
margin-left:0;
|
|
14
|
+
margin-top:0;
|
|
15
|
+
margin-right: `).concat(gap,"px ").concat(important,`;
|
|
16
|
+
`),gapMode==="padding"&&"padding-right: ".concat(gap,"px ").concat(important,";")].filter(Boolean).join(""),`
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.`).concat(zeroRightClassName,` {
|
|
20
|
+
right: `).concat(gap,"px ").concat(important,`;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.`).concat(fullWidthClassName,` {
|
|
24
|
+
margin-right: `).concat(gap,"px ").concat(important,`;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.`).concat(zeroRightClassName," .").concat(zeroRightClassName,` {
|
|
28
|
+
right: 0 `).concat(important,`;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.`).concat(fullWidthClassName," .").concat(fullWidthClassName,` {
|
|
32
|
+
margin-right: 0 `).concat(important,`;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
body[`).concat(lockAttribute,`] {
|
|
36
|
+
`).concat(removedBarSizeVariable,": ").concat(gap,`px;
|
|
37
|
+
}
|
|
38
|
+
`)},getCurrentUseCounter=function(){var counter2=parseInt(document.body.getAttribute(lockAttribute)||"0",10);return isFinite(counter2)?counter2:0},useLockAttribute=function(){React.useEffect(function(){return document.body.setAttribute(lockAttribute,(getCurrentUseCounter()+1).toString()),function(){var newCounter=getCurrentUseCounter()-1;newCounter<=0?document.body.removeAttribute(lockAttribute):document.body.setAttribute(lockAttribute,newCounter.toString())}},[])},RemoveScrollBar=function(_a){var noRelative=_a.noRelative,noImportant=_a.noImportant,_b=_a.gapMode,gapMode=_b===void 0?"margin":_b;useLockAttribute();var gap=React.useMemo(function(){return getGapWidth(gapMode)},[gapMode]);return React.createElement(Style,{styles:getStyles(gap,!noRelative,gapMode,noImportant?"":"!important")})},passiveSupported=!1;if(typeof window<"u")try{var options=Object.defineProperty({},"passive",{get:function(){return passiveSupported=!0,!0}});window.addEventListener("test",options,options),window.removeEventListener("test",options,options)}catch{passiveSupported=!1}var nonPassive=passiveSupported?{passive:!1}:!1,alwaysContainsScroll=function(node){return node.tagName==="TEXTAREA"},elementCanBeScrolled=function(node,overflow){if(!(node instanceof Element))return!1;var styles=window.getComputedStyle(node);return styles[overflow]!=="hidden"&&!(styles.overflowY===styles.overflowX&&!alwaysContainsScroll(node)&&styles[overflow]==="visible")},elementCouldBeVScrolled=function(node){return elementCanBeScrolled(node,"overflowY")},elementCouldBeHScrolled=function(node){return elementCanBeScrolled(node,"overflowX")},locationCouldBeScrolled=function(axis,node){var ownerDocument=node.ownerDocument,current=node;do{typeof ShadowRoot<"u"&¤t instanceof ShadowRoot&&(current=current.host);var isScrollable=elementCouldBeScrolled(axis,current);if(isScrollable){var _a=getScrollVariables(axis,current),scrollHeight=_a[1],clientHeight=_a[2];if(scrollHeight>clientHeight)return!0}current=current.parentNode}while(current&¤t!==ownerDocument.body);return!1},getVScrollVariables=function(_a){var scrollTop=_a.scrollTop,scrollHeight=_a.scrollHeight,clientHeight=_a.clientHeight;return[scrollTop,scrollHeight,clientHeight]},getHScrollVariables=function(_a){var scrollLeft=_a.scrollLeft,scrollWidth=_a.scrollWidth,clientWidth=_a.clientWidth;return[scrollLeft,scrollWidth,clientWidth]},elementCouldBeScrolled=function(axis,node){return axis==="v"?elementCouldBeVScrolled(node):elementCouldBeHScrolled(node)},getScrollVariables=function(axis,node){return axis==="v"?getVScrollVariables(node):getHScrollVariables(node)},getDirectionFactor=function(axis,direction){return axis==="h"&&direction==="rtl"?-1:1},handleScroll=function(axis,endTarget,event,sourceDelta,noOverscroll){var directionFactor=getDirectionFactor(axis,window.getComputedStyle(endTarget).direction),delta=directionFactor*sourceDelta,target=event.target,targetInLock=endTarget.contains(target),shouldCancelScroll=!1,isDeltaPositive=delta>0,availableScroll=0,availableScrollTop=0;do{var _a=getScrollVariables(axis,target),position=_a[0],scroll_1=_a[1],capacity=_a[2],elementScroll=scroll_1-capacity-directionFactor*position;(position||elementScroll)&&elementCouldBeScrolled(axis,target)&&(availableScroll+=elementScroll,availableScrollTop+=position),target instanceof ShadowRoot?target=target.host:target=target.parentNode}while(!targetInLock&&target!==document.body||targetInLock&&(endTarget.contains(target)||endTarget===target));return(isDeltaPositive&&(Math.abs(availableScroll)<1||!noOverscroll)||!isDeltaPositive&&(Math.abs(availableScrollTop)<1||!noOverscroll))&&(shouldCancelScroll=!0),shouldCancelScroll},getTouchXY=function(event){return"changedTouches"in event?[event.changedTouches[0].clientX,event.changedTouches[0].clientY]:[0,0]},getDeltaXY=function(event){return[event.deltaX,event.deltaY]},extractRef=function(ref){return ref&&"current"in ref?ref.current:ref},deltaCompare=function(x2,y2){return x2[0]===y2[0]&&x2[1]===y2[1]},generateStyle=function(id2){return`
|
|
39
|
+
.block-interactivity-`.concat(id2,` {pointer-events: none;}
|
|
40
|
+
.allow-interactivity-`).concat(id2,` {pointer-events: all;}
|
|
41
|
+
`)},idCounter=0,lockStack=[];function RemoveScrollSideCar(props2){var shouldPreventQueue=React.useRef([]),touchStartRef=React.useRef([0,0]),activeAxis=React.useRef(),id2=React.useState(idCounter++)[0],Style2=React.useState(styleSingleton)[0],lastProps=React.useRef(props2);React.useEffect(function(){lastProps.current=props2},[props2]),React.useEffect(function(){if(props2.inert){document.body.classList.add("block-interactivity-".concat(id2));var allow_1=__spreadArray([props2.lockRef.current],(props2.shards||[]).map(extractRef),!0).filter(Boolean);return allow_1.forEach(function(el){return el.classList.add("allow-interactivity-".concat(id2))}),function(){document.body.classList.remove("block-interactivity-".concat(id2)),allow_1.forEach(function(el){return el.classList.remove("allow-interactivity-".concat(id2))})}}},[props2.inert,props2.lockRef.current,props2.shards]);var shouldCancelEvent=React.useCallback(function(event,parent){if("touches"in event&&event.touches.length===2)return!lastProps.current.allowPinchZoom;var touch=getTouchXY(event),touchStart=touchStartRef.current,deltaX="deltaX"in event?event.deltaX:touchStart[0]-touch[0],deltaY="deltaY"in event?event.deltaY:touchStart[1]-touch[1],currentAxis,target=event.target,moveDirection=Math.abs(deltaX)>Math.abs(deltaY)?"h":"v";if("touches"in event&&moveDirection==="h"&&target.type==="range")return!1;var canBeScrolledInMainDirection=locationCouldBeScrolled(moveDirection,target);if(!canBeScrolledInMainDirection)return!0;if(canBeScrolledInMainDirection?currentAxis=moveDirection:(currentAxis=moveDirection==="v"?"h":"v",canBeScrolledInMainDirection=locationCouldBeScrolled(moveDirection,target)),!canBeScrolledInMainDirection)return!1;if(!activeAxis.current&&"changedTouches"in event&&(deltaX||deltaY)&&(activeAxis.current=currentAxis),!currentAxis)return!0;var cancelingAxis=activeAxis.current||currentAxis;return handleScroll(cancelingAxis,parent,event,cancelingAxis==="h"?deltaX:deltaY,!0)},[]),shouldPrevent=React.useCallback(function(_event){var event=_event;if(!(!lockStack.length||lockStack[lockStack.length-1]!==Style2)){var delta="deltaY"in event?getDeltaXY(event):getTouchXY(event),sourceEvent2=shouldPreventQueue.current.filter(function(e2){return e2.name===event.type&&(e2.target===event.target||event.target===e2.shadowParent)&&deltaCompare(e2.delta,delta)})[0];if(sourceEvent2&&sourceEvent2.should){event.cancelable&&event.preventDefault();return}if(!sourceEvent2){var shardNodes=(lastProps.current.shards||[]).map(extractRef).filter(Boolean).filter(function(node){return node.contains(event.target)}),shouldStop=shardNodes.length>0?shouldCancelEvent(event,shardNodes[0]):!lastProps.current.noIsolation;shouldStop&&event.cancelable&&event.preventDefault()}}},[]),shouldCancel=React.useCallback(function(name,delta,target,should){var event={name,delta,target,should,shadowParent:getOutermostShadowParent(target)};shouldPreventQueue.current.push(event),setTimeout(function(){shouldPreventQueue.current=shouldPreventQueue.current.filter(function(e2){return e2!==event})},1)},[]),scrollTouchStart=React.useCallback(function(event){touchStartRef.current=getTouchXY(event),activeAxis.current=void 0},[]),scrollWheel=React.useCallback(function(event){shouldCancel(event.type,getDeltaXY(event),event.target,shouldCancelEvent(event,props2.lockRef.current))},[]),scrollTouchMove=React.useCallback(function(event){shouldCancel(event.type,getTouchXY(event),event.target,shouldCancelEvent(event,props2.lockRef.current))},[]);React.useEffect(function(){return lockStack.push(Style2),props2.setCallbacks({onScrollCapture:scrollWheel,onWheelCapture:scrollWheel,onTouchMoveCapture:scrollTouchMove}),document.addEventListener("wheel",shouldPrevent,nonPassive),document.addEventListener("touchmove",shouldPrevent,nonPassive),document.addEventListener("touchstart",scrollTouchStart,nonPassive),function(){lockStack=lockStack.filter(function(inst){return inst!==Style2}),document.removeEventListener("wheel",shouldPrevent,nonPassive),document.removeEventListener("touchmove",shouldPrevent,nonPassive),document.removeEventListener("touchstart",scrollTouchStart,nonPassive)}},[]);var removeScrollBar=props2.removeScrollBar,inert=props2.inert;return React.createElement(React.Fragment,null,inert?React.createElement(Style2,{styles:generateStyle(id2)}):null,removeScrollBar?React.createElement(RemoveScrollBar,{gapMode:props2.gapMode}):null)}function getOutermostShadowParent(node){for(var shadowParent=null;node!==null;)node instanceof ShadowRoot&&(shadowParent=node.host,node=node.host),node=node.parentNode;return shadowParent}const SideCar=exportSidecar(effectCar,RemoveScrollSideCar);var ReactRemoveScroll=React.forwardRef(function(props2,ref){return React.createElement(RemoveScroll,__assign({},props2,{ref,sideCar:SideCar}))});ReactRemoveScroll.classNames=RemoveScroll.classNames;function keys$1(object){return Object.keys(object)}function isObject(item){return item&&typeof item=="object"&&!Array.isArray(item)}function deepMerge(target,source){const result={...target},_source=source;return isObject(target)&&isObject(source)&&Object.keys(source).forEach(key=>{isObject(_source[key])&&key in target?result[key]=deepMerge(result[key],_source[key]):result[key]=_source[key]}),result}function camelToKebabCase(value){return value.replace(/[A-Z]/g,letter=>`-${letter.toLowerCase()}`)}function getTransformedScaledValue(value){return typeof value!="string"||!value.includes("var(--mantine-scale)")?value:value.match(/^calc\((.*?)\)$/)?.[1].split("*")[0].trim()}function px$1(value){const transformedValue=getTransformedScaledValue(value);return typeof transformedValue=="number"?transformedValue:typeof transformedValue=="string"?transformedValue.includes("calc")||transformedValue.includes("var")?transformedValue:transformedValue.includes("px")?Number(transformedValue.replace("px","")):transformedValue.includes("rem")?Number(transformedValue.replace("rem",""))*16:transformedValue.includes("em")?Number(transformedValue.replace("em",""))*16:Number(transformedValue):NaN}function scaleRem(remValue){return remValue==="0rem"?"0rem":`calc(${remValue} * var(--mantine-scale))`}function createConverter(units,{shouldScale=!1}={}){function converter(value){if(value===0||value==="0")return`0${units}`;if(typeof value=="number"){const val=`${value/16}${units}`;return shouldScale?scaleRem(val):val}if(typeof value=="string"){if(value===""||value.startsWith("calc(")||value.startsWith("clamp(")||value.includes("rgba("))return value;if(value.includes(","))return value.split(",").map(val=>converter(val)).join(",");if(value.includes(" "))return value.split(" ").map(val=>converter(val)).join(" ");if(value.includes(units))return shouldScale?scaleRem(value):value;const replaced=value.replace("px","");if(!Number.isNaN(Number(replaced))){const val=`${Number(replaced)/16}${units}`;return shouldScale?scaleRem(val):val}}return value}return converter}const rem=createConverter("rem",{shouldScale:!0}),em=createConverter("em");function filterProps$1(props2){return Object.keys(props2).reduce((acc,key)=>(props2[key]!==void 0&&(acc[key]=props2[key]),acc),{})}function isNumberLike(value){return typeof value=="number"?!0:typeof value=="string"?value.startsWith("calc(")||value.startsWith("var(")||value.includes(" ")&&value.trim()!==""?!0:/[0-9]/.test(value.trim().replace("-","")[0]):!1}function isElement$1(value){return Array.isArray(value)||value===null?!1:typeof value=="object"?value.type!==Fragment$1:!1}function createSafeContext(errorMessage){const Context=createContext$1(null);return[({children:children2,value})=>jsx(Context.Provider,{value,children:children2}),()=>{const ctx=useContext$1(Context);if(ctx===null)throw new Error(errorMessage);return ctx}]}function createOptionalContext(initialValue=null){const Context=createContext$1(initialValue);return[({children:children2,value})=>jsx(Context.Provider,{value,children:children2}),()=>useContext$1(Context)]}function getSafeId(uid,errorMessage){return value=>{if(typeof value!="string"||value.trim().length===0)throw new Error(errorMessage);return`${uid}-${value}`}}function findElementAncestor(element,selector2){let _element=element;for(;(_element=_element.parentElement)&&!_element.matches(selector2););return _element}function getPreviousIndex$1(current,elements,loop){for(let i2=current-1;i2>=0;i2-=1)if(!elements[i2].disabled)return i2;if(loop){for(let i2=elements.length-1;i2>-1;i2-=1)if(!elements[i2].disabled)return i2}return current}function getNextIndex$1(current,elements,loop){for(let i2=current+1;i2<elements.length;i2+=1)if(!elements[i2].disabled)return i2;if(loop){for(let i2=0;i2<elements.length;i2+=1)if(!elements[i2].disabled)return i2}return current}function onSameLevel(target,sibling,parentSelector){return findElementAncestor(target,parentSelector)===findElementAncestor(sibling,parentSelector)}function createScopedKeydownHandler({parentSelector,siblingSelector,onKeyDown,loop=!0,activateOnFocus=!1,dir="rtl",orientation}){return event=>{onKeyDown?.(event);const elements=Array.from(findElementAncestor(event.currentTarget,parentSelector)?.querySelectorAll(siblingSelector)||[]).filter(node=>onSameLevel(event.currentTarget,node,parentSelector)),current=elements.findIndex(el=>event.currentTarget===el),_nextIndex=getNextIndex$1(current,elements,loop),_previousIndex=getPreviousIndex$1(current,elements,loop),nextIndex=dir==="rtl"?_previousIndex:_nextIndex,previousIndex=dir==="rtl"?_nextIndex:_previousIndex;switch(event.key){case"ArrowRight":{orientation==="horizontal"&&(event.stopPropagation(),event.preventDefault(),elements[nextIndex].focus(),activateOnFocus&&elements[nextIndex].click());break}case"ArrowLeft":{orientation==="horizontal"&&(event.stopPropagation(),event.preventDefault(),elements[previousIndex].focus(),activateOnFocus&&elements[previousIndex].click());break}case"ArrowUp":{orientation==="vertical"&&(event.stopPropagation(),event.preventDefault(),elements[_previousIndex].focus(),activateOnFocus&&elements[_previousIndex].click());break}case"ArrowDown":{orientation==="vertical"&&(event.stopPropagation(),event.preventDefault(),elements[_nextIndex].focus(),activateOnFocus&&elements[_nextIndex].click());break}case"Home":{event.stopPropagation(),event.preventDefault(),!elements[0].disabled&&elements[0].focus();break}case"End":{event.stopPropagation(),event.preventDefault();const last2=elements.length-1;!elements[last2].disabled&&elements[last2].focus();break}}}}const elevations={app:100,modal:200,popover:300,overlay:400,max:9999};function getDefaultZIndex(level){return elevations[level]}const noop$4=()=>{};function closeOnEscape(callback,options={active:!0}){return typeof callback!="function"||!options.active?options.onKeyDown||noop$4:event=>{event.key==="Escape"&&(callback(event),options.onTrigger?.())}}function getSize(size2,prefix2="size",convertToRem=!0){if(size2!==void 0)return isNumberLike(size2)?convertToRem?rem(size2):size2:`var(--${prefix2}-${size2})`}function getSpacing(size2){return getSize(size2,"mantine-spacing")}function getRadius(size2){return size2===void 0?"var(--mantine-radius-default)":getSize(size2,"mantine-radius")}function getFontSize(size2){return getSize(size2,"mantine-font-size")}function getLineHeight(size2){return getSize(size2,"mantine-line-height",!1)}function getShadow(size2){if(size2)return getSize(size2,"mantine-shadow",!1)}function createEventHandler(parentEventHandler,eventHandler){return event=>{parentEventHandler?.(event),eventHandler?.(event)}}function getBreakpointValue$1(breakpoint,theme2){return breakpoint in theme2.breakpoints?px$1(theme2.breakpoints[breakpoint]):px$1(breakpoint)}function getSortedBreakpoints(breakpoints,theme2){const convertedBreakpoints=breakpoints.map(breakpoint=>({value:breakpoint,px:getBreakpointValue$1(breakpoint,theme2)}));return convertedBreakpoints.sort((a2,b2)=>a2.px-b2.px),convertedBreakpoints}function getBaseValue$1(value){return typeof value=="object"&&value!==null?"base"in value?value.base:void 0:value}function getContextItemIndex(elementSelector,parentSelector,node){return node?Array.from(findElementAncestor(node,parentSelector)?.querySelectorAll(elementSelector)||[]).findIndex(element=>element===node):null}function useHovered(){const[hovered,setHovered]=useState$1(-1);return[hovered,{setHovered,resetHovered:()=>setHovered(-1)}]}function clamp$4(value,min2,max2){return min2===void 0&&max2===void 0?value:min2!==void 0&&max2===void 0?Math.max(value,min2):Math.min(min2===void 0&&max2!==void 0?value:Math.max(value,min2),max2)}function randomId(){return`mantine-${Math.random().toString(36).slice(2,11)}`}function useCallbackRef(callback){const callbackRef=useRef$1(callback);return useEffect$1(()=>{callbackRef.current=callback}),useMemo$1(()=>(...args)=>callbackRef.current?.(...args),[])}function useDebouncedCallback$1(callback,delay){const handleCallback=useCallbackRef(callback),debounceTimerRef=useRef$1(0);return useEffect$1(()=>()=>window.clearTimeout(debounceTimerRef.current),[]),useCallback$1((...args)=>{window.clearTimeout(debounceTimerRef.current),debounceTimerRef.current=window.setTimeout(()=>handleCallback(...args),delay)},[handleCallback,delay])}const DEFAULT_EVENTS=["mousedown","touchstart"];function useClickOutside(handler,events,nodes){const ref=useRef$1();return useEffect$1(()=>{const listener=event=>{const{target}=event??{};if(Array.isArray(nodes)){const shouldIgnore=target?.hasAttribute("data-ignore-outside-clicks")||!document.body.contains(target)&&target.tagName!=="HTML";nodes.every(node=>!!node&&!event.composedPath().includes(node))&&!shouldIgnore&&handler()}else ref.current&&!ref.current.contains(target)&&handler()};return(events||DEFAULT_EVENTS).forEach(fn=>document.addEventListener(fn,listener)),()=>{(events||DEFAULT_EVENTS).forEach(fn=>document.removeEventListener(fn,listener))}},[ref,handler,nodes]),ref}function useClipboard({timeout:timeout2=2e3}={}){const[error,setError]=useState$1(null),[copied,setCopied]=useState$1(!1),[copyTimeout,setCopyTimeout]=useState$1(null),handleCopyResult=value=>{window.clearTimeout(copyTimeout),setCopyTimeout(window.setTimeout(()=>setCopied(!1),timeout2)),setCopied(value)};return{copy:valueToCopy=>{"clipboard"in navigator?navigator.clipboard.writeText(valueToCopy).then(()=>handleCopyResult(!0)).catch(err=>setError(err)):setError(new Error("useClipboard: navigator.clipboard is not supported"))},reset:()=>{setCopied(!1),setError(null),window.clearTimeout(copyTimeout)},error,copied}}function attachMediaListener(query,callback){try{return query.addEventListener("change",callback),()=>query.removeEventListener("change",callback)}catch{return query.addListener(callback),()=>query.removeListener(callback)}}function getInitialValue(query,initialValue){return typeof window<"u"&&"matchMedia"in window?window.matchMedia(query).matches:!1}function useMediaQuery(query,initialValue,{getInitialValueInEffect}={getInitialValueInEffect:!0}){const[matches,setMatches]=useState$1(getInitialValueInEffect?initialValue:getInitialValue(query)),queryRef=useRef$1();return useEffect$1(()=>{if("matchMedia"in window)return queryRef.current=window.matchMedia(query),setMatches(queryRef.current.matches),attachMediaListener(queryRef.current,event=>setMatches(event.matches))},[query]),matches}function useColorScheme(initialValue,options){return useMediaQuery("(prefers-color-scheme: dark)",initialValue==="dark",options)?"dark":"light"}const useIsomorphicEffect=typeof document<"u"?useLayoutEffect$3:useEffect$1;function useDidUpdate(fn,dependencies){const mounted=useRef$1(!1);useEffect$1(()=>()=>{mounted.current=!1},[]),useEffect$1(()=>{if(mounted.current)return fn();mounted.current=!0},dependencies)}function useFocusReturn({opened,shouldReturnFocus=!0}){const lastActiveElement=useRef$1(),returnFocus=()=>{lastActiveElement.current&&"focus"in lastActiveElement.current&&typeof lastActiveElement.current.focus=="function"&&lastActiveElement.current?.focus({preventScroll:!0})};return useDidUpdate(()=>{let timeout2=-1;const clearFocusTimeout=event=>{event.key==="Tab"&&window.clearTimeout(timeout2)};return document.addEventListener("keydown",clearFocusTimeout),opened?lastActiveElement.current=document.activeElement:shouldReturnFocus&&(timeout2=window.setTimeout(returnFocus,10)),()=>{window.clearTimeout(timeout2),document.removeEventListener("keydown",clearFocusTimeout)}},[opened,shouldReturnFocus]),returnFocus}function createAriaHider(containerNode,selector2="body > :not(script)"){const id2=randomId(),rootNodes=Array.from(document.querySelectorAll(selector2)).map(node=>{if(node?.shadowRoot?.contains(containerNode)||node.contains(containerNode))return;const ariaHidden=node.getAttribute("aria-hidden"),prevAriaHidden=node.getAttribute("data-hidden"),prevFocusId=node.getAttribute("data-focus-id");return node.setAttribute("data-focus-id",id2),ariaHidden===null||ariaHidden==="false"?node.setAttribute("aria-hidden","true"):!prevAriaHidden&&!prevFocusId&&node.setAttribute("data-hidden",ariaHidden),{node,ariaHidden:prevAriaHidden||null}});return()=>{rootNodes.forEach(item=>{!item||id2!==item.node.getAttribute("data-focus-id")||(item.ariaHidden===null?item.node.removeAttribute("aria-hidden"):item.node.setAttribute("aria-hidden",item.ariaHidden),item.node.removeAttribute("data-focus-id"),item.node.removeAttribute("data-hidden"))})}}const TABBABLE_NODES=/input|select|textarea|button|object/,FOCUS_SELECTOR="a, input, select, textarea, button, object, [tabindex]";function hidden(element){return element.style.display==="none"}function visible(element){if(element.getAttribute("aria-hidden")||element.getAttribute("hidden")||element.getAttribute("type")==="hidden")return!1;let parentElement=element;for(;parentElement&&!(parentElement===document.body||parentElement.nodeType===11);){if(hidden(parentElement))return!1;parentElement=parentElement.parentNode}return!0}function getElementTabIndex(element){let tabIndex=element.getAttribute("tabindex");return tabIndex===null&&(tabIndex=void 0),parseInt(tabIndex,10)}function focusable(element){const nodeName=element.nodeName.toLowerCase(),isTabIndexNotNaN=!Number.isNaN(getElementTabIndex(element));return(TABBABLE_NODES.test(nodeName)&&!element.disabled||element instanceof HTMLAnchorElement&&element.href||isTabIndexNotNaN)&&visible(element)}function tabbable(element){const tabIndex=getElementTabIndex(element);return(Number.isNaN(tabIndex)||tabIndex>=0)&&focusable(element)}function findTabbableDescendants(element){return Array.from(element.querySelectorAll(FOCUS_SELECTOR)).filter(tabbable)}function scopeTab(node,event){const tabbable2=findTabbableDescendants(node);if(!tabbable2.length){event.preventDefault();return}const finalTabbable=tabbable2[event.shiftKey?0:tabbable2.length-1],root2=node.getRootNode();let leavingFinalTabbable=finalTabbable===root2.activeElement||node===root2.activeElement;const activeElement2=root2.activeElement;if(activeElement2.tagName==="INPUT"&&activeElement2.getAttribute("type")==="radio"&&(leavingFinalTabbable=tabbable2.filter(element=>element.getAttribute("type")==="radio"&&element.getAttribute("name")===activeElement2.getAttribute("name")).includes(finalTabbable)),!leavingFinalTabbable)return;event.preventDefault();const target=tabbable2[event.shiftKey?tabbable2.length-1:0];target&&target.focus()}function useFocusTrap(active=!0){const ref=useRef$1(),restoreAria=useRef$1(null),focusNode=node=>{let focusElement=node.querySelector("[data-autofocus]");if(!focusElement){const children2=Array.from(node.querySelectorAll(FOCUS_SELECTOR));focusElement=children2.find(tabbable)||children2.find(focusable)||null,!focusElement&&focusable(node)&&(focusElement=node)}focusElement&&focusElement.focus({preventScroll:!0})},setRef=useCallback$1(node=>{if(active){if(node===null){restoreAria.current&&(restoreAria.current(),restoreAria.current=null);return}restoreAria.current=createAriaHider(node),ref.current!==node&&(node?(setTimeout(()=>{node.getRootNode()&&focusNode(node)}),ref.current=node):ref.current=null)}},[active]);return useEffect$1(()=>{if(!active)return;ref.current&&setTimeout(()=>focusNode(ref.current));const handleKeyDown=event=>{event.key==="Tab"&&ref.current&&scopeTab(ref.current,event)};return document.addEventListener("keydown",handleKeyDown),()=>{document.removeEventListener("keydown",handleKeyDown),restoreAria.current&&restoreAria.current()}},[active]),setRef}const __useId=React__default.useId||(()=>{});function useReactId$1(){const id2=__useId();return id2?`mantine-${id2.replace(/:/g,"")}`:""}function useId$2(staticId){const reactId=useReactId$1(),[uuid,setUuid]=useState$1(reactId);return useIsomorphicEffect(()=>{setUuid(randomId())},[]),typeof staticId=="string"?staticId:typeof window>"u"?reactId:uuid}function useWindowEvent(type,listener,options){useEffect$1(()=>(window.addEventListener(type,listener,options),()=>window.removeEventListener(type,listener,options)),[type,listener])}function serializeJSON(value,hookName="use-local-storage"){try{return JSON.stringify(value)}catch{throw new Error(`@mantine/hooks ${hookName}: Failed to serialize the value`)}}function deserializeJSON(value){try{return value&&JSON.parse(value)}catch{return value}}function createStorageHandler(type){return{getItem:key=>{try{return window[type].getItem(key)}catch{return console.warn("use-local-storage: Failed to get value from storage, localStorage is blocked"),null}},setItem:(key,value)=>{try{window[type].setItem(key,value)}catch{console.warn("use-local-storage: Failed to set value to storage, localStorage is blocked")}},removeItem:key=>{try{window[type].removeItem(key)}catch{console.warn("use-local-storage: Failed to remove value from storage, localStorage is blocked")}}}}function createStorage(type,hookName){const eventName="mantine-local-storage",{getItem,setItem,removeItem:removeItem2}=createStorageHandler(type);return function({key,defaultValue,getInitialValueInEffect=!0,deserialize=deserializeJSON,serialize=value=>serializeJSON(value,hookName)}){const readStorageValue=useCallback$1(skipStorage=>{let storageBlockedOrSkipped;try{storageBlockedOrSkipped=typeof window>"u"||!(type in window)||window[type]===null||!!skipStorage}catch{storageBlockedOrSkipped=!0}if(storageBlockedOrSkipped)return defaultValue;const storageValue=getItem(key);return storageValue!==null?deserialize(storageValue):defaultValue},[key,defaultValue]),[value,setValue]=useState$1(readStorageValue(getInitialValueInEffect)),setStorageValue=useCallback$1(val=>{val instanceof Function?setValue(current=>{const result=val(current);return setItem(key,serialize(result)),window.dispatchEvent(new CustomEvent(eventName,{detail:{key,value:val(current)}})),result}):(setItem(key,serialize(val)),window.dispatchEvent(new CustomEvent(eventName,{detail:{key,value:val}})),setValue(val))},[key]),removeStorageValue=useCallback$1(()=>{removeItem2(key),window.dispatchEvent(new CustomEvent(eventName,{detail:{key,value:defaultValue}}))},[]);return useWindowEvent("storage",event=>{event.storageArea===window[type]&&event.key===key&&setValue(deserialize(event.newValue??void 0))}),useWindowEvent(eventName,event=>{event.detail.key===key&&setValue(event.detail.value)}),useEffect$1(()=>{defaultValue!==void 0&&value===void 0&&setStorageValue(defaultValue)},[defaultValue,value,setStorageValue]),useEffect$1(()=>{const val=readStorageValue();val!==void 0&&setStorageValue(val)},[]),[value===void 0?defaultValue:value,setStorageValue,removeStorageValue]}}function useLocalStorage(props2){return createStorage("localStorage","use-local-storage")(props2)}function assignRef(ref,value){typeof ref=="function"?ref(value):typeof ref=="object"&&ref!==null&&"current"in ref&&(ref.current=value)}function mergeRefs(...refs){return node=>{refs.forEach(ref=>assignRef(ref,node))}}function useMergedRef(...refs){return useCallback$1(mergeRefs(...refs),refs)}function useMove(onChange,handlers,dir="ltr"){const ref=useRef$1(null),mounted=useRef$1(!1),isSliding=useRef$1(!1),frame2=useRef$1(0),[active,setActive]=useState$1(!1);return useEffect$1(()=>{mounted.current=!0},[]),useEffect$1(()=>{const onScrub=({x:x2,y:y2})=>{cancelAnimationFrame(frame2.current),frame2.current=requestAnimationFrame(()=>{if(mounted.current&&ref.current){ref.current.style.userSelect="none";const rect=ref.current.getBoundingClientRect();if(rect.width&&rect.height){const _x=clamp$4((x2-rect.left)/rect.width,0,1);onChange({x:dir==="ltr"?_x:1-_x,y:clamp$4((y2-rect.top)/rect.height,0,1)})}}})},bindEvents=()=>{document.addEventListener("mousemove",onMouseMove),document.addEventListener("mouseup",stopScrubbing),document.addEventListener("touchmove",onTouchMove),document.addEventListener("touchend",stopScrubbing)},unbindEvents=()=>{document.removeEventListener("mousemove",onMouseMove),document.removeEventListener("mouseup",stopScrubbing),document.removeEventListener("touchmove",onTouchMove),document.removeEventListener("touchend",stopScrubbing)},startScrubbing=()=>{!isSliding.current&&mounted.current&&(isSliding.current=!0,typeof handlers?.onScrubStart=="function"&&handlers.onScrubStart(),setActive(!0),bindEvents())},stopScrubbing=()=>{isSliding.current&&mounted.current&&(isSliding.current=!1,setActive(!1),unbindEvents(),setTimeout(()=>{typeof handlers?.onScrubEnd=="function"&&handlers.onScrubEnd()},0))},onMouseDown=event=>{startScrubbing(),event.preventDefault(),onMouseMove(event)},onMouseMove=event=>onScrub({x:event.clientX,y:event.clientY}),onTouchStart=event=>{event.cancelable&&event.preventDefault(),startScrubbing(),onTouchMove(event)},onTouchMove=event=>{event.cancelable&&event.preventDefault(),onScrub({x:event.changedTouches[0].clientX,y:event.changedTouches[0].clientY})};return ref.current?.addEventListener("mousedown",onMouseDown),ref.current?.addEventListener("touchstart",onTouchStart,{passive:!1}),()=>{ref.current&&(ref.current.removeEventListener("mousedown",onMouseDown),ref.current.removeEventListener("touchstart",onTouchStart))}},[dir,onChange]),{ref,active}}function useUncontrolled({value,defaultValue,finalValue,onChange=()=>{}}){const[uncontrolledValue,setUncontrolledValue]=useState$1(defaultValue!==void 0?defaultValue:finalValue),handleUncontrolledChange=(val,...payload)=>{setUncontrolledValue(val),onChange?.(val,...payload)};return value!==void 0?[value,onChange,!0]:[uncontrolledValue,handleUncontrolledChange,!1]}function useReducedMotion(initialValue,options){return useMediaQuery("(prefers-reduced-motion: reduce)",initialValue,options)}const defaultState={x:0,y:0,width:0,height:0,top:0,left:0,bottom:0,right:0};function useResizeObserver$2(options){const frameID=useRef$1(0),ref=useRef$1(null),[rect,setRect]=useState$1(defaultState),observer=useMemo$1(()=>typeof window<"u"?new ResizeObserver(entries=>{const entry=entries[0];entry&&(cancelAnimationFrame(frameID.current),frameID.current=requestAnimationFrame(()=>{ref.current&&setRect(entry.contentRect)}))}):null,[]);return useEffect$1(()=>(ref.current&&observer?.observe(ref.current,options),()=>{observer?.disconnect(),frameID.current&&cancelAnimationFrame(frameID.current)}),[ref.current]),[ref,rect]}function useElementSize(options){const[ref,{width,height}]=useResizeObserver$2(options);return{ref,width,height}}function parseHotkey(hotkey){const keys2=hotkey.toLowerCase().split("+").map(part=>part.trim()),modifiers={alt:keys2.includes("alt"),ctrl:keys2.includes("ctrl"),meta:keys2.includes("meta"),mod:keys2.includes("mod"),shift:keys2.includes("shift")},reservedKeys=["alt","ctrl","meta","shift","mod"],freeKey=keys2.find(key=>!reservedKeys.includes(key));return{...modifiers,key:freeKey}}function isExactHotkey(hotkey,event){const{alt,ctrl,meta,mod,shift:shift2,key}=hotkey,{altKey,ctrlKey,metaKey,shiftKey,key:pressedKey}=event;if(alt!==altKey)return!1;if(mod){if(!ctrlKey&&!metaKey)return!1}else if(ctrl!==ctrlKey||meta!==metaKey)return!1;return shift2!==shiftKey?!1:!!(key&&(pressedKey.toLowerCase()===key.toLowerCase()||event.code.replace("Key","").toLowerCase()===key.toLowerCase()))}function getHotkeyMatcher(hotkey){return event=>isExactHotkey(parseHotkey(hotkey),event)}function shouldFireEvent(event,tagsToIgnore,triggerOnContentEditable=!1){return event.target instanceof HTMLElement?(triggerOnContentEditable||!event.target.isContentEditable)&&!tagsToIgnore.includes(event.target.tagName):!0}function useHotkeys(hotkeys,tagsToIgnore=["INPUT","TEXTAREA","SELECT"],triggerOnContentEditable=!1){useEffect$1(()=>{const keydownListener=event=>{hotkeys.forEach(([hotkey,handler,options={preventDefault:!0}])=>{getHotkeyMatcher(hotkey)(event)&&shouldFireEvent(event,tagsToIgnore,triggerOnContentEditable)&&(options.preventDefault&&event.preventDefault(),handler(event))})};return document.documentElement.addEventListener("keydown",keydownListener),()=>document.documentElement.removeEventListener("keydown",keydownListener)},[hotkeys])}function useDisclosure(initialState2=!1,callbacks){const{onOpen,onClose}=callbacks||{},[opened,setOpened]=useState$1(initialState2),open=useCallback$1(()=>{setOpened(isOpened=>isOpened||(onOpen?.(),!0))},[onOpen]),close=useCallback$1(()=>{setOpened(isOpened=>isOpened&&(onClose?.(),!1))},[onClose]),toggle=useCallback$1(()=>{opened?close():open()},[close,open,opened]);return[opened,{open,close,toggle}]}function useTimeout(callback,delay,options={autoInvoke:!1}){const timeoutRef=useRef$1(null),start2=useCallback$1((...callbackParams)=>{timeoutRef.current||(timeoutRef.current=window.setTimeout(()=>{callback(callbackParams),timeoutRef.current=null},delay))},[delay]),clear=useCallback$1(()=>{timeoutRef.current&&(window.clearTimeout(timeoutRef.current),timeoutRef.current=null)},[]);return useEffect$1(()=>(options.autoInvoke&&start2(),clear),[clear,start2]),{start:start2,clear}}function usePrevious(value){const ref=useRef$1();return useEffect$1(()=>{ref.current=value},[value]),ref.current}function useMutationObserver(callback,options,target){const observer=useRef$1(),ref=useRef$1(null);return useEffect$1(()=>{const targetElement=typeof target=="function"?target():target;return(targetElement||ref.current)&&(observer.current=new MutationObserver(callback),observer.current.observe(targetElement||ref.current,options)),()=>{observer.current?.disconnect()}},[callback,options]),ref}function useMounted(){const[mounted,setMounted]=useState$1(!1);return useEffect$1(()=>setMounted(!0),[]),mounted}function useStateHistory(initialValue){const[state,setState]=useState$1({history:[initialValue],current:0}),set2=useCallback$1(val=>setState(currentState=>{const nextState=[...currentState.history.slice(0,currentState.current+1),val];return{history:nextState,current:nextState.length-1}}),[]),back=useCallback$1((steps2=1)=>setState(currentState=>({history:currentState.history,current:Math.max(0,currentState.current-steps2)})),[]),forward=useCallback$1((steps2=1)=>setState(currentState=>({history:currentState.history,current:Math.min(currentState.history.length-1,currentState.current+steps2)})),[]),handlers=useMemo$1(()=>({set:set2,forward,back}),[]);return[state.history[state.current],handlers,state]}var define_process_env_default={};function getEnv(){return typeof process<"u"&&define_process_env_default?"production":"development"}function r$5(e2){var t2,f2,n2="";if(typeof e2=="string"||typeof e2=="number")n2+=e2;else if(typeof e2=="object")if(Array.isArray(e2)){var o2=e2.length;for(t2=0;t2<o2;t2++)e2[t2]&&(f2=r$5(e2[t2]))&&(n2&&(n2+=" "),n2+=f2)}else for(f2 in e2)e2[f2]&&(n2&&(n2+=" "),n2+=f2);return n2}function clsx(){for(var e2,t2,f2=0,n2="",o2=arguments.length;f2<o2;f2++)(e2=arguments[f2])&&(t2=r$5(e2))&&(n2&&(n2+=" "),n2+=t2);return n2}const EMPTY_CLASS_NAMES={};function mergeClassNames(objects){const merged={};return objects.forEach(obj=>{Object.entries(obj).forEach(([key,value])=>{merged[key]?merged[key]=clsx(merged[key],value):merged[key]=value})}),merged}function resolveClassNames({theme:theme2,classNames,props:props2,stylesCtx}){const resolvedClassNames=(Array.isArray(classNames)?classNames:[classNames]).map(item=>typeof item=="function"?item(theme2,props2,stylesCtx):item||EMPTY_CLASS_NAMES);return mergeClassNames(resolvedClassNames)}function resolveStyles({theme:theme2,styles,props:props2,stylesCtx}){return(Array.isArray(styles)?styles:[styles]).reduce((acc,style2)=>typeof style2=="function"?{...acc,...style2(theme2,props2,stylesCtx)}:{...acc,...style2},{})}const MantineContext=createContext$1(null);function useMantineContext(){const ctx=useContext$1(MantineContext);if(!ctx)throw new Error("[@mantine/core] MantineProvider was not found in tree");return ctx}function useMantineCssVariablesResolver(){return useMantineContext().cssVariablesResolver}function useMantineClassNamesPrefix(){return useMantineContext().classNamesPrefix}function useMantineStyleNonce(){return useMantineContext().getStyleNonce}function useMantineWithStaticClasses(){return useMantineContext().withStaticClasses}function useMantineIsHeadless(){return useMantineContext().headless}function useMantineSxTransform(){return useMantineContext().stylesTransform?.sx}function useMantineStylesTransform(){return useMantineContext().stylesTransform?.styles}function isHexColor(hex2){return/^#?([0-9A-F]{3}){1,2}([0-9A-F]{2})?$/i.test(hex2)}function hexToRgba(color2){let hexString=color2.replace("#","");if(hexString.length===3){const shorthandHex=hexString.split("");hexString=[shorthandHex[0],shorthandHex[0],shorthandHex[1],shorthandHex[1],shorthandHex[2],shorthandHex[2]].join("")}if(hexString.length===8){const alpha2=parseInt(hexString.slice(6,8),16)/255;return{r:parseInt(hexString.slice(0,2),16),g:parseInt(hexString.slice(2,4),16),b:parseInt(hexString.slice(4,6),16),a:alpha2}}const parsed=parseInt(hexString,16),r2=parsed>>16&255,g=parsed>>8&255,b2=parsed&255;return{r:r2,g,b:b2,a:1}}function rgbStringToRgba(color2){const[r2,g,b2,a2]=color2.replace(/[^0-9,./]/g,"").split(/[/,]/).map(Number);return{r:r2,g,b:b2,a:a2||1}}function hslStringToRgba(hslaString){const hslaRegex=/^hsla?\(\s*(\d+)\s*,\s*(\d+%)\s*,\s*(\d+%)\s*(,\s*(0?\.\d+|\d+(\.\d+)?))?\s*\)$/i,matches=hslaString.match(hslaRegex);if(!matches)return{r:0,g:0,b:0,a:1};const h2=parseInt(matches[1],10),s2=parseInt(matches[2],10)/100,l2=parseInt(matches[3],10)/100,a2=matches[5]?parseFloat(matches[5]):void 0,chroma=(1-Math.abs(2*l2-1))*s2,huePrime=h2/60,x2=chroma*(1-Math.abs(huePrime%2-1)),m2=l2-chroma/2;let r2,g,b2;return huePrime>=0&&huePrime<1?(r2=chroma,g=x2,b2=0):huePrime>=1&&huePrime<2?(r2=x2,g=chroma,b2=0):huePrime>=2&&huePrime<3?(r2=0,g=chroma,b2=x2):huePrime>=3&&huePrime<4?(r2=0,g=x2,b2=chroma):huePrime>=4&&huePrime<5?(r2=x2,g=0,b2=chroma):(r2=chroma,g=0,b2=x2),{r:Math.round((r2+m2)*255),g:Math.round((g+m2)*255),b:Math.round((b2+m2)*255),a:a2||1}}function toRgba(color2){return isHexColor(color2)?hexToRgba(color2):color2.startsWith("rgb")?rgbStringToRgba(color2):color2.startsWith("hsl")?hslStringToRgba(color2):{r:0,g:0,b:0,a:1}}function darken(color2,alpha2){if(color2.startsWith("var("))return`color-mix(in srgb, ${color2}, black ${alpha2*100}%)`;const{r:r2,g,b:b2,a:a2}=toRgba(color2),f2=1-alpha2,dark=input=>Math.round(input*f2);return`rgba(${dark(r2)}, ${dark(g)}, ${dark(b2)}, ${a2})`}function getPrimaryShade(theme2,colorScheme){return typeof theme2.primaryShade=="number"?theme2.primaryShade:colorScheme==="dark"?theme2.primaryShade.dark:theme2.primaryShade.light}function gammaCorrect(c2){return c2<=.03928?c2/12.92:((c2+.055)/1.055)**2.4}function getLightnessFromOklch(oklchColor){const match=oklchColor.match(/oklch\((.*?)%\s/);return match?parseFloat(match[1]):null}function luminance(color2){if(color2.startsWith("oklch("))return(getLightnessFromOklch(color2)||0)/100;const{r:r2,g,b:b2}=toRgba(color2),sR=r2/255,sG=g/255,sB=b2/255,rLinear=gammaCorrect(sR),gLinear=gammaCorrect(sG),bLinear=gammaCorrect(sB);return .2126*rLinear+.7152*gLinear+.0722*bLinear}function isLightColor(color2,luminanceThreshold=.179){return color2.startsWith("var(")?!1:luminance(color2)>luminanceThreshold}function parseThemeColor({color:color2,theme:theme2,colorScheme}){if(typeof color2!="string")throw new Error(`[@mantine/core] Failed to parse color. Expected color to be a string, instead got ${typeof color2}`);if(color2==="bright")return{color:color2,value:colorScheme==="dark"?theme2.white:theme2.black,shade:void 0,isThemeColor:!1,isLight:isLightColor(colorScheme==="dark"?theme2.white:theme2.black,theme2.luminanceThreshold),variable:"--mantine-color-bright"};if(color2==="dimmed")return{color:color2,value:colorScheme==="dark"?theme2.colors.dark[2]:theme2.colors.gray[7],shade:void 0,isThemeColor:!1,isLight:isLightColor(colorScheme==="dark"?theme2.colors.dark[2]:theme2.colors.gray[6],theme2.luminanceThreshold),variable:"--mantine-color-dimmed"};if(color2==="white"||color2==="black")return{color:color2,value:color2==="white"?theme2.white:theme2.black,shade:void 0,isThemeColor:!1,isLight:isLightColor(color2==="white"?theme2.white:theme2.black,theme2.luminanceThreshold),variable:`--mantine-color-${color2}`};const[_color,shade]=color2.split("."),colorShade=shade?Number(shade):void 0,isThemeColor=_color in theme2.colors;if(isThemeColor){const colorValue=colorShade!==void 0?theme2.colors[_color][colorShade]:theme2.colors[_color][getPrimaryShade(theme2,colorScheme||"light")];return{color:_color,value:colorValue,shade:colorShade,isThemeColor,isLight:isLightColor(colorValue,theme2.luminanceThreshold),variable:shade?`--mantine-color-${_color}-${colorShade}`:`--mantine-color-${_color}-filled`}}return{color:color2,value:color2,isThemeColor,isLight:isLightColor(color2,theme2.luminanceThreshold),shade:colorShade,variable:void 0}}function getThemeColor(color2,theme2){const parsed=parseThemeColor({color:color2||theme2.primaryColor,theme:theme2});return parsed.variable?`var(${parsed.variable})`:color2}function getGradient(gradient,theme2){const merged={from:gradient?.from||theme2.defaultGradient.from,to:gradient?.to||theme2.defaultGradient.to,deg:gradient?.deg||theme2.defaultGradient.deg||0},fromColor=getThemeColor(merged.from,theme2),toColor=getThemeColor(merged.to,theme2);return`linear-gradient(${merged.deg}deg, ${fromColor} 0%, ${toColor} 100%)`}function rgba$2(color2,alpha2){if(typeof color2!="string"||alpha2>1||alpha2<0)return"rgba(0, 0, 0, 1)";if(color2.startsWith("var(")){const mixPercentage=(1-alpha2)*100;return`color-mix(in srgb, ${color2}, transparent ${mixPercentage}%)`}if(color2.startsWith("oklch"))return color2.includes("/")?color2.replace(/\/\s*[\d.]+\s*\)/,`/ ${alpha2})`):color2.replace(")",` / ${alpha2})`);const{r:r2,g,b:b2}=toRgba(color2);return`rgba(${r2}, ${g}, ${b2}, ${alpha2})`}const alpha$1=rgba$2,defaultVariantColorsResolver=({color:color2,theme:theme2,variant,gradient,autoContrast})=>{const parsed=parseThemeColor({color:color2,theme:theme2}),_autoContrast=typeof autoContrast=="boolean"?autoContrast:theme2.autoContrast;if(variant==="filled"){const textColor=_autoContrast&&parsed.isLight?"var(--mantine-color-black)":"var(--mantine-color-white)";return parsed.isThemeColor?parsed.shade===void 0?{background:`var(--mantine-color-${color2}-filled)`,hover:`var(--mantine-color-${color2}-filled-hover)`,color:textColor,border:`${rem(1)} solid transparent`}:{background:`var(--mantine-color-${parsed.color}-${parsed.shade})`,hover:`var(--mantine-color-${parsed.color}-${parsed.shade===9?8:parsed.shade+1})`,color:textColor,border:`${rem(1)} solid transparent`}:{background:color2,hover:darken(color2,.1),color:textColor,border:`${rem(1)} solid transparent`}}if(variant==="light"){if(parsed.isThemeColor){if(parsed.shade===void 0)return{background:`var(--mantine-color-${color2}-light)`,hover:`var(--mantine-color-${color2}-light-hover)`,color:`var(--mantine-color-${color2}-light-color)`,border:`${rem(1)} solid transparent`};const parsedColor=theme2.colors[parsed.color][parsed.shade];return{background:rgba$2(parsedColor,.1),hover:rgba$2(parsedColor,.12),color:`var(--mantine-color-${parsed.color}-${Math.min(parsed.shade,6)})`,border:`${rem(1)} solid transparent`}}return{background:rgba$2(color2,.1),hover:rgba$2(color2,.12),color:color2,border:`${rem(1)} solid transparent`}}if(variant==="outline")return parsed.isThemeColor?parsed.shade===void 0?{background:"transparent",hover:`var(--mantine-color-${color2}-outline-hover)`,color:`var(--mantine-color-${color2}-outline)`,border:`${rem(1)} solid var(--mantine-color-${color2}-outline)`}:{background:"transparent",hover:rgba$2(theme2.colors[parsed.color][parsed.shade],.05),color:`var(--mantine-color-${parsed.color}-${parsed.shade})`,border:`${rem(1)} solid var(--mantine-color-${parsed.color}-${parsed.shade})`}:{background:"transparent",hover:rgba$2(color2,.05),color:color2,border:`${rem(1)} solid ${color2}`};if(variant==="subtle"){if(parsed.isThemeColor){if(parsed.shade===void 0)return{background:"transparent",hover:`var(--mantine-color-${color2}-light-hover)`,color:`var(--mantine-color-${color2}-light-color)`,border:`${rem(1)} solid transparent`};const parsedColor=theme2.colors[parsed.color][parsed.shade];return{background:"transparent",hover:rgba$2(parsedColor,.12),color:`var(--mantine-color-${parsed.color}-${Math.min(parsed.shade,6)})`,border:`${rem(1)} solid transparent`}}return{background:"transparent",hover:rgba$2(color2,.12),color:color2,border:`${rem(1)} solid transparent`}}return variant==="transparent"?parsed.isThemeColor?parsed.shade===void 0?{background:"transparent",hover:"transparent",color:`var(--mantine-color-${color2}-light-color)`,border:`${rem(1)} solid transparent`}:{background:"transparent",hover:"transparent",color:`var(--mantine-color-${parsed.color}-${Math.min(parsed.shade,6)})`,border:`${rem(1)} solid transparent`}:{background:"transparent",hover:"transparent",color:color2,border:`${rem(1)} solid transparent`}:variant==="white"?parsed.isThemeColor?parsed.shade===void 0?{background:"var(--mantine-color-white)",hover:darken(theme2.white,.01),color:`var(--mantine-color-${color2}-filled)`,border:`${rem(1)} solid transparent`}:{background:"var(--mantine-color-white)",hover:darken(theme2.white,.01),color:`var(--mantine-color-${parsed.color}-${parsed.shade})`,border:`${rem(1)} solid transparent`}:{background:"var(--mantine-color-white)",hover:darken(theme2.white,.01),color:color2,border:`${rem(1)} solid transparent`}:variant==="gradient"?{background:getGradient(gradient,theme2),hover:getGradient(gradient,theme2),color:"var(--mantine-color-white)",border:"none"}:variant==="default"?{background:"var(--mantine-color-default)",hover:"var(--mantine-color-default-hover)",color:"var(--mantine-color-default-color)",border:`${rem(1)} solid var(--mantine-color-default-border)`}:{}},DEFAULT_COLORS={dark:["#C9C9C9","#b8b8b8","#828282","#696969","#424242","#3b3b3b","#2e2e2e","#242424","#1f1f1f","#141414"],gray:["#f8f9fa","#f1f3f5","#e9ecef","#dee2e6","#ced4da","#adb5bd","#868e96","#495057","#343a40","#212529"],red:["#fff5f5","#ffe3e3","#ffc9c9","#ffa8a8","#ff8787","#ff6b6b","#fa5252","#f03e3e","#e03131","#c92a2a"],pink:["#fff0f6","#ffdeeb","#fcc2d7","#faa2c1","#f783ac","#f06595","#e64980","#d6336c","#c2255c","#a61e4d"],grape:["#f8f0fc","#f3d9fa","#eebefa","#e599f7","#da77f2","#cc5de8","#be4bdb","#ae3ec9","#9c36b5","#862e9c"],violet:["#f3f0ff","#e5dbff","#d0bfff","#b197fc","#9775fa","#845ef7","#7950f2","#7048e8","#6741d9","#5f3dc4"],indigo:["#edf2ff","#dbe4ff","#bac8ff","#91a7ff","#748ffc","#5c7cfa","#4c6ef5","#4263eb","#3b5bdb","#364fc7"],blue:["#e7f5ff","#d0ebff","#a5d8ff","#74c0fc","#4dabf7","#339af0","#228be6","#1c7ed6","#1971c2","#1864ab"],cyan:["#e3fafc","#c5f6fa","#99e9f2","#66d9e8","#3bc9db","#22b8cf","#15aabf","#1098ad","#0c8599","#0b7285"],teal:["#e6fcf5","#c3fae8","#96f2d7","#63e6be","#38d9a9","#20c997","#12b886","#0ca678","#099268","#087f5b"],green:["#ebfbee","#d3f9d8","#b2f2bb","#8ce99a","#69db7c","#51cf66","#40c057","#37b24d","#2f9e44","#2b8a3e"],lime:["#f4fce3","#e9fac8","#d8f5a2","#c0eb75","#a9e34b","#94d82d","#82c91e","#74b816","#66a80f","#5c940d"],yellow:["#fff9db","#fff3bf","#ffec99","#ffe066","#ffd43b","#fcc419","#fab005","#f59f00","#f08c00","#e67700"],orange:["#fff4e6","#ffe8cc","#ffd8a8","#ffc078","#ffa94d","#ff922b","#fd7e14","#f76707","#e8590c","#d9480f"]},DEFAULT_FONT_FAMILY="-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji",DEFAULT_THEME={scale:1,fontSmoothing:!0,focusRing:"auto",white:"#fff",black:"#000",colors:DEFAULT_COLORS,primaryShade:{light:6,dark:8},primaryColor:"blue",variantColorResolver:defaultVariantColorsResolver,autoContrast:!1,luminanceThreshold:.3,fontFamily:DEFAULT_FONT_FAMILY,fontFamilyMonospace:"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace",respectReducedMotion:!1,cursorType:"default",defaultGradient:{from:"blue",to:"cyan",deg:45},defaultRadius:"sm",activeClassName:"mantine-active",focusClassName:"",headings:{fontFamily:DEFAULT_FONT_FAMILY,fontWeight:"700",textWrap:"wrap",sizes:{h1:{fontSize:rem(34),lineHeight:"1.3"},h2:{fontSize:rem(26),lineHeight:"1.35"},h3:{fontSize:rem(22),lineHeight:"1.4"},h4:{fontSize:rem(18),lineHeight:"1.45"},h5:{fontSize:rem(16),lineHeight:"1.5"},h6:{fontSize:rem(14),lineHeight:"1.5"}}},fontSizes:{xs:rem(12),sm:rem(14),md:rem(16),lg:rem(18),xl:rem(20)},lineHeights:{xs:"1.4",sm:"1.45",md:"1.55",lg:"1.6",xl:"1.65"},radius:{xs:rem(2),sm:rem(4),md:rem(8),lg:rem(16),xl:rem(32)},spacing:{xs:rem(10),sm:rem(12),md:rem(16),lg:rem(20),xl:rem(32)},breakpoints:{xs:"36em",sm:"48em",md:"62em",lg:"75em",xl:"88em"},shadows:{xs:`0 ${rem(1)} ${rem(3)} rgba(0, 0, 0, 0.05), 0 ${rem(1)} ${rem(2)} rgba(0, 0, 0, 0.1)`,sm:`0 ${rem(1)} ${rem(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${rem(10)} ${rem(15)} ${rem(-5)}, rgba(0, 0, 0, 0.04) 0 ${rem(7)} ${rem(7)} ${rem(-5)}`,md:`0 ${rem(1)} ${rem(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${rem(20)} ${rem(25)} ${rem(-5)}, rgba(0, 0, 0, 0.04) 0 ${rem(10)} ${rem(10)} ${rem(-5)}`,lg:`0 ${rem(1)} ${rem(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${rem(28)} ${rem(23)} ${rem(-7)}, rgba(0, 0, 0, 0.04) 0 ${rem(12)} ${rem(12)} ${rem(-7)}`,xl:`0 ${rem(1)} ${rem(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${rem(36)} ${rem(28)} ${rem(-7)}, rgba(0, 0, 0, 0.04) 0 ${rem(17)} ${rem(17)} ${rem(-7)}`},other:{},components:{}};function isMantineColorScheme(value){return value==="auto"||value==="dark"||value==="light"}function localStorageColorSchemeManager({key="mantine-color-scheme-value"}={}){let handleStorageEvent;return{get:defaultValue=>{if(typeof window>"u")return defaultValue;try{const storedColorScheme=window.localStorage.getItem(key);return isMantineColorScheme(storedColorScheme)?storedColorScheme:defaultValue}catch{return defaultValue}},set:value=>{try{window.localStorage.setItem(key,value)}catch(error){console.warn("[@mantine/core] Local storage color scheme manager was unable to save color scheme.",error)}},subscribe:onUpdate=>{handleStorageEvent=event=>{event.storageArea===window.localStorage&&event.key===key&&isMantineColorScheme(event.newValue)&&onUpdate(event.newValue)},window.addEventListener("storage",handleStorageEvent)},unsubscribe:()=>{window.removeEventListener("storage",handleStorageEvent)},clear:()=>{window.localStorage.removeItem(key)}}}const INVALID_PRIMARY_COLOR_ERROR="[@mantine/core] MantineProvider: Invalid theme.primaryColor, it accepts only key of theme.colors, learn more – https://mantine.dev/theming/colors/#primary-color",INVALID_PRIMARY_SHADE_ERROR="[@mantine/core] MantineProvider: Invalid theme.primaryShade, it accepts only 0-9 integers or an object { light: 0-9, dark: 0-9 }";function isValidPrimaryShade(shade){return shade<0||shade>9?!1:parseInt(shade.toString(),10)===shade}function validateMantineTheme(theme2){if(!(theme2.primaryColor in theme2.colors))throw new Error(INVALID_PRIMARY_COLOR_ERROR);if(typeof theme2.primaryShade=="object"&&(!isValidPrimaryShade(theme2.primaryShade.dark)||!isValidPrimaryShade(theme2.primaryShade.light)))throw new Error(INVALID_PRIMARY_SHADE_ERROR);if(typeof theme2.primaryShade=="number"&&!isValidPrimaryShade(theme2.primaryShade))throw new Error(INVALID_PRIMARY_SHADE_ERROR)}function mergeMantineTheme(currentTheme,themeOverride){if(!themeOverride)return validateMantineTheme(currentTheme),currentTheme;const result=deepMerge(currentTheme,themeOverride);return themeOverride.fontFamily&&!themeOverride.headings?.fontFamily&&(result.headings.fontFamily=themeOverride.fontFamily),validateMantineTheme(result),result}const MantineThemeContext=createContext$1(null),useSafeMantineTheme=()=>useContext$1(MantineThemeContext)||DEFAULT_THEME;function useMantineTheme(){const ctx=useContext$1(MantineThemeContext);if(!ctx)throw new Error("@mantine/core: MantineProvider was not found in component tree, make sure you have it in your app");return ctx}function MantineThemeProvider({theme:theme2,children:children2,inherit:inherit2=!0}){const parentTheme=useSafeMantineTheme(),mergedTheme=useMemo$1(()=>mergeMantineTheme(inherit2?parentTheme:DEFAULT_THEME,theme2),[theme2,parentTheme,inherit2]);return jsx(MantineThemeContext.Provider,{value:mergedTheme,children:children2})}MantineThemeProvider.displayName="@mantine/core/MantineThemeProvider";function MantineClasses(){const theme2=useMantineTheme(),nonce=useMantineStyleNonce(),classes=keys$1(theme2.breakpoints).reduce((acc,breakpoint)=>{const isPxBreakpoint=theme2.breakpoints[breakpoint].includes("px"),pxValue=px$1(theme2.breakpoints[breakpoint]),maxWidthBreakpoint=isPxBreakpoint?`${pxValue-.1}px`:em(pxValue-.1),minWidthBreakpoint=isPxBreakpoint?`${pxValue}px`:em(pxValue);return`${acc}@media (max-width: ${maxWidthBreakpoint}) {.mantine-visible-from-${breakpoint} {display: none !important;}}@media (min-width: ${minWidthBreakpoint}) {.mantine-hidden-from-${breakpoint} {display: none !important;}}`},"");return jsx("style",{"data-mantine-styles":"classes",nonce:nonce?.(),dangerouslySetInnerHTML:{__html:classes}})}function cssVariablesObjectToString(variables){return Object.entries(variables).map(([name,value])=>`${name}: ${value};`).join("")}function wrapWithSelector(selectors,code){return(Array.isArray(selectors)?selectors:[selectors]).reduce((acc,selector2)=>`${selector2}{${acc}}`,code)}function convertCssVariables(input,selector2){const sharedVariables=cssVariablesObjectToString(input.variables),shared=sharedVariables?wrapWithSelector(selector2,sharedVariables):"",dark=cssVariablesObjectToString(input.dark),light=cssVariablesObjectToString(input.light),darkForced=dark?wrapWithSelector(selector2===":host"?`${selector2}([data-mantine-color-scheme="dark"])`:`${selector2}[data-mantine-color-scheme="dark"]`,dark):"",lightForced=light?wrapWithSelector(selector2===":host"?`${selector2}([data-mantine-color-scheme="light"])`:`${selector2}[data-mantine-color-scheme="light"]`,light):"";return`${shared}${darkForced}${lightForced}`}function getContrastColor({color:color2,theme:theme2,autoContrast}){return(typeof autoContrast=="boolean"?autoContrast:theme2.autoContrast)&&parseThemeColor({color:color2||theme2.primaryColor,theme:theme2}).isLight?"var(--mantine-color-black)":"var(--mantine-color-white)"}function getPrimaryContrastColor(theme2,colorScheme){return getContrastColor({color:theme2.colors[theme2.primaryColor][getPrimaryShade(theme2,colorScheme)],theme:theme2,autoContrast:null})}function getCSSColorVariables({theme:theme2,color:color2,colorScheme,name=color2,withColorValues=!0}){if(!theme2.colors[color2])return{};if(colorScheme==="light"){const primaryShade2=getPrimaryShade(theme2,"light"),dynamicVariables2={[`--mantine-color-${name}-text`]:`var(--mantine-color-${name}-filled)`,[`--mantine-color-${name}-filled`]:`var(--mantine-color-${name}-${primaryShade2})`,[`--mantine-color-${name}-filled-hover`]:`var(--mantine-color-${name}-${primaryShade2===9?8:primaryShade2+1})`,[`--mantine-color-${name}-light`]:alpha$1(theme2.colors[color2][primaryShade2],.1),[`--mantine-color-${name}-light-hover`]:alpha$1(theme2.colors[color2][primaryShade2],.12),[`--mantine-color-${name}-light-color`]:`var(--mantine-color-${name}-${primaryShade2})`,[`--mantine-color-${name}-outline`]:`var(--mantine-color-${name}-${primaryShade2})`,[`--mantine-color-${name}-outline-hover`]:alpha$1(theme2.colors[color2][primaryShade2],.05)};return withColorValues?{[`--mantine-color-${name}-0`]:theme2.colors[color2][0],[`--mantine-color-${name}-1`]:theme2.colors[color2][1],[`--mantine-color-${name}-2`]:theme2.colors[color2][2],[`--mantine-color-${name}-3`]:theme2.colors[color2][3],[`--mantine-color-${name}-4`]:theme2.colors[color2][4],[`--mantine-color-${name}-5`]:theme2.colors[color2][5],[`--mantine-color-${name}-6`]:theme2.colors[color2][6],[`--mantine-color-${name}-7`]:theme2.colors[color2][7],[`--mantine-color-${name}-8`]:theme2.colors[color2][8],[`--mantine-color-${name}-9`]:theme2.colors[color2][9],...dynamicVariables2}:dynamicVariables2}const primaryShade=getPrimaryShade(theme2,"dark"),dynamicVariables={[`--mantine-color-${name}-text`]:`var(--mantine-color-${name}-4)`,[`--mantine-color-${name}-filled`]:`var(--mantine-color-${name}-${primaryShade})`,[`--mantine-color-${name}-filled-hover`]:`var(--mantine-color-${name}-${primaryShade===9?8:primaryShade+1})`,[`--mantine-color-${name}-light`]:alpha$1(theme2.colors[color2][Math.max(0,primaryShade-2)],.15),[`--mantine-color-${name}-light-hover`]:alpha$1(theme2.colors[color2][Math.max(0,primaryShade-2)],.2),[`--mantine-color-${name}-light-color`]:`var(--mantine-color-${name}-${Math.max(primaryShade-5,0)})`,[`--mantine-color-${name}-outline`]:`var(--mantine-color-${name}-${Math.max(primaryShade-4,0)})`,[`--mantine-color-${name}-outline-hover`]:alpha$1(theme2.colors[color2][Math.max(primaryShade-4,0)],.05)};return withColorValues?{[`--mantine-color-${name}-0`]:theme2.colors[color2][0],[`--mantine-color-${name}-1`]:theme2.colors[color2][1],[`--mantine-color-${name}-2`]:theme2.colors[color2][2],[`--mantine-color-${name}-3`]:theme2.colors[color2][3],[`--mantine-color-${name}-4`]:theme2.colors[color2][4],[`--mantine-color-${name}-5`]:theme2.colors[color2][5],[`--mantine-color-${name}-6`]:theme2.colors[color2][6],[`--mantine-color-${name}-7`]:theme2.colors[color2][7],[`--mantine-color-${name}-8`]:theme2.colors[color2][8],[`--mantine-color-${name}-9`]:theme2.colors[color2][9],...dynamicVariables}:dynamicVariables}function isVirtualColor(value){return!!value&&typeof value=="object"&&"mantine-virtual-color"in value}function assignSizeVariables(variables,sizes,name){keys$1(sizes).forEach(size2=>Object.assign(variables,{[`--mantine-${name}-${size2}`]:sizes[size2]}))}const defaultCssVariablesResolver=theme2=>{const lightPrimaryShade=getPrimaryShade(theme2,"light"),defaultRadius=theme2.defaultRadius in theme2.radius?theme2.radius[theme2.defaultRadius]:rem(theme2.defaultRadius),result={variables:{"--mantine-scale":theme2.scale.toString(),"--mantine-cursor-type":theme2.cursorType,"--mantine-color-scheme":"light dark","--mantine-webkit-font-smoothing":theme2.fontSmoothing?"antialiased":"unset","--mantine-moz-font-smoothing":theme2.fontSmoothing?"grayscale":"unset","--mantine-color-white":theme2.white,"--mantine-color-black":theme2.black,"--mantine-line-height":theme2.lineHeights.md,"--mantine-font-family":theme2.fontFamily,"--mantine-font-family-monospace":theme2.fontFamilyMonospace,"--mantine-font-family-headings":theme2.headings.fontFamily,"--mantine-heading-font-weight":theme2.headings.fontWeight,"--mantine-heading-text-wrap":theme2.headings.textWrap,"--mantine-radius-default":defaultRadius,"--mantine-primary-color-filled":`var(--mantine-color-${theme2.primaryColor}-filled)`,"--mantine-primary-color-filled-hover":`var(--mantine-color-${theme2.primaryColor}-filled-hover)`,"--mantine-primary-color-light":`var(--mantine-color-${theme2.primaryColor}-light)`,"--mantine-primary-color-light-hover":`var(--mantine-color-${theme2.primaryColor}-light-hover)`,"--mantine-primary-color-light-color":`var(--mantine-color-${theme2.primaryColor}-light-color)`},light:{"--mantine-primary-color-contrast":getPrimaryContrastColor(theme2,"light"),"--mantine-color-bright":"var(--mantine-color-black)","--mantine-color-text":theme2.black,"--mantine-color-body":theme2.white,"--mantine-color-error":"var(--mantine-color-red-6)","--mantine-color-placeholder":"var(--mantine-color-gray-5)","--mantine-color-anchor":`var(--mantine-color-${theme2.primaryColor}-${lightPrimaryShade})`,"--mantine-color-default":"var(--mantine-color-white)","--mantine-color-default-hover":"var(--mantine-color-gray-0)","--mantine-color-default-color":"var(--mantine-color-black)","--mantine-color-default-border":"var(--mantine-color-gray-4)","--mantine-color-dimmed":"var(--mantine-color-gray-6)"},dark:{"--mantine-primary-color-contrast":getPrimaryContrastColor(theme2,"dark"),"--mantine-color-bright":"var(--mantine-color-white)","--mantine-color-text":"var(--mantine-color-dark-0)","--mantine-color-body":"var(--mantine-color-dark-7)","--mantine-color-error":"var(--mantine-color-red-8)","--mantine-color-placeholder":"var(--mantine-color-dark-3)","--mantine-color-anchor":`var(--mantine-color-${theme2.primaryColor}-4)`,"--mantine-color-default":"var(--mantine-color-dark-6)","--mantine-color-default-hover":"var(--mantine-color-dark-5)","--mantine-color-default-color":"var(--mantine-color-white)","--mantine-color-default-border":"var(--mantine-color-dark-4)","--mantine-color-dimmed":"var(--mantine-color-dark-2)"}};assignSizeVariables(result.variables,theme2.breakpoints,"breakpoint"),assignSizeVariables(result.variables,theme2.spacing,"spacing"),assignSizeVariables(result.variables,theme2.fontSizes,"font-size"),assignSizeVariables(result.variables,theme2.lineHeights,"line-height"),assignSizeVariables(result.variables,theme2.shadows,"shadow"),assignSizeVariables(result.variables,theme2.radius,"radius"),theme2.colors[theme2.primaryColor].forEach((_,index2)=>{result.variables[`--mantine-primary-color-${index2}`]=`var(--mantine-color-${theme2.primaryColor}-${index2})`}),keys$1(theme2.colors).forEach(color2=>{const value=theme2.colors[color2];if(isVirtualColor(value)){Object.assign(result.light,getCSSColorVariables({theme:theme2,name:value.name,color:value.light,colorScheme:"light",withColorValues:!0})),Object.assign(result.dark,getCSSColorVariables({theme:theme2,name:value.name,color:value.dark,colorScheme:"dark",withColorValues:!0}));return}value.forEach((shade,index2)=>{result.variables[`--mantine-color-${color2}-${index2}`]=shade}),Object.assign(result.light,getCSSColorVariables({theme:theme2,color:color2,colorScheme:"light",withColorValues:!1})),Object.assign(result.dark,getCSSColorVariables({theme:theme2,color:color2,colorScheme:"dark",withColorValues:!1}))});const headings2=theme2.headings.sizes;return keys$1(headings2).forEach(heading=>{result.variables[`--mantine-${heading}-font-size`]=headings2[heading].fontSize,result.variables[`--mantine-${heading}-line-height`]=headings2[heading].lineHeight,result.variables[`--mantine-${heading}-font-weight`]=headings2[heading].fontWeight||theme2.headings.fontWeight}),result};function getMergedVariables({theme:theme2,generator}){const defaultResolver=defaultCssVariablesResolver(theme2),providerGenerator=generator?.(theme2);return providerGenerator?deepMerge(defaultResolver,providerGenerator):defaultResolver}const defaultCssVariables=defaultCssVariablesResolver(DEFAULT_THEME);function removeDefaultVariables(input){const cleaned={variables:{},light:{},dark:{}};return keys$1(input.variables).forEach(key=>{defaultCssVariables.variables[key]!==input.variables[key]&&(cleaned.variables[key]=input.variables[key])}),keys$1(input.light).forEach(key=>{defaultCssVariables.light[key]!==input.light[key]&&(cleaned.light[key]=input.light[key])}),keys$1(input.dark).forEach(key=>{defaultCssVariables.dark[key]!==input.dark[key]&&(cleaned.dark[key]=input.dark[key])}),cleaned}function getColorSchemeCssVariables(selector2){return`
|
|
42
|
+
${selector2}[data-mantine-color-scheme="dark"] { --mantine-color-scheme: dark; }
|
|
43
|
+
${selector2}[data-mantine-color-scheme="light"] { --mantine-color-scheme: light; }
|
|
44
|
+
`}function MantineCssVariables({cssVariablesSelector,deduplicateCssVariables}){const theme2=useMantineTheme(),nonce=useMantineStyleNonce(),generator=useMantineCssVariablesResolver(),mergedVariables=getMergedVariables({theme:theme2,generator}),shouldCleanVariables=cssVariablesSelector===":root"&&deduplicateCssVariables,cleanedVariables=shouldCleanVariables?removeDefaultVariables(mergedVariables):mergedVariables,css=convertCssVariables(cleanedVariables,cssVariablesSelector);return css?jsx("style",{"data-mantine-styles":!0,nonce:nonce?.(),dangerouslySetInnerHTML:{__html:`${css}${shouldCleanVariables?"":getColorSchemeCssVariables(cssVariablesSelector)}`}}):null}MantineCssVariables.displayName="@mantine/CssVariables";function suppressNextjsWarning(){const originalError=console.error;console.error=(...args)=>{args.length>1&&typeof args[0]=="string"&&args[0].toLowerCase().includes("extra attributes from the server")&&typeof args[1]=="string"&&args[1].toLowerCase().includes("data-mantine-color-scheme")||originalError(...args)}}function setColorSchemeAttribute(colorScheme,getRootElement){const computedColorScheme=colorScheme!=="auto"?colorScheme:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";getRootElement()?.setAttribute("data-mantine-color-scheme",computedColorScheme)}function useProviderColorScheme({manager,defaultColorScheme,getRootElement,forceColorScheme}){const media=useRef$1(),[value,setValue]=useState$1(()=>manager.get(defaultColorScheme)),colorSchemeValue=forceColorScheme||value,setColorScheme=useCallback$1(colorScheme=>{forceColorScheme||(setColorSchemeAttribute(colorScheme,getRootElement),setValue(colorScheme),manager.set(colorScheme))},[manager.set,colorSchemeValue,forceColorScheme]),clearColorScheme=useCallback$1(()=>{setValue(defaultColorScheme),setColorSchemeAttribute(defaultColorScheme,getRootElement),manager.clear()},[manager.clear,defaultColorScheme]);return useEffect$1(()=>(manager.subscribe(setColorScheme),manager.unsubscribe),[manager.subscribe,manager.unsubscribe]),useIsomorphicEffect(()=>{setColorSchemeAttribute(manager.get(defaultColorScheme),getRootElement)},[]),useEffect$1(()=>{if(forceColorScheme)return setColorSchemeAttribute(forceColorScheme,getRootElement),()=>{};forceColorScheme===void 0&&setColorSchemeAttribute(value,getRootElement),media.current=window.matchMedia("(prefers-color-scheme: dark)");const listener=event=>{value==="auto"&&setColorSchemeAttribute(event.matches?"dark":"light",getRootElement)};return media.current?.addEventListener("change",listener),()=>media.current?.removeEventListener("change",listener)},[value,forceColorScheme]),{colorScheme:colorSchemeValue,setColorScheme,clearColorScheme}}function useRespectReduceMotion({respectReducedMotion,getRootElement}){useIsomorphicEffect(()=>{respectReducedMotion&&getRootElement()?.setAttribute("data-respect-reduced-motion","true")},[respectReducedMotion])}suppressNextjsWarning();function MantineProvider({theme:theme2,children:children2,getStyleNonce,withStaticClasses=!0,withGlobalClasses=!0,deduplicateCssVariables=!0,withCssVariables=!0,cssVariablesSelector=":root",classNamesPrefix="mantine",colorSchemeManager=localStorageColorSchemeManager(),defaultColorScheme="light",getRootElement=()=>document.documentElement,cssVariablesResolver,forceColorScheme,stylesTransform}){const{colorScheme,setColorScheme,clearColorScheme}=useProviderColorScheme({defaultColorScheme,forceColorScheme,manager:colorSchemeManager,getRootElement});return useRespectReduceMotion({respectReducedMotion:theme2?.respectReducedMotion||!1,getRootElement}),jsx(MantineContext.Provider,{value:{colorScheme,setColorScheme,clearColorScheme,getRootElement,classNamesPrefix,getStyleNonce,cssVariablesResolver,cssVariablesSelector,withStaticClasses,stylesTransform},children:jsxs(MantineThemeProvider,{theme:theme2,children:[withCssVariables&&jsx(MantineCssVariables,{cssVariablesSelector,deduplicateCssVariables}),withGlobalClasses&&jsx(MantineClasses,{}),children2]})})}MantineProvider.displayName="@mantine/core/MantineProvider";function useResolvedStylesApi({classNames,styles,props:props2,stylesCtx}){const theme2=useMantineTheme();return{resolvedClassNames:resolveClassNames({theme:theme2,classNames,props:props2,stylesCtx:stylesCtx||void 0}),resolvedStyles:resolveStyles({theme:theme2,styles,props:props2,stylesCtx:stylesCtx||void 0})}}const FOCUS_CLASS_NAMES={always:"mantine-focus-always",auto:"mantine-focus-auto",never:"mantine-focus-never"};function getGlobalClassNames({theme:theme2,options,unstyled}){return clsx(options?.focusable&&!unstyled&&(theme2.focusClassName||FOCUS_CLASS_NAMES[theme2.focusRing]),options?.active&&!unstyled&&theme2.activeClassName)}function getOptionsClassNames({selector:selector2,stylesCtx,options,props:props2,theme:theme2}){return resolveClassNames({theme:theme2,classNames:options?.classNames,props:options?.props||props2,stylesCtx})[selector2]}function getResolvedClassNames({selector:selector2,stylesCtx,theme:theme2,classNames,props:props2}){return resolveClassNames({theme:theme2,classNames,props:props2,stylesCtx})[selector2]}function getRootClassName({rootSelector,selector:selector2,className}){return rootSelector===selector2?className:void 0}function getSelectorClassName({selector:selector2,classes,unstyled}){return unstyled?void 0:classes[selector2]}function getStaticClassNames({themeName,classNamesPrefix,selector:selector2,withStaticClass}){return withStaticClass===!1?[]:themeName.map(n2=>`${classNamesPrefix}-${n2}-${selector2}`)}function getThemeClassNames({themeName,theme:theme2,selector:selector2,props:props2,stylesCtx}){return themeName.map(n2=>resolveClassNames({theme:theme2,classNames:theme2.components[n2]?.classNames,props:props2,stylesCtx})?.[selector2])}function getVariantClassName({options,classes,selector:selector2,unstyled}){return options?.variant&&!unstyled?classes[`${selector2}--${options.variant}`]:void 0}function getClassName({theme:theme2,options,themeName,selector:selector2,classNamesPrefix,classNames,classes,unstyled,className,rootSelector,props:props2,stylesCtx,withStaticClasses,headless,transformedStyles}){return clsx(getGlobalClassNames({theme:theme2,options,unstyled:unstyled||headless}),getThemeClassNames({theme:theme2,themeName,selector:selector2,props:props2,stylesCtx}),getVariantClassName({options,classes,selector:selector2,unstyled}),getResolvedClassNames({selector:selector2,stylesCtx,theme:theme2,classNames,props:props2}),getResolvedClassNames({selector:selector2,stylesCtx,theme:theme2,classNames:transformedStyles,props:props2}),getOptionsClassNames({selector:selector2,stylesCtx,options,props:props2,theme:theme2}),getRootClassName({rootSelector,selector:selector2,className}),getSelectorClassName({selector:selector2,classes,unstyled:unstyled||headless}),withStaticClasses&&!headless&&getStaticClassNames({themeName,classNamesPrefix,selector:selector2,withStaticClass:options?.withStaticClass}),options?.className)}function getThemeStyles({theme:theme2,themeName,props:props2,stylesCtx,selector:selector2}){return themeName.map(n2=>resolveStyles({theme:theme2,styles:theme2.components[n2]?.styles,props:props2,stylesCtx})[selector2]).reduce((acc,val)=>({...acc,...val}),{})}function resolveStyle({style:style2,theme:theme2}){return Array.isArray(style2)?[...style2].reduce((acc,item)=>({...acc,...resolveStyle({style:item,theme:theme2})}),{}):typeof style2=="function"?style2(theme2):style2??{}}function mergeVars(vars){return vars.reduce((acc,current)=>(current&&Object.keys(current).forEach(key=>{acc[key]={...acc[key],...filterProps$1(current[key])}}),acc),{})}function resolveVars({vars,varsResolver:varsResolver2,theme:theme2,props:props2,stylesCtx,selector:selector2,themeName,headless}){return mergeVars([headless?{}:varsResolver2?.(theme2,props2,stylesCtx),...themeName.map(name=>theme2.components?.[name]?.vars?.(theme2,props2,stylesCtx)),vars?.(theme2,props2,stylesCtx)])?.[selector2]}function getStyle({theme:theme2,themeName,selector:selector2,options,props:props2,stylesCtx,rootSelector,styles,style:style2,vars,varsResolver:varsResolver2,headless,withStylesTransform}){return{...!withStylesTransform&&getThemeStyles({theme:theme2,themeName,props:props2,stylesCtx,selector:selector2}),...!withStylesTransform&&resolveStyles({theme:theme2,styles,props:props2,stylesCtx})[selector2],...!withStylesTransform&&resolveStyles({theme:theme2,styles:options?.styles,props:options?.props||props2,stylesCtx})[selector2],...resolveVars({theme:theme2,props:props2,stylesCtx,vars,varsResolver:varsResolver2,selector:selector2,themeName,headless}),...rootSelector===selector2?resolveStyle({style:style2,theme:theme2}):null,...resolveStyle({style:options?.style,theme:theme2})}}function useStylesTransform({props:props2,stylesCtx,themeName}){const theme2=useMantineTheme(),stylesTransform=useMantineStylesTransform()?.();return{getTransformedStyles:styles=>stylesTransform?[...styles.map(style2=>stylesTransform(style2,{props:props2,theme:theme2,ctx:stylesCtx})),...themeName.map(n2=>stylesTransform(theme2.components[n2]?.styles,{props:props2,theme:theme2,ctx:stylesCtx}))].filter(Boolean):[],withStylesTransform:!!stylesTransform}}function useStyles({name,classes,props:props2,stylesCtx,className,style:style2,rootSelector="root",unstyled,classNames,styles,vars,varsResolver:varsResolver2}){const theme2=useMantineTheme(),classNamesPrefix=useMantineClassNamesPrefix(),withStaticClasses=useMantineWithStaticClasses(),headless=useMantineIsHeadless(),themeName=(Array.isArray(name)?name:[name]).filter(n2=>n2),{withStylesTransform,getTransformedStyles}=useStylesTransform({props:props2,stylesCtx,themeName});return(selector2,options)=>({className:getClassName({theme:theme2,options,themeName,selector:selector2,classNamesPrefix,classNames,classes,unstyled,className,rootSelector,props:props2,stylesCtx,withStaticClasses,headless,transformedStyles:getTransformedStyles([options?.styles,styles])}),style:getStyle({theme:theme2,themeName,selector:selector2,options,props:props2,stylesCtx,rootSelector,styles,style:style2,vars,varsResolver:varsResolver2,headless,withStylesTransform})})}function getAutoContrastValue(autoContrast,theme2){return typeof autoContrast=="boolean"?autoContrast:theme2.autoContrast}function disableTransition(nonce){const style2=document.createElement("style");return style2.setAttribute("data-mantine-styles","inline"),style2.innerHTML="*, *::before, *::after {transition: none !important;}",style2.setAttribute("data-mantine-disable-transition","true"),nonce&&style2.setAttribute("nonce",nonce),document.head.appendChild(style2),()=>document.querySelectorAll("[data-mantine-disable-transition]").forEach(element=>element.remove())}function useMantineColorScheme({keepTransitions}={}){const clearStylesRef=useRef$1(),timeoutRef=useRef$1(),ctx=useContext$1(MantineContext),nonce=useMantineStyleNonce(),nonceValue=useRef$1(nonce?.());if(!ctx)throw new Error("[@mantine/core] MantineProvider was not found in tree");const setColorScheme=value=>{ctx.setColorScheme(value),clearStylesRef.current=keepTransitions?()=>{}:disableTransition(nonceValue.current),window.clearTimeout(timeoutRef.current),timeoutRef.current=window.setTimeout(()=>{clearStylesRef.current?.()},10)},clearColorScheme=()=>{ctx.clearColorScheme(),clearStylesRef.current=keepTransitions?()=>{}:disableTransition(nonceValue.current),window.clearTimeout(timeoutRef.current),timeoutRef.current=window.setTimeout(()=>{clearStylesRef.current?.()},10)},osColorScheme=useColorScheme("light",{getInitialValueInEffect:!1}),computedColorScheme=ctx.colorScheme==="auto"?osColorScheme:ctx.colorScheme,toggleColorScheme=useCallback$1(()=>setColorScheme(computedColorScheme==="light"?"dark":"light"),[setColorScheme,computedColorScheme]);return useEffect$1(()=>()=>{clearStylesRef.current?.(),window.clearTimeout(timeoutRef.current)},[]),{colorScheme:ctx.colorScheme,setColorScheme,clearColorScheme,toggleColorScheme}}function useComputedColorScheme(defaultValue,options={getInitialValueInEffect:!0}){const osColorScheme=useColorScheme(defaultValue,options),{colorScheme}=useMantineColorScheme();return colorScheme==="auto"?osColorScheme:colorScheme}function useProps(component,defaultProps2,props2){const theme2=useMantineTheme(),contextPropsPayload=theme2.components[component]?.defaultProps,contextProps=typeof contextPropsPayload=="function"?contextPropsPayload(theme2):contextPropsPayload;return{...defaultProps2,...contextProps,...filterProps$1(props2)}}function cssObjectToString(css){return keys$1(css).reduce((acc,rule)=>css[rule]!==void 0?`${acc}${camelToKebabCase(rule)}:${css[rule]};`:acc,"").trim()}function stylesToString({selector:selector2,styles,media,container:container2}){const baseStyles=styles?cssObjectToString(styles):"",mediaQueryStyles=Array.isArray(media)?media.map(item=>`@media${item.query}{${selector2}{${cssObjectToString(item.styles)}}}`):[],containerStyles=Array.isArray(container2)?container2.map(item=>`@container ${item.query}{${selector2}{${cssObjectToString(item.styles)}}}`):[];return`${baseStyles?`${selector2}{${baseStyles}}`:""}${mediaQueryStyles.join("")}${containerStyles.join("")}`.trim()}function InlineStyles(props2){const nonce=useMantineStyleNonce();return jsx("style",{"data-mantine-styles":"inline",nonce:nonce?.(),dangerouslySetInnerHTML:{__html:stylesToString(props2)}})}function extractStyleProps(others){const{m:m2,mx,my,mt,mb,ml,mr,me,ms,p:p2,px:px2,py,pt,pb,pl,pr,pe,ps,bd,bg,c:c2,opacity,ff,fz,fw,lts,ta,lh,fs,tt,td,w:w2,miw,maw,h:h2,mih,mah,bgsz,bgp,bgr,bga,pos,top,left,bottom,right,inset,display,flex,hiddenFrom,visibleFrom,lightHidden,darkHidden,sx,...rest}=others;return{styleProps:filterProps$1({m:m2,mx,my,mt,mb,ml,mr,me,ms,p:p2,px:px2,py,pt,pb,pl,pr,pe,ps,bd,bg,c:c2,opacity,ff,fz,fw,lts,ta,lh,fs,tt,td,w:w2,miw,maw,h:h2,mih,mah,bgsz,bgp,bgr,bga,pos,top,left,bottom,right,inset,display,flex,hiddenFrom,visibleFrom,lightHidden,darkHidden,sx}),rest}}const STYlE_PROPS_DATA={m:{type:"spacing",property:"margin"},mt:{type:"spacing",property:"marginTop"},mb:{type:"spacing",property:"marginBottom"},ml:{type:"spacing",property:"marginLeft"},mr:{type:"spacing",property:"marginRight"},ms:{type:"spacing",property:"marginInlineStart"},me:{type:"spacing",property:"marginInlineEnd"},mx:{type:"spacing",property:"marginInline"},my:{type:"spacing",property:"marginBlock"},p:{type:"spacing",property:"padding"},pt:{type:"spacing",property:"paddingTop"},pb:{type:"spacing",property:"paddingBottom"},pl:{type:"spacing",property:"paddingLeft"},pr:{type:"spacing",property:"paddingRight"},ps:{type:"spacing",property:"paddingInlineStart"},pe:{type:"spacing",property:"paddingInlineEnd"},px:{type:"spacing",property:"paddingInline"},py:{type:"spacing",property:"paddingBlock"},bd:{type:"border",property:"border"},bg:{type:"color",property:"background"},c:{type:"textColor",property:"color"},opacity:{type:"identity",property:"opacity"},ff:{type:"fontFamily",property:"fontFamily"},fz:{type:"fontSize",property:"fontSize"},fw:{type:"identity",property:"fontWeight"},lts:{type:"size",property:"letterSpacing"},ta:{type:"identity",property:"textAlign"},lh:{type:"lineHeight",property:"lineHeight"},fs:{type:"identity",property:"fontStyle"},tt:{type:"identity",property:"textTransform"},td:{type:"identity",property:"textDecoration"},w:{type:"spacing",property:"width"},miw:{type:"spacing",property:"minWidth"},maw:{type:"spacing",property:"maxWidth"},h:{type:"spacing",property:"height"},mih:{type:"spacing",property:"minHeight"},mah:{type:"spacing",property:"maxHeight"},bgsz:{type:"size",property:"backgroundSize"},bgp:{type:"identity",property:"backgroundPosition"},bgr:{type:"identity",property:"backgroundRepeat"},bga:{type:"identity",property:"backgroundAttachment"},pos:{type:"identity",property:"position"},top:{type:"identity",property:"top"},left:{type:"size",property:"left"},bottom:{type:"size",property:"bottom"},right:{type:"size",property:"right"},inset:{type:"size",property:"inset"},display:{type:"identity",property:"display"},flex:{type:"identity",property:"flex"}};function colorResolver(color2,theme2){const parsedColor=parseThemeColor({color:color2,theme:theme2});return parsedColor.color==="dimmed"?"var(--mantine-color-dimmed)":parsedColor.color==="bright"?"var(--mantine-color-bright)":parsedColor.variable?`var(${parsedColor.variable})`:parsedColor.color}function textColorResolver(color2,theme2){const parsedColor=parseThemeColor({color:color2,theme:theme2});return parsedColor.isThemeColor&&parsedColor.shade===void 0?`var(--mantine-color-${parsedColor.color}-text)`:colorResolver(color2,theme2)}function borderResolver(value,theme2){if(typeof value=="number")return rem(value);if(typeof value=="string"){const[size2,style2,...colorTuple]=value.split(" ").filter(val=>val.trim()!=="");let result=`${rem(size2)}`;return style2&&(result+=` ${style2}`),colorTuple.length>0&&(result+=` ${colorResolver(colorTuple.join(" "),theme2)}`),result.trim()}return value}const values={text:"var(--mantine-font-family)",mono:"var(--mantine-font-family-monospace)",monospace:"var(--mantine-font-family-monospace)",heading:"var(--mantine-font-family-headings)",headings:"var(--mantine-font-family-headings)"};function fontFamilyResolver(fontFamily){return typeof fontFamily=="string"&&fontFamily in values?values[fontFamily]:fontFamily}const headings$2=["h1","h2","h3","h4","h5","h6"];function fontSizeResolver(value,theme2){return typeof value=="string"&&value in theme2.fontSizes?`var(--mantine-font-size-${value})`:typeof value=="string"&&headings$2.includes(value)?`var(--mantine-${value}-font-size)`:typeof value=="number"||typeof value=="string"?rem(value):value}function identityResolver(value){return value}const headings$1=["h1","h2","h3","h4","h5","h6"];function lineHeightResolver(value,theme2){return typeof value=="string"&&value in theme2.lineHeights?`var(--mantine-line-height-${value})`:typeof value=="string"&&headings$1.includes(value)?`var(--mantine-${value}-line-height)`:value}function sizeResolver(value){return typeof value=="number"?rem(value):value}function spacingResolver(value,theme2){if(typeof value=="number")return rem(value);if(typeof value=="string"){const mod=value.replace("-","");if(!(mod in theme2.spacing))return rem(value);const variable=`--mantine-spacing-${mod}`;return value.startsWith("-")?`calc(var(${variable}) * -1)`:`var(${variable})`}return value}const resolvers={color:colorResolver,textColor:textColorResolver,fontSize:fontSizeResolver,spacing:spacingResolver,identity:identityResolver,size:sizeResolver,lineHeight:lineHeightResolver,fontFamily:fontFamilyResolver,border:borderResolver};function replaceMediaQuery(query){return query.replace("(min-width: ","").replace("em)","")}function sortMediaQueries({media,...props2}){const sortedMedia=Object.keys(media).sort((a2,b2)=>Number(replaceMediaQuery(a2))-Number(replaceMediaQuery(b2))).map(query=>({query,styles:media[query]}));return{...props2,media:sortedMedia}}function hasResponsiveStyles(styleProp){if(typeof styleProp!="object"||styleProp===null)return!1;const breakpoints=Object.keys(styleProp);return!(breakpoints.length===1&&breakpoints[0]==="base")}function getBaseValue(value){return typeof value=="object"&&value!==null?"base"in value?value.base:void 0:value}function getBreakpointKeys(value){return typeof value=="object"&&value!==null?keys$1(value).filter(key=>key!=="base"):[]}function getBreakpointValue(value,breakpoint){return typeof value=="object"&&value!==null&&breakpoint in value?value[breakpoint]:value}function parseStyleProps({styleProps,data,theme:theme2}){return sortMediaQueries(keys$1(styleProps).reduce((acc,styleProp)=>{if(styleProp==="hiddenFrom"||styleProp==="visibleFrom"||styleProp==="sx")return acc;const propertyData=data[styleProp],properties=Array.isArray(propertyData.property)?propertyData.property:[propertyData.property],baseValue=getBaseValue(styleProps[styleProp]);if(!hasResponsiveStyles(styleProps[styleProp]))return properties.forEach(property=>{acc.inlineStyles[property]=resolvers[propertyData.type](baseValue,theme2)}),acc;acc.hasResponsiveStyles=!0;const breakpoints=getBreakpointKeys(styleProps[styleProp]);return properties.forEach(property=>{baseValue&&(acc.styles[property]=resolvers[propertyData.type](baseValue,theme2)),breakpoints.forEach(breakpoint=>{const bp=`(min-width: ${theme2.breakpoints[breakpoint]})`;acc.media[bp]={...acc.media[bp],[property]:resolvers[propertyData.type](getBreakpointValue(styleProps[styleProp],breakpoint),theme2)}})}),acc},{hasResponsiveStyles:!1,styles:{},inlineStyles:{},media:{}}))}function useRandomClassName(){return`__m__-${useId$3().replace(/:/g,"")}`}function getStyleObject(style2,theme2){return Array.isArray(style2)?[...style2].reduce((acc,item)=>({...acc,...getStyleObject(item,theme2)}),{}):typeof style2=="function"?style2(theme2):style2??{}}function transformModKey(key){return key.startsWith("data-")?key:`data-${key}`}function getMod(props2){return Object.keys(props2).reduce((acc,key)=>{const value=props2[key];return value===void 0||value===""||value===!1||value===null||(acc[transformModKey(key)]=props2[key]),acc},{})}function getBoxMod(mod){return mod?typeof mod=="string"?{[transformModKey(mod)]:!0}:Array.isArray(mod)?[...mod].reduce((acc,value)=>({...acc,...getBoxMod(value)}),{}):getMod(mod):null}function mergeStyles(styles,theme2){return Array.isArray(styles)?[...styles].reduce((acc,item)=>({...acc,...mergeStyles(item,theme2)}),{}):typeof styles=="function"?styles(theme2):styles??{}}function getBoxStyle({theme:theme2,style:style2,vars,styleProps}){const _style=mergeStyles(style2,theme2),_vars=mergeStyles(vars,theme2);return{..._style,..._vars,...styleProps}}const _Box=forwardRef$1(({component,style:style2,__vars,className,variant,mod,size:size2,hiddenFrom,visibleFrom,lightHidden,darkHidden,renderRoot,__size,...others},ref)=>{const theme2=useMantineTheme(),Element2=component||"div",{styleProps,rest}=extractStyleProps(others),transformedSx=useMantineSxTransform()?.()?.(styleProps.sx),responsiveClassName=useRandomClassName(),parsedStyleProps=parseStyleProps({styleProps,theme:theme2,data:STYlE_PROPS_DATA}),props2={ref,style:getBoxStyle({theme:theme2,style:style2,vars:__vars,styleProps:parsedStyleProps.inlineStyles}),className:clsx(className,transformedSx,{[responsiveClassName]:parsedStyleProps.hasResponsiveStyles,"mantine-light-hidden":lightHidden,"mantine-dark-hidden":darkHidden,[`mantine-hidden-from-${hiddenFrom}`]:hiddenFrom,[`mantine-visible-from-${visibleFrom}`]:visibleFrom}),"data-variant":variant,"data-size":isNumberLike(size2)?void 0:size2||void 0,size:__size,...getBoxMod(mod),...rest};return jsxs(Fragment,{children:[parsedStyleProps.hasResponsiveStyles&&jsx(InlineStyles,{selector:`.${responsiveClassName}`,styles:parsedStyleProps.styles,media:parsedStyleProps.media}),typeof renderRoot=="function"?renderRoot(props2):jsx(Element2,{...props2})]})});_Box.displayName="@mantine/core/Box";const Box=_Box;function identity$3(value){return value}function factory(ui){const Component2=forwardRef$1(ui);return Component2.extend=identity$3,Component2.withProps=fixedProps=>{const Extended=forwardRef$1((props2,ref)=>jsx(Component2,{...fixedProps,...props2,ref}));return Extended.extend=Component2.extend,Extended.displayName=`WithProps(${Component2.displayName})`,Extended},Component2}function polymorphicFactory(ui){const Component2=forwardRef$1(ui);return Component2.withProps=fixedProps=>{const Extended=forwardRef$1((props2,ref)=>jsx(Component2,{...fixedProps,...props2,ref}));return Extended.extend=Component2.extend,Extended.displayName=`WithProps(${Component2.displayName})`,Extended},Component2.extend=identity$3,Component2}const DirectionContext=createContext$1({dir:"ltr",toggleDirection:()=>{},setDirection:()=>{}});function useDirection(){return useContext$1(DirectionContext)}const[ScrollAreaProvider,useScrollAreaContext]=createSafeContext("ScrollArea.Root component was not found in tree");function useResizeObserver$1(element,onResize){const handleResize=useCallbackRef(onResize);useIsomorphicEffect(()=>{let rAF=0;if(element){const resizeObserver=new ResizeObserver(()=>{cancelAnimationFrame(rAF),rAF=window.requestAnimationFrame(handleResize)});return resizeObserver.observe(element),()=>{window.cancelAnimationFrame(rAF),resizeObserver.unobserve(element)}}},[element,handleResize])}const Corner=forwardRef$1((props2,ref)=>{const{style:style2,...others}=props2,ctx=useScrollAreaContext(),[width,setWidth]=useState$1(0),[height,setHeight]=useState$1(0),hasSize=!!(width&&height);return useResizeObserver$1(ctx.scrollbarX,()=>{const h2=ctx.scrollbarX?.offsetHeight||0;ctx.onCornerHeightChange(h2),setHeight(h2)}),useResizeObserver$1(ctx.scrollbarY,()=>{const w2=ctx.scrollbarY?.offsetWidth||0;ctx.onCornerWidthChange(w2),setWidth(w2)}),hasSize?jsx("div",{...others,ref,style:{...style2,width,height}}):null}),ScrollAreaCorner=forwardRef$1((props2,ref)=>{const ctx=useScrollAreaContext(),hasBothScrollbarsVisible=!!(ctx.scrollbarX&&ctx.scrollbarY);return ctx.type!=="scroll"&&hasBothScrollbarsVisible?jsx(Corner,{...props2,ref}):null}),defaultProps$1m={scrollHideDelay:1e3,type:"hover"},ScrollAreaRoot=forwardRef$1((_props,ref)=>{const props2=useProps("ScrollAreaRoot",defaultProps$1m,_props),{type,scrollHideDelay,scrollbars,...others}=props2,[scrollArea,setScrollArea]=useState$1(null),[viewport,setViewport]=useState$1(null),[content2,setContent]=useState$1(null),[scrollbarX,setScrollbarX]=useState$1(null),[scrollbarY,setScrollbarY]=useState$1(null),[cornerWidth,setCornerWidth]=useState$1(0),[cornerHeight,setCornerHeight]=useState$1(0),[scrollbarXEnabled,setScrollbarXEnabled]=useState$1(!1),[scrollbarYEnabled,setScrollbarYEnabled]=useState$1(!1),rootRef=useMergedRef(ref,node=>setScrollArea(node));return jsx(ScrollAreaProvider,{value:{type,scrollHideDelay,scrollArea,viewport,onViewportChange:setViewport,content:content2,onContentChange:setContent,scrollbarX,onScrollbarXChange:setScrollbarX,scrollbarXEnabled,onScrollbarXEnabledChange:setScrollbarXEnabled,scrollbarY,onScrollbarYChange:setScrollbarY,scrollbarYEnabled,onScrollbarYEnabledChange:setScrollbarYEnabled,onCornerWidthChange:setCornerWidth,onCornerHeightChange:setCornerHeight},children:jsx(Box,{...others,ref:rootRef,__vars:{"--sa-corner-width":scrollbars!=="xy"?"0px":`${cornerWidth}px`,"--sa-corner-height":scrollbars!=="xy"?"0px":`${cornerHeight}px`}})})});ScrollAreaRoot.displayName="@mantine/core/ScrollAreaRoot";function getThumbRatio(viewportSize,contentSize){const ratio=viewportSize/contentSize;return Number.isNaN(ratio)?0:ratio}function getThumbSize(sizes){const ratio=getThumbRatio(sizes.viewport,sizes.content),scrollbarPadding=sizes.scrollbar.paddingStart+sizes.scrollbar.paddingEnd,thumbSize=(sizes.scrollbar.size-scrollbarPadding)*ratio;return Math.max(thumbSize,18)}function linearScale(input,output){return value=>{if(input[0]===input[1]||output[0]===output[1])return output[0];const ratio=(output[1]-output[0])/(input[1]-input[0]);return output[0]+ratio*(value-input[0])}}function clamp$3(value,[min2,max2]){return Math.min(max2,Math.max(min2,value))}function getThumbOffsetFromScroll(scrollPos,sizes,dir="ltr"){const thumbSizePx=getThumbSize(sizes),scrollbarPadding=sizes.scrollbar.paddingStart+sizes.scrollbar.paddingEnd,scrollbar=sizes.scrollbar.size-scrollbarPadding,maxScrollPos=sizes.content-sizes.viewport,maxThumbPos=scrollbar-thumbSizePx,scrollClampRange=dir==="ltr"?[0,maxScrollPos]:[maxScrollPos*-1,0],scrollWithoutMomentum=clamp$3(scrollPos,scrollClampRange);return linearScale([0,maxScrollPos],[0,maxThumbPos])(scrollWithoutMomentum)}function getScrollPositionFromPointer(pointerPos,pointerOffset,sizes,dir="ltr"){const thumbSizePx=getThumbSize(sizes),thumbCenter=thumbSizePx/2,offset2=pointerOffset||thumbCenter,thumbOffsetFromEnd=thumbSizePx-offset2,minPointerPos=sizes.scrollbar.paddingStart+offset2,maxPointerPos=sizes.scrollbar.size-sizes.scrollbar.paddingEnd-thumbOffsetFromEnd,maxScrollPos=sizes.content-sizes.viewport,scrollRange=dir==="ltr"?[0,maxScrollPos]:[maxScrollPos*-1,0];return linearScale([minPointerPos,maxPointerPos],scrollRange)(pointerPos)}function isScrollingWithinScrollbarBounds(scrollPos,maxScrollPos){return scrollPos>0&&scrollPos<maxScrollPos}function toInt(value){return value?parseInt(value,10):0}function composeEventHandlers(originalEventHandler,ourEventHandler,{checkForDefaultPrevented=!0}={}){return event=>{originalEventHandler?.(event),(checkForDefaultPrevented===!1||!event.defaultPrevented)&&ourEventHandler?.(event)}}const[ScrollbarProvider,useScrollbarContext]=createSafeContext("ScrollAreaScrollbar was not found in tree"),Scrollbar=forwardRef$1((props2,forwardedRef)=>{const{sizes,hasThumb,onThumbChange,onThumbPointerUp,onThumbPointerDown,onThumbPositionChange,onDragScroll,onWheelScroll,onResize,...scrollbarProps}=props2,context=useScrollAreaContext(),[scrollbar,setScrollbar]=useState$1(null),composeRefs=useMergedRef(forwardedRef,node=>setScrollbar(node)),rectRef=useRef$1(null),prevWebkitUserSelectRef=useRef$1(""),{viewport}=context,maxScrollPos=sizes.content-sizes.viewport,handleWheelScroll=useCallbackRef(onWheelScroll),handleThumbPositionChange=useCallbackRef(onThumbPositionChange),handleResize=useDebouncedCallback$1(onResize,10),handleDragScroll=event=>{if(rectRef.current){const x2=event.clientX-rectRef.current.left,y2=event.clientY-rectRef.current.top;onDragScroll({x:x2,y:y2})}};return useEffect$1(()=>{const handleWheel=event=>{const element=event.target;scrollbar?.contains(element)&&handleWheelScroll(event,maxScrollPos)};return document.addEventListener("wheel",handleWheel,{passive:!1}),()=>document.removeEventListener("wheel",handleWheel,{passive:!1})},[viewport,scrollbar,maxScrollPos,handleWheelScroll]),useEffect$1(handleThumbPositionChange,[sizes,handleThumbPositionChange]),useResizeObserver$1(scrollbar,handleResize),useResizeObserver$1(context.content,handleResize),jsx(ScrollbarProvider,{value:{scrollbar,hasThumb,onThumbChange:useCallbackRef(onThumbChange),onThumbPointerUp:useCallbackRef(onThumbPointerUp),onThumbPositionChange:handleThumbPositionChange,onThumbPointerDown:useCallbackRef(onThumbPointerDown)},children:jsx("div",{...scrollbarProps,ref:composeRefs,"data-mantine-scrollbar":!0,style:{position:"absolute",...scrollbarProps.style},onPointerDown:composeEventHandlers(props2.onPointerDown,event=>{event.preventDefault(),event.button===0&&(event.target.setPointerCapture(event.pointerId),rectRef.current=scrollbar.getBoundingClientRect(),prevWebkitUserSelectRef.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",document.body.style.pointerEvents="none",handleDragScroll(event))}),onPointerMove:composeEventHandlers(props2.onPointerMove,handleDragScroll),onPointerUp:composeEventHandlers(props2.onPointerUp,event=>{event.preventDefault();const element=event.target;element.hasPointerCapture(event.pointerId)&&element.releasePointerCapture(event.pointerId),document.body.style.webkitUserSelect=prevWebkitUserSelectRef.current,document.body.style.pointerEvents="auto",rectRef.current=null})})})}),ScrollAreaScrollbarX=forwardRef$1((props2,forwardedRef)=>{const{sizes,onSizesChange,style:style2,...others}=props2,ctx=useScrollAreaContext(),[computedStyle,setComputedStyle]=useState$1(),ref=useRef$1(null),composeRefs=useMergedRef(forwardedRef,ref,ctx.onScrollbarXChange);return useEffect$1(()=>{ref.current&&setComputedStyle(getComputedStyle(ref.current))},[ref]),jsx(Scrollbar,{"data-orientation":"horizontal",...others,ref:composeRefs,sizes,style:{...style2,"--sa-thumb-width":`${getThumbSize(sizes)}px`},onThumbPointerDown:pointerPos=>props2.onThumbPointerDown(pointerPos.x),onDragScroll:pointerPos=>props2.onDragScroll(pointerPos.x),onWheelScroll:(event,maxScrollPos)=>{if(ctx.viewport){const scrollPos=ctx.viewport.scrollLeft+event.deltaX;props2.onWheelScroll(scrollPos),isScrollingWithinScrollbarBounds(scrollPos,maxScrollPos)&&event.preventDefault()}},onResize:()=>{ref.current&&ctx.viewport&&computedStyle&&onSizesChange({content:ctx.viewport.scrollWidth,viewport:ctx.viewport.offsetWidth,scrollbar:{size:ref.current.clientWidth,paddingStart:toInt(computedStyle.paddingLeft),paddingEnd:toInt(computedStyle.paddingRight)}})}})}),ScrollAreaScrollbarY=forwardRef$1((props2,forwardedRef)=>{const{sizes,onSizesChange,style:style2,...others}=props2,context=useScrollAreaContext(),[computedStyle,setComputedStyle]=useState$1(),ref=useRef$1(null),composeRefs=useMergedRef(forwardedRef,ref,context.onScrollbarYChange);return useEffect$1(()=>{ref.current&&setComputedStyle(window.getComputedStyle(ref.current))},[]),jsx(Scrollbar,{...others,"data-orientation":"vertical",ref:composeRefs,sizes,style:{"--sa-thumb-height":`${getThumbSize(sizes)}px`,...style2},onThumbPointerDown:pointerPos=>props2.onThumbPointerDown(pointerPos.y),onDragScroll:pointerPos=>props2.onDragScroll(pointerPos.y),onWheelScroll:(event,maxScrollPos)=>{if(context.viewport){const scrollPos=context.viewport.scrollTop+event.deltaY;props2.onWheelScroll(scrollPos),isScrollingWithinScrollbarBounds(scrollPos,maxScrollPos)&&event.preventDefault()}},onResize:()=>{ref.current&&context.viewport&&computedStyle&&onSizesChange({content:context.viewport.scrollHeight,viewport:context.viewport.offsetHeight,scrollbar:{size:ref.current.clientHeight,paddingStart:toInt(computedStyle.paddingTop),paddingEnd:toInt(computedStyle.paddingBottom)}})}})}),ScrollAreaScrollbarVisible=forwardRef$1((props2,forwardedRef)=>{const{orientation="vertical",...scrollbarProps}=props2,{dir}=useDirection(),context=useScrollAreaContext(),thumbRef=useRef$1(null),pointerOffsetRef=useRef$1(0),[sizes,setSizes]=useState$1({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),thumbRatio=getThumbRatio(sizes.viewport,sizes.content),commonProps={...scrollbarProps,sizes,onSizesChange:setSizes,hasThumb:thumbRatio>0&&thumbRatio<1,onThumbChange:thumb=>{thumbRef.current=thumb},onThumbPointerUp:()=>{pointerOffsetRef.current=0},onThumbPointerDown:pointerPos=>{pointerOffsetRef.current=pointerPos}},getScrollPosition=(pointerPos,direction)=>getScrollPositionFromPointer(pointerPos,pointerOffsetRef.current,sizes,direction);return orientation==="horizontal"?jsx(ScrollAreaScrollbarX,{...commonProps,ref:forwardedRef,onThumbPositionChange:()=>{if(context.viewport&&thumbRef.current){const scrollPos=context.viewport.scrollLeft,offset2=getThumbOffsetFromScroll(scrollPos,sizes,dir);thumbRef.current.style.transform=`translate3d(${offset2}px, 0, 0)`}},onWheelScroll:scrollPos=>{context.viewport&&(context.viewport.scrollLeft=scrollPos)},onDragScroll:pointerPos=>{context.viewport&&(context.viewport.scrollLeft=getScrollPosition(pointerPos,dir))}}):orientation==="vertical"?jsx(ScrollAreaScrollbarY,{...commonProps,ref:forwardedRef,onThumbPositionChange:()=>{if(context.viewport&&thumbRef.current){const scrollPos=context.viewport.scrollTop,offset2=getThumbOffsetFromScroll(scrollPos,sizes);sizes.scrollbar.size===0?thumbRef.current.style.opacity="0":thumbRef.current.style.opacity="1",thumbRef.current.style.transform=`translate3d(0, ${offset2}px, 0)`}},onWheelScroll:scrollPos=>{context.viewport&&(context.viewport.scrollTop=scrollPos)},onDragScroll:pointerPos=>{context.viewport&&(context.viewport.scrollTop=getScrollPosition(pointerPos))}}):null}),ScrollAreaScrollbarAuto=forwardRef$1((props2,ref)=>{const context=useScrollAreaContext(),{forceMount,...scrollbarProps}=props2,[visible2,setVisible]=useState$1(!1),isHorizontal=props2.orientation==="horizontal",handleResize=useDebouncedCallback$1(()=>{if(context.viewport){const isOverflowX=context.viewport.offsetWidth<context.viewport.scrollWidth,isOverflowY=context.viewport.offsetHeight<context.viewport.scrollHeight;setVisible(isHorizontal?isOverflowX:isOverflowY)}},10);return useResizeObserver$1(context.viewport,handleResize),useResizeObserver$1(context.content,handleResize),forceMount||visible2?jsx(ScrollAreaScrollbarVisible,{"data-state":visible2?"visible":"hidden",...scrollbarProps,ref}):null}),ScrollAreaScrollbarHover=forwardRef$1((props2,ref)=>{const{forceMount,...scrollbarProps}=props2,context=useScrollAreaContext(),[visible2,setVisible]=useState$1(!1);return useEffect$1(()=>{const{scrollArea}=context;let hideTimer=0;if(scrollArea){const handlePointerEnter=()=>{window.clearTimeout(hideTimer),setVisible(!0)},handlePointerLeave=()=>{hideTimer=window.setTimeout(()=>setVisible(!1),context.scrollHideDelay)};return scrollArea.addEventListener("pointerenter",handlePointerEnter),scrollArea.addEventListener("pointerleave",handlePointerLeave),()=>{window.clearTimeout(hideTimer),scrollArea.removeEventListener("pointerenter",handlePointerEnter),scrollArea.removeEventListener("pointerleave",handlePointerLeave)}}},[context.scrollArea,context.scrollHideDelay]),forceMount||visible2?jsx(ScrollAreaScrollbarAuto,{"data-state":visible2?"visible":"hidden",...scrollbarProps,ref}):null}),ScrollAreaScrollbarScroll=forwardRef$1((props2,red)=>{const{forceMount,...scrollbarProps}=props2,context=useScrollAreaContext(),isHorizontal=props2.orientation==="horizontal",[state,setState]=useState$1("hidden"),debounceScrollEnd=useDebouncedCallback$1(()=>setState("idle"),100);return useEffect$1(()=>{if(state==="idle"){const hideTimer=window.setTimeout(()=>setState("hidden"),context.scrollHideDelay);return()=>window.clearTimeout(hideTimer)}},[state,context.scrollHideDelay]),useEffect$1(()=>{const{viewport}=context,scrollDirection=isHorizontal?"scrollLeft":"scrollTop";if(viewport){let prevScrollPos=viewport[scrollDirection];const handleScroll2=()=>{const scrollPos=viewport[scrollDirection];prevScrollPos!==scrollPos&&(setState("scrolling"),debounceScrollEnd()),prevScrollPos=scrollPos};return viewport.addEventListener("scroll",handleScroll2),()=>viewport.removeEventListener("scroll",handleScroll2)}},[context.viewport,isHorizontal,debounceScrollEnd]),forceMount||state!=="hidden"?jsx(ScrollAreaScrollbarVisible,{"data-state":state==="hidden"?"hidden":"visible",...scrollbarProps,ref:red,onPointerEnter:composeEventHandlers(props2.onPointerEnter,()=>setState("interacting")),onPointerLeave:composeEventHandlers(props2.onPointerLeave,()=>setState("idle"))}):null}),ScrollAreaScrollbar=forwardRef$1((props2,forwardedRef)=>{const{forceMount,...scrollbarProps}=props2,context=useScrollAreaContext(),{onScrollbarXEnabledChange,onScrollbarYEnabledChange}=context,isHorizontal=props2.orientation==="horizontal";return useEffect$1(()=>(isHorizontal?onScrollbarXEnabledChange(!0):onScrollbarYEnabledChange(!0),()=>{isHorizontal?onScrollbarXEnabledChange(!1):onScrollbarYEnabledChange(!1)}),[isHorizontal,onScrollbarXEnabledChange,onScrollbarYEnabledChange]),context.type==="hover"?jsx(ScrollAreaScrollbarHover,{...scrollbarProps,ref:forwardedRef,forceMount}):context.type==="scroll"?jsx(ScrollAreaScrollbarScroll,{...scrollbarProps,ref:forwardedRef,forceMount}):context.type==="auto"?jsx(ScrollAreaScrollbarAuto,{...scrollbarProps,ref:forwardedRef,forceMount}):context.type==="always"?jsx(ScrollAreaScrollbarVisible,{...scrollbarProps,ref:forwardedRef}):null});function addUnlinkedScrollListener(node,handler=()=>{}){let prevPosition={left:node.scrollLeft,top:node.scrollTop},rAF=0;return function loop(){const position={left:node.scrollLeft,top:node.scrollTop},isHorizontalScroll=prevPosition.left!==position.left,isVerticalScroll=prevPosition.top!==position.top;(isHorizontalScroll||isVerticalScroll)&&handler(),prevPosition=position,rAF=window.requestAnimationFrame(loop)}(),()=>window.cancelAnimationFrame(rAF)}const Thumb$1=forwardRef$1((props2,forwardedRef)=>{const{style:style2,...others}=props2,scrollAreaContext=useScrollAreaContext(),scrollbarContext=useScrollbarContext(),{onThumbPositionChange}=scrollbarContext,composedRef=useMergedRef(forwardedRef,node=>scrollbarContext.onThumbChange(node)),removeUnlinkedScrollListenerRef=useRef$1(),debounceScrollEnd=useDebouncedCallback$1(()=>{removeUnlinkedScrollListenerRef.current&&(removeUnlinkedScrollListenerRef.current(),removeUnlinkedScrollListenerRef.current=void 0)},100);return useEffect$1(()=>{const{viewport}=scrollAreaContext;if(viewport){const handleScroll2=()=>{if(debounceScrollEnd(),!removeUnlinkedScrollListenerRef.current){const listener=addUnlinkedScrollListener(viewport,onThumbPositionChange);removeUnlinkedScrollListenerRef.current=listener,onThumbPositionChange()}};return onThumbPositionChange(),viewport.addEventListener("scroll",handleScroll2),()=>viewport.removeEventListener("scroll",handleScroll2)}},[scrollAreaContext.viewport,debounceScrollEnd,onThumbPositionChange]),jsx("div",{"data-state":scrollbarContext.hasThumb?"visible":"hidden",...others,ref:composedRef,style:{width:"var(--sa-thumb-width)",height:"var(--sa-thumb-height)",...style2},onPointerDownCapture:composeEventHandlers(props2.onPointerDownCapture,event=>{const thumbRect=event.target.getBoundingClientRect(),x2=event.clientX-thumbRect.left,y2=event.clientY-thumbRect.top;scrollbarContext.onThumbPointerDown({x:x2,y:y2})}),onPointerUp:composeEventHandlers(props2.onPointerUp,scrollbarContext.onThumbPointerUp)})}),ScrollAreaThumb=forwardRef$1((props2,forwardedRef)=>{const{forceMount,...thumbProps}=props2,scrollbarContext=useScrollbarContext();return forceMount||scrollbarContext.hasThumb?jsx(Thumb$1,{ref:forwardedRef,...thumbProps}):null}),ScrollAreaViewport=forwardRef$1(({children:children2,style:style2,...others},ref)=>{const ctx=useScrollAreaContext(),rootRef=useMergedRef(ref,ctx.onViewportChange);return jsx(Box,{...others,ref:rootRef,style:{overflowX:ctx.scrollbarXEnabled?"scroll":"hidden",overflowY:ctx.scrollbarYEnabled?"scroll":"hidden",...style2},children:jsx("div",{style:{minWidth:"100%",display:"table"},ref:ctx.onContentChange,children:children2})})});ScrollAreaViewport.displayName="@mantine/core/ScrollAreaViewport";var __default__$A={root:"m_d57069b5",viewport:"m_c0783ff9",viewportInner:"m_f8f631dd",scrollbar:"m_c44ba933",thumb:"m_d8b5e363",corner:"m_21657268"};const defaultProps$1l={scrollHideDelay:1e3,type:"hover",scrollbars:"xy"},varsResolver$B=(_,{scrollbarSize})=>({root:{"--scrollarea-scrollbar-size":rem(scrollbarSize)}}),ScrollArea=factory((_props,ref)=>{const props2=useProps("ScrollArea",defaultProps$1l,_props),{classNames,className,style:style2,styles,unstyled,scrollbarSize,vars,type,scrollHideDelay,viewportProps,viewportRef,onScrollPositionChange,children:children2,offsetScrollbars,scrollbars,...others}=props2,[scrollbarHovered,setScrollbarHovered]=useState$1(!1),getStyles2=useStyles({name:"ScrollArea",props:props2,classes:__default__$A,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$B});return jsxs(ScrollAreaRoot,{type:type==="never"?"always":type,scrollHideDelay,ref,scrollbars,...getStyles2("root"),...others,children:[jsx(ScrollAreaViewport,{...viewportProps,...getStyles2("viewport",{style:viewportProps?.style}),ref:viewportRef,"data-offset-scrollbars":offsetScrollbars===!0?"xy":offsetScrollbars||void 0,"data-scrollbars":scrollbars||void 0,onScroll:e2=>{viewportProps?.onScroll?.(e2),onScrollPositionChange?.({x:e2.currentTarget.scrollLeft,y:e2.currentTarget.scrollTop})},children:children2}),(scrollbars==="xy"||scrollbars==="x")&&jsx(ScrollAreaScrollbar,{...getStyles2("scrollbar"),orientation:"horizontal","data-hidden":type==="never"||void 0,forceMount:!0,onMouseEnter:()=>setScrollbarHovered(!0),onMouseLeave:()=>setScrollbarHovered(!1),children:jsx(ScrollAreaThumb,{...getStyles2("thumb")})}),(scrollbars==="xy"||scrollbars==="y")&&jsx(ScrollAreaScrollbar,{...getStyles2("scrollbar"),orientation:"vertical","data-hidden":type==="never"||void 0,forceMount:!0,onMouseEnter:()=>setScrollbarHovered(!0),onMouseLeave:()=>setScrollbarHovered(!1),children:jsx(ScrollAreaThumb,{...getStyles2("thumb")})}),jsx(ScrollAreaCorner,{...getStyles2("corner"),"data-hovered":scrollbarHovered||void 0,"data-hidden":type==="never"||void 0})]})});ScrollArea.displayName="@mantine/core/ScrollArea";const ScrollAreaAutosize=factory((props2,ref)=>{const{children:children2,classNames,styles,scrollbarSize,scrollHideDelay,type,dir,offsetScrollbars,viewportRef,onScrollPositionChange,unstyled,variant,viewportProps,scrollbars,style:style2,vars,...others}=useProps("ScrollAreaAutosize",defaultProps$1l,props2);return jsx(Box,{...others,ref,style:[{display:"flex",overflow:"auto"},style2],children:jsx(Box,{style:{display:"flex",flexDirection:"column",flex:1},children:jsx(ScrollArea,{classNames,styles,scrollHideDelay,scrollbarSize,type,dir,offsetScrollbars,viewportRef,onScrollPositionChange,unstyled,variant,viewportProps,vars,scrollbars,children:children2})})})});ScrollArea.classes=__default__$A;ScrollAreaAutosize.displayName="@mantine/core/ScrollAreaAutosize";ScrollAreaAutosize.classes=__default__$A;ScrollArea.Autosize=ScrollAreaAutosize;var __default__$z={root:"m_87cf2631"};const defaultProps$1k={__staticSelector:"UnstyledButton"},UnstyledButton=polymorphicFactory((_props,ref)=>{const props2=useProps("UnstyledButton",defaultProps$1k,_props),{className,component="button",__staticSelector,unstyled,classNames,styles,style:style2,...others}=props2,getStyles2=useStyles({name:__staticSelector,props:props2,classes:__default__$z,className,style:style2,classNames,styles,unstyled});return jsx(Box,{...getStyles2("root",{focusable:!0}),component,ref,type:component==="button"?"button":void 0,...others})});UnstyledButton.classes=__default__$z;UnstyledButton.displayName="@mantine/core/UnstyledButton";var __default__$y={root:"m_515a97f8"};const defaultProps$1j={},VisuallyHidden=factory((_props,ref)=>{const props2=useProps("VisuallyHidden",defaultProps$1j,_props),{classNames,className,style:style2,styles,unstyled,vars,...others}=props2,getStyles2=useStyles({name:"VisuallyHidden",classes:__default__$y,props:props2,className,style:style2,classNames,styles,unstyled});return jsx(Box,{component:"span",ref,...getStyles2("root"),...others})});VisuallyHidden.classes=__default__$y;VisuallyHidden.displayName="@mantine/core/VisuallyHidden";var __default__$x={root:"m_1b7284a3"};const defaultProps$1i={},varsResolver$A=(_,{radius,shadow})=>({root:{"--paper-radius":radius===void 0?void 0:getRadius(radius),"--paper-shadow":getShadow(shadow)}}),Paper=polymorphicFactory((_props,ref)=>{const props2=useProps("Paper",defaultProps$1i,_props),{classNames,className,style:style2,styles,unstyled,withBorder,vars,radius,shadow,variant,mod,...others}=props2,getStyles2=useStyles({name:"Paper",props:props2,classes:__default__$x,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$A});return jsx(Box,{ref,mod:[{"data-with-border":withBorder},mod],...getStyles2("root"),variant,...others})});Paper.classes=__default__$x;Paper.displayName="@mantine/core/Paper";function getNodeName(node){return isNode$1(node)?(node.nodeName||"").toLowerCase():"#document"}function getWindow(node){var _node$ownerDocument;return(node==null||(_node$ownerDocument=node.ownerDocument)==null?void 0:_node$ownerDocument.defaultView)||window}function getDocumentElement(node){var _ref;return(_ref=(isNode$1(node)?node.ownerDocument:node.document)||window.document)==null?void 0:_ref.documentElement}function isNode$1(value){return value instanceof Node||value instanceof getWindow(value).Node}function isElement(value){return value instanceof Element||value instanceof getWindow(value).Element}function isHTMLElement(value){return value instanceof HTMLElement||value instanceof getWindow(value).HTMLElement}function isShadowRoot(value){return typeof ShadowRoot>"u"?!1:value instanceof ShadowRoot||value instanceof getWindow(value).ShadowRoot}function isOverflowElement(element){const{overflow,overflowX,overflowY,display}=getComputedStyle$2(element);return/auto|scroll|overlay|hidden|clip/.test(overflow+overflowY+overflowX)&&!["inline","contents"].includes(display)}function isTableElement(element){return["table","td","th"].includes(getNodeName(element))}function isTopLayer(element){return[":popover-open",":modal"].some(selector2=>{try{return element.matches(selector2)}catch{return!1}})}function isContainingBlock(element){const webkit=isWebKit(),css=getComputedStyle$2(element);return css.transform!=="none"||css.perspective!=="none"||(css.containerType?css.containerType!=="normal":!1)||!webkit&&(css.backdropFilter?css.backdropFilter!=="none":!1)||!webkit&&(css.filter?css.filter!=="none":!1)||["transform","perspective","filter"].some(value=>(css.willChange||"").includes(value))||["paint","layout","strict","content"].some(value=>(css.contain||"").includes(value))}function getContainingBlock(element){let currentNode=getParentNode(element);for(;isHTMLElement(currentNode)&&!isLastTraversableNode(currentNode);){if(isTopLayer(currentNode))return null;if(isContainingBlock(currentNode))return currentNode;currentNode=getParentNode(currentNode)}return null}function isWebKit(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function isLastTraversableNode(node){return["html","body","#document"].includes(getNodeName(node))}function getComputedStyle$2(element){return getWindow(element).getComputedStyle(element)}function getNodeScroll(element){return isElement(element)?{scrollLeft:element.scrollLeft,scrollTop:element.scrollTop}:{scrollLeft:element.scrollX,scrollTop:element.scrollY}}function getParentNode(node){if(getNodeName(node)==="html")return node;const result=node.assignedSlot||node.parentNode||isShadowRoot(node)&&node.host||getDocumentElement(node);return isShadowRoot(result)?result.host:result}function getNearestOverflowAncestor(node){const parentNode=getParentNode(node);return isLastTraversableNode(parentNode)?node.ownerDocument?node.ownerDocument.body:node.body:isHTMLElement(parentNode)&&isOverflowElement(parentNode)?parentNode:getNearestOverflowAncestor(parentNode)}function getOverflowAncestors(node,list,traverseIframes){var _node$ownerDocument2;list===void 0&&(list=[]),traverseIframes===void 0&&(traverseIframes=!0);const scrollableAncestor=getNearestOverflowAncestor(node),isBody=scrollableAncestor===((_node$ownerDocument2=node.ownerDocument)==null?void 0:_node$ownerDocument2.body),win2=getWindow(scrollableAncestor);return isBody?list.concat(win2,win2.visualViewport||[],isOverflowElement(scrollableAncestor)?scrollableAncestor:[],win2.frameElement&&traverseIframes?getOverflowAncestors(win2.frameElement):[]):list.concat(scrollableAncestor,getOverflowAncestors(scrollableAncestor,[],traverseIframes))}function activeElement(doc){let activeElement2=doc.activeElement;for(;((_activeElement=activeElement2)==null||(_activeElement=_activeElement.shadowRoot)==null?void 0:_activeElement.activeElement)!=null;){var _activeElement;activeElement2=activeElement2.shadowRoot.activeElement}return activeElement2}function contains(parent,child){if(!parent||!child)return!1;const rootNode=child.getRootNode==null?void 0:child.getRootNode();if(parent.contains(child))return!0;if(rootNode&&isShadowRoot(rootNode)){let next=child;for(;next;){if(parent===next)return!0;next=next.parentNode||next.host}}return!1}function getPlatform(){const uaData=navigator.userAgentData;return uaData!=null&&uaData.platform?uaData.platform:navigator.platform}function getUserAgent(){const uaData=navigator.userAgentData;return uaData&&Array.isArray(uaData.brands)?uaData.brands.map(_ref=>{let{brand,version}=_ref;return brand+"/"+version}).join(" "):navigator.userAgent}function isVirtualPointerEvent(event){return isJSDOM()?!1:!isAndroid()&&event.width===0&&event.height===0||isAndroid()&&event.width===1&&event.height===1&&event.pressure===0&&event.detail===0&&event.pointerType==="mouse"||event.width<1&&event.height<1&&event.pressure===0&&event.detail===0&&event.pointerType==="touch"}function isSafari(){return/apple/i.test(navigator.vendor)}function isAndroid(){const re=/android/i;return re.test(getPlatform())||re.test(getUserAgent())}function isMac(){return getPlatform().toLowerCase().startsWith("mac")&&!navigator.maxTouchPoints}function isJSDOM(){return getUserAgent().includes("jsdom/")}function isMouseLikePointerType(pointerType,strict){const values2=["mouse","pen"];return values2.push("",void 0),values2.includes(pointerType)}function isReactEvent(event){return"nativeEvent"in event}function isRootElement(element){return element.matches("html,body")}function getDocument(node){return node?.ownerDocument||document}function isEventTargetWithin(event,node){if(node==null)return!1;if("composedPath"in event)return event.composedPath().includes(node);const e2=event;return e2.target!=null&&node.contains(e2.target)}function getTarget(event){return"composedPath"in event?event.composedPath()[0]:event.target}const TYPEABLE_SELECTOR="input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";function isTypeableElement(element){return isHTMLElement(element)&&element.matches(TYPEABLE_SELECTOR)}const min$1=Math.min,max$1=Math.max,round=Math.round,floor=Math.floor,createCoords=v2=>({x:v2,y:v2}),oppositeSideMap={left:"right",right:"left",bottom:"top",top:"bottom"},oppositeAlignmentMap={start:"end",end:"start"};function clamp$2(start2,value,end){return max$1(start2,min$1(value,end))}function evaluate(value,param){return typeof value=="function"?value(param):value}function getSide(placement){return placement.split("-")[0]}function getAlignment(placement){return placement.split("-")[1]}function getOppositeAxis(axis){return axis==="x"?"y":"x"}function getAxisLength(axis){return axis==="y"?"height":"width"}function getSideAxis(placement){return["top","bottom"].includes(getSide(placement))?"y":"x"}function getAlignmentAxis(placement){return getOppositeAxis(getSideAxis(placement))}function getAlignmentSides(placement,rects,rtl){rtl===void 0&&(rtl=!1);const alignment=getAlignment(placement),alignmentAxis=getAlignmentAxis(placement),length=getAxisLength(alignmentAxis);let mainAlignmentSide=alignmentAxis==="x"?alignment===(rtl?"end":"start")?"right":"left":alignment==="start"?"bottom":"top";return rects.reference[length]>rects.floating[length]&&(mainAlignmentSide=getOppositePlacement(mainAlignmentSide)),[mainAlignmentSide,getOppositePlacement(mainAlignmentSide)]}function getExpandedPlacements(placement){const oppositePlacement=getOppositePlacement(placement);return[getOppositeAlignmentPlacement(placement),oppositePlacement,getOppositeAlignmentPlacement(oppositePlacement)]}function getOppositeAlignmentPlacement(placement){return placement.replace(/start|end/g,alignment=>oppositeAlignmentMap[alignment])}function getSideList(side,isStart,rtl){const lr=["left","right"],rl=["right","left"],tb=["top","bottom"],bt=["bottom","top"];switch(side){case"top":case"bottom":return rtl?isStart?rl:lr:isStart?lr:rl;case"left":case"right":return isStart?tb:bt;default:return[]}}function getOppositeAxisPlacements(placement,flipAlignment,direction,rtl){const alignment=getAlignment(placement);let list=getSideList(getSide(placement),direction==="start",rtl);return alignment&&(list=list.map(side=>side+"-"+alignment),flipAlignment&&(list=list.concat(list.map(getOppositeAlignmentPlacement)))),list}function getOppositePlacement(placement){return placement.replace(/left|right|bottom|top/g,side=>oppositeSideMap[side])}function expandPaddingObject(padding){return{top:0,right:0,bottom:0,left:0,...padding}}function getPaddingObject(padding){return typeof padding!="number"?expandPaddingObject(padding):{top:padding,right:padding,bottom:padding,left:padding}}function rectToClientRect(rect){const{x:x2,y:y2,width,height}=rect;return{width,height,top:y2,left:x2,right:x2+width,bottom:y2+height,x:x2,y:y2}}function computeCoordsFromPlacement(_ref,placement,rtl){let{reference,floating}=_ref;const sideAxis=getSideAxis(placement),alignmentAxis=getAlignmentAxis(placement),alignLength=getAxisLength(alignmentAxis),side=getSide(placement),isVertical=sideAxis==="y",commonX=reference.x+reference.width/2-floating.width/2,commonY=reference.y+reference.height/2-floating.height/2,commonAlign=reference[alignLength]/2-floating[alignLength]/2;let coords;switch(side){case"top":coords={x:commonX,y:reference.y-floating.height};break;case"bottom":coords={x:commonX,y:reference.y+reference.height};break;case"right":coords={x:reference.x+reference.width,y:commonY};break;case"left":coords={x:reference.x-floating.width,y:commonY};break;default:coords={x:reference.x,y:reference.y}}switch(getAlignment(placement)){case"start":coords[alignmentAxis]-=commonAlign*(rtl&&isVertical?-1:1);break;case"end":coords[alignmentAxis]+=commonAlign*(rtl&&isVertical?-1:1);break}return coords}const computePosition$1=async(reference,floating,config)=>{const{placement="bottom",strategy="absolute",middleware=[],platform:platform2}=config,validMiddleware=middleware.filter(Boolean),rtl=await(platform2.isRTL==null?void 0:platform2.isRTL(floating));let rects=await platform2.getElementRects({reference,floating,strategy}),{x:x2,y:y2}=computeCoordsFromPlacement(rects,placement,rtl),statefulPlacement=placement,middlewareData={},resetCount=0;for(let i2=0;i2<validMiddleware.length;i2++){const{name,fn}=validMiddleware[i2],{x:nextX,y:nextY,data,reset}=await fn({x:x2,y:y2,initialPlacement:placement,placement:statefulPlacement,strategy,middlewareData,rects,platform:platform2,elements:{reference,floating}});x2=nextX??x2,y2=nextY??y2,middlewareData={...middlewareData,[name]:{...middlewareData[name],...data}},reset&&resetCount<=50&&(resetCount++,typeof reset=="object"&&(reset.placement&&(statefulPlacement=reset.placement),reset.rects&&(rects=reset.rects===!0?await platform2.getElementRects({reference,floating,strategy}):reset.rects),{x:x2,y:y2}=computeCoordsFromPlacement(rects,statefulPlacement,rtl)),i2=-1)}return{x:x2,y:y2,placement:statefulPlacement,strategy,middlewareData}};async function detectOverflow(state,options){var _await$platform$isEle;options===void 0&&(options={});const{x:x2,y:y2,platform:platform2,rects,elements,strategy}=state,{boundary="clippingAncestors",rootBoundary="viewport",elementContext="floating",altBoundary=!1,padding=0}=evaluate(options,state),paddingObject=getPaddingObject(padding),element=elements[altBoundary?elementContext==="floating"?"reference":"floating":elementContext],clippingClientRect=rectToClientRect(await platform2.getClippingRect({element:(_await$platform$isEle=await(platform2.isElement==null?void 0:platform2.isElement(element)))==null||_await$platform$isEle?element:element.contextElement||await(platform2.getDocumentElement==null?void 0:platform2.getDocumentElement(elements.floating)),boundary,rootBoundary,strategy})),rect=elementContext==="floating"?{x:x2,y:y2,width:rects.floating.width,height:rects.floating.height}:rects.reference,offsetParent=await(platform2.getOffsetParent==null?void 0:platform2.getOffsetParent(elements.floating)),offsetScale=await(platform2.isElement==null?void 0:platform2.isElement(offsetParent))?await(platform2.getScale==null?void 0:platform2.getScale(offsetParent))||{x:1,y:1}:{x:1,y:1},elementClientRect=rectToClientRect(platform2.convertOffsetParentRelativeRectToViewportRelativeRect?await platform2.convertOffsetParentRelativeRectToViewportRelativeRect({elements,rect,offsetParent,strategy}):rect);return{top:(clippingClientRect.top-elementClientRect.top+paddingObject.top)/offsetScale.y,bottom:(elementClientRect.bottom-clippingClientRect.bottom+paddingObject.bottom)/offsetScale.y,left:(clippingClientRect.left-elementClientRect.left+paddingObject.left)/offsetScale.x,right:(elementClientRect.right-clippingClientRect.right+paddingObject.right)/offsetScale.x}}const arrow$3=options=>({name:"arrow",options,async fn(state){const{x:x2,y:y2,placement,rects,platform:platform2,elements,middlewareData}=state,{element,padding=0}=evaluate(options,state)||{};if(element==null)return{};const paddingObject=getPaddingObject(padding),coords={x:x2,y:y2},axis=getAlignmentAxis(placement),length=getAxisLength(axis),arrowDimensions=await platform2.getDimensions(element),isYAxis=axis==="y",minProp=isYAxis?"top":"left",maxProp=isYAxis?"bottom":"right",clientProp=isYAxis?"clientHeight":"clientWidth",endDiff=rects.reference[length]+rects.reference[axis]-coords[axis]-rects.floating[length],startDiff=coords[axis]-rects.reference[axis],arrowOffsetParent=await(platform2.getOffsetParent==null?void 0:platform2.getOffsetParent(element));let clientSize=arrowOffsetParent?arrowOffsetParent[clientProp]:0;(!clientSize||!await(platform2.isElement==null?void 0:platform2.isElement(arrowOffsetParent)))&&(clientSize=elements.floating[clientProp]||rects.floating[length]);const centerToReference=endDiff/2-startDiff/2,largestPossiblePadding=clientSize/2-arrowDimensions[length]/2-1,minPadding=min$1(paddingObject[minProp],largestPossiblePadding),maxPadding=min$1(paddingObject[maxProp],largestPossiblePadding),min$1$1=minPadding,max2=clientSize-arrowDimensions[length]-maxPadding,center=clientSize/2-arrowDimensions[length]/2+centerToReference,offset2=clamp$2(min$1$1,center,max2),shouldAddOffset=!middlewareData.arrow&&getAlignment(placement)!=null&¢er!==offset2&&rects.reference[length]/2-(center<min$1$1?minPadding:maxPadding)-arrowDimensions[length]/2<0,alignmentOffset=shouldAddOffset?center<min$1$1?center-min$1$1:center-max2:0;return{[axis]:coords[axis]+alignmentOffset,data:{[axis]:offset2,centerOffset:center-offset2-alignmentOffset,...shouldAddOffset&&{alignmentOffset}},reset:shouldAddOffset}}}),flip$2=function(options){return options===void 0&&(options={}),{name:"flip",options,async fn(state){var _middlewareData$arrow,_middlewareData$flip;const{placement,middlewareData,rects,initialPlacement,platform:platform2,elements}=state,{mainAxis:checkMainAxis=!0,crossAxis:checkCrossAxis=!0,fallbackPlacements:specifiedFallbackPlacements,fallbackStrategy="bestFit",fallbackAxisSideDirection="none",flipAlignment=!0,...detectOverflowOptions}=evaluate(options,state);if((_middlewareData$arrow=middlewareData.arrow)!=null&&_middlewareData$arrow.alignmentOffset)return{};const side=getSide(placement),initialSideAxis=getSideAxis(initialPlacement),isBasePlacement=getSide(initialPlacement)===initialPlacement,rtl=await(platform2.isRTL==null?void 0:platform2.isRTL(elements.floating)),fallbackPlacements=specifiedFallbackPlacements||(isBasePlacement||!flipAlignment?[getOppositePlacement(initialPlacement)]:getExpandedPlacements(initialPlacement)),hasFallbackAxisSideDirection=fallbackAxisSideDirection!=="none";!specifiedFallbackPlacements&&hasFallbackAxisSideDirection&&fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement,flipAlignment,fallbackAxisSideDirection,rtl));const placements=[initialPlacement,...fallbackPlacements],overflow=await detectOverflow(state,detectOverflowOptions),overflows=[];let overflowsData=((_middlewareData$flip=middlewareData.flip)==null?void 0:_middlewareData$flip.overflows)||[];if(checkMainAxis&&overflows.push(overflow[side]),checkCrossAxis){const sides=getAlignmentSides(placement,rects,rtl);overflows.push(overflow[sides[0]],overflow[sides[1]])}if(overflowsData=[...overflowsData,{placement,overflows}],!overflows.every(side2=>side2<=0)){var _middlewareData$flip2,_overflowsData$filter;const nextIndex=(((_middlewareData$flip2=middlewareData.flip)==null?void 0:_middlewareData$flip2.index)||0)+1,nextPlacement=placements[nextIndex];if(nextPlacement)return{data:{index:nextIndex,overflows:overflowsData},reset:{placement:nextPlacement}};let resetPlacement=(_overflowsData$filter=overflowsData.filter(d2=>d2.overflows[0]<=0).sort((a2,b2)=>a2.overflows[1]-b2.overflows[1])[0])==null?void 0:_overflowsData$filter.placement;if(!resetPlacement)switch(fallbackStrategy){case"bestFit":{var _overflowsData$filter2;const placement2=(_overflowsData$filter2=overflowsData.filter(d2=>{if(hasFallbackAxisSideDirection){const currentSideAxis=getSideAxis(d2.placement);return currentSideAxis===initialSideAxis||currentSideAxis==="y"}return!0}).map(d2=>[d2.placement,d2.overflows.filter(overflow2=>overflow2>0).reduce((acc,overflow2)=>acc+overflow2,0)]).sort((a2,b2)=>a2[1]-b2[1])[0])==null?void 0:_overflowsData$filter2[0];placement2&&(resetPlacement=placement2);break}case"initialPlacement":resetPlacement=initialPlacement;break}if(placement!==resetPlacement)return{reset:{placement:resetPlacement}}}return{}}}};function getBoundingRect(rects){const minX=min$1(...rects.map(rect=>rect.left)),minY=min$1(...rects.map(rect=>rect.top)),maxX=max$1(...rects.map(rect=>rect.right)),maxY=max$1(...rects.map(rect=>rect.bottom));return{x:minX,y:minY,width:maxX-minX,height:maxY-minY}}function getRectsByLine(rects){const sortedRects=rects.slice().sort((a2,b2)=>a2.y-b2.y),groups=[];let prevRect=null;for(let i2=0;i2<sortedRects.length;i2++){const rect=sortedRects[i2];!prevRect||rect.y-prevRect.y>prevRect.height/2?groups.push([rect]):groups[groups.length-1].push(rect),prevRect=rect}return groups.map(rect=>rectToClientRect(getBoundingRect(rect)))}const inline$2=function(options){return options===void 0&&(options={}),{name:"inline",options,async fn(state){const{placement,elements,rects,platform:platform2,strategy}=state,{padding=2,x:x2,y:y2}=evaluate(options,state),nativeClientRects=Array.from(await(platform2.getClientRects==null?void 0:platform2.getClientRects(elements.reference))||[]),clientRects=getRectsByLine(nativeClientRects),fallback=rectToClientRect(getBoundingRect(nativeClientRects)),paddingObject=getPaddingObject(padding);function getBoundingClientRect2(){if(clientRects.length===2&&clientRects[0].left>clientRects[1].right&&x2!=null&&y2!=null)return clientRects.find(rect=>x2>rect.left-paddingObject.left&&x2<rect.right+paddingObject.right&&y2>rect.top-paddingObject.top&&y2<rect.bottom+paddingObject.bottom)||fallback;if(clientRects.length>=2){if(getSideAxis(placement)==="y"){const firstRect=clientRects[0],lastRect=clientRects[clientRects.length-1],isTop=getSide(placement)==="top",top2=firstRect.top,bottom2=lastRect.bottom,left2=isTop?firstRect.left:lastRect.left,right2=isTop?firstRect.right:lastRect.right,width2=right2-left2,height2=bottom2-top2;return{top:top2,bottom:bottom2,left:left2,right:right2,width:width2,height:height2,x:left2,y:top2}}const isLeftSide=getSide(placement)==="left",maxRight=max$1(...clientRects.map(rect=>rect.right)),minLeft=min$1(...clientRects.map(rect=>rect.left)),measureRects=clientRects.filter(rect=>isLeftSide?rect.left===minLeft:rect.right===maxRight),top=measureRects[0].top,bottom=measureRects[measureRects.length-1].bottom,left=minLeft,right=maxRight,width=right-left,height=bottom-top;return{top,bottom,left,right,width,height,x:left,y:top}}return fallback}const resetRects=await platform2.getElementRects({reference:{getBoundingClientRect:getBoundingClientRect2},floating:elements.floating,strategy});return rects.reference.x!==resetRects.reference.x||rects.reference.y!==resetRects.reference.y||rects.reference.width!==resetRects.reference.width||rects.reference.height!==resetRects.reference.height?{reset:{rects:resetRects}}:{}}}};async function convertValueToCoords(state,options){const{placement,platform:platform2,elements}=state,rtl=await(platform2.isRTL==null?void 0:platform2.isRTL(elements.floating)),side=getSide(placement),alignment=getAlignment(placement),isVertical=getSideAxis(placement)==="y",mainAxisMulti=["left","top"].includes(side)?-1:1,crossAxisMulti=rtl&&isVertical?-1:1,rawValue=evaluate(options,state);let{mainAxis,crossAxis,alignmentAxis}=typeof rawValue=="number"?{mainAxis:rawValue,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...rawValue};return alignment&&typeof alignmentAxis=="number"&&(crossAxis=alignment==="end"?alignmentAxis*-1:alignmentAxis),isVertical?{x:crossAxis*crossAxisMulti,y:mainAxis*mainAxisMulti}:{x:mainAxis*mainAxisMulti,y:crossAxis*crossAxisMulti}}const offset$2=function(options){return options===void 0&&(options=0),{name:"offset",options,async fn(state){var _middlewareData$offse,_middlewareData$arrow;const{x:x2,y:y2,placement,middlewareData}=state,diffCoords=await convertValueToCoords(state,options);return placement===((_middlewareData$offse=middlewareData.offset)==null?void 0:_middlewareData$offse.placement)&&(_middlewareData$arrow=middlewareData.arrow)!=null&&_middlewareData$arrow.alignmentOffset?{}:{x:x2+diffCoords.x,y:y2+diffCoords.y,data:{...diffCoords,placement}}}}},shift$2=function(options){return options===void 0&&(options={}),{name:"shift",options,async fn(state){const{x:x2,y:y2,placement}=state,{mainAxis:checkMainAxis=!0,crossAxis:checkCrossAxis=!1,limiter={fn:_ref=>{let{x:x3,y:y3}=_ref;return{x:x3,y:y3}}},...detectOverflowOptions}=evaluate(options,state),coords={x:x2,y:y2},overflow=await detectOverflow(state,detectOverflowOptions),crossAxis=getSideAxis(getSide(placement)),mainAxis=getOppositeAxis(crossAxis);let mainAxisCoord=coords[mainAxis],crossAxisCoord=coords[crossAxis];if(checkMainAxis){const minSide=mainAxis==="y"?"top":"left",maxSide=mainAxis==="y"?"bottom":"right",min2=mainAxisCoord+overflow[minSide],max2=mainAxisCoord-overflow[maxSide];mainAxisCoord=clamp$2(min2,mainAxisCoord,max2)}if(checkCrossAxis){const minSide=crossAxis==="y"?"top":"left",maxSide=crossAxis==="y"?"bottom":"right",min2=crossAxisCoord+overflow[minSide],max2=crossAxisCoord-overflow[maxSide];crossAxisCoord=clamp$2(min2,crossAxisCoord,max2)}const limitedCoords=limiter.fn({...state,[mainAxis]:mainAxisCoord,[crossAxis]:crossAxisCoord});return{...limitedCoords,data:{x:limitedCoords.x-x2,y:limitedCoords.y-y2}}}}},limitShift$2=function(options){return options===void 0&&(options={}),{options,fn(state){const{x:x2,y:y2,placement,rects,middlewareData}=state,{offset:offset2=0,mainAxis:checkMainAxis=!0,crossAxis:checkCrossAxis=!0}=evaluate(options,state),coords={x:x2,y:y2},crossAxis=getSideAxis(placement),mainAxis=getOppositeAxis(crossAxis);let mainAxisCoord=coords[mainAxis],crossAxisCoord=coords[crossAxis];const rawOffset=evaluate(offset2,state),computedOffset=typeof rawOffset=="number"?{mainAxis:rawOffset,crossAxis:0}:{mainAxis:0,crossAxis:0,...rawOffset};if(checkMainAxis){const len=mainAxis==="y"?"height":"width",limitMin=rects.reference[mainAxis]-rects.floating[len]+computedOffset.mainAxis,limitMax=rects.reference[mainAxis]+rects.reference[len]-computedOffset.mainAxis;mainAxisCoord<limitMin?mainAxisCoord=limitMin:mainAxisCoord>limitMax&&(mainAxisCoord=limitMax)}if(checkCrossAxis){var _middlewareData$offse,_middlewareData$offse2;const len=mainAxis==="y"?"width":"height",isOriginSide=["top","left"].includes(getSide(placement)),limitMin=rects.reference[crossAxis]-rects.floating[len]+(isOriginSide&&((_middlewareData$offse=middlewareData.offset)==null?void 0:_middlewareData$offse[crossAxis])||0)+(isOriginSide?0:computedOffset.crossAxis),limitMax=rects.reference[crossAxis]+rects.reference[len]+(isOriginSide?0:((_middlewareData$offse2=middlewareData.offset)==null?void 0:_middlewareData$offse2[crossAxis])||0)-(isOriginSide?computedOffset.crossAxis:0);crossAxisCoord<limitMin?crossAxisCoord=limitMin:crossAxisCoord>limitMax&&(crossAxisCoord=limitMax)}return{[mainAxis]:mainAxisCoord,[crossAxis]:crossAxisCoord}}}},size$2=function(options){return options===void 0&&(options={}),{name:"size",options,async fn(state){const{placement,rects,platform:platform2,elements}=state,{apply=()=>{},...detectOverflowOptions}=evaluate(options,state),overflow=await detectOverflow(state,detectOverflowOptions),side=getSide(placement),alignment=getAlignment(placement),isYAxis=getSideAxis(placement)==="y",{width,height}=rects.floating;let heightSide,widthSide;side==="top"||side==="bottom"?(heightSide=side,widthSide=alignment===(await(platform2.isRTL==null?void 0:platform2.isRTL(elements.floating))?"start":"end")?"left":"right"):(widthSide=side,heightSide=alignment==="end"?"top":"bottom");const maximumClippingHeight=height-overflow.top-overflow.bottom,maximumClippingWidth=width-overflow.left-overflow.right,overflowAvailableHeight=min$1(height-overflow[heightSide],maximumClippingHeight),overflowAvailableWidth=min$1(width-overflow[widthSide],maximumClippingWidth),noShift=!state.middlewareData.shift;let availableHeight=overflowAvailableHeight,availableWidth=overflowAvailableWidth;if(isYAxis?availableWidth=alignment||noShift?min$1(overflowAvailableWidth,maximumClippingWidth):maximumClippingWidth:availableHeight=alignment||noShift?min$1(overflowAvailableHeight,maximumClippingHeight):maximumClippingHeight,noShift&&!alignment){const xMin=max$1(overflow.left,0),xMax=max$1(overflow.right,0),yMin=max$1(overflow.top,0),yMax=max$1(overflow.bottom,0);isYAxis?availableWidth=width-2*(xMin!==0||xMax!==0?xMin+xMax:max$1(overflow.left,overflow.right)):availableHeight=height-2*(yMin!==0||yMax!==0?yMin+yMax:max$1(overflow.top,overflow.bottom))}await apply({...state,availableWidth,availableHeight});const nextDimensions=await platform2.getDimensions(elements.floating);return width!==nextDimensions.width||height!==nextDimensions.height?{reset:{rects:!0}}:{}}}};function getCssDimensions(element){const css=getComputedStyle$2(element);let width=parseFloat(css.width)||0,height=parseFloat(css.height)||0;const hasOffset=isHTMLElement(element),offsetWidth=hasOffset?element.offsetWidth:width,offsetHeight=hasOffset?element.offsetHeight:height,shouldFallback=round(width)!==offsetWidth||round(height)!==offsetHeight;return shouldFallback&&(width=offsetWidth,height=offsetHeight),{width,height,$:shouldFallback}}function unwrapElement(element){return isElement(element)?element:element.contextElement}function getScale(element){const domElement=unwrapElement(element);if(!isHTMLElement(domElement))return createCoords(1);const rect=domElement.getBoundingClientRect(),{width,height,$}=getCssDimensions(domElement);let x2=($?round(rect.width):rect.width)/width,y2=($?round(rect.height):rect.height)/height;return(!x2||!Number.isFinite(x2))&&(x2=1),(!y2||!Number.isFinite(y2))&&(y2=1),{x:x2,y:y2}}const noOffsets=createCoords(0);function getVisualOffsets(element){const win2=getWindow(element);return!isWebKit()||!win2.visualViewport?noOffsets:{x:win2.visualViewport.offsetLeft,y:win2.visualViewport.offsetTop}}function shouldAddVisualOffsets(element,isFixed,floatingOffsetParent){return isFixed===void 0&&(isFixed=!1),!floatingOffsetParent||isFixed&&floatingOffsetParent!==getWindow(element)?!1:isFixed}function getBoundingClientRect(element,includeScale,isFixedStrategy,offsetParent){includeScale===void 0&&(includeScale=!1),isFixedStrategy===void 0&&(isFixedStrategy=!1);const clientRect=element.getBoundingClientRect(),domElement=unwrapElement(element);let scale2=createCoords(1);includeScale&&(offsetParent?isElement(offsetParent)&&(scale2=getScale(offsetParent)):scale2=getScale(element));const visualOffsets=shouldAddVisualOffsets(domElement,isFixedStrategy,offsetParent)?getVisualOffsets(domElement):createCoords(0);let x2=(clientRect.left+visualOffsets.x)/scale2.x,y2=(clientRect.top+visualOffsets.y)/scale2.y,width=clientRect.width/scale2.x,height=clientRect.height/scale2.y;if(domElement){const win2=getWindow(domElement),offsetWin=offsetParent&&isElement(offsetParent)?getWindow(offsetParent):offsetParent;let currentWin=win2,currentIFrame=currentWin.frameElement;for(;currentIFrame&&offsetParent&&offsetWin!==currentWin;){const iframeScale=getScale(currentIFrame),iframeRect=currentIFrame.getBoundingClientRect(),css=getComputedStyle$2(currentIFrame),left=iframeRect.left+(currentIFrame.clientLeft+parseFloat(css.paddingLeft))*iframeScale.x,top=iframeRect.top+(currentIFrame.clientTop+parseFloat(css.paddingTop))*iframeScale.y;x2*=iframeScale.x,y2*=iframeScale.y,width*=iframeScale.x,height*=iframeScale.y,x2+=left,y2+=top,currentWin=getWindow(currentIFrame),currentIFrame=currentWin.frameElement}}return rectToClientRect({width,height,x:x2,y:y2})}function convertOffsetParentRelativeRectToViewportRelativeRect(_ref){let{elements,rect,offsetParent,strategy}=_ref;const isFixed=strategy==="fixed",documentElement=getDocumentElement(offsetParent),topLayer=elements?isTopLayer(elements.floating):!1;if(offsetParent===documentElement||topLayer&&isFixed)return rect;let scroll={scrollLeft:0,scrollTop:0},scale2=createCoords(1);const offsets=createCoords(0),isOffsetParentAnElement=isHTMLElement(offsetParent);if((isOffsetParentAnElement||!isOffsetParentAnElement&&!isFixed)&&((getNodeName(offsetParent)!=="body"||isOverflowElement(documentElement))&&(scroll=getNodeScroll(offsetParent)),isHTMLElement(offsetParent))){const offsetRect=getBoundingClientRect(offsetParent);scale2=getScale(offsetParent),offsets.x=offsetRect.x+offsetParent.clientLeft,offsets.y=offsetRect.y+offsetParent.clientTop}return{width:rect.width*scale2.x,height:rect.height*scale2.y,x:rect.x*scale2.x-scroll.scrollLeft*scale2.x+offsets.x,y:rect.y*scale2.y-scroll.scrollTop*scale2.y+offsets.y}}function getClientRects(element){return Array.from(element.getClientRects())}function getWindowScrollBarX(element){return getBoundingClientRect(getDocumentElement(element)).left+getNodeScroll(element).scrollLeft}function getDocumentRect(element){const html=getDocumentElement(element),scroll=getNodeScroll(element),body=element.ownerDocument.body,width=max$1(html.scrollWidth,html.clientWidth,body.scrollWidth,body.clientWidth),height=max$1(html.scrollHeight,html.clientHeight,body.scrollHeight,body.clientHeight);let x2=-scroll.scrollLeft+getWindowScrollBarX(element);const y2=-scroll.scrollTop;return getComputedStyle$2(body).direction==="rtl"&&(x2+=max$1(html.clientWidth,body.clientWidth)-width),{width,height,x:x2,y:y2}}function getViewportRect(element,strategy){const win2=getWindow(element),html=getDocumentElement(element),visualViewport=win2.visualViewport;let width=html.clientWidth,height=html.clientHeight,x2=0,y2=0;if(visualViewport){width=visualViewport.width,height=visualViewport.height;const visualViewportBased=isWebKit();(!visualViewportBased||visualViewportBased&&strategy==="fixed")&&(x2=visualViewport.offsetLeft,y2=visualViewport.offsetTop)}return{width,height,x:x2,y:y2}}function getInnerBoundingClientRect(element,strategy){const clientRect=getBoundingClientRect(element,!0,strategy==="fixed"),top=clientRect.top+element.clientTop,left=clientRect.left+element.clientLeft,scale2=isHTMLElement(element)?getScale(element):createCoords(1),width=element.clientWidth*scale2.x,height=element.clientHeight*scale2.y,x2=left*scale2.x,y2=top*scale2.y;return{width,height,x:x2,y:y2}}function getClientRectFromClippingAncestor(element,clippingAncestor,strategy){let rect;if(clippingAncestor==="viewport")rect=getViewportRect(element,strategy);else if(clippingAncestor==="document")rect=getDocumentRect(getDocumentElement(element));else if(isElement(clippingAncestor))rect=getInnerBoundingClientRect(clippingAncestor,strategy);else{const visualOffsets=getVisualOffsets(element);rect={...clippingAncestor,x:clippingAncestor.x-visualOffsets.x,y:clippingAncestor.y-visualOffsets.y}}return rectToClientRect(rect)}function hasFixedPositionAncestor(element,stopNode){const parentNode=getParentNode(element);return parentNode===stopNode||!isElement(parentNode)||isLastTraversableNode(parentNode)?!1:getComputedStyle$2(parentNode).position==="fixed"||hasFixedPositionAncestor(parentNode,stopNode)}function getClippingElementAncestors(element,cache2){const cachedResult=cache2.get(element);if(cachedResult)return cachedResult;let result=getOverflowAncestors(element,[],!1).filter(el=>isElement(el)&&getNodeName(el)!=="body"),currentContainingBlockComputedStyle=null;const elementIsFixed=getComputedStyle$2(element).position==="fixed";let currentNode=elementIsFixed?getParentNode(element):element;for(;isElement(currentNode)&&!isLastTraversableNode(currentNode);){const computedStyle=getComputedStyle$2(currentNode),currentNodeIsContaining=isContainingBlock(currentNode);!currentNodeIsContaining&&computedStyle.position==="fixed"&&(currentContainingBlockComputedStyle=null),(elementIsFixed?!currentNodeIsContaining&&!currentContainingBlockComputedStyle:!currentNodeIsContaining&&computedStyle.position==="static"&&!!currentContainingBlockComputedStyle&&["absolute","fixed"].includes(currentContainingBlockComputedStyle.position)||isOverflowElement(currentNode)&&!currentNodeIsContaining&&hasFixedPositionAncestor(element,currentNode))?result=result.filter(ancestor=>ancestor!==currentNode):currentContainingBlockComputedStyle=computedStyle,currentNode=getParentNode(currentNode)}return cache2.set(element,result),result}function getClippingRect(_ref){let{element,boundary,rootBoundary,strategy}=_ref;const clippingAncestors=[...boundary==="clippingAncestors"?isTopLayer(element)?[]:getClippingElementAncestors(element,this._c):[].concat(boundary),rootBoundary],firstClippingAncestor=clippingAncestors[0],clippingRect=clippingAncestors.reduce((accRect,clippingAncestor)=>{const rect=getClientRectFromClippingAncestor(element,clippingAncestor,strategy);return accRect.top=max$1(rect.top,accRect.top),accRect.right=min$1(rect.right,accRect.right),accRect.bottom=min$1(rect.bottom,accRect.bottom),accRect.left=max$1(rect.left,accRect.left),accRect},getClientRectFromClippingAncestor(element,firstClippingAncestor,strategy));return{width:clippingRect.right-clippingRect.left,height:clippingRect.bottom-clippingRect.top,x:clippingRect.left,y:clippingRect.top}}function getDimensions$1(element){const{width,height}=getCssDimensions(element);return{width,height}}function getRectRelativeToOffsetParent(element,offsetParent,strategy){const isOffsetParentAnElement=isHTMLElement(offsetParent),documentElement=getDocumentElement(offsetParent),isFixed=strategy==="fixed",rect=getBoundingClientRect(element,!0,isFixed,offsetParent);let scroll={scrollLeft:0,scrollTop:0};const offsets=createCoords(0);if(isOffsetParentAnElement||!isOffsetParentAnElement&&!isFixed)if((getNodeName(offsetParent)!=="body"||isOverflowElement(documentElement))&&(scroll=getNodeScroll(offsetParent)),isOffsetParentAnElement){const offsetRect=getBoundingClientRect(offsetParent,!0,isFixed,offsetParent);offsets.x=offsetRect.x+offsetParent.clientLeft,offsets.y=offsetRect.y+offsetParent.clientTop}else documentElement&&(offsets.x=getWindowScrollBarX(documentElement));const x2=rect.left+scroll.scrollLeft-offsets.x,y2=rect.top+scroll.scrollTop-offsets.y;return{x:x2,y:y2,width:rect.width,height:rect.height}}function isStaticPositioned(element){return getComputedStyle$2(element).position==="static"}function getTrueOffsetParent(element,polyfill){return!isHTMLElement(element)||getComputedStyle$2(element).position==="fixed"?null:polyfill?polyfill(element):element.offsetParent}function getOffsetParent(element,polyfill){const win2=getWindow(element);if(isTopLayer(element))return win2;if(!isHTMLElement(element)){let svgOffsetParent=getParentNode(element);for(;svgOffsetParent&&!isLastTraversableNode(svgOffsetParent);){if(isElement(svgOffsetParent)&&!isStaticPositioned(svgOffsetParent))return svgOffsetParent;svgOffsetParent=getParentNode(svgOffsetParent)}return win2}let offsetParent=getTrueOffsetParent(element,polyfill);for(;offsetParent&&isTableElement(offsetParent)&&isStaticPositioned(offsetParent);)offsetParent=getTrueOffsetParent(offsetParent,polyfill);return offsetParent&&isLastTraversableNode(offsetParent)&&isStaticPositioned(offsetParent)&&!isContainingBlock(offsetParent)?win2:offsetParent||getContainingBlock(element)||win2}const getElementRects=async function(data){const getOffsetParentFn=this.getOffsetParent||getOffsetParent,getDimensionsFn=this.getDimensions,floatingDimensions=await getDimensionsFn(data.floating);return{reference:getRectRelativeToOffsetParent(data.reference,await getOffsetParentFn(data.floating),data.strategy),floating:{x:0,y:0,width:floatingDimensions.width,height:floatingDimensions.height}}};function isRTL(element){return getComputedStyle$2(element).direction==="rtl"}const platform={convertOffsetParentRelativeRectToViewportRelativeRect,getDocumentElement,getClippingRect,getOffsetParent,getElementRects,getClientRects,getDimensions:getDimensions$1,getScale,isElement,isRTL};function observeMove(element,onMove){let io=null,timeoutId;const root2=getDocumentElement(element);function cleanup(){var _io;clearTimeout(timeoutId),(_io=io)==null||_io.disconnect(),io=null}function refresh(skip,threshold){skip===void 0&&(skip=!1),threshold===void 0&&(threshold=1),cleanup();const{left,top,width,height}=element.getBoundingClientRect();if(skip||onMove(),!width||!height)return;const insetTop=floor(top),insetRight=floor(root2.clientWidth-(left+width)),insetBottom=floor(root2.clientHeight-(top+height)),insetLeft=floor(left),options={rootMargin:-insetTop+"px "+-insetRight+"px "+-insetBottom+"px "+-insetLeft+"px",threshold:max$1(0,min$1(1,threshold))||1};let isFirstUpdate=!0;function handleObserve(entries){const ratio=entries[0].intersectionRatio;if(ratio!==threshold){if(!isFirstUpdate)return refresh();ratio?refresh(!1,ratio):timeoutId=setTimeout(()=>{refresh(!1,1e-7)},1e3)}isFirstUpdate=!1}try{io=new IntersectionObserver(handleObserve,{...options,root:root2.ownerDocument})}catch{io=new IntersectionObserver(handleObserve,options)}io.observe(element)}return refresh(!0),cleanup}function autoUpdate(reference,floating,update,options){options===void 0&&(options={});const{ancestorScroll=!0,ancestorResize=!0,elementResize=typeof ResizeObserver=="function",layoutShift=typeof IntersectionObserver=="function",animationFrame=!1}=options,referenceEl=unwrapElement(reference),ancestors=ancestorScroll||ancestorResize?[...referenceEl?getOverflowAncestors(referenceEl):[],...getOverflowAncestors(floating)]:[];ancestors.forEach(ancestor=>{ancestorScroll&&ancestor.addEventListener("scroll",update,{passive:!0}),ancestorResize&&ancestor.addEventListener("resize",update)});const cleanupIo=referenceEl&&layoutShift?observeMove(referenceEl,update):null;let reobserveFrame=-1,resizeObserver=null;elementResize&&(resizeObserver=new ResizeObserver(_ref=>{let[firstEntry]=_ref;firstEntry&&firstEntry.target===referenceEl&&resizeObserver&&(resizeObserver.unobserve(floating),cancelAnimationFrame(reobserveFrame),reobserveFrame=requestAnimationFrame(()=>{var _resizeObserver;(_resizeObserver=resizeObserver)==null||_resizeObserver.observe(floating)})),update()}),referenceEl&&!animationFrame&&resizeObserver.observe(referenceEl),resizeObserver.observe(floating));let frameId,prevRefRect=animationFrame?getBoundingClientRect(reference):null;animationFrame&&frameLoop();function frameLoop(){const nextRefRect=getBoundingClientRect(reference);prevRefRect&&(nextRefRect.x!==prevRefRect.x||nextRefRect.y!==prevRefRect.y||nextRefRect.width!==prevRefRect.width||nextRefRect.height!==prevRefRect.height)&&update(),prevRefRect=nextRefRect,frameId=requestAnimationFrame(frameLoop)}return update(),()=>{var _resizeObserver2;ancestors.forEach(ancestor=>{ancestorScroll&&ancestor.removeEventListener("scroll",update),ancestorResize&&ancestor.removeEventListener("resize",update)}),cleanupIo?.(),(_resizeObserver2=resizeObserver)==null||_resizeObserver2.disconnect(),resizeObserver=null,animationFrame&&cancelAnimationFrame(frameId)}}const offset$1=offset$2,shift$1=shift$2,flip$1=flip$2,size$1=size$2,arrow$2=arrow$3,inline$1=inline$2,limitShift$1=limitShift$2,computePosition=(reference,floating,options)=>{const cache2=new Map,mergedOptions={platform,...options},platformWithCache={...mergedOptions.platform,_c:cache2};return computePosition$1(reference,floating,{...mergedOptions,platform:platformWithCache})};var index$2=typeof document<"u"?useLayoutEffect$3:useEffect$1;function deepEqual$1(a2,b2){if(a2===b2)return!0;if(typeof a2!=typeof b2)return!1;if(typeof a2=="function"&&a2.toString()===b2.toString())return!0;let length,i2,keys2;if(a2&&b2&&typeof a2=="object"){if(Array.isArray(a2)){if(length=a2.length,length!==b2.length)return!1;for(i2=length;i2--!==0;)if(!deepEqual$1(a2[i2],b2[i2]))return!1;return!0}if(keys2=Object.keys(a2),length=keys2.length,length!==Object.keys(b2).length)return!1;for(i2=length;i2--!==0;)if(!{}.hasOwnProperty.call(b2,keys2[i2]))return!1;for(i2=length;i2--!==0;){const key=keys2[i2];if(!(key==="_owner"&&a2.$$typeof)&&!deepEqual$1(a2[key],b2[key]))return!1}return!0}return a2!==a2&&b2!==b2}function getDPR(element){return typeof window>"u"?1:(element.ownerDocument.defaultView||window).devicePixelRatio||1}function roundByDPR(element,value){const dpr=getDPR(element);return Math.round(value*dpr)/dpr}function useLatestRef$1(value){const ref=React.useRef(value);return index$2(()=>{ref.current=value}),ref}function useFloating$1(options){options===void 0&&(options={});const{placement="bottom",strategy="absolute",middleware=[],platform:platform2,elements:{reference:externalReference,floating:externalFloating}={},transform:transform2=!0,whileElementsMounted,open}=options,[data,setData]=React.useState({x:0,y:0,strategy,placement,middlewareData:{},isPositioned:!1}),[latestMiddleware,setLatestMiddleware]=React.useState(middleware);deepEqual$1(latestMiddleware,middleware)||setLatestMiddleware(middleware);const[_reference,_setReference]=React.useState(null),[_floating,_setFloating]=React.useState(null),setReference=React.useCallback(node=>{node!==referenceRef.current&&(referenceRef.current=node,_setReference(node))},[]),setFloating=React.useCallback(node=>{node!==floatingRef.current&&(floatingRef.current=node,_setFloating(node))},[]),referenceEl=externalReference||_reference,floatingEl=externalFloating||_floating,referenceRef=React.useRef(null),floatingRef=React.useRef(null),dataRef=React.useRef(data),hasWhileElementsMounted=whileElementsMounted!=null,whileElementsMountedRef=useLatestRef$1(whileElementsMounted),platformRef=useLatestRef$1(platform2),update=React.useCallback(()=>{if(!referenceRef.current||!floatingRef.current)return;const config={placement,strategy,middleware:latestMiddleware};platformRef.current&&(config.platform=platformRef.current),computePosition(referenceRef.current,floatingRef.current,config).then(data2=>{const fullData={...data2,isPositioned:!0};isMountedRef.current&&!deepEqual$1(dataRef.current,fullData)&&(dataRef.current=fullData,ReactDOM.flushSync(()=>{setData(fullData)}))})},[latestMiddleware,placement,strategy,platformRef]);index$2(()=>{open===!1&&dataRef.current.isPositioned&&(dataRef.current.isPositioned=!1,setData(data2=>({...data2,isPositioned:!1})))},[open]);const isMountedRef=React.useRef(!1);index$2(()=>(isMountedRef.current=!0,()=>{isMountedRef.current=!1}),[]),index$2(()=>{if(referenceEl&&(referenceRef.current=referenceEl),floatingEl&&(floatingRef.current=floatingEl),referenceEl&&floatingEl){if(whileElementsMountedRef.current)return whileElementsMountedRef.current(referenceEl,floatingEl,update);update()}},[referenceEl,floatingEl,update,whileElementsMountedRef,hasWhileElementsMounted]);const refs=React.useMemo(()=>({reference:referenceRef,floating:floatingRef,setReference,setFloating}),[setReference,setFloating]),elements=React.useMemo(()=>({reference:referenceEl,floating:floatingEl}),[referenceEl,floatingEl]),floatingStyles=React.useMemo(()=>{const initialStyles={position:strategy,left:0,top:0};if(!elements.floating)return initialStyles;const x2=roundByDPR(elements.floating,data.x),y2=roundByDPR(elements.floating,data.y);return transform2?{...initialStyles,transform:"translate("+x2+"px, "+y2+"px)",...getDPR(elements.floating)>=1.5&&{willChange:"transform"}}:{position:strategy,left:x2,top:y2}},[strategy,transform2,elements.floating,data.x,data.y]);return React.useMemo(()=>({...data,update,refs,elements,floatingStyles}),[data,update,refs,elements,floatingStyles])}const arrow$1=options=>{function isRef(value){return{}.hasOwnProperty.call(value,"current")}return{name:"arrow",options,fn(state){const{element,padding}=typeof options=="function"?options(state):options;return element&&isRef(element)?element.current!=null?arrow$2({element:element.current,padding}).fn(state):{}:element?arrow$2({element,padding}).fn(state):{}}}},offset=(options,deps)=>({...offset$1(options),options:[options,deps]}),shift=(options,deps)=>({...shift$1(options),options:[options,deps]}),limitShift=(options,deps)=>({...limitShift$1(options),options:[options,deps]}),flip=(options,deps)=>({...flip$1(options),options:[options,deps]}),size=(options,deps)=>({...size$1(options),options:[options,deps]}),inline=(options,deps)=>({...inline$1(options),options:[options,deps]}),arrow=(options,deps)=>({...arrow$1(options),options:[options,deps]}),SafeReact={...React},useInsertionEffect=SafeReact.useInsertionEffect,useSafeInsertionEffect=useInsertionEffect||(fn=>fn());function useEffectEvent(callback){const ref=React.useRef(()=>{});return useSafeInsertionEffect(()=>{ref.current=callback}),React.useCallback(function(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return ref.current==null?void 0:ref.current(...args)},[])}var index$1=typeof document<"u"?useLayoutEffect$3:useEffect$1;let serverHandoffComplete=!1,count=0;const genId=()=>"floating-ui-"+Math.random().toString(36).slice(2,6)+count++;function useFloatingId(){const[id2,setId]=React.useState(()=>serverHandoffComplete?genId():void 0);return index$1(()=>{id2==null&&setId(genId())},[]),React.useEffect(()=>{serverHandoffComplete=!0},[]),id2}const useReactId=SafeReact.useId,useId$1=useReactId||useFloatingId;function createPubSub(){const map=new Map;return{emit(event,data){var _map$get;(_map$get=map.get(event))==null||_map$get.forEach(handler=>handler(data))},on(event,listener){map.set(event,[...map.get(event)||[],listener])},off(event,listener){var _map$get2;map.set(event,((_map$get2=map.get(event))==null?void 0:_map$get2.filter(l2=>l2!==listener))||[])}}}const FloatingNodeContext=React.createContext(null),FloatingTreeContext=React.createContext(null),useFloatingParentNodeId=()=>{var _React$useContext;return((_React$useContext=React.useContext(FloatingNodeContext))==null?void 0:_React$useContext.id)||null},useFloatingTree=()=>React.useContext(FloatingTreeContext);function createAttribute(name){return"data-floating-ui-"+name}function useLatestRef(value){const ref=useRef$1(value);return index$1(()=>{ref.current=value}),ref}const safePolygonIdentifier=createAttribute("safe-polygon");function getDelay(value,prop,pointerType){return pointerType&&!isMouseLikePointerType(pointerType)?0:typeof value=="number"?value:value?.[prop]}function useHover(context,props2){props2===void 0&&(props2={});const{open,onOpenChange,dataRef,events,elements}=context,{enabled=!0,delay=0,handleClose=null,mouseOnly=!1,restMs=0,move=!0}=props2,tree=useFloatingTree(),parentId=useFloatingParentNodeId(),handleCloseRef=useLatestRef(handleClose),delayRef=useLatestRef(delay),openRef=useLatestRef(open),pointerTypeRef=React.useRef(),timeoutRef=React.useRef(-1),handlerRef=React.useRef(),restTimeoutRef=React.useRef(-1),blockMouseMoveRef=React.useRef(!0),performedPointerEventsMutationRef=React.useRef(!1),unbindMouseMoveRef=React.useRef(()=>{}),isHoverOpen=React.useCallback(()=>{var _dataRef$current$open;const type=(_dataRef$current$open=dataRef.current.openEvent)==null?void 0:_dataRef$current$open.type;return type?.includes("mouse")&&type!=="mousedown"},[dataRef]);React.useEffect(()=>{if(!enabled)return;function onOpenChange2(_ref){let{open:open2}=_ref;open2||(clearTimeout(timeoutRef.current),clearTimeout(restTimeoutRef.current),blockMouseMoveRef.current=!0)}return events.on("openchange",onOpenChange2),()=>{events.off("openchange",onOpenChange2)}},[enabled,events]),React.useEffect(()=>{if(!enabled||!handleCloseRef.current||!open)return;function onLeave(event){isHoverOpen()&&onOpenChange(!1,event,"hover")}const html=getDocument(elements.floating).documentElement;return html.addEventListener("mouseleave",onLeave),()=>{html.removeEventListener("mouseleave",onLeave)}},[elements.floating,open,onOpenChange,enabled,handleCloseRef,isHoverOpen]);const closeWithDelay=React.useCallback(function(event,runElseBranch,reason){runElseBranch===void 0&&(runElseBranch=!0),reason===void 0&&(reason="hover");const closeDelay=getDelay(delayRef.current,"close",pointerTypeRef.current);closeDelay&&!handlerRef.current?(clearTimeout(timeoutRef.current),timeoutRef.current=window.setTimeout(()=>onOpenChange(!1,event,reason),closeDelay)):runElseBranch&&(clearTimeout(timeoutRef.current),onOpenChange(!1,event,reason))},[delayRef,onOpenChange]),cleanupMouseMoveHandler=useEffectEvent(()=>{unbindMouseMoveRef.current(),handlerRef.current=void 0}),clearPointerEvents=useEffectEvent(()=>{if(performedPointerEventsMutationRef.current){const body=getDocument(elements.floating).body;body.style.pointerEvents="",body.removeAttribute(safePolygonIdentifier),performedPointerEventsMutationRef.current=!1}});React.useEffect(()=>{if(!enabled)return;function isClickLikeOpenEvent(){return dataRef.current.openEvent?["click","mousedown"].includes(dataRef.current.openEvent.type):!1}function onMouseEnter(event){if(clearTimeout(timeoutRef.current),blockMouseMoveRef.current=!1,mouseOnly&&!isMouseLikePointerType(pointerTypeRef.current)||restMs>0&&!getDelay(delayRef.current,"open"))return;const openDelay=getDelay(delayRef.current,"open",pointerTypeRef.current);openDelay?timeoutRef.current=window.setTimeout(()=>{openRef.current||onOpenChange(!0,event,"hover")},openDelay):onOpenChange(!0,event,"hover")}function onMouseLeave(event){if(isClickLikeOpenEvent())return;unbindMouseMoveRef.current();const doc=getDocument(elements.floating);if(clearTimeout(restTimeoutRef.current),handleCloseRef.current&&dataRef.current.floatingContext){open||clearTimeout(timeoutRef.current),handlerRef.current=handleCloseRef.current({...dataRef.current.floatingContext,tree,x:event.clientX,y:event.clientY,onClose(){clearPointerEvents(),cleanupMouseMoveHandler(),closeWithDelay(event,!0,"safe-polygon")}});const handler=handlerRef.current;doc.addEventListener("mousemove",handler),unbindMouseMoveRef.current=()=>{doc.removeEventListener("mousemove",handler)};return}(pointerTypeRef.current==="touch"?!contains(elements.floating,event.relatedTarget):!0)&&closeWithDelay(event)}function onScrollMouseLeave(event){isClickLikeOpenEvent()||dataRef.current.floatingContext&&(handleCloseRef.current==null||handleCloseRef.current({...dataRef.current.floatingContext,tree,x:event.clientX,y:event.clientY,onClose(){clearPointerEvents(),cleanupMouseMoveHandler(),closeWithDelay(event)}})(event))}if(isElement(elements.domReference)){var _elements$floating;const ref=elements.domReference;return open&&ref.addEventListener("mouseleave",onScrollMouseLeave),(_elements$floating=elements.floating)==null||_elements$floating.addEventListener("mouseleave",onScrollMouseLeave),move&&ref.addEventListener("mousemove",onMouseEnter,{once:!0}),ref.addEventListener("mouseenter",onMouseEnter),ref.addEventListener("mouseleave",onMouseLeave),()=>{var _elements$floating2;open&&ref.removeEventListener("mouseleave",onScrollMouseLeave),(_elements$floating2=elements.floating)==null||_elements$floating2.removeEventListener("mouseleave",onScrollMouseLeave),move&&ref.removeEventListener("mousemove",onMouseEnter),ref.removeEventListener("mouseenter",onMouseEnter),ref.removeEventListener("mouseleave",onMouseLeave)}}},[elements,enabled,context,mouseOnly,restMs,move,closeWithDelay,cleanupMouseMoveHandler,clearPointerEvents,onOpenChange,open,openRef,tree,delayRef,handleCloseRef,dataRef]),index$1(()=>{var _handleCloseRef$curre;if(enabled&&open&&(_handleCloseRef$curre=handleCloseRef.current)!=null&&_handleCloseRef$curre.__options.blockPointerEvents&&isHoverOpen()){const body=getDocument(elements.floating).body;body.setAttribute(safePolygonIdentifier,""),body.style.pointerEvents="none",performedPointerEventsMutationRef.current=!0;const floatingEl=elements.floating;if(isElement(elements.domReference)&&floatingEl){var _tree$nodesRef$curren;const ref=elements.domReference,parentFloating=tree==null||(_tree$nodesRef$curren=tree.nodesRef.current.find(node=>node.id===parentId))==null||(_tree$nodesRef$curren=_tree$nodesRef$curren.context)==null?void 0:_tree$nodesRef$curren.elements.floating;return parentFloating&&(parentFloating.style.pointerEvents=""),ref.style.pointerEvents="auto",floatingEl.style.pointerEvents="auto",()=>{ref.style.pointerEvents="",floatingEl.style.pointerEvents=""}}}},[enabled,open,parentId,elements,tree,handleCloseRef,isHoverOpen]),index$1(()=>{open||(pointerTypeRef.current=void 0,cleanupMouseMoveHandler(),clearPointerEvents())},[open,cleanupMouseMoveHandler,clearPointerEvents]),React.useEffect(()=>()=>{cleanupMouseMoveHandler(),clearTimeout(timeoutRef.current),clearTimeout(restTimeoutRef.current),clearPointerEvents()},[enabled,elements.domReference,cleanupMouseMoveHandler,clearPointerEvents]);const reference=React.useMemo(()=>{function setPointerRef(event){pointerTypeRef.current=event.pointerType}return{onPointerDown:setPointerRef,onPointerEnter:setPointerRef,onMouseMove(event){const{nativeEvent}=event;function handleMouseMove(){!blockMouseMoveRef.current&&!openRef.current&&onOpenChange(!0,nativeEvent,"hover")}mouseOnly&&!isMouseLikePointerType(pointerTypeRef.current)||open||restMs===0||(clearTimeout(restTimeoutRef.current),pointerTypeRef.current==="touch"?handleMouseMove():restTimeoutRef.current=window.setTimeout(handleMouseMove,restMs))}}},[mouseOnly,onOpenChange,open,openRef,restMs]),floating=React.useMemo(()=>({onMouseEnter(){clearTimeout(timeoutRef.current)},onMouseLeave(event){closeWithDelay(event.nativeEvent,!1)}}),[closeWithDelay]);return React.useMemo(()=>enabled?{reference,floating}:{},[enabled,reference,floating])}const NOOP=()=>{},FloatingDelayGroupContext=React.createContext({delay:0,initialDelay:0,timeoutMs:0,currentId:null,setCurrentId:NOOP,setState:NOOP,isInstantPhase:!1}),useDelayGroupContext=()=>React.useContext(FloatingDelayGroupContext);function FloatingDelayGroup(props2){const{children:children2,delay,timeoutMs=0}=props2,[state,setState]=React.useReducer((prev,next)=>({...prev,...next}),{delay,timeoutMs,initialDelay:delay,currentId:null,isInstantPhase:!1}),initialCurrentIdRef=React.useRef(null),setCurrentId=React.useCallback(currentId=>{setState({currentId})},[]);return index$1(()=>{state.currentId?initialCurrentIdRef.current===null?initialCurrentIdRef.current=state.currentId:state.isInstantPhase||setState({isInstantPhase:!0}):(state.isInstantPhase&&setState({isInstantPhase:!1}),initialCurrentIdRef.current=null)},[state.currentId,state.isInstantPhase]),React.createElement(FloatingDelayGroupContext.Provider,{value:React.useMemo(()=>({...state,setState,setCurrentId}),[state,setCurrentId])},children2)}function useDelayGroup(context,options){options===void 0&&(options={});const{open,onOpenChange,floatingId}=context,{id:optionId}=options,id2=optionId??floatingId,groupContext=useDelayGroupContext(),{currentId,setCurrentId,initialDelay,setState,timeoutMs}=groupContext;return index$1(()=>{currentId&&(setState({delay:{open:1,close:getDelay(initialDelay,"close")}}),currentId!==id2&&onOpenChange(!1))},[id2,onOpenChange,setState,currentId,initialDelay]),index$1(()=>{function unset(){onOpenChange(!1),setState({delay:initialDelay,currentId:null})}if(currentId&&!open&¤tId===id2){if(timeoutMs){const timeout2=window.setTimeout(unset,timeoutMs);return()=>{clearTimeout(timeout2)}}unset()}},[open,setState,currentId,id2,onOpenChange,initialDelay,timeoutMs]),index$1(()=>{setCurrentId===NOOP||!open||setCurrentId(id2)},[open,setCurrentId,id2]),groupContext}function getChildren(nodes,id2){let allChildren=nodes.filter(node=>{var _node$context;return node.parentId===id2&&((_node$context=node.context)==null?void 0:_node$context.open)}),currentChildren=allChildren;for(;currentChildren.length;)currentChildren=nodes.filter(node=>{var _currentChildren;return(_currentChildren=currentChildren)==null?void 0:_currentChildren.some(n2=>{var _node$context2;return node.parentId===n2.id&&((_node$context2=node.context)==null?void 0:_node$context2.open)})}),allChildren=allChildren.concat(currentChildren);return allChildren}const bubbleHandlerKeys={pointerdown:"onPointerDown",mousedown:"onMouseDown",click:"onClick"},captureHandlerKeys={pointerdown:"onPointerDownCapture",mousedown:"onMouseDownCapture",click:"onClickCapture"},normalizeProp=normalizable=>{var _normalizable$escapeK,_normalizable$outside;return{escapeKey:typeof normalizable=="boolean"?normalizable:(_normalizable$escapeK=normalizable?.escapeKey)!=null?_normalizable$escapeK:!1,outsidePress:typeof normalizable=="boolean"?normalizable:(_normalizable$outside=normalizable?.outsidePress)!=null?_normalizable$outside:!0}};function useDismiss(context,props2){props2===void 0&&(props2={});const{open,onOpenChange,elements,dataRef}=context,{enabled=!0,escapeKey=!0,outsidePress:unstable_outsidePress=!0,outsidePressEvent="pointerdown",referencePress=!1,referencePressEvent="pointerdown",ancestorScroll=!1,bubbles,capture}=props2,tree=useFloatingTree(),outsidePressFn=useEffectEvent(typeof unstable_outsidePress=="function"?unstable_outsidePress:()=>!1),outsidePress=typeof unstable_outsidePress=="function"?outsidePressFn:unstable_outsidePress,insideReactTreeRef=React.useRef(!1),endedOrStartedInsideRef=React.useRef(!1),{escapeKey:escapeKeyBubbles,outsidePress:outsidePressBubbles}=normalizeProp(bubbles),{escapeKey:escapeKeyCapture,outsidePress:outsidePressCapture}=normalizeProp(capture),closeOnEscapeKeyDown=useEffectEvent(event=>{var _dataRef$current$floa;if(!open||!enabled||!escapeKey||event.key!=="Escape")return;const nodeId=(_dataRef$current$floa=dataRef.current.floatingContext)==null?void 0:_dataRef$current$floa.nodeId,children2=tree?getChildren(tree.nodesRef.current,nodeId):[];if(!escapeKeyBubbles&&(event.stopPropagation(),children2.length>0)){let shouldDismiss=!0;if(children2.forEach(child=>{var _child$context;if((_child$context=child.context)!=null&&_child$context.open&&!child.context.dataRef.current.__escapeKeyBubbles){shouldDismiss=!1;return}}),!shouldDismiss)return}onOpenChange(!1,isReactEvent(event)?event.nativeEvent:event,"escape-key")}),closeOnEscapeKeyDownCapture=useEffectEvent(event=>{var _getTarget2;const callback=()=>{var _getTarget;closeOnEscapeKeyDown(event),(_getTarget=getTarget(event))==null||_getTarget.removeEventListener("keydown",callback)};(_getTarget2=getTarget(event))==null||_getTarget2.addEventListener("keydown",callback)}),closeOnPressOutside=useEffectEvent(event=>{var _dataRef$current$floa2;const insideReactTree=insideReactTreeRef.current;insideReactTreeRef.current=!1;const endedOrStartedInside=endedOrStartedInsideRef.current;if(endedOrStartedInsideRef.current=!1,outsidePressEvent==="click"&&endedOrStartedInside||insideReactTree||typeof outsidePress=="function"&&!outsidePress(event))return;const target=getTarget(event),inertSelector="["+createAttribute("inert")+"]",markers=getDocument(elements.floating).querySelectorAll(inertSelector);let targetRootAncestor=isElement(target)?target:null;for(;targetRootAncestor&&!isLastTraversableNode(targetRootAncestor);){const nextParent=getParentNode(targetRootAncestor);if(isLastTraversableNode(nextParent)||!isElement(nextParent))break;targetRootAncestor=nextParent}if(markers.length&&isElement(target)&&!isRootElement(target)&&!contains(target,elements.floating)&&Array.from(markers).every(marker=>!contains(targetRootAncestor,marker)))return;if(isHTMLElement(target)&&floating){const canScrollX=target.clientWidth>0&&target.scrollWidth>target.clientWidth,canScrollY=target.clientHeight>0&&target.scrollHeight>target.clientHeight;let xCond=canScrollY&&event.offsetX>target.clientWidth;if(canScrollY&&getComputedStyle$2(target).direction==="rtl"&&(xCond=event.offsetX<=target.offsetWidth-target.clientWidth),xCond||canScrollX&&event.offsetY>target.clientHeight)return}const nodeId=(_dataRef$current$floa2=dataRef.current.floatingContext)==null?void 0:_dataRef$current$floa2.nodeId,targetIsInsideChildren=tree&&getChildren(tree.nodesRef.current,nodeId).some(node=>{var _node$context;return isEventTargetWithin(event,(_node$context=node.context)==null?void 0:_node$context.elements.floating)});if(isEventTargetWithin(event,elements.floating)||isEventTargetWithin(event,elements.domReference)||targetIsInsideChildren)return;const children2=tree?getChildren(tree.nodesRef.current,nodeId):[];if(children2.length>0){let shouldDismiss=!0;if(children2.forEach(child=>{var _child$context2;if((_child$context2=child.context)!=null&&_child$context2.open&&!child.context.dataRef.current.__outsidePressBubbles){shouldDismiss=!1;return}}),!shouldDismiss)return}onOpenChange(!1,event,"outside-press")}),closeOnPressOutsideCapture=useEffectEvent(event=>{var _getTarget4;const callback=()=>{var _getTarget3;closeOnPressOutside(event),(_getTarget3=getTarget(event))==null||_getTarget3.removeEventListener(outsidePressEvent,callback)};(_getTarget4=getTarget(event))==null||_getTarget4.addEventListener(outsidePressEvent,callback)});React.useEffect(()=>{if(!open||!enabled)return;dataRef.current.__escapeKeyBubbles=escapeKeyBubbles,dataRef.current.__outsidePressBubbles=outsidePressBubbles;function onScroll(event){onOpenChange(!1,event,"ancestor-scroll")}const doc=getDocument(elements.floating);escapeKey&&doc.addEventListener("keydown",escapeKeyCapture?closeOnEscapeKeyDownCapture:closeOnEscapeKeyDown,escapeKeyCapture),outsidePress&&doc.addEventListener(outsidePressEvent,outsidePressCapture?closeOnPressOutsideCapture:closeOnPressOutside,outsidePressCapture);let ancestors=[];return ancestorScroll&&(isElement(elements.domReference)&&(ancestors=getOverflowAncestors(elements.domReference)),isElement(elements.floating)&&(ancestors=ancestors.concat(getOverflowAncestors(elements.floating))),!isElement(elements.reference)&&elements.reference&&elements.reference.contextElement&&(ancestors=ancestors.concat(getOverflowAncestors(elements.reference.contextElement)))),ancestors=ancestors.filter(ancestor=>{var _doc$defaultView;return ancestor!==((_doc$defaultView=doc.defaultView)==null?void 0:_doc$defaultView.visualViewport)}),ancestors.forEach(ancestor=>{ancestor.addEventListener("scroll",onScroll,{passive:!0})}),()=>{escapeKey&&doc.removeEventListener("keydown",escapeKeyCapture?closeOnEscapeKeyDownCapture:closeOnEscapeKeyDown,escapeKeyCapture),outsidePress&&doc.removeEventListener(outsidePressEvent,outsidePressCapture?closeOnPressOutsideCapture:closeOnPressOutside,outsidePressCapture),ancestors.forEach(ancestor=>{ancestor.removeEventListener("scroll",onScroll)})}},[dataRef,elements,escapeKey,outsidePress,outsidePressEvent,open,onOpenChange,ancestorScroll,enabled,escapeKeyBubbles,outsidePressBubbles,closeOnEscapeKeyDown,escapeKeyCapture,closeOnEscapeKeyDownCapture,closeOnPressOutside,outsidePressCapture,closeOnPressOutsideCapture]),React.useEffect(()=>{insideReactTreeRef.current=!1},[outsidePress,outsidePressEvent]);const reference=React.useMemo(()=>({onKeyDown:closeOnEscapeKeyDown,[bubbleHandlerKeys[referencePressEvent]]:event=>{referencePress&&onOpenChange(!1,event.nativeEvent,"reference-press")}}),[closeOnEscapeKeyDown,onOpenChange,referencePress,referencePressEvent]),floating=React.useMemo(()=>({onKeyDown:closeOnEscapeKeyDown,onMouseDown(){endedOrStartedInsideRef.current=!0},onMouseUp(){endedOrStartedInsideRef.current=!0},[captureHandlerKeys[outsidePressEvent]]:()=>{insideReactTreeRef.current=!0}}),[closeOnEscapeKeyDown,outsidePressEvent]);return React.useMemo(()=>enabled?{reference,floating}:{},[enabled,reference,floating])}function useFloatingRootContext(options){const{open=!1,onOpenChange:onOpenChangeProp,elements:elementsProp}=options,floatingId=useId$1(),dataRef=React.useRef({}),[events]=React.useState(()=>createPubSub()),nested=useFloatingParentNodeId()!=null,[positionReference,setPositionReference]=React.useState(elementsProp.reference),onOpenChange=useEffectEvent((open2,event,reason)=>{dataRef.current.openEvent=open2?event:void 0,events.emit("openchange",{open:open2,event,reason,nested}),onOpenChangeProp?.(open2,event,reason)}),refs=React.useMemo(()=>({setPositionReference}),[]),elements=React.useMemo(()=>({reference:positionReference||elementsProp.reference||null,floating:elementsProp.floating||null,domReference:elementsProp.reference}),[positionReference,elementsProp.reference,elementsProp.floating]);return React.useMemo(()=>({dataRef,open,onOpenChange,elements,events,floatingId,refs}),[open,onOpenChange,elements,events,floatingId,refs])}function useFloating(options){options===void 0&&(options={});const{nodeId}=options,internalRootContext=useFloatingRootContext({...options,elements:{reference:null,floating:null,...options.elements}}),rootContext=options.rootContext||internalRootContext,computedElements=rootContext.elements,[_domReference,setDomReference]=React.useState(null),[positionReference,_setPositionReference]=React.useState(null),domReference=computedElements?.reference||_domReference,domReferenceRef=React.useRef(null),tree=useFloatingTree();index$1(()=>{domReference&&(domReferenceRef.current=domReference)},[domReference]);const position=useFloating$1({...options,elements:{...computedElements,...positionReference&&{reference:positionReference}}}),setPositionReference=React.useCallback(node=>{const computedPositionReference=isElement(node)?{getBoundingClientRect:()=>node.getBoundingClientRect(),contextElement:node}:node;_setPositionReference(computedPositionReference),position.refs.setReference(computedPositionReference)},[position.refs]),setReference=React.useCallback(node=>{(isElement(node)||node===null)&&(domReferenceRef.current=node,setDomReference(node)),(isElement(position.refs.reference.current)||position.refs.reference.current===null||node!==null&&!isElement(node))&&position.refs.setReference(node)},[position.refs]),refs=React.useMemo(()=>({...position.refs,setReference,setPositionReference,domReference:domReferenceRef}),[position.refs,setReference,setPositionReference]),elements=React.useMemo(()=>({...position.elements,domReference}),[position.elements,domReference]),context=React.useMemo(()=>({...position,...rootContext,refs,elements,nodeId}),[position,refs,elements,nodeId,rootContext]);return index$1(()=>{rootContext.dataRef.current.floatingContext=context;const node=tree?.nodesRef.current.find(node2=>node2.id===nodeId);node&&(node.context=context)}),React.useMemo(()=>({...position,context,refs,elements}),[position,refs,elements,context])}function useFocus(context,props2){props2===void 0&&(props2={});const{open,onOpenChange,events,dataRef,elements}=context,{enabled=!0,visibleOnly=!0}=props2,blockFocusRef=React.useRef(!1),timeoutRef=React.useRef(),keyboardModalityRef=React.useRef(!0);React.useEffect(()=>{if(!enabled)return;const win2=getWindow(elements.domReference);function onBlur(){!open&&isHTMLElement(elements.domReference)&&elements.domReference===activeElement(getDocument(elements.domReference))&&(blockFocusRef.current=!0)}function onKeyDown(){keyboardModalityRef.current=!0}return win2.addEventListener("blur",onBlur),win2.addEventListener("keydown",onKeyDown,!0),()=>{win2.removeEventListener("blur",onBlur),win2.removeEventListener("keydown",onKeyDown,!0)}},[elements.domReference,open,enabled]),React.useEffect(()=>{if(!enabled)return;function onOpenChange2(_ref){let{reason}=_ref;(reason==="reference-press"||reason==="escape-key")&&(blockFocusRef.current=!0)}return events.on("openchange",onOpenChange2),()=>{events.off("openchange",onOpenChange2)}},[events,enabled]),React.useEffect(()=>()=>{clearTimeout(timeoutRef.current)},[]);const reference=React.useMemo(()=>({onPointerDown(event){isVirtualPointerEvent(event.nativeEvent)||(keyboardModalityRef.current=!1)},onMouseLeave(){blockFocusRef.current=!1},onFocus(event){if(blockFocusRef.current)return;const target=getTarget(event.nativeEvent);if(visibleOnly&&isElement(target))try{if(isSafari()&&isMac())throw Error();if(!target.matches(":focus-visible"))return}catch{if(!keyboardModalityRef.current&&!isTypeableElement(target))return}onOpenChange(!0,event.nativeEvent,"focus")},onBlur(event){blockFocusRef.current=!1;const relatedTarget=event.relatedTarget,nativeEvent=event.nativeEvent,movedToFocusGuard=isElement(relatedTarget)&&relatedTarget.hasAttribute(createAttribute("focus-guard"))&&relatedTarget.getAttribute("data-type")==="outside";timeoutRef.current=window.setTimeout(()=>{var _dataRef$current$floa;const activeEl=activeElement(elements.domReference?elements.domReference.ownerDocument:document);!relatedTarget&&activeEl===elements.domReference||contains((_dataRef$current$floa=dataRef.current.floatingContext)==null?void 0:_dataRef$current$floa.refs.floating.current,activeEl)||contains(elements.domReference,activeEl)||movedToFocusGuard||onOpenChange(!1,nativeEvent,"focus")})}}),[dataRef,elements.domReference,onOpenChange,visibleOnly]);return React.useMemo(()=>enabled?{reference}:{},[enabled,reference])}const ACTIVE_KEY="active",SELECTED_KEY="selected";function mergeProps(userProps,propsList,elementKey){const map=new Map,isItem=elementKey==="item";let domUserProps=userProps;if(isItem&&userProps){const{[ACTIVE_KEY]:_,[SELECTED_KEY]:__,...validProps}=userProps;domUserProps=validProps}return{...elementKey==="floating"&&{tabIndex:-1},...domUserProps,...propsList.map(value=>{const propsOrGetProps=value?value[elementKey]:null;return typeof propsOrGetProps=="function"?userProps?propsOrGetProps(userProps):null:propsOrGetProps}).concat(userProps).reduce((acc,props2)=>(props2&&Object.entries(props2).forEach(_ref=>{let[key,value]=_ref;if(!(isItem&&[ACTIVE_KEY,SELECTED_KEY].includes(key)))if(key.indexOf("on")===0){if(map.has(key)||map.set(key,[]),typeof value=="function"){var _map$get;(_map$get=map.get(key))==null||_map$get.push(value),acc[key]=function(){for(var _map$get2,_len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return(_map$get2=map.get(key))==null?void 0:_map$get2.map(fn=>fn(...args)).find(val=>val!==void 0)}}}else acc[key]=value}),acc),{})}}function useInteractions(propsList){propsList===void 0&&(propsList=[]);const referenceDeps=propsList.map(key=>key?.reference),floatingDeps=propsList.map(key=>key?.floating),itemDeps=propsList.map(key=>key?.item),getReferenceProps=React.useCallback(userProps=>mergeProps(userProps,propsList,"reference"),referenceDeps),getFloatingProps=React.useCallback(userProps=>mergeProps(userProps,propsList,"floating"),floatingDeps),getItemProps=React.useCallback(userProps=>mergeProps(userProps,propsList,"item"),itemDeps);return React.useMemo(()=>({getReferenceProps,getFloatingProps,getItemProps}),[getReferenceProps,getFloatingProps,getItemProps])}const componentRoleToAriaRoleMap=new Map([["select","listbox"],["combobox","listbox"],["label",!1]]);function useRole(context,props2){var _componentRoleToAriaR;props2===void 0&&(props2={});const{open,floatingId}=context,{enabled=!0,role="dialog"}=props2,ariaRole=(_componentRoleToAriaR=componentRoleToAriaRoleMap.get(role))!=null?_componentRoleToAriaR:role,referenceId=useId$1(),isNested=useFloatingParentNodeId()!=null,reference=React.useMemo(()=>ariaRole==="tooltip"||role==="label"?{["aria-"+(role==="label"?"labelledby":"describedby")]:open?floatingId:void 0}:{"aria-expanded":open?"true":"false","aria-haspopup":ariaRole==="alertdialog"?"dialog":ariaRole,"aria-controls":open?floatingId:void 0,...ariaRole==="listbox"&&{role:"combobox"},...ariaRole==="menu"&&{id:referenceId},...ariaRole==="menu"&&isNested&&{role:"menuitem"},...role==="select"&&{"aria-autocomplete":"none"},...role==="combobox"&&{"aria-autocomplete":"list"}},[ariaRole,floatingId,isNested,open,referenceId,role]),floating=React.useMemo(()=>{const floatingProps={id:floatingId,...ariaRole&&{role:ariaRole}};return ariaRole==="tooltip"||role==="label"?floatingProps:{...floatingProps,...ariaRole==="menu"&&{"aria-labelledby":referenceId}}},[ariaRole,floatingId,referenceId,role]),item=React.useCallback(_ref=>{let{active,selected:selected2}=_ref;const commonProps={role:"option",...active&&{id:floatingId+"-option"}};switch(role){case"select":return{...commonProps,"aria-selected":active&&selected2};case"combobox":return{...commonProps,...active&&{"aria-selected":!0}}}return{}},[floatingId,role]);return React.useMemo(()=>enabled?{reference,floating,item}:{},[enabled,reference,floating,item])}function getFloatingPosition(dir,position){if(dir==="rtl"&&(position.includes("right")||position.includes("left"))){const[side,placement]=position.split("-"),flippedPosition=side==="right"?"left":"right";return placement===void 0?flippedPosition:`${flippedPosition}-${placement}`}return position}function horizontalSide(placement,arrowY,arrowOffset,arrowPosition){return placement==="center"||arrowPosition==="center"?{top:arrowY}:placement==="end"?{bottom:arrowOffset}:placement==="start"?{top:arrowOffset}:{}}function verticalSide(placement,arrowX,arrowOffset,arrowPosition,dir){return placement==="center"||arrowPosition==="center"?{left:arrowX}:placement==="end"?{[dir==="ltr"?"right":"left"]:arrowOffset}:placement==="start"?{[dir==="ltr"?"left":"right"]:arrowOffset}:{}}const radiusByFloatingSide={bottom:"borderTopLeftRadius",left:"borderTopRightRadius",right:"borderBottomLeftRadius",top:"borderBottomRightRadius"};function getArrowPositionStyles({position,arrowSize,arrowOffset,arrowRadius,arrowPosition,arrowX,arrowY,dir}){const[side,placement="center"]=position.split("-"),baseStyles={width:arrowSize,height:arrowSize,transform:"rotate(45deg)",position:"absolute",[radiusByFloatingSide[side]]:arrowRadius},arrowPlacement=-arrowSize/2;return side==="left"?{...baseStyles,...horizontalSide(placement,arrowY,arrowOffset,arrowPosition),right:arrowPlacement,borderLeftColor:"transparent",borderBottomColor:"transparent"}:side==="right"?{...baseStyles,...horizontalSide(placement,arrowY,arrowOffset,arrowPosition),left:arrowPlacement,borderRightColor:"transparent",borderTopColor:"transparent"}:side==="top"?{...baseStyles,...verticalSide(placement,arrowX,arrowOffset,arrowPosition,dir),bottom:arrowPlacement,borderTopColor:"transparent",borderLeftColor:"transparent"}:side==="bottom"?{...baseStyles,...verticalSide(placement,arrowX,arrowOffset,arrowPosition,dir),top:arrowPlacement,borderBottomColor:"transparent",borderRightColor:"transparent"}:{}}const FloatingArrow=forwardRef$1(({position,arrowSize,arrowOffset,arrowRadius,arrowPosition,visible:visible2,arrowX,arrowY,style:style2,...others},ref)=>{const{dir}=useDirection();return visible2?jsx("div",{...others,ref,style:{...style2,...getArrowPositionStyles({position,arrowSize,arrowOffset,arrowRadius,arrowPosition,dir,arrowX,arrowY})}}):null});FloatingArrow.displayName="@mantine/core/FloatingArrow";const[PopoverContextProvider,usePopoverContext]=createSafeContext("Popover component was not found in the tree");function FocusTrap({children:children2,active=!0,refProp="ref",innerRef}){const focusTrapRef=useFocusTrap(active),ref=useMergedRef(focusTrapRef,innerRef);return isElement$1(children2)?cloneElement(children2,{[refProp]:ref}):children2}function FocusTrapInitialFocus(props2){return jsx(VisuallyHidden,{tabIndex:-1,"data-autofocus":!0,...props2})}FocusTrap.displayName="@mantine/core/FocusTrap";FocusTrapInitialFocus.displayName="@mantine/core/FocusTrapInitialFocus";FocusTrap.InitialFocus=FocusTrapInitialFocus;function createPortalNode(props2){const node=document.createElement("div");return node.setAttribute("data-portal","true"),typeof props2.className=="string"&&node.classList.add(...props2.className.split(" ").filter(Boolean)),typeof props2.style=="object"&&Object.assign(node.style,props2.style),typeof props2.id=="string"&&node.setAttribute("id",props2.id),node}const defaultProps$1h={},Portal=forwardRef$1((props2,ref)=>{const{children:children2,target,...others}=useProps("Portal",defaultProps$1h,props2),[mounted,setMounted]=useState$1(!1),nodeRef=useRef$1(null);return useIsomorphicEffect(()=>(setMounted(!0),nodeRef.current=target?typeof target=="string"?document.querySelector(target):target:createPortalNode(others),assignRef(ref,nodeRef.current),!target&&nodeRef.current&&document.body.appendChild(nodeRef.current),()=>{!target&&nodeRef.current&&document.body.removeChild(nodeRef.current)}),[target]),!mounted||!nodeRef.current?null:createPortal(jsx(Fragment,{children:children2}),nodeRef.current)});Portal.displayName="@mantine/core/Portal";function OptionalPortal({withinPortal=!0,children:children2,...others}){return withinPortal?jsx(Portal,{...others,children:children2}):jsx(Fragment,{children:children2})}OptionalPortal.displayName="@mantine/core/OptionalPortal";const popIn=from=>({in:{opacity:1,transform:"scale(1)"},out:{opacity:0,transform:`scale(.9) translateY(${rem(from==="bottom"?10:-10)})`},transitionProperty:"transform, opacity"}),transitions$1={fade:{in:{opacity:1},out:{opacity:0},transitionProperty:"opacity"},"fade-up":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:`translateY(${rem(30)}`},transitionProperty:"opacity, transform"},"fade-down":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:`translateY(${rem(-30)}`},transitionProperty:"opacity, transform"},"fade-left":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:`translateX(${rem(30)}`},transitionProperty:"opacity, transform"},"fade-right":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:`translateX(${rem(-30)}`},transitionProperty:"opacity, transform"},scale:{in:{opacity:1,transform:"scale(1)"},out:{opacity:0,transform:"scale(0)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"scale-y":{in:{opacity:1,transform:"scaleY(1)"},out:{opacity:0,transform:"scaleY(0)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"scale-x":{in:{opacity:1,transform:"scaleX(1)"},out:{opacity:0,transform:"scaleX(0)"},common:{transformOrigin:"left"},transitionProperty:"transform, opacity"},"skew-up":{in:{opacity:1,transform:"translateY(0) skew(0deg, 0deg)"},out:{opacity:0,transform:`translateY(${rem(-20)}) skew(-10deg, -5deg)`},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"skew-down":{in:{opacity:1,transform:"translateY(0) skew(0deg, 0deg)"},out:{opacity:0,transform:`translateY(${rem(20)}) skew(-10deg, -5deg)`},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"rotate-left":{in:{opacity:1,transform:"translateY(0) rotate(0deg)"},out:{opacity:0,transform:`translateY(${rem(20)}) rotate(-5deg)`},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"rotate-right":{in:{opacity:1,transform:"translateY(0) rotate(0deg)"},out:{opacity:0,transform:`translateY(${rem(20)}) rotate(5deg)`},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"slide-down":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:"translateY(-100%)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"slide-up":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:"translateY(100%)"},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"slide-left":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:"translateX(100%)"},common:{transformOrigin:"left"},transitionProperty:"transform, opacity"},"slide-right":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:"translateX(-100%)"},common:{transformOrigin:"right"},transitionProperty:"transform, opacity"},pop:{...popIn("bottom"),common:{transformOrigin:"center center"}},"pop-bottom-left":{...popIn("bottom"),common:{transformOrigin:"bottom left"}},"pop-bottom-right":{...popIn("bottom"),common:{transformOrigin:"bottom right"}},"pop-top-left":{...popIn("top"),common:{transformOrigin:"top left"}},"pop-top-right":{...popIn("top"),common:{transformOrigin:"top right"}}},transitionStatuses={entering:"in",entered:"in",exiting:"out",exited:"out","pre-exiting":"out","pre-entering":"out"};function getTransitionStyles({transition,state,duration,timingFunction}){const shared={transitionDuration:`${duration}ms`,transitionTimingFunction:timingFunction};return typeof transition=="string"?transition in transitions$1?{transitionProperty:transitions$1[transition].transitionProperty,...shared,...transitions$1[transition].common,...transitions$1[transition][transitionStatuses[state]]}:{}:{transitionProperty:transition.transitionProperty,...shared,...transition.common,...transition[transitionStatuses[state]]}}function useTransition({duration,exitDuration,timingFunction,mounted,onEnter,onExit,onEntered,onExited,enterDelay,exitDelay}){const theme2=useMantineTheme(),shouldReduceMotion=useReducedMotion(),reduceMotion=theme2.respectReducedMotion?shouldReduceMotion:!1,[transitionDuration,setTransitionDuration]=useState$1(reduceMotion?0:duration),[transitionStatus,setStatus]=useState$1(mounted?"entered":"exited"),transitionTimeoutRef=useRef$1(-1),delayTimeoutRef=useRef$1(-1),rafRef=useRef$1(-1),handleStateChange=shouldMount=>{const preHandler=shouldMount?onEnter:onExit,handler=shouldMount?onEntered:onExited;window.clearTimeout(transitionTimeoutRef.current);const newTransitionDuration=reduceMotion?0:shouldMount?duration:exitDuration;setTransitionDuration(newTransitionDuration),newTransitionDuration===0?(typeof preHandler=="function"&&preHandler(),typeof handler=="function"&&handler(),setStatus(shouldMount?"entered":"exited")):rafRef.current=requestAnimationFrame(()=>{ReactDOM__default.flushSync(()=>{setStatus(shouldMount?"pre-entering":"pre-exiting")}),rafRef.current=requestAnimationFrame(()=>{typeof preHandler=="function"&&preHandler(),setStatus(shouldMount?"entering":"exiting"),transitionTimeoutRef.current=window.setTimeout(()=>{typeof handler=="function"&&handler(),setStatus(shouldMount?"entered":"exited")},newTransitionDuration)})})},handleTransitionWithDelay=shouldMount=>{if(window.clearTimeout(delayTimeoutRef.current),typeof(shouldMount?enterDelay:exitDelay)!="number"){handleStateChange(shouldMount);return}delayTimeoutRef.current=window.setTimeout(()=>{handleStateChange(shouldMount)},shouldMount?enterDelay:exitDelay)};return useDidUpdate(()=>{handleTransitionWithDelay(mounted)},[mounted]),useEffect$1(()=>()=>{window.clearTimeout(transitionTimeoutRef.current),cancelAnimationFrame(rafRef.current)},[]),{transitionDuration,transitionStatus,transitionTimingFunction:timingFunction||"ease"}}function Transition$1({keepMounted,transition="fade",duration=250,exitDuration=duration,mounted,children:children2,timingFunction="ease",onExit,onEntered,onEnter,onExited,enterDelay,exitDelay}){const{transitionDuration,transitionStatus,transitionTimingFunction}=useTransition({mounted,exitDuration,duration,timingFunction,onExit,onEntered,onEnter,onExited,enterDelay,exitDelay});return transitionDuration===0?mounted?jsx(Fragment,{children:children2({})}):keepMounted?children2({display:"none"}):null:transitionStatus==="exited"?keepMounted?children2({display:"none"}):null:jsx(Fragment,{children:children2(getTransitionStyles({transition,duration:transitionDuration,state:transitionStatus,timingFunction:transitionTimingFunction}))})}Transition$1.displayName="@mantine/core/Transition";var __default__$w={dropdown:"m_38a85659",arrow:"m_a31dc6c1"};const defaultProps$1g={},PopoverDropdown=factory((_props,ref)=>{const props2=useProps("PopoverDropdown",defaultProps$1g,_props),{className,style:style2,vars,children:children2,onKeyDownCapture,variant,classNames,styles,...others}=props2,ctx=usePopoverContext(),returnFocus=useFocusReturn({opened:ctx.opened,shouldReturnFocus:ctx.returnFocus}),accessibleProps=ctx.withRoles?{"aria-labelledby":ctx.getTargetId(),id:ctx.getDropdownId(),role:"dialog",tabIndex:-1}:{},mergedRef=useMergedRef(ref,ctx.floating);return ctx.disabled?null:jsx(OptionalPortal,{...ctx.portalProps,withinPortal:ctx.withinPortal,children:jsx(Transition$1,{mounted:ctx.opened,...ctx.transitionProps,transition:ctx.transitionProps?.transition||"fade",duration:ctx.transitionProps?.duration??150,keepMounted:ctx.keepMounted,exitDuration:typeof ctx.transitionProps?.exitDuration=="number"?ctx.transitionProps.exitDuration:ctx.transitionProps?.duration,children:transitionStyles=>jsx(FocusTrap,{active:ctx.trapFocus,innerRef:mergedRef,children:jsxs(Box,{...accessibleProps,...others,variant,onKeyDownCapture:closeOnEscape(ctx.onClose,{active:ctx.closeOnEscape,onTrigger:returnFocus,onKeyDown:onKeyDownCapture}),"data-position":ctx.placement,"data-fixed":ctx.floatingStrategy==="fixed"||void 0,...ctx.getStyles("dropdown",{className,props:props2,classNames,styles,style:[{...transitionStyles,zIndex:ctx.zIndex,top:ctx.y??0,left:ctx.x??0,width:ctx.width==="target"?void 0:rem(ctx.width)},style2]}),children:[children2,jsx(FloatingArrow,{ref:ctx.arrowRef,arrowX:ctx.arrowX,arrowY:ctx.arrowY,visible:ctx.withArrow,position:ctx.placement,arrowSize:ctx.arrowSize,arrowRadius:ctx.arrowRadius,arrowOffset:ctx.arrowOffset,arrowPosition:ctx.arrowPosition,...ctx.getStyles("arrow",{props:props2,classNames,styles})})]})})})})});PopoverDropdown.classes=__default__$w;PopoverDropdown.displayName="@mantine/core/PopoverDropdown";const defaultProps$1f={refProp:"ref",popupType:"dialog"},PopoverTarget=factory((props2,ref)=>{const{children:children2,refProp,popupType,...others}=useProps("PopoverTarget",defaultProps$1f,props2);if(!isElement$1(children2))throw new Error("Popover.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");const forwardedProps=others,ctx=usePopoverContext(),targetRef=useMergedRef(ctx.reference,children2.ref,ref),accessibleProps=ctx.withRoles?{"aria-haspopup":popupType,"aria-expanded":ctx.opened,"aria-controls":ctx.getDropdownId(),id:ctx.getTargetId()}:{};return cloneElement(children2,{...forwardedProps,...accessibleProps,...ctx.targetProps,className:clsx(ctx.targetProps.className,forwardedProps.className,children2.props.className),[refProp]:targetRef,...ctx.controlled?null:{onClick:ctx.onToggle}})});PopoverTarget.displayName="@mantine/core/PopoverTarget";function useFloatingAutoUpdate({opened,floating,position,positionDependencies}){const[delayedUpdate,setDelayedUpdate]=useState$1(0);useEffect$1(()=>{if(floating.refs.reference.current&&floating.refs.floating.current)return autoUpdate(floating.refs.reference.current,floating.refs.floating.current,floating.update)},[floating.refs.reference.current,floating.refs.floating.current,opened,delayedUpdate,position]),useDidUpdate(()=>{floating.update()},positionDependencies),useDidUpdate(()=>{setDelayedUpdate(c2=>c2+1)},[opened])}function getDefaultMiddlewares(middlewares){if(middlewares===void 0)return{shift:!0,flip:!0};const result={...middlewares};return middlewares.shift===void 0&&(result.shift=!0),middlewares.flip===void 0&&(result.flip=!0),result}function getPopoverMiddlewares(options,getFloating){const middlewaresOptions=getDefaultMiddlewares(options.middlewares),middlewares=[offset(options.offset)];return middlewaresOptions.shift&&middlewares.push(shift(typeof middlewaresOptions.shift=="boolean"?{limiter:limitShift(),padding:5}:{limiter:limitShift(),padding:5,...middlewaresOptions.shift})),middlewaresOptions.flip&&middlewares.push(typeof middlewaresOptions.flip=="boolean"?flip():flip(middlewaresOptions.flip)),middlewaresOptions.inline&&middlewares.push(typeof middlewaresOptions.inline=="boolean"?inline():inline(middlewaresOptions.inline)),middlewares.push(arrow({element:options.arrowRef,padding:options.arrowOffset})),(middlewaresOptions.size||options.width==="target")&&middlewares.push(size({...typeof middlewaresOptions.size=="boolean"?{}:middlewaresOptions.size,apply({rects,availableWidth,availableHeight}){const styles=getFloating().refs.floating.current?.style??{};middlewaresOptions.size&&Object.assign(styles,{maxWidth:`${availableWidth}px`,maxHeight:`${availableHeight}px`}),options.width==="target"&&Object.assign(styles,{width:`${rects.reference.width}px`})}})),middlewares}function usePopover(options){const[_opened,setOpened]=useUncontrolled({value:options.opened,defaultValue:options.defaultOpened,finalValue:!1,onChange:options.onChange}),onClose=()=>{_opened&&(options.onClose?.(),setOpened(!1))},onToggle=()=>{_opened?(options.onClose?.(),setOpened(!1)):(options.onOpen?.(),setOpened(!0))},floating=useFloating({strategy:options.strategy,placement:options.position,middleware:getPopoverMiddlewares(options,()=>floating)});return useFloatingAutoUpdate({opened:options.opened,position:options.position,positionDependencies:options.positionDependencies||[],floating}),useDidUpdate(()=>{options.onPositionChange?.(floating.placement)},[floating.placement]),useDidUpdate(()=>{options.opened?options.onOpen?.():options.onClose?.()},[options.opened]),{floating,controlled:typeof options.opened=="boolean",opened:_opened,onClose,onToggle}}const defaultProps$1e={position:"bottom",offset:8,positionDependencies:[],transitionProps:{transition:"fade",duration:150},middlewares:{flip:!0,shift:!0,inline:!1},arrowSize:7,arrowOffset:5,arrowRadius:0,arrowPosition:"side",closeOnClickOutside:!0,withinPortal:!0,closeOnEscape:!0,trapFocus:!1,withRoles:!0,returnFocus:!1,clickOutsideEvents:["mousedown","touchstart"],zIndex:getDefaultZIndex("popover"),__staticSelector:"Popover",width:"max-content"},varsResolver$z=(_,{radius,shadow})=>({dropdown:{"--popover-radius":radius===void 0?void 0:getRadius(radius),"--popover-shadow":getShadow(shadow)}});function Popover(_props){const props2=useProps("Popover",defaultProps$1e,_props),{children:children2,position,offset:offset2,onPositionChange,positionDependencies,opened,transitionProps,width,middlewares,withArrow,arrowSize,arrowOffset,arrowRadius,arrowPosition,unstyled,classNames,styles,closeOnClickOutside,withinPortal,portalProps,closeOnEscape:closeOnEscape2,clickOutsideEvents,trapFocus,onClose,onOpen,onChange,zIndex,radius,shadow,id:id2,defaultOpened,__staticSelector,withRoles,disabled,returnFocus,variant,keepMounted,vars,floatingStrategy,...others}=props2,getStyles2=useStyles({name:__staticSelector,props:props2,classes:__default__$w,classNames,styles,unstyled,rootSelector:"dropdown",vars,varsResolver:varsResolver$z}),arrowRef=useRef$1(null),[targetNode,setTargetNode]=useState$1(null),[dropdownNode,setDropdownNode]=useState$1(null),{dir}=useDirection(),uid=useId$2(id2),popover=usePopover({middlewares,width,position:getFloatingPosition(dir,position),offset:typeof offset2=="number"?offset2+(withArrow?arrowSize/2:0):offset2,arrowRef,arrowOffset,onPositionChange,positionDependencies,opened,defaultOpened,onChange,onOpen,onClose,strategy:floatingStrategy});useClickOutside(()=>closeOnClickOutside&&popover.onClose(),clickOutsideEvents,[targetNode,dropdownNode]);const reference=useCallback$1(node=>{setTargetNode(node),popover.floating.refs.setReference(node)},[popover.floating.refs.setReference]),floating=useCallback$1(node=>{setDropdownNode(node),popover.floating.refs.setFloating(node)},[popover.floating.refs.setFloating]);return jsx(PopoverContextProvider,{value:{returnFocus,disabled,controlled:popover.controlled,reference,floating,x:popover.floating.x,y:popover.floating.y,arrowX:popover.floating?.middlewareData?.arrow?.x,arrowY:popover.floating?.middlewareData?.arrow?.y,opened:popover.opened,arrowRef,transitionProps,width,withArrow,arrowSize,arrowOffset,arrowRadius,arrowPosition,placement:popover.floating.placement,trapFocus,withinPortal,portalProps,zIndex,radius,shadow,closeOnEscape:closeOnEscape2,onClose:popover.onClose,onToggle:popover.onToggle,getTargetId:()=>`${uid}-target`,getDropdownId:()=>`${uid}-dropdown`,withRoles,targetProps:others,__staticSelector,classNames,styles,unstyled,variant,keepMounted,getStyles:getStyles2,floatingStrategy},children:children2})}Popover.Target=PopoverTarget;Popover.Dropdown=PopoverDropdown;Popover.displayName="@mantine/core/Popover";Popover.extend=input=>input;var __default__$v={root:"m_5ae2e3c",barsLoader:"m_7a2bd4cd",bar:"m_870bb79","bars-loader-animation":"m_5d2b3b9d",dotsLoader:"m_4e3f22d7",dot:"m_870c4af","loader-dots-animation":"m_aac34a1",ovalLoader:"m_b34414df","oval-loader-animation":"m_f8e89c4b"};const Bars=forwardRef$1(({className,...others},ref)=>jsxs(Box,{component:"span",className:clsx(__default__$v.barsLoader,className),...others,ref,children:[jsx("span",{className:__default__$v.bar}),jsx("span",{className:__default__$v.bar}),jsx("span",{className:__default__$v.bar})]})),Dots=forwardRef$1(({className,...others},ref)=>jsxs(Box,{component:"span",className:clsx(__default__$v.dotsLoader,className),...others,ref,children:[jsx("span",{className:__default__$v.dot}),jsx("span",{className:__default__$v.dot}),jsx("span",{className:__default__$v.dot})]})),Oval=forwardRef$1(({className,...others},ref)=>jsx(Box,{component:"span",className:clsx(__default__$v.ovalLoader,className),...others,ref})),defaultLoaders={bars:Bars,oval:Oval,dots:Dots},defaultProps$1d={loaders:defaultLoaders,type:"oval"},varsResolver$y=(theme2,{size:size2,color:color2})=>({root:{"--loader-size":getSize(size2,"loader-size"),"--loader-color":color2?getThemeColor(color2,theme2):void 0}}),Loader=factory((_props,ref)=>{const props2=useProps("Loader",defaultProps$1d,_props),{size:size2,color:color2,type,vars,className,style:style2,classNames,styles,unstyled,loaders,variant,children:children2,...others}=props2,getStyles2=useStyles({name:"Loader",props:props2,classes:__default__$v,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$y});return children2?jsx(Box,{...getStyles2("root"),ref,...others,children:children2}):jsx(Box,{...getStyles2("root"),ref,component:loaders[type],variant,size:size2,...others})});Loader.defaultLoaders=defaultLoaders;Loader.classes=__default__$v;Loader.displayName="@mantine/core/Loader";var __default__$u={root:"m_8d3f4000",icon:"m_8d3afb97",loader:"m_302b9fb1",group:"m_1a0f1b21"};const defaultProps$1c={orientation:"horizontal"},varsResolver$x=(_,{borderWidth})=>({group:{"--ai-border-width":rem(borderWidth)}}),ActionIconGroup=factory((_props,ref)=>{const props2=useProps("ActionIconGroup",defaultProps$1c,_props),{className,style:style2,classNames,styles,unstyled,orientation,vars,borderWidth,variant,mod,...others}=useProps("ActionIconGroup",defaultProps$1c,_props),getStyles2=useStyles({name:"ActionIconGroup",props:props2,classes:__default__$u,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$x,rootSelector:"group"});return jsx(Box,{...getStyles2("group"),ref,variant,mod:[{"data-orientation":orientation},mod],role:"group",...others})});ActionIconGroup.classes=__default__$u;ActionIconGroup.displayName="@mantine/core/ActionIconGroup";const defaultProps$1b={},varsResolver$w=(theme2,{size:size2,radius,variant,gradient,color:color2,autoContrast})=>{const colors2=theme2.variantColorResolver({color:color2||theme2.primaryColor,theme:theme2,gradient,variant:variant||"filled",autoContrast});return{root:{"--ai-size":getSize(size2,"ai-size"),"--ai-radius":radius===void 0?void 0:getRadius(radius),"--ai-bg":color2||variant?colors2.background:void 0,"--ai-hover":color2||variant?colors2.hover:void 0,"--ai-hover-color":color2||variant?colors2.hoverColor:void 0,"--ai-color":colors2.color,"--ai-bd":color2||variant?colors2.border:void 0}}},ActionIcon=polymorphicFactory((_props,ref)=>{const props2=useProps("ActionIcon",defaultProps$1b,_props),{className,unstyled,variant,classNames,styles,style:style2,loading,loaderProps,size:size2,color:color2,radius,__staticSelector,gradient,vars,children:children2,disabled,"data-disabled":dataDisabled,autoContrast,mod,...others}=props2,getStyles2=useStyles({name:["ActionIcon",__staticSelector],props:props2,className,style:style2,classes:__default__$u,classNames,styles,unstyled,vars,varsResolver:varsResolver$w});return jsxs(UnstyledButton,{...getStyles2("root",{active:!disabled&&!loading&&!dataDisabled}),...others,unstyled,variant,size:size2,disabled:disabled||loading,ref,mod:[{loading,disabled:disabled||dataDisabled},mod],children:[jsx(Transition$1,{mounted:!!loading,transition:"slide-down",duration:150,children:transitionStyles=>jsx(Box,{component:"span",...getStyles2("loader",{style:transitionStyles}),"aria-hidden":!0,children:jsx(Loader,{color:"var(--ai-color)",size:"calc(var(--ai-size) * 0.55)",...loaderProps})})}),jsx(Box,{component:"span",mod:{loading},...getStyles2("icon"),children:children2})]})});ActionIcon.classes=__default__$u;ActionIcon.displayName="@mantine/core/ActionIcon";ActionIcon.Group=ActionIconGroup;const CloseIcon=forwardRef$1(({size:size2="var(--cb-icon-size, 70%)",style:style2,...others},ref)=>jsx("svg",{viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{...style2,width:size2,height:size2},ref,...others,children:jsx("path",{d:"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})}));CloseIcon.displayName="@mantine/core/CloseIcon";var __default__$t={root:"m_86a44da5","root--subtle":"m_220c80f2"};const defaultProps$1a={variant:"subtle"},varsResolver$v=(_,{size:size2,radius,iconSize})=>({root:{"--cb-size":getSize(size2,"cb-size"),"--cb-radius":radius===void 0?void 0:getRadius(radius),"--cb-icon-size":rem(iconSize)}}),CloseButton=polymorphicFactory((_props,ref)=>{const props2=useProps("CloseButton",defaultProps$1a,_props),{iconSize,children:children2,vars,radius,className,classNames,style:style2,styles,unstyled,"data-disabled":dataDisabled,disabled,variant,icon,mod,...others}=props2,getStyles2=useStyles({name:"CloseButton",props:props2,className,style:style2,classes:__default__$t,classNames,styles,unstyled,vars,varsResolver:varsResolver$v});return jsxs(UnstyledButton,{ref,...others,unstyled,variant,disabled,mod:[{disabled:disabled||dataDisabled},mod],...getStyles2("root",{variant,active:!disabled&&!dataDisabled}),children:[icon||jsx(CloseIcon,{}),children2]})});CloseButton.classes=__default__$t;CloseButton.displayName="@mantine/core/CloseButton";function filterFalsyChildren(children2){return Children.toArray(children2).filter(Boolean)}var __default__$s={root:"m_4081bf90"};const defaultProps$19={preventGrowOverflow:!0,gap:"md",align:"center",justify:"flex-start",wrap:"wrap"},varsResolver$u=(_,{grow,preventGrowOverflow,gap,align,justify,wrap},{childWidth})=>({root:{"--group-child-width":grow&&preventGrowOverflow?childWidth:void 0,"--group-gap":getSpacing(gap),"--group-align":align,"--group-justify":justify,"--group-wrap":wrap}}),Group=factory((_props,ref)=>{const props2=useProps("Group",defaultProps$19,_props),{classNames,className,style:style2,styles,unstyled,children:children2,gap,align,justify,wrap,grow,preventGrowOverflow,vars,variant,__size,mod,...others}=props2,filteredChildren=filterFalsyChildren(children2),childrenCount=filteredChildren.length,resolvedGap=getSpacing(gap??"md"),stylesCtx={childWidth:`calc(${100/childrenCount}% - (${resolvedGap} - ${resolvedGap} / ${childrenCount}))`},getStyles2=useStyles({name:"Group",props:props2,stylesCtx,className,style:style2,classes:__default__$s,classNames,styles,unstyled,vars,varsResolver:varsResolver$u});return jsx(Box,{...getStyles2("root"),ref,variant,mod:[{grow},mod],size:__size,...others,children:filteredChildren})});Group.classes=__default__$s;Group.displayName="@mantine/core/Group";var __default__$r={root:"m_9814e45f"};const defaultProps$18={zIndex:getDefaultZIndex("modal")},varsResolver$t=(_,{gradient,color:color2,backgroundOpacity,blur,radius,zIndex})=>({root:{"--overlay-bg":gradient||(color2!==void 0||backgroundOpacity!==void 0)&&rgba$2(color2||"#000",backgroundOpacity??.6)||void 0,"--overlay-filter":blur?`blur(${rem(blur)})`:void 0,"--overlay-radius":radius===void 0?void 0:getRadius(radius),"--overlay-z-index":zIndex?.toString()}}),Overlay=polymorphicFactory((_props,ref)=>{const props2=useProps("Overlay",defaultProps$18,_props),{classNames,className,style:style2,styles,unstyled,vars,fixed,center,children:children2,radius,zIndex,gradient,blur,color:color2,backgroundOpacity,mod,...others}=props2,getStyles2=useStyles({name:"Overlay",props:props2,classes:__default__$r,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$t});return jsx(Box,{ref,...getStyles2("root"),mod:[{center,fixed},mod],...others,children:children2})});Overlay.classes=__default__$r;Overlay.displayName="@mantine/core/Overlay";const[ModalBaseProvider,useModalBaseContext]=createSafeContext("ModalBase component was not found in tree");function useLockScroll({opened,transitionDuration}){const[shouldLockScroll,setShouldLockScroll]=useState$1(opened),timeout2=useRef$1(),_transitionDuration=useReducedMotion()?0:transitionDuration;return useEffect$1(()=>(opened?(setShouldLockScroll(!0),window.clearTimeout(timeout2.current)):_transitionDuration===0?setShouldLockScroll(!1):timeout2.current=window.setTimeout(()=>setShouldLockScroll(!1),_transitionDuration),()=>window.clearTimeout(timeout2.current)),[opened,_transitionDuration]),shouldLockScroll}function useModal({id:id2,transitionProps,opened,trapFocus,closeOnEscape:closeOnEscape2,onClose,returnFocus}){const _id=useId$2(id2),[titleMounted,setTitleMounted]=useState$1(!1),[bodyMounted,setBodyMounted]=useState$1(!1),transitionDuration=typeof transitionProps?.duration=="number"?transitionProps?.duration:200,shouldLockScroll=useLockScroll({opened,transitionDuration});return useWindowEvent("keydown",event=>{event.key==="Escape"&&closeOnEscape2&&opened&&event.target?.getAttribute("data-mantine-stop-propagation")!=="true"&&onClose()},{capture:!0}),useFocusReturn({opened,shouldReturnFocus:trapFocus&&returnFocus}),{_id,titleMounted,bodyMounted,shouldLockScroll,setTitleMounted,setBodyMounted}}const ModalBase=forwardRef$1(({keepMounted,opened,onClose,id:id2,transitionProps,trapFocus,closeOnEscape:closeOnEscape2,returnFocus,closeOnClickOutside,withinPortal,portalProps,lockScroll,children:children2,zIndex,shadow,padding,__vars,unstyled,removeScrollProps,...others},ref)=>{const{_id,titleMounted,bodyMounted,shouldLockScroll,setTitleMounted,setBodyMounted}=useModal({id:id2,transitionProps,opened,trapFocus,closeOnEscape:closeOnEscape2,onClose,returnFocus}),{key:removeScrollKey,...otherRemoveScrollProps}=removeScrollProps||{};return jsx(OptionalPortal,{...portalProps,withinPortal,children:jsx(ModalBaseProvider,{value:{opened,onClose,closeOnClickOutside,transitionProps:{...transitionProps,keepMounted},getTitleId:()=>`${_id}-title`,getBodyId:()=>`${_id}-body`,titleMounted,bodyMounted,setTitleMounted,setBodyMounted,trapFocus,closeOnEscape:closeOnEscape2,zIndex,unstyled},children:jsx(ReactRemoveScroll,{enabled:shouldLockScroll&&lockScroll,...otherRemoveScrollProps,children:jsx(Box,{ref,...others,__vars:{...__vars,"--mb-z-index":(zIndex||getDefaultZIndex("modal")).toString(),"--mb-shadow":getShadow(shadow),"--mb-padding":getSpacing(padding)},children:children2})},removeScrollKey)})})});function useModalBodyId(){const ctx=useModalBaseContext();return useEffect$1(()=>(ctx.setBodyMounted(!0),()=>ctx.setBodyMounted(!1)),[]),ctx.getBodyId()}var __default__$q={title:"m_615af6c9",header:"m_b5489c3c",inner:"m_60c222c7",content:"m_fd1ab0aa",close:"m_606cb269",body:"m_5df29311"};const ModalBaseBody=forwardRef$1(({className,...others},ref)=>{const bodyId=useModalBodyId(),ctx=useModalBaseContext();return jsx(Box,{ref,...others,id:bodyId,className:clsx({[__default__$q.body]:!ctx.unstyled},className)})});ModalBaseBody.displayName="@mantine/core/ModalBaseBody";const ModalBaseCloseButton=forwardRef$1(({className,onClick,...others},ref)=>{const ctx=useModalBaseContext();return jsx(CloseButton,{ref,...others,onClick:event=>{ctx.onClose(),onClick?.(event)},className:clsx({[__default__$q.close]:!ctx.unstyled},className),unstyled:ctx.unstyled})});ModalBaseCloseButton.displayName="@mantine/core/ModalBaseCloseButton";const ModalBaseContent=forwardRef$1(({transitionProps,className,innerProps,onKeyDown,style:style2,...others},ref)=>{const ctx=useModalBaseContext();return jsx(Transition$1,{mounted:ctx.opened,transition:"pop",...ctx.transitionProps,...transitionProps,children:transitionStyles=>jsx("div",{...innerProps,className:clsx({[__default__$q.inner]:!ctx.unstyled},innerProps.className),children:jsx(FocusTrap,{active:ctx.opened&&ctx.trapFocus,innerRef:ref,children:jsx(Paper,{...others,component:"section",role:"dialog",tabIndex:-1,"aria-modal":!0,"aria-describedby":ctx.bodyMounted?ctx.getBodyId():void 0,"aria-labelledby":ctx.titleMounted?ctx.getTitleId():void 0,style:[style2,transitionStyles],className:clsx({[__default__$q.content]:!ctx.unstyled},className),unstyled:ctx.unstyled,children:others.children})})})})}),ModalBaseHeader=forwardRef$1(({className,...others},ref)=>{const ctx=useModalBaseContext();return jsx(Box,{component:"header",ref,className:clsx({[__default__$q.header]:!ctx.unstyled},className),...others})});ModalBaseHeader.displayName="@mantine/core/ModalBaseHeader";const DEFAULT_TRANSITION={duration:200,timingFunction:"ease",transition:"fade"};function useModalTransition(transitionOverride){const ctx=useModalBaseContext();return{...DEFAULT_TRANSITION,...ctx.transitionProps,...transitionOverride}}const ModalBaseOverlay=forwardRef$1(({onClick,transitionProps,style:style2,...others},ref)=>{const ctx=useModalBaseContext(),transition=useModalTransition(transitionProps);return jsx(Transition$1,{mounted:ctx.opened,...transition,transition:"fade",children:transitionStyles=>jsx(Overlay,{ref,fixed:!0,style:[style2,transitionStyles],zIndex:ctx.zIndex,unstyled:ctx.unstyled,onClick:event=>{onClick?.(event),ctx.closeOnClickOutside&&ctx.onClose()},...others})})});ModalBaseOverlay.displayName="@mantine/core/ModalBaseOverlay";function useModalTitle(){const ctx=useModalBaseContext();return useEffect$1(()=>(ctx.setTitleMounted(!0),()=>ctx.setTitleMounted(!1)),[]),ctx.getTitleId()}const ModalBaseTitle=forwardRef$1(({className,...others},ref)=>{const id2=useModalTitle(),ctx=useModalBaseContext();return jsx(Box,{component:"h2",ref,className:clsx({[__default__$q.title]:!ctx.unstyled},className),...others,id:id2})});ModalBaseTitle.displayName="@mantine/core/ModalBaseTitle";function NativeScrollArea({children:children2}){return jsx(Fragment,{children:children2})}const[InputWrapperProvider,useInputWrapperContext]=createOptionalContext({offsetBottom:!1,offsetTop:!1,describedBy:void 0,getStyles:null,inputId:void 0,labelId:void 0});var __default__$p={wrapper:"m_6c018570",input:"m_8fb7ebe7",section:"m_82577fc2",placeholder:"m_88bacfd0",root:"m_46b77525",label:"m_8fdc1311",required:"m_78a94662",error:"m_8f816625",description:"m_fe47ce59"};const defaultProps$17={},varsResolver$s=(_,{size:size2})=>({description:{"--input-description-size":size2===void 0?void 0:`calc(${getFontSize(size2)} - ${rem(2)})`}}),InputDescription=factory((_props,ref)=>{const props2=useProps("InputDescription",defaultProps$17,_props),{classNames,className,style:style2,styles,unstyled,vars,size:size2,__staticSelector,__inheritStyles=!0,variant,...others}=useProps("InputDescription",defaultProps$17,props2),ctx=useInputWrapperContext(),_getStyles=useStyles({name:["InputWrapper",__staticSelector],props:props2,classes:__default__$p,className,style:style2,classNames,styles,unstyled,rootSelector:"description",vars,varsResolver:varsResolver$s}),getStyles2=__inheritStyles&&ctx?.getStyles||_getStyles;return jsx(Box,{component:"p",ref,variant,size:size2,...getStyles2("description",ctx?.getStyles?{className,style:style2}:void 0),...others})});InputDescription.classes=__default__$p;InputDescription.displayName="@mantine/core/InputDescription";const defaultProps$16={},varsResolver$r=(_,{size:size2})=>({error:{"--input-error-size":size2===void 0?void 0:`calc(${getFontSize(size2)} - ${rem(2)})`}}),InputError=factory((_props,ref)=>{const props2=useProps("InputError",defaultProps$16,_props),{classNames,className,style:style2,styles,unstyled,vars,size:size2,__staticSelector,__inheritStyles=!0,variant,...others}=props2,_getStyles=useStyles({name:["InputWrapper",__staticSelector],props:props2,classes:__default__$p,className,style:style2,classNames,styles,unstyled,rootSelector:"error",vars,varsResolver:varsResolver$r}),ctx=useInputWrapperContext(),getStyles2=__inheritStyles&&ctx?.getStyles||_getStyles;return jsx(Box,{component:"p",ref,variant,size:size2,...getStyles2("error",ctx?.getStyles?{className,style:style2}:void 0),...others})});InputError.classes=__default__$p;InputError.displayName="@mantine/core/InputError";const defaultProps$15={labelElement:"label"},varsResolver$q=(_,{size:size2})=>({label:{"--input-label-size":getFontSize(size2),"--input-asterisk-color":void 0}}),InputLabel=factory((_props,ref)=>{const props2=useProps("InputLabel",defaultProps$15,_props),{classNames,className,style:style2,styles,unstyled,vars,labelElement,size:size2,required,htmlFor,onMouseDown,children:children2,__staticSelector,variant,mod,...others}=useProps("InputLabel",defaultProps$15,props2),_getStyles=useStyles({name:["InputWrapper",__staticSelector],props:props2,classes:__default__$p,className,style:style2,classNames,styles,unstyled,rootSelector:"label",vars,varsResolver:varsResolver$q}),ctx=useInputWrapperContext(),getStyles2=ctx?.getStyles||_getStyles;return jsxs(Box,{...getStyles2("label",ctx?.getStyles?{className,style:style2}:void 0),component:labelElement,variant,size:size2,ref,htmlFor:labelElement==="label"?htmlFor:void 0,mod:[{required},mod],onMouseDown:event=>{onMouseDown?.(event),!event.defaultPrevented&&event.detail>1&&event.preventDefault()},...others,children:[children2,required&&jsx("span",{...getStyles2("required"),"aria-hidden":!0,children:" *"})]})});InputLabel.classes=__default__$p;InputLabel.displayName="@mantine/core/InputLabel";const defaultProps$14={},InputPlaceholder=factory((_props,ref)=>{const props2=useProps("InputPlaceholder",defaultProps$14,_props),{classNames,className,style:style2,styles,unstyled,vars,__staticSelector,variant,error,mod,...others}=useProps("InputPlaceholder",defaultProps$14,props2),getStyles2=useStyles({name:["InputPlaceholder",__staticSelector],props:props2,classes:__default__$p,className,style:style2,classNames,styles,unstyled,rootSelector:"placeholder"});return jsx(Box,{...getStyles2("placeholder"),mod:[{error:!!error},mod],component:"span",variant,ref,...others})});InputPlaceholder.classes=__default__$p;InputPlaceholder.displayName="@mantine/core/InputPlaceholder";function getInputOffsets(inputWrapperOrder,{hasDescription,hasError}){const inputIndex=inputWrapperOrder.findIndex(part=>part==="input"),aboveInput=inputWrapperOrder.slice(0,inputIndex),belowInput=inputWrapperOrder.slice(inputIndex+1),offsetTop=hasDescription&&aboveInput.includes("description")||hasError&&aboveInput.includes("error");return{offsetBottom:hasDescription&&belowInput.includes("description")||hasError&&belowInput.includes("error"),offsetTop}}const defaultProps$13={labelElement:"label",inputContainer:children2=>children2,inputWrapperOrder:["label","description","input","error"]},varsResolver$p=(_,{size:size2})=>({label:{"--input-label-size":getFontSize(size2),"--input-asterisk-color":void 0},error:{"--input-error-size":size2===void 0?void 0:`calc(${getFontSize(size2)} - ${rem(2)})`},description:{"--input-description-size":size2===void 0?void 0:`calc(${getFontSize(size2)} - ${rem(2)})`}}),InputWrapper=factory((_props,ref)=>{const props2=useProps("InputWrapper",defaultProps$13,_props),{classNames,className,style:style2,styles,unstyled,vars,size:size2,variant,__staticSelector,inputContainer,inputWrapperOrder,label,error,description:description2,labelProps,descriptionProps,errorProps,labelElement,children:children2,withAsterisk,id:id2,required,__stylesApiProps,mod,...others}=props2,getStyles2=useStyles({name:["InputWrapper",__staticSelector],props:__stylesApiProps||props2,classes:__default__$p,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$p}),sharedProps={size:size2,variant,__staticSelector},idBase=useId$2(id2),isRequired=typeof withAsterisk=="boolean"?withAsterisk:required,errorId=errorProps?.id||`${idBase}-error`,descriptionId=descriptionProps?.id||`${idBase}-description`,inputId=idBase,hasError=!!error&&typeof error!="boolean",hasDescription=!!description2,_describedBy=`${hasError?errorId:""} ${hasDescription?descriptionId:""}`,describedBy=_describedBy.trim().length>0?_describedBy.trim():void 0,labelId=labelProps?.id||`${idBase}-label`,_label=label&&jsx(InputLabel,{labelElement,id:labelId,htmlFor:inputId,required:isRequired,...sharedProps,...labelProps,children:label},"label"),_description=hasDescription&&jsx(InputDescription,{...descriptionProps,...sharedProps,size:descriptionProps?.size||sharedProps.size,id:descriptionProps?.id||descriptionId,children:description2},"description"),_input=jsx(Fragment$1,{children:inputContainer(children2)},"input"),_error=hasError&&createElement$1(InputError,{...errorProps,...sharedProps,size:errorProps?.size||sharedProps.size,key:"error",id:errorProps?.id||errorId},error),content2=inputWrapperOrder.map(part=>{switch(part){case"label":return _label;case"input":return _input;case"description":return _description;case"error":return _error;default:return null}});return jsx(InputWrapperProvider,{value:{getStyles:getStyles2,describedBy,inputId,labelId,...getInputOffsets(inputWrapperOrder,{hasDescription,hasError})},children:jsx(Box,{ref,variant,size:size2,mod:[{error:!!error},mod],...getStyles2("root"),...others,children:content2})})});InputWrapper.classes=__default__$p;InputWrapper.displayName="@mantine/core/InputWrapper";const defaultProps$12={variant:"default",leftSectionPointerEvents:"none",rightSectionPointerEvents:"none",withAria:!0,withErrorStyles:!0},varsResolver$o=(_,props2,ctx)=>({wrapper:{"--input-margin-top":ctx.offsetTop?"calc(var(--mantine-spacing-xs) / 2)":void 0,"--input-margin-bottom":ctx.offsetBottom?"calc(var(--mantine-spacing-xs) / 2)":void 0,"--input-height":getSize(props2.size,"input-height"),"--input-fz":getFontSize(props2.size),"--input-radius":props2.radius===void 0?void 0:getRadius(props2.radius),"--input-left-section-width":props2.leftSectionWidth!==void 0?rem(props2.leftSectionWidth):void 0,"--input-right-section-width":props2.rightSectionWidth!==void 0?rem(props2.rightSectionWidth):void 0,"--input-padding-y":props2.multiline?getSize(props2.size,"input-padding-y"):void 0,"--input-left-section-pointer-events":props2.leftSectionPointerEvents,"--input-right-section-pointer-events":props2.rightSectionPointerEvents}}),Input=polymorphicFactory((_props,ref)=>{const props2=useProps("Input",defaultProps$12,_props),{classNames,className,style:style2,styles,unstyled,required,__staticSelector,__stylesApiProps,size:size2,wrapperProps,error,disabled,leftSection,leftSectionProps,leftSectionWidth,rightSection,rightSectionProps,rightSectionWidth,rightSectionPointerEvents,leftSectionPointerEvents,variant,vars,pointer:pointer2,multiline,radius,id:id2,withAria,withErrorStyles,mod,inputSize,...others}=props2,{styleProps,rest}=extractStyleProps(others),ctx=useInputWrapperContext(),stylesCtx={offsetBottom:ctx?.offsetBottom,offsetTop:ctx?.offsetTop},getStyles2=useStyles({name:["Input",__staticSelector],props:__stylesApiProps||props2,classes:__default__$p,className,style:style2,classNames,styles,unstyled,stylesCtx,rootSelector:"wrapper",vars,varsResolver:varsResolver$o}),ariaAttributes=withAria?{required,disabled,"aria-invalid":!!error,"aria-describedby":ctx?.describedBy,id:ctx?.inputId||id2}:{};return jsxs(Box,{...getStyles2("wrapper"),...styleProps,...wrapperProps,mod:[{error:!!error&&withErrorStyles,pointer:pointer2,disabled,multiline,"data-with-right-section":!!rightSection,"data-with-left-section":!!leftSection},mod],variant,size:size2,children:[leftSection&&jsx("div",{...leftSectionProps,"data-position":"left",...getStyles2("section",{className:leftSectionProps?.className,style:leftSectionProps?.style}),children:leftSection}),jsx(Box,{component:"input",...rest,...ariaAttributes,ref,required,mod:{disabled,error:!!error&&withErrorStyles},variant,__size:inputSize,...getStyles2("input")}),rightSection&&jsx("div",{...rightSectionProps,"data-position":"right",...getStyles2("section",{className:rightSectionProps?.className,style:rightSectionProps?.style}),children:rightSection})]})});Input.classes=__default__$p;Input.Wrapper=InputWrapper;Input.Label=InputLabel;Input.Error=InputError;Input.Description=InputDescription;Input.Placeholder=InputPlaceholder;Input.displayName="@mantine/core/Input";function useInputProps(component,defaultProps2,_props){const props2=useProps(component,defaultProps2,_props),{label,description:description2,error,required,classNames,styles,className,unstyled,__staticSelector,__stylesApiProps,errorProps,labelProps,descriptionProps,wrapperProps:_wrapperProps,id:id2,size:size2,style:style2,inputContainer,inputWrapperOrder,withAsterisk,variant,vars,mod,...others}=props2,{styleProps,rest}=extractStyleProps(others),wrapperProps={label,description:description2,error,required,classNames,className,__staticSelector,__stylesApiProps:__stylesApiProps||props2,errorProps,labelProps,descriptionProps,unstyled,styles,size:size2,style:style2,inputContainer,inputWrapperOrder,withAsterisk,variant,id:id2,mod,..._wrapperProps};return{...rest,classNames,styles,unstyled,wrapperProps:{...wrapperProps,...styleProps},inputProps:{required,classNames,styles,unstyled,size:size2,__staticSelector,__stylesApiProps:__stylesApiProps||props2,error,variant,id:id2}}}const defaultProps$11={__staticSelector:"InputBase",withAria:!0},InputBase=polymorphicFactory((props2,ref)=>{const{inputProps,wrapperProps,...others}=useInputProps("InputBase",defaultProps$11,props2);return jsx(Input.Wrapper,{...wrapperProps,children:jsx(Input,{...inputProps,...others,ref})})});InputBase.classes={...Input.classes,...Input.Wrapper.classes};InputBase.displayName="@mantine/core/InputBase";const FLEX_STYLE_PROPS_DATA={gap:{type:"spacing",property:"gap"},rowGap:{type:"spacing",property:"rowGap"},columnGap:{type:"spacing",property:"columnGap"},align:{type:"identity",property:"alignItems"},justify:{type:"identity",property:"justifyContent"},wrap:{type:"identity",property:"flexWrap"},direction:{type:"identity",property:"flexDirection"}};var __default__$o={root:"m_8bffd616"};const defaultProps$10={},Flex=polymorphicFactory((_props,ref)=>{const props2=useProps("Flex",defaultProps$10,_props),{classNames,className,style:style2,styles,unstyled,vars,gap,rowGap,columnGap,align,justify,wrap,direction,...others}=props2,getStyles2=useStyles({name:"Flex",classes:__default__$o,props:props2,className,style:style2,classNames,styles,unstyled,vars}),theme2=useMantineTheme(),responsiveClassName=useRandomClassName(),parsedStyleProps=parseStyleProps({styleProps:{gap,rowGap,columnGap,align,justify,wrap,direction},theme:theme2,data:FLEX_STYLE_PROPS_DATA});return jsxs(Fragment,{children:[parsedStyleProps.hasResponsiveStyles&&jsx(InlineStyles,{selector:`.${responsiveClassName}`,styles:parsedStyleProps.styles,media:parsedStyleProps.media}),jsx(Box,{ref,...getStyles2("root",{className:responsiveClassName,style:filterProps$1(parsedStyleProps.inlineStyles)}),...others})]})});Flex.classes=__default__$o;Flex.displayName="@mantine/core/Flex";function isParent(parentElement,childElement){if(!childElement||!parentElement)return!1;let parent=childElement.parentNode;for(;parent!=null;){if(parent===parentElement)return!0;parent=parent.parentNode}return!1}function useFloatingIndicator({target,parent,ref,displayAfterTransitionEnd}){const transitionTimeout=useRef$1(),[initialized,setInitialized]=useState$1(!1),[hidden2,setHidden]=useState$1(typeof displayAfterTransitionEnd=="boolean"?displayAfterTransitionEnd:!1),updatePosition=()=>{if(!target||!parent)return;const targetRect=target.getBoundingClientRect(),parentRect=parent.getBoundingClientRect(),position={top:targetRect.top-parentRect.top,left:targetRect.left-parentRect.left,width:targetRect.width,height:targetRect.height};ref.current&&(ref.current.style.transform=`translateY(${position.top}px) translateX(${position.left}px)`,ref.current.style.width=`${position.width}px`,ref.current.style.height=`${position.height}px`)},updatePositionWithoutAnimation=()=>{window.clearTimeout(transitionTimeout.current),ref.current&&(ref.current.style.transitionDuration="0ms"),updatePosition(),transitionTimeout.current=window.setTimeout(()=>{ref.current&&(ref.current.style.transitionDuration="")},30)},targetResizeObserver=useRef$1(),parentResizeObserver=useRef$1();return useEffect$1(()=>{if(updatePosition(),target)return targetResizeObserver.current=new ResizeObserver(updatePositionWithoutAnimation),targetResizeObserver.current.observe(target),parent&&(parentResizeObserver.current=new ResizeObserver(updatePositionWithoutAnimation),parentResizeObserver.current.observe(parent)),()=>{targetResizeObserver.current?.disconnect(),parentResizeObserver.current?.disconnect()}},[parent,target]),useEffect$1(()=>{if(parent){const handleTransitionEnd=event=>{isParent(event.target,parent)&&(updatePositionWithoutAnimation(),setHidden(!1))};return document.addEventListener("transitionend",handleTransitionEnd),()=>{document.removeEventListener("transitionend",handleTransitionEnd)}}},[parent]),useTimeout(()=>{getEnv()!=="test"&&setInitialized(!0)},20,{autoInvoke:!0}),useMutationObserver(mutations=>{mutations.forEach(mutation=>{mutation.type==="attributes"&&mutation.attributeName==="dir"&&updatePositionWithoutAnimation()})},{attributes:!0,attributeFilter:["dir"]},()=>document.documentElement),{initialized,hidden:hidden2}}var __default__$n={root:"m_96b553a6"};const defaultProps$$={},varsResolver$n=(_theme,{transitionDuration})=>({root:{"--transition-duration":typeof transitionDuration=="number"?`${transitionDuration}ms`:transitionDuration}}),FloatingIndicator=factory((_props,ref)=>{const props2=useProps("FloatingIndicator",defaultProps$$,_props),{classNames,className,style:style2,styles,unstyled,vars,target,parent,transitionDuration,mod,displayAfterTransitionEnd,...others}=props2,getStyles2=useStyles({name:"FloatingIndicator",classes:__default__$n,props:props2,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$n}),innerRef=useRef$1(null),{initialized,hidden:hidden2}=useFloatingIndicator({target,parent,ref:innerRef,displayAfterTransitionEnd}),mergedRef=useMergedRef(ref,innerRef);return!target||!parent?null:jsx(Box,{ref:mergedRef,mod:[{initialized,hidden:hidden2},mod],...getStyles2("root"),...others})});FloatingIndicator.displayName="@mantine/core/FloatingIndicator";FloatingIndicator.classes=__default__$n;var __default__$m={root:"m_66836ed3",wrapper:"m_a5d60502",body:"m_667c2793",title:"m_6a03f287",label:"m_698f4f23",icon:"m_667f2a6a",message:"m_7fa78076",closeButton:"m_87f54839"};const defaultProps$_={},varsResolver$m=(theme2,{radius,color:color2,variant,autoContrast})=>{const colors2=theme2.variantColorResolver({color:color2||theme2.primaryColor,theme:theme2,variant:variant||"light",autoContrast});return{root:{"--alert-radius":radius===void 0?void 0:getRadius(radius),"--alert-bg":color2||variant?colors2.background:void 0,"--alert-color":colors2.color,"--alert-bd":color2||variant?colors2.border:void 0}}},Alert=factory((_props,ref)=>{const props2=useProps("Alert",defaultProps$_,_props),{classNames,className,style:style2,styles,unstyled,vars,radius,color:color2,title:title2,children:children2,id:id2,icon,withCloseButton,onClose,closeButtonLabel,variant,autoContrast,...others}=props2,getStyles2=useStyles({name:"Alert",classes:__default__$m,props:props2,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$m}),rootId=useId$2(id2),titleId=title2&&`${rootId}-title`||void 0,bodyId=`${rootId}-body`;return jsx(Box,{id:rootId,...getStyles2("root",{variant}),variant,ref,...others,role:"alert","aria-describedby":bodyId,"aria-labelledby":titleId,children:jsxs("div",{...getStyles2("wrapper"),children:[icon&&jsx("div",{...getStyles2("icon"),children:icon}),jsxs("div",{...getStyles2("body"),children:[title2&&jsx("div",{...getStyles2("title"),"data-with-close-button":withCloseButton||void 0,children:jsx("span",{id:titleId,...getStyles2("label"),children:title2})}),children2&&jsx("div",{id:bodyId,...getStyles2("message"),"data-variant":variant,children:children2})]}),withCloseButton&&jsx(CloseButton,{...getStyles2("closeButton"),onClick:onClose,variant:"transparent",size:16,iconSize:16,"aria-label":closeButtonLabel,unstyled})]})})});Alert.classes=__default__$m;Alert.displayName="@mantine/core/Alert";var __default__$l={root:"m_b6d8b162"};function getTextTruncate(truncate){if(truncate==="start")return"start";if(truncate==="end"||truncate)return"end"}const defaultProps$Z={inherit:!1},varsResolver$l=(theme2,{variant,lineClamp,gradient,size:size2,color:color2})=>({root:{"--text-fz":getFontSize(size2),"--text-lh":getLineHeight(size2),"--text-gradient":variant==="gradient"?getGradient(gradient,theme2):void 0,"--text-line-clamp":typeof lineClamp=="number"?lineClamp.toString():void 0,"--text-color":color2?getThemeColor(color2,theme2):void 0}}),Text$1=polymorphicFactory((_props,ref)=>{const props2=useProps("Text",defaultProps$Z,_props),{lineClamp,truncate,inline:inline2,inherit:inherit2,gradient,span,__staticSelector,vars,className,style:style2,classNames,styles,unstyled,variant,mod,size:size2,...others}=props2,getStyles2=useStyles({name:["Text",__staticSelector],props:props2,classes:__default__$l,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$l});return jsx(Box,{...getStyles2("root",{focusable:!0}),ref,component:span?"span":"p",variant,mod:[{"data-truncate":getTextTruncate(truncate),"data-line-clamp":typeof lineClamp=="number","data-inline":inline2,"data-inherit":inherit2},mod],size:size2,...others})});Text$1.classes=__default__$l;Text$1.displayName="@mantine/core/Text";var __default__$k={root:"m_849cf0da"};const defaultProps$Y={underline:"hover"},Anchor=polymorphicFactory((props2,ref)=>{const{underline,className,unstyled,mod,...others}=useProps("Anchor",defaultProps$Y,props2);return jsx(Text$1,{component:"a",ref,className:clsx({[__default__$k.root]:!unstyled},className),...others,mod:[{underline},mod],__staticSelector:"Anchor",unstyled})});Anchor.classes=__default__$k;Anchor.displayName="@mantine/core/Anchor";function parseItem(item){return typeof item=="string"?{value:item,label:item}:"value"in item&&!("label"in item)?{value:item.value,label:item.value,disabled:item.disabled}:typeof item=="number"?{value:item.toString(),label:item.toString()}:"group"in item?{group:item.group,items:item.items.map(i2=>parseItem(i2))}:item}function getParsedComboboxData(data){return data?data.map(item=>parseItem(item)):[]}function getOptionsLockup(options){return options.reduce((acc,item)=>"group"in item?{...acc,...getOptionsLockup(item.items)}:(acc[item.value]=item,acc),{})}var __default__$j={dropdown:"m_88b62a41",options:"m_b2821a6e",option:"m_92253aa5",search:"m_985517d8",empty:"m_2530cd1d",header:"m_858f94bd",footer:"m_82b967cb",group:"m_254f3e4f",groupLabel:"m_2bb2e9e5",chevron:"m_2943220b",optionsDropdownOption:"m_390b5f4",optionsDropdownCheckIcon:"m_8ee53fc2"};const defaultProps$X={error:null},varsResolver$k=(_,{size:size2})=>({chevron:{"--combobox-chevron-size":getSize(size2,"combobox-chevron-size")}}),ComboboxChevron=factory((_props,ref)=>{const props2=useProps("ComboboxChevron",defaultProps$X,_props),{size:size2,error,style:style2,className,classNames,styles,unstyled,vars,mod,...others}=props2,getStyles2=useStyles({name:"ComboboxChevron",classes:__default__$j,props:props2,style:style2,className,classNames,styles,unstyled,vars,varsResolver:varsResolver$k,rootSelector:"chevron"});return jsx(Box,{component:"svg",...others,...getStyles2("chevron"),size:size2,viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",mod:["combobox-chevron",{error},mod],ref,children:jsx("path",{d:"M4.93179 5.43179C4.75605 5.60753 4.75605 5.89245 4.93179 6.06819C5.10753 6.24392 5.39245 6.24392 5.56819 6.06819L7.49999 4.13638L9.43179 6.06819C9.60753 6.24392 9.89245 6.24392 10.0682 6.06819C10.2439 5.89245 10.2439 5.60753 10.0682 5.43179L7.81819 3.18179C7.73379 3.0974 7.61933 3.04999 7.49999 3.04999C7.38064 3.04999 7.26618 3.0974 7.18179 3.18179L4.93179 5.43179ZM10.0682 9.56819C10.2439 9.39245 10.2439 9.10753 10.0682 8.93179C9.89245 8.75606 9.60753 8.75606 9.43179 8.93179L7.49999 10.8636L5.56819 8.93179C5.39245 8.75606 5.10753 8.75606 4.93179 8.93179C4.75605 9.10753 4.75605 9.39245 4.93179 9.56819L7.18179 11.8182C7.35753 11.9939 7.64245 11.9939 7.81819 11.8182L10.0682 9.56819Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})})});ComboboxChevron.classes=__default__$j;ComboboxChevron.displayName="@mantine/core/ComboboxChevron";const[ComboboxProvider,useComboboxContext]=createSafeContext("Combobox component was not found in tree"),ComboboxClearButton=forwardRef$1(({size:size2,onMouseDown,onClick,onClear,...others},ref)=>jsx(CloseButton,{ref,size:size2||"sm",variant:"transparent",tabIndex:-1,"aria-hidden":!0,...others,onMouseDown:event=>{event.preventDefault(),onMouseDown?.(event)},onClick:event=>{onClear(),onClick?.(event)}}));ComboboxClearButton.displayName="@mantine/core/ComboboxClearButton";const defaultProps$W={},ComboboxDropdown=factory((props2,ref)=>{const{classNames,styles,className,style:style2,hidden:hidden2,...others}=useProps("ComboboxDropdown",defaultProps$W,props2),ctx=useComboboxContext();return jsx(Popover.Dropdown,{...others,ref,role:"presentation","data-hidden":hidden2||void 0,...ctx.getStyles("dropdown",{className,style:style2,classNames,styles})})});ComboboxDropdown.classes=__default__$j;ComboboxDropdown.displayName="@mantine/core/ComboboxDropdown";const defaultProps$V={refProp:"ref"},ComboboxDropdownTarget=factory((props2,ref)=>{const{children:children2,refProp}=useProps("ComboboxDropdownTarget",defaultProps$V,props2);if(useComboboxContext(),!isElement$1(children2))throw new Error("Combobox.DropdownTarget component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");return jsx(Popover.Target,{ref,refProp,children:children2})});ComboboxDropdownTarget.displayName="@mantine/core/ComboboxDropdownTarget";const defaultProps$U={},ComboboxEmpty=factory((props2,ref)=>{const{classNames,className,style:style2,styles,vars,...others}=useProps("ComboboxEmpty",defaultProps$U,props2),ctx=useComboboxContext();return jsx(Box,{ref,...ctx.getStyles("empty",{className,classNames,styles,style:style2}),...others})});ComboboxEmpty.classes=__default__$j;ComboboxEmpty.displayName="@mantine/core/ComboboxEmpty";function useComboboxTargetProps({onKeyDown,withKeyboardNavigation,withAriaAttributes,withExpandedAttribute,targetType,autoComplete}){const ctx=useComboboxContext(),[selectedOptionId,setSelectedOptionId]=useState$1(null),handleKeyDown=event=>{if(onKeyDown?.(event),!ctx.readOnly&&withKeyboardNavigation){if(event.nativeEvent.isComposing)return;if(event.nativeEvent.code==="ArrowDown"&&(event.preventDefault(),ctx.store.dropdownOpened?setSelectedOptionId(ctx.store.selectNextOption()):(ctx.store.openDropdown("keyboard"),setSelectedOptionId(ctx.store.selectActiveOption()))),event.nativeEvent.code==="ArrowUp"&&(event.preventDefault(),ctx.store.dropdownOpened?setSelectedOptionId(ctx.store.selectPreviousOption()):(ctx.store.openDropdown("keyboard"),setSelectedOptionId(ctx.store.selectActiveOption()))),event.nativeEvent.code==="Enter"||event.nativeEvent.code==="NumpadEnter"){if(event.nativeEvent.keyCode===229)return;const selectedOptionIndex=ctx.store.getSelectedOptionIndex();ctx.store.dropdownOpened&&selectedOptionIndex!==-1?(event.preventDefault(),ctx.store.clickSelectedOption()):targetType==="button"&&(event.preventDefault(),ctx.store.openDropdown("keyboard"))}event.nativeEvent.code==="Escape"&&ctx.store.closeDropdown("keyboard"),event.nativeEvent.code==="Space"&&targetType==="button"&&(event.preventDefault(),ctx.store.toggleDropdown("keyboard"))}};return{...withAriaAttributes?{"aria-haspopup":"listbox","aria-expanded":withExpandedAttribute&&!!(ctx.store.listId&&ctx.store.dropdownOpened)||void 0,"aria-controls":ctx.store.listId,"aria-activedescendant":ctx.store.dropdownOpened&&selectedOptionId||void 0,autoComplete,"data-expanded":ctx.store.dropdownOpened||void 0,"data-mantine-stop-propagation":ctx.store.dropdownOpened||void 0}:{},onKeyDown:handleKeyDown}}const defaultProps$T={refProp:"ref",targetType:"input",withKeyboardNavigation:!0,withAriaAttributes:!0,withExpandedAttribute:!1,autoComplete:"off"},ComboboxEventsTarget=factory((props2,ref)=>{const{children:children2,refProp,withKeyboardNavigation,withAriaAttributes,withExpandedAttribute,targetType,autoComplete,...others}=useProps("ComboboxEventsTarget",defaultProps$T,props2);if(!isElement$1(children2))throw new Error("Combobox.EventsTarget component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");const ctx=useComboboxContext(),targetProps=useComboboxTargetProps({targetType,withAriaAttributes,withKeyboardNavigation,withExpandedAttribute,onKeyDown:children2.props.onKeyDown,autoComplete});return cloneElement(children2,{...targetProps,...others,[refProp]:useMergedRef(ref,ctx.store.targetRef,children2?.ref)})});ComboboxEventsTarget.displayName="@mantine/core/ComboboxEventsTarget";const defaultProps$S={},ComboboxFooter=factory((props2,ref)=>{const{classNames,className,style:style2,styles,vars,...others}=useProps("ComboboxFooter",defaultProps$S,props2),ctx=useComboboxContext();return jsx(Box,{ref,...ctx.getStyles("footer",{className,classNames,style:style2,styles}),...others,onMouseDown:event=>{event.preventDefault()}})});ComboboxFooter.classes=__default__$j;ComboboxFooter.displayName="@mantine/core/ComboboxFooter";const defaultProps$R={},ComboboxGroup=factory((props2,ref)=>{const{classNames,className,style:style2,styles,vars,children:children2,label,...others}=useProps("ComboboxGroup",defaultProps$R,props2),ctx=useComboboxContext();return jsxs(Box,{ref,...ctx.getStyles("group",{className,classNames,style:style2,styles}),...others,children:[label&&jsx("div",{...ctx.getStyles("groupLabel",{classNames,styles}),children:label}),children2]})});ComboboxGroup.classes=__default__$j;ComboboxGroup.displayName="@mantine/core/ComboboxGroup";const defaultProps$Q={},ComboboxHeader=factory((props2,ref)=>{const{classNames,className,style:style2,styles,vars,...others}=useProps("ComboboxHeader",defaultProps$Q,props2),ctx=useComboboxContext();return jsx(Box,{ref,...ctx.getStyles("header",{className,classNames,style:style2,styles}),...others,onMouseDown:event=>{event.preventDefault()}})});ComboboxHeader.classes=__default__$j;ComboboxHeader.displayName="@mantine/core/ComboboxHeader";function ComboboxHiddenInput({value,valuesDivider=",",...others}){return jsx("input",{type:"hidden",value:Array.isArray(value)?value.join(valuesDivider):value||"",...others})}ComboboxHiddenInput.displayName="@mantine/core/ComboboxHiddenInput";const defaultProps$P={},ComboboxOption=factory((_props,ref)=>{const props2=useProps("ComboboxOption",defaultProps$P,_props),{classNames,className,style:style2,styles,vars,onClick,id:id2,active,onMouseDown,onMouseOver,disabled,selected:selected2,mod,...others}=props2,ctx=useComboboxContext(),uuid=useId$3(),_id=id2||uuid;return jsx(Box,{...ctx.getStyles("option",{className,classNames,styles,style:style2}),...others,ref,id:_id,mod:["combobox-option",{"combobox-active":active,"combobox-disabled":disabled,"combobox-selected":selected2},mod],role:"option",onClick:event=>{disabled?event.preventDefault():(ctx.onOptionSubmit?.(props2.value,props2),onClick?.(event))},onMouseDown:event=>{event.preventDefault(),onMouseDown?.(event)},onMouseOver:event=>{ctx.resetSelectionOnOptionHover&&ctx.store.resetSelectedOption(),onMouseOver?.(event)}})});ComboboxOption.classes=__default__$j;ComboboxOption.displayName="@mantine/core/ComboboxOption";const defaultProps$O={},ComboboxOptions=factory((_props,ref)=>{const props2=useProps("ComboboxOptions",defaultProps$O,_props),{classNames,className,style:style2,styles,id:id2,onMouseDown,labelledBy,...others}=props2,ctx=useComboboxContext(),_id=useId$2(id2);return useEffect$1(()=>{ctx.store.setListId(_id)},[_id]),jsx(Box,{ref,...ctx.getStyles("options",{className,style:style2,classNames,styles}),...others,id:_id,role:"listbox","aria-labelledby":labelledBy,onMouseDown:event=>{event.preventDefault(),onMouseDown?.(event)}})});ComboboxOptions.classes=__default__$j;ComboboxOptions.displayName="@mantine/core/ComboboxOptions";const defaultProps$N={withAriaAttributes:!0,withKeyboardNavigation:!0},ComboboxSearch=factory((_props,ref)=>{const props2=useProps("ComboboxSearch",defaultProps$N,_props),{classNames,styles,unstyled,vars,withAriaAttributes,onKeyDown,withKeyboardNavigation,size:size2,...others}=props2,ctx=useComboboxContext(),_styles=ctx.getStyles("search"),targetProps=useComboboxTargetProps({targetType:"input",withAriaAttributes,withKeyboardNavigation,withExpandedAttribute:!1,onKeyDown,autoComplete:"off"});return jsx(Input,{ref:useMergedRef(ref,ctx.store.searchRef),classNames:[{input:_styles.className},classNames],styles:[{input:_styles.style},styles],size:size2||ctx.size,...targetProps,...others,__staticSelector:"Combobox"})});ComboboxSearch.classes=__default__$j;ComboboxSearch.displayName="@mantine/core/ComboboxSearch";const defaultProps$M={refProp:"ref",targetType:"input",withKeyboardNavigation:!0,withAriaAttributes:!0,withExpandedAttribute:!1,autoComplete:"off"},ComboboxTarget=factory((props2,ref)=>{const{children:children2,refProp,withKeyboardNavigation,withAriaAttributes,withExpandedAttribute,targetType,autoComplete,...others}=useProps("ComboboxTarget",defaultProps$M,props2);if(!isElement$1(children2))throw new Error("Combobox.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");const ctx=useComboboxContext(),targetProps=useComboboxTargetProps({targetType,withAriaAttributes,withKeyboardNavigation,withExpandedAttribute,onKeyDown:children2.props.onKeyDown,autoComplete}),clonedElement=cloneElement(children2,{...targetProps,...others});return jsx(Popover.Target,{ref:useMergedRef(ref,ctx.store.targetRef),children:clonedElement})});ComboboxTarget.displayName="@mantine/core/ComboboxTarget";function getPreviousIndex(currentIndex,elements,loop){for(let i2=currentIndex-1;i2>=0;i2-=1)if(!elements[i2].hasAttribute("data-combobox-disabled"))return i2;if(loop){for(let i2=elements.length-1;i2>-1;i2-=1)if(!elements[i2].hasAttribute("data-combobox-disabled"))return i2}return currentIndex}function getNextIndex(currentIndex,elements,loop){for(let i2=currentIndex+1;i2<elements.length;i2+=1)if(!elements[i2].hasAttribute("data-combobox-disabled"))return i2;if(loop){for(let i2=0;i2<elements.length;i2+=1)if(!elements[i2].hasAttribute("data-combobox-disabled"))return i2}return currentIndex}function getFirstIndex(elements){for(let i2=0;i2<elements.length;i2+=1)if(!elements[i2].hasAttribute("data-combobox-disabled"))return i2;return-1}function useCombobox({defaultOpened,opened,onOpenedChange,onDropdownClose,onDropdownOpen,loop=!0,scrollBehavior="instant"}={}){const[dropdownOpened,setDropdownOpened]=useUncontrolled({value:opened,defaultValue:defaultOpened,finalValue:!1,onChange:onOpenedChange}),listId=useRef$1(null),selectedOptionIndex=useRef$1(-1),searchRef=useRef$1(null),targetRef=useRef$1(null),focusSearchTimeout=useRef$1(-1),focusTargetTimeout=useRef$1(-1),selectedIndexUpdateTimeout=useRef$1(-1),openDropdown=useCallback$1((eventSource="unknown")=>{dropdownOpened||(setDropdownOpened(!0),onDropdownOpen?.(eventSource))},[setDropdownOpened,onDropdownOpen,dropdownOpened]),closeDropdown=useCallback$1((eventSource="unknown")=>{dropdownOpened&&(setDropdownOpened(!1),onDropdownClose?.(eventSource))},[setDropdownOpened,onDropdownClose,dropdownOpened]),toggleDropdown=useCallback$1((eventSource="unknown")=>{dropdownOpened?closeDropdown(eventSource):openDropdown(eventSource)},[closeDropdown,openDropdown,dropdownOpened]),clearSelectedItem=useCallback$1(()=>{const selected2=document.querySelector(`#${listId.current} [data-combobox-selected]`);selected2?.removeAttribute("data-combobox-selected"),selected2?.removeAttribute("aria-selected")},[]),selectOption=useCallback$1(index2=>{const items=document.getElementById(listId.current)?.querySelectorAll("[data-combobox-option]");if(!items)return null;const nextIndex=index2>=items.length?0:index2<0?items.length-1:index2;return selectedOptionIndex.current=nextIndex,items?.[nextIndex]&&!items[nextIndex].hasAttribute("data-combobox-disabled")?(clearSelectedItem(),items[nextIndex].setAttribute("data-combobox-selected","true"),items[nextIndex].setAttribute("aria-selected","true"),items[nextIndex].scrollIntoView({block:"nearest",behavior:scrollBehavior}),items[nextIndex].id):null},[scrollBehavior,clearSelectedItem]),selectActiveOption=useCallback$1(()=>{const activeOption=document.querySelector(`#${listId.current} [data-combobox-active]`);if(activeOption){const items=document.querySelectorAll(`#${listId.current} [data-combobox-option]`),index2=Array.from(items).findIndex(option=>option===activeOption);return selectOption(index2)}return selectOption(0)},[selectOption]),selectNextOption=useCallback$1(()=>selectOption(getNextIndex(selectedOptionIndex.current,document.querySelectorAll(`#${listId.current} [data-combobox-option]`),loop)),[selectOption,loop]),selectPreviousOption=useCallback$1(()=>selectOption(getPreviousIndex(selectedOptionIndex.current,document.querySelectorAll(`#${listId.current} [data-combobox-option]`),loop)),[selectOption,loop]),selectFirstOption=useCallback$1(()=>selectOption(getFirstIndex(document.querySelectorAll(`#${listId.current} [data-combobox-option]`))),[selectOption]),updateSelectedOptionIndex=useCallback$1((target="selected",options)=>{selectedIndexUpdateTimeout.current=window.setTimeout(()=>{const items=document.querySelectorAll(`#${listId.current} [data-combobox-option]`),index2=Array.from(items).findIndex(option=>option.hasAttribute(`data-combobox-${target}`));selectedOptionIndex.current=index2,options?.scrollIntoView&&items[index2]?.scrollIntoView({block:"nearest",behavior:scrollBehavior})},0)},[]),resetSelectedOption=useCallback$1(()=>{selectedOptionIndex.current=-1,clearSelectedItem()},[clearSelectedItem]),clickSelectedOption=useCallback$1(()=>{document.querySelectorAll(`#${listId.current} [data-combobox-option]`)?.[selectedOptionIndex.current]?.click()},[]),setListId=useCallback$1(id2=>{listId.current=id2},[]),focusSearchInput=useCallback$1(()=>{focusSearchTimeout.current=window.setTimeout(()=>searchRef.current.focus(),0)},[]),focusTarget=useCallback$1(()=>{focusTargetTimeout.current=window.setTimeout(()=>targetRef.current.focus(),0)},[]),getSelectedOptionIndex=useCallback$1(()=>selectedOptionIndex.current,[]);return useEffect$1(()=>()=>{window.clearTimeout(focusSearchTimeout.current),window.clearTimeout(focusTargetTimeout.current),window.clearTimeout(selectedIndexUpdateTimeout.current)},[]),{dropdownOpened,openDropdown,closeDropdown,toggleDropdown,selectedOptionIndex:selectedOptionIndex.current,getSelectedOptionIndex,selectOption,selectFirstOption,selectActiveOption,selectNextOption,selectPreviousOption,resetSelectedOption,updateSelectedOptionIndex,listId:listId.current,setListId,clickSelectedOption,searchRef,focusSearchInput,targetRef,focusTarget}}const defaultProps$L={keepMounted:!0,withinPortal:!0,resetSelectionOnOptionHover:!1,width:"target",transitionProps:{transition:"fade",duration:0}},varsResolver$j=(_,{size:size2,dropdownPadding})=>({options:{"--combobox-option-fz":getFontSize(size2),"--combobox-option-padding":getSize(size2,"combobox-option-padding")},dropdown:{"--combobox-padding":dropdownPadding===void 0?void 0:rem(dropdownPadding),"--combobox-option-fz":getFontSize(size2),"--combobox-option-padding":getSize(size2,"combobox-option-padding")}});function Combobox(_props){const props2=useProps("Combobox",defaultProps$L,_props),{classNames,styles,unstyled,children:children2,store:controlledStore,vars,onOptionSubmit,onClose,size:size2,dropdownPadding,resetSelectionOnOptionHover,__staticSelector,readOnly,...others}=props2,uncontrolledStore=useCombobox(),store=controlledStore||uncontrolledStore,getStyles2=useStyles({name:__staticSelector||"Combobox",classes:__default__$j,props:props2,classNames,styles,unstyled,vars,varsResolver:varsResolver$j}),onDropdownClose=()=>{onClose?.(),store.closeDropdown()};return jsx(ComboboxProvider,{value:{getStyles:getStyles2,store,onOptionSubmit,size:size2,resetSelectionOnOptionHover,readOnly},children:jsx(Popover,{opened:store.dropdownOpened,...others,onClose:onDropdownClose,withRoles:!1,unstyled,children:children2})})}const extendCombobox=c2=>c2;Combobox.extend=extendCombobox;Combobox.classes=__default__$j;Combobox.displayName="@mantine/core/Combobox";Combobox.Target=ComboboxTarget;Combobox.Dropdown=ComboboxDropdown;Combobox.Options=ComboboxOptions;Combobox.Option=ComboboxOption;Combobox.Search=ComboboxSearch;Combobox.Empty=ComboboxEmpty;Combobox.Chevron=ComboboxChevron;Combobox.Footer=ComboboxFooter;Combobox.Header=ComboboxHeader;Combobox.EventsTarget=ComboboxEventsTarget;Combobox.DropdownTarget=ComboboxDropdownTarget;Combobox.Group=ComboboxGroup;Combobox.ClearButton=ComboboxClearButton;Combobox.HiddenInput=ComboboxHiddenInput;function CheckIcon({size:size2,style:style2,...others}){const _style=size2!==void 0?{width:rem(size2),height:rem(size2),...style2}:style2;return jsx("svg",{viewBox:"0 0 10 7",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:_style,"aria-hidden":!0,...others,children:jsx("path",{d:"M4 4.586L1.707 2.293A1 1 0 1 0 .293 3.707l3 3a.997.997 0 0 0 1.414 0l5-5A1 1 0 1 0 8.293.293L4 4.586z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})})}function isOptionsGroup(item){return"group"in item}function defaultOptionsFilter({options,search,limit}){const parsedSearch=search.trim().toLowerCase(),result=[];for(let i2=0;i2<options.length;i2+=1){const item=options[i2];if(result.length===limit)return result;isOptionsGroup(item)&&result.push({group:item.group,items:defaultOptionsFilter({options:item.items,search,limit:limit-result.length})}),isOptionsGroup(item)||item.label.toLowerCase().includes(parsedSearch)&&result.push(item)}return result}function isEmptyComboboxData(data){if(data.length===0)return!0;for(const item of data)if(!("group"in item)||item.items.length>0)return!1;return!0}function validateOptions(options,valuesSet=new Set){if(Array.isArray(options))for(const option of options)if(isOptionsGroup(option))validateOptions(option.items,valuesSet);else{if(typeof option.value>"u")throw new Error("[@mantine/core] Each option must have value property");if(typeof option.value!="string")throw new Error(`[@mantine/core] Option value must be a string, other data formats are not supported, got ${typeof option.value}`);if(valuesSet.has(option.value))throw new Error(`[@mantine/core] Duplicate options are not supported. Option with value "${option.value}" was provided more than once`);valuesSet.add(option.value)}}function isValueChecked(value,optionValue){return Array.isArray(value)?value.includes(optionValue):value===optionValue}function Option({data,withCheckIcon,value,checkIconPosition,unstyled,renderOption}){if(!isOptionsGroup(data)){const checked=isValueChecked(value,data.value),check=withCheckIcon&&checked&&jsx(CheckIcon,{className:__default__$j.optionsDropdownCheckIcon}),defaultContent=jsxs(Fragment,{children:[checkIconPosition==="left"&&check,jsx("span",{children:data.label}),checkIconPosition==="right"&&check]});return jsx(Combobox.Option,{value:data.value,disabled:data.disabled,className:clsx({[__default__$j.optionsDropdownOption]:!unstyled}),"data-reverse":checkIconPosition==="right"||void 0,"data-checked":checked||void 0,"aria-selected":checked,active:checked,children:typeof renderOption=="function"?renderOption({option:data,checked}):defaultContent})}const options=data.items.map(item=>jsx(Option,{data:item,value,unstyled,withCheckIcon,checkIconPosition,renderOption},item.value));return jsx(Combobox.Group,{label:data.group,children:options})}function OptionsDropdown({data,hidden:hidden2,hiddenWhenEmpty,filter:filter2,search,limit,maxDropdownHeight,withScrollArea=!0,filterOptions=!0,withCheckIcon=!1,value,checkIconPosition,nothingFoundMessage,unstyled,labelId,renderOption,scrollAreaProps,"aria-label":ariaLabel}){validateOptions(data);const filteredData=typeof search=="string"?(filter2||defaultOptionsFilter)({options:data,search:filterOptions?search:"",limit:limit??1/0}):data,isEmpty=isEmptyComboboxData(filteredData),options=filteredData.map(item=>jsx(Option,{data:item,withCheckIcon,value,checkIconPosition,unstyled,renderOption},isOptionsGroup(item)?item.group:item.value));return jsx(Combobox.Dropdown,{hidden:hidden2||hiddenWhenEmpty&&isEmpty,children:jsxs(Combobox.Options,{labelledBy:labelId,"aria-label":ariaLabel,children:[withScrollArea?jsx(ScrollArea.Autosize,{mah:maxDropdownHeight??220,type:"scroll",scrollbarSize:"var(--combobox-padding)",offsetScrollbars:"y",...scrollAreaProps,children:options}):options,isEmpty&¬hingFoundMessage&&jsx(Combobox.Empty,{children:nothingFoundMessage})]})})}var __default__$i={root:"m_fea6bf1a",burger:"m_d4fb9cad"};const defaultProps$K={},varsResolver$i=(theme2,{color:color2,size:size2,lineSize,transitionDuration,transitionTimingFunction})=>({root:{"--burger-color":color2?getThemeColor(color2,theme2):void 0,"--burger-size":getSize(size2,"burger-size"),"--burger-line-size":lineSize?rem(lineSize):void 0,"--burger-transition-duration":transitionDuration===void 0?void 0:`${transitionDuration}ms`,"--burger-transition-timing-function":transitionTimingFunction}}),Burger=factory((_props,ref)=>{const props2=useProps("Burger",defaultProps$K,_props),{classNames,className,style:style2,styles,unstyled,vars,opened,children:children2,transitionDuration,transitionTimingFunction,lineSize,...others}=props2,getStyles2=useStyles({name:"Burger",classes:__default__$i,props:props2,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$i});return jsxs(UnstyledButton,{...getStyles2("root"),ref,...others,children:[jsx(Box,{mod:["reduce-motion",{opened}],...getStyles2("burger")}),children2]})});Burger.classes=__default__$i;Burger.displayName="@mantine/core/Burger";var __default__$h={root:"m_77c9d27d",inner:"m_80f1301b",label:"m_811560b9",section:"m_a74036a",loader:"m_a25b86ee",group:"m_80d6d844"};const defaultProps$J={orientation:"horizontal"},varsResolver$h=(_,{borderWidth})=>({group:{"--button-border-width":rem(borderWidth)}}),ButtonGroup=factory((_props,ref)=>{const props2=useProps("ButtonGroup",defaultProps$J,_props),{className,style:style2,classNames,styles,unstyled,orientation,vars,borderWidth,variant,mod,...others}=useProps("ButtonGroup",defaultProps$J,_props),getStyles2=useStyles({name:"ButtonGroup",props:props2,classes:__default__$h,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$h,rootSelector:"group"});return jsx(Box,{...getStyles2("group"),ref,variant,mod:[{"data-orientation":orientation},mod],role:"group",...others})});ButtonGroup.classes=__default__$h;ButtonGroup.displayName="@mantine/core/ButtonGroup";const loaderTransition={in:{opacity:1,transform:`translate(-50%, calc(-50% + ${rem(1)}))`},out:{opacity:0,transform:"translate(-50%, -200%)"},common:{transformOrigin:"center"},transitionProperty:"transform, opacity"},defaultProps$I={},varsResolver$g=(theme2,{radius,color:color2,gradient,variant,size:size2,justify,autoContrast})=>{const colors2=theme2.variantColorResolver({color:color2||theme2.primaryColor,theme:theme2,gradient,variant:variant||"filled",autoContrast});return{root:{"--button-justify":justify,"--button-height":getSize(size2,"button-height"),"--button-padding-x":getSize(size2,"button-padding-x"),"--button-fz":size2?.includes("compact")?getFontSize(size2.replace("compact-","")):getFontSize(size2),"--button-radius":radius===void 0?void 0:getRadius(radius),"--button-bg":color2||variant?colors2.background:void 0,"--button-hover":color2||variant?colors2.hover:void 0,"--button-color":colors2.color,"--button-bd":color2||variant?colors2.border:void 0,"--button-hover-color":color2||variant?colors2.hoverColor:void 0}}},Button=polymorphicFactory((_props,ref)=>{const props2=useProps("Button",defaultProps$I,_props),{style:style2,vars,className,color:color2,disabled,children:children2,leftSection,rightSection,fullWidth,variant,radius,loading,loaderProps,gradient,classNames,styles,unstyled,"data-disabled":dataDisabled,autoContrast,mod,...others}=props2,getStyles2=useStyles({name:"Button",props:props2,classes:__default__$h,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$g}),hasLeftSection=!!leftSection,hasRightSection=!!rightSection;return jsxs(UnstyledButton,{ref,...getStyles2("root",{active:!disabled&&!loading&&!dataDisabled}),unstyled,variant,disabled:disabled||loading,mod:[{disabled:disabled||dataDisabled,loading,block:fullWidth,"with-left-section":hasLeftSection,"with-right-section":hasRightSection},mod],...others,children:[jsx(Transition$1,{mounted:!!loading,transition:loaderTransition,duration:150,children:transitionStyles=>jsx(Box,{component:"span",...getStyles2("loader",{style:transitionStyles}),"aria-hidden":!0,children:jsx(Loader,{color:"var(--button-color)",size:"calc(var(--button-height) / 1.8)",...loaderProps})})}),jsxs("span",{...getStyles2("inner"),children:[leftSection&&jsx(Box,{component:"span",...getStyles2("section"),mod:{position:"left"},children:leftSection}),jsx(Box,{component:"span",mod:{loading},...getStyles2("label"),children:children2}),rightSection&&jsx(Box,{component:"span",...getStyles2("section"),mod:{position:"right"},children:rightSection})]})]})});Button.classes=__default__$h;Button.displayName="@mantine/core/Button";Button.Group=ButtonGroup;const[CardProvider,useCardContext]=createSafeContext("Card component was not found in tree");var __default__$g={root:"m_e615b15f",section:"m_599a2148"};const defaultProps$H={},CardSection=polymorphicFactory((_props,ref)=>{const props2=useProps("CardSection",defaultProps$H,_props),{classNames,className,style:style2,styles,vars,withBorder,inheritPadding,mod,...others}=props2,ctx=useCardContext();return jsx(Box,{ref,mod:[{"with-border":withBorder,"inherit-padding":inheritPadding},mod],...ctx.getStyles("section",{className,style:style2,styles,classNames}),...others})});CardSection.classes=__default__$g;CardSection.displayName="@mantine/core/CardSection";const defaultProps$G={},varsResolver$f=(_,{padding})=>({root:{"--card-padding":getSpacing(padding)}}),Card=polymorphicFactory((_props,ref)=>{const props2=useProps("Card",defaultProps$G,_props),{classNames,className,style:style2,styles,unstyled,vars,children:children2,padding,...others}=props2,getStyles2=useStyles({name:"Card",props:props2,classes:__default__$g,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$f}),_children=Children.toArray(children2),content2=_children.map((child,index2)=>typeof child=="object"&&child&&"type"in child&&child.type===CardSection?cloneElement(child,{"data-first-section":index2===0||void 0,"data-last-section":index2===_children.length-1||void 0}):child);return jsx(CardProvider,{value:{getStyles:getStyles2},children:jsx(Paper,{ref,unstyled,...getStyles2("root"),...others,children:content2})})});Card.classes=__default__$g;Card.displayName="@mantine/core/Card";Card.Section=CardSection;var __default__$f={root:"m_b183c0a2"};const defaultProps$F={},varsResolver$e=(theme2,{color:color2})=>({root:{"--code-bg":color2?getThemeColor(color2,theme2):void 0}}),Code=factory((_props,ref)=>{const props2=useProps("Code",defaultProps$F,_props),{classNames,className,style:style2,styles,unstyled,vars,color:color2,block,variant,mod,...others}=props2,getStyles2=useStyles({name:"Code",props:props2,classes:__default__$f,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$e});return jsx(Box,{component:block?"pre":"code",variant,ref,mod:[{block},mod],...getStyles2("root"),...others,dir:"ltr"})});Code.classes=__default__$f;Code.displayName="@mantine/core/Code";var __default__$e={root:"m_de3d2490",colorOverlay:"m_862f3d1b",shadowOverlay:"m_98ae7f22",alphaOverlay:"m_95709ac0",childrenOverlay:"m_93e74e3"};const defaultProps$E={withShadow:!0},varsResolver$d=(_,{radius,size:size2})=>({root:{"--cs-radius":radius===void 0?void 0:getRadius(radius),"--cs-size":rem(size2)}}),ColorSwatch=polymorphicFactory((_props,ref)=>{const props2=useProps("ColorSwatch",defaultProps$E,_props),{classNames,className,style:style2,styles,unstyled,vars,color:color2,size:size2,radius,withShadow,children:children2,variant,...others}=useProps("ColorSwatch",defaultProps$E,props2),getStyles2=useStyles({name:"ColorSwatch",props:props2,classes:__default__$e,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$d});return jsxs(Box,{ref,variant,size:size2,...getStyles2("root",{focusable:!0}),...others,children:[jsx("span",{...getStyles2("alphaOverlay")}),withShadow&&jsx("span",{...getStyles2("shadowOverlay")}),jsx("span",{...getStyles2("colorOverlay",{style:{backgroundColor:color2}})}),jsx("span",{...getStyles2("childrenOverlay"),children:children2})]})});ColorSwatch.classes=__default__$e;ColorSwatch.displayName="@mantine/core/ColorSwatch";var __default__$d={root:"m_7485cace"};const defaultProps$D={},varsResolver$c=(_,{size:size2,fluid})=>({root:{"--container-size":fluid?void 0:getSize(size2,"container-size")}}),Container=factory((_props,ref)=>{const props2=useProps("Container",defaultProps$D,_props),{classNames,className,style:style2,styles,unstyled,vars,fluid,mod,...others}=props2,getStyles2=useStyles({name:"Container",classes:__default__$d,props:props2,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$c});return jsx(Box,{ref,mod:[{fluid},mod],...getStyles2("root"),...others})});Container.classes=__default__$d;Container.displayName="@mantine/core/Container";const defaultProps$C={timeout:1e3};function CopyButton$1(props2){const{children:children2,timeout:timeout2,value,...others}=useProps("CopyButton",defaultProps$C,props2),clipboard=useClipboard({timeout:timeout2});return jsx(Fragment,{children:children2({copy:()=>clipboard.copy(value),copied:clipboard.copied,...others})})}CopyButton$1.displayName="@mantine/core/CopyButton";var __default__$c={root:"m_3eebeb36",label:"m_9e365f20"};const defaultProps$B={orientation:"horizontal"},varsResolver$b=(theme2,{color:color2,variant,size:size2})=>({root:{"--divider-color":color2?getThemeColor(color2,theme2):void 0,"--divider-border-style":variant,"--divider-size":getSize(size2,"divider-size")}}),Divider=factory((_props,ref)=>{const props2=useProps("Divider",defaultProps$B,_props),{classNames,className,style:style2,styles,unstyled,vars,color:color2,orientation,label,labelPosition,mod,...others}=props2,getStyles2=useStyles({name:"Divider",classes:__default__$c,props:props2,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$b});return jsx(Box,{ref,mod:[{orientation,"with-label":!!label},mod],...getStyles2("root"),...others,role:"separator",children:label&&jsx(Box,{component:"span",mod:{position:labelPosition},...getStyles2("label"),children:label})})});Divider.classes=__default__$c;Divider.displayName="@mantine/core/Divider";const[DrawerProvider,useDrawerContext]=createSafeContext("Drawer component was not found in tree");var __default__$b={root:"m_f11b401e",header:"m_5a7c2c9",content:"m_b8a05bbd",inner:"m_31cd769a"};const defaultProps$A={},DrawerBody=factory((_props,ref)=>{const props2=useProps("DrawerBody",defaultProps$A,_props),{classNames,className,style:style2,styles,vars,...others}=props2,ctx=useDrawerContext();return jsx(ModalBaseBody,{ref,...ctx.getStyles("body",{classNames,style:style2,styles,className}),...others})});DrawerBody.classes=__default__$b;DrawerBody.displayName="@mantine/core/DrawerBody";const defaultProps$z={},DrawerCloseButton=factory((_props,ref)=>{const props2=useProps("DrawerCloseButton",defaultProps$z,_props),{classNames,className,style:style2,styles,vars,...others}=props2,ctx=useDrawerContext();return jsx(ModalBaseCloseButton,{ref,...ctx.getStyles("close",{classNames,style:style2,styles,className}),...others})});DrawerCloseButton.classes=__default__$b;DrawerCloseButton.displayName="@mantine/core/DrawerCloseButton";const defaultProps$y={},DrawerContent=factory((_props,ref)=>{const props2=useProps("DrawerContent",defaultProps$y,_props),{classNames,className,style:style2,styles,vars,children:children2,radius,...others}=props2,ctx=useDrawerContext(),Scroll=ctx.scrollAreaComponent||NativeScrollArea;return jsx(ModalBaseContent,{...ctx.getStyles("content",{className,style:style2,styles,classNames}),innerProps:ctx.getStyles("inner",{className,style:style2,styles,classNames}),ref,...others,radius:radius||ctx.radius||0,children:jsx(Scroll,{style:{height:"calc(100vh - var(--drawer-offset) * 2)"},children:children2})})});DrawerContent.classes=__default__$b;DrawerContent.displayName="@mantine/core/DrawerContent";const defaultProps$x={},DrawerHeader=factory((_props,ref)=>{const props2=useProps("DrawerHeader",defaultProps$x,_props),{classNames,className,style:style2,styles,vars,...others}=props2,ctx=useDrawerContext();return jsx(ModalBaseHeader,{ref,...ctx.getStyles("header",{classNames,style:style2,styles,className}),...others})});DrawerHeader.classes=__default__$b;DrawerHeader.displayName="@mantine/core/DrawerHeader";const defaultProps$w={},DrawerOverlay=factory((_props,ref)=>{const props2=useProps("DrawerOverlay",defaultProps$w,_props),{classNames,className,style:style2,styles,vars,...others}=props2,ctx=useDrawerContext();return jsx(ModalBaseOverlay,{ref,...ctx.getStyles("overlay",{classNames,style:style2,styles,className}),...others})});DrawerOverlay.classes=__default__$b;DrawerOverlay.displayName="@mantine/core/DrawerOverlay";function getDrawerAlign(position){switch(position){case"top":return"flex-start";case"bottom":return"flex-end";default:return}}function getDrawerFlex(position){if(position==="top"||position==="bottom")return"0 0 calc(100% - var(--drawer-offset, 0rem) * 2)"}const transitions={top:"slide-down",bottom:"slide-up",left:"slide-right",right:"slide-left"},rtlTransitions={top:"slide-down",bottom:"slide-up",right:"slide-right",left:"slide-left"},defaultProps$v={closeOnClickOutside:!0,withinPortal:!0,lockScroll:!0,trapFocus:!0,returnFocus:!0,closeOnEscape:!0,keepMounted:!1,zIndex:getDefaultZIndex("modal"),position:"left"},varsResolver$a=(_,{position,size:size2,offset:offset2})=>({root:{"--drawer-size":getSize(size2,"drawer-size"),"--drawer-flex":getDrawerFlex(position),"--drawer-height":position==="left"||position==="right"?void 0:"var(--drawer-size)","--drawer-align":getDrawerAlign(position),"--drawer-justify":position==="right"?"flex-end":void 0,"--drawer-offset":rem(offset2)}}),DrawerRoot=factory((_props,ref)=>{const props2=useProps("DrawerRoot",defaultProps$v,_props),{classNames,className,style:style2,styles,unstyled,vars,scrollAreaComponent,position,transitionProps,radius,...others}=props2,{dir}=useDirection(),getStyles2=useStyles({name:"Drawer",classes:__default__$b,props:props2,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$a}),drawerTransition=(dir==="rtl"?rtlTransitions:transitions)[position];return jsx(DrawerProvider,{value:{scrollAreaComponent,getStyles:getStyles2,radius},children:jsx(ModalBase,{ref,...getStyles2("root"),transitionProps:{transition:drawerTransition,...transitionProps},unstyled,...others})})});DrawerRoot.classes=__default__$b;DrawerRoot.displayName="@mantine/core/DrawerRoot";const defaultProps$u={},DrawerTitle=factory((_props,ref)=>{const props2=useProps("DrawerTitle",defaultProps$u,_props),{classNames,className,style:style2,styles,vars,...others}=props2,ctx=useDrawerContext();return jsx(ModalBaseTitle,{ref,...ctx.getStyles("title",{classNames,style:style2,styles,className}),...others})});DrawerTitle.classes=__default__$b;DrawerTitle.displayName="@mantine/core/DrawerTitle";const defaultProps$t={closeOnClickOutside:!0,withinPortal:!0,lockScroll:!0,trapFocus:!0,returnFocus:!0,closeOnEscape:!0,keepMounted:!1,zIndex:getDefaultZIndex("modal"),withOverlay:!0,withCloseButton:!0},Drawer=factory((_props,ref)=>{const{title:title2,withOverlay,overlayProps,withCloseButton,closeButtonProps,children:children2,...others}=useProps("Drawer",defaultProps$t,_props),hasHeader=!!title2||withCloseButton;return jsxs(DrawerRoot,{ref,...others,children:[withOverlay&&jsx(DrawerOverlay,{...overlayProps}),jsxs(DrawerContent,{children:[hasHeader&&jsxs(DrawerHeader,{children:[title2&&jsx(DrawerTitle,{children:title2}),withCloseButton&&jsx(DrawerCloseButton,{...closeButtonProps})]}),jsx(DrawerBody,{children:children2})]})]})});Drawer.classes=__default__$b;Drawer.displayName="@mantine/core/Drawer";Drawer.Root=DrawerRoot;Drawer.Overlay=DrawerOverlay;Drawer.Content=DrawerContent;Drawer.Body=DrawerBody;Drawer.Header=DrawerHeader;Drawer.Title=DrawerTitle;Drawer.CloseButton=DrawerCloseButton;function useDelayedHover({open,close,openDelay,closeDelay}){const openTimeout=useRef$1(-1),closeTimeout=useRef$1(-1),clearTimeouts=()=>{window.clearTimeout(openTimeout.current),window.clearTimeout(closeTimeout.current)},openDropdown=()=>{clearTimeouts(),openDelay===0||openDelay===void 0?open():openTimeout.current=window.setTimeout(open,openDelay)},closeDropdown=()=>{clearTimeouts(),closeDelay===0||closeDelay===void 0?close():closeTimeout.current=window.setTimeout(close,closeDelay)};return useEffect$1(()=>clearTimeouts,[]),{openDropdown,closeDropdown}}const[HoverCardContextProvider,useHoverCardContext]=createSafeContext("HoverCard component was not found in the tree"),defaultProps$s={};function HoverCardDropdown(props2){const{children:children2,onMouseEnter,onMouseLeave,...others}=useProps("HoverCardDropdown",defaultProps$s,props2),ctx=useHoverCardContext(),handleMouseEnter=createEventHandler(onMouseEnter,ctx.openDropdown),handleMouseLeave=createEventHandler(onMouseLeave,ctx.closeDropdown);return jsx(Popover.Dropdown,{onMouseEnter:handleMouseEnter,onMouseLeave:handleMouseLeave,...others,children:children2})}HoverCardDropdown.displayName="@mantine/core/HoverCardDropdown";const defaultProps$r={refProp:"ref"},HoverCardTarget=forwardRef$1((props2,ref)=>{const{children:children2,refProp,eventPropsWrapperName,...others}=useProps("HoverCardTarget",defaultProps$r,props2);if(!isElement$1(children2))throw new Error("HoverCard.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");const ctx=useHoverCardContext(),onMouseEnter=createEventHandler(children2.props.onMouseEnter,ctx.openDropdown),onMouseLeave=createEventHandler(children2.props.onMouseLeave,ctx.closeDropdown),eventListeners={onMouseEnter,onMouseLeave};return jsx(Popover.Target,{refProp,ref,...others,children:cloneElement(children2,eventPropsWrapperName?{[eventPropsWrapperName]:eventListeners}:eventListeners)})});HoverCardTarget.displayName="@mantine/core/HoverCardTarget";const defaultProps$q={openDelay:0,closeDelay:150,initiallyOpened:!1};function HoverCard(props2){const{children:children2,onOpen,onClose,openDelay,closeDelay,initiallyOpened,...others}=useProps("HoverCard",defaultProps$q,props2),[opened,{open,close}]=useDisclosure(initiallyOpened,{onClose,onOpen}),{openDropdown,closeDropdown}=useDelayedHover({open,close,openDelay,closeDelay});return jsx(HoverCardContextProvider,{value:{openDropdown,closeDropdown},children:jsx(Popover,{...others,opened,__staticSelector:"HoverCard",children:children2})})}HoverCard.displayName="@mantine/core/HoverCard";HoverCard.Target=HoverCardTarget;HoverCard.Dropdown=HoverCardDropdown;HoverCard.extend=input=>input;const[MenuContextProvider,useMenuContext]=createSafeContext("Menu component was not found in the tree");var __default__$a={dropdown:"m_dc9b7c9f",label:"m_9bfac126",divider:"m_efdf90cb",item:"m_99ac2aa1",itemLabel:"m_5476e0d3",itemSection:"m_8b75e504"};const defaultProps$p={},MenuDivider=factory((props2,ref)=>{const{classNames,className,style:style2,styles,vars,...others}=useProps("MenuDivider",defaultProps$p,props2),ctx=useMenuContext();return jsx(Box,{ref,...ctx.getStyles("divider",{className,style:style2,styles,classNames}),...others})});MenuDivider.classes=__default__$a;MenuDivider.displayName="@mantine/core/MenuDivider";const defaultProps$o={},MenuDropdown=factory((props2,ref)=>{const{classNames,className,style:style2,styles,vars,onMouseEnter,onMouseLeave,children:children2,...others}=useProps("MenuDropdown",defaultProps$o,props2),wrapperRef=useRef$1(null),ctx=useMenuContext(),handleKeyDown=event=>{(event.key==="ArrowUp"||event.key==="ArrowDown")&&(event.preventDefault(),wrapperRef.current?.querySelectorAll("[data-menu-item]:not(:disabled)")[0]?.focus())},handleMouseEnter=createEventHandler(onMouseEnter,()=>(ctx.trigger==="hover"||ctx.trigger==="click-hover")&&ctx.openDropdown()),handleMouseLeave=createEventHandler(onMouseLeave,()=>(ctx.trigger==="hover"||ctx.trigger==="click-hover")&&ctx.closeDropdown());return jsxs(Popover.Dropdown,{...others,onMouseEnter:handleMouseEnter,onMouseLeave:handleMouseLeave,role:"menu","aria-orientation":"vertical",ref:useMergedRef(ref,wrapperRef),...ctx.getStyles("dropdown",{className,style:style2,styles,classNames,withStaticClass:!1}),tabIndex:-1,"data-menu-dropdown":!0,onKeyDown:handleKeyDown,children:[jsx("div",{tabIndex:-1,"data-autofocus":!0,"aria-hidden":!0,style:{outline:0}}),children2]})});MenuDropdown.classes=__default__$a;MenuDropdown.displayName="@mantine/core/MenuDropdown";const defaultProps$n={},MenuItem=polymorphicFactory((props2,ref)=>{const{classNames,className,style:style2,styles,vars,color:color2,closeMenuOnClick,leftSection,rightSection,children:children2,disabled,...others}=useProps("MenuItem",defaultProps$n,props2),ctx=useMenuContext(),theme2=useMantineTheme(),{dir}=useDirection(),itemRef=useRef$1(),itemIndex=ctx.getItemIndex(itemRef.current),_others=others,handleMouseLeave=createEventHandler(_others.onMouseLeave,()=>ctx.setHovered(-1)),handleMouseEnter=createEventHandler(_others.onMouseEnter,()=>ctx.setHovered(ctx.getItemIndex(itemRef.current))),handleClick=createEventHandler(_others.onClick,()=>{typeof closeMenuOnClick=="boolean"?closeMenuOnClick&&ctx.closeDropdownImmediately():ctx.closeOnItemClick&&ctx.closeDropdownImmediately()}),handleFocus=createEventHandler(_others.onFocus,()=>ctx.setHovered(ctx.getItemIndex(itemRef.current))),colors2=color2?theme2.variantColorResolver({color:color2,theme:theme2,variant:"light"}):void 0,parsedThemeColor=color2?parseThemeColor({color:color2,theme:theme2}):null;return jsxs(UnstyledButton,{...others,unstyled:ctx.unstyled,tabIndex:ctx.menuItemTabIndex,onFocus:handleFocus,...ctx.getStyles("item",{className,style:style2,styles,classNames}),ref:useMergedRef(itemRef,ref),role:"menuitem",disabled,"data-menu-item":!0,"data-disabled":disabled||void 0,"data-hovered":ctx.hovered===itemIndex?!0:void 0,onMouseEnter:handleMouseEnter,onMouseLeave:handleMouseLeave,onClick:handleClick,onKeyDown:createScopedKeydownHandler({siblingSelector:"[data-menu-item]",parentSelector:"[data-menu-dropdown]",activateOnFocus:!1,loop:ctx.loop,dir,orientation:"vertical",onKeyDown:_others.onKeydown}),__vars:{"--menu-item-color":parsedThemeColor?.isThemeColor&&parsedThemeColor?.shade===void 0?`var(--mantine-color-${parsedThemeColor.color}-6)`:colors2?.color,"--menu-item-hover":colors2?.hover},children:[leftSection&&jsx("div",{...ctx.getStyles("itemSection",{styles,classNames}),"data-position":"left",children:leftSection}),children2&&jsx("div",{...ctx.getStyles("itemLabel",{styles,classNames}),children:children2}),rightSection&&jsx("div",{...ctx.getStyles("itemSection",{styles,classNames}),"data-position":"right",children:rightSection})]})});MenuItem.classes=__default__$a;MenuItem.displayName="@mantine/core/MenuItem";const defaultProps$m={},MenuLabel=factory((props2,ref)=>{const{classNames,className,style:style2,styles,vars,...others}=useProps("MenuLabel",defaultProps$m,props2),ctx=useMenuContext();return jsx(Box,{ref,...ctx.getStyles("label",{className,style:style2,styles,classNames}),...others})});MenuLabel.classes=__default__$a;MenuLabel.displayName="@mantine/core/MenuLabel";const defaultProps$l={refProp:"ref"},MenuTarget=forwardRef$1((props2,ref)=>{const{children:children2,refProp,...others}=useProps("MenuTarget",defaultProps$l,props2);if(!isElement$1(children2))throw new Error("Menu.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported");const ctx=useMenuContext(),onClick=createEventHandler(children2.props.onClick,()=>{ctx.trigger==="click"?ctx.toggleDropdown():ctx.trigger==="click-hover"&&(ctx.setOpenedViaClick(!0),ctx.opened||ctx.openDropdown())}),onMouseEnter=createEventHandler(children2.props.onMouseEnter,()=>(ctx.trigger==="hover"||ctx.trigger==="click-hover")&&ctx.openDropdown()),onMouseLeave=createEventHandler(children2.props.onMouseLeave,()=>{(ctx.trigger==="hover"||ctx.trigger==="click-hover"&&!ctx.openedViaClick)&&ctx.closeDropdown()});return jsx(Popover.Target,{refProp,popupType:"menu",ref,...others,children:cloneElement(children2,{onClick,onMouseEnter,onMouseLeave,"data-expanded":ctx.opened?!0:void 0})})});MenuTarget.displayName="@mantine/core/MenuTarget";const defaultProps$k={trapFocus:!0,closeOnItemClick:!0,clickOutsideEvents:["mousedown","touchstart","keydown"],loop:!0,trigger:"click",openDelay:0,closeDelay:100,menuItemTabIndex:-1};function Menu(_props){const props2=useProps("Menu",defaultProps$k,_props),{children:children2,onOpen,onClose,opened,defaultOpened,trapFocus,onChange,closeOnItemClick,loop,closeOnEscape:closeOnEscape2,trigger:trigger2,openDelay,closeDelay,classNames,styles,unstyled,variant,vars,menuItemTabIndex,keepMounted,...others}=props2,getStyles2=useStyles({name:"Menu",classes:__default__$a,props:props2,classNames,styles,unstyled}),[hovered,{setHovered,resetHovered}]=useHovered(),[_opened,setOpened]=useUncontrolled({value:opened,defaultValue:defaultOpened,finalValue:!1,onChange}),[openedViaClick,setOpenedViaClick]=useState$1(!1),close=()=>{setOpened(!1),setOpenedViaClick(!1),_opened&&onClose?.()},open=()=>{setOpened(!0),!_opened&&onOpen?.()},toggleDropdown=()=>{_opened?close():open()},{openDropdown,closeDropdown}=useDelayedHover({open,close,closeDelay,openDelay}),getItemIndex=node=>getContextItemIndex("[data-menu-item]","[data-menu-dropdown]",node),{resolvedClassNames,resolvedStyles}=useResolvedStylesApi({classNames,styles,props:props2});return useDidUpdate(()=>{resetHovered()},[_opened]),jsx(MenuContextProvider,{value:{getStyles:getStyles2,opened:_opened,toggleDropdown,getItemIndex,hovered,setHovered,openedViaClick,setOpenedViaClick,closeOnItemClick,closeDropdown:trigger2==="click"?close:closeDropdown,openDropdown:trigger2==="click"?open:openDropdown,closeDropdownImmediately:close,loop,trigger:trigger2,unstyled,menuItemTabIndex},children:jsx(Popover,{...others,opened:_opened,onChange:toggleDropdown,defaultOpened,trapFocus:keepMounted?!1:trapFocus,closeOnEscape:closeOnEscape2,__staticSelector:"Menu",classNames:resolvedClassNames,styles:resolvedStyles,unstyled,variant,keepMounted,children:children2})})}Menu.extend=input=>input;Menu.classes=__default__$a;Menu.displayName="@mantine/core/Menu";Menu.Item=MenuItem;Menu.Label=MenuLabel;Menu.Dropdown=MenuDropdown;Menu.Target=MenuTarget;Menu.Divider=MenuDivider;const[ModalProvider,useModalContext]=createSafeContext("Modal component was not found in tree");var __default__$9={root:"m_9df02822",content:"m_54c44539",inner:"m_1f958f16",header:"m_d0e2b9cd"};const defaultProps$j={},ModalBody=factory((_props,ref)=>{const props2=useProps("ModalBody",defaultProps$j,_props),{classNames,className,style:style2,styles,vars,...others}=props2,ctx=useModalContext();return jsx(ModalBaseBody,{ref,...ctx.getStyles("body",{classNames,style:style2,styles,className}),...others})});ModalBody.classes=__default__$9;ModalBody.displayName="@mantine/core/ModalBody";const defaultProps$i={},ModalContent=factory((_props,ref)=>{const props2=useProps("ModalContent",defaultProps$i,_props),{classNames,className,style:style2,styles,vars,children:children2,...others}=props2,ctx=useModalContext(),Scroll=ctx.scrollAreaComponent||NativeScrollArea;return jsx(ModalBaseContent,{...ctx.getStyles("content",{className,style:style2,styles,classNames}),innerProps:ctx.getStyles("inner",{className,style:style2,styles,classNames}),"data-full-screen":ctx.fullScreen||void 0,"data-modal-content":!0,ref,...others,children:jsx(Scroll,{style:{maxHeight:ctx.fullScreen?"100dvh":`calc(100dvh - (${rem(ctx.yOffset)} * 2))`},children:children2})})});ModalContent.classes=__default__$9;ModalContent.displayName="@mantine/core/ModalContent";const defaultProps$h={},ModalOverlay=factory((_props,ref)=>{const props2=useProps("ModalOverlay",defaultProps$h,_props),{classNames,className,style:style2,styles,vars,...others}=props2,ctx=useModalContext();return jsx(ModalBaseOverlay,{ref,...ctx.getStyles("overlay",{classNames,style:style2,styles,className}),...others})});ModalOverlay.classes=__default__$9;ModalOverlay.displayName="@mantine/core/ModalOverlay";const defaultProps$g={__staticSelector:"Modal",closeOnClickOutside:!0,withinPortal:!0,lockScroll:!0,trapFocus:!0,returnFocus:!0,closeOnEscape:!0,keepMounted:!1,zIndex:getDefaultZIndex("modal"),transitionProps:{duration:200,transition:"pop"},yOffset:"5dvh"},varsResolver$9=(_,{radius,size:size2,yOffset,xOffset})=>({root:{"--modal-radius":radius===void 0?void 0:getRadius(radius),"--modal-size":getSize(size2,"modal-size"),"--modal-y-offset":rem(yOffset),"--modal-x-offset":rem(xOffset)}}),ModalRoot=factory((_props,ref)=>{const props2=useProps("ModalRoot",defaultProps$g,_props),{classNames,className,style:style2,styles,unstyled,vars,yOffset,scrollAreaComponent,radius,fullScreen,centered,xOffset,__staticSelector,...others}=props2,getStyles2=useStyles({name:__staticSelector,classes:__default__$9,props:props2,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$9});return jsx(ModalProvider,{value:{yOffset,scrollAreaComponent,getStyles:getStyles2,fullScreen},children:jsx(ModalBase,{ref,...getStyles2("root"),"data-full-screen":fullScreen||void 0,"data-centered":centered||void 0,unstyled,...others})})});ModalRoot.classes=__default__$9;ModalRoot.displayName="@mantine/core/ModalRoot";const defaultTransition={duration:100,transition:"fade"};function getTransitionProps(transitionProps,componentTransition){return{...defaultTransition,...componentTransition,...transitionProps}}function useFloatingTooltip({offset:offset2,position,defaultOpened}){const[opened,setOpened]=useState$1(defaultOpened),boundaryRef=useRef$1(),{x:x2,y:y2,elements,refs,update,placement}=useFloating({placement:position,middleware:[shift({crossAxis:!0,padding:5,rootBoundary:"document"})]}),horizontalOffset=placement.includes("right")?offset2:position.includes("left")?offset2*-1:0,verticalOffset=placement.includes("bottom")?offset2:position.includes("top")?offset2*-1:0,handleMouseMove=useCallback$1(({clientX,clientY})=>{refs.setPositionReference({getBoundingClientRect(){return{width:0,height:0,x:clientX,y:clientY,left:clientX+horizontalOffset,top:clientY+verticalOffset,right:clientX,bottom:clientY}}})},[elements.reference]);return useEffect$1(()=>{if(refs.floating.current){const boundary=boundaryRef.current;boundary.addEventListener("mousemove",handleMouseMove);const parents=getOverflowAncestors(refs.floating.current);return parents.forEach(parent=>{parent.addEventListener("scroll",update)}),()=>{boundary.removeEventListener("mousemove",handleMouseMove),parents.forEach(parent=>{parent.removeEventListener("scroll",update)})}}},[elements.reference,refs.floating.current,update,handleMouseMove,opened]),{handleMouseMove,x:x2,y:y2,opened,setOpened,boundaryRef,floating:refs.setFloating}}var __default__$8={tooltip:"m_1b3c8819",arrow:"m_f898399f"};const defaultProps$f={refProp:"ref",withinPortal:!0,offset:10,defaultOpened:!1,position:"right",zIndex:getDefaultZIndex("popover")},varsResolver$8=(theme2,{radius,color:color2})=>({tooltip:{"--tooltip-radius":radius===void 0?void 0:getRadius(radius),"--tooltip-bg":color2?getThemeColor(color2,theme2):void 0,"--tooltip-color":color2?"var(--mantine-color-white)":void 0}}),TooltipFloating=factory((_props,ref)=>{const props2=useProps("TooltipFloating",defaultProps$f,_props),{children:children2,refProp,withinPortal,style:style2,className,classNames,styles,unstyled,radius,color:color2,label,offset:offset2,position,multiline,zIndex,disabled,defaultOpened,variant,vars,portalProps,...others}=props2,theme2=useMantineTheme(),getStyles2=useStyles({name:"TooltipFloating",props:props2,classes:__default__$8,className,style:style2,classNames,styles,unstyled,rootSelector:"tooltip",vars,varsResolver:varsResolver$8}),{handleMouseMove,x:x2,y:y2,opened,boundaryRef,floating,setOpened}=useFloatingTooltip({offset:offset2,position,defaultOpened});if(!isElement$1(children2))throw new Error("[@mantine/core] Tooltip.Floating component children should be an element or a component that accepts ref, fragments, strings, numbers and other primitive values are not supported");const targetRef=useMergedRef(boundaryRef,children2.ref,ref),onMouseEnter=event=>{children2.props.onMouseEnter?.(event),handleMouseMove(event),setOpened(!0)},onMouseLeave=event=>{children2.props.onMouseLeave?.(event),setOpened(!1)};return jsxs(Fragment,{children:[jsx(OptionalPortal,{...portalProps,withinPortal,children:jsx(Box,{...others,...getStyles2("tooltip",{style:{...getStyleObject(style2,theme2),zIndex,display:!disabled&&opened?"block":"none",top:(y2&&Math.round(y2))??"",left:(x2&&Math.round(x2))??""}}),variant,ref:floating,mod:{multiline},children:label})}),cloneElement(children2,{...children2.props,[refProp]:targetRef,onMouseEnter,onMouseLeave})]})});TooltipFloating.classes=__default__$8;TooltipFloating.displayName="@mantine/core/TooltipFloating";const TooltipGroupContext=createContext$1(!1),TooltipGroupProvider=TooltipGroupContext.Provider,useTooltipGroupContext=()=>useContext$1(TooltipGroupContext),defaultProps$e={openDelay:0,closeDelay:0};function TooltipGroup(props2){const{openDelay,closeDelay,children:children2}=useProps("TooltipGroup",defaultProps$e,props2);return jsx(TooltipGroupProvider,{value:!0,children:jsx(FloatingDelayGroup,{delay:{open:openDelay,close:closeDelay},children:children2})})}TooltipGroup.displayName="@mantine/core/TooltipGroup";function useTooltip(settings){const[uncontrolledOpened,setUncontrolledOpened]=useState$1(settings.defaultOpened),opened=typeof settings.opened=="boolean"?settings.opened:uncontrolledOpened,withinGroup=useTooltipGroupContext(),uid=useId$2(),{delay:groupDelay,currentId,setCurrentId}=useDelayGroupContext(),onChange=useCallback$1(_opened=>{setUncontrolledOpened(_opened),_opened&&setCurrentId(uid)},[setCurrentId,uid]),{x:x2,y:y2,context,refs,update,placement,middlewareData:{arrow:{x:arrowX,y:arrowY}={}}}=useFloating({strategy:settings.strategy,placement:settings.position,open:opened,onOpenChange:onChange,middleware:[offset(settings.offset),shift({padding:8}),flip(),arrow({element:settings.arrowRef,padding:settings.arrowOffset}),...settings.inline?[inline()]:[]]}),{getReferenceProps,getFloatingProps}=useInteractions([useHover(context,{enabled:settings.events?.hover,delay:withinGroup?groupDelay:{open:settings.openDelay,close:settings.closeDelay},mouseOnly:!settings.events?.touch}),useFocus(context,{enabled:settings.events?.focus,visibleOnly:!0}),useRole(context,{role:"tooltip"}),useDismiss(context,{enabled:typeof settings.opened>"u"}),useDelayGroup(context,{id:uid})]);useFloatingAutoUpdate({opened,position:settings.position,positionDependencies:settings.positionDependencies,floating:{refs,update}}),useDidUpdate(()=>{settings.onPositionChange?.(placement)},[placement]);const isGroupPhase=opened&¤tId&¤tId!==uid;return{x:x2,y:y2,arrowX,arrowY,reference:refs.setReference,floating:refs.setFloating,getFloatingProps,getReferenceProps,isGroupPhase,opened,placement}}const defaultProps$d={position:"top",refProp:"ref",withinPortal:!0,inline:!1,defaultOpened:!1,arrowSize:4,arrowOffset:5,arrowRadius:0,arrowPosition:"side",offset:5,transitionProps:{duration:100,transition:"fade"},events:{hover:!0,focus:!1,touch:!1},zIndex:getDefaultZIndex("popover"),positionDependencies:[]},varsResolver$7=(theme2,{radius,color:color2})=>({tooltip:{"--tooltip-radius":radius===void 0?void 0:getRadius(radius),"--tooltip-bg":color2?getThemeColor(color2,theme2):void 0,"--tooltip-color":color2?"var(--mantine-color-white)":void 0}}),Tooltip=factory((_props,ref)=>{const props2=useProps("Tooltip",defaultProps$d,_props),{children:children2,position,refProp,label,openDelay,closeDelay,onPositionChange,opened,defaultOpened,withinPortal,radius,color:color2,classNames,styles,unstyled,style:style2,className,withArrow,arrowSize,arrowOffset,arrowRadius,arrowPosition,offset:offset2,transitionProps,multiline,events,zIndex,disabled,positionDependencies,onClick,onMouseEnter,onMouseLeave,inline:inline2,variant,keepMounted,vars,portalProps,mod,floatingStrategy,...others}=useProps("Tooltip",defaultProps$d,props2),{dir}=useDirection(),arrowRef=useRef$1(null),tooltip=useTooltip({position:getFloatingPosition(dir,position),closeDelay,openDelay,onPositionChange,opened,defaultOpened,events,arrowRef,arrowOffset,offset:typeof offset2=="number"?offset2+(withArrow?arrowSize/2:0):offset2,positionDependencies:[...positionDependencies,children2],inline:inline2,strategy:floatingStrategy}),getStyles2=useStyles({name:"Tooltip",props:props2,classes:__default__$8,className,style:style2,classNames,styles,unstyled,rootSelector:"tooltip",vars,varsResolver:varsResolver$7});if(!isElement$1(children2))throw new Error("[@mantine/core] Tooltip component children should be an element or a component that accepts ref, fragments, strings, numbers and other primitive values are not supported");const targetRef=useMergedRef(tooltip.reference,children2.ref,ref),transition=getTransitionProps(transitionProps,{duration:100,transition:"fade"});return jsxs(Fragment,{children:[jsx(OptionalPortal,{...portalProps,withinPortal,children:jsx(Transition$1,{...transition,keepMounted,mounted:!disabled&&!!tooltip.opened,duration:tooltip.isGroupPhase?10:transition.duration,children:transitionStyles=>jsxs(Box,{...others,"data-fixed":floatingStrategy==="fixed"||void 0,variant,mod:[{multiline},mod],...tooltip.getFloatingProps({ref:tooltip.floating,className:getStyles2("tooltip").className,style:{...getStyles2("tooltip").style,...transitionStyles,zIndex,top:tooltip.y??0,left:tooltip.x??0}}),children:[label,jsx(FloatingArrow,{ref:arrowRef,arrowX:tooltip.arrowX,arrowY:tooltip.arrowY,visible:withArrow,position:tooltip.placement,arrowSize,arrowOffset,arrowRadius,arrowPosition,...getStyles2("arrow")})]})})}),cloneElement(children2,tooltip.getReferenceProps({onClick,onMouseEnter,onMouseLeave,onMouseMove:props2.onMouseMove,onPointerDown:props2.onPointerDown,onPointerEnter:props2.onPointerEnter,[refProp]:targetRef,className:clsx(className,children2.props.className),...children2.props}))]})});Tooltip.classes=__default__$8;Tooltip.displayName="@mantine/core/Tooltip";Tooltip.Floating=TooltipFloating;Tooltip.Group=TooltipGroup;var __default__$7={root:"m_cf365364",indicator:"m_9e182ccd",label:"m_1738fcb2",input:"m_1714d588",control:"m_69686b9b",innerLabel:"m_78882f40"};const defaultProps$c={withItemsBorders:!0},varsResolver$6=(theme2,{radius,color:color2,transitionDuration,size:size2,transitionTimingFunction})=>({root:{"--sc-radius":radius===void 0?void 0:getRadius(radius),"--sc-color":color2?getThemeColor(color2,theme2):void 0,"--sc-shadow":color2?void 0:"var(--mantine-shadow-xs)","--sc-transition-duration":transitionDuration===void 0?void 0:`${transitionDuration}ms`,"--sc-transition-timing-function":transitionTimingFunction,"--sc-padding":getSize(size2,"sc-padding"),"--sc-font-size":getFontSize(size2)}}),SegmentedControl=factory((_props,ref)=>{const props2=useProps("SegmentedControl",defaultProps$c,_props),{classNames,className,style:style2,styles,unstyled,vars,data,value,defaultValue,onChange,size:size2,name,disabled,readOnly,fullWidth,orientation,radius,color:color2,transitionDuration,transitionTimingFunction,variant,autoContrast,withItemsBorders,mod,...others}=props2,getStyles2=useStyles({name:"SegmentedControl",props:props2,classes:__default__$7,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$6}),theme2=useMantineTheme(),_data=data.map(item=>typeof item=="string"?{label:item,value:item}:item),initialized=useMounted(),[parent,setParent]=useState$1(null),[refs,setRefs]=useState$1({}),setElementRef=(element,val)=>{refs[val]=element,setRefs(refs)},[_value,handleValueChange]=useUncontrolled({value,defaultValue,finalValue:Array.isArray(data)?_data.find(item=>!item.disabled)?.value??data[0]?.value??null:null,onChange}),uuid=useId$2(name),controls=_data.map(item=>createElement$1(Box,{...getStyles2("control"),mod:{active:_value===item.value,orientation},key:item.value},createElement$1("input",{...getStyles2("input"),disabled:disabled||item.disabled,type:"radio",name:uuid,value:item.value,id:`${uuid}-${item.value}`,checked:_value===item.value,onChange:()=>!readOnly&&handleValueChange(item.value),"data-focus-ring":theme2.focusRing,key:`${item.value}-input`}),createElement$1(Box,{component:"label",...getStyles2("label"),mod:{active:_value===item.value&&!(disabled||item.disabled),disabled:disabled||item.disabled,"read-only":readOnly},htmlFor:`${uuid}-${item.value}`,ref:node=>setElementRef(node,item.value),__vars:{"--sc-label-color":color2!==void 0?getContrastColor({color:color2,theme:theme2,autoContrast}):void 0},key:`${item.value}-label`},jsx("span",{...getStyles2("innerLabel"),children:item.label})))),mergedRef=useMergedRef(ref,node=>setParent(node));return data.length===0?null:jsxs(Box,{...getStyles2("root"),variant,size:size2,ref:mergedRef,mod:[{"full-width":fullWidth,orientation,initialized,"with-items-borders":withItemsBorders},mod],...others,role:"radiogroup",children:[typeof _value=="string"&&jsx(FloatingIndicator,{target:refs[_value],parent,component:"span",transitionDuration:"var(--sc-transition-duration)",...getStyles2("indicator")}),controls]})});SegmentedControl.classes=__default__$7;SegmentedControl.displayName="@mantine/core/SegmentedControl";const defaultProps$b={searchable:!1,withCheckIcon:!0,allowDeselect:!0,checkIconPosition:"left"},Select=factory((_props,ref)=>{const props2=useProps("Select",defaultProps$b,_props),{classNames,styles,unstyled,vars,dropdownOpened,defaultDropdownOpened,onDropdownClose,onDropdownOpen,onFocus,onBlur,onClick,onChange,data,value,defaultValue,selectFirstOptionOnChange,onOptionSubmit,comboboxProps,readOnly,disabled,filter:filter2,limit,withScrollArea,maxDropdownHeight,size:size2,searchable,rightSection,checkIconPosition,withCheckIcon,nothingFoundMessage,name,form,searchValue,defaultSearchValue,onSearchChange,allowDeselect,error,rightSectionPointerEvents,id:id2,clearable,clearButtonProps,hiddenInputProps,renderOption,onClear,autoComplete,scrollAreaProps,...others}=props2,parsedData=useMemo$1(()=>getParsedComboboxData(data),[data]),optionsLockup=useMemo$1(()=>getOptionsLockup(parsedData),[parsedData]),_id=useId$2(id2),[_value,setValue,controlled]=useUncontrolled({value,defaultValue,finalValue:null,onChange}),selectedOption=typeof _value=="string"?optionsLockup[_value]:void 0,previousSelectedOption=usePrevious(selectedOption),[search,setSearch]=useUncontrolled({value:searchValue,defaultValue:defaultSearchValue,finalValue:selectedOption?selectedOption.label:"",onChange:onSearchChange}),combobox=useCombobox({opened:dropdownOpened,defaultOpened:defaultDropdownOpened,onDropdownOpen:()=>{onDropdownOpen?.(),combobox.updateSelectedOptionIndex("active",{scrollIntoView:!0})},onDropdownClose:()=>{onDropdownClose?.(),combobox.resetSelectedOption()}}),{resolvedClassNames,resolvedStyles}=useResolvedStylesApi({props:props2,styles,classNames});useEffect$1(()=>{selectFirstOptionOnChange&&combobox.selectFirstOption()},[selectFirstOptionOnChange,_value]),useEffect$1(()=>{value===null&&setSearch(""),typeof value=="string"&&selectedOption&&(previousSelectedOption?.value!==selectedOption.value||previousSelectedOption?.label!==selectedOption.label)&&setSearch(selectedOption.label)},[value,selectedOption]);const clearButton=clearable&&!!_value&&!disabled&&!readOnly&&jsx(Combobox.ClearButton,{size:size2,...clearButtonProps,onClear:()=>{setValue(null,null),setSearch(""),onClear?.()}});return jsxs(Fragment,{children:[jsxs(Combobox,{store:combobox,__staticSelector:"Select",classNames:resolvedClassNames,styles:resolvedStyles,unstyled,readOnly,onOptionSubmit:val=>{onOptionSubmit?.(val);const optionLockup=allowDeselect&&optionsLockup[val].value===_value?null:optionsLockup[val],nextValue=optionLockup?optionLockup.value:null;nextValue!==_value&&setValue(nextValue,optionLockup),!controlled&&setSearch(typeof nextValue=="string"&&optionLockup?.label||""),combobox.closeDropdown()},size:size2,...comboboxProps,children:[jsx(Combobox.Target,{targetType:searchable?"input":"button",autoComplete,children:jsx(InputBase,{id:_id,ref,rightSection:rightSection||clearButton||jsx(Combobox.Chevron,{size:size2,error,unstyled}),rightSectionPointerEvents:rightSectionPointerEvents||(clearButton?"all":"none"),...others,size:size2,__staticSelector:"Select",disabled,readOnly:readOnly||!searchable,value:search,onChange:event=>{setSearch(event.currentTarget.value),combobox.openDropdown(),selectFirstOptionOnChange&&combobox.selectFirstOption()},onFocus:event=>{searchable&&combobox.openDropdown(),onFocus?.(event)},onBlur:event=>{searchable&&combobox.closeDropdown(),setSearch(_value!=null&&optionsLockup[_value]?.label||""),onBlur?.(event)},onClick:event=>{searchable?combobox.openDropdown():combobox.toggleDropdown(),onClick?.(event)},classNames:resolvedClassNames,styles:resolvedStyles,unstyled,pointer:!searchable,error})}),jsx(OptionsDropdown,{data:parsedData,hidden:readOnly||disabled,filter:filter2,search,limit,hiddenWhenEmpty:!nothingFoundMessage,withScrollArea,maxDropdownHeight,filterOptions:searchable&&selectedOption?.label!==search,value:_value,checkIconPosition,withCheckIcon,nothingFoundMessage,unstyled,labelId:others.label?`${_id}-label`:void 0,"aria-label":others.label?void 0:others["aria-label"],renderOption,scrollAreaProps})]}),jsx(Combobox.HiddenInput,{value:_value,name,form,disabled,...hiddenInputProps})]})});Select.classes={...InputBase.classes,...Combobox.classes};Select.displayName="@mantine/core/Select";function SimpleGridMediaVariables({spacing,verticalSpacing,cols,selector:selector2}){const theme2=useMantineTheme(),_verticalSpacing=verticalSpacing===void 0?spacing:verticalSpacing,baseStyles=filterProps$1({"--sg-spacing-x":getSpacing(getBaseValue$1(spacing)),"--sg-spacing-y":getSpacing(getBaseValue$1(_verticalSpacing)),"--sg-cols":getBaseValue$1(cols)?.toString()}),queries=keys$1(theme2.breakpoints).reduce((acc,breakpoint)=>(acc[breakpoint]||(acc[breakpoint]={}),typeof spacing=="object"&&spacing[breakpoint]!==void 0&&(acc[breakpoint]["--sg-spacing-x"]=getSpacing(spacing[breakpoint])),typeof _verticalSpacing=="object"&&_verticalSpacing[breakpoint]!==void 0&&(acc[breakpoint]["--sg-spacing-y"]=getSpacing(_verticalSpacing[breakpoint])),typeof cols=="object"&&cols[breakpoint]!==void 0&&(acc[breakpoint]["--sg-cols"]=cols[breakpoint]),acc),{}),media=getSortedBreakpoints(keys$1(queries),theme2).filter(breakpoint=>keys$1(queries[breakpoint.value]).length>0).map(breakpoint=>({query:`(min-width: ${theme2.breakpoints[breakpoint.value]})`,styles:queries[breakpoint.value]}));return jsx(InlineStyles,{styles:baseStyles,media,selector:selector2})}function getBreakpoints(values2){return typeof values2=="object"&&values2!==null?keys$1(values2):[]}function sortBreakpoints(breakpoints){return breakpoints.sort((a2,b2)=>px$1(a2)-px$1(b2))}function getUniqueBreakpoints({spacing,verticalSpacing,cols}){const breakpoints=Array.from(new Set([...getBreakpoints(spacing),...getBreakpoints(verticalSpacing),...getBreakpoints(cols)]));return sortBreakpoints(breakpoints)}function SimpleGridContainerVariables({spacing,verticalSpacing,cols,selector:selector2}){const _verticalSpacing=verticalSpacing===void 0?spacing:verticalSpacing,baseStyles=filterProps$1({"--sg-spacing-x":getSpacing(getBaseValue$1(spacing)),"--sg-spacing-y":getSpacing(getBaseValue$1(_verticalSpacing)),"--sg-cols":getBaseValue$1(cols)?.toString()}),uniqueBreakpoints=getUniqueBreakpoints({spacing,verticalSpacing,cols}),queries=uniqueBreakpoints.reduce((acc,breakpoint)=>(acc[breakpoint]||(acc[breakpoint]={}),typeof spacing=="object"&&spacing[breakpoint]!==void 0&&(acc[breakpoint]["--sg-spacing-x"]=getSpacing(spacing[breakpoint])),typeof _verticalSpacing=="object"&&_verticalSpacing[breakpoint]!==void 0&&(acc[breakpoint]["--sg-spacing-y"]=getSpacing(_verticalSpacing[breakpoint])),typeof cols=="object"&&cols[breakpoint]!==void 0&&(acc[breakpoint]["--sg-cols"]=cols[breakpoint]),acc),{}),media=uniqueBreakpoints.map(breakpoint=>({query:`simple-grid (min-width: ${breakpoint})`,styles:queries[breakpoint]}));return jsx(InlineStyles,{styles:baseStyles,container:media,selector:selector2})}var __default__$6={container:"m_925c2d2c",root:"m_2415a157"};const defaultProps$a={cols:1,spacing:"md",type:"media"},SimpleGrid=factory((_props,ref)=>{const props2=useProps("SimpleGrid",defaultProps$a,_props),{classNames,className,style:style2,styles,unstyled,vars,cols,verticalSpacing,spacing,type,...others}=props2,getStyles2=useStyles({name:"SimpleGrid",classes:__default__$6,props:props2,className,style:style2,classNames,styles,unstyled,vars}),responsiveClassName=useRandomClassName();return type==="container"?jsxs(Fragment,{children:[jsx(SimpleGridContainerVariables,{...props2,selector:`.${responsiveClassName}`}),jsx("div",{...getStyles2("container"),children:jsx(Box,{ref,...getStyles2("root",{className:responsiveClassName}),...others})})]}):jsxs(Fragment,{children:[jsx(SimpleGridMediaVariables,{...props2,selector:`.${responsiveClassName}`}),jsx(Box,{ref,...getStyles2("root",{className:responsiveClassName}),...others})]})});SimpleGrid.classes=__default__$6;SimpleGrid.displayName="@mantine/core/SimpleGrid";const[SliderProvider,useSliderContext]=createSafeContext("SliderProvider was not found in tree"),SliderRoot=forwardRef$1(({size:size2,disabled,variant,color:color2,thumbSize,radius,...others},ref)=>{const{getStyles:getStyles2}=useSliderContext();return jsx(Box,{tabIndex:-1,variant,size:size2,ref,...getStyles2("root"),...others})});SliderRoot.displayName="@mantine/core/SliderRoot";const Thumb=forwardRef$1(({max:max2,min:min2,value,position,label,dragging,onMouseDown,onKeyDownCapture,labelTransitionProps,labelAlwaysOn,thumbLabel,onFocus,onBlur,showLabelOnHover,isHovered,children:children2=null,disabled},ref)=>{const{getStyles:getStyles2}=useSliderContext(),[focused,setFocused]=useState$1(!1),isVisible=labelAlwaysOn||dragging||focused||showLabelOnHover&&isHovered;return jsxs(Box,{tabIndex:0,role:"slider","aria-label":thumbLabel,"aria-valuemax":max2,"aria-valuemin":min2,"aria-valuenow":value,ref,__vars:{"--slider-thumb-offset":`${position}%`},...getStyles2("thumb",{focusable:!0}),mod:{dragging,disabled},onFocus:()=>{setFocused(!0),typeof onFocus=="function"&&onFocus()},onBlur:()=>{setFocused(!1),typeof onBlur=="function"&&onBlur()},onTouchStart:onMouseDown,onMouseDown,onKeyDownCapture,onClick:event=>event.stopPropagation(),children:[children2,jsx(Transition$1,{mounted:label!=null&&!!isVisible,transition:"fade",duration:0,...labelTransitionProps,children:transitionStyles=>jsx("div",{...getStyles2("label",{style:transitionStyles}),children:label})})]})});Thumb.displayName="@mantine/core/SliderThumb";function getPosition({value,min:min2,max:max2}){const position=(value-min2)/(max2-min2)*100;return Math.min(Math.max(position,0),100)}function isMarkFilled({mark,offset:offset2,value,inverted=!1}){return inverted?typeof offset2=="number"&&mark.value<=offset2||mark.value>=value:typeof offset2=="number"?mark.value>=offset2&&mark.value<=value:mark.value<=value}function Marks({marks,min:min2,max:max2,disabled,value,offset:offset2,inverted}){const{getStyles:getStyles2}=useSliderContext();if(!marks)return null;const items=marks.map((mark,index2)=>createElement$1(Box,{...getStyles2("markWrapper"),__vars:{"--mark-offset":`${getPosition({value:mark.value,min:min2,max:max2})}%`},key:index2},jsx(Box,{...getStyles2("mark"),mod:{filled:isMarkFilled({mark,value,offset:offset2,inverted}),disabled}}),mark.label&&jsx("div",{...getStyles2("markLabel"),children:mark.label})));return jsx("div",{children:items})}Marks.displayName="@mantine/core/SliderMarks";function Track({filled,children:children2,offset:offset2,disabled,marksOffset,inverted,containerProps,...others}){const{getStyles:getStyles2}=useSliderContext();return jsx(Fragment,{children:jsx(Box,{...getStyles2("trackContainer"),mod:{disabled},...containerProps,children:jsxs(Box,{...getStyles2("track"),mod:{inverted,disabled},children:[jsx(Box,{mod:{inverted,disabled},__vars:{"--slider-bar-width":`calc(${filled}% + var(--slider-size))`,"--slider-bar-offset":`calc(${offset2}% - var(--slider-size))`},...getStyles2("bar")}),children2,jsx(Marks,{...others,offset:marksOffset,disabled,inverted})]})})})}Track.displayName="@mantine/core/SliderTrack";function getChangeValue({value,containerWidth,min:min2,max:max2,step,precision}){const dx=(containerWidth?Math.min(Math.max(value,0),containerWidth)/containerWidth:value)*(max2-min2),nextValue=(dx!==0?Math.round(dx/step)*step:0)+min2,nextValueWithinStep=Math.max(nextValue,min2);return precision!==void 0?Number(nextValueWithinStep.toFixed(precision)):nextValueWithinStep}function getFloatingValue(value,precision){return parseFloat(value.toFixed(precision))}function getPrecision(step){if(!step)return 0;const split=step.toString().split(".");return split.length>1?split[1].length:0}var __default__$5={root:"m_dd36362e",label:"m_c9357328",thumb:"m_c9a9a60a",trackContainer:"m_a8645c2",track:"m_c9ade57f",bar:"m_38aeed47",markWrapper:"m_b7b0423a",mark:"m_dd33bc19",markLabel:"m_68c77a5b"};const defaultProps$9={radius:"xl",min:0,max:100,step:1,marks:[],label:f2=>f2,labelTransitionProps:{transition:"fade",duration:0},labelAlwaysOn:!1,thumbLabel:"",showLabelOnHover:!0,disabled:!1,scale:v2=>v2},varsResolver$5=(theme2,{size:size2,color:color2,thumbSize,radius})=>({root:{"--slider-size":getSize(size2,"slider-size"),"--slider-color":color2?getThemeColor(color2,theme2):void 0,"--slider-radius":radius===void 0?void 0:getRadius(radius),"--slider-thumb-size":thumbSize!==void 0?rem(thumbSize):"calc(var(--slider-size) * 2)"}}),Slider=factory((_props,ref)=>{const props2=useProps("Slider",defaultProps$9,_props),{classNames,styles,value,onChange,onChangeEnd,size:size2,min:min2,max:max2,step,precision:_precision,defaultValue,name,marks,label,labelTransitionProps,labelAlwaysOn,thumbLabel,showLabelOnHover,thumbChildren,disabled,unstyled,scale:scale2,inverted,className,style:style2,vars,hiddenInputProps,...others}=props2,getStyles2=useStyles({name:"Slider",props:props2,classes:__default__$5,classNames,className,styles,style:style2,vars,varsResolver:varsResolver$5,unstyled}),{dir}=useDirection(),[hovered,setHovered]=useState$1(!1),[_value,setValue]=useUncontrolled({value:typeof value=="number"?clamp$4(value,min2,max2):value,defaultValue:typeof defaultValue=="number"?clamp$4(defaultValue,min2,max2):defaultValue,finalValue:clamp$4(0,min2,max2),onChange}),valueRef=useRef$1(_value),root2=useRef$1(),thumb=useRef$1(),position=getPosition({value:_value,min:min2,max:max2}),scaledValue=scale2(_value),_label=typeof label=="function"?label(scaledValue):label,precision=_precision??getPrecision(step),handleChange=useCallback$1(({x:x2})=>{if(!disabled){const nextValue=getChangeValue({value:x2,min:min2,max:max2,step,precision});setValue(nextValue),valueRef.current=nextValue}},[disabled,min2,max2,step,precision,setValue]),{ref:container2,active}=useMove(handleChange,{onScrubEnd:()=>onChangeEnd?.(valueRef.current)},dir),handleTrackKeydownCapture=event=>{if(!disabled)switch(event.key){case"ArrowUp":{event.preventDefault(),thumb.current?.focus();const nextValue=getFloatingValue(Math.min(Math.max(_value+step,min2),max2),precision);setValue(nextValue),onChangeEnd?.(nextValue);break}case"ArrowRight":{event.preventDefault(),thumb.current?.focus();const nextValue=getFloatingValue(Math.min(Math.max(dir==="rtl"?_value-step:_value+step,min2),max2),precision);setValue(nextValue),onChangeEnd?.(nextValue);break}case"ArrowDown":{event.preventDefault(),thumb.current?.focus();const nextValue=getFloatingValue(Math.min(Math.max(_value-step,min2),max2),precision);setValue(nextValue),onChangeEnd?.(nextValue);break}case"ArrowLeft":{event.preventDefault(),thumb.current?.focus();const nextValue=getFloatingValue(Math.min(Math.max(dir==="rtl"?_value+step:_value-step,min2),max2),precision);setValue(nextValue),onChangeEnd?.(nextValue);break}case"Home":{event.preventDefault(),thumb.current?.focus(),setValue(min2),onChangeEnd?.(min2);break}case"End":{event.preventDefault(),thumb.current?.focus(),setValue(max2),onChangeEnd?.(max2);break}}};return jsx(SliderProvider,{value:{getStyles:getStyles2},children:jsxs(SliderRoot,{...others,ref:useMergedRef(ref,root2),onKeyDownCapture:handleTrackKeydownCapture,onMouseDownCapture:()=>root2.current?.focus(),size:size2,disabled,children:[jsx(Track,{inverted,offset:0,filled:position,marks,min:min2,max:max2,value:scaledValue,disabled,containerProps:{ref:container2,onMouseEnter:showLabelOnHover?()=>setHovered(!0):void 0,onMouseLeave:showLabelOnHover?()=>setHovered(!1):void 0},children:jsx(Thumb,{max:max2,min:min2,value:scaledValue,position,dragging:active,label:_label,ref:thumb,labelTransitionProps,labelAlwaysOn,thumbLabel,showLabelOnHover,isHovered:hovered,disabled,children:thumbChildren})}),jsx("input",{type:"hidden",name,value:scaledValue,...hiddenInputProps})]})})});Slider.classes=__default__$5;Slider.displayName="@mantine/core/Slider";const defaultProps$8={},Space=factory((props2,ref)=>{const{w:w2,h:h2,miw,mih,...others}=useProps("Space",defaultProps$8,props2);return jsx(Box,{ref,...others,w:w2,miw:miw??w2,h:h2,mih:mih??h2})});Space.displayName="@mantine/core/Space";var __default__$4={root:"m_559cce2d",content:"m_b912df4e",control:"m_b9131032"};const defaultProps$7={maxHeight:100,initialState:!1},varsResolver$4=(_,{transitionDuration})=>({root:{"--spoiler-transition-duration":transitionDuration!==void 0?`${transitionDuration}ms`:void 0}}),Spoiler=factory((_props,ref)=>{const props2=useProps("Spoiler",defaultProps$7,_props),{classNames,className,style:style2,styles,unstyled,vars,initialState:initialState2,maxHeight,hideLabel,showLabel,children:children2,controlRef,transitionDuration,id:id2,expanded,onExpandedChange,...others}=props2,getStyles2=useStyles({name:"Spoiler",classes:__default__$4,props:props2,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$4}),_id=useId$2(id2),regionId=`${_id}-region`,[show,setShowState]=useUncontrolled({value:expanded,defaultValue:initialState2,finalValue:!1,onChange:onExpandedChange}),{ref:contentRef,height}=useElementSize(),spoilerMoreContent=show?hideLabel:showLabel,spoiler=spoilerMoreContent!==null&&maxHeight<height;return jsxs(Box,{...getStyles2("root"),id:_id,ref,"data-has-spoiler":spoiler||void 0,...others,children:[spoiler&&jsx(Anchor,{component:"button",type:"button",ref:controlRef,onClick:()=>setShowState(!show),"aria-expanded":show,"aria-controls":regionId,...getStyles2("control"),children:spoilerMoreContent}),jsx("div",{...getStyles2("content",{style:{maxHeight:show?height?rem(height):void 0:rem(maxHeight)}}),"data-reduce-motion":!0,role:"region",id:regionId,children:jsx("div",{ref:contentRef,children:children2})})]})});Spoiler.classes=__default__$4;Spoiler.displayName="@mantine/core/Spoiler";var __default__$3={root:"m_6d731127"};const defaultProps$6={gap:"md",align:"stretch",justify:"flex-start"},varsResolver$3=(_,{gap,align,justify})=>({root:{"--stack-gap":getSpacing(gap),"--stack-align":align,"--stack-justify":justify}}),Stack=factory((_props,ref)=>{const props2=useProps("Stack",defaultProps$6,_props),{classNames,className,style:style2,styles,unstyled,vars,align,justify,gap,variant,...others}=props2,getStyles2=useStyles({name:"Stack",props:props2,classes:__default__$3,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$3});return jsx(Box,{ref,...getStyles2("root"),variant,...others})});Stack.classes=__default__$3;Stack.displayName="@mantine/core/Stack";const[TabsProvider,useTabsContext]=createSafeContext("Tabs component was not found in the tree");var __default__$2={root:"m_89d60db1","list--default":"m_576c9d4",list:"m_89d33d6d",panel:"m_b0c91715",tab:"m_4ec4dce6",tabSection:"m_fc420b1f","tab--default":"m_539e827b","list--outline":"m_6772fbd5","tab--outline":"m_b59ab47c","tab--pills":"m_c3381914"};const defaultProps$5={},TabsList=factory((_props,ref)=>{const props2=useProps("TabsList",defaultProps$5,_props),{children:children2,className,grow,justify,classNames,styles,style:style2,mod,...others}=props2,ctx=useTabsContext();return jsx(Box,{...others,...ctx.getStyles("list",{className,style:style2,classNames,styles,props:props2,variant:ctx.variant}),ref,role:"tablist",variant:ctx.variant,mod:[{grow,orientation:ctx.orientation,placement:ctx.orientation==="vertical"&&ctx.placement,inverted:ctx.inverted},mod],"aria-orientation":ctx.orientation,__vars:{"--tabs-justify":justify},children:children2})});TabsList.classes=__default__$2;TabsList.displayName="@mantine/core/TabsList";const defaultProps$4={},TabsPanel=factory((_props,ref)=>{const props2=useProps("TabsPanel",defaultProps$4,_props),{children:children2,className,value,classNames,styles,style:style2,mod,...others}=props2,ctx=useTabsContext(),active=ctx.value===value,content2=ctx.keepMounted||props2.keepMounted||active?children2:null;return jsx(Box,{...others,...ctx.getStyles("panel",{className,classNames,styles,style:[style2,active?void 0:{display:"none"}],props:props2}),ref,mod:[{orientation:ctx.orientation},mod],role:"tabpanel",id:ctx.getPanelId(value),"aria-labelledby":ctx.getTabId(value),children:content2})});TabsPanel.classes=__default__$2;TabsPanel.displayName="@mantine/core/TabsPanel";const defaultProps$3={},TabsTab=factory((_props,ref)=>{const props2=useProps("TabsTab",defaultProps$3,_props),{className,children:children2,rightSection,leftSection,value,onClick,onKeyDown,disabled,color:color2,style:style2,classNames,styles,vars,mod,...others}=props2,theme2=useMantineTheme(),{dir}=useDirection(),ctx=useTabsContext(),active=value===ctx.value,activateTab=event=>{ctx.onChange(ctx.allowTabDeactivation&&value===ctx.value?null:value),onClick?.(event)},stylesApiProps={classNames,styles,props:props2};return jsxs(UnstyledButton,{...others,...ctx.getStyles("tab",{className,style:style2,variant:ctx.variant,...stylesApiProps}),disabled,unstyled:ctx.unstyled,variant:ctx.variant,mod:[{active,disabled,orientation:ctx.orientation,inverted:ctx.inverted,placement:ctx.orientation==="vertical"&&ctx.placement},mod],ref,role:"tab",id:ctx.getTabId(value),"aria-selected":active,tabIndex:active||ctx.value===null?0:-1,"aria-controls":ctx.getPanelId(value),onClick:activateTab,__vars:{"--tabs-color":color2?getThemeColor(color2,theme2):void 0},onKeyDown:createScopedKeydownHandler({siblingSelector:'[role="tab"]',parentSelector:'[role="tablist"]',activateOnFocus:ctx.activateTabWithKeyboard,loop:ctx.loop,orientation:ctx.orientation||"horizontal",dir,onKeyDown}),children:[leftSection&&jsx("span",{...ctx.getStyles("tabSection",stylesApiProps),"data-position":"left",children:leftSection}),children2&&jsx("span",{...ctx.getStyles("tabLabel",stylesApiProps),children:children2}),rightSection&&jsx("span",{...ctx.getStyles("tabSection",stylesApiProps),"data-position":"right",children:rightSection})]})});TabsTab.classes=__default__$2;TabsTab.displayName="@mantine/core/TabsTab";const VALUE_ERROR="Tabs.Tab or Tabs.Panel component was rendered with invalid value or without value",defaultProps$2={keepMounted:!0,orientation:"horizontal",loop:!0,activateTabWithKeyboard:!0,allowTabDeactivation:!1,unstyled:!1,inverted:!1,variant:"default",placement:"left"},varsResolver$2=(theme2,{radius,color:color2,autoContrast})=>({root:{"--tabs-radius":getRadius(radius),"--tabs-color":getThemeColor(color2,theme2),"--tabs-text-color":getAutoContrastValue(autoContrast,theme2)?getContrastColor({color:color2,theme:theme2,autoContrast}):void 0}}),Tabs=factory((_props,ref)=>{const props2=useProps("Tabs",defaultProps$2,_props),{defaultValue,value,onChange,orientation,children:children2,loop,id:id2,activateTabWithKeyboard,allowTabDeactivation,variant,color:color2,radius,inverted,placement,keepMounted,classNames,styles,unstyled,className,style:style2,vars,autoContrast,mod,...others}=props2,uid=useId$2(id2),[currentTab,setCurrentTab]=useUncontrolled({value,defaultValue,finalValue:null,onChange}),getStyles2=useStyles({name:"Tabs",props:props2,classes:__default__$2,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$2});return jsx(TabsProvider,{value:{placement,value:currentTab,orientation,id:uid,loop,activateTabWithKeyboard,getTabId:getSafeId(`${uid}-tab`,VALUE_ERROR),getPanelId:getSafeId(`${uid}-panel`,VALUE_ERROR),onChange:setCurrentTab,allowTabDeactivation,variant,color:color2,radius,inverted,keepMounted,unstyled,getStyles:getStyles2},children:jsx(Box,{ref,id:uid,variant,mod:[{orientation,inverted:orientation==="horizontal"&&inverted,placement:orientation==="vertical"&&placement},mod],...getStyles2("root"),...others,children:children2})})});Tabs.classes=__default__$2;Tabs.displayName="@mantine/core/Tabs";Tabs.Tab=TabsTab;Tabs.Panel=TabsPanel;Tabs.List=TabsList;const headings=["h1","h2","h3","h4","h5","h6"];function getTitleSize(order,size2){const titleSize=size2!==void 0?size2:`h${order}`;return headings.includes(titleSize)?{fontSize:`var(--mantine-${titleSize}-font-size)`,fontWeight:`var(--mantine-${titleSize}-font-weight)`,lineHeight:`var(--mantine-${titleSize}-line-height)`}:{fontSize:rem(titleSize),fontWeight:`var(--mantine-h${order}-font-weight)`,lineHeight:`var(--mantine-h${order}-line-height)`}}var __default__$1={root:"m_8a5d1357"};const defaultProps$1={order:1},varsResolver$1=(_,{order,size:size2,lineClamp,textWrap})=>{const sizeVariables=getTitleSize(order,size2);return{root:{"--title-fw":sizeVariables.fontWeight,"--title-lh":sizeVariables.lineHeight,"--title-fz":sizeVariables.fontSize,"--title-line-clamp":typeof lineClamp=="number"?lineClamp.toString():void 0,"--title-text-wrap":textWrap}}},Title=factory((_props,ref)=>{const props2=useProps("Title",defaultProps$1,_props),{classNames,className,style:style2,styles,unstyled,order,vars,size:size2,variant,lineClamp,textWrap,mod,...others}=props2,getStyles2=useStyles({name:"Title",props:props2,classes:__default__$1,className,style:style2,classNames,styles,unstyled,vars,varsResolver:varsResolver$1});return[1,2,3,4,5,6].includes(order)?jsx(Box,{...getStyles2("root"),component:`h${order}`,variant,ref,mod:[{order,"data-line-clamp":typeof lineClamp=="number"},mod],size:size2,...others}):null});Title.classes=__default__$1;Title.displayName="@mantine/core/Title";function getValuesRange(anchor,value,flatValues){if(!anchor||!value)return[];const anchorIndex=flatValues.indexOf(anchor),valueIndex=flatValues.indexOf(value),start2=Math.min(anchorIndex,valueIndex),end=Math.max(anchorIndex,valueIndex);return flatValues.slice(start2,end+1)}function TreeNode({node,getStyles:getStyles2,rootIndex,controller,expandOnClick,selectOnClick,isSubtree,level=1,renderNode,flatValues,allowRangeSelection,expandOnSpace}){const ref=useRef$1(null),nested=(node.children||[]).map(child=>jsx(TreeNode,{node:child,flatValues,getStyles:getStyles2,rootIndex:void 0,level:level+1,controller,expandOnClick,isSubtree:!0,renderNode,selectOnClick,allowRangeSelection,expandOnSpace},child.value)),handleKeyDown=event=>{if(event.nativeEvent.code==="ArrowRight"&&(event.stopPropagation(),event.preventDefault(),controller.expandedState[node.value]?event.currentTarget.querySelector("[role=treeitem]")?.focus():controller.expand(node.value)),event.nativeEvent.code==="ArrowLeft"&&(event.stopPropagation(),event.preventDefault(),controller.expandedState[node.value]&&(node.children||[]).length>0?controller.collapse(node.value):isSubtree&&findElementAncestor(event.currentTarget,"[role=treeitem]")?.focus()),event.nativeEvent.code==="ArrowDown"||event.nativeEvent.code==="ArrowUp"){const root2=findElementAncestor(event.currentTarget,"[data-tree-root]");if(!root2)return;event.stopPropagation(),event.preventDefault();const nodes=Array.from(root2.querySelectorAll("[role=treeitem]")),index2=nodes.indexOf(event.currentTarget);if(index2===-1)return;const nextIndex=event.nativeEvent.code==="ArrowDown"?index2+1:index2-1;if(nodes[nextIndex]?.focus(),event.shiftKey){const selectNode=nodes[nextIndex];selectNode&&controller.setSelectedState(getValuesRange(controller.anchorNode,selectNode.dataset.value,flatValues))}}event.nativeEvent.code==="Space"&&expandOnSpace&&(event.stopPropagation(),event.preventDefault(),controller.toggleExpanded(node.value))},handleNodeClick2=event=>{event.stopPropagation(),allowRangeSelection&&event.shiftKey&&controller.anchorNode?(controller.setSelectedState(getValuesRange(controller.anchorNode,node.value,flatValues)),ref.current?.focus()):(expandOnClick&&controller.toggleExpanded(node.value),selectOnClick&&controller.select(node.value),ref.current?.focus())},selected2=controller.selectedState.includes(node.value),elementProps={...getStyles2("label"),onClick:handleNodeClick2,"data-selected":selected2||void 0,"data-value":node.value,"data-hovered":controller.hoveredNode===node.value||void 0};return jsxs("li",{...getStyles2("node",{style:{"--label-offset":`calc(var(--level-offset) * ${level-1})`}}),role:"treeitem","aria-selected":selected2,"data-value":node.value,"data-selected":selected2||void 0,"data-hovered":controller.hoveredNode===node.value||void 0,"data-level":level,tabIndex:rootIndex===0?0:-1,onKeyDown:handleKeyDown,ref,onMouseOver:event=>{event.stopPropagation(),controller.setHoveredNode(node.value)},onMouseLeave:event=>{event.stopPropagation(),controller.setHoveredNode(null)},children:[typeof renderNode=="function"?renderNode({node,level,selected:selected2,expanded:controller.expandedState[node.value]||!1,hasChildren:Array.isArray(node.children)&&node.children.length>0,elementProps}):jsx("div",{...elementProps,children:node.label}),controller.expandedState[node.value]&&nested.length>0&&jsx("ul",{role:"group",...getStyles2("subtree"),"data-level":level,children:nested})]})}TreeNode.displayName="@mantine/core/TreeNode";function getInitialState$1(initialState2,data,value,acc={}){return data.forEach(node=>{acc[node.value]=node.value in initialState2?initialState2[node.value]:node.value===value,Array.isArray(node.children)&&getInitialState$1(initialState2,node.children,value,acc)}),acc}function useTree({initialSelectedState=[],initialExpandedState={},multiple=!1}={}){const[expandedState,setExpandedState]=useState$1(initialExpandedState),[selectedState,setSelectedState]=useState$1(initialSelectedState),[anchorNode,setAnchorNode]=useState$1(null),[hoveredNode,setHoveredNode]=useState$1(null),initialize=useCallback$1(data=>{setExpandedState(current=>getInitialState$1(current,data,selectedState))},[selectedState]),toggleExpanded=useCallback$1(value=>{setExpandedState(current=>({...current,[value]:!current[value]}))},[]),collapse=useCallback$1(value=>{setExpandedState(current=>({...current,[value]:!1}))},[]),expand=useCallback$1(value=>{setExpandedState(current=>({...current,[value]:!0}))},[]),expandAllNodes=useCallback$1(()=>{setExpandedState(current=>{const next={...current};return Object.keys(next).forEach(key=>{next[key]=!0}),next})},[]),collapseAllNodes=useCallback$1(()=>{setExpandedState(current=>{const next={...current};return Object.keys(next).forEach(key=>{next[key]=!1}),next})},[]),toggleSelected=useCallback$1(value=>setSelectedState(current=>multiple?current.includes(value)?(setAnchorNode(null),current.filter(item=>item!==value)):(setAnchorNode(value),[...current,value]):current.includes(value)?(setAnchorNode(null),[]):(setAnchorNode(value),[value])),[]),select2=useCallback$1(value=>{setAnchorNode(value),setSelectedState(current=>multiple?current.includes(value)?current:[...current,value]:[value])},[]),deselect=useCallback$1(value=>{anchorNode===value&&setAnchorNode(null),setSelectedState(current=>current.filter(item=>item!==value))},[]),clearSelected=useCallback$1(()=>{setSelectedState([]),setAnchorNode(null)},[]);return{multiple,expandedState,selectedState,anchorNode,initialize,toggleExpanded,collapse,expand,expandAllNodes,collapseAllNodes,setExpandedState,toggleSelected,select:select2,deselect,clearSelected,setSelectedState,hoveredNode,setHoveredNode}}var __default__={root:"m_f698e191",subtree:"m_75f3ecf",node:"m_f6970eb1",label:"m_dc283425"};function getFlatValues(data){return data.reduce((acc,item)=>(acc.push(item.value),item.children&&acc.push(...getFlatValues(item.children)),acc),[])}const defaultProps={expandOnClick:!0,allowRangeSelection:!0,expandOnSpace:!0},varsResolver=(_theme,{levelOffset})=>({root:{"--level-offset":getSpacing(levelOffset)}}),Tree=factory((_props,ref)=>{const props2=useProps("Tree",defaultProps,_props),{classNames,className,style:style2,styles,unstyled,vars,data,expandOnClick,tree,renderNode,selectOnClick,clearSelectionOnOutsideClick,allowRangeSelection,expandOnSpace,levelOffset,...others}=props2,defaultController=useTree(),controller=tree||defaultController,getStyles2=useStyles({name:"Tree",classes:__default__,props:props2,className,style:style2,classNames,styles,unstyled,vars,varsResolver}),clickOutsideRef=useClickOutside(()=>clearSelectionOnOutsideClick&&controller.clearSelected()),mergedRef=useMergedRef(ref,clickOutsideRef),flatValues=useMemo$1(()=>getFlatValues(data),[data]);useEffect$1(()=>{controller.initialize(data)},[data]);const nodes=data.map((node,index2)=>jsx(TreeNode,{node,getStyles:getStyles2,rootIndex:index2,expandOnClick,selectOnClick,controller,renderNode,flatValues,allowRangeSelection,expandOnSpace},node.value));return jsx(Box,{component:"ul",ref:mergedRef,...getStyles2("root"),...others,role:"tree","aria-multiselectable":controller.multiple,"data-tree-root":!0,children:nodes})});Tree.displayName="@mantine/core/Tree";Tree.classes=__default__;var content="_1u4wf800",image="_1u4wf801",inner="_1u4wf802",root$1="_1u4wf803",description$2="_1u4wf804",title$3="_1u4wf805";function NotFound(){return jsx(Container,{className:root$1,children:jsxs("div",{className:inner,children:[jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 362 145",className:image,children:jsx("path",{fill:"currentColor",d:"M62.6 142c-2.133 0-3.2-1.067-3.2-3.2V118h-56c-2 0-3-1-3-3V92.8c0-1.333.4-2.733 1.2-4.2L58.2 4c.8-1.333 2.067-2 3.8-2h28c2 0 3 1 3 3v85.4h11.2c.933 0 1.733.333 2.4 1 .667.533 1 1.267 1 2.2v21.2c0 .933-.333 1.733-1 2.4-.667.533-1.467.8-2.4.8H93v20.8c0 2.133-1.067 3.2-3.2 3.2H62.6zM33 90.4h26.4V51.2L33 90.4zM181.67 144.6c-7.333 0-14.333-1.333-21-4-6.666-2.667-12.866-6.733-18.6-12.2-5.733-5.467-10.266-13-13.6-22.6-3.333-9.6-5-20.667-5-33.2 0-12.533 1.667-23.6 5-33.2 3.334-9.6 7.867-17.133 13.6-22.6 5.734-5.467 11.934-9.533 18.6-12.2 6.667-2.8 13.667-4.2 21-4.2 7.467 0 14.534 1.4 21.2 4.2 6.667 2.667 12.8 6.733 18.4 12.2 5.734 5.467 10.267 13 13.6 22.6 3.334 9.6 5 20.667 5 33.2 0 12.533-1.666 23.6-5 33.2-3.333 9.6-7.866 17.133-13.6 22.6-5.6 5.467-11.733 9.533-18.4 12.2-6.666 2.667-13.733 4-21.2 4zm0-31c9.067 0 15.6-3.733 19.6-11.2 4.134-7.6 6.2-17.533 6.2-29.8s-2.066-22.2-6.2-29.8c-4.133-7.6-10.666-11.4-19.6-11.4-8.933 0-15.466 3.8-19.6 11.4-4 7.6-6 17.533-6 29.8s2 22.2 6 29.8c4.134 7.467 10.667 11.2 19.6 11.2zM316.116 142c-2.134 0-3.2-1.067-3.2-3.2V118h-56c-2 0-3-1-3-3V92.8c0-1.333.4-2.733 1.2-4.2l56.6-84.6c.8-1.333 2.066-2 3.8-2h28c2 0 3 1 3 3v85.4h11.2c.933 0 1.733.333 2.4 1 .666.533 1 1.267 1 2.2v21.2c0 .933-.334 1.733-1 2.4-.667.533-1.467.8-2.4.8h-11.2v20.8c0 2.133-1.067 3.2-3.2 3.2h-27.2zm-29.6-51.6h26.4V51.2l-26.4 39.2z"})}),jsxs("div",{className:content,children:[jsx(Title,{className:title$3,children:"Nothing to see here"}),jsx(Text$1,{c:"dimmed",size:"lg",ta:"center",className:description$2,children:"Page you are trying to open does not exist. You may have mistyped the address, or the page has been moved to another URL. If you think this is an error contact support."}),jsx(Group,{justify:"center",children:jsx(Button,{component:Link,to:"/",search:!0,startTransition:!0,size:"md",children:"Take me back to home page"})})]})]})})}const theme={primaryColor:"indigo",cursorType:"pointer",fontFamily:"var(--likec4-app-font)",headings:{fontWeight:"500",sizes:{h1:{fontWeight:"600"},h2:{}}}},asTheme=v2=>{if(typeof v2!="string")return;const vlower=v2.toLowerCase();if(vlower==="light"||vlower==="dark")return vlower},asPadding=v2=>{switch(!0){case typeof v2=="number":return Math.round(v2);case typeof v2=="string":return Math.round(parseFloat(v2))}},Route$a=createRootRouteWithContext()({component:RootComponent,validateSearch:search=>({padding:asPadding(search.padding),theme:asTheme(search.theme)})});function RootComponent(){const{theme:theme$1}=Route$a.useSearch();return jsxs(MantineProvider,{...theme$1&&{forceColorScheme:theme$1},defaultColorScheme:theme$1??"dark",theme,children:[jsx(ScrollRestoration,{}),jsx(Outlet,{})]})}function cc(names){if(typeof names=="string"||typeof names=="number")return""+names;let out="";if(Array.isArray(names))for(let i2=0,tmp;i2<names.length;i2++)(tmp=cc(names[i2]))!==""&&(out+=(out&&" ")+tmp);else for(let k2 in names)names[k2]&&(out+=(out&&" ")+k2);return out}var noop$3={value:()=>{}};function dispatch(){for(var i2=0,n2=arguments.length,_={},t2;i2<n2;++i2){if(!(t2=arguments[i2]+"")||t2 in _||/[\s.]/.test(t2))throw new Error("illegal type: "+t2);_[t2]=[]}return new Dispatch(_)}function Dispatch(_){this._=_}function parseTypenames$1(typenames,types){return typenames.trim().split(/^|\s+/).map(function(t2){var name="",i2=t2.indexOf(".");if(i2>=0&&(name=t2.slice(i2+1),t2=t2.slice(0,i2)),t2&&!types.hasOwnProperty(t2))throw new Error("unknown type: "+t2);return{type:t2,name}})}Dispatch.prototype=dispatch.prototype={constructor:Dispatch,on:function(typename,callback){var _=this._,T=parseTypenames$1(typename+"",_),t2,i2=-1,n2=T.length;if(arguments.length<2){for(;++i2<n2;)if((t2=(typename=T[i2]).type)&&(t2=get$1(_[t2],typename.name)))return t2;return}if(callback!=null&&typeof callback!="function")throw new Error("invalid callback: "+callback);for(;++i2<n2;)if(t2=(typename=T[i2]).type)_[t2]=set$1(_[t2],typename.name,callback);else if(callback==null)for(t2 in _)_[t2]=set$1(_[t2],typename.name,null);return this},copy:function(){var copy={},_=this._;for(var t2 in _)copy[t2]=_[t2].slice();return new Dispatch(copy)},call:function(type,that){if((n2=arguments.length-2)>0)for(var args=new Array(n2),i2=0,n2,t2;i2<n2;++i2)args[i2]=arguments[i2+2];if(!this._.hasOwnProperty(type))throw new Error("unknown type: "+type);for(t2=this._[type],i2=0,n2=t2.length;i2<n2;++i2)t2[i2].value.apply(that,args)},apply:function(type,that,args){if(!this._.hasOwnProperty(type))throw new Error("unknown type: "+type);for(var t2=this._[type],i2=0,n2=t2.length;i2<n2;++i2)t2[i2].value.apply(that,args)}};function get$1(type,name){for(var i2=0,n2=type.length,c2;i2<n2;++i2)if((c2=type[i2]).name===name)return c2.value}function set$1(type,name,callback){for(var i2=0,n2=type.length;i2<n2;++i2)if(type[i2].name===name){type[i2]=noop$3,type=type.slice(0,i2).concat(type.slice(i2+1));break}return callback!=null&&type.push({name,value:callback}),type}var xhtml="http://www.w3.org/1999/xhtml";const namespaces={svg:"http://www.w3.org/2000/svg",xhtml,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function namespace(name){var prefix2=name+="",i2=prefix2.indexOf(":");return i2>=0&&(prefix2=name.slice(0,i2))!=="xmlns"&&(name=name.slice(i2+1)),namespaces.hasOwnProperty(prefix2)?{space:namespaces[prefix2],local:name}:name}function creatorInherit(name){return function(){var document2=this.ownerDocument,uri=this.namespaceURI;return uri===xhtml&&document2.documentElement.namespaceURI===xhtml?document2.createElement(name):document2.createElementNS(uri,name)}}function creatorFixed(fullname){return function(){return this.ownerDocument.createElementNS(fullname.space,fullname.local)}}function creator(name){var fullname=namespace(name);return(fullname.local?creatorFixed:creatorInherit)(fullname)}function none(){}function selector$4(selector2){return selector2==null?none:function(){return this.querySelector(selector2)}}function selection_select(select2){typeof select2!="function"&&(select2=selector$4(select2));for(var groups=this._groups,m2=groups.length,subgroups=new Array(m2),j=0;j<m2;++j)for(var group=groups[j],n2=group.length,subgroup=subgroups[j]=new Array(n2),node,subnode,i2=0;i2<n2;++i2)(node=group[i2])&&(subnode=select2.call(node,node.__data__,i2,group))&&("__data__"in node&&(subnode.__data__=node.__data__),subgroup[i2]=subnode);return new Selection$1(subgroups,this._parents)}function array$1(x2){return x2==null?[]:Array.isArray(x2)?x2:Array.from(x2)}function empty(){return[]}function selectorAll(selector2){return selector2==null?empty:function(){return this.querySelectorAll(selector2)}}function arrayAll(select2){return function(){return array$1(select2.apply(this,arguments))}}function selection_selectAll(select2){typeof select2=="function"?select2=arrayAll(select2):select2=selectorAll(select2);for(var groups=this._groups,m2=groups.length,subgroups=[],parents=[],j=0;j<m2;++j)for(var group=groups[j],n2=group.length,node,i2=0;i2<n2;++i2)(node=group[i2])&&(subgroups.push(select2.call(node,node.__data__,i2,group)),parents.push(node));return new Selection$1(subgroups,parents)}function matcher(selector2){return function(){return this.matches(selector2)}}function childMatcher(selector2){return function(node){return node.matches(selector2)}}var find=Array.prototype.find;function childFind(match){return function(){return find.call(this.children,match)}}function childFirst(){return this.firstElementChild}function selection_selectChild(match){return this.select(match==null?childFirst:childFind(typeof match=="function"?match:childMatcher(match)))}var filter$1=Array.prototype.filter;function children(){return Array.from(this.children)}function childrenFilter(match){return function(){return filter$1.call(this.children,match)}}function selection_selectChildren(match){return this.selectAll(match==null?children:childrenFilter(typeof match=="function"?match:childMatcher(match)))}function selection_filter(match){typeof match!="function"&&(match=matcher(match));for(var groups=this._groups,m2=groups.length,subgroups=new Array(m2),j=0;j<m2;++j)for(var group=groups[j],n2=group.length,subgroup=subgroups[j]=[],node,i2=0;i2<n2;++i2)(node=group[i2])&&match.call(node,node.__data__,i2,group)&&subgroup.push(node);return new Selection$1(subgroups,this._parents)}function sparse(update){return new Array(update.length)}function selection_enter(){return new Selection$1(this._enter||this._groups.map(sparse),this._parents)}function EnterNode(parent,datum2){this.ownerDocument=parent.ownerDocument,this.namespaceURI=parent.namespaceURI,this._next=null,this._parent=parent,this.__data__=datum2}EnterNode.prototype={constructor:EnterNode,appendChild:function(child){return this._parent.insertBefore(child,this._next)},insertBefore:function(child,next){return this._parent.insertBefore(child,next)},querySelector:function(selector2){return this._parent.querySelector(selector2)},querySelectorAll:function(selector2){return this._parent.querySelectorAll(selector2)}};function constant$4(x2){return function(){return x2}}function bindIndex(parent,group,enter,update,exit,data){for(var i2=0,node,groupLength=group.length,dataLength=data.length;i2<dataLength;++i2)(node=group[i2])?(node.__data__=data[i2],update[i2]=node):enter[i2]=new EnterNode(parent,data[i2]);for(;i2<groupLength;++i2)(node=group[i2])&&(exit[i2]=node)}function bindKey(parent,group,enter,update,exit,data,key){var i2,node,nodeByKeyValue=new Map,groupLength=group.length,dataLength=data.length,keyValues=new Array(groupLength),keyValue;for(i2=0;i2<groupLength;++i2)(node=group[i2])&&(keyValues[i2]=keyValue=key.call(node,node.__data__,i2,group)+"",nodeByKeyValue.has(keyValue)?exit[i2]=node:nodeByKeyValue.set(keyValue,node));for(i2=0;i2<dataLength;++i2)keyValue=key.call(parent,data[i2],i2,data)+"",(node=nodeByKeyValue.get(keyValue))?(update[i2]=node,node.__data__=data[i2],nodeByKeyValue.delete(keyValue)):enter[i2]=new EnterNode(parent,data[i2]);for(i2=0;i2<groupLength;++i2)(node=group[i2])&&nodeByKeyValue.get(keyValues[i2])===node&&(exit[i2]=node)}function datum(node){return node.__data__}function selection_data(value,key){if(!arguments.length)return Array.from(this,datum);var bind=key?bindKey:bindIndex,parents=this._parents,groups=this._groups;typeof value!="function"&&(value=constant$4(value));for(var m2=groups.length,update=new Array(m2),enter=new Array(m2),exit=new Array(m2),j=0;j<m2;++j){var parent=parents[j],group=groups[j],groupLength=group.length,data=arraylike(value.call(parent,parent&&parent.__data__,j,parents)),dataLength=data.length,enterGroup=enter[j]=new Array(dataLength),updateGroup=update[j]=new Array(dataLength),exitGroup=exit[j]=new Array(groupLength);bind(parent,group,enterGroup,updateGroup,exitGroup,data,key);for(var i0=0,i1=0,previous,next;i0<dataLength;++i0)if(previous=enterGroup[i0]){for(i0>=i1&&(i1=i0+1);!(next=updateGroup[i1])&&++i1<dataLength;);previous._next=next||null}}return update=new Selection$1(update,parents),update._enter=enter,update._exit=exit,update}function arraylike(data){return typeof data=="object"&&"length"in data?data:Array.from(data)}function selection_exit(){return new Selection$1(this._exit||this._groups.map(sparse),this._parents)}function selection_join(onenter,onupdate,onexit){var enter=this.enter(),update=this,exit=this.exit();return typeof onenter=="function"?(enter=onenter(enter),enter&&(enter=enter.selection())):enter=enter.append(onenter+""),onupdate!=null&&(update=onupdate(update),update&&(update=update.selection())),onexit==null?exit.remove():onexit(exit),enter&&update?enter.merge(update).order():update}function selection_merge(context){for(var selection2=context.selection?context.selection():context,groups0=this._groups,groups1=selection2._groups,m0=groups0.length,m1=groups1.length,m2=Math.min(m0,m1),merges=new Array(m0),j=0;j<m2;++j)for(var group0=groups0[j],group1=groups1[j],n2=group0.length,merge=merges[j]=new Array(n2),node,i2=0;i2<n2;++i2)(node=group0[i2]||group1[i2])&&(merge[i2]=node);for(;j<m0;++j)merges[j]=groups0[j];return new Selection$1(merges,this._parents)}function selection_order(){for(var groups=this._groups,j=-1,m2=groups.length;++j<m2;)for(var group=groups[j],i2=group.length-1,next=group[i2],node;--i2>=0;)(node=group[i2])&&(next&&node.compareDocumentPosition(next)^4&&next.parentNode.insertBefore(node,next),next=node);return this}function selection_sort(compare2){compare2||(compare2=ascending);function compareNode(a2,b2){return a2&&b2?compare2(a2.__data__,b2.__data__):!a2-!b2}for(var groups=this._groups,m2=groups.length,sortgroups=new Array(m2),j=0;j<m2;++j){for(var group=groups[j],n2=group.length,sortgroup=sortgroups[j]=new Array(n2),node,i2=0;i2<n2;++i2)(node=group[i2])&&(sortgroup[i2]=node);sortgroup.sort(compareNode)}return new Selection$1(sortgroups,this._parents).order()}function ascending(a2,b2){return a2<b2?-1:a2>b2?1:a2>=b2?0:NaN}function selection_call(){var callback=arguments[0];return arguments[0]=this,callback.apply(null,arguments),this}function selection_nodes(){return Array.from(this)}function selection_node(){for(var groups=this._groups,j=0,m2=groups.length;j<m2;++j)for(var group=groups[j],i2=0,n2=group.length;i2<n2;++i2){var node=group[i2];if(node)return node}return null}function selection_size(){let size2=0;for(const node of this)++size2;return size2}function selection_empty(){return!this.node()}function selection_each(callback){for(var groups=this._groups,j=0,m2=groups.length;j<m2;++j)for(var group=groups[j],i2=0,n2=group.length,node;i2<n2;++i2)(node=group[i2])&&callback.call(node,node.__data__,i2,group);return this}function attrRemove$1(name){return function(){this.removeAttribute(name)}}function attrRemoveNS$1(fullname){return function(){this.removeAttributeNS(fullname.space,fullname.local)}}function attrConstant$1(name,value){return function(){this.setAttribute(name,value)}}function attrConstantNS$1(fullname,value){return function(){this.setAttributeNS(fullname.space,fullname.local,value)}}function attrFunction$1(name,value){return function(){var v2=value.apply(this,arguments);v2==null?this.removeAttribute(name):this.setAttribute(name,v2)}}function attrFunctionNS$1(fullname,value){return function(){var v2=value.apply(this,arguments);v2==null?this.removeAttributeNS(fullname.space,fullname.local):this.setAttributeNS(fullname.space,fullname.local,v2)}}function selection_attr(name,value){var fullname=namespace(name);if(arguments.length<2){var node=this.node();return fullname.local?node.getAttributeNS(fullname.space,fullname.local):node.getAttribute(fullname)}return this.each((value==null?fullname.local?attrRemoveNS$1:attrRemove$1:typeof value=="function"?fullname.local?attrFunctionNS$1:attrFunction$1:fullname.local?attrConstantNS$1:attrConstant$1)(fullname,value))}function defaultView(node){return node.ownerDocument&&node.ownerDocument.defaultView||node.document&&node||node.defaultView}function styleRemove$1(name){return function(){this.style.removeProperty(name)}}function styleConstant$1(name,value,priority){return function(){this.style.setProperty(name,value,priority)}}function styleFunction$1(name,value,priority){return function(){var v2=value.apply(this,arguments);v2==null?this.style.removeProperty(name):this.style.setProperty(name,v2,priority)}}function selection_style(name,value,priority){return arguments.length>1?this.each((value==null?styleRemove$1:typeof value=="function"?styleFunction$1:styleConstant$1)(name,value,priority??"")):styleValue(this.node(),name)}function styleValue(node,name){return node.style.getPropertyValue(name)||defaultView(node).getComputedStyle(node,null).getPropertyValue(name)}function propertyRemove(name){return function(){delete this[name]}}function propertyConstant(name,value){return function(){this[name]=value}}function propertyFunction(name,value){return function(){var v2=value.apply(this,arguments);v2==null?delete this[name]:this[name]=v2}}function selection_property(name,value){return arguments.length>1?this.each((value==null?propertyRemove:typeof value=="function"?propertyFunction:propertyConstant)(name,value)):this.node()[name]}function classArray(string){return string.trim().split(/^|\s+/)}function classList(node){return node.classList||new ClassList(node)}function ClassList(node){this._node=node,this._names=classArray(node.getAttribute("class")||"")}ClassList.prototype={add:function(name){var i2=this._names.indexOf(name);i2<0&&(this._names.push(name),this._node.setAttribute("class",this._names.join(" ")))},remove:function(name){var i2=this._names.indexOf(name);i2>=0&&(this._names.splice(i2,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(name){return this._names.indexOf(name)>=0}};function classedAdd(node,names){for(var list=classList(node),i2=-1,n2=names.length;++i2<n2;)list.add(names[i2])}function classedRemove(node,names){for(var list=classList(node),i2=-1,n2=names.length;++i2<n2;)list.remove(names[i2])}function classedTrue(names){return function(){classedAdd(this,names)}}function classedFalse(names){return function(){classedRemove(this,names)}}function classedFunction(names,value){return function(){(value.apply(this,arguments)?classedAdd:classedRemove)(this,names)}}function selection_classed(name,value){var names=classArray(name+"");if(arguments.length<2){for(var list=classList(this.node()),i2=-1,n2=names.length;++i2<n2;)if(!list.contains(names[i2]))return!1;return!0}return this.each((typeof value=="function"?classedFunction:value?classedTrue:classedFalse)(names,value))}function textRemove(){this.textContent=""}function textConstant$1(value){return function(){this.textContent=value}}function textFunction$1(value){return function(){var v2=value.apply(this,arguments);this.textContent=v2??""}}function selection_text(value){return arguments.length?this.each(value==null?textRemove:(typeof value=="function"?textFunction$1:textConstant$1)(value)):this.node().textContent}function htmlRemove(){this.innerHTML=""}function htmlConstant(value){return function(){this.innerHTML=value}}function htmlFunction(value){return function(){var v2=value.apply(this,arguments);this.innerHTML=v2??""}}function selection_html(value){return arguments.length?this.each(value==null?htmlRemove:(typeof value=="function"?htmlFunction:htmlConstant)(value)):this.node().innerHTML}function raise(){this.nextSibling&&this.parentNode.appendChild(this)}function selection_raise(){return this.each(raise)}function lower(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function selection_lower(){return this.each(lower)}function selection_append(name){var create2=typeof name=="function"?name:creator(name);return this.select(function(){return this.appendChild(create2.apply(this,arguments))})}function constantNull(){return null}function selection_insert(name,before){var create2=typeof name=="function"?name:creator(name),select2=before==null?constantNull:typeof before=="function"?before:selector$4(before);return this.select(function(){return this.insertBefore(create2.apply(this,arguments),select2.apply(this,arguments)||null)})}function remove(){var parent=this.parentNode;parent&&parent.removeChild(this)}function selection_remove(){return this.each(remove)}function selection_cloneShallow(){var clone=this.cloneNode(!1),parent=this.parentNode;return parent?parent.insertBefore(clone,this.nextSibling):clone}function selection_cloneDeep(){var clone=this.cloneNode(!0),parent=this.parentNode;return parent?parent.insertBefore(clone,this.nextSibling):clone}function selection_clone(deep){return this.select(deep?selection_cloneDeep:selection_cloneShallow)}function selection_datum(value){return arguments.length?this.property("__data__",value):this.node().__data__}function contextListener(listener){return function(event){listener.call(this,event,this.__data__)}}function parseTypenames(typenames){return typenames.trim().split(/^|\s+/).map(function(t2){var name="",i2=t2.indexOf(".");return i2>=0&&(name=t2.slice(i2+1),t2=t2.slice(0,i2)),{type:t2,name}})}function onRemove(typename){return function(){var on=this.__on;if(on){for(var j=0,i2=-1,m2=on.length,o2;j<m2;++j)o2=on[j],(!typename.type||o2.type===typename.type)&&o2.name===typename.name?this.removeEventListener(o2.type,o2.listener,o2.options):on[++i2]=o2;++i2?on.length=i2:delete this.__on}}}function onAdd(typename,value,options){return function(){var on=this.__on,o2,listener=contextListener(value);if(on){for(var j=0,m2=on.length;j<m2;++j)if((o2=on[j]).type===typename.type&&o2.name===typename.name){this.removeEventListener(o2.type,o2.listener,o2.options),this.addEventListener(o2.type,o2.listener=listener,o2.options=options),o2.value=value;return}}this.addEventListener(typename.type,listener,options),o2={type:typename.type,name:typename.name,value,listener,options},on?on.push(o2):this.__on=[o2]}}function selection_on(typename,value,options){var typenames=parseTypenames(typename+""),i2,n2=typenames.length,t2;if(arguments.length<2){var on=this.node().__on;if(on){for(var j=0,m2=on.length,o2;j<m2;++j)for(i2=0,o2=on[j];i2<n2;++i2)if((t2=typenames[i2]).type===o2.type&&t2.name===o2.name)return o2.value}return}for(on=value?onAdd:onRemove,i2=0;i2<n2;++i2)this.each(on(typenames[i2],value,options));return this}function dispatchEvent(node,type,params){var window2=defaultView(node),event=window2.CustomEvent;typeof event=="function"?event=new event(type,params):(event=window2.document.createEvent("Event"),params?(event.initEvent(type,params.bubbles,params.cancelable),event.detail=params.detail):event.initEvent(type,!1,!1)),node.dispatchEvent(event)}function dispatchConstant(type,params){return function(){return dispatchEvent(this,type,params)}}function dispatchFunction(type,params){return function(){return dispatchEvent(this,type,params.apply(this,arguments))}}function selection_dispatch(type,params){return this.each((typeof params=="function"?dispatchFunction:dispatchConstant)(type,params))}function*selection_iterator(){for(var groups=this._groups,j=0,m2=groups.length;j<m2;++j)for(var group=groups[j],i2=0,n2=group.length,node;i2<n2;++i2)(node=group[i2])&&(yield node)}var root=[null];function Selection$1(groups,parents){this._groups=groups,this._parents=parents}function selection(){return new Selection$1([[document.documentElement]],root)}function selection_selection(){return this}Selection$1.prototype=selection.prototype={constructor:Selection$1,select:selection_select,selectAll:selection_selectAll,selectChild:selection_selectChild,selectChildren:selection_selectChildren,filter:selection_filter,data:selection_data,enter:selection_enter,exit:selection_exit,join:selection_join,merge:selection_merge,selection:selection_selection,order:selection_order,sort:selection_sort,call:selection_call,nodes:selection_nodes,node:selection_node,size:selection_size,empty:selection_empty,each:selection_each,attr:selection_attr,style:selection_style,property:selection_property,classed:selection_classed,text:selection_text,html:selection_html,raise:selection_raise,lower:selection_lower,append:selection_append,insert:selection_insert,remove:selection_remove,clone:selection_clone,datum:selection_datum,on:selection_on,dispatch:selection_dispatch,[Symbol.iterator]:selection_iterator};function select(selector2){return typeof selector2=="string"?new Selection$1([[document.querySelector(selector2)]],[document.documentElement]):new Selection$1([[selector2]],root)}function sourceEvent(event){let sourceEvent2;for(;sourceEvent2=event.sourceEvent;)event=sourceEvent2;return event}function pointer(event,node){if(event=sourceEvent(event),node===void 0&&(node=event.currentTarget),node){var svg=node.ownerSVGElement||node;if(svg.createSVGPoint){var point2=svg.createSVGPoint();return point2.x=event.clientX,point2.y=event.clientY,point2=point2.matrixTransform(node.getScreenCTM().inverse()),[point2.x,point2.y]}if(node.getBoundingClientRect){var rect=node.getBoundingClientRect();return[event.clientX-rect.left-node.clientLeft,event.clientY-rect.top-node.clientTop]}}return[event.pageX,event.pageY]}const nonpassive={passive:!1},nonpassivecapture={capture:!0,passive:!1};function nopropagation$1(event){event.stopImmediatePropagation()}function noevent$1(event){event.preventDefault(),event.stopImmediatePropagation()}function dragDisable(view){var root2=view.document.documentElement,selection2=select(view).on("dragstart.drag",noevent$1,nonpassivecapture);"onselectstart"in root2?selection2.on("selectstart.drag",noevent$1,nonpassivecapture):(root2.__noselect=root2.style.MozUserSelect,root2.style.MozUserSelect="none")}function yesdrag(view,noclick){var root2=view.document.documentElement,selection2=select(view).on("dragstart.drag",null);noclick&&(selection2.on("click.drag",noevent$1,nonpassivecapture),setTimeout(function(){selection2.on("click.drag",null)},0)),"onselectstart"in root2?selection2.on("selectstart.drag",null):(root2.style.MozUserSelect=root2.__noselect,delete root2.__noselect)}const constant$3=x2=>()=>x2;function DragEvent(type,{sourceEvent:sourceEvent2,subject,target,identifier,active,x:x2,y:y2,dx,dy,dispatch:dispatch2}){Object.defineProperties(this,{type:{value:type,enumerable:!0,configurable:!0},sourceEvent:{value:sourceEvent2,enumerable:!0,configurable:!0},subject:{value:subject,enumerable:!0,configurable:!0},target:{value:target,enumerable:!0,configurable:!0},identifier:{value:identifier,enumerable:!0,configurable:!0},active:{value:active,enumerable:!0,configurable:!0},x:{value:x2,enumerable:!0,configurable:!0},y:{value:y2,enumerable:!0,configurable:!0},dx:{value:dx,enumerable:!0,configurable:!0},dy:{value:dy,enumerable:!0,configurable:!0},_:{value:dispatch2}})}DragEvent.prototype.on=function(){var value=this._.on.apply(this._,arguments);return value===this._?this:value};function defaultFilter$1(event){return!event.ctrlKey&&!event.button}function defaultContainer(){return this.parentNode}function defaultSubject(event,d2){return d2??{x:event.x,y:event.y}}function defaultTouchable$1(){return navigator.maxTouchPoints||"ontouchstart"in this}function drag(){var filter2=defaultFilter$1,container2=defaultContainer,subject=defaultSubject,touchable=defaultTouchable$1,gestures={},listeners=dispatch("start","drag","end"),active=0,mousedownx,mousedowny,mousemoving,touchending,clickDistance2=0;function drag2(selection2){selection2.on("mousedown.drag",mousedowned).filter(touchable).on("touchstart.drag",touchstarted).on("touchmove.drag",touchmoved,nonpassive).on("touchend.drag touchcancel.drag",touchended).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function mousedowned(event,d2){if(!(touchending||!filter2.call(this,event,d2))){var gesture=beforestart(this,container2.call(this,event,d2),event,d2,"mouse");gesture&&(select(event.view).on("mousemove.drag",mousemoved,nonpassivecapture).on("mouseup.drag",mouseupped,nonpassivecapture),dragDisable(event.view),nopropagation$1(event),mousemoving=!1,mousedownx=event.clientX,mousedowny=event.clientY,gesture("start",event))}}function mousemoved(event){if(noevent$1(event),!mousemoving){var dx=event.clientX-mousedownx,dy=event.clientY-mousedowny;mousemoving=dx*dx+dy*dy>clickDistance2}gestures.mouse("drag",event)}function mouseupped(event){select(event.view).on("mousemove.drag mouseup.drag",null),yesdrag(event.view,mousemoving),noevent$1(event),gestures.mouse("end",event)}function touchstarted(event,d2){if(filter2.call(this,event,d2)){var touches=event.changedTouches,c2=container2.call(this,event,d2),n2=touches.length,i2,gesture;for(i2=0;i2<n2;++i2)(gesture=beforestart(this,c2,event,d2,touches[i2].identifier,touches[i2]))&&(nopropagation$1(event),gesture("start",event,touches[i2]))}}function touchmoved(event){var touches=event.changedTouches,n2=touches.length,i2,gesture;for(i2=0;i2<n2;++i2)(gesture=gestures[touches[i2].identifier])&&(noevent$1(event),gesture("drag",event,touches[i2]))}function touchended(event){var touches=event.changedTouches,n2=touches.length,i2,gesture;for(touchending&&clearTimeout(touchending),touchending=setTimeout(function(){touchending=null},500),i2=0;i2<n2;++i2)(gesture=gestures[touches[i2].identifier])&&(nopropagation$1(event),gesture("end",event,touches[i2]))}function beforestart(that,container3,event,d2,identifier,touch){var dispatch2=listeners.copy(),p2=pointer(touch||event,container3),dx,dy,s2;if((s2=subject.call(that,new DragEvent("beforestart",{sourceEvent:event,target:drag2,identifier,active,x:p2[0],y:p2[1],dx:0,dy:0,dispatch:dispatch2}),d2))!=null)return dx=s2.x-p2[0]||0,dy=s2.y-p2[1]||0,function gesture(type,event2,touch2){var p0=p2,n2;switch(type){case"start":gestures[identifier]=gesture,n2=active++;break;case"end":delete gestures[identifier],--active;case"drag":p2=pointer(touch2||event2,container3),n2=active;break}dispatch2.call(type,that,new DragEvent(type,{sourceEvent:event2,subject:s2,target:drag2,identifier,active:n2,x:p2[0]+dx,y:p2[1]+dy,dx:p2[0]-p0[0],dy:p2[1]-p0[1],dispatch:dispatch2}),d2)}}return drag2.filter=function(_){return arguments.length?(filter2=typeof _=="function"?_:constant$3(!!_),drag2):filter2},drag2.container=function(_){return arguments.length?(container2=typeof _=="function"?_:constant$3(_),drag2):container2},drag2.subject=function(_){return arguments.length?(subject=typeof _=="function"?_:constant$3(_),drag2):subject},drag2.touchable=function(_){return arguments.length?(touchable=typeof _=="function"?_:constant$3(!!_),drag2):touchable},drag2.on=function(){var value=listeners.on.apply(listeners,arguments);return value===listeners?drag2:value},drag2.clickDistance=function(_){return arguments.length?(clickDistance2=(_=+_)*_,drag2):Math.sqrt(clickDistance2)},drag2}function define(constructor,factory2,prototype){constructor.prototype=factory2.prototype=prototype,prototype.constructor=constructor}function extend(parent,definition){var prototype=Object.create(parent.prototype);for(var key in definition)prototype[key]=definition[key];return prototype}function Color(){}var darker=.7,brighter=1/darker,reI="\\s*([+-]?\\d+)\\s*",reN="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",reP="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",reHex=/^#([0-9a-f]{3,8})$/,reRgbInteger=new RegExp(`^rgb\\(${reI},${reI},${reI}\\)$`),reRgbPercent=new RegExp(`^rgb\\(${reP},${reP},${reP}\\)$`),reRgbaInteger=new RegExp(`^rgba\\(${reI},${reI},${reI},${reN}\\)$`),reRgbaPercent=new RegExp(`^rgba\\(${reP},${reP},${reP},${reN}\\)$`),reHslPercent=new RegExp(`^hsl\\(${reN},${reP},${reP}\\)$`),reHslaPercent=new RegExp(`^hsla\\(${reN},${reP},${reP},${reN}\\)$`),named={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};define(Color,color$1,{copy(channels){return Object.assign(new this.constructor,this,channels)},displayable(){return this.rgb().displayable()},hex:color_formatHex,formatHex:color_formatHex,formatHex8:color_formatHex8,formatHsl:color_formatHsl,formatRgb:color_formatRgb,toString:color_formatRgb});function color_formatHex(){return this.rgb().formatHex()}function color_formatHex8(){return this.rgb().formatHex8()}function color_formatHsl(){return hslConvert(this).formatHsl()}function color_formatRgb(){return this.rgb().formatRgb()}function color$1(format){var m2,l2;return format=(format+"").trim().toLowerCase(),(m2=reHex.exec(format))?(l2=m2[1].length,m2=parseInt(m2[1],16),l2===6?rgbn(m2):l2===3?new Rgb(m2>>8&15|m2>>4&240,m2>>4&15|m2&240,(m2&15)<<4|m2&15,1):l2===8?rgba$1(m2>>24&255,m2>>16&255,m2>>8&255,(m2&255)/255):l2===4?rgba$1(m2>>12&15|m2>>8&240,m2>>8&15|m2>>4&240,m2>>4&15|m2&240,((m2&15)<<4|m2&15)/255):null):(m2=reRgbInteger.exec(format))?new Rgb(m2[1],m2[2],m2[3],1):(m2=reRgbPercent.exec(format))?new Rgb(m2[1]*255/100,m2[2]*255/100,m2[3]*255/100,1):(m2=reRgbaInteger.exec(format))?rgba$1(m2[1],m2[2],m2[3],m2[4]):(m2=reRgbaPercent.exec(format))?rgba$1(m2[1]*255/100,m2[2]*255/100,m2[3]*255/100,m2[4]):(m2=reHslPercent.exec(format))?hsla$1(m2[1],m2[2]/100,m2[3]/100,1):(m2=reHslaPercent.exec(format))?hsla$1(m2[1],m2[2]/100,m2[3]/100,m2[4]):named.hasOwnProperty(format)?rgbn(named[format]):format==="transparent"?new Rgb(NaN,NaN,NaN,0):null}function rgbn(n2){return new Rgb(n2>>16&255,n2>>8&255,n2&255,1)}function rgba$1(r2,g,b2,a2){return a2<=0&&(r2=g=b2=NaN),new Rgb(r2,g,b2,a2)}function rgbConvert(o2){return o2 instanceof Color||(o2=color$1(o2)),o2?(o2=o2.rgb(),new Rgb(o2.r,o2.g,o2.b,o2.opacity)):new Rgb}function rgb(r2,g,b2,opacity){return arguments.length===1?rgbConvert(r2):new Rgb(r2,g,b2,opacity??1)}function Rgb(r2,g,b2,opacity){this.r=+r2,this.g=+g,this.b=+b2,this.opacity=+opacity}define(Rgb,rgb,extend(Color,{brighter(k2){return k2=k2==null?brighter:Math.pow(brighter,k2),new Rgb(this.r*k2,this.g*k2,this.b*k2,this.opacity)},darker(k2){return k2=k2==null?darker:Math.pow(darker,k2),new Rgb(this.r*k2,this.g*k2,this.b*k2,this.opacity)},rgb(){return this},clamp(){return new Rgb(clampi(this.r),clampi(this.g),clampi(this.b),clampa(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:rgb_formatHex,formatHex:rgb_formatHex,formatHex8:rgb_formatHex8,formatRgb:rgb_formatRgb,toString:rgb_formatRgb}));function rgb_formatHex(){return`#${hex$1(this.r)}${hex$1(this.g)}${hex$1(this.b)}`}function rgb_formatHex8(){return`#${hex$1(this.r)}${hex$1(this.g)}${hex$1(this.b)}${hex$1((isNaN(this.opacity)?1:this.opacity)*255)}`}function rgb_formatRgb(){const a2=clampa(this.opacity);return`${a2===1?"rgb(":"rgba("}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a2===1?")":`, ${a2})`}`}function clampa(opacity){return isNaN(opacity)?1:Math.max(0,Math.min(1,opacity))}function clampi(value){return Math.max(0,Math.min(255,Math.round(value)||0))}function hex$1(value){return value=clampi(value),(value<16?"0":"")+value.toString(16)}function hsla$1(h2,s2,l2,a2){return a2<=0?h2=s2=l2=NaN:l2<=0||l2>=1?h2=s2=NaN:s2<=0&&(h2=NaN),new Hsl(h2,s2,l2,a2)}function hslConvert(o2){if(o2 instanceof Hsl)return new Hsl(o2.h,o2.s,o2.l,o2.opacity);if(o2 instanceof Color||(o2=color$1(o2)),!o2)return new Hsl;if(o2 instanceof Hsl)return o2;o2=o2.rgb();var r2=o2.r/255,g=o2.g/255,b2=o2.b/255,min2=Math.min(r2,g,b2),max2=Math.max(r2,g,b2),h2=NaN,s2=max2-min2,l2=(max2+min2)/2;return s2?(r2===max2?h2=(g-b2)/s2+(g<b2)*6:g===max2?h2=(b2-r2)/s2+2:h2=(r2-g)/s2+4,s2/=l2<.5?max2+min2:2-max2-min2,h2*=60):s2=l2>0&&l2<1?0:h2,new Hsl(h2,s2,l2,o2.opacity)}function hsl(h2,s2,l2,opacity){return arguments.length===1?hslConvert(h2):new Hsl(h2,s2,l2,opacity??1)}function Hsl(h2,s2,l2,opacity){this.h=+h2,this.s=+s2,this.l=+l2,this.opacity=+opacity}define(Hsl,hsl,extend(Color,{brighter(k2){return k2=k2==null?brighter:Math.pow(brighter,k2),new Hsl(this.h,this.s,this.l*k2,this.opacity)},darker(k2){return k2=k2==null?darker:Math.pow(darker,k2),new Hsl(this.h,this.s,this.l*k2,this.opacity)},rgb(){var h2=this.h%360+(this.h<0)*360,s2=isNaN(h2)||isNaN(this.s)?0:this.s,l2=this.l,m2=l2+(l2<.5?l2:1-l2)*s2,m1=2*l2-m2;return new Rgb(hsl2rgb(h2>=240?h2-240:h2+120,m1,m2),hsl2rgb(h2,m1,m2),hsl2rgb(h2<120?h2+240:h2-120,m1,m2),this.opacity)},clamp(){return new Hsl(clamph(this.h),clampt(this.s),clampt(this.l),clampa(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const a2=clampa(this.opacity);return`${a2===1?"hsl(":"hsla("}${clamph(this.h)}, ${clampt(this.s)*100}%, ${clampt(this.l)*100}%${a2===1?")":`, ${a2})`}`}}));function clamph(value){return value=(value||0)%360,value<0?value+360:value}function clampt(value){return Math.max(0,Math.min(1,value||0))}function hsl2rgb(h2,m1,m2){return(h2<60?m1+(m2-m1)*h2/60:h2<180?m2:h2<240?m1+(m2-m1)*(240-h2)/60:m1)*255}const constant$2=x2=>()=>x2;function linear(a2,d2){return function(t2){return a2+t2*d2}}function exponential(a2,b2,y2){return a2=Math.pow(a2,y2),b2=Math.pow(b2,y2)-a2,y2=1/y2,function(t2){return Math.pow(a2+t2*b2,y2)}}function gamma(y2){return(y2=+y2)==1?nogamma:function(a2,b2){return b2-a2?exponential(a2,b2,y2):constant$2(isNaN(a2)?b2:a2)}}function nogamma(a2,b2){var d2=b2-a2;return d2?linear(a2,d2):constant$2(isNaN(a2)?b2:a2)}const interpolateRgb=function rgbGamma(y2){var color2=gamma(y2);function rgb$1(start2,end){var r2=color2((start2=rgb(start2)).r,(end=rgb(end)).r),g=color2(start2.g,end.g),b2=color2(start2.b,end.b),opacity=nogamma(start2.opacity,end.opacity);return function(t2){return start2.r=r2(t2),start2.g=g(t2),start2.b=b2(t2),start2.opacity=opacity(t2),start2+""}}return rgb$1.gamma=rgbGamma,rgb$1}(1);function interpolateNumber(a2,b2){return a2=+a2,b2=+b2,function(t2){return a2*(1-t2)+b2*t2}}var reA=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,reB=new RegExp(reA.source,"g");function zero(b2){return function(){return b2}}function one(b2){return function(t2){return b2(t2)+""}}function interpolateString(a2,b2){var bi=reA.lastIndex=reB.lastIndex=0,am,bm,bs,i2=-1,s2=[],q2=[];for(a2=a2+"",b2=b2+"";(am=reA.exec(a2))&&(bm=reB.exec(b2));)(bs=bm.index)>bi&&(bs=b2.slice(bi,bs),s2[i2]?s2[i2]+=bs:s2[++i2]=bs),(am=am[0])===(bm=bm[0])?s2[i2]?s2[i2]+=bm:s2[++i2]=bm:(s2[++i2]=null,q2.push({i:i2,x:interpolateNumber(am,bm)})),bi=reB.lastIndex;return bi<b2.length&&(bs=b2.slice(bi),s2[i2]?s2[i2]+=bs:s2[++i2]=bs),s2.length<2?q2[0]?one(q2[0].x):zero(b2):(b2=q2.length,function(t2){for(var i3=0,o2;i3<b2;++i3)s2[(o2=q2[i3]).i]=o2.x(t2);return s2.join("")})}var degrees$1=180/Math.PI,identity$2={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function decompose(a2,b2,c2,d2,e2,f2){var scaleX,scaleY,skewX;return(scaleX=Math.sqrt(a2*a2+b2*b2))&&(a2/=scaleX,b2/=scaleX),(skewX=a2*c2+b2*d2)&&(c2-=a2*skewX,d2-=b2*skewX),(scaleY=Math.sqrt(c2*c2+d2*d2))&&(c2/=scaleY,d2/=scaleY,skewX/=scaleY),a2*d2<b2*c2&&(a2=-a2,b2=-b2,skewX=-skewX,scaleX=-scaleX),{translateX:e2,translateY:f2,rotate:Math.atan2(b2,a2)*degrees$1,skewX:Math.atan(skewX)*degrees$1,scaleX,scaleY}}var svgNode;function parseCss(value){const m2=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(value+"");return m2.isIdentity?identity$2:decompose(m2.a,m2.b,m2.c,m2.d,m2.e,m2.f)}function parseSvg(value){return value==null||(svgNode||(svgNode=document.createElementNS("http://www.w3.org/2000/svg","g")),svgNode.setAttribute("transform",value),!(value=svgNode.transform.baseVal.consolidate()))?identity$2:(value=value.matrix,decompose(value.a,value.b,value.c,value.d,value.e,value.f))}function interpolateTransform(parse2,pxComma,pxParen,degParen){function pop(s2){return s2.length?s2.pop()+" ":""}function translate(xa,ya,xb,yb,s2,q2){if(xa!==xb||ya!==yb){var i2=s2.push("translate(",null,pxComma,null,pxParen);q2.push({i:i2-4,x:interpolateNumber(xa,xb)},{i:i2-2,x:interpolateNumber(ya,yb)})}else(xb||yb)&&s2.push("translate("+xb+pxComma+yb+pxParen)}function rotate(a2,b2,s2,q2){a2!==b2?(a2-b2>180?b2+=360:b2-a2>180&&(a2+=360),q2.push({i:s2.push(pop(s2)+"rotate(",null,degParen)-2,x:interpolateNumber(a2,b2)})):b2&&s2.push(pop(s2)+"rotate("+b2+degParen)}function skewX(a2,b2,s2,q2){a2!==b2?q2.push({i:s2.push(pop(s2)+"skewX(",null,degParen)-2,x:interpolateNumber(a2,b2)}):b2&&s2.push(pop(s2)+"skewX("+b2+degParen)}function scale2(xa,ya,xb,yb,s2,q2){if(xa!==xb||ya!==yb){var i2=s2.push(pop(s2)+"scale(",null,",",null,")");q2.push({i:i2-4,x:interpolateNumber(xa,xb)},{i:i2-2,x:interpolateNumber(ya,yb)})}else(xb!==1||yb!==1)&&s2.push(pop(s2)+"scale("+xb+","+yb+")")}return function(a2,b2){var s2=[],q2=[];return a2=parse2(a2),b2=parse2(b2),translate(a2.translateX,a2.translateY,b2.translateX,b2.translateY,s2,q2),rotate(a2.rotate,b2.rotate,s2,q2),skewX(a2.skewX,b2.skewX,s2,q2),scale2(a2.scaleX,a2.scaleY,b2.scaleX,b2.scaleY,s2,q2),a2=b2=null,function(t2){for(var i2=-1,n2=q2.length,o2;++i2<n2;)s2[(o2=q2[i2]).i]=o2.x(t2);return s2.join("")}}}var interpolateTransformCss=interpolateTransform(parseCss,"px, ","px)","deg)"),interpolateTransformSvg=interpolateTransform(parseSvg,", ",")",")"),epsilon2=1e-12;function cosh(x2){return((x2=Math.exp(x2))+1/x2)/2}function sinh(x2){return((x2=Math.exp(x2))-1/x2)/2}function tanh(x2){return((x2=Math.exp(2*x2))-1)/(x2+1)}const interpolateZoom=function zoomRho(rho,rho2,rho4){function zoom2(p0,p1){var ux0=p0[0],uy0=p0[1],w0=p0[2],ux1=p1[0],uy1=p1[1],w1=p1[2],dx=ux1-ux0,dy=uy1-uy0,d2=dx*dx+dy*dy,i2,S;if(d2<epsilon2)S=Math.log(w1/w0)/rho,i2=function(t2){return[ux0+t2*dx,uy0+t2*dy,w0*Math.exp(rho*t2*S)]};else{var d1=Math.sqrt(d2),b0=(w1*w1-w0*w0+rho4*d2)/(2*w0*rho2*d1),b1=(w1*w1-w0*w0-rho4*d2)/(2*w1*rho2*d1),r0=Math.log(Math.sqrt(b0*b0+1)-b0),r1=Math.log(Math.sqrt(b1*b1+1)-b1);S=(r1-r0)/rho,i2=function(t2){var s2=t2*S,coshr0=cosh(r0),u2=w0/(rho2*d1)*(coshr0*tanh(rho*s2+r0)-sinh(r0));return[ux0+u2*dx,uy0+u2*dy,w0*coshr0/cosh(rho*s2+r0)]}}return i2.duration=S*1e3*rho/Math.SQRT2,i2}return zoom2.rho=function(_){var _1=Math.max(.001,+_),_2=_1*_1,_4=_2*_2;return zoomRho(_1,_2,_4)},zoom2}(Math.SQRT2,2,4);var frame$1=0,timeout$1=0,interval=0,pokeDelay=1e3,taskHead,taskTail,clockLast=0,clockNow=0,clockSkew=0,clock=typeof performance=="object"&&performance.now?performance:Date,setFrame=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(f2){setTimeout(f2,17)};function now$1(){return clockNow||(setFrame(clearNow),clockNow=clock.now()+clockSkew)}function clearNow(){clockNow=0}function Timer(){this._call=this._time=this._next=null}Timer.prototype=timer.prototype={constructor:Timer,restart:function(callback,delay,time2){if(typeof callback!="function")throw new TypeError("callback is not a function");time2=(time2==null?now$1():+time2)+(delay==null?0:+delay),!this._next&&taskTail!==this&&(taskTail?taskTail._next=this:taskHead=this,taskTail=this),this._call=callback,this._time=time2,sleep()},stop:function(){this._call&&(this._call=null,this._time=1/0,sleep())}};function timer(callback,delay,time2){var t2=new Timer;return t2.restart(callback,delay,time2),t2}function timerFlush(){now$1(),++frame$1;for(var t2=taskHead,e2;t2;)(e2=clockNow-t2._time)>=0&&t2._call.call(void 0,e2),t2=t2._next;--frame$1}function wake(){clockNow=(clockLast=clock.now())+clockSkew,frame$1=timeout$1=0;try{timerFlush()}finally{frame$1=0,nap(),clockNow=0}}function poke(){var now2=clock.now(),delay=now2-clockLast;delay>pokeDelay&&(clockSkew-=delay,clockLast=now2)}function nap(){for(var t0,t1=taskHead,t2,time2=1/0;t1;)t1._call?(time2>t1._time&&(time2=t1._time),t0=t1,t1=t1._next):(t2=t1._next,t1._next=null,t1=t0?t0._next=t2:taskHead=t2);taskTail=t0,sleep(time2)}function sleep(time2){if(!frame$1){timeout$1&&(timeout$1=clearTimeout(timeout$1));var delay=time2-clockNow;delay>24?(time2<1/0&&(timeout$1=setTimeout(wake,time2-clock.now()-clockSkew)),interval&&(interval=clearInterval(interval))):(interval||(clockLast=clock.now(),interval=setInterval(poke,pokeDelay)),frame$1=1,setFrame(wake))}}function timeout(callback,delay,time2){var t2=new Timer;return delay=delay==null?0:+delay,t2.restart(elapsed=>{t2.stop(),callback(elapsed+delay)},delay,time2),t2}var emptyOn=dispatch("start","end","cancel","interrupt"),emptyTween=[],CREATED=0,SCHEDULED=1,STARTING=2,STARTED=3,RUNNING=4,ENDING=5,ENDED=6;function schedule(node,name,id2,index2,group,timing){var schedules=node.__transition;if(!schedules)node.__transition={};else if(id2 in schedules)return;create(node,id2,{name,index:index2,group,on:emptyOn,tween:emptyTween,time:timing.time,delay:timing.delay,duration:timing.duration,ease:timing.ease,timer:null,state:CREATED})}function init(node,id2){var schedule2=get(node,id2);if(schedule2.state>CREATED)throw new Error("too late; already scheduled");return schedule2}function set(node,id2){var schedule2=get(node,id2);if(schedule2.state>STARTED)throw new Error("too late; already running");return schedule2}function get(node,id2){var schedule2=node.__transition;if(!schedule2||!(schedule2=schedule2[id2]))throw new Error("transition not found");return schedule2}function create(node,id2,self){var schedules=node.__transition,tween;schedules[id2]=self,self.timer=timer(schedule2,0,self.time);function schedule2(elapsed){self.state=SCHEDULED,self.timer.restart(start2,self.delay,self.time),self.delay<=elapsed&&start2(elapsed-self.delay)}function start2(elapsed){var i2,j,n2,o2;if(self.state!==SCHEDULED)return stop();for(i2 in schedules)if(o2=schedules[i2],o2.name===self.name){if(o2.state===STARTED)return timeout(start2);o2.state===RUNNING?(o2.state=ENDED,o2.timer.stop(),o2.on.call("interrupt",node,node.__data__,o2.index,o2.group),delete schedules[i2]):+i2<id2&&(o2.state=ENDED,o2.timer.stop(),o2.on.call("cancel",node,node.__data__,o2.index,o2.group),delete schedules[i2])}if(timeout(function(){self.state===STARTED&&(self.state=RUNNING,self.timer.restart(tick,self.delay,self.time),tick(elapsed))}),self.state=STARTING,self.on.call("start",node,node.__data__,self.index,self.group),self.state===STARTING){for(self.state=STARTED,tween=new Array(n2=self.tween.length),i2=0,j=-1;i2<n2;++i2)(o2=self.tween[i2].value.call(node,node.__data__,self.index,self.group))&&(tween[++j]=o2);tween.length=j+1}}function tick(elapsed){for(var t2=elapsed<self.duration?self.ease.call(null,elapsed/self.duration):(self.timer.restart(stop),self.state=ENDING,1),i2=-1,n2=tween.length;++i2<n2;)tween[i2].call(node,t2);self.state===ENDING&&(self.on.call("end",node,node.__data__,self.index,self.group),stop())}function stop(){self.state=ENDED,self.timer.stop(),delete schedules[id2];for(var i2 in schedules)return;delete node.__transition}}function interrupt(node,name){var schedules=node.__transition,schedule2,active,empty2=!0,i2;if(schedules){name=name==null?null:name+"";for(i2 in schedules){if((schedule2=schedules[i2]).name!==name){empty2=!1;continue}active=schedule2.state>STARTING&&schedule2.state<ENDING,schedule2.state=ENDED,schedule2.timer.stop(),schedule2.on.call(active?"interrupt":"cancel",node,node.__data__,schedule2.index,schedule2.group),delete schedules[i2]}empty2&&delete node.__transition}}function selection_interrupt(name){return this.each(function(){interrupt(this,name)})}function tweenRemove(id2,name){var tween0,tween1;return function(){var schedule2=set(this,id2),tween=schedule2.tween;if(tween!==tween0){tween1=tween0=tween;for(var i2=0,n2=tween1.length;i2<n2;++i2)if(tween1[i2].name===name){tween1=tween1.slice(),tween1.splice(i2,1);break}}schedule2.tween=tween1}}function tweenFunction(id2,name,value){var tween0,tween1;if(typeof value!="function")throw new Error;return function(){var schedule2=set(this,id2),tween=schedule2.tween;if(tween!==tween0){tween1=(tween0=tween).slice();for(var t2={name,value},i2=0,n2=tween1.length;i2<n2;++i2)if(tween1[i2].name===name){tween1[i2]=t2;break}i2===n2&&tween1.push(t2)}schedule2.tween=tween1}}function transition_tween(name,value){var id2=this._id;if(name+="",arguments.length<2){for(var tween=get(this.node(),id2).tween,i2=0,n2=tween.length,t2;i2<n2;++i2)if((t2=tween[i2]).name===name)return t2.value;return null}return this.each((value==null?tweenRemove:tweenFunction)(id2,name,value))}function tweenValue(transition,name,value){var id2=transition._id;return transition.each(function(){var schedule2=set(this,id2);(schedule2.value||(schedule2.value={}))[name]=value.apply(this,arguments)}),function(node){return get(node,id2).value[name]}}function interpolate$1(a2,b2){var c2;return(typeof b2=="number"?interpolateNumber:b2 instanceof color$1?interpolateRgb:(c2=color$1(b2))?(b2=c2,interpolateRgb):interpolateString)(a2,b2)}function attrRemove(name){return function(){this.removeAttribute(name)}}function attrRemoveNS(fullname){return function(){this.removeAttributeNS(fullname.space,fullname.local)}}function attrConstant(name,interpolate2,value1){var string00,string1=value1+"",interpolate0;return function(){var string0=this.getAttribute(name);return string0===string1?null:string0===string00?interpolate0:interpolate0=interpolate2(string00=string0,value1)}}function attrConstantNS(fullname,interpolate2,value1){var string00,string1=value1+"",interpolate0;return function(){var string0=this.getAttributeNS(fullname.space,fullname.local);return string0===string1?null:string0===string00?interpolate0:interpolate0=interpolate2(string00=string0,value1)}}function attrFunction(name,interpolate2,value){var string00,string10,interpolate0;return function(){var string0,value1=value(this),string1;return value1==null?void this.removeAttribute(name):(string0=this.getAttribute(name),string1=value1+"",string0===string1?null:string0===string00&&string1===string10?interpolate0:(string10=string1,interpolate0=interpolate2(string00=string0,value1)))}}function attrFunctionNS(fullname,interpolate2,value){var string00,string10,interpolate0;return function(){var string0,value1=value(this),string1;return value1==null?void this.removeAttributeNS(fullname.space,fullname.local):(string0=this.getAttributeNS(fullname.space,fullname.local),string1=value1+"",string0===string1?null:string0===string00&&string1===string10?interpolate0:(string10=string1,interpolate0=interpolate2(string00=string0,value1)))}}function transition_attr(name,value){var fullname=namespace(name),i2=fullname==="transform"?interpolateTransformSvg:interpolate$1;return this.attrTween(name,typeof value=="function"?(fullname.local?attrFunctionNS:attrFunction)(fullname,i2,tweenValue(this,"attr."+name,value)):value==null?(fullname.local?attrRemoveNS:attrRemove)(fullname):(fullname.local?attrConstantNS:attrConstant)(fullname,i2,value))}function attrInterpolate(name,i2){return function(t2){this.setAttribute(name,i2.call(this,t2))}}function attrInterpolateNS(fullname,i2){return function(t2){this.setAttributeNS(fullname.space,fullname.local,i2.call(this,t2))}}function attrTweenNS(fullname,value){var t0,i0;function tween(){var i2=value.apply(this,arguments);return i2!==i0&&(t0=(i0=i2)&&attrInterpolateNS(fullname,i2)),t0}return tween._value=value,tween}function attrTween(name,value){var t0,i0;function tween(){var i2=value.apply(this,arguments);return i2!==i0&&(t0=(i0=i2)&&attrInterpolate(name,i2)),t0}return tween._value=value,tween}function transition_attrTween(name,value){var key="attr."+name;if(arguments.length<2)return(key=this.tween(key))&&key._value;if(value==null)return this.tween(key,null);if(typeof value!="function")throw new Error;var fullname=namespace(name);return this.tween(key,(fullname.local?attrTweenNS:attrTween)(fullname,value))}function delayFunction(id2,value){return function(){init(this,id2).delay=+value.apply(this,arguments)}}function delayConstant(id2,value){return value=+value,function(){init(this,id2).delay=value}}function transition_delay(value){var id2=this._id;return arguments.length?this.each((typeof value=="function"?delayFunction:delayConstant)(id2,value)):get(this.node(),id2).delay}function durationFunction(id2,value){return function(){set(this,id2).duration=+value.apply(this,arguments)}}function durationConstant(id2,value){return value=+value,function(){set(this,id2).duration=value}}function transition_duration(value){var id2=this._id;return arguments.length?this.each((typeof value=="function"?durationFunction:durationConstant)(id2,value)):get(this.node(),id2).duration}function easeConstant(id2,value){if(typeof value!="function")throw new Error;return function(){set(this,id2).ease=value}}function transition_ease(value){var id2=this._id;return arguments.length?this.each(easeConstant(id2,value)):get(this.node(),id2).ease}function easeVarying(id2,value){return function(){var v2=value.apply(this,arguments);if(typeof v2!="function")throw new Error;set(this,id2).ease=v2}}function transition_easeVarying(value){if(typeof value!="function")throw new Error;return this.each(easeVarying(this._id,value))}function transition_filter(match){typeof match!="function"&&(match=matcher(match));for(var groups=this._groups,m2=groups.length,subgroups=new Array(m2),j=0;j<m2;++j)for(var group=groups[j],n2=group.length,subgroup=subgroups[j]=[],node,i2=0;i2<n2;++i2)(node=group[i2])&&match.call(node,node.__data__,i2,group)&&subgroup.push(node);return new Transition(subgroups,this._parents,this._name,this._id)}function transition_merge(transition){if(transition._id!==this._id)throw new Error;for(var groups0=this._groups,groups1=transition._groups,m0=groups0.length,m1=groups1.length,m2=Math.min(m0,m1),merges=new Array(m0),j=0;j<m2;++j)for(var group0=groups0[j],group1=groups1[j],n2=group0.length,merge=merges[j]=new Array(n2),node,i2=0;i2<n2;++i2)(node=group0[i2]||group1[i2])&&(merge[i2]=node);for(;j<m0;++j)merges[j]=groups0[j];return new Transition(merges,this._parents,this._name,this._id)}function start(name){return(name+"").trim().split(/^|\s+/).every(function(t2){var i2=t2.indexOf(".");return i2>=0&&(t2=t2.slice(0,i2)),!t2||t2==="start"})}function onFunction(id2,name,listener){var on0,on1,sit=start(name)?init:set;return function(){var schedule2=sit(this,id2),on=schedule2.on;on!==on0&&(on1=(on0=on).copy()).on(name,listener),schedule2.on=on1}}function transition_on(name,listener){var id2=this._id;return arguments.length<2?get(this.node(),id2).on.on(name):this.each(onFunction(id2,name,listener))}function removeFunction(id2){return function(){var parent=this.parentNode;for(var i2 in this.__transition)if(+i2!==id2)return;parent&&parent.removeChild(this)}}function transition_remove(){return this.on("end.remove",removeFunction(this._id))}function transition_select(select2){var name=this._name,id2=this._id;typeof select2!="function"&&(select2=selector$4(select2));for(var groups=this._groups,m2=groups.length,subgroups=new Array(m2),j=0;j<m2;++j)for(var group=groups[j],n2=group.length,subgroup=subgroups[j]=new Array(n2),node,subnode,i2=0;i2<n2;++i2)(node=group[i2])&&(subnode=select2.call(node,node.__data__,i2,group))&&("__data__"in node&&(subnode.__data__=node.__data__),subgroup[i2]=subnode,schedule(subgroup[i2],name,id2,i2,subgroup,get(node,id2)));return new Transition(subgroups,this._parents,name,id2)}function transition_selectAll(select2){var name=this._name,id2=this._id;typeof select2!="function"&&(select2=selectorAll(select2));for(var groups=this._groups,m2=groups.length,subgroups=[],parents=[],j=0;j<m2;++j)for(var group=groups[j],n2=group.length,node,i2=0;i2<n2;++i2)if(node=group[i2]){for(var children2=select2.call(node,node.__data__,i2,group),child,inherit2=get(node,id2),k2=0,l2=children2.length;k2<l2;++k2)(child=children2[k2])&&schedule(child,name,id2,k2,children2,inherit2);subgroups.push(children2),parents.push(node)}return new Transition(subgroups,parents,name,id2)}var Selection=selection.prototype.constructor;function transition_selection(){return new Selection(this._groups,this._parents)}function styleNull(name,interpolate2){var string00,string10,interpolate0;return function(){var string0=styleValue(this,name),string1=(this.style.removeProperty(name),styleValue(this,name));return string0===string1?null:string0===string00&&string1===string10?interpolate0:interpolate0=interpolate2(string00=string0,string10=string1)}}function styleRemove(name){return function(){this.style.removeProperty(name)}}function styleConstant(name,interpolate2,value1){var string00,string1=value1+"",interpolate0;return function(){var string0=styleValue(this,name);return string0===string1?null:string0===string00?interpolate0:interpolate0=interpolate2(string00=string0,value1)}}function styleFunction(name,interpolate2,value){var string00,string10,interpolate0;return function(){var string0=styleValue(this,name),value1=value(this),string1=value1+"";return value1==null&&(string1=value1=(this.style.removeProperty(name),styleValue(this,name))),string0===string1?null:string0===string00&&string1===string10?interpolate0:(string10=string1,interpolate0=interpolate2(string00=string0,value1))}}function styleMaybeRemove(id2,name){var on0,on1,listener0,key="style."+name,event="end."+key,remove2;return function(){var schedule2=set(this,id2),on=schedule2.on,listener=schedule2.value[key]==null?remove2||(remove2=styleRemove(name)):void 0;(on!==on0||listener0!==listener)&&(on1=(on0=on).copy()).on(event,listener0=listener),schedule2.on=on1}}function transition_style(name,value,priority){var i2=(name+="")=="transform"?interpolateTransformCss:interpolate$1;return value==null?this.styleTween(name,styleNull(name,i2)).on("end.style."+name,styleRemove(name)):typeof value=="function"?this.styleTween(name,styleFunction(name,i2,tweenValue(this,"style."+name,value))).each(styleMaybeRemove(this._id,name)):this.styleTween(name,styleConstant(name,i2,value),priority).on("end.style."+name,null)}function styleInterpolate(name,i2,priority){return function(t2){this.style.setProperty(name,i2.call(this,t2),priority)}}function styleTween(name,value,priority){var t2,i0;function tween(){var i2=value.apply(this,arguments);return i2!==i0&&(t2=(i0=i2)&&styleInterpolate(name,i2,priority)),t2}return tween._value=value,tween}function transition_styleTween(name,value,priority){var key="style."+(name+="");if(arguments.length<2)return(key=this.tween(key))&&key._value;if(value==null)return this.tween(key,null);if(typeof value!="function")throw new Error;return this.tween(key,styleTween(name,value,priority??""))}function textConstant(value){return function(){this.textContent=value}}function textFunction(value){return function(){var value1=value(this);this.textContent=value1??""}}function transition_text(value){return this.tween("text",typeof value=="function"?textFunction(tweenValue(this,"text",value)):textConstant(value==null?"":value+""))}function textInterpolate(i2){return function(t2){this.textContent=i2.call(this,t2)}}function textTween(value){var t0,i0;function tween(){var i2=value.apply(this,arguments);return i2!==i0&&(t0=(i0=i2)&&textInterpolate(i2)),t0}return tween._value=value,tween}function transition_textTween(value){var key="text";if(arguments.length<1)return(key=this.tween(key))&&key._value;if(value==null)return this.tween(key,null);if(typeof value!="function")throw new Error;return this.tween(key,textTween(value))}function transition_transition(){for(var name=this._name,id0=this._id,id1=newId(),groups=this._groups,m2=groups.length,j=0;j<m2;++j)for(var group=groups[j],n2=group.length,node,i2=0;i2<n2;++i2)if(node=group[i2]){var inherit2=get(node,id0);schedule(node,name,id1,i2,group,{time:inherit2.time+inherit2.delay+inherit2.duration,delay:0,duration:inherit2.duration,ease:inherit2.ease})}return new Transition(groups,this._parents,name,id1)}function transition_end(){var on0,on1,that=this,id2=that._id,size2=that.size();return new Promise(function(resolve,reject){var cancel={value:reject},end={value:function(){--size2===0&&resolve()}};that.each(function(){var schedule2=set(this,id2),on=schedule2.on;on!==on0&&(on1=(on0=on).copy(),on1._.cancel.push(cancel),on1._.interrupt.push(cancel),on1._.end.push(end)),schedule2.on=on1}),size2===0&&resolve()})}var id$1=0;function Transition(groups,parents,name,id2){this._groups=groups,this._parents=parents,this._name=name,this._id=id2}function newId(){return++id$1}var selection_prototype=selection.prototype;Transition.prototype={constructor:Transition,select:transition_select,selectAll:transition_selectAll,selectChild:selection_prototype.selectChild,selectChildren:selection_prototype.selectChildren,filter:transition_filter,merge:transition_merge,selection:transition_selection,transition:transition_transition,call:selection_prototype.call,nodes:selection_prototype.nodes,node:selection_prototype.node,size:selection_prototype.size,empty:selection_prototype.empty,each:selection_prototype.each,on:transition_on,attr:transition_attr,attrTween:transition_attrTween,style:transition_style,styleTween:transition_styleTween,text:transition_text,textTween:transition_textTween,remove:transition_remove,tween:transition_tween,delay:transition_delay,duration:transition_duration,ease:transition_ease,easeVarying:transition_easeVarying,end:transition_end,[Symbol.iterator]:selection_prototype[Symbol.iterator]};function cubicInOut(t2){return((t2*=2)<=1?t2*t2*t2:(t2-=2)*t2*t2+2)/2}var defaultTiming={time:null,delay:0,duration:250,ease:cubicInOut};function inherit(node,id2){for(var timing;!(timing=node.__transition)||!(timing=timing[id2]);)if(!(node=node.parentNode))throw new Error(`transition ${id2} not found`);return timing}function selection_transition(name){var id2,timing;name instanceof Transition?(id2=name._id,name=name._name):(id2=newId(),(timing=defaultTiming).time=now$1(),name=name==null?null:name+"");for(var groups=this._groups,m2=groups.length,j=0;j<m2;++j)for(var group=groups[j],n2=group.length,node,i2=0;i2<n2;++i2)(node=group[i2])&&schedule(node,name,id2,i2,group,timing||inherit(node,id2));return new Transition(groups,this._parents,name,id2)}selection.prototype.interrupt=selection_interrupt;selection.prototype.transition=selection_transition;const constant$1=x2=>()=>x2;function ZoomEvent(type,{sourceEvent:sourceEvent2,target,transform:transform2,dispatch:dispatch2}){Object.defineProperties(this,{type:{value:type,enumerable:!0,configurable:!0},sourceEvent:{value:sourceEvent2,enumerable:!0,configurable:!0},target:{value:target,enumerable:!0,configurable:!0},transform:{value:transform2,enumerable:!0,configurable:!0},_:{value:dispatch2}})}function Transform(k2,x2,y2){this.k=k2,this.x=x2,this.y=y2}Transform.prototype={constructor:Transform,scale:function(k2){return k2===1?this:new Transform(this.k*k2,this.x,this.y)},translate:function(x2,y2){return x2===0&y2===0?this:new Transform(this.k,this.x+this.k*x2,this.y+this.k*y2)},apply:function(point2){return[point2[0]*this.k+this.x,point2[1]*this.k+this.y]},applyX:function(x2){return x2*this.k+this.x},applyY:function(y2){return y2*this.k+this.y},invert:function(location){return[(location[0]-this.x)/this.k,(location[1]-this.y)/this.k]},invertX:function(x2){return(x2-this.x)/this.k},invertY:function(y2){return(y2-this.y)/this.k},rescaleX:function(x2){return x2.copy().domain(x2.range().map(this.invertX,this).map(x2.invert,x2))},rescaleY:function(y2){return y2.copy().domain(y2.range().map(this.invertY,this).map(y2.invert,y2))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var identity$1=new Transform(1,0,0);transform.prototype=Transform.prototype;function transform(node){for(;!node.__zoom;)if(!(node=node.parentNode))return identity$1;return node.__zoom}function nopropagation(event){event.stopImmediatePropagation()}function noevent(event){event.preventDefault(),event.stopImmediatePropagation()}function defaultFilter(event){return(!event.ctrlKey||event.type==="wheel")&&!event.button}function defaultExtent(){var e2=this;return e2 instanceof SVGElement?(e2=e2.ownerSVGElement||e2,e2.hasAttribute("viewBox")?(e2=e2.viewBox.baseVal,[[e2.x,e2.y],[e2.x+e2.width,e2.y+e2.height]]):[[0,0],[e2.width.baseVal.value,e2.height.baseVal.value]]):[[0,0],[e2.clientWidth,e2.clientHeight]]}function defaultTransform(){return this.__zoom||identity$1}function defaultWheelDelta(event){return-event.deltaY*(event.deltaMode===1?.05:event.deltaMode?1:.002)*(event.ctrlKey?10:1)}function defaultTouchable(){return navigator.maxTouchPoints||"ontouchstart"in this}function defaultConstrain(transform2,extent,translateExtent){var dx0=transform2.invertX(extent[0][0])-translateExtent[0][0],dx1=transform2.invertX(extent[1][0])-translateExtent[1][0],dy0=transform2.invertY(extent[0][1])-translateExtent[0][1],dy1=transform2.invertY(extent[1][1])-translateExtent[1][1];return transform2.translate(dx1>dx0?(dx0+dx1)/2:Math.min(0,dx0)||Math.max(0,dx1),dy1>dy0?(dy0+dy1)/2:Math.min(0,dy0)||Math.max(0,dy1))}function zoom(){var filter2=defaultFilter,extent=defaultExtent,constrain=defaultConstrain,wheelDelta2=defaultWheelDelta,touchable=defaultTouchable,scaleExtent=[0,1/0],translateExtent=[[-1/0,-1/0],[1/0,1/0]],duration=250,interpolate2=interpolateZoom,listeners=dispatch("start","zoom","end"),touchstarting,touchfirst,touchending,touchDelay=500,wheelDelay=150,clickDistance2=0,tapDistance=10;function zoom2(selection2){selection2.property("__zoom",defaultTransform).on("wheel.zoom",wheeled,{passive:!1}).on("mousedown.zoom",mousedowned).on("dblclick.zoom",dblclicked).filter(touchable).on("touchstart.zoom",touchstarted).on("touchmove.zoom",touchmoved).on("touchend.zoom touchcancel.zoom",touchended).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}zoom2.transform=function(collection,transform2,point2,event){var selection2=collection.selection?collection.selection():collection;selection2.property("__zoom",defaultTransform),collection!==selection2?schedule2(collection,transform2,point2,event):selection2.interrupt().each(function(){gesture(this,arguments).event(event).start().zoom(null,typeof transform2=="function"?transform2.apply(this,arguments):transform2).end()})},zoom2.scaleBy=function(selection2,k2,p2,event){zoom2.scaleTo(selection2,function(){var k0=this.__zoom.k,k1=typeof k2=="function"?k2.apply(this,arguments):k2;return k0*k1},p2,event)},zoom2.scaleTo=function(selection2,k2,p2,event){zoom2.transform(selection2,function(){var e2=extent.apply(this,arguments),t0=this.__zoom,p0=p2==null?centroid(e2):typeof p2=="function"?p2.apply(this,arguments):p2,p1=t0.invert(p0),k1=typeof k2=="function"?k2.apply(this,arguments):k2;return constrain(translate(scale2(t0,k1),p0,p1),e2,translateExtent)},p2,event)},zoom2.translateBy=function(selection2,x2,y2,event){zoom2.transform(selection2,function(){return constrain(this.__zoom.translate(typeof x2=="function"?x2.apply(this,arguments):x2,typeof y2=="function"?y2.apply(this,arguments):y2),extent.apply(this,arguments),translateExtent)},null,event)},zoom2.translateTo=function(selection2,x2,y2,p2,event){zoom2.transform(selection2,function(){var e2=extent.apply(this,arguments),t2=this.__zoom,p0=p2==null?centroid(e2):typeof p2=="function"?p2.apply(this,arguments):p2;return constrain(identity$1.translate(p0[0],p0[1]).scale(t2.k).translate(typeof x2=="function"?-x2.apply(this,arguments):-x2,typeof y2=="function"?-y2.apply(this,arguments):-y2),e2,translateExtent)},p2,event)};function scale2(transform2,k2){return k2=Math.max(scaleExtent[0],Math.min(scaleExtent[1],k2)),k2===transform2.k?transform2:new Transform(k2,transform2.x,transform2.y)}function translate(transform2,p0,p1){var x2=p0[0]-p1[0]*transform2.k,y2=p0[1]-p1[1]*transform2.k;return x2===transform2.x&&y2===transform2.y?transform2:new Transform(transform2.k,x2,y2)}function centroid(extent2){return[(+extent2[0][0]+ +extent2[1][0])/2,(+extent2[0][1]+ +extent2[1][1])/2]}function schedule2(transition,transform2,point2,event){transition.on("start.zoom",function(){gesture(this,arguments).event(event).start()}).on("interrupt.zoom end.zoom",function(){gesture(this,arguments).event(event).end()}).tween("zoom",function(){var that=this,args=arguments,g=gesture(that,args).event(event),e2=extent.apply(that,args),p2=point2==null?centroid(e2):typeof point2=="function"?point2.apply(that,args):point2,w2=Math.max(e2[1][0]-e2[0][0],e2[1][1]-e2[0][1]),a2=that.__zoom,b2=typeof transform2=="function"?transform2.apply(that,args):transform2,i2=interpolate2(a2.invert(p2).concat(w2/a2.k),b2.invert(p2).concat(w2/b2.k));return function(t2){if(t2===1)t2=b2;else{var l2=i2(t2),k2=w2/l2[2];t2=new Transform(k2,p2[0]-l2[0]*k2,p2[1]-l2[1]*k2)}g.zoom(null,t2)}})}function gesture(that,args,clean){return!clean&&that.__zooming||new Gesture(that,args)}function Gesture(that,args){this.that=that,this.args=args,this.active=0,this.sourceEvent=null,this.extent=extent.apply(that,args),this.taps=0}Gesture.prototype={event:function(event){return event&&(this.sourceEvent=event),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(key,transform2){return this.mouse&&key!=="mouse"&&(this.mouse[1]=transform2.invert(this.mouse[0])),this.touch0&&key!=="touch"&&(this.touch0[1]=transform2.invert(this.touch0[0])),this.touch1&&key!=="touch"&&(this.touch1[1]=transform2.invert(this.touch1[0])),this.that.__zoom=transform2,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(type){var d2=select(this.that).datum();listeners.call(type,this.that,new ZoomEvent(type,{sourceEvent:this.sourceEvent,target:zoom2,type,transform:this.that.__zoom,dispatch:listeners}),d2)}};function wheeled(event,...args){if(!filter2.apply(this,arguments))return;var g=gesture(this,args).event(event),t2=this.__zoom,k2=Math.max(scaleExtent[0],Math.min(scaleExtent[1],t2.k*Math.pow(2,wheelDelta2.apply(this,arguments)))),p2=pointer(event);if(g.wheel)(g.mouse[0][0]!==p2[0]||g.mouse[0][1]!==p2[1])&&(g.mouse[1]=t2.invert(g.mouse[0]=p2)),clearTimeout(g.wheel);else{if(t2.k===k2)return;g.mouse=[p2,t2.invert(p2)],interrupt(this),g.start()}noevent(event),g.wheel=setTimeout(wheelidled,wheelDelay),g.zoom("mouse",constrain(translate(scale2(t2,k2),g.mouse[0],g.mouse[1]),g.extent,translateExtent));function wheelidled(){g.wheel=null,g.end()}}function mousedowned(event,...args){if(touchending||!filter2.apply(this,arguments))return;var currentTarget=event.currentTarget,g=gesture(this,args,!0).event(event),v2=select(event.view).on("mousemove.zoom",mousemoved,!0).on("mouseup.zoom",mouseupped,!0),p2=pointer(event,currentTarget),x0=event.clientX,y0=event.clientY;dragDisable(event.view),nopropagation(event),g.mouse=[p2,this.__zoom.invert(p2)],interrupt(this),g.start();function mousemoved(event2){if(noevent(event2),!g.moved){var dx=event2.clientX-x0,dy=event2.clientY-y0;g.moved=dx*dx+dy*dy>clickDistance2}g.event(event2).zoom("mouse",constrain(translate(g.that.__zoom,g.mouse[0]=pointer(event2,currentTarget),g.mouse[1]),g.extent,translateExtent))}function mouseupped(event2){v2.on("mousemove.zoom mouseup.zoom",null),yesdrag(event2.view,g.moved),noevent(event2),g.event(event2).end()}}function dblclicked(event,...args){if(filter2.apply(this,arguments)){var t0=this.__zoom,p0=pointer(event.changedTouches?event.changedTouches[0]:event,this),p1=t0.invert(p0),k1=t0.k*(event.shiftKey?.5:2),t1=constrain(translate(scale2(t0,k1),p0,p1),extent.apply(this,args),translateExtent);noevent(event),duration>0?select(this).transition().duration(duration).call(schedule2,t1,p0,event):select(this).call(zoom2.transform,t1,p0,event)}}function touchstarted(event,...args){if(filter2.apply(this,arguments)){var touches=event.touches,n2=touches.length,g=gesture(this,args,event.changedTouches.length===n2).event(event),started,i2,t2,p2;for(nopropagation(event),i2=0;i2<n2;++i2)t2=touches[i2],p2=pointer(t2,this),p2=[p2,this.__zoom.invert(p2),t2.identifier],g.touch0?!g.touch1&&g.touch0[2]!==p2[2]&&(g.touch1=p2,g.taps=0):(g.touch0=p2,started=!0,g.taps=1+!!touchstarting);touchstarting&&(touchstarting=clearTimeout(touchstarting)),started&&(g.taps<2&&(touchfirst=p2[0],touchstarting=setTimeout(function(){touchstarting=null},touchDelay)),interrupt(this),g.start())}}function touchmoved(event,...args){if(this.__zooming){var g=gesture(this,args).event(event),touches=event.changedTouches,n2=touches.length,i2,t2,p2,l2;for(noevent(event),i2=0;i2<n2;++i2)t2=touches[i2],p2=pointer(t2,this),g.touch0&&g.touch0[2]===t2.identifier?g.touch0[0]=p2:g.touch1&&g.touch1[2]===t2.identifier&&(g.touch1[0]=p2);if(t2=g.that.__zoom,g.touch1){var p0=g.touch0[0],l0=g.touch0[1],p1=g.touch1[0],l1=g.touch1[1],dp=(dp=p1[0]-p0[0])*dp+(dp=p1[1]-p0[1])*dp,dl=(dl=l1[0]-l0[0])*dl+(dl=l1[1]-l0[1])*dl;t2=scale2(t2,Math.sqrt(dp/dl)),p2=[(p0[0]+p1[0])/2,(p0[1]+p1[1])/2],l2=[(l0[0]+l1[0])/2,(l0[1]+l1[1])/2]}else if(g.touch0)p2=g.touch0[0],l2=g.touch0[1];else return;g.zoom("touch",constrain(translate(t2,p2,l2),g.extent,translateExtent))}}function touchended(event,...args){if(this.__zooming){var g=gesture(this,args).event(event),touches=event.changedTouches,n2=touches.length,i2,t2;for(nopropagation(event),touchending&&clearTimeout(touchending),touchending=setTimeout(function(){touchending=null},touchDelay),i2=0;i2<n2;++i2)t2=touches[i2],g.touch0&&g.touch0[2]===t2.identifier?delete g.touch0:g.touch1&&g.touch1[2]===t2.identifier&&delete g.touch1;if(g.touch1&&!g.touch0&&(g.touch0=g.touch1,delete g.touch1),g.touch0)g.touch0[1]=this.__zoom.invert(g.touch0[0]);else if(g.end(),g.taps===2&&(t2=pointer(t2,this),Math.hypot(touchfirst[0]-t2[0],touchfirst[1]-t2[1])<tapDistance)){var p2=select(this).on("dblclick.zoom");p2&&p2.apply(this,arguments)}}}return zoom2.wheelDelta=function(_){return arguments.length?(wheelDelta2=typeof _=="function"?_:constant$1(+_),zoom2):wheelDelta2},zoom2.filter=function(_){return arguments.length?(filter2=typeof _=="function"?_:constant$1(!!_),zoom2):filter2},zoom2.touchable=function(_){return arguments.length?(touchable=typeof _=="function"?_:constant$1(!!_),zoom2):touchable},zoom2.extent=function(_){return arguments.length?(extent=typeof _=="function"?_:constant$1([[+_[0][0],+_[0][1]],[+_[1][0],+_[1][1]]]),zoom2):extent},zoom2.scaleExtent=function(_){return arguments.length?(scaleExtent[0]=+_[0],scaleExtent[1]=+_[1],zoom2):[scaleExtent[0],scaleExtent[1]]},zoom2.translateExtent=function(_){return arguments.length?(translateExtent[0][0]=+_[0][0],translateExtent[1][0]=+_[1][0],translateExtent[0][1]=+_[0][1],translateExtent[1][1]=+_[1][1],zoom2):[[translateExtent[0][0],translateExtent[0][1]],[translateExtent[1][0],translateExtent[1][1]]]},zoom2.constrain=function(_){return arguments.length?(constrain=_,zoom2):constrain},zoom2.duration=function(_){return arguments.length?(duration=+_,zoom2):duration},zoom2.interpolate=function(_){return arguments.length?(interpolate2=_,zoom2):interpolate2},zoom2.on=function(){var value=listeners.on.apply(listeners,arguments);return value===listeners?zoom2:value},zoom2.clickDistance=function(_){return arguments.length?(clickDistance2=(_=+_)*_,zoom2):Math.sqrt(clickDistance2)},zoom2.tapDistance=function(_){return arguments.length?(tapDistance=+_,zoom2):tapDistance},zoom2}const errorMessages={error001:()=>"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:nodeType=>`Node type "${nodeType}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:id2=>`The old edge with id=${id2} does not exist.`,error009:type=>`Marker type "${type}" doesn't exist.`,error008:(handleType,{id:id2,sourceHandle,targetHandle})=>`Couldn't create edge for ${handleType} handle id: "${sourceHandle&&targetHandle}", edge id: ${id2}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:edgeType=>`Edge type "${edgeType}" not found. Using fallback type "default".`,error012:id2=>`Node with id "${id2}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(lib="react")=>`It seems that you haven't loaded the styles. Please import '@xyflow/${lib}/dist/style.css' or base.css to make sure everything is working properly.`},infiniteExtent=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],elementSelectionKeys=["Enter"," ","Escape"];var ConnectionMode;(function(ConnectionMode2){ConnectionMode2.Strict="strict",ConnectionMode2.Loose="loose"})(ConnectionMode||(ConnectionMode={}));var PanOnScrollMode;(function(PanOnScrollMode2){PanOnScrollMode2.Free="free",PanOnScrollMode2.Vertical="vertical",PanOnScrollMode2.Horizontal="horizontal"})(PanOnScrollMode||(PanOnScrollMode={}));var SelectionMode;(function(SelectionMode2){SelectionMode2.Partial="partial",SelectionMode2.Full="full"})(SelectionMode||(SelectionMode={}));const initialConnection={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null};var ConnectionLineType;(function(ConnectionLineType2){ConnectionLineType2.Bezier="default",ConnectionLineType2.Straight="straight",ConnectionLineType2.Step="step",ConnectionLineType2.SmoothStep="smoothstep",ConnectionLineType2.SimpleBezier="simplebezier"})(ConnectionLineType||(ConnectionLineType={}));var MarkerType;(function(MarkerType2){MarkerType2.Arrow="arrow",MarkerType2.ArrowClosed="arrowclosed"})(MarkerType||(MarkerType={}));var Position;(function(Position2){Position2.Left="left",Position2.Top="top",Position2.Right="right",Position2.Bottom="bottom"})(Position||(Position={}));const oppositePosition={[Position.Left]:Position.Right,[Position.Right]:Position.Left,[Position.Top]:Position.Bottom,[Position.Bottom]:Position.Top};function getConnectionStatus(isValid){return isValid===null?null:isValid?"valid":"invalid"}const isEdgeBase=element=>"id"in element&&"source"in element&&"target"in element,isNodeBase=element=>"id"in element&&"position"in element&&!("source"in element)&&!("target"in element),isInternalNodeBase=element=>"id"in element&&"internals"in element&&!("source"in element)&&!("target"in element),getNodePositionWithOrigin=(node,nodeOrigin=[0,0])=>{const{width,height}=getNodeDimensions(node),origin=node.origin??nodeOrigin,offsetX=width*origin[0],offsetY=height*origin[1];return{x:node.position.x-offsetX,y:node.position.y-offsetY}},getInternalNodesBounds=(nodeLookup,params={})=>{if(nodeLookup.size===0)return{x:0,y:0,width:0,height:0};let box={x:1/0,y:1/0,x2:-1/0,y2:-1/0};return nodeLookup.forEach(node=>{if(params.filter===void 0||params.filter(node)){const nodeBox=nodeToBox(node);box=getBoundsOfBoxes(box,nodeBox)}}),boxToRect(box)},getNodesInside=(nodes,rect,[tx,ty,tScale]=[0,0,1],partially=!1,excludeNonSelectableNodes=!1)=>{const paneRect={...pointToRendererPoint(rect,[tx,ty,tScale]),width:rect.width/tScale,height:rect.height/tScale},visibleNodes=[];for(const[,node]of nodes){const{measured,selectable=!0,hidden:hidden2=!1}=node,width=measured.width??node.width??node.initialWidth??null,height=measured.height??node.height??node.initialHeight??null;if(excludeNonSelectableNodes&&!selectable||hidden2)continue;const overlappingArea=getOverlappingArea(paneRect,nodeToRect(node)),notInitialized=width===null||height===null,partiallyVisible=partially&&overlappingArea>0,area=(width??0)*(height??0);(notInitialized||partiallyVisible||overlappingArea>=area||node.dragging)&&visibleNodes.push(node)}return visibleNodes},getConnectedEdges=(nodes,edges)=>{const nodeIds=new Set;return nodes.forEach(node=>{nodeIds.add(node.id)}),edges.filter(edge=>nodeIds.has(edge.source)||nodeIds.has(edge.target))};function getFitViewNodes(nodeLookup,options){const fitViewNodes=new Map,optionNodeIds=options?.nodes?new Set(options.nodes.map(node=>node.id)):null;return nodeLookup.forEach(n2=>{n2.measured.width&&n2.measured.height&&(options?.includeHiddenNodes||!n2.hidden)&&(!optionNodeIds||optionNodeIds.has(n2.id))&&fitViewNodes.set(n2.id,n2)}),fitViewNodes}async function fitView({nodes,width,height,panZoom,minZoom,maxZoom},options){if(nodes.size===0)return Promise.resolve(!1);const bounds=getInternalNodesBounds(nodes),viewport=getViewportForBounds(bounds,width,height,options?.minZoom??minZoom,options?.maxZoom??maxZoom,options?.padding??.1);return await panZoom.setViewport(viewport,{duration:options?.duration}),Promise.resolve(!0)}function clampNodeExtent(node,extent){return!extent||extent==="parent"?extent:[extent[0],[extent[1][0]-(node.measured?.width??0),extent[1][1]-(node.measured?.height??0)]]}function calculateNodePosition({nodeId,nextPosition,nodeLookup,nodeOrigin=[0,0],nodeExtent,onError}){const node=nodeLookup.get(nodeId),parentNode=node.parentId?nodeLookup.get(node.parentId):void 0,{x:parentX,y:parentY}=parentNode?parentNode.internals.positionAbsolute:{x:0,y:0},origin=node.origin??nodeOrigin;let currentExtent=clampNodeExtent(node,node.extent||nodeExtent);if(node.extent==="parent"&&!node.expandParent)if(!parentNode)onError?.("005",errorMessages.error005());else{const nodeWidth=node.measured.width,nodeHeight=node.measured.height,parentWidth=parentNode.measured.width,parentHeight=parentNode.measured.height;nodeWidth&&nodeHeight&&parentWidth&&parentHeight&&(currentExtent=[[parentX,parentY],[parentX+parentWidth-nodeWidth,parentY+parentHeight-nodeHeight]])}else parentNode&&isCoordinateExtent(node.extent)&&(currentExtent=[[node.extent[0][0]+parentX,node.extent[0][1]+parentY],[node.extent[1][0]+parentX,node.extent[1][1]+parentY]]);const positionAbsolute=isCoordinateExtent(currentExtent)?clampPosition(nextPosition,currentExtent):nextPosition;return{position:{x:positionAbsolute.x-parentX+node.measured.width*origin[0],y:positionAbsolute.y-parentY+node.measured.height*origin[1]},positionAbsolute}}async function getElementsToRemove({nodesToRemove=[],edgesToRemove=[],nodes,edges,onBeforeDelete}){const nodeIds=new Set(nodesToRemove.map(node=>node.id)),matchingNodes=[];for(const node of nodes){if(node.deletable===!1)continue;const isIncluded=nodeIds.has(node.id),parentHit=!isIncluded&&node.parentId&&matchingNodes.find(n2=>n2.id===node.parentId);(isIncluded||parentHit)&&matchingNodes.push(node)}const edgeIds=new Set(edgesToRemove.map(edge=>edge.id)),deletableEdges=edges.filter(edge=>edge.deletable!==!1),matchingEdges=getConnectedEdges(matchingNodes,deletableEdges);for(const edge of deletableEdges)edgeIds.has(edge.id)&&!matchingEdges.find(e2=>e2.id===edge.id)&&matchingEdges.push(edge);if(!onBeforeDelete)return{edges:matchingEdges,nodes:matchingNodes};const onBeforeDeleteResult=await onBeforeDelete({nodes:matchingNodes,edges:matchingEdges});return typeof onBeforeDeleteResult=="boolean"?onBeforeDeleteResult?{edges:matchingEdges,nodes:matchingNodes}:{edges:[],nodes:[]}:onBeforeDeleteResult}const clamp$1=(val,min2=0,max2=1)=>Math.min(Math.max(val,min2),max2),clampPosition=(position={x:0,y:0},extent)=>({x:clamp$1(position.x,extent[0][0],extent[1][0]),y:clamp$1(position.y,extent[0][1],extent[1][1])}),calcAutoPanVelocity=(value,min2,max2)=>value<min2?clamp$1(Math.abs(value-min2),1,min2)/min2:value>max2?-clamp$1(Math.abs(value-max2),1,min2)/min2:0,calcAutoPan=(pos,bounds,speed=15,distance2=40)=>{const xMovement=calcAutoPanVelocity(pos.x,distance2,bounds.width-distance2)*speed,yMovement=calcAutoPanVelocity(pos.y,distance2,bounds.height-distance2)*speed;return[xMovement,yMovement]},getBoundsOfBoxes=(box1,box2)=>({x:Math.min(box1.x,box2.x),y:Math.min(box1.y,box2.y),x2:Math.max(box1.x2,box2.x2),y2:Math.max(box1.y2,box2.y2)}),rectToBox=({x:x2,y:y2,width,height})=>({x:x2,y:y2,x2:x2+width,y2:y2+height}),boxToRect=({x:x2,y:y2,x2:x22,y2:y22})=>({x:x2,y:y2,width:x22-x2,height:y22-y2}),nodeToRect=(node,nodeOrigin=[0,0])=>{const{x:x2,y:y2}=isInternalNodeBase(node)?node.internals.positionAbsolute:getNodePositionWithOrigin(node,nodeOrigin);return{x:x2,y:y2,width:node.measured?.width??node.width??node.initialWidth??0,height:node.measured?.height??node.height??node.initialHeight??0}},nodeToBox=(node,nodeOrigin=[0,0])=>{const{x:x2,y:y2}=isInternalNodeBase(node)?node.internals.positionAbsolute:getNodePositionWithOrigin(node,nodeOrigin);return{x:x2,y:y2,x2:x2+(node.measured?.width??node.width??node.initialWidth??0),y2:y2+(node.measured?.height??node.height??node.initialHeight??0)}},getBoundsOfRects=(rect1,rect2)=>boxToRect(getBoundsOfBoxes(rectToBox(rect1),rectToBox(rect2))),getOverlappingArea=(rectA,rectB)=>{const xOverlap=Math.max(0,Math.min(rectA.x+rectA.width,rectB.x+rectB.width)-Math.max(rectA.x,rectB.x)),yOverlap=Math.max(0,Math.min(rectA.y+rectA.height,rectB.y+rectB.height)-Math.max(rectA.y,rectB.y));return Math.ceil(xOverlap*yOverlap)},isRectObject=obj=>isNumeric(obj.width)&&isNumeric(obj.height)&&isNumeric(obj.x)&&isNumeric(obj.y),isNumeric=n2=>!isNaN(n2)&&isFinite(n2),devWarn=(id2,message)=>{},snapPosition=(position,snapGrid=[1,1])=>({x:snapGrid[0]*Math.round(position.x/snapGrid[0]),y:snapGrid[1]*Math.round(position.y/snapGrid[1])}),pointToRendererPoint=({x:x2,y:y2},[tx,ty,tScale],snapToGrid=!1,snapGrid=[1,1])=>{const position={x:(x2-tx)/tScale,y:(y2-ty)/tScale};return snapToGrid?snapPosition(position,snapGrid):position},rendererPointToPoint=({x:x2,y:y2},[tx,ty,tScale])=>({x:x2*tScale+tx,y:y2*tScale+ty}),getViewportForBounds=(bounds,width,height,minZoom,maxZoom,padding)=>{const xZoom=width/(bounds.width*(1+padding)),yZoom=height/(bounds.height*(1+padding)),zoom2=Math.min(xZoom,yZoom),clampedZoom=clamp$1(zoom2,minZoom,maxZoom),boundsCenterX=bounds.x+bounds.width/2,boundsCenterY=bounds.y+bounds.height/2,x2=width/2-boundsCenterX*clampedZoom,y2=height/2-boundsCenterY*clampedZoom;return{x:x2,y:y2,zoom:clampedZoom}},isMacOs=()=>typeof navigator<"u"&&navigator?.userAgent?.indexOf("Mac")>=0;function isCoordinateExtent(extent){return extent!==void 0&&extent!=="parent"}function getNodeDimensions(node){return{width:node.measured?.width??node.width??node.initialWidth??0,height:node.measured?.height??node.height??node.initialHeight??0}}function nodeHasDimensions(node){return(node.measured?.width??node.width??node.initialWidth)!==void 0&&(node.measured?.height??node.height??node.initialHeight)!==void 0}function evaluateAbsolutePosition(position,dimensions={width:0,height:0},parentId,nodeLookup,nodeOrigin){let nextParentId=parentId;const positionAbsolute={...position};for(;nextParentId;){const parent=nodeLookup.get(nextParentId);if(nextParentId=parent?.parentId,parent){const origin=parent.origin||nodeOrigin;positionAbsolute.x+=parent.internals.positionAbsolute.x-(dimensions.width??0)*origin[0],positionAbsolute.y+=parent.internals.positionAbsolute.y-(dimensions.height??0)*origin[1]}}return positionAbsolute}function getPointerPosition(event,{snapGrid=[0,0],snapToGrid=!1,transform:transform2}){const{x:x2,y:y2}=getEventPosition(event),pointerPos=pointToRendererPoint({x:x2,y:y2},transform2),{x:xSnapped,y:ySnapped}=snapToGrid?snapPosition(pointerPos,snapGrid):pointerPos;return{xSnapped,ySnapped,...pointerPos}}const getDimensions=node=>({width:node.offsetWidth,height:node.offsetHeight}),getHostForElement=element=>element.getRootNode?.()||window?.document,inputTags=["INPUT","SELECT","TEXTAREA"];function isInputDOMNode(event){const target=event.composedPath?.()?.[0]||event.target;return inputTags.includes(target?.nodeName)||target?.hasAttribute("contenteditable")||!!target?.closest(".nokey")}const isMouseEvent$1=event=>"clientX"in event,getEventPosition=(event,bounds)=>{const isMouse=isMouseEvent$1(event),evtX=isMouse?event.clientX:event.touches?.[0].clientX,evtY=isMouse?event.clientY:event.touches?.[0].clientY;return{x:evtX-(bounds?.left??0),y:evtY-(bounds?.top??0)}},getHandleBounds=(type,nodeElement,nodeBounds,zoom2,nodeId)=>{const handles=nodeElement.querySelectorAll(`.${type}`);return!handles||!handles.length?null:Array.from(handles).map(handle=>{const handleBounds=handle.getBoundingClientRect();return{id:handle.getAttribute("data-handleid"),type,nodeId,position:handle.getAttribute("data-handlepos"),x:(handleBounds.left-nodeBounds.left)/zoom2,y:(handleBounds.top-nodeBounds.top)/zoom2,...getDimensions(handle)}})};function getBezierEdgeCenter({sourceX,sourceY,targetX,targetY,sourceControlX,sourceControlY,targetControlX,targetControlY}){const centerX=sourceX*.125+sourceControlX*.375+targetControlX*.375+targetX*.125,centerY=sourceY*.125+sourceControlY*.375+targetControlY*.375+targetY*.125,offsetX=Math.abs(centerX-sourceX),offsetY=Math.abs(centerY-sourceY);return[centerX,centerY,offsetX,offsetY]}function calculateControlOffset(distance2,curvature){return distance2>=0?.5*distance2:curvature*25*Math.sqrt(-distance2)}function getControlWithCurvature({pos,x1,y1,x2,y2,c:c2}){switch(pos){case Position.Left:return[x1-calculateControlOffset(x1-x2,c2),y1];case Position.Right:return[x1+calculateControlOffset(x2-x1,c2),y1];case Position.Top:return[x1,y1-calculateControlOffset(y1-y2,c2)];case Position.Bottom:return[x1,y1+calculateControlOffset(y2-y1,c2)]}}function getBezierPath({sourceX,sourceY,sourcePosition=Position.Bottom,targetX,targetY,targetPosition=Position.Top,curvature=.25}){const[sourceControlX,sourceControlY]=getControlWithCurvature({pos:sourcePosition,x1:sourceX,y1:sourceY,x2:targetX,y2:targetY,c:curvature}),[targetControlX,targetControlY]=getControlWithCurvature({pos:targetPosition,x1:targetX,y1:targetY,x2:sourceX,y2:sourceY,c:curvature}),[labelX,labelY,offsetX,offsetY]=getBezierEdgeCenter({sourceX,sourceY,targetX,targetY,sourceControlX,sourceControlY,targetControlX,targetControlY});return[`M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,labelX,labelY,offsetX,offsetY]}function getEdgeCenter({sourceX,sourceY,targetX,targetY}){const xOffset=Math.abs(targetX-sourceX)/2,centerX=targetX<sourceX?targetX+xOffset:targetX-xOffset,yOffset=Math.abs(targetY-sourceY)/2,centerY=targetY<sourceY?targetY+yOffset:targetY-yOffset;return[centerX,centerY,xOffset,yOffset]}function getElevatedEdgeZIndex({sourceNode,targetNode,selected:selected2=!1,zIndex=0,elevateOnSelect=!1}){if(!elevateOnSelect)return zIndex;const edgeOrConnectedNodeSelected=selected2||targetNode.selected||sourceNode.selected,selectedZIndex=Math.max(sourceNode.internals.z||0,targetNode.internals.z||0,1e3);return zIndex+(edgeOrConnectedNodeSelected?selectedZIndex:0)}function isEdgeVisible({sourceNode,targetNode,width,height,transform:transform2}){const edgeBox=getBoundsOfBoxes(nodeToBox(sourceNode),nodeToBox(targetNode));edgeBox.x===edgeBox.x2&&(edgeBox.x2+=1),edgeBox.y===edgeBox.y2&&(edgeBox.y2+=1);const viewRect={x:-transform2[0]/transform2[2],y:-transform2[1]/transform2[2],width:width/transform2[2],height:height/transform2[2]};return getOverlappingArea(viewRect,boxToRect(edgeBox))>0}const getEdgeId=({source,sourceHandle,target,targetHandle})=>`xy-edge__${source}${sourceHandle||""}-${target}${targetHandle||""}`,connectionExists=(edge,edges)=>edges.some(el=>el.source===edge.source&&el.target===edge.target&&(el.sourceHandle===edge.sourceHandle||!el.sourceHandle&&!edge.sourceHandle)&&(el.targetHandle===edge.targetHandle||!el.targetHandle&&!edge.targetHandle)),addEdge=(edgeParams,edges)=>{if(!edgeParams.source||!edgeParams.target)return edges;let edge;return isEdgeBase(edgeParams)?edge={...edgeParams}:edge={...edgeParams,id:getEdgeId(edgeParams)},connectionExists(edge,edges)?edges:(edge.sourceHandle===null&&delete edge.sourceHandle,edge.targetHandle===null&&delete edge.targetHandle,edges.concat(edge))};function getStraightPath({sourceX,sourceY,targetX,targetY}){const[labelX,labelY,offsetX,offsetY]=getEdgeCenter({sourceX,sourceY,targetX,targetY});return[`M ${sourceX},${sourceY}L ${targetX},${targetY}`,labelX,labelY,offsetX,offsetY]}const handleDirections={[Position.Left]:{x:-1,y:0},[Position.Right]:{x:1,y:0},[Position.Top]:{x:0,y:-1},[Position.Bottom]:{x:0,y:1}},getDirection=({source,sourcePosition=Position.Bottom,target})=>sourcePosition===Position.Left||sourcePosition===Position.Right?source.x<target.x?{x:1,y:0}:{x:-1,y:0}:source.y<target.y?{x:0,y:1}:{x:0,y:-1},distance=(a2,b2)=>Math.sqrt(Math.pow(b2.x-a2.x,2)+Math.pow(b2.y-a2.y,2));function getPoints({source,sourcePosition=Position.Bottom,target,targetPosition=Position.Top,center,offset:offset2}){const sourceDir=handleDirections[sourcePosition],targetDir=handleDirections[targetPosition],sourceGapped={x:source.x+sourceDir.x*offset2,y:source.y+sourceDir.y*offset2},targetGapped={x:target.x+targetDir.x*offset2,y:target.y+targetDir.y*offset2},dir=getDirection({source:sourceGapped,sourcePosition,target:targetGapped}),dirAccessor=dir.x!==0?"x":"y",currDir=dir[dirAccessor];let points=[],centerX,centerY;const sourceGapOffset={x:0,y:0},targetGapOffset={x:0,y:0},[defaultCenterX,defaultCenterY,defaultOffsetX,defaultOffsetY]=getEdgeCenter({sourceX:source.x,sourceY:source.y,targetX:target.x,targetY:target.y});if(sourceDir[dirAccessor]*targetDir[dirAccessor]===-1){centerX=center.x??defaultCenterX,centerY=center.y??defaultCenterY;const verticalSplit=[{x:centerX,y:sourceGapped.y},{x:centerX,y:targetGapped.y}],horizontalSplit=[{x:sourceGapped.x,y:centerY},{x:targetGapped.x,y:centerY}];sourceDir[dirAccessor]===currDir?points=dirAccessor==="x"?verticalSplit:horizontalSplit:points=dirAccessor==="x"?horizontalSplit:verticalSplit}else{const sourceTarget=[{x:sourceGapped.x,y:targetGapped.y}],targetSource=[{x:targetGapped.x,y:sourceGapped.y}];if(dirAccessor==="x"?points=sourceDir.x===currDir?targetSource:sourceTarget:points=sourceDir.y===currDir?sourceTarget:targetSource,sourcePosition===targetPosition){const diff=Math.abs(source[dirAccessor]-target[dirAccessor]);if(diff<=offset2){const gapOffset=Math.min(offset2-1,offset2-diff);sourceDir[dirAccessor]===currDir?sourceGapOffset[dirAccessor]=(sourceGapped[dirAccessor]>source[dirAccessor]?-1:1)*gapOffset:targetGapOffset[dirAccessor]=(targetGapped[dirAccessor]>target[dirAccessor]?-1:1)*gapOffset}}if(sourcePosition!==targetPosition){const dirAccessorOpposite=dirAccessor==="x"?"y":"x",isSameDir=sourceDir[dirAccessor]===targetDir[dirAccessorOpposite],sourceGtTargetOppo=sourceGapped[dirAccessorOpposite]>targetGapped[dirAccessorOpposite],sourceLtTargetOppo=sourceGapped[dirAccessorOpposite]<targetGapped[dirAccessorOpposite];(sourceDir[dirAccessor]===1&&(!isSameDir&&sourceGtTargetOppo||isSameDir&&sourceLtTargetOppo)||sourceDir[dirAccessor]!==1&&(!isSameDir&&sourceLtTargetOppo||isSameDir&&sourceGtTargetOppo))&&(points=dirAccessor==="x"?sourceTarget:targetSource)}const sourceGapPoint={x:sourceGapped.x+sourceGapOffset.x,y:sourceGapped.y+sourceGapOffset.y},targetGapPoint={x:targetGapped.x+targetGapOffset.x,y:targetGapped.y+targetGapOffset.y},maxXDistance=Math.max(Math.abs(sourceGapPoint.x-points[0].x),Math.abs(targetGapPoint.x-points[0].x)),maxYDistance=Math.max(Math.abs(sourceGapPoint.y-points[0].y),Math.abs(targetGapPoint.y-points[0].y));maxXDistance>=maxYDistance?(centerX=(sourceGapPoint.x+targetGapPoint.x)/2,centerY=points[0].y):(centerX=points[0].x,centerY=(sourceGapPoint.y+targetGapPoint.y)/2)}return[[source,{x:sourceGapped.x+sourceGapOffset.x,y:sourceGapped.y+sourceGapOffset.y},...points,{x:targetGapped.x+targetGapOffset.x,y:targetGapped.y+targetGapOffset.y},target],centerX,centerY,defaultOffsetX,defaultOffsetY]}function getBend(a2,b2,c2,size2){const bendSize=Math.min(distance(a2,b2)/2,distance(b2,c2)/2,size2),{x:x2,y:y2}=b2;if(a2.x===x2&&x2===c2.x||a2.y===y2&&y2===c2.y)return`L${x2} ${y2}`;if(a2.y===y2){const xDir2=a2.x<c2.x?-1:1,yDir2=a2.y<c2.y?1:-1;return`L ${x2+bendSize*xDir2},${y2}Q ${x2},${y2} ${x2},${y2+bendSize*yDir2}`}const xDir=a2.x<c2.x?1:-1,yDir=a2.y<c2.y?-1:1;return`L ${x2},${y2+bendSize*yDir}Q ${x2},${y2} ${x2+bendSize*xDir},${y2}`}function getSmoothStepPath({sourceX,sourceY,sourcePosition=Position.Bottom,targetX,targetY,targetPosition=Position.Top,borderRadius=5,centerX,centerY,offset:offset2=20}){const[points,labelX,labelY,offsetX,offsetY]=getPoints({source:{x:sourceX,y:sourceY},sourcePosition,target:{x:targetX,y:targetY},targetPosition,center:{x:centerX,y:centerY},offset:offset2});return[points.reduce((res,p2,i2)=>{let segment="";return i2>0&&i2<points.length-1?segment=getBend(points[i2-1],p2,points[i2+1],borderRadius):segment=`${i2===0?"M":"L"}${p2.x} ${p2.y}`,res+=segment,res},""),labelX,labelY,offsetX,offsetY]}function isNodeInitialized(node){return node&&!!(node.internals.handleBounds||node.handles?.length)&&!!(node.measured.width||node.width||node.initialWidth)}function getEdgePosition(params){const{sourceNode,targetNode}=params;if(!isNodeInitialized(sourceNode)||!isNodeInitialized(targetNode))return null;const sourceHandleBounds=sourceNode.internals.handleBounds||toHandleBounds(sourceNode.handles),targetHandleBounds=targetNode.internals.handleBounds||toHandleBounds(targetNode.handles),sourceHandle=getHandle(sourceHandleBounds?.source??[],params.sourceHandle),targetHandle=getHandle(params.connectionMode===ConnectionMode.Strict?targetHandleBounds?.target??[]:(targetHandleBounds?.target??[]).concat(targetHandleBounds?.source??[]),params.targetHandle);if(!sourceHandle||!targetHandle)return params.onError?.("008",errorMessages.error008(sourceHandle?"target":"source",{id:params.id,sourceHandle:params.sourceHandle,targetHandle:params.targetHandle})),null;const sourcePosition=sourceHandle?.position||Position.Bottom,targetPosition=targetHandle?.position||Position.Top,source=getHandlePosition(sourceNode,sourceHandle,sourcePosition),target=getHandlePosition(targetNode,targetHandle,targetPosition);return{sourceX:source.x,sourceY:source.y,targetX:target.x,targetY:target.y,sourcePosition,targetPosition}}function toHandleBounds(handles){if(!handles)return null;const source=[],target=[];for(const handle of handles)handle.width=handle.width??1,handle.height=handle.height??1,handle.type==="source"?source.push(handle):handle.type==="target"&&target.push(handle);return{source,target}}function getHandlePosition(node,handle,fallbackPosition=Position.Left,center=!1){const x2=(handle?.x??0)+node.internals.positionAbsolute.x,y2=(handle?.y??0)+node.internals.positionAbsolute.y,{width,height}=handle??getNodeDimensions(node);if(center)return{x:x2+width/2,y:y2+height/2};switch(handle?.position??fallbackPosition){case Position.Top:return{x:x2+width/2,y:y2};case Position.Right:return{x:x2+width,y:y2+height/2};case Position.Bottom:return{x:x2+width/2,y:y2+height};case Position.Left:return{x:x2,y:y2+height/2}}}function getHandle(bounds,handleId){return bounds&&(handleId?bounds.find(d2=>d2.id===handleId):bounds[0])||null}function getMarkerId(marker,id2){return marker?typeof marker=="string"?marker:`${id2?`${id2}__`:""}${Object.keys(marker).sort().map(key=>`${key}=${marker[key]}`).join("&")}`:""}function createMarkerIds(edges,{id:id2,defaultColor,defaultMarkerStart,defaultMarkerEnd}){const ids=new Set;return edges.reduce((markers,edge)=>([edge.markerStart||defaultMarkerStart,edge.markerEnd||defaultMarkerEnd].forEach(marker=>{if(marker&&typeof marker=="object"){const markerId=getMarkerId(marker,id2);ids.has(markerId)||(markers.push({id:markerId,color:marker.color||defaultColor,...marker}),ids.add(markerId))}}),markers),[]).sort((a2,b2)=>a2.id.localeCompare(b2.id))}const defaultOptions={nodeOrigin:[0,0],elevateNodesOnSelect:!0,defaults:{}},adoptUserNodesDefaultOptions={...defaultOptions,checkEquality:!0};function updateAbsolutePositions(nodeLookup,parentLookup,options){const _options={...defaultOptions,...options};for(const node of nodeLookup.values())node.parentId&&updateChildPosition(node,nodeLookup,parentLookup,_options)}function adoptUserNodes(nodes,nodeLookup,parentLookup,options){const _options={...adoptUserNodesDefaultOptions,...options},tmpLookup=new Map(nodeLookup);nodeLookup.clear(),parentLookup.clear();const selectedNodeZ=options?.elevateNodesOnSelect?1e3:0;for(const userNode of nodes){let internalNode=tmpLookup.get(userNode.id);_options.checkEquality&&userNode===internalNode?.internals.userNode||(internalNode={..._options.defaults,...userNode,measured:{width:userNode.measured?.width,height:userNode.measured?.height},internals:{positionAbsolute:getNodePositionWithOrigin(userNode,_options.nodeOrigin),handleBounds:userNode.measured?internalNode?.internals.handleBounds:void 0,z:calculateZ(userNode,selectedNodeZ),userNode}}),nodeLookup.set(userNode.id,internalNode),userNode.parentId&&updateChildPosition(internalNode,nodeLookup,parentLookup,options)}}function updateChildPosition(node,nodeLookup,parentLookup,options){const _options={...defaultOptions,...options},parentId=node.parentId,parentNode=nodeLookup.get(parentId);if(!parentNode){console.warn(`Parent node ${parentId} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}const childNodes=parentLookup.get(parentId);childNodes?childNodes.set(node.id,node):parentLookup.set(parentId,new Map([[node.id,node]]));const selectedNodeZ=options?.elevateNodesOnSelect?1e3:0,{x:x2,y:y2,z}=calculateChildXYZ(node,parentNode,_options.nodeOrigin,selectedNodeZ),currPosition=node.internals.positionAbsolute,positionChanged=x2!==currPosition.x||y2!==currPosition.y;(positionChanged||z!==node.internals.z)&&(node.internals={...node.internals,positionAbsolute:positionChanged?{x:x2,y:y2}:currPosition,z})}function calculateZ(node,selectedNodeZ){return(isNumeric(node.zIndex)?node.zIndex:0)+(node.selected?selectedNodeZ:0)}function calculateChildXYZ(childNode,parentNode,nodeOrigin,selectedNodeZ){const position=getNodePositionWithOrigin(childNode,nodeOrigin),childZ=calculateZ(childNode,selectedNodeZ),parentZ=parentNode.internals.z??0;return{x:parentNode.internals.positionAbsolute.x+position.x,y:parentNode.internals.positionAbsolute.y+position.y,z:parentZ>childZ?parentZ:childZ}}function handleExpandParent(children2,nodeLookup,parentLookup,nodeOrigin=[0,0]){const changes=[],parentExpansions=new Map;for(const child of children2){const parent=nodeLookup.get(child.parentId);if(!parent)continue;const parentRect=parentExpansions.get(child.parentId)?.expandedRect??nodeToRect(parent),expandedRect=getBoundsOfRects(parentRect,child.rect);parentExpansions.set(child.parentId,{expandedRect,parent})}return parentExpansions.size>0&&parentExpansions.forEach(({expandedRect,parent},parentId)=>{const positionAbsolute=parent.internals.positionAbsolute,dimensions=getNodeDimensions(parent),origin=parent.origin??nodeOrigin,xChange=expandedRect.x<positionAbsolute.x?Math.round(Math.abs(positionAbsolute.x-expandedRect.x)):0,yChange=expandedRect.y<positionAbsolute.y?Math.round(Math.abs(positionAbsolute.y-expandedRect.y)):0,newWidth=Math.max(dimensions.width,Math.round(expandedRect.width)),newHeight=Math.max(dimensions.height,Math.round(expandedRect.height)),widthChange=(newWidth-dimensions.width)*origin[0],heightChange=(newHeight-dimensions.height)*origin[1];(xChange>0||yChange>0||widthChange||heightChange)&&(changes.push({id:parentId,type:"position",position:{x:parent.position.x-xChange+widthChange,y:parent.position.y-yChange+heightChange}}),parentLookup.get(parentId)?.forEach(childNode=>{children2.some(child=>child.id===childNode.id)||changes.push({id:childNode.id,type:"position",position:{x:childNode.position.x+xChange,y:childNode.position.y+yChange}})})),(dimensions.width<expandedRect.width||dimensions.height<expandedRect.height||xChange||yChange)&&changes.push({id:parentId,type:"dimensions",setAttributes:!0,dimensions:{width:newWidth+(xChange?origin[0]*xChange-widthChange:0),height:newHeight+(yChange?origin[1]*yChange-heightChange:0)}})}),changes}function updateNodeInternals(updates,nodeLookup,parentLookup,domNode,nodeOrigin){const viewportNode=domNode?.querySelector(".xyflow__viewport");let updatedInternals=!1;if(!viewportNode)return{changes:[],updatedInternals};const changes=[],style2=window.getComputedStyle(viewportNode),{m22:zoom2}=new window.DOMMatrixReadOnly(style2.transform),parentExpandChildren=[];for(const update of updates.values()){const node=nodeLookup.get(update.id);if(node)if(node.hidden)node.internals={...node.internals,handleBounds:void 0},updatedInternals=!0;else{const dimensions=getDimensions(update.nodeElement),dimensionChanged=node.measured.width!==dimensions.width||node.measured.height!==dimensions.height;if(!!(dimensions.width&&dimensions.height&&(dimensionChanged||!node.internals.handleBounds||update.force))){const nodeBounds=update.nodeElement.getBoundingClientRect();node.measured=dimensions,node.internals={...node.internals,positionAbsolute:getNodePositionWithOrigin(node,nodeOrigin),handleBounds:{source:getHandleBounds("source",update.nodeElement,nodeBounds,zoom2,node.id),target:getHandleBounds("target",update.nodeElement,nodeBounds,zoom2,node.id)}},node.parentId&&updateChildPosition(node,nodeLookup,parentLookup,{nodeOrigin}),updatedInternals=!0,dimensionChanged&&(changes.push({id:node.id,type:"dimensions",dimensions}),node.expandParent&&node.parentId&&parentExpandChildren.push({id:node.id,parentId:node.parentId,rect:nodeToRect(node,nodeOrigin)}))}}}if(parentExpandChildren.length>0){const parentExpandChanges=handleExpandParent(parentExpandChildren,nodeLookup,parentLookup,nodeOrigin);changes.push(...parentExpandChanges)}return{changes,updatedInternals}}async function panBy({delta,panZoom,transform:transform2,translateExtent,width,height}){if(!panZoom||!delta.x&&!delta.y)return Promise.resolve(!1);const nextViewport=await panZoom.setViewportConstrained({x:transform2[0]+delta.x,y:transform2[1]+delta.y,zoom:transform2[2]},[[0,0],[width,height]],translateExtent),transformChanged=!!nextViewport&&(nextViewport.x!==transform2[0]||nextViewport.y!==transform2[1]||nextViewport.k!==transform2[2]);return Promise.resolve(transformChanged)}function updateConnectionLookup(connectionLookup,edgeLookup,edges){connectionLookup.clear(),edgeLookup.clear();for(const edge of edges){const{source,target,sourceHandle=null,targetHandle=null}=edge,sourceKey=`${source}-source-${sourceHandle}`,targetKey=`${target}-target-${targetHandle}`,prevSource=connectionLookup.get(sourceKey)||new Map,prevTarget=connectionLookup.get(targetKey)||new Map,connection={edgeId:edge.id,source,target,sourceHandle,targetHandle};edgeLookup.set(edge.id,edge),connectionLookup.set(sourceKey,prevSource.set(`${target}-${targetHandle}`,connection)),connectionLookup.set(targetKey,prevTarget.set(`${source}-${sourceHandle}`,connection))}}function shallowNodeData(a2,b2){if(a2===null||b2===null)return!1;const _a=Array.isArray(a2)?a2:[a2],_b=Array.isArray(b2)?b2:[b2];if(_a.length!==_b.length)return!1;for(let i2=0;i2<_a.length;i2++)if(_a[i2].id!==_b[i2].id||_a[i2].type!==_b[i2].type||!Object.is(_a[i2].data,_b[i2].data))return!1;return!0}function isParentSelected(node,nodeLookup){if(!node.parentId)return!1;const parentNode=nodeLookup.get(node.parentId);return parentNode?parentNode.selected?!0:isParentSelected(parentNode,nodeLookup):!1}function hasSelector(target,selector2,domNode){let current=target;do{if(current?.matches(selector2))return!0;if(current===domNode)return!1;current=current.parentElement}while(current);return!1}function getDragItems(nodeLookup,nodesDraggable,mousePos,nodeId){const dragItems=new Map;for(const[id2,node]of nodeLookup)if((node.selected||node.id===nodeId)&&(!node.parentId||!isParentSelected(node,nodeLookup))&&(node.draggable||nodesDraggable&&typeof node.draggable>"u")){const internalNode=nodeLookup.get(id2);internalNode&&dragItems.set(id2,{id:id2,position:internalNode.position||{x:0,y:0},distance:{x:mousePos.x-internalNode.internals.positionAbsolute.x,y:mousePos.y-internalNode.internals.positionAbsolute.y},extent:internalNode.extent,parentId:internalNode.parentId,origin:internalNode.origin,expandParent:internalNode.expandParent,internals:{positionAbsolute:internalNode.internals.positionAbsolute||{x:0,y:0}},measured:{width:internalNode.measured.width??0,height:internalNode.measured.height??0}})}return dragItems}function getEventHandlerParams({nodeId,dragItems,nodeLookup,dragging=!0}){const nodesFromDragItems=[];for(const[id2,dragItem]of dragItems){const node2=nodeLookup.get(id2)?.internals.userNode;node2&&nodesFromDragItems.push({...node2,position:dragItem.position,dragging})}if(!nodeId)return[nodesFromDragItems[0],nodesFromDragItems];const node=nodeLookup.get(nodeId).internals.userNode;return[{...node,position:dragItems.get(nodeId)?.position||node.position,dragging},nodesFromDragItems]}function XYDrag({onNodeMouseDown,getStoreItems,onDragStart,onDrag,onDragStop}){let lastPos={x:null,y:null},autoPanId=0,dragItems=new Map,autoPanStarted=!1,mousePosition={x:0,y:0},containerBounds=null,dragStarted=!1,d3Selection=null,abortDrag=!1;function update({noDragClassName,handleSelector,domNode,isSelectable,nodeId,nodeClickDistance=0}){d3Selection=select(domNode);function updateNodes({x:x2,y:y2},dragEvent){const{nodeLookup,nodeExtent,snapGrid,snapToGrid,nodeOrigin,onNodeDrag,onSelectionDrag,onError,updateNodePositions}=getStoreItems();lastPos={x:x2,y:y2};let hasChange=!1,nodesBox={x:0,y:0,x2:0,y2:0};if(dragItems.size>1&&nodeExtent){const rect=getInternalNodesBounds(dragItems);nodesBox=rectToBox(rect)}for(const[id2,dragItem]of dragItems){let nextPosition={x:x2-dragItem.distance.x,y:y2-dragItem.distance.y};snapToGrid&&(nextPosition=snapPosition(nextPosition,snapGrid));let adjustedNodeExtent=[[nodeExtent[0][0],nodeExtent[0][1]],[nodeExtent[1][0],nodeExtent[1][1]]];if(dragItems.size>1&&nodeExtent&&!dragItem.extent){const{positionAbsolute:positionAbsolute2}=dragItem.internals,x1=positionAbsolute2.x-nodesBox.x+nodeExtent[0][0],x22=positionAbsolute2.x+dragItem.measured.width-nodesBox.x2+nodeExtent[1][0],y1=positionAbsolute2.y-nodesBox.y+nodeExtent[0][1],y22=positionAbsolute2.y+dragItem.measured.height-nodesBox.y2+nodeExtent[1][1];adjustedNodeExtent=[[x1,y1],[x22,y22]]}const{position,positionAbsolute}=calculateNodePosition({nodeId:id2,nextPosition,nodeLookup,nodeExtent:adjustedNodeExtent,nodeOrigin,onError});hasChange=hasChange||dragItem.position.x!==position.x||dragItem.position.y!==position.y,dragItem.position=position,dragItem.internals.positionAbsolute=positionAbsolute}if(hasChange&&(updateNodePositions(dragItems,!0),dragEvent&&(onDrag||onNodeDrag||!nodeId&&onSelectionDrag))){const[currentNode,currentNodes]=getEventHandlerParams({nodeId,dragItems,nodeLookup});onDrag?.(dragEvent,dragItems,currentNode,currentNodes),onNodeDrag?.(dragEvent,currentNode,currentNodes),nodeId||onSelectionDrag?.(dragEvent,currentNodes)}}async function autoPan(){if(!containerBounds)return;const{transform:transform2,panBy:panBy2,autoPanSpeed}=getStoreItems(),[xMovement,yMovement]=calcAutoPan(mousePosition,containerBounds,autoPanSpeed);(xMovement!==0||yMovement!==0)&&(lastPos.x=(lastPos.x??0)-xMovement/transform2[2],lastPos.y=(lastPos.y??0)-yMovement/transform2[2],await panBy2({x:xMovement,y:yMovement})&&updateNodes(lastPos,null)),autoPanId=requestAnimationFrame(autoPan)}function startDrag(event){const{nodeLookup,multiSelectionActive,nodesDraggable,transform:transform2,snapGrid,snapToGrid,selectNodesOnDrag,onNodeDragStart,onSelectionDragStart,unselectNodesAndEdges}=getStoreItems();dragStarted=!0,(!selectNodesOnDrag||!isSelectable)&&!multiSelectionActive&&nodeId&&(nodeLookup.get(nodeId)?.selected||unselectNodesAndEdges()),isSelectable&&selectNodesOnDrag&&nodeId&&onNodeMouseDown?.(nodeId);const pointerPos=getPointerPosition(event.sourceEvent,{transform:transform2,snapGrid,snapToGrid});if(lastPos=pointerPos,dragItems=getDragItems(nodeLookup,nodesDraggable,pointerPos,nodeId),dragItems.size>0&&(onDragStart||onNodeDragStart||!nodeId&&onSelectionDragStart)){const[currentNode,currentNodes]=getEventHandlerParams({nodeId,dragItems,nodeLookup});onDragStart?.(event.sourceEvent,dragItems,currentNode,currentNodes),onNodeDragStart?.(event.sourceEvent,currentNode,currentNodes),nodeId||onSelectionDragStart?.(event.sourceEvent,currentNodes)}}const d3DragInstance=drag().clickDistance(nodeClickDistance).on("start",event=>{const{domNode:domNode2,nodeDragThreshold,transform:transform2,snapGrid,snapToGrid}=getStoreItems();abortDrag=!1,nodeDragThreshold===0&&startDrag(event),lastPos=getPointerPosition(event.sourceEvent,{transform:transform2,snapGrid,snapToGrid}),containerBounds=domNode2?.getBoundingClientRect()||null,mousePosition=getEventPosition(event.sourceEvent,containerBounds)}).on("drag",event=>{const{autoPanOnNodeDrag,transform:transform2,snapGrid,snapToGrid,nodeDragThreshold}=getStoreItems(),pointerPos=getPointerPosition(event.sourceEvent,{transform:transform2,snapGrid,snapToGrid});if(event.sourceEvent.type==="touchmove"&&event.sourceEvent.touches.length>1&&(abortDrag=!0),!abortDrag){if(!autoPanStarted&&autoPanOnNodeDrag&&dragStarted&&(autoPanStarted=!0,autoPan()),!dragStarted){const x2=pointerPos.xSnapped-(lastPos.x??0),y2=pointerPos.ySnapped-(lastPos.y??0);Math.sqrt(x2*x2+y2*y2)>nodeDragThreshold&&startDrag(event)}(lastPos.x!==pointerPos.xSnapped||lastPos.y!==pointerPos.ySnapped)&&dragItems&&dragStarted&&(mousePosition=getEventPosition(event.sourceEvent,containerBounds),updateNodes(pointerPos,event.sourceEvent))}}).on("end",event=>{if(!(!dragStarted||abortDrag)&&(autoPanStarted=!1,dragStarted=!1,cancelAnimationFrame(autoPanId),dragItems.size>0)){const{nodeLookup,updateNodePositions,onNodeDragStop,onSelectionDragStop}=getStoreItems();if(updateNodePositions(dragItems,!1),onDragStop||onNodeDragStop||!nodeId&&onSelectionDragStop){const[currentNode,currentNodes]=getEventHandlerParams({nodeId,dragItems,nodeLookup,dragging:!1});onDragStop?.(event.sourceEvent,dragItems,currentNode,currentNodes),onNodeDragStop?.(event.sourceEvent,currentNode,currentNodes),nodeId||onSelectionDragStop?.(event.sourceEvent,currentNodes)}}}).filter(event=>{const target=event.target;return!event.button&&(!noDragClassName||!hasSelector(target,`.${noDragClassName}`,domNode))&&(!handleSelector||hasSelector(target,handleSelector,domNode))});d3Selection.call(d3DragInstance)}function destroy(){d3Selection?.on(".drag",null)}return{update,destroy}}function getHandles(node,handleBounds,type,currentHandle){let excludedHandle=null;return[(handleBounds[type]||[]).reduce((res,handle)=>{if(node.id===currentHandle.nodeId&&type===currentHandle.handleType&&handle.id===currentHandle.handleId)excludedHandle=handle;else{const handleXY=getHandlePosition(node,handle,handle.position,!0);res.push({...handle,...handleXY})}return res},[]),excludedHandle]}function getClosestHandle(pos,connectionRadius,handleLookup){let closestHandles=[],minDistance=1/0;for(const handle of handleLookup.values()){const distance2=Math.sqrt(Math.pow(handle.x-pos.x,2)+Math.pow(handle.y-pos.y,2));distance2<=connectionRadius&&(distance2<minDistance?closestHandles=[handle]:distance2===minDistance&&closestHandles.push(handle),minDistance=distance2)}return closestHandles.length?closestHandles.length===1?closestHandles[0]:closestHandles.find(handle=>handle.type==="target")||closestHandles[0]:null}function getHandleLookup({nodeLookup,nodeId,handleId,handleType}){const connectionHandles=new Map,currentHandle={nodeId,handleId,handleType};let matchingHandle=null;for(const node of nodeLookup.values())if(node.internals.handleBounds){const[sourceHandles,excludedSource]=getHandles(node,node.internals.handleBounds,"source",currentHandle),[targetHandles,excludedTarget]=getHandles(node,node.internals.handleBounds,"target",currentHandle);matchingHandle=matchingHandle||(excludedSource??excludedTarget),[...sourceHandles,...targetHandles].forEach(handle=>connectionHandles.set(`${handle.nodeId}-${handle.type}-${handle.id}`,handle))}if(!matchingHandle){const node=nodeLookup.get(nodeId);if(node?.internals.handleBounds){currentHandle.handleType=handleType==="source"?"target":"source";const[,excluded]=getHandles(node,node.internals.handleBounds,currentHandle.handleType,currentHandle);matchingHandle=excluded}}return[connectionHandles,matchingHandle]}function getHandleType(edgeUpdaterType,handleDomNode){return edgeUpdaterType||(handleDomNode?.classList.contains("target")?"target":handleDomNode?.classList.contains("source")?"source":null)}function isConnectionValid(isInsideConnectionRadius,isHandleValid){let isValid=null;return isHandleValid?isValid=!0:isInsideConnectionRadius&&!isHandleValid&&(isValid=!1),isValid}const alwaysValid=()=>!0;function onPointerDown(event,{connectionMode,connectionRadius,handleId,nodeId,edgeUpdaterType,isTarget,domNode,nodeLookup,lib,autoPanOnConnect,flowId,panBy:panBy2,cancelConnection,onConnectStart,onConnect,onConnectEnd,isValidConnection=alwaysValid,onReconnectEnd,updateConnection,getTransform,getFromHandle,autoPanSpeed}){const doc=getHostForElement(event.target);let autoPanId=0,closestHandle;const{x:x2,y:y2}=getEventPosition(event),clickedHandle=doc?.elementFromPoint(x2,y2),handleType=getHandleType(edgeUpdaterType,clickedHandle),containerBounds=domNode?.getBoundingClientRect();if(!containerBounds||!handleType)return;let position=getEventPosition(event,containerBounds),autoPanStarted=!1,connection=null,isValid=!1,handleDomNode=null;const[handleLookup,fromHandleInternal]=getHandleLookup({nodeLookup,nodeId,handleId,handleType});function autoPan(){if(!autoPanOnConnect||!containerBounds)return;const[x22,y22]=calcAutoPan(position,containerBounds,autoPanSpeed);panBy2({x:x22,y:y22}),autoPanId=requestAnimationFrame(autoPan)}const fromHandle={...fromHandleInternal,nodeId,type:handleType,position:fromHandleInternal.position},fromNodeInternal=nodeLookup.get(nodeId),newConnection={inProgress:!0,isValid:null,from:getHandlePosition(fromNodeInternal,fromHandle,Position.Left,!0),fromHandle,fromPosition:fromHandle.position,fromNode:fromNodeInternal,to:position,toHandle:null,toPosition:oppositePosition[fromHandle.position],toNode:null};updateConnection(newConnection);let previousConnection=newConnection;onConnectStart?.(event,{nodeId,handleId,handleType});function onPointerMove(event2){if(!getFromHandle()||!fromHandle){onPointerUp(event2);return}const transform2=getTransform();position=getEventPosition(event2,containerBounds),closestHandle=getClosestHandle(pointToRendererPoint(position,transform2,!1,[1,1]),connectionRadius,handleLookup),autoPanStarted||(autoPan(),autoPanStarted=!0);const result=isValidHandle(event2,{handle:closestHandle,connectionMode,fromNodeId:nodeId,fromHandleId:handleId,fromType:isTarget?"target":"source",isValidConnection,doc,lib,flowId,handleLookup});handleDomNode=result.handleDomNode,connection=result.connection,isValid=isConnectionValid(!!closestHandle,result.isValid);const newConnection2={...previousConnection,isValid,to:closestHandle&&isValid?rendererPointToPoint({x:closestHandle.x,y:closestHandle.y},transform2):position,toHandle:result.toHandle,toPosition:isValid&&result.toHandle?result.toHandle.position:oppositePosition[fromHandle.position],toNode:result.toHandle?nodeLookup.get(result.toHandle.nodeId):null};isValid&&closestHandle&&previousConnection.toHandle&&newConnection2.toHandle&&previousConnection.toHandle.type===newConnection2.toHandle.type&&previousConnection.toHandle.nodeId===newConnection2.toHandle.nodeId&&previousConnection.toHandle.id===newConnection2.toHandle.id||(updateConnection(newConnection2),previousConnection=newConnection2)}function onPointerUp(event2){(closestHandle||handleDomNode)&&connection&&isValid&&onConnect?.(connection),onConnectEnd?.(event2),edgeUpdaterType&&onReconnectEnd?.(event2),cancelConnection(),cancelAnimationFrame(autoPanId),autoPanStarted=!1,isValid=!1,connection=null,handleDomNode=null,doc.removeEventListener("mousemove",onPointerMove),doc.removeEventListener("mouseup",onPointerUp),doc.removeEventListener("touchmove",onPointerMove),doc.removeEventListener("touchend",onPointerUp)}doc.addEventListener("mousemove",onPointerMove),doc.addEventListener("mouseup",onPointerUp),doc.addEventListener("touchmove",onPointerMove),doc.addEventListener("touchend",onPointerUp)}function isValidHandle(event,{handle,connectionMode,fromNodeId,fromHandleId,fromType,doc,lib,flowId,isValidConnection=alwaysValid,handleLookup}){const isTarget=fromType==="target",handleDomNode=handle?doc.querySelector(`.${lib}-flow__handle[data-id="${flowId}-${handle?.nodeId}-${handle?.id}-${handle?.type}"]`):null,{x:x2,y:y2}=getEventPosition(event),handleBelow=doc.elementFromPoint(x2,y2),handleToCheck=handleBelow?.classList.contains(`${lib}-flow__handle`)?handleBelow:handleDomNode,result={handleDomNode:handleToCheck,isValid:!1,connection:null,toHandle:null};if(handleToCheck){const handleType=getHandleType(void 0,handleToCheck),handleNodeId=handleToCheck.getAttribute("data-nodeid"),handleId=handleToCheck.getAttribute("data-handleid"),connectable=handleToCheck.classList.contains("connectable"),connectableEnd=handleToCheck.classList.contains("connectableend");if(!handleNodeId)return result;const connection={source:isTarget?handleNodeId:fromNodeId,sourceHandle:isTarget?handleId:fromHandleId,target:isTarget?fromNodeId:handleNodeId,targetHandle:isTarget?fromHandleId:handleId};result.connection=connection;const isValid=connectable&&connectableEnd&&(connectionMode===ConnectionMode.Strict?isTarget&&handleType==="source"||!isTarget&&handleType==="target":handleNodeId!==fromNodeId||handleId!==fromHandleId);result.isValid=isValid&&isValidConnection(connection);const toHandle=handleLookup?.get(`${handleNodeId}-${handleType}-${handleId}`);toHandle&&(result.toHandle={...toHandle})}return result}const XYHandle={onPointerDown,isValid:isValidHandle};function XYMinimap({domNode,panZoom,getTransform,getViewScale}){const selection2=select(domNode);function update({translateExtent,width,height,zoomStep=10,pannable=!0,zoomable=!0,inversePan=!1}){const zoomHandler=event=>{const transform2=getTransform();if(event.sourceEvent.type!=="wheel"||!panZoom)return;const pinchDelta=-event.sourceEvent.deltaY*(event.sourceEvent.deltaMode===1?.05:event.sourceEvent.deltaMode?1:.002)*zoomStep,nextZoom=transform2[2]*Math.pow(2,pinchDelta);panZoom.scaleTo(nextZoom)};let panStart=[0,0];const panStartHandler=event=>{(event.sourceEvent.type==="mousedown"||event.sourceEvent.type==="touchstart")&&(panStart=[event.sourceEvent.clientX??event.sourceEvent.touches[0].clientX,event.sourceEvent.clientY??event.sourceEvent.touches[0].clientY])},panHandler=event=>{const transform2=getTransform();if(event.sourceEvent.type!=="mousemove"&&event.sourceEvent.type!=="touchmove"||!panZoom)return;const panCurrent=[event.sourceEvent.clientX??event.sourceEvent.touches[0].clientX,event.sourceEvent.clientY??event.sourceEvent.touches[0].clientY],panDelta=[panCurrent[0]-panStart[0],panCurrent[1]-panStart[1]];panStart=panCurrent;const moveScale=getViewScale()*Math.max(transform2[2],Math.log(transform2[2]))*(inversePan?-1:1),position={x:transform2[0]-panDelta[0]*moveScale,y:transform2[1]-panDelta[1]*moveScale},extent=[[0,0],[width,height]];panZoom.setViewportConstrained({x:position.x,y:position.y,zoom:transform2[2]},extent,translateExtent)},zoomAndPanHandler=zoom().on("start",panStartHandler).on("zoom",pannable?panHandler:null).on("zoom.wheel",zoomable?zoomHandler:null);selection2.call(zoomAndPanHandler,{})}function destroy(){selection2.on("zoom",null)}return{update,destroy,pointer}}const viewChanged=(prevViewport,eventViewport)=>prevViewport.x!==eventViewport.x||prevViewport.y!==eventViewport.y||prevViewport.zoom!==eventViewport.k,transformToViewport=transform2=>({x:transform2.x,y:transform2.y,zoom:transform2.k}),viewportToTransform=({x:x2,y:y2,zoom:zoom2})=>identity$1.translate(x2,y2).scale(zoom2),isWrappedWithClass=(event,className)=>event.target.closest(`.${className}`),isRightClickPan=(panOnDrag,usedButton)=>usedButton===2&&Array.isArray(panOnDrag)&&panOnDrag.includes(2),getD3Transition=(selection2,duration=0,onEnd=()=>{})=>{const hasDuration=typeof duration=="number"&&duration>0;return hasDuration||onEnd(),hasDuration?selection2.transition().duration(duration).on("end",onEnd):selection2},wheelDelta=event=>{const factor=event.ctrlKey&&isMacOs()?10:1;return-event.deltaY*(event.deltaMode===1?.05:event.deltaMode?1:.002)*factor};function createPanOnScrollHandler({zoomPanValues,noWheelClassName,d3Selection,d3Zoom,panOnScrollMode,panOnScrollSpeed,zoomOnPinch,onPanZoomStart,onPanZoom,onPanZoomEnd}){return event=>{if(isWrappedWithClass(event,noWheelClassName))return!1;event.preventDefault(),event.stopImmediatePropagation();const currentZoom=d3Selection.property("__zoom").k||1;if(event.ctrlKey&&zoomOnPinch){const point2=pointer(event),pinchDelta=wheelDelta(event),zoom2=currentZoom*Math.pow(2,pinchDelta);d3Zoom.scaleTo(d3Selection,zoom2,point2,event);return}const deltaNormalize=event.deltaMode===1?20:1;let deltaX=panOnScrollMode===PanOnScrollMode.Vertical?0:event.deltaX*deltaNormalize,deltaY=panOnScrollMode===PanOnScrollMode.Horizontal?0:event.deltaY*deltaNormalize;!isMacOs()&&event.shiftKey&&panOnScrollMode!==PanOnScrollMode.Vertical&&(deltaX=event.deltaY*deltaNormalize,deltaY=0),d3Zoom.translateBy(d3Selection,-(deltaX/currentZoom)*panOnScrollSpeed,-(deltaY/currentZoom)*panOnScrollSpeed,{internal:!0});const nextViewport=transformToViewport(d3Selection.property("__zoom"));clearTimeout(zoomPanValues.panScrollTimeout),zoomPanValues.isPanScrolling||(zoomPanValues.isPanScrolling=!0,onPanZoomStart?.(event,nextViewport)),zoomPanValues.isPanScrolling&&(onPanZoom?.(event,nextViewport),zoomPanValues.panScrollTimeout=setTimeout(()=>{onPanZoomEnd?.(event,nextViewport),zoomPanValues.isPanScrolling=!1},150))}}function createZoomOnScrollHandler({noWheelClassName,preventScrolling,d3ZoomHandler}){return function(event,d2){if(!preventScrolling&&event.type==="wheel"&&!event.ctrlKey||isWrappedWithClass(event,noWheelClassName))return null;event.preventDefault(),d3ZoomHandler.call(this,event,d2)}}function createPanZoomStartHandler({zoomPanValues,onDraggingChange,onPanZoomStart}){return event=>{if(event.sourceEvent?.internal)return;const viewport=transformToViewport(event.transform);zoomPanValues.mouseButton=event.sourceEvent?.button||0,zoomPanValues.isZoomingOrPanning=!0,zoomPanValues.prevViewport=viewport,event.sourceEvent?.type==="mousedown"&&onDraggingChange(!0),onPanZoomStart&&onPanZoomStart?.(event.sourceEvent,viewport)}}function createPanZoomHandler({zoomPanValues,panOnDrag,onPaneContextMenu,onTransformChange,onPanZoom}){return event=>{zoomPanValues.usedRightMouseButton=!!(onPaneContextMenu&&isRightClickPan(panOnDrag,zoomPanValues.mouseButton??0)),event.sourceEvent?.sync||onTransformChange([event.transform.x,event.transform.y,event.transform.k]),onPanZoom&&!event.sourceEvent?.internal&&onPanZoom?.(event.sourceEvent,transformToViewport(event.transform))}}function createPanZoomEndHandler({zoomPanValues,panOnDrag,panOnScroll,onDraggingChange,onPanZoomEnd,onPaneContextMenu}){return event=>{if(!event.sourceEvent?.internal&&(zoomPanValues.isZoomingOrPanning=!1,onPaneContextMenu&&isRightClickPan(panOnDrag,zoomPanValues.mouseButton??0)&&!zoomPanValues.usedRightMouseButton&&event.sourceEvent&&onPaneContextMenu(event.sourceEvent),zoomPanValues.usedRightMouseButton=!1,onDraggingChange(!1),onPanZoomEnd&&viewChanged(zoomPanValues.prevViewport,event.transform))){const viewport=transformToViewport(event.transform);zoomPanValues.prevViewport=viewport,clearTimeout(zoomPanValues.timerId),zoomPanValues.timerId=setTimeout(()=>{onPanZoomEnd?.(event.sourceEvent,viewport)},panOnScroll?150:0)}}}function createFilter({zoomActivationKeyPressed,zoomOnScroll,zoomOnPinch,panOnDrag,panOnScroll,zoomOnDoubleClick,userSelectionActive,noWheelClassName,noPanClassName,lib}){return event=>{const zoomScroll=zoomActivationKeyPressed||zoomOnScroll,pinchZoom=zoomOnPinch&&event.ctrlKey;if(event.button===1&&event.type==="mousedown"&&(isWrappedWithClass(event,`${lib}-flow__node`)||isWrappedWithClass(event,`${lib}-flow__edge`)))return!0;if(!panOnDrag&&!zoomScroll&&!panOnScroll&&!zoomOnDoubleClick&&!zoomOnPinch||userSelectionActive||isWrappedWithClass(event,noWheelClassName)&&event.type==="wheel"||isWrappedWithClass(event,noPanClassName)&&(event.type!=="wheel"||panOnScroll&&event.type==="wheel"&&!zoomActivationKeyPressed)||!zoomOnPinch&&event.ctrlKey&&event.type==="wheel")return!1;if(!zoomOnPinch&&event.type==="touchstart"&&event.touches?.length>1)return event.preventDefault(),!1;if(!zoomScroll&&!panOnScroll&&!pinchZoom&&event.type==="wheel"||!panOnDrag&&(event.type==="mousedown"||event.type==="touchstart")||Array.isArray(panOnDrag)&&!panOnDrag.includes(event.button)&&event.type==="mousedown")return!1;const buttonAllowed=Array.isArray(panOnDrag)&&panOnDrag.includes(event.button)||!event.button||event.button<=1;return(!event.ctrlKey||event.type==="wheel")&&buttonAllowed}}function XYPanZoom({domNode,minZoom,maxZoom,paneClickDistance,translateExtent,viewport,onPanZoom,onPanZoomStart,onPanZoomEnd,onTransformChange,onDraggingChange}){const zoomPanValues={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{x:0,y:0,zoom:0},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},bbox=domNode.getBoundingClientRect(),d3ZoomInstance=zoom().clickDistance(!isNumeric(paneClickDistance)||paneClickDistance<0?0:paneClickDistance).scaleExtent([minZoom,maxZoom]).translateExtent(translateExtent),d3Selection=select(domNode).call(d3ZoomInstance);setViewportConstrained({x:viewport.x,y:viewport.y,zoom:clamp$1(viewport.zoom,minZoom,maxZoom)},[[0,0],[bbox.width,bbox.height]],translateExtent);const d3ZoomHandler=d3Selection.on("wheel.zoom"),d3DblClickZoomHandler=d3Selection.on("dblclick.zoom");d3ZoomInstance.wheelDelta(wheelDelta);function setTransform(transform2,options){return d3Selection?new Promise(resolve=>{d3ZoomInstance?.transform(getD3Transition(d3Selection,options?.duration,()=>resolve(!0)),transform2)}):Promise.resolve(!1)}function update({noWheelClassName,noPanClassName,onPaneContextMenu,userSelectionActive,panOnScroll,panOnDrag,panOnScrollMode,panOnScrollSpeed,preventScrolling,zoomOnPinch,zoomOnScroll,zoomOnDoubleClick,zoomActivationKeyPressed,lib}){userSelectionActive&&!zoomPanValues.isZoomingOrPanning&&destroy();const wheelHandler=panOnScroll&&!zoomActivationKeyPressed&&!userSelectionActive?createPanOnScrollHandler({zoomPanValues,noWheelClassName,d3Selection,d3Zoom:d3ZoomInstance,panOnScrollMode,panOnScrollSpeed,zoomOnPinch,onPanZoomStart,onPanZoom,onPanZoomEnd}):createZoomOnScrollHandler({noWheelClassName,preventScrolling,d3ZoomHandler});if(d3Selection.on("wheel.zoom",wheelHandler,{passive:!1}),!userSelectionActive){const startHandler=createPanZoomStartHandler({zoomPanValues,onDraggingChange,onPanZoomStart});d3ZoomInstance.on("start",startHandler);const panZoomHandler=createPanZoomHandler({zoomPanValues,panOnDrag,onPaneContextMenu:!!onPaneContextMenu,onPanZoom,onTransformChange});d3ZoomInstance.on("zoom",panZoomHandler);const panZoomEndHandler=createPanZoomEndHandler({zoomPanValues,panOnDrag,panOnScroll,onPaneContextMenu,onPanZoomEnd,onDraggingChange});d3ZoomInstance.on("end",panZoomEndHandler)}const filter2=createFilter({zoomActivationKeyPressed,panOnDrag,zoomOnScroll,panOnScroll,zoomOnDoubleClick,zoomOnPinch,userSelectionActive,noPanClassName,noWheelClassName,lib});d3ZoomInstance.filter(filter2),zoomOnDoubleClick?d3Selection.on("dblclick.zoom",d3DblClickZoomHandler):d3Selection.on("dblclick.zoom",null)}function destroy(){d3ZoomInstance.on("zoom",null)}async function setViewportConstrained(viewport2,extent,translateExtent2){const nextTransform=viewportToTransform(viewport2),contrainedTransform=d3ZoomInstance?.constrain()(nextTransform,extent,translateExtent2);return contrainedTransform&&await setTransform(contrainedTransform),new Promise(resolve=>resolve(contrainedTransform))}async function setViewport(viewport2,options){const nextTransform=viewportToTransform(viewport2);return await setTransform(nextTransform,options),new Promise(resolve=>resolve(nextTransform))}function syncViewport(viewport2){if(d3Selection){const nextTransform=viewportToTransform(viewport2),currentTransform=d3Selection.property("__zoom");(currentTransform.k!==viewport2.zoom||currentTransform.x!==viewport2.x||currentTransform.y!==viewport2.y)&&d3ZoomInstance?.transform(d3Selection,nextTransform,null,{sync:!0})}}function getViewport(){const transform$1=d3Selection?transform(d3Selection.node()):{x:0,y:0,k:1};return{x:transform$1.x,y:transform$1.y,zoom:transform$1.k}}function scaleTo(zoom2,options){return d3Selection?new Promise(resolve=>{d3ZoomInstance?.scaleTo(getD3Transition(d3Selection,options?.duration,()=>resolve(!0)),zoom2)}):Promise.resolve(!1)}function scaleBy(factor,options){return d3Selection?new Promise(resolve=>{d3ZoomInstance?.scaleBy(getD3Transition(d3Selection,options?.duration,()=>resolve(!0)),factor)}):Promise.resolve(!1)}function setScaleExtent(scaleExtent){d3ZoomInstance?.scaleExtent(scaleExtent)}function setTranslateExtent(translateExtent2){d3ZoomInstance?.translateExtent(translateExtent2)}function setClickDistance(distance2){const validDistance=!isNumeric(distance2)||distance2<0?0:distance2;d3ZoomInstance?.clickDistance(validDistance)}return{update,destroy,setViewport,setViewportConstrained,getViewport,scaleTo,scaleBy,setScaleExtent,setTranslateExtent,syncViewport,setClickDistance}}var ResizeControlVariant;(function(ResizeControlVariant2){ResizeControlVariant2.Line="line",ResizeControlVariant2.Handle="handle"})(ResizeControlVariant||(ResizeControlVariant={}));function getResizeDirection({width,prevWidth,height,prevHeight,affectsX,affectsY}){const deltaWidth=width-prevWidth,deltaHeight=height-prevHeight,direction=[deltaWidth>0?1:deltaWidth<0?-1:0,deltaHeight>0?1:deltaHeight<0?-1:0];return deltaWidth&&affectsX&&(direction[0]=direction[0]*-1),deltaHeight&&affectsY&&(direction[1]=direction[1]*-1),direction}function getControlDirection(controlPosition){const isHorizontal=controlPosition.includes("right")||controlPosition.includes("left"),isVertical=controlPosition.includes("bottom")||controlPosition.includes("top"),affectsX=controlPosition.includes("left"),affectsY=controlPosition.includes("top");return{isHorizontal,isVertical,affectsX,affectsY}}function getLowerExtentClamp(lowerExtent,lowerBound){return Math.max(0,lowerBound-lowerExtent)}function getUpperExtentClamp(upperExtent,upperBound){return Math.max(0,upperExtent-upperBound)}function getSizeClamp(size2,minSize,maxSize){return Math.max(0,minSize-size2,size2-maxSize)}function xor(a2,b2){return a2?!b2:b2}function getDimensionsAfterResize(startValues,controlDirection,pointerPosition,boundaries,keepAspectRatio,nodeOrigin,extent,childExtent){let{affectsX,affectsY}=controlDirection;const{isHorizontal,isVertical}=controlDirection,isDiagonal=isHorizontal&&isVertical,{xSnapped,ySnapped}=pointerPosition,{minWidth,maxWidth,minHeight,maxHeight}=boundaries,{x:startX,y:startY,width:startWidth,height:startHeight,aspectRatio}=startValues;let distX=Math.floor(isHorizontal?xSnapped-startValues.pointerX:0),distY=Math.floor(isVertical?ySnapped-startValues.pointerY:0);const newWidth=startWidth+(affectsX?-distX:distX),newHeight=startHeight+(affectsY?-distY:distY),originOffsetX=-nodeOrigin[0]*startWidth,originOffsetY=-nodeOrigin[1]*startHeight;let clampX=getSizeClamp(newWidth,minWidth,maxWidth),clampY=getSizeClamp(newHeight,minHeight,maxHeight);if(extent){let xExtentClamp=0,yExtentClamp=0;affectsX&&distX<0?xExtentClamp=getLowerExtentClamp(startX+distX+originOffsetX,extent[0][0]):!affectsX&&distX>0&&(xExtentClamp=getUpperExtentClamp(startX+newWidth+originOffsetX,extent[1][0])),affectsY&&distY<0?yExtentClamp=getLowerExtentClamp(startY+distY+originOffsetY,extent[0][1]):!affectsY&&distY>0&&(yExtentClamp=getUpperExtentClamp(startY+newHeight+originOffsetY,extent[1][1])),clampX=Math.max(clampX,xExtentClamp),clampY=Math.max(clampY,yExtentClamp)}if(childExtent){let xExtentClamp=0,yExtentClamp=0;affectsX&&distX>0?xExtentClamp=getUpperExtentClamp(startX+distX,childExtent[0][0]):!affectsX&&distX<0&&(xExtentClamp=getLowerExtentClamp(startX+newWidth,childExtent[1][0])),affectsY&&distY>0?yExtentClamp=getUpperExtentClamp(startY+distY,childExtent[0][1]):!affectsY&&distY<0&&(yExtentClamp=getLowerExtentClamp(startY+newHeight,childExtent[1][1])),clampX=Math.max(clampX,xExtentClamp),clampY=Math.max(clampY,yExtentClamp)}if(keepAspectRatio){if(isHorizontal){const aspectHeightClamp=getSizeClamp(newWidth/aspectRatio,minHeight,maxHeight)*aspectRatio;if(clampX=Math.max(clampX,aspectHeightClamp),extent){let aspectExtentClamp=0;!affectsX&&!affectsY||affectsX&&!affectsY&&isDiagonal?aspectExtentClamp=getUpperExtentClamp(startY+originOffsetY+newWidth/aspectRatio,extent[1][1])*aspectRatio:aspectExtentClamp=getLowerExtentClamp(startY+originOffsetY+(affectsX?distX:-distX)/aspectRatio,extent[0][1])*aspectRatio,clampX=Math.max(clampX,aspectExtentClamp)}if(childExtent){let aspectExtentClamp=0;!affectsX&&!affectsY||affectsX&&!affectsY&&isDiagonal?aspectExtentClamp=getLowerExtentClamp(startY+newWidth/aspectRatio,childExtent[1][1])*aspectRatio:aspectExtentClamp=getUpperExtentClamp(startY+(affectsX?distX:-distX)/aspectRatio,childExtent[0][1])*aspectRatio,clampX=Math.max(clampX,aspectExtentClamp)}}if(isVertical){const aspectWidthClamp=getSizeClamp(newHeight*aspectRatio,minWidth,maxWidth)/aspectRatio;if(clampY=Math.max(clampY,aspectWidthClamp),extent){let aspectExtentClamp=0;!affectsX&&!affectsY||affectsY&&!affectsX&&isDiagonal?aspectExtentClamp=getUpperExtentClamp(startX+newHeight*aspectRatio+originOffsetX,extent[1][0])/aspectRatio:aspectExtentClamp=getLowerExtentClamp(startX+(affectsY?distY:-distY)*aspectRatio+originOffsetX,extent[0][0])/aspectRatio,clampY=Math.max(clampY,aspectExtentClamp)}if(childExtent){let aspectExtentClamp=0;!affectsX&&!affectsY||affectsY&&!affectsX&&isDiagonal?aspectExtentClamp=getLowerExtentClamp(startX+newHeight*aspectRatio,childExtent[1][0])/aspectRatio:aspectExtentClamp=getUpperExtentClamp(startX+(affectsY?distY:-distY)*aspectRatio,childExtent[0][0])/aspectRatio,clampY=Math.max(clampY,aspectExtentClamp)}}}distY=distY+(distY<0?clampY:-clampY),distX=distX+(distX<0?clampX:-clampX),keepAspectRatio&&(isDiagonal?newWidth>newHeight*aspectRatio?distY=(xor(affectsX,affectsY)?-distX:distX)/aspectRatio:distX=(xor(affectsX,affectsY)?-distY:distY)*aspectRatio:isHorizontal?(distY=distX/aspectRatio,affectsY=affectsX):(distX=distY*aspectRatio,affectsX=affectsY));const x2=affectsX?startX+distX:startX,y2=affectsY?startY+distY:startY;return{width:startWidth+(affectsX?-distX:distX),height:startHeight+(affectsY?-distY:distY),x:nodeOrigin[0]*distX*(affectsX?-1:1)+x2,y:nodeOrigin[1]*distY*(affectsY?-1:1)+y2}}const initPrevValues$1={width:0,height:0,x:0,y:0},initStartValues={...initPrevValues$1,pointerX:0,pointerY:0,aspectRatio:1};function nodeToParentExtent(node){return[[0,0],[node.measured.width,node.measured.height]]}function nodeToChildExtent(child,parent,nodeOrigin){const x2=parent.position.x+child.position.x,y2=parent.position.y+child.position.y,width=child.measured.width??0,height=child.measured.height??0,originOffsetX=nodeOrigin[0]*width,originOffsetY=nodeOrigin[1]*height;return[[x2-originOffsetX,y2-originOffsetY],[x2+width-originOffsetX,y2+height-originOffsetY]]}function XYResizer({domNode,nodeId,getStoreItems,onChange,onEnd}){const selection2=select(domNode);function update({controlPosition,boundaries,keepAspectRatio,onResizeStart,onResize,onResizeEnd,shouldResize}){let prevValues={...initPrevValues$1},startValues={...initStartValues};const controlDirection=getControlDirection(controlPosition);let node,childNodes=[],parentNode,parentExtent,childExtent;const dragHandler=drag().on("start",event=>{const{nodeLookup,transform:transform2,snapGrid,snapToGrid,nodeOrigin}=getStoreItems();if(node=nodeLookup.get(nodeId),!node)return;const{xSnapped,ySnapped}=getPointerPosition(event.sourceEvent,{transform:transform2,snapGrid,snapToGrid});prevValues={width:node.measured.width??0,height:node.measured.height??0,x:node.position.x??0,y:node.position.y??0},startValues={...prevValues,pointerX:xSnapped,pointerY:ySnapped,aspectRatio:prevValues.width/prevValues.height},parentNode=void 0,node.parentId&&(node.extent==="parent"||node.expandParent)&&(parentNode=nodeLookup.get(node.parentId),parentExtent=parentNode&&node.extent==="parent"?nodeToParentExtent(parentNode):void 0),childNodes=[],childExtent=void 0;for(const[childId,child]of nodeLookup)if(child.parentId===nodeId&&(childNodes.push({id:childId,position:{...child.position},extent:child.extent}),child.extent==="parent"||child.expandParent)){const extent=nodeToChildExtent(child,node,child.origin??nodeOrigin);childExtent?childExtent=[[Math.min(extent[0][0],childExtent[0][0]),Math.min(extent[0][1],childExtent[0][1])],[Math.max(extent[1][0],childExtent[1][0]),Math.max(extent[1][1],childExtent[1][1])]]:childExtent=extent}onResizeStart?.(event,{...prevValues})}).on("drag",event=>{const{transform:transform2,snapGrid,snapToGrid,nodeOrigin:storeNodeOrigin}=getStoreItems(),pointerPosition=getPointerPosition(event.sourceEvent,{transform:transform2,snapGrid,snapToGrid}),childChanges=[];if(!node)return;const{x:prevX,y:prevY,width:prevWidth,height:prevHeight}=prevValues,change={},nodeOrigin=node.origin??storeNodeOrigin,{width,height,x:x2,y:y2}=getDimensionsAfterResize(startValues,controlDirection,pointerPosition,boundaries,keepAspectRatio,nodeOrigin,parentExtent,childExtent),isWidthChange=width!==prevWidth,isHeightChange=height!==prevHeight,isXPosChange=x2!==prevX&&isWidthChange,isYPosChange=y2!==prevY&&isHeightChange;if(!isXPosChange&&!isYPosChange&&!isWidthChange&&!isHeightChange)return;if((isXPosChange||isYPosChange||nodeOrigin[0]===1||nodeOrigin[1]===1)&&(change.x=isXPosChange?x2:prevValues.x,change.y=isYPosChange?y2:prevValues.y,prevValues.x=change.x,prevValues.y=change.y,childNodes.length>0)){const xChange=x2-prevX,yChange=y2-prevY;for(const childNode of childNodes)childNode.position={x:childNode.position.x-xChange+nodeOrigin[0]*(width-prevWidth),y:childNode.position.y-yChange+nodeOrigin[1]*(height-prevHeight)},childChanges.push(childNode)}if((isWidthChange||isHeightChange)&&(change.width=isWidthChange?width:prevValues.width,change.height=isHeightChange?height:prevValues.height,prevValues.width=change.width,prevValues.height=change.height),parentNode&&node.expandParent){const xLimit=nodeOrigin[0]*(change.width??0);change.x&&change.x<xLimit&&(prevValues.x=xLimit,startValues.x=startValues.x-(change.x-xLimit));const yLimit=nodeOrigin[1]*(change.height??0);change.y&&change.y<yLimit&&(prevValues.y=yLimit,startValues.y=startValues.y-(change.y-yLimit))}const direction=getResizeDirection({width:prevValues.width,prevWidth,height:prevValues.height,prevHeight,affectsX:controlDirection.affectsX,affectsY:controlDirection.affectsY}),nextValues={...prevValues,direction};shouldResize?.(event,nextValues)!==!1&&(onResize?.(event,nextValues),onChange(change,childChanges))}).on("end",event=>{onResizeEnd?.(event,{...prevValues}),onEnd?.()});selection2.call(dragHandler)}function destroy(){selection2.on(".drag",null)}return{update,destroy}}var withSelector={exports:{}},withSelector_production_min={},shim={exports:{}},useSyncExternalStoreShim_production_min={};var e$3=React__default;function h$1(a2,b2){return a2===b2&&(a2!==0||1/a2===1/b2)||a2!==a2&&b2!==b2}var k=typeof Object.is=="function"?Object.is:h$1,l$3=e$3.useState,m$1=e$3.useEffect,n$6=e$3.useLayoutEffect,p$1=e$3.useDebugValue;function q$1(a2,b2){var d2=b2(),f2=l$3({inst:{value:d2,getSnapshot:b2}}),c2=f2[0].inst,g=f2[1];return n$6(function(){c2.value=d2,c2.getSnapshot=b2,r$4(c2)&&g({inst:c2})},[a2,d2,b2]),m$1(function(){return r$4(c2)&&g({inst:c2}),a2(function(){r$4(c2)&&g({inst:c2})})},[a2]),p$1(d2),d2}function r$4(a2){var b2=a2.getSnapshot;a2=a2.value;try{var d2=b2();return!k(a2,d2)}catch{return!0}}function t$5(a2,b2){return b2()}var u$9=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?t$5:q$1;useSyncExternalStoreShim_production_min.useSyncExternalStore=e$3.useSyncExternalStore!==void 0?e$3.useSyncExternalStore:u$9;shim.exports=useSyncExternalStoreShim_production_min;var shimExports=shim.exports;var h=React__default,n$5=shimExports;function p(a2,b2){return a2===b2&&(a2!==0||1/a2===1/b2)||a2!==a2&&b2!==b2}var q=typeof Object.is=="function"?Object.is:p,r$3=n$5.useSyncExternalStore,t$4=h.useRef,u$8=h.useEffect,v=h.useMemo,w=h.useDebugValue;withSelector_production_min.useSyncExternalStoreWithSelector=function(a2,b2,e2,l2,g){var c2=t$4(null);if(c2.current===null){var f2={hasValue:!1,value:null};c2.current=f2}else f2=c2.current;c2=v(function(){function a3(a4){if(!c3){if(c3=!0,d3=a4,a4=l2(a4),g!==void 0&&f2.hasValue){var b3=f2.value;if(g(b3,a4))return k2=b3}return k2=a4}if(b3=k2,q(d3,a4))return b3;var e3=l2(a4);return g!==void 0&&g(b3,e3)?b3:(d3=a4,k2=e3)}var c3=!1,d3,k2,m2=e2===void 0?null:e2;return[function(){return a3(b2())},m2===null?void 0:function(){return a3(m2())}]},[b2,e2,l2,g]);var d2=r$3(a2,c2[0],c2[1]);return u$8(function(){f2.hasValue=!0,f2.value=d2},[d2]),w(d2),d2};withSelector.exports=withSelector_production_min;var withSelectorExports=withSelector.exports;const useSyncExternalStoreExports=getDefaultExportFromCjs(withSelectorExports);var define_import_meta_env_default$1={VITE_HTML_DEV_INJECT:"",BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1};const createStoreImpl=createState2=>{let state;const listeners=new Set,setState=(partial,replace)=>{const nextState=typeof partial=="function"?partial(state):partial;if(!Object.is(nextState,state)){const previousState=state;state=replace??(typeof nextState!="object"||nextState===null)?nextState:Object.assign({},state,nextState),listeners.forEach(listener=>listener(state,previousState))}},getState=()=>state,api={setState,getState,getInitialState:()=>initialState2,subscribe:listener=>(listeners.add(listener),()=>listeners.delete(listener)),destroy:()=>{(define_import_meta_env_default$1?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),listeners.clear()}},initialState2=state=createState2(setState,getState,api);return api},createStore$1=createState2=>createState2?createStoreImpl(createState2):createStoreImpl,{useDebugValue}=React__default,{useSyncExternalStoreWithSelector}=useSyncExternalStoreExports,identity=arg=>arg;function useStoreWithEqualityFn(api,selector2=identity,equalityFn){const slice=useSyncExternalStoreWithSelector(api.subscribe,api.getState,api.getServerState||api.getInitialState,selector2,equalityFn);return useDebugValue(slice),slice}const createWithEqualityFnImpl=(createState2,defaultEqualityFn)=>{const api=createStore$1(createState2),useBoundStoreWithEqualityFn=(selector2,equalityFn=defaultEqualityFn)=>useStoreWithEqualityFn(api,selector2,equalityFn);return Object.assign(useBoundStoreWithEqualityFn,api),useBoundStoreWithEqualityFn},createWithEqualityFn=(createState2,defaultEqualityFn)=>createState2?createWithEqualityFnImpl(createState2,defaultEqualityFn):createWithEqualityFnImpl;function shallow$1(objA,objB){if(Object.is(objA,objB))return!0;if(typeof objA!="object"||objA===null||typeof objB!="object"||objB===null)return!1;if(objA instanceof Map&&objB instanceof Map){if(objA.size!==objB.size)return!1;for(const[key,value]of objA)if(!Object.is(value,objB.get(key)))return!1;return!0}if(objA instanceof Set&&objB instanceof Set){if(objA.size!==objB.size)return!1;for(const value of objA)if(!objB.has(value))return!1;return!0}const keysA=Object.keys(objA);if(keysA.length!==Object.keys(objB).length)return!1;for(const keyA of keysA)if(!Object.prototype.hasOwnProperty.call(objB,keyA)||!Object.is(objA[keyA],objB[keyA]))return!1;return!0}const StoreContext=createContext$1(null),Provider$1=StoreContext.Provider,zustandErrorMessage=errorMessages.error001();function useStore(selector2,equalityFn){const store=useContext$1(StoreContext);if(store===null)throw new Error(zustandErrorMessage);return useStoreWithEqualityFn(store,selector2,equalityFn)}function useStoreApi(){const store=useContext$1(StoreContext);if(store===null)throw new Error(zustandErrorMessage);return useMemo$1(()=>({getState:store.getState,setState:store.setState,subscribe:store.subscribe}),[store])}const style={display:"none"},ariaLiveStyle={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},ARIA_NODE_DESC_KEY="react-flow__node-desc",ARIA_EDGE_DESC_KEY="react-flow__edge-desc",ARIA_LIVE_MESSAGE="react-flow__aria-live",selector$p=s2=>s2.ariaLiveMessage;function AriaLiveMessage({rfId}){const ariaLiveMessage=useStore(selector$p);return jsx("div",{id:`${ARIA_LIVE_MESSAGE}-${rfId}`,"aria-live":"assertive","aria-atomic":"true",style:ariaLiveStyle,children:ariaLiveMessage})}function A11yDescriptions({rfId,disableKeyboardA11y}){return jsxs(Fragment,{children:[jsxs("div",{id:`${ARIA_NODE_DESC_KEY}-${rfId}`,style,children:["Press enter or space to select a node.",!disableKeyboardA11y&&"You can then use the arrow keys to move the node around."," Press delete to remove it and escape to cancel."," "]}),jsx("div",{id:`${ARIA_EDGE_DESC_KEY}-${rfId}`,style,children:"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."}),!disableKeyboardA11y&&jsx(AriaLiveMessage,{rfId})]})}const selector$o=s2=>s2.userSelectionActive?"none":"all";function Panel$1({position="top-left",children:children2,className,style:style2,...rest}){const pointerEvents=useStore(selector$o),positionClasses=`${position}`.split("-");return jsx("div",{className:cc(["react-flow__panel",className,...positionClasses]),style:{...style2,pointerEvents},...rest,children:children2})}function Attribution({proOptions,position="bottom-right"}){return proOptions?.hideAttribution?null:jsx(Panel$1,{position,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:jsx("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const selector$n=s2=>{const selectedNodes=[],selectedEdges=[];for(const[,node]of s2.nodeLookup)node.selected&&selectedNodes.push(node.internals.userNode);for(const[,edge]of s2.edgeLookup)edge.selected&&selectedEdges.push(edge);return{selectedNodes,selectedEdges}},selectId=obj=>obj.id;function areEqual$1(a2,b2){return shallow$1(a2.selectedNodes.map(selectId),b2.selectedNodes.map(selectId))&&shallow$1(a2.selectedEdges.map(selectId),b2.selectedEdges.map(selectId))}function SelectionListenerInner({onSelectionChange}){const store=useStoreApi(),{selectedNodes,selectedEdges}=useStore(selector$n,areEqual$1);return useEffect$1(()=>{const params={nodes:selectedNodes,edges:selectedEdges};onSelectionChange?.(params),store.getState().onSelectionChangeHandlers.forEach(fn=>fn(params))},[selectedNodes,selectedEdges,onSelectionChange]),null}const changeSelector=s2=>!!s2.onSelectionChangeHandlers;function SelectionListener({onSelectionChange}){const storeHasSelectionChangeHandlers=useStore(changeSelector);return onSelectionChange||storeHasSelectionChangeHandlers?jsx(SelectionListenerInner,{onSelectionChange}):null}const defaultNodeOrigin=[0,0],defaultViewport={x:0,y:0,zoom:1},reactFlowFieldsToTrack=["nodes","edges","defaultNodes","defaultEdges","onConnect","onConnectStart","onConnectEnd","onClickConnectStart","onClickConnectEnd","nodesDraggable","nodesConnectable","nodesFocusable","edgesFocusable","edgesReconnectable","elevateNodesOnSelect","elevateEdgesOnSelect","minZoom","maxZoom","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","connectionMode","snapGrid","snapToGrid","translateExtent","connectOnClick","defaultEdgeOptions","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","onMoveStart","onMove","onMoveEnd","noPanClassName","nodeOrigin","autoPanOnConnect","autoPanOnNodeDrag","onError","connectionRadius","isValidConnection","selectNodesOnDrag","nodeDragThreshold","onBeforeDelete","debug","autoPanSpeed","paneClickDistance"],fieldsToTrack=[...reactFlowFieldsToTrack,"rfId"],selector$m=s2=>({setNodes:s2.setNodes,setEdges:s2.setEdges,setMinZoom:s2.setMinZoom,setMaxZoom:s2.setMaxZoom,setTranslateExtent:s2.setTranslateExtent,setNodeExtent:s2.setNodeExtent,reset:s2.reset,setDefaultNodesAndEdges:s2.setDefaultNodesAndEdges,setPaneClickDistance:s2.setPaneClickDistance}),initPrevValues={translateExtent:infiniteExtent,nodeOrigin:defaultNodeOrigin,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1",paneClickDistance:0};function StoreUpdater(props2){const{setNodes,setEdges,setMinZoom,setMaxZoom,setTranslateExtent,setNodeExtent,reset,setDefaultNodesAndEdges,setPaneClickDistance}=useStore(selector$m,shallow$1),store=useStoreApi();useEffect$1(()=>(setDefaultNodesAndEdges(props2.defaultNodes,props2.defaultEdges),()=>{previousFields.current=initPrevValues,reset()}),[]);const previousFields=useRef$1(initPrevValues);return useEffect$1(()=>{for(const fieldName of fieldsToTrack){const fieldValue=props2[fieldName],previousFieldValue=previousFields.current[fieldName];fieldValue!==previousFieldValue&&(typeof props2[fieldName]>"u"||(fieldName==="nodes"?setNodes(fieldValue):fieldName==="edges"?setEdges(fieldValue):fieldName==="minZoom"?setMinZoom(fieldValue):fieldName==="maxZoom"?setMaxZoom(fieldValue):fieldName==="translateExtent"?setTranslateExtent(fieldValue):fieldName==="nodeExtent"?setNodeExtent(fieldValue):fieldName==="paneClickDistance"?setPaneClickDistance(fieldValue):fieldName==="fitView"?store.setState({fitViewOnInit:fieldValue}):fieldName==="fitViewOptions"?store.setState({fitViewOnInitOptions:fieldValue}):store.setState({[fieldName]:fieldValue})))}previousFields.current=props2},fieldsToTrack.map(fieldName=>props2[fieldName])),null}function getMediaQuery(){return typeof window>"u"||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}function useColorModeClass(colorMode){const[colorModeClass,setColorModeClass]=useState$1(colorMode==="system"?null:colorMode);return useEffect$1(()=>{if(colorMode!=="system"){setColorModeClass(colorMode);return}const mediaQuery=getMediaQuery(),updateColorModeClass=()=>setColorModeClass(mediaQuery?.matches?"dark":"light");return updateColorModeClass(),mediaQuery?.addEventListener("change",updateColorModeClass),()=>{mediaQuery?.removeEventListener("change",updateColorModeClass)}},[colorMode]),colorModeClass!==null?colorModeClass:getMediaQuery()?.matches?"dark":"light"}const defaultDoc=typeof document<"u"?document:null;function useKeyPress(keyCode=null,options={target:defaultDoc,actInsideInputWithModifier:!0}){const[keyPressed,setKeyPressed]=useState$1(!1),modifierPressed=useRef$1(!1),pressedKeys=useRef$1(new Set([])),[keyCodes,keysToWatch]=useMemo$1(()=>{if(keyCode!==null){const keys2=(Array.isArray(keyCode)?keyCode:[keyCode]).filter(kc=>typeof kc=="string").map(kc=>kc.split("+")),keysFlat=keys2.reduce((res,item)=>res.concat(...item),[]);return[keys2,keysFlat]}return[[],[]]},[keyCode]);return useEffect$1(()=>{const target=options?.target||defaultDoc;if(keyCode!==null){const downHandler=event=>{if(modifierPressed.current=event.ctrlKey||event.metaKey||event.shiftKey,(!modifierPressed.current||modifierPressed.current&&!options.actInsideInputWithModifier)&&isInputDOMNode(event))return!1;const keyOrCode=useKeyOrCode(event.code,keysToWatch);pressedKeys.current.add(event[keyOrCode]),isMatchingKey(keyCodes,pressedKeys.current,!1)&&(event.preventDefault(),setKeyPressed(!0))},upHandler=event=>{if((!modifierPressed.current||modifierPressed.current&&!options.actInsideInputWithModifier)&&isInputDOMNode(event))return!1;const keyOrCode=useKeyOrCode(event.code,keysToWatch);isMatchingKey(keyCodes,pressedKeys.current,!0)?(setKeyPressed(!1),pressedKeys.current.clear()):pressedKeys.current.delete(event[keyOrCode]),event.key==="Meta"&&pressedKeys.current.clear(),modifierPressed.current=!1},resetHandler=()=>{pressedKeys.current.clear(),setKeyPressed(!1)};return target?.addEventListener("keydown",downHandler),target?.addEventListener("keyup",upHandler),window.addEventListener("blur",resetHandler),window.addEventListener("contextmenu",resetHandler),()=>{target?.removeEventListener("keydown",downHandler),target?.removeEventListener("keyup",upHandler),window.removeEventListener("blur",resetHandler),window.removeEventListener("contextmenu",resetHandler)}}},[keyCode,setKeyPressed]),keyPressed}function isMatchingKey(keyCodes,pressedKeys,isUp){return keyCodes.filter(keys2=>isUp||keys2.length===pressedKeys.size).some(keys2=>keys2.every(k2=>pressedKeys.has(k2)))}function useKeyOrCode(eventCode,keysToWatch){return keysToWatch.includes(eventCode)?"code":"key"}const useViewportHelper=()=>{const store=useStoreApi();return useMemo$1(()=>({zoomIn:options=>{const{panZoom}=store.getState();return panZoom?panZoom.scaleBy(1.2,{duration:options?.duration}):Promise.resolve(!1)},zoomOut:options=>{const{panZoom}=store.getState();return panZoom?panZoom.scaleBy(1/1.2,{duration:options?.duration}):Promise.resolve(!1)},zoomTo:(zoomLevel,options)=>{const{panZoom}=store.getState();return panZoom?panZoom.scaleTo(zoomLevel,{duration:options?.duration}):Promise.resolve(!1)},getZoom:()=>store.getState().transform[2],setViewport:async(viewport,options)=>{const{transform:[tX,tY,tZoom],panZoom}=store.getState();return panZoom?(await panZoom.setViewport({x:viewport.x??tX,y:viewport.y??tY,zoom:viewport.zoom??tZoom},{duration:options?.duration}),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>{const[x2,y2,zoom2]=store.getState().transform;return{x:x2,y:y2,zoom:zoom2}},fitView:options=>{const{nodeLookup,width,height,minZoom,maxZoom,panZoom}=store.getState(),fitViewNodes=getFitViewNodes(nodeLookup,options);return panZoom?fitView({nodes:fitViewNodes,width,height,minZoom,maxZoom,panZoom},options):Promise.resolve(!1)},setCenter:async(x2,y2,options)=>{const{width,height,maxZoom,panZoom}=store.getState(),nextZoom=typeof options?.zoom<"u"?options.zoom:maxZoom,centerX=width/2-x2*nextZoom,centerY=height/2-y2*nextZoom;return panZoom?(await panZoom.setViewport({x:centerX,y:centerY,zoom:nextZoom},{duration:options?.duration}),Promise.resolve(!0)):Promise.resolve(!1)},fitBounds:async(bounds,options)=>{const{width,height,minZoom,maxZoom,panZoom}=store.getState(),viewport=getViewportForBounds(bounds,width,height,minZoom,maxZoom,options?.padding??.1);return panZoom?(await panZoom.setViewport(viewport,{duration:options?.duration}),Promise.resolve(!0)):Promise.resolve(!1)},screenToFlowPosition:(clientPosition,options={snapToGrid:!0})=>{const{transform:transform2,snapGrid,domNode}=store.getState();if(!domNode)return clientPosition;const{x:domX,y:domY}=domNode.getBoundingClientRect(),correctedPosition={x:clientPosition.x-domX,y:clientPosition.y-domY};return pointToRendererPoint(correctedPosition,transform2,options.snapToGrid,snapGrid)},flowToScreenPosition:flowPosition=>{const{transform:transform2,domNode}=store.getState();if(!domNode)return flowPosition;const{x:domX,y:domY}=domNode.getBoundingClientRect(),rendererPosition=rendererPointToPoint(flowPosition,transform2);return{x:rendererPosition.x+domX,y:rendererPosition.y+domY}}}),[])};function applyChanges(changes,elements){const updatedElements=[],changesMap=new Map;for(const change of changes)if(change.type==="add"){updatedElements.push(change.item);continue}else if(change.type==="remove"||change.type==="replace")changesMap.set(change.id,[change]);else{const elementChanges=changesMap.get(change.id);elementChanges?elementChanges.push(change):changesMap.set(change.id,[change])}for(const element of elements){const changes2=changesMap.get(element.id);if(!changes2){updatedElements.push(element);continue}if(changes2[0].type==="remove")continue;if(changes2[0].type==="replace"){updatedElements.push({...changes2[0].item});continue}const updatedElement={...element};for(const change of changes2)applyChange(change,updatedElement);updatedElements.push(updatedElement)}return updatedElements}function applyChange(change,element){switch(change.type){case"select":{element.selected=change.selected;break}case"position":{typeof change.position<"u"&&(element.position=change.position),typeof change.dragging<"u"&&(element.dragging=change.dragging);break}case"dimensions":{typeof change.dimensions<"u"&&(element.measured??={},element.measured.width=change.dimensions.width,element.measured.height=change.dimensions.height,change.setAttributes&&(element.width=change.dimensions.width,element.height=change.dimensions.height)),typeof change.resizing=="boolean"&&(element.resizing=change.resizing);break}}}function applyNodeChanges(changes,nodes){return applyChanges(changes,nodes)}function applyEdgeChanges(changes,edges){return applyChanges(changes,edges)}function createSelectionChange(id2,selected2){return{id:id2,type:"select",selected:selected2}}function getSelectionChanges(items,selectedIds=new Set,mutateItem=!1){const changes=[];for(const[id2,item]of items){const willBeSelected=selectedIds.has(id2);!(item.selected===void 0&&!willBeSelected)&&item.selected!==willBeSelected&&(mutateItem&&(item.selected=willBeSelected),changes.push(createSelectionChange(item.id,willBeSelected)))}return changes}function getElementsDiffChanges({items=[],lookup}){const changes=[],itemsLookup=new Map(items.map(item=>[item.id,item]));for(const item of items){const lookupItem=lookup.get(item.id),storeItem=lookupItem?.internals?.userNode??lookupItem;storeItem!==void 0&&storeItem!==item&&changes.push({id:item.id,item,type:"replace"}),storeItem===void 0&&changes.push({item,type:"add"})}for(const[id2]of lookup)itemsLookup.get(id2)===void 0&&changes.push({id:id2,type:"remove"});return changes}function elementToRemoveChange(item){return{id:item.id,type:"remove"}}const isNode=element=>isNodeBase(element),isEdge=element=>isEdgeBase(element);function fixedForwardRef(render){return forwardRef$1(render)}const useIsomorphicLayoutEffect$3=typeof window<"u"?useLayoutEffect$3:useEffect$1;function useQueue(runQueue){const[shouldFlush,setShouldFlush]=useState$1(!1),[queue]=useState$1(()=>createQueue(()=>setShouldFlush(!0)));return useIsomorphicLayoutEffect$3(()=>{if(!shouldFlush){queue.reset();return}const queueItems=queue.get();queueItems.length&&(runQueue(queueItems),queue.reset()),setShouldFlush(!1)},[shouldFlush]),queue}function createQueue(cb){let queue=[];return{get:()=>queue,reset:()=>{queue=[]},push:item=>{queue.push(item),cb()}}}const BatchContext=createContext$1(null);function BatchProvider({children:children2}){const store=useStoreApi(),nodeQueueHandler=useCallback$1(queueItems=>{const{nodes=[],setNodes,hasDefaultNodes,onNodesChange,nodeLookup}=store.getState();let next=nodes;for(const payload of queueItems)next=typeof payload=="function"?payload(next):payload;hasDefaultNodes?setNodes(next):onNodesChange&&onNodesChange(getElementsDiffChanges({items:next,lookup:nodeLookup}))},[]),nodeQueue=useQueue(nodeQueueHandler),edgeQueueHandler=useCallback$1(queueItems=>{const{edges=[],setEdges,hasDefaultEdges,onEdgesChange,edgeLookup}=store.getState();let next=edges;for(const payload of queueItems)next=typeof payload=="function"?payload(next):payload;hasDefaultEdges?setEdges(next):onEdgesChange&&onEdgesChange(getElementsDiffChanges({items:next,lookup:edgeLookup}))},[]),edgeQueue=useQueue(edgeQueueHandler),value=useMemo$1(()=>({nodeQueue,edgeQueue}),[]);return jsx(BatchContext.Provider,{value,children:children2})}function useBatchContext(){const batchContext=useContext$1(BatchContext);if(!batchContext)throw new Error("useBatchContext must be used within a BatchProvider");return batchContext}const selector$l=s2=>!!s2.panZoom;function useReactFlow(){const viewportHelper=useViewportHelper(),store=useStoreApi(),batchContext=useBatchContext(),viewportInitialized=useStore(selector$l),generalHelper=useMemo$1(()=>{const getInternalNode=id2=>store.getState().nodeLookup.get(id2),setNodes=payload=>{batchContext.nodeQueue.push(payload)},setEdges=payload=>{batchContext.edgeQueue.push(payload)},getNodeRect=node=>{const{nodeLookup,nodeOrigin}=store.getState(),nodeToUse=isNode(node)?node:nodeLookup.get(node.id),position=nodeToUse.parentId?evaluateAbsolutePosition(nodeToUse.position,nodeToUse.measured,nodeToUse.parentId,nodeLookup,nodeOrigin):nodeToUse.position,nodeWithPosition={id:nodeToUse.id,position,width:nodeToUse.measured?.width??nodeToUse.width,height:nodeToUse.measured?.height??nodeToUse.height,data:nodeToUse.data};return nodeToRect(nodeWithPosition)},updateNode=(id2,nodeUpdate,options={replace:!1})=>{setNodes(prevNodes=>prevNodes.map(node=>{if(node.id===id2){const nextNode=typeof nodeUpdate=="function"?nodeUpdate(node):nodeUpdate;return options.replace&&isNode(nextNode)?nextNode:{...node,...nextNode}}return node}))},updateEdge=(id2,edgeUpdate,options={replace:!1})=>{setEdges(prevEdges=>prevEdges.map(edge=>{if(edge.id===id2){const nextEdge=typeof edgeUpdate=="function"?edgeUpdate(edge):edgeUpdate;return options.replace&&isEdge(nextEdge)?nextEdge:{...edge,...nextEdge}}return edge}))};return{getNodes:()=>store.getState().nodes.map(n2=>({...n2})),getNode:id2=>getInternalNode(id2)?.internals.userNode,getInternalNode,getEdges:()=>{const{edges=[]}=store.getState();return edges.map(e2=>({...e2}))},getEdge:id2=>store.getState().edgeLookup.get(id2),setNodes,setEdges,addNodes:payload=>{const newNodes=Array.isArray(payload)?payload:[payload];batchContext.nodeQueue.push(nodes=>[...nodes,...newNodes])},addEdges:payload=>{const newEdges=Array.isArray(payload)?payload:[payload];batchContext.edgeQueue.push(edges=>[...edges,...newEdges])},toObject:()=>{const{nodes=[],edges=[],transform:transform2}=store.getState(),[x2,y2,zoom2]=transform2;return{nodes:nodes.map(n2=>({...n2})),edges:edges.map(e2=>({...e2})),viewport:{x:x2,y:y2,zoom:zoom2}}},deleteElements:async({nodes:nodesToRemove=[],edges:edgesToRemove=[]})=>{const{nodes,edges,onNodesDelete,onEdgesDelete,triggerNodeChanges,triggerEdgeChanges,onDelete,onBeforeDelete}=store.getState(),{nodes:matchingNodes,edges:matchingEdges}=await getElementsToRemove({nodesToRemove,edgesToRemove,nodes,edges,onBeforeDelete}),hasMatchingEdges=matchingEdges.length>0,hasMatchingNodes=matchingNodes.length>0;if(hasMatchingEdges){const edgeChanges=matchingEdges.map(elementToRemoveChange);onEdgesDelete?.(matchingEdges),triggerEdgeChanges(edgeChanges)}if(hasMatchingNodes){const nodeChanges=matchingNodes.map(elementToRemoveChange);onNodesDelete?.(matchingNodes),triggerNodeChanges(nodeChanges)}return(hasMatchingNodes||hasMatchingEdges)&&onDelete?.({nodes:matchingNodes,edges:matchingEdges}),{deletedNodes:matchingNodes,deletedEdges:matchingEdges}},getIntersectingNodes:(nodeOrRect,partially=!0,nodes)=>{const isRect=isRectObject(nodeOrRect),nodeRect=isRect?nodeOrRect:getNodeRect(nodeOrRect),hasNodesOption=nodes!==void 0;return nodeRect?(nodes||store.getState().nodes).filter(n2=>{const internalNode=store.getState().nodeLookup.get(n2.id);if(internalNode&&!isRect&&(n2.id===nodeOrRect.id||!internalNode.internals.positionAbsolute))return!1;const currNodeRect=nodeToRect(hasNodesOption?n2:internalNode),overlappingArea=getOverlappingArea(currNodeRect,nodeRect);return partially&&overlappingArea>0||overlappingArea>=nodeRect.width*nodeRect.height}):[]},isNodeIntersecting:(nodeOrRect,area,partially=!0)=>{const nodeRect=isRectObject(nodeOrRect)?nodeOrRect:getNodeRect(nodeOrRect);if(!nodeRect)return!1;const overlappingArea=getOverlappingArea(nodeRect,area);return partially&&overlappingArea>0||overlappingArea>=nodeRect.width*nodeRect.height},updateNode,updateNodeData:(id2,dataUpdate,options={replace:!1})=>{updateNode(id2,node=>{const nextData=typeof dataUpdate=="function"?dataUpdate(node):dataUpdate;return options.replace?{...node,data:nextData}:{...node,data:{...node.data,...nextData}}},options)},updateEdge,updateEdgeData:(id2,dataUpdate,options={replace:!1})=>{updateEdge(id2,edge=>{const nextData=typeof dataUpdate=="function"?dataUpdate(edge):dataUpdate;return options.replace?{...edge,data:nextData}:{...edge,data:{...edge.data,...nextData}}},options)}}},[]);return useMemo$1(()=>({...generalHelper,...viewportHelper,viewportInitialized}),[viewportInitialized])}const selected=item=>item.selected,deleteKeyOptions={actInsideInputWithModifier:!1},win$1=typeof window<"u"?window:void 0;function useGlobalKeyHandler({deleteKeyCode,multiSelectionKeyCode}){const store=useStoreApi(),{deleteElements}=useReactFlow(),deleteKeyPressed=useKeyPress(deleteKeyCode,deleteKeyOptions),multiSelectionKeyPressed=useKeyPress(multiSelectionKeyCode,{target:win$1});useEffect$1(()=>{if(deleteKeyPressed){const{edges,nodes}=store.getState();deleteElements({nodes:nodes.filter(selected),edges:edges.filter(selected)}),store.setState({nodesSelectionActive:!1})}},[deleteKeyPressed]),useEffect$1(()=>{store.setState({multiSelectionActive:multiSelectionKeyPressed})},[multiSelectionKeyPressed])}function useResizeHandler(domNode){const store=useStoreApi();useEffect$1(()=>{const updateDimensions=()=>{if(!domNode.current)return!1;const size2=getDimensions(domNode.current);(size2.height===0||size2.width===0)&&store.getState().onError?.("004",errorMessages.error004()),store.setState({width:size2.width||500,height:size2.height||500})};if(domNode.current){updateDimensions(),window.addEventListener("resize",updateDimensions);const resizeObserver=new ResizeObserver(()=>updateDimensions());return resizeObserver.observe(domNode.current),()=>{window.removeEventListener("resize",updateDimensions),resizeObserver&&domNode.current&&resizeObserver.unobserve(domNode.current)}}},[])}const containerStyle={position:"absolute",width:"100%",height:"100%",top:0,left:0},selector$k=s2=>({userSelectionActive:s2.userSelectionActive,lib:s2.lib});function ZoomPane({onPaneContextMenu,zoomOnScroll=!0,zoomOnPinch=!0,panOnScroll=!1,panOnScrollSpeed=.5,panOnScrollMode=PanOnScrollMode.Free,zoomOnDoubleClick=!0,panOnDrag=!0,defaultViewport:defaultViewport2,translateExtent,minZoom,maxZoom,zoomActivationKeyCode,preventScrolling=!0,children:children2,noWheelClassName,noPanClassName,onViewportChange,isControlledViewport,paneClickDistance}){const store=useStoreApi(),zoomPane=useRef$1(null),{userSelectionActive,lib}=useStore(selector$k,shallow$1),zoomActivationKeyPressed=useKeyPress(zoomActivationKeyCode),panZoom=useRef$1();return useResizeHandler(zoomPane),useEffect$1(()=>{if(zoomPane.current){panZoom.current=XYPanZoom({domNode:zoomPane.current,minZoom,maxZoom,translateExtent,viewport:defaultViewport2,paneClickDistance,onTransformChange:transform2=>{onViewportChange?.({x:transform2[0],y:transform2[1],zoom:transform2[2]}),isControlledViewport||store.setState({transform:transform2})},onDraggingChange:paneDragging=>store.setState({paneDragging}),onPanZoomStart:(event,vp)=>{const{onViewportChangeStart,onMoveStart}=store.getState();onMoveStart?.(event,vp),onViewportChangeStart?.(vp)},onPanZoom:(event,vp)=>{const{onViewportChange:onViewportChange2,onMove}=store.getState();onMove?.(event,vp),onViewportChange2?.(vp)},onPanZoomEnd:(event,vp)=>{const{onViewportChangeEnd,onMoveEnd}=store.getState();onMoveEnd?.(event,vp),onViewportChangeEnd?.(vp)}});const{x:x2,y:y2,zoom:zoom2}=panZoom.current.getViewport();return store.setState({panZoom:panZoom.current,transform:[x2,y2,zoom2],domNode:zoomPane.current.closest(".react-flow")}),()=>{panZoom.current?.destroy()}}},[]),useEffect$1(()=>{panZoom.current?.update({onPaneContextMenu,zoomOnScroll,zoomOnPinch,panOnScroll,panOnScrollSpeed,panOnScrollMode,zoomOnDoubleClick,panOnDrag,zoomActivationKeyPressed,preventScrolling,noPanClassName,userSelectionActive,noWheelClassName,lib})},[onPaneContextMenu,zoomOnScroll,zoomOnPinch,panOnScroll,panOnScrollSpeed,panOnScrollMode,zoomOnDoubleClick,panOnDrag,zoomActivationKeyPressed,preventScrolling,noPanClassName,userSelectionActive,noWheelClassName,lib]),jsx("div",{className:"react-flow__renderer",ref:zoomPane,style:containerStyle,children:children2})}const selector$j=s2=>({userSelectionActive:s2.userSelectionActive,userSelectionRect:s2.userSelectionRect});function UserSelection(){const{userSelectionActive,userSelectionRect}=useStore(selector$j,shallow$1);return userSelectionActive&&userSelectionRect?jsx("div",{className:"react-flow__selection react-flow__container",style:{width:userSelectionRect.width,height:userSelectionRect.height,transform:`translate(${userSelectionRect.x}px, ${userSelectionRect.y}px)`}}):null}const wrapHandler=(handler,containerRef)=>event=>{event.target===containerRef.current&&handler?.(event)},selector$i=s2=>({userSelectionActive:s2.userSelectionActive,elementsSelectable:s2.elementsSelectable,dragging:s2.paneDragging});function Pane({isSelecting,selectionKeyPressed,selectionMode=SelectionMode.Full,panOnDrag,selectionOnDrag,onSelectionStart,onSelectionEnd,onPaneClick,onPaneContextMenu,onPaneScroll,onPaneMouseEnter,onPaneMouseMove,onPaneMouseLeave,children:children2}){const container2=useRef$1(null),store=useStoreApi(),prevSelectedNodesCount=useRef$1(0),prevSelectedEdgesCount=useRef$1(0),containerBounds=useRef$1(),edgeIdLookup=useRef$1(new Map),{userSelectionActive,elementsSelectable,dragging}=useStore(selector$i,shallow$1),hasActiveSelection=elementsSelectable&&(isSelecting||userSelectionActive),selectionInProgress=useRef$1(!1),selectionStarted=useRef$1(!1),resetUserSelection=()=>{store.setState({userSelectionActive:!1,userSelectionRect:null}),prevSelectedNodesCount.current=0,prevSelectedEdgesCount.current=0},onClick=event=>{if(selectionInProgress.current){selectionInProgress.current=!1;return}onPaneClick?.(event),store.getState().resetSelectedElements(),store.setState({nodesSelectionActive:!1})},onContextMenu=event=>{if(Array.isArray(panOnDrag)&&panOnDrag?.includes(2)){event.preventDefault();return}onPaneContextMenu?.(event)},onWheel=onPaneScroll?event=>onPaneScroll(event):void 0,onPointerDown2=event=>{const{resetSelectedElements,domNode,edgeLookup}=store.getState();if(containerBounds.current=domNode?.getBoundingClientRect(),event.target?.setPointerCapture?.(event.pointerId),!elementsSelectable||!isSelecting||event.button!==0||event.target!==container2.current||!containerBounds.current)return;selectionStarted.current=!0,selectionInProgress.current=!1,edgeIdLookup.current=new Map;for(const[id2,edge]of edgeLookup)edgeIdLookup.current.set(edge.source,edgeIdLookup.current.get(edge.source)?.add(id2)||new Set([id2])),edgeIdLookup.current.set(edge.target,edgeIdLookup.current.get(edge.target)?.add(id2)||new Set([id2]));const{x:x2,y:y2}=getEventPosition(event.nativeEvent,containerBounds.current);resetSelectedElements(),store.setState({userSelectionRect:{width:0,height:0,startX:x2,startY:y2,x:x2,y:y2}}),onSelectionStart?.(event)},onPointerMove=event=>{const{userSelectionRect,edgeLookup,transform:transform2,nodeLookup,triggerNodeChanges,triggerEdgeChanges}=store.getState();if(!containerBounds.current||!userSelectionRect)return;selectionInProgress.current=!0;const{x:mouseX,y:mouseY}=getEventPosition(event.nativeEvent,containerBounds.current),{startX,startY}=userSelectionRect,nextUserSelectRect={startX,startY,x:mouseX<startX?mouseX:startX,y:mouseY<startY?mouseY:startY,width:Math.abs(mouseX-startX),height:Math.abs(mouseY-startY)},selectedNodes=getNodesInside(nodeLookup,nextUserSelectRect,transform2,selectionMode===SelectionMode.Partial,!0),selectedEdgeIds=new Set,selectedNodeIds=new Set;for(const selectedNode of selectedNodes){selectedNodeIds.add(selectedNode.id);const edgeIds=edgeIdLookup.current.get(selectedNode.id);if(edgeIds)for(const edgeId of edgeIds)selectedEdgeIds.add(edgeId)}if(prevSelectedNodesCount.current!==selectedNodeIds.size){prevSelectedNodesCount.current=selectedNodeIds.size;const changes=getSelectionChanges(nodeLookup,selectedNodeIds,!0);triggerNodeChanges(changes)}if(prevSelectedEdgesCount.current!==selectedEdgeIds.size){prevSelectedEdgesCount.current=selectedEdgeIds.size;const changes=getSelectionChanges(edgeLookup,selectedEdgeIds);triggerEdgeChanges(changes)}store.setState({userSelectionRect:nextUserSelectRect,userSelectionActive:!0,nodesSelectionActive:!1})},onPointerUp=event=>{if(event.button!==0||!selectionStarted.current)return;event.target?.releasePointerCapture?.(event.pointerId);const{userSelectionRect}=store.getState();!userSelectionActive&&userSelectionRect&&event.target===container2.current&&onClick?.(event),prevSelectedNodesCount.current>0&&store.setState({nodesSelectionActive:!0}),resetUserSelection(),onSelectionEnd?.(event),(selectionKeyPressed||selectionOnDrag)&&(selectionInProgress.current=!1),selectionStarted.current=!1};return jsxs("div",{className:cc(["react-flow__pane",{draggable:panOnDrag,dragging,selection:isSelecting}]),onClick:hasActiveSelection?void 0:wrapHandler(onClick,container2),onContextMenu:wrapHandler(onContextMenu,container2),onWheel:wrapHandler(onWheel,container2),onPointerEnter:hasActiveSelection?void 0:onPaneMouseEnter,onPointerDown:hasActiveSelection?onPointerDown2:onPaneMouseMove,onPointerMove:hasActiveSelection?onPointerMove:onPaneMouseMove,onPointerUp:hasActiveSelection?onPointerUp:void 0,onPointerLeave:onPaneMouseLeave,ref:container2,style:containerStyle,children:[children2,jsx(UserSelection,{})]})}function handleNodeClick({id:id2,store,unselect=!1,nodeRef}){const{addSelectedNodes,unselectNodesAndEdges,multiSelectionActive,nodeLookup,onError}=store.getState(),node=nodeLookup.get(id2);if(!node){onError?.("012",errorMessages.error012(id2));return}store.setState({nodesSelectionActive:!1}),node.selected?(unselect||node.selected&&multiSelectionActive)&&(unselectNodesAndEdges({nodes:[node],edges:[]}),requestAnimationFrame(()=>nodeRef?.current?.blur())):addSelectedNodes([id2])}function useDrag({nodeRef,disabled=!1,noDragClassName,handleSelector,nodeId,isSelectable,nodeClickDistance}){const store=useStoreApi(),[dragging,setDragging]=useState$1(!1),xyDrag=useRef$1();return useEffect$1(()=>{xyDrag.current=XYDrag({getStoreItems:()=>store.getState(),onNodeMouseDown:id2=>{handleNodeClick({id:id2,store,nodeRef})},onDragStart:()=>{setDragging(!0)},onDragStop:()=>{setDragging(!1)}})},[]),useEffect$1(()=>{if(disabled)xyDrag.current?.destroy();else if(nodeRef.current)return xyDrag.current?.update({noDragClassName,handleSelector,domNode:nodeRef.current,isSelectable,nodeId,nodeClickDistance}),()=>{xyDrag.current?.destroy()}},[noDragClassName,handleSelector,disabled,isSelectable,nodeRef,nodeId]),dragging}const selectedAndDraggable=nodesDraggable=>n2=>n2.selected&&(n2.draggable||nodesDraggable&&typeof n2.draggable>"u");function useMoveSelectedNodes(){const store=useStoreApi();return useCallback$1(params=>{const{nodeExtent,snapToGrid,snapGrid,nodesDraggable,onError,updateNodePositions,nodeLookup,nodeOrigin}=store.getState(),nodeUpdates=new Map,isSelected=selectedAndDraggable(nodesDraggable),xVelo=snapToGrid?snapGrid[0]:5,yVelo=snapToGrid?snapGrid[1]:5,xDiff=params.direction.x*xVelo*params.factor,yDiff=params.direction.y*yVelo*params.factor;for(const[,node]of nodeLookup){if(!isSelected(node))continue;let nextPosition={x:node.internals.positionAbsolute.x+xDiff,y:node.internals.positionAbsolute.y+yDiff};snapToGrid&&(nextPosition=snapPosition(nextPosition,snapGrid));const{position,positionAbsolute}=calculateNodePosition({nodeId:node.id,nextPosition,nodeLookup,nodeExtent,nodeOrigin,onError});node.position=position,node.internals.positionAbsolute=positionAbsolute,nodeUpdates.set(node.id,node)}updateNodePositions(nodeUpdates)},[])}const NodeIdContext=createContext$1(null),Provider=NodeIdContext.Provider;NodeIdContext.Consumer;const useNodeId=()=>useContext$1(NodeIdContext),selector$h=s2=>({connectOnClick:s2.connectOnClick,noPanClassName:s2.noPanClassName,rfId:s2.rfId}),connectingSelector=(nodeId,handleId,type)=>state=>{const{connectionClickStartHandle:clickHandle,connectionMode,connection}=state,{fromHandle,toHandle,isValid}=connection,connectingTo=toHandle?.nodeId===nodeId&&toHandle?.id===handleId&&toHandle?.type===type;return{connectingFrom:fromHandle?.nodeId===nodeId&&fromHandle?.id===handleId&&fromHandle?.type===type,connectingTo,clickConnecting:clickHandle?.nodeId===nodeId&&clickHandle?.id===handleId&&clickHandle?.type===type,isPossibleEndHandle:connectionMode===ConnectionMode.Strict?fromHandle?.type!==type:nodeId!==fromHandle?.nodeId||handleId!==fromHandle?.id,connectionInProcess:!!fromHandle,valid:connectingTo&&isValid}};function HandleComponent({type="source",position=Position.Top,isValidConnection,isConnectable=!0,isConnectableStart=!0,isConnectableEnd=!0,id:id2,onConnect,children:children2,className,onMouseDown,onTouchStart,...rest},ref){const handleId=id2||null,isTarget=type==="target",store=useStoreApi(),nodeId=useNodeId(),{connectOnClick,noPanClassName,rfId}=useStore(selector$h,shallow$1),{connectingFrom,connectingTo,clickConnecting,isPossibleEndHandle,connectionInProcess,valid}=useStore(connectingSelector(nodeId,handleId,type),shallow$1);nodeId||store.getState().onError?.("010",errorMessages.error010());const onConnectExtended=params=>{const{defaultEdgeOptions,onConnect:onConnectAction,hasDefaultEdges}=store.getState(),edgeParams={...defaultEdgeOptions,...params};if(hasDefaultEdges){const{edges,setEdges}=store.getState();setEdges(addEdge(edgeParams,edges))}onConnectAction?.(edgeParams),onConnect?.(edgeParams)},onPointerDown2=event=>{if(!nodeId)return;const isMouseTriggered=isMouseEvent$1(event.nativeEvent);if(isConnectableStart&&(isMouseTriggered&&event.button===0||!isMouseTriggered)){const currentStore=store.getState();XYHandle.onPointerDown(event.nativeEvent,{autoPanOnConnect:currentStore.autoPanOnConnect,connectionMode:currentStore.connectionMode,connectionRadius:currentStore.connectionRadius,domNode:currentStore.domNode,nodeLookup:currentStore.nodeLookup,lib:currentStore.lib,isTarget,handleId,nodeId,flowId:currentStore.rfId,panBy:currentStore.panBy,cancelConnection:currentStore.cancelConnection,onConnectStart:currentStore.onConnectStart,onConnectEnd:currentStore.onConnectEnd,updateConnection:currentStore.updateConnection,onConnect:onConnectExtended,isValidConnection:isValidConnection||currentStore.isValidConnection,getTransform:()=>store.getState().transform,getFromHandle:()=>store.getState().connection.fromHandle,autoPanSpeed:currentStore.autoPanSpeed})}isMouseTriggered?onMouseDown?.(event):onTouchStart?.(event)},onClick=event=>{const{onClickConnectStart,onClickConnectEnd,connectionClickStartHandle,connectionMode,isValidConnection:isValidConnectionStore,lib,rfId:flowId}=store.getState();if(!nodeId||!connectionClickStartHandle&&!isConnectableStart)return;if(!connectionClickStartHandle){onClickConnectStart?.(event.nativeEvent,{nodeId,handleId,handleType:type}),store.setState({connectionClickStartHandle:{nodeId,type,id:handleId}});return}const doc=getHostForElement(event.target),isValidConnectionHandler=isValidConnection||isValidConnectionStore,{connection,isValid}=XYHandle.isValid(event.nativeEvent,{handle:{nodeId,id:handleId,type},connectionMode,fromNodeId:connectionClickStartHandle.nodeId,fromHandleId:connectionClickStartHandle.id||null,fromType:connectionClickStartHandle.type,isValidConnection:isValidConnectionHandler,flowId,doc,lib});isValid&&connection&&onConnectExtended(connection),onClickConnectEnd?.(event),store.setState({connectionClickStartHandle:null})};return jsx("div",{"data-handleid":handleId,"data-nodeid":nodeId,"data-handlepos":position,"data-id":`${rfId}-${nodeId}-${handleId}-${type}`,className:cc(["react-flow__handle",`react-flow__handle-${position}`,"nodrag",noPanClassName,className,{source:!isTarget,target:isTarget,connectable:isConnectable,connectablestart:isConnectableStart,connectableend:isConnectableEnd,clickconnecting:clickConnecting,connectingfrom:connectingFrom,connectingto:connectingTo,valid,connectionindicator:isConnectable&&(!connectionInProcess||isPossibleEndHandle)&&(connectionInProcess?isConnectableEnd:isConnectableStart)}]),onMouseDown:onPointerDown2,onTouchStart:onPointerDown2,onClick:connectOnClick?onClick:void 0,ref,...rest,children:children2})}const Handle=memo$1(fixedForwardRef(HandleComponent));function InputNode({data,isConnectable,sourcePosition=Position.Bottom}){return jsxs(Fragment,{children:[data?.label,jsx(Handle,{type:"source",position:sourcePosition,isConnectable})]})}function DefaultNode({data,isConnectable,targetPosition=Position.Top,sourcePosition=Position.Bottom}){return jsxs(Fragment,{children:[jsx(Handle,{type:"target",position:targetPosition,isConnectable}),data?.label,jsx(Handle,{type:"source",position:sourcePosition,isConnectable})]})}function GroupNode(){return null}function OutputNode({data,isConnectable,targetPosition=Position.Top}){return jsxs(Fragment,{children:[jsx(Handle,{type:"target",position:targetPosition,isConnectable}),data?.label]})}const arrowKeyDiffs={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},builtinNodeTypes={input:InputNode,default:DefaultNode,output:OutputNode,group:GroupNode};function getNodeInlineStyleDimensions(node){return node.internals.handleBounds===void 0?{width:node.width??node.initialWidth??node.style?.width,height:node.height??node.initialHeight??node.style?.height}:{width:node.width??node.style?.width,height:node.height??node.style?.height}}const selector$g=s2=>{const{width,height,x:x2,y:y2}=getInternalNodesBounds(s2.nodeLookup,{filter:node=>!!node.selected});return{width:isNumeric(width)?width:null,height:isNumeric(height)?height:null,userSelectionActive:s2.userSelectionActive,transformString:`translate(${s2.transform[0]}px,${s2.transform[1]}px) scale(${s2.transform[2]}) translate(${x2}px,${y2}px)`}};function NodesSelection({onSelectionContextMenu,noPanClassName,disableKeyboardA11y}){const store=useStoreApi(),{width,height,transformString,userSelectionActive}=useStore(selector$g,shallow$1),moveSelectedNodes=useMoveSelectedNodes(),nodeRef=useRef$1(null);if(useEffect$1(()=>{disableKeyboardA11y||nodeRef.current?.focus({preventScroll:!0})},[disableKeyboardA11y]),useDrag({nodeRef}),userSelectionActive||!width||!height)return null;const onContextMenu=onSelectionContextMenu?event=>{const selectedNodes=store.getState().nodes.filter(n2=>n2.selected);onSelectionContextMenu(event,selectedNodes)}:void 0,onKeyDown=event=>{Object.prototype.hasOwnProperty.call(arrowKeyDiffs,event.key)&&moveSelectedNodes({direction:arrowKeyDiffs[event.key],factor:event.shiftKey?4:1})};return jsx("div",{className:cc(["react-flow__nodesselection","react-flow__container",noPanClassName]),style:{transform:transformString},children:jsx("div",{ref:nodeRef,className:"react-flow__nodesselection-rect",onContextMenu,tabIndex:disableKeyboardA11y?void 0:-1,onKeyDown:disableKeyboardA11y?void 0:onKeyDown,style:{width,height}})})}const win=typeof window<"u"?window:void 0,selector$f=s2=>({nodesSelectionActive:s2.nodesSelectionActive,userSelectionActive:s2.userSelectionActive});function FlowRendererComponent({children:children2,onPaneClick,onPaneMouseEnter,onPaneMouseMove,onPaneMouseLeave,onPaneContextMenu,onPaneScroll,paneClickDistance,deleteKeyCode,selectionKeyCode,selectionOnDrag,selectionMode,onSelectionStart,onSelectionEnd,multiSelectionKeyCode,panActivationKeyCode,zoomActivationKeyCode,elementsSelectable,zoomOnScroll,zoomOnPinch,panOnScroll:_panOnScroll,panOnScrollSpeed,panOnScrollMode,zoomOnDoubleClick,panOnDrag:_panOnDrag,defaultViewport:defaultViewport2,translateExtent,minZoom,maxZoom,preventScrolling,onSelectionContextMenu,noWheelClassName,noPanClassName,disableKeyboardA11y,onViewportChange,isControlledViewport}){const{nodesSelectionActive,userSelectionActive}=useStore(selector$f),selectionKeyPressed=useKeyPress(selectionKeyCode,{target:win}),panActivationKeyPressed=useKeyPress(panActivationKeyCode,{target:win}),panOnDrag=panActivationKeyPressed||_panOnDrag,panOnScroll=panActivationKeyPressed||_panOnScroll,_selectionOnDrag=selectionOnDrag&&panOnDrag!==!0,isSelecting=selectionKeyPressed||userSelectionActive||_selectionOnDrag;return useGlobalKeyHandler({deleteKeyCode,multiSelectionKeyCode}),jsx(ZoomPane,{onPaneContextMenu,elementsSelectable,zoomOnScroll,zoomOnPinch,panOnScroll,panOnScrollSpeed,panOnScrollMode,zoomOnDoubleClick,panOnDrag:!selectionKeyPressed&&panOnDrag,defaultViewport:defaultViewport2,translateExtent,minZoom,maxZoom,zoomActivationKeyCode,preventScrolling,noWheelClassName,noPanClassName,onViewportChange,isControlledViewport,paneClickDistance,children:jsxs(Pane,{onSelectionStart,onSelectionEnd,onPaneClick,onPaneMouseEnter,onPaneMouseMove,onPaneMouseLeave,onPaneContextMenu,onPaneScroll,panOnDrag,isSelecting:!!isSelecting,selectionMode,selectionKeyPressed,selectionOnDrag:_selectionOnDrag,children:[children2,nodesSelectionActive&&jsx(NodesSelection,{onSelectionContextMenu,noPanClassName,disableKeyboardA11y})]})})}FlowRendererComponent.displayName="FlowRenderer";const FlowRenderer=memo$1(FlowRendererComponent),selector$e=onlyRenderVisible=>s2=>onlyRenderVisible?getNodesInside(s2.nodeLookup,{x:0,y:0,width:s2.width,height:s2.height},s2.transform,!0).map(node=>node.id):Array.from(s2.nodeLookup.keys());function useVisibleNodeIds(onlyRenderVisible){return useStore(useCallback$1(selector$e(onlyRenderVisible),[onlyRenderVisible]),shallow$1)}const selector$d=s2=>s2.updateNodeInternals;function useResizeObserver(){const updateNodeInternals2=useStore(selector$d),[resizeObserver]=useState$1(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(entries=>{const updates=new Map;entries.forEach(entry=>{const id2=entry.target.getAttribute("data-id");updates.set(id2,{id:id2,nodeElement:entry.target,force:!0})}),updateNodeInternals2(updates)}));return useEffect$1(()=>()=>{resizeObserver?.disconnect()},[resizeObserver]),resizeObserver}function useNodeObserver({node,nodeType,hasDimensions,resizeObserver}){const store=useStoreApi(),nodeRef=useRef$1(null),observedNode=useRef$1(null),prevSourcePosition=useRef$1(node.sourcePosition),prevTargetPosition=useRef$1(node.targetPosition),prevType=useRef$1(nodeType),isInitialized=hasDimensions&&!!node.internals.handleBounds;return useEffect$1(()=>{nodeRef.current&&!node.hidden&&(!isInitialized||observedNode.current!==nodeRef.current)&&(observedNode.current&&resizeObserver?.unobserve(observedNode.current),resizeObserver?.observe(nodeRef.current),observedNode.current=nodeRef.current)},[isInitialized,node.hidden]),useEffect$1(()=>()=>{observedNode.current&&(resizeObserver?.unobserve(observedNode.current),observedNode.current=null)},[]),useEffect$1(()=>{if(nodeRef.current){const typeChanged=prevType.current!==nodeType,sourcePosChanged=prevSourcePosition.current!==node.sourcePosition,targetPosChanged=prevTargetPosition.current!==node.targetPosition;(typeChanged||sourcePosChanged||targetPosChanged)&&(prevType.current=nodeType,prevSourcePosition.current=node.sourcePosition,prevTargetPosition.current=node.targetPosition,store.getState().updateNodeInternals(new Map([[node.id,{id:node.id,nodeElement:nodeRef.current,force:!0}]])))}},[node.id,nodeType,node.sourcePosition,node.targetPosition]),nodeRef}function NodeWrapper({id:id2,onClick,onMouseEnter,onMouseMove,onMouseLeave,onContextMenu,onDoubleClick,nodesDraggable,elementsSelectable,nodesConnectable,nodesFocusable,resizeObserver,noDragClassName,noPanClassName,disableKeyboardA11y,rfId,nodeTypes:nodeTypes2,nodeExtent,nodeClickDistance,onError}){const{node,internals,isParent:isParent2}=useStore(s2=>{const node2=s2.nodeLookup.get(id2),isParent22=s2.parentLookup.has(id2);return{node:node2,internals:node2.internals,isParent:isParent22}},shallow$1);let nodeType=node.type||"default",NodeComponent=nodeTypes2?.[nodeType]||builtinNodeTypes[nodeType];NodeComponent===void 0&&(onError?.("003",errorMessages.error003(nodeType)),nodeType="default",NodeComponent=builtinNodeTypes.default);const isDraggable=!!(node.draggable||nodesDraggable&&typeof node.draggable>"u"),isSelectable=!!(node.selectable||elementsSelectable&&typeof node.selectable>"u"),isConnectable=!!(node.connectable||nodesConnectable&&typeof node.connectable>"u"),isFocusable=!!(node.focusable||nodesFocusable&&typeof node.focusable>"u"),store=useStoreApi(),hasDimensions=nodeHasDimensions(node),nodeRef=useNodeObserver({node,nodeType,hasDimensions,resizeObserver}),dragging=useDrag({nodeRef,disabled:node.hidden||!isDraggable,noDragClassName,handleSelector:node.dragHandle,nodeId:id2,isSelectable,nodeClickDistance}),moveSelectedNodes=useMoveSelectedNodes();if(node.hidden)return null;const nodeDimensions=getNodeDimensions(node),inlineDimensions=getNodeInlineStyleDimensions(node),clampedPosition=nodeExtent?clampPosition(internals.positionAbsolute,nodeExtent):internals.positionAbsolute,hasPointerEvents=isSelectable||isDraggable||onClick||onMouseEnter||onMouseMove||onMouseLeave,onMouseEnterHandler=onMouseEnter?event=>onMouseEnter(event,{...internals.userNode}):void 0,onMouseMoveHandler=onMouseMove?event=>onMouseMove(event,{...internals.userNode}):void 0,onMouseLeaveHandler=onMouseLeave?event=>onMouseLeave(event,{...internals.userNode}):void 0,onContextMenuHandler=onContextMenu?event=>onContextMenu(event,{...internals.userNode}):void 0,onDoubleClickHandler=onDoubleClick?event=>onDoubleClick(event,{...internals.userNode}):void 0,onSelectNodeHandler=event=>{const{selectNodesOnDrag,nodeDragThreshold}=store.getState();isSelectable&&(!selectNodesOnDrag||!isDraggable||nodeDragThreshold>0)&&handleNodeClick({id:id2,store,nodeRef}),onClick&&onClick(event,{...internals.userNode})},onKeyDown=event=>{if(!(isInputDOMNode(event.nativeEvent)||disableKeyboardA11y))if(elementSelectionKeys.includes(event.key)&&isSelectable){const unselect=event.key==="Escape";handleNodeClick({id:id2,store,unselect,nodeRef})}else isDraggable&&node.selected&&Object.prototype.hasOwnProperty.call(arrowKeyDiffs,event.key)&&(store.setState({ariaLiveMessage:`Moved selected node ${event.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~clampedPosition.x}, y: ${~~clampedPosition.y}`}),moveSelectedNodes({direction:arrowKeyDiffs[event.key],factor:event.shiftKey?4:1}))};return jsx("div",{className:cc(["react-flow__node",`react-flow__node-${nodeType}`,{[noPanClassName]:isDraggable},node.className,{selected:node.selected,selectable:isSelectable,parent:isParent2,draggable:isDraggable,dragging}]),ref:nodeRef,style:{zIndex:internals.z,transform:`translate(${clampedPosition.x}px,${clampedPosition.y}px)`,pointerEvents:hasPointerEvents?"all":"none",visibility:hasDimensions?"visible":"hidden",...node.style,...inlineDimensions},"data-id":id2,"data-testid":`rf__node-${id2}`,onMouseEnter:onMouseEnterHandler,onMouseMove:onMouseMoveHandler,onMouseLeave:onMouseLeaveHandler,onContextMenu:onContextMenuHandler,onClick:onSelectNodeHandler,onDoubleClick:onDoubleClickHandler,onKeyDown:isFocusable?onKeyDown:void 0,tabIndex:isFocusable?0:void 0,role:isFocusable?"button":void 0,"aria-describedby":disableKeyboardA11y?void 0:`${ARIA_NODE_DESC_KEY}-${rfId}`,"aria-label":node.ariaLabel,children:jsx(Provider,{value:id2,children:jsx(NodeComponent,{id:id2,data:node.data,type:nodeType,positionAbsoluteX:clampedPosition.x,positionAbsoluteY:clampedPosition.y,selected:node.selected,selectable:isSelectable,draggable:isDraggable,deletable:node.deletable??!0,isConnectable,sourcePosition:node.sourcePosition,targetPosition:node.targetPosition,dragging,dragHandle:node.dragHandle,zIndex:internals.z,parentId:node.parentId,...nodeDimensions})})})}const selector$c=s2=>({nodesDraggable:s2.nodesDraggable,nodesConnectable:s2.nodesConnectable,nodesFocusable:s2.nodesFocusable,elementsSelectable:s2.elementsSelectable,onError:s2.onError});function NodeRendererComponent(props2){const{nodesDraggable,nodesConnectable,nodesFocusable,elementsSelectable,onError}=useStore(selector$c,shallow$1),nodeIds=useVisibleNodeIds(props2.onlyRenderVisibleElements),resizeObserver=useResizeObserver();return jsx("div",{className:"react-flow__nodes",style:containerStyle,children:nodeIds.map(nodeId=>jsx(NodeWrapper,{id:nodeId,nodeTypes:props2.nodeTypes,nodeExtent:props2.nodeExtent,onClick:props2.onNodeClick,onMouseEnter:props2.onNodeMouseEnter,onMouseMove:props2.onNodeMouseMove,onMouseLeave:props2.onNodeMouseLeave,onContextMenu:props2.onNodeContextMenu,onDoubleClick:props2.onNodeDoubleClick,noDragClassName:props2.noDragClassName,noPanClassName:props2.noPanClassName,rfId:props2.rfId,disableKeyboardA11y:props2.disableKeyboardA11y,resizeObserver,nodesDraggable,nodesConnectable,nodesFocusable,elementsSelectable,nodeClickDistance:props2.nodeClickDistance,onError},nodeId))})}NodeRendererComponent.displayName="NodeRenderer";const NodeRenderer=memo$1(NodeRendererComponent);function useVisibleEdgeIds(onlyRenderVisible){return useStore(useCallback$1(s2=>{if(!onlyRenderVisible)return s2.edges.map(edge=>edge.id);const visibleEdgeIds=[];if(s2.width&&s2.height)for(const edge of s2.edges){const sourceNode=s2.nodeLookup.get(edge.source),targetNode=s2.nodeLookup.get(edge.target);sourceNode&&targetNode&&isEdgeVisible({sourceNode,targetNode,width:s2.width,height:s2.height,transform:s2.transform})&&visibleEdgeIds.push(edge.id)}return visibleEdgeIds},[onlyRenderVisible]),shallow$1)}const ArrowSymbol=({color:color2="none",strokeWidth=1})=>jsx("polyline",{style:{stroke:color2,strokeWidth},strokeLinecap:"round",strokeLinejoin:"round",fill:"none",points:"-5,-4 0,0 -5,4"}),ArrowClosedSymbol=({color:color2="none",strokeWidth=1})=>jsx("polyline",{style:{stroke:color2,fill:color2,strokeWidth},strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"}),MarkerSymbols={[MarkerType.Arrow]:ArrowSymbol,[MarkerType.ArrowClosed]:ArrowClosedSymbol};function useMarkerSymbol(type){const store=useStoreApi();return useMemo$1(()=>Object.prototype.hasOwnProperty.call(MarkerSymbols,type)?MarkerSymbols[type]:(store.getState().onError?.("009",errorMessages.error009(type)),null),[type])}const Marker=({id:id2,type,color:color2,width=12.5,height=12.5,markerUnits="strokeWidth",strokeWidth,orient="auto-start-reverse"})=>{const Symbol3=useMarkerSymbol(type);return Symbol3?jsx("marker",{className:"react-flow__arrowhead",id:id2,markerWidth:`${width}`,markerHeight:`${height}`,viewBox:"-10 -10 20 20",markerUnits,orient,refX:"0",refY:"0",children:jsx(Symbol3,{color:color2,strokeWidth})}):null},MarkerDefinitions=({defaultColor,rfId})=>{const edges=useStore(s2=>s2.edges),defaultEdgeOptions=useStore(s2=>s2.defaultEdgeOptions),markers=useMemo$1(()=>createMarkerIds(edges,{id:rfId,defaultColor,defaultMarkerStart:defaultEdgeOptions?.markerStart,defaultMarkerEnd:defaultEdgeOptions?.markerEnd}),[edges,defaultEdgeOptions,rfId,defaultColor]);return markers.length?jsx("svg",{className:"react-flow__marker",children:jsx("defs",{children:markers.map(marker=>jsx(Marker,{id:marker.id,type:marker.type,color:marker.color,width:marker.width,height:marker.height,markerUnits:marker.markerUnits,strokeWidth:marker.strokeWidth,orient:marker.orient},marker.id))})}):null};MarkerDefinitions.displayName="MarkerDefinitions";var MarkerDefinitions$1=memo$1(MarkerDefinitions);function EdgeTextComponent({x:x2,y:y2,label,labelStyle={},labelShowBg=!0,labelBgStyle={},labelBgPadding=[2,4],labelBgBorderRadius=2,children:children2,className,...rest}){const[edgeTextBbox,setEdgeTextBbox]=useState$1({x:1,y:0,width:0,height:0}),edgeTextClasses=cc(["react-flow__edge-textwrapper",className]),edgeTextRef=useRef$1(null);return useEffect$1(()=>{if(edgeTextRef.current){const textBbox=edgeTextRef.current.getBBox();setEdgeTextBbox({x:textBbox.x,y:textBbox.y,width:textBbox.width,height:textBbox.height})}},[label]),typeof label>"u"||!label?null:jsxs("g",{transform:`translate(${x2-edgeTextBbox.width/2} ${y2-edgeTextBbox.height/2})`,className:edgeTextClasses,visibility:edgeTextBbox.width?"visible":"hidden",...rest,children:[labelShowBg&&jsx("rect",{width:edgeTextBbox.width+2*labelBgPadding[0],x:-labelBgPadding[0],y:-labelBgPadding[1],height:edgeTextBbox.height+2*labelBgPadding[1],className:"react-flow__edge-textbg",style:labelBgStyle,rx:labelBgBorderRadius,ry:labelBgBorderRadius}),jsx("text",{className:"react-flow__edge-text",y:edgeTextBbox.height/2,dy:"0.3em",ref:edgeTextRef,style:labelStyle,children:label}),children2]})}EdgeTextComponent.displayName="EdgeText";const EdgeText=memo$1(EdgeTextComponent);function BaseEdge({id:id2,path,labelX,labelY,label,labelStyle,labelShowBg,labelBgStyle,labelBgPadding,labelBgBorderRadius,style:style2,markerEnd,markerStart,className,interactionWidth=20}){return jsxs(Fragment,{children:[jsx("path",{id:id2,style:style2,d:path,fill:"none",className:cc(["react-flow__edge-path",className]),markerEnd,markerStart}),interactionWidth&&jsx("path",{d:path,fill:"none",strokeOpacity:0,strokeWidth:interactionWidth,className:"react-flow__edge-interaction"}),label&&isNumeric(labelX)&&isNumeric(labelY)?jsx(EdgeText,{x:labelX,y:labelY,label,labelStyle,labelShowBg,labelBgStyle,labelBgPadding,labelBgBorderRadius}):null]})}function getControl({pos,x1,y1,x2,y2}){return pos===Position.Left||pos===Position.Right?[.5*(x1+x2),y1]:[x1,.5*(y1+y2)]}function getSimpleBezierPath({sourceX,sourceY,sourcePosition=Position.Bottom,targetX,targetY,targetPosition=Position.Top}){const[sourceControlX,sourceControlY]=getControl({pos:sourcePosition,x1:sourceX,y1:sourceY,x2:targetX,y2:targetY}),[targetControlX,targetControlY]=getControl({pos:targetPosition,x1:targetX,y1:targetY,x2:sourceX,y2:sourceY}),[labelX,labelY,offsetX,offsetY]=getBezierEdgeCenter({sourceX,sourceY,targetX,targetY,sourceControlX,sourceControlY,targetControlX,targetControlY});return[`M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,labelX,labelY,offsetX,offsetY]}function createSimpleBezierEdge(params){return memo$1(({id:id2,sourceX,sourceY,targetX,targetY,sourcePosition=Position.Bottom,targetPosition=Position.Top,label,labelStyle,labelShowBg,labelBgStyle,labelBgPadding,labelBgBorderRadius,style:style2,markerEnd,markerStart,interactionWidth})=>{const[path,labelX,labelY]=getSimpleBezierPath({sourceX,sourceY,sourcePosition,targetX,targetY,targetPosition}),_id=params.isInternal?void 0:id2;return jsx(BaseEdge,{id:_id,path,labelX,labelY,label,labelStyle,labelShowBg,labelBgStyle,labelBgPadding,labelBgBorderRadius,style:style2,markerEnd,markerStart,interactionWidth})})}const SimpleBezierEdge=createSimpleBezierEdge({isInternal:!1}),SimpleBezierEdgeInternal=createSimpleBezierEdge({isInternal:!0});SimpleBezierEdge.displayName="SimpleBezierEdge";SimpleBezierEdgeInternal.displayName="SimpleBezierEdgeInternal";function createSmoothStepEdge(params){return memo$1(({id:id2,sourceX,sourceY,targetX,targetY,label,labelStyle,labelShowBg,labelBgStyle,labelBgPadding,labelBgBorderRadius,style:style2,sourcePosition=Position.Bottom,targetPosition=Position.Top,markerEnd,markerStart,pathOptions,interactionWidth})=>{const[path,labelX,labelY]=getSmoothStepPath({sourceX,sourceY,sourcePosition,targetX,targetY,targetPosition,borderRadius:pathOptions?.borderRadius,offset:pathOptions?.offset}),_id=params.isInternal?void 0:id2;return jsx(BaseEdge,{id:_id,path,labelX,labelY,label,labelStyle,labelShowBg,labelBgStyle,labelBgPadding,labelBgBorderRadius,style:style2,markerEnd,markerStart,interactionWidth})})}const SmoothStepEdge=createSmoothStepEdge({isInternal:!1}),SmoothStepEdgeInternal=createSmoothStepEdge({isInternal:!0});SmoothStepEdge.displayName="SmoothStepEdge";SmoothStepEdgeInternal.displayName="SmoothStepEdgeInternal";function createStepEdge(params){return memo$1(({id:id2,...props2})=>{const _id=params.isInternal?void 0:id2;return jsx(SmoothStepEdge,{...props2,id:_id,pathOptions:useMemo$1(()=>({borderRadius:0,offset:props2.pathOptions?.offset}),[props2.pathOptions?.offset])})})}const StepEdge=createStepEdge({isInternal:!1}),StepEdgeInternal=createStepEdge({isInternal:!0});StepEdge.displayName="StepEdge";StepEdgeInternal.displayName="StepEdgeInternal";function createStraightEdge(params){return memo$1(({id:id2,sourceX,sourceY,targetX,targetY,label,labelStyle,labelShowBg,labelBgStyle,labelBgPadding,labelBgBorderRadius,style:style2,markerEnd,markerStart,interactionWidth})=>{const[path,labelX,labelY]=getStraightPath({sourceX,sourceY,targetX,targetY}),_id=params.isInternal?void 0:id2;return jsx(BaseEdge,{id:_id,path,labelX,labelY,label,labelStyle,labelShowBg,labelBgStyle,labelBgPadding,labelBgBorderRadius,style:style2,markerEnd,markerStart,interactionWidth})})}const StraightEdge=createStraightEdge({isInternal:!1}),StraightEdgeInternal=createStraightEdge({isInternal:!0});StraightEdge.displayName="StraightEdge";StraightEdgeInternal.displayName="StraightEdgeInternal";function createBezierEdge(params){return memo$1(({id:id2,sourceX,sourceY,targetX,targetY,sourcePosition=Position.Bottom,targetPosition=Position.Top,label,labelStyle,labelShowBg,labelBgStyle,labelBgPadding,labelBgBorderRadius,style:style2,markerEnd,markerStart,pathOptions,interactionWidth})=>{const[path,labelX,labelY]=getBezierPath({sourceX,sourceY,sourcePosition,targetX,targetY,targetPosition,curvature:pathOptions?.curvature}),_id=params.isInternal?void 0:id2;return jsx(BaseEdge,{id:_id,path,labelX,labelY,label,labelStyle,labelShowBg,labelBgStyle,labelBgPadding,labelBgBorderRadius,style:style2,markerEnd,markerStart,interactionWidth})})}const BezierEdge=createBezierEdge({isInternal:!1}),BezierEdgeInternal=createBezierEdge({isInternal:!0});BezierEdge.displayName="BezierEdge";BezierEdgeInternal.displayName="BezierEdgeInternal";const builtinEdgeTypes={default:BezierEdgeInternal,straight:StraightEdgeInternal,step:StepEdgeInternal,smoothstep:SmoothStepEdgeInternal,simplebezier:SimpleBezierEdgeInternal},nullPosition={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},shiftX=(x2,shift2,position)=>position===Position.Left?x2-shift2:position===Position.Right?x2+shift2:x2,shiftY=(y2,shift2,position)=>position===Position.Top?y2-shift2:position===Position.Bottom?y2+shift2:y2,EdgeUpdaterClassName="react-flow__edgeupdater";function EdgeAnchor({position,centerX,centerY,radius=10,onMouseDown,onMouseEnter,onMouseOut,type}){return jsx("circle",{onMouseDown,onMouseEnter,onMouseOut,className:cc([EdgeUpdaterClassName,`${EdgeUpdaterClassName}-${type}`]),cx:shiftX(centerX,radius,position),cy:shiftY(centerY,radius,position),r:radius,stroke:"transparent",fill:"transparent"})}function EdgeUpdateAnchors({isReconnectable,reconnectRadius,edge,targetHandleId,sourceHandleId,sourceX,sourceY,targetX,targetY,sourcePosition,targetPosition,onReconnect,onReconnectStart,onReconnectEnd,setReconnecting,setUpdateHover}){const store=useStoreApi(),handleEdgeUpdater=(event,isSourceHandle)=>{if(event.button!==0)return;const{autoPanOnConnect,domNode,isValidConnection,connectionMode,connectionRadius,lib,onConnectStart,onConnectEnd,cancelConnection,nodeLookup,rfId:flowId,panBy:panBy2,updateConnection}=store.getState(),nodeId=isSourceHandle?edge.target:edge.source,handleId=(isSourceHandle?targetHandleId:sourceHandleId)||null,handleType=isSourceHandle?"target":"source",isTarget=isSourceHandle;setReconnecting(!0),onReconnectStart?.(event,edge,handleType);const _onReconnectEnd=evt=>{setReconnecting(!1),onReconnectEnd?.(evt,edge,handleType)},onConnectEdge=connection=>onReconnect?.(edge,connection);XYHandle.onPointerDown(event.nativeEvent,{autoPanOnConnect,connectionMode,connectionRadius,domNode,handleId,nodeId,nodeLookup,isTarget,edgeUpdaterType:handleType,lib,flowId,cancelConnection,panBy:panBy2,isValidConnection,onConnect:onConnectEdge,onConnectStart,onConnectEnd,onReconnectEnd:_onReconnectEnd,updateConnection,getTransform:()=>store.getState().transform,getFromHandle:()=>store.getState().connection.fromHandle})},onReconnectSourceMouseDown=event=>handleEdgeUpdater(event,!0),onReconnectTargetMouseDown=event=>handleEdgeUpdater(event,!1),onReconnectMouseEnter=()=>setUpdateHover(!0),onReconnectMouseOut=()=>setUpdateHover(!1);return jsxs(Fragment,{children:[(isReconnectable==="source"||isReconnectable===!0)&&jsx(EdgeAnchor,{position:sourcePosition,centerX:sourceX,centerY:sourceY,radius:reconnectRadius,onMouseDown:onReconnectSourceMouseDown,onMouseEnter:onReconnectMouseEnter,onMouseOut:onReconnectMouseOut,type:"source"}),(isReconnectable==="target"||isReconnectable===!0)&&jsx(EdgeAnchor,{position:targetPosition,centerX:targetX,centerY:targetY,radius:reconnectRadius,onMouseDown:onReconnectTargetMouseDown,onMouseEnter:onReconnectMouseEnter,onMouseOut:onReconnectMouseOut,type:"target"})]})}function EdgeWrapper({id:id2,edgesFocusable,edgesReconnectable,elementsSelectable,onClick,onDoubleClick,onContextMenu,onMouseEnter,onMouseMove,onMouseLeave,reconnectRadius,onReconnect,onReconnectStart,onReconnectEnd,rfId,edgeTypes:edgeTypes2,noPanClassName,onError,disableKeyboardA11y}){let edge=useStore(s2=>s2.edgeLookup.get(id2));const defaultEdgeOptions=useStore(s2=>s2.defaultEdgeOptions);edge=defaultEdgeOptions?{...defaultEdgeOptions,...edge}:edge;let edgeType=edge.type||"default",EdgeComponent=edgeTypes2?.[edgeType]||builtinEdgeTypes[edgeType];EdgeComponent===void 0&&(onError?.("011",errorMessages.error011(edgeType)),edgeType="default",EdgeComponent=builtinEdgeTypes.default);const isFocusable=!!(edge.focusable||edgesFocusable&&typeof edge.focusable>"u"),isReconnectable=typeof onReconnect<"u"&&(edge.reconnectable||edgesReconnectable&&typeof edge.reconnectable>"u"),isSelectable=!!(edge.selectable||elementsSelectable&&typeof edge.selectable>"u"),edgeRef=useRef$1(null),[updateHover,setUpdateHover]=useState$1(!1),[reconnecting,setReconnecting]=useState$1(!1),store=useStoreApi(),{zIndex,sourceX,sourceY,targetX,targetY,sourcePosition,targetPosition}=useStore(useCallback$1(store2=>{const sourceNode=store2.nodeLookup.get(edge.source),targetNode=store2.nodeLookup.get(edge.target);if(!sourceNode||!targetNode)return{zIndex:edge.zIndex,...nullPosition};const edgePosition=getEdgePosition({id:id2,sourceNode,targetNode,sourceHandle:edge.sourceHandle||null,targetHandle:edge.targetHandle||null,connectionMode:store2.connectionMode,onError});return{zIndex:getElevatedEdgeZIndex({selected:edge.selected,zIndex:edge.zIndex,sourceNode,targetNode,elevateOnSelect:store2.elevateEdgesOnSelect}),...edgePosition||nullPosition}},[edge.source,edge.target,edge.sourceHandle,edge.targetHandle,edge.selected,edge.zIndex]),shallow$1),markerStartUrl=useMemo$1(()=>edge.markerStart?`url('#${getMarkerId(edge.markerStart,rfId)}')`:void 0,[edge.markerStart,rfId]),markerEndUrl=useMemo$1(()=>edge.markerEnd?`url('#${getMarkerId(edge.markerEnd,rfId)}')`:void 0,[edge.markerEnd,rfId]);if(edge.hidden||sourceX===null||sourceY===null||targetX===null||targetY===null)return null;const onEdgeClick=event=>{const{addSelectedEdges,unselectNodesAndEdges,multiSelectionActive}=store.getState();isSelectable&&(store.setState({nodesSelectionActive:!1}),edge.selected&&multiSelectionActive?(unselectNodesAndEdges({nodes:[],edges:[edge]}),edgeRef.current?.blur()):addSelectedEdges([id2])),onClick&&onClick(event,edge)},onEdgeDoubleClick=onDoubleClick?event=>{onDoubleClick(event,{...edge})}:void 0,onEdgeContextMenu=onContextMenu?event=>{onContextMenu(event,{...edge})}:void 0,onEdgeMouseEnter=onMouseEnter?event=>{onMouseEnter(event,{...edge})}:void 0,onEdgeMouseMove=onMouseMove?event=>{onMouseMove(event,{...edge})}:void 0,onEdgeMouseLeave=onMouseLeave?event=>{onMouseLeave(event,{...edge})}:void 0,onKeyDown=event=>{if(!disableKeyboardA11y&&elementSelectionKeys.includes(event.key)&&isSelectable){const{unselectNodesAndEdges,addSelectedEdges}=store.getState();event.key==="Escape"?(edgeRef.current?.blur(),unselectNodesAndEdges({edges:[edge]})):addSelectedEdges([id2])}};return jsx("svg",{style:{zIndex},children:jsxs("g",{className:cc(["react-flow__edge",`react-flow__edge-${edgeType}`,edge.className,noPanClassName,{selected:edge.selected,animated:edge.animated,inactive:!isSelectable&&!onClick,updating:updateHover,selectable:isSelectable}]),onClick:onEdgeClick,onDoubleClick:onEdgeDoubleClick,onContextMenu:onEdgeContextMenu,onMouseEnter:onEdgeMouseEnter,onMouseMove:onEdgeMouseMove,onMouseLeave:onEdgeMouseLeave,onKeyDown:isFocusable?onKeyDown:void 0,tabIndex:isFocusable?0:void 0,role:isFocusable?"button":"img","data-id":id2,"data-testid":`rf__edge-${id2}`,"aria-label":edge.ariaLabel===null?void 0:edge.ariaLabel||`Edge from ${edge.source} to ${edge.target}`,"aria-describedby":isFocusable?`${ARIA_EDGE_DESC_KEY}-${rfId}`:void 0,ref:edgeRef,children:[!reconnecting&&jsx(EdgeComponent,{id:id2,source:edge.source,target:edge.target,type:edge.type,selected:edge.selected,animated:edge.animated,selectable:isSelectable,deletable:edge.deletable??!0,label:edge.label,labelStyle:edge.labelStyle,labelShowBg:edge.labelShowBg,labelBgStyle:edge.labelBgStyle,labelBgPadding:edge.labelBgPadding,labelBgBorderRadius:edge.labelBgBorderRadius,sourceX,sourceY,targetX,targetY,sourcePosition,targetPosition,data:edge.data,style:edge.style,sourceHandleId:edge.sourceHandle,targetHandleId:edge.targetHandle,markerStart:markerStartUrl,markerEnd:markerEndUrl,pathOptions:"pathOptions"in edge?edge.pathOptions:void 0,interactionWidth:edge.interactionWidth}),isReconnectable&&jsx(EdgeUpdateAnchors,{edge,isReconnectable,reconnectRadius,onReconnect,onReconnectStart,onReconnectEnd,sourceX,sourceY,targetX,targetY,sourcePosition,targetPosition,setUpdateHover,setReconnecting,sourceHandleId:edge.sourceHandle,targetHandleId:edge.targetHandle})]})})}const selector$b=s2=>({width:s2.width,height:s2.height,edgesFocusable:s2.edgesFocusable,edgesReconnectable:s2.edgesReconnectable,elementsSelectable:s2.elementsSelectable,connectionMode:s2.connectionMode,onError:s2.onError});function EdgeRendererComponent({defaultMarkerColor,onlyRenderVisibleElements,rfId,edgeTypes:edgeTypes2,noPanClassName,onReconnect,onEdgeContextMenu,onEdgeMouseEnter,onEdgeMouseMove,onEdgeMouseLeave,onEdgeClick,reconnectRadius,onEdgeDoubleClick,onReconnectStart,onReconnectEnd,disableKeyboardA11y}){const{edgesFocusable,edgesReconnectable,elementsSelectable,onError}=useStore(selector$b,shallow$1),edgeIds=useVisibleEdgeIds(onlyRenderVisibleElements);return jsxs("div",{className:"react-flow__edges",children:[jsx(MarkerDefinitions$1,{defaultColor:defaultMarkerColor,rfId}),edgeIds.map(id2=>jsx(EdgeWrapper,{id:id2,edgesFocusable,edgesReconnectable,elementsSelectable,noPanClassName,onReconnect,onContextMenu:onEdgeContextMenu,onMouseEnter:onEdgeMouseEnter,onMouseMove:onEdgeMouseMove,onMouseLeave:onEdgeMouseLeave,onClick:onEdgeClick,reconnectRadius,onDoubleClick:onEdgeDoubleClick,onReconnectStart,onReconnectEnd,rfId,onError,edgeTypes:edgeTypes2,disableKeyboardA11y},id2))]})}EdgeRendererComponent.displayName="EdgeRenderer";const EdgeRenderer=memo$1(EdgeRendererComponent),selector$a=s2=>`translate(${s2.transform[0]}px,${s2.transform[1]}px) scale(${s2.transform[2]})`;function Viewport({children:children2}){const transform2=useStore(selector$a);return jsx("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:transform2},children:children2})}function useOnInitHandler(onInit){const rfInstance=useReactFlow(),isInitialized=useRef$1(!1);useEffect$1(()=>{!isInitialized.current&&rfInstance.viewportInitialized&&onInit&&(setTimeout(()=>onInit(rfInstance),1),isInitialized.current=!0)},[onInit,rfInstance.viewportInitialized])}const selector$9=state=>state.panZoom?.syncViewport;function useViewportSync(viewport){const syncViewport=useStore(selector$9),store=useStoreApi();return useEffect$1(()=>{viewport&&(syncViewport?.(viewport),store.setState({transform:[viewport.x,viewport.y,viewport.zoom]}))},[viewport,syncViewport]),null}const selector$8=s2=>s2.connection.inProgress?{...s2.connection,to:pointToRendererPoint(s2.connection.to,s2.transform)}:{...s2.connection};function useConnection(){return useStore(selector$8,shallow$1)}const selector$7=s2=>({nodesConnectable:s2.nodesConnectable,isValid:s2.connection.isValid,inProgress:s2.connection.inProgress,width:s2.width,height:s2.height});function ConnectionLineWrapper({containerStyle:containerStyle2,style:style2,type,component}){const{nodesConnectable,width,height,isValid,inProgress}=useStore(selector$7,shallow$1);return!(width&&nodesConnectable&&inProgress)?null:jsx("svg",{style:containerStyle2,width,height,className:"react-flow__connectionline react-flow__container",children:jsx("g",{className:cc(["react-flow__connection",getConnectionStatus(isValid)]),children:jsx(ConnectionLine,{style:style2,type,CustomComponent:component,isValid})})})}const ConnectionLine=({style:style2,type=ConnectionLineType.Bezier,CustomComponent,isValid})=>{const{inProgress,from,fromNode,fromHandle,fromPosition,to,toNode,toHandle,toPosition}=useConnection();if(!inProgress)return;if(CustomComponent)return jsx(CustomComponent,{connectionLineType:type,connectionLineStyle:style2,fromNode,fromHandle,fromX:from.x,fromY:from.y,toX:to.x,toY:to.y,fromPosition,toPosition,connectionStatus:getConnectionStatus(isValid),toNode,toHandle});let path="";const pathParams={sourceX:from.x,sourceY:from.y,sourcePosition:fromPosition,targetX:to.x,targetY:to.y,targetPosition:toPosition};switch(type){case ConnectionLineType.Bezier:[path]=getBezierPath(pathParams);break;case ConnectionLineType.SimpleBezier:[path]=getSimpleBezierPath(pathParams);break;case ConnectionLineType.Step:[path]=getSmoothStepPath({...pathParams,borderRadius:0});break;case ConnectionLineType.SmoothStep:[path]=getSmoothStepPath(pathParams);break;default:[path]=getStraightPath(pathParams)}return jsx("path",{d:path,fill:"none",className:"react-flow__connection-path",style:style2})};ConnectionLine.displayName="ConnectionLine";const emptyTypes={};function useNodeOrEdgeTypesWarning(nodeOrEdgeTypes=emptyTypes){useRef$1(nodeOrEdgeTypes),useStoreApi(),useEffect$1(()=>{},[nodeOrEdgeTypes])}function useStylesLoadedWarning(){useStoreApi(),useRef$1(!1),useEffect$1(()=>{},[])}function GraphViewComponent({nodeTypes:nodeTypes2,edgeTypes:edgeTypes2,onInit,onNodeClick,onEdgeClick,onNodeDoubleClick,onEdgeDoubleClick,onNodeMouseEnter,onNodeMouseMove,onNodeMouseLeave,onNodeContextMenu,onSelectionContextMenu,onSelectionStart,onSelectionEnd,connectionLineType,connectionLineStyle,connectionLineComponent,connectionLineContainerStyle,selectionKeyCode,selectionOnDrag,selectionMode,multiSelectionKeyCode,panActivationKeyCode,zoomActivationKeyCode,deleteKeyCode,onlyRenderVisibleElements,elementsSelectable,defaultViewport:defaultViewport2,translateExtent,minZoom,maxZoom,preventScrolling,defaultMarkerColor,zoomOnScroll,zoomOnPinch,panOnScroll,panOnScrollSpeed,panOnScrollMode,zoomOnDoubleClick,panOnDrag,onPaneClick,onPaneMouseEnter,onPaneMouseMove,onPaneMouseLeave,onPaneScroll,onPaneContextMenu,paneClickDistance,nodeClickDistance,onEdgeContextMenu,onEdgeMouseEnter,onEdgeMouseMove,onEdgeMouseLeave,reconnectRadius,onReconnect,onReconnectStart,onReconnectEnd,noDragClassName,noWheelClassName,noPanClassName,disableKeyboardA11y,nodeExtent,rfId,viewport,onViewportChange}){return useNodeOrEdgeTypesWarning(nodeTypes2),useNodeOrEdgeTypesWarning(edgeTypes2),useStylesLoadedWarning(),useOnInitHandler(onInit),useViewportSync(viewport),jsx(FlowRenderer,{onPaneClick,onPaneMouseEnter,onPaneMouseMove,onPaneMouseLeave,onPaneContextMenu,onPaneScroll,paneClickDistance,deleteKeyCode,selectionKeyCode,selectionOnDrag,selectionMode,onSelectionStart,onSelectionEnd,multiSelectionKeyCode,panActivationKeyCode,zoomActivationKeyCode,elementsSelectable,zoomOnScroll,zoomOnPinch,zoomOnDoubleClick,panOnScroll,panOnScrollSpeed,panOnScrollMode,panOnDrag,defaultViewport:defaultViewport2,translateExtent,minZoom,maxZoom,onSelectionContextMenu,preventScrolling,noDragClassName,noWheelClassName,noPanClassName,disableKeyboardA11y,onViewportChange,isControlledViewport:!!viewport,children:jsxs(Viewport,{children:[jsx(EdgeRenderer,{edgeTypes:edgeTypes2,onEdgeClick,onEdgeDoubleClick,onReconnect,onReconnectStart,onReconnectEnd,onlyRenderVisibleElements,onEdgeContextMenu,onEdgeMouseEnter,onEdgeMouseMove,onEdgeMouseLeave,reconnectRadius,defaultMarkerColor,noPanClassName,disableKeyboardA11y,rfId}),jsx(ConnectionLineWrapper,{style:connectionLineStyle,type:connectionLineType,component:connectionLineComponent,containerStyle:connectionLineContainerStyle}),jsx("div",{className:"react-flow__edgelabel-renderer"}),jsx(NodeRenderer,{nodeTypes:nodeTypes2,onNodeClick,onNodeDoubleClick,onNodeMouseEnter,onNodeMouseMove,onNodeMouseLeave,onNodeContextMenu,nodeClickDistance,onlyRenderVisibleElements,noPanClassName,noDragClassName,disableKeyboardA11y,nodeExtent,rfId}),jsx("div",{className:"react-flow__viewport-portal"})]})})}GraphViewComponent.displayName="GraphView";const GraphView=memo$1(GraphViewComponent),getInitialState=({nodes,edges,defaultNodes,defaultEdges,width,height,fitView:fitView2,nodeOrigin}={})=>{const nodeLookup=new Map,parentLookup=new Map,connectionLookup=new Map,edgeLookup=new Map,storeEdges=defaultEdges??edges??[],storeNodes=defaultNodes??nodes??[],storeNodeOrigin=nodeOrigin??[0,0];updateConnectionLookup(connectionLookup,edgeLookup,storeEdges),adoptUserNodes(storeNodes,nodeLookup,parentLookup,{nodeOrigin:storeNodeOrigin,elevateNodesOnSelect:!1});let transform2=[0,0,1];if(fitView2&&width&&height){const bounds=getInternalNodesBounds(nodeLookup,{filter:node=>!!((node.width||node.initialWidth)&&(node.height||node.initialHeight))}),{x:x2,y:y2,zoom:zoom2}=getViewportForBounds(bounds,width,height,.5,2,.1);transform2=[x2,y2,zoom2]}return{rfId:"1",width:0,height:0,transform:transform2,nodes:storeNodes,nodeLookup,parentLookup,edges:storeEdges,edgeLookup,connectionLookup,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:defaultNodes!==void 0,hasDefaultEdges:defaultEdges!==void 0,panZoom:null,minZoom:.5,maxZoom:2,translateExtent:infiniteExtent,nodeExtent:infiniteExtent,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:ConnectionMode.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:storeNodeOrigin,nodeDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!1,fitViewOnInit:!1,fitViewDone:!1,fitViewOnInitOptions:void 0,selectNodesOnDrag:!0,multiSelectionActive:!1,connection:{...initialConnection},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanSpeed:15,connectionRadius:20,onError:devWarn,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1}},createStore=({nodes,edges,defaultNodes,defaultEdges,width,height,fitView:fitView$1,nodeOrigin})=>createWithEqualityFn((set2,get2)=>({...getInitialState({nodes,edges,width,height,fitView:fitView$1,nodeOrigin,defaultNodes,defaultEdges}),setNodes:nodes2=>{const{nodeLookup,parentLookup,nodeOrigin:nodeOrigin2,elevateNodesOnSelect}=get2();adoptUserNodes(nodes2,nodeLookup,parentLookup,{nodeOrigin:nodeOrigin2,elevateNodesOnSelect,checkEquality:!0}),set2({nodes:nodes2})},setEdges:edges2=>{const{connectionLookup,edgeLookup}=get2();updateConnectionLookup(connectionLookup,edgeLookup,edges2),set2({edges:edges2})},setDefaultNodesAndEdges:(nodes2,edges2)=>{if(nodes2){const{setNodes}=get2();setNodes(nodes2),set2({hasDefaultNodes:!0})}if(edges2){const{setEdges}=get2();setEdges(edges2),set2({hasDefaultEdges:!0})}},updateNodeInternals:updates=>{const{triggerNodeChanges,nodeLookup,parentLookup,fitViewOnInit,fitViewDone,fitViewOnInitOptions,domNode,nodeOrigin:nodeOrigin2,debug,fitViewSync}=get2(),{changes,updatedInternals}=updateNodeInternals(updates,nodeLookup,parentLookup,domNode,nodeOrigin2);if(!updatedInternals)return;updateAbsolutePositions(nodeLookup,parentLookup,{nodeOrigin:nodeOrigin2});let nextFitViewDone=fitViewDone;!fitViewDone&&fitViewOnInit&&(nextFitViewDone=fitViewSync({...fitViewOnInitOptions,nodes:fitViewOnInitOptions?.nodes})),set2({fitViewDone:nextFitViewDone}),changes?.length>0&&(debug&&console.log("React Flow: trigger node changes",changes),triggerNodeChanges?.(changes))},updateNodePositions:(nodeDragItems,dragging=!1)=>{const parentExpandChildren=[],changes=[];for(const[id2,dragItem]of nodeDragItems){const change={id:id2,type:"position",position:dragItem.position,dragging};dragItem?.expandParent&&dragItem?.parentId&&change.position&&(parentExpandChildren.push({id:id2,parentId:dragItem.parentId,rect:{...dragItem.internals.positionAbsolute,width:dragItem.measured.width,height:dragItem.measured.height}}),change.position.x=Math.max(0,change.position.x),change.position.y=Math.max(0,change.position.y)),changes.push(change)}if(parentExpandChildren.length>0){const{nodeLookup,parentLookup,nodeOrigin:nodeOrigin2}=get2(),parentExpandChanges=handleExpandParent(parentExpandChildren,nodeLookup,parentLookup,nodeOrigin2);changes.push(...parentExpandChanges)}get2().triggerNodeChanges(changes)},triggerNodeChanges:changes=>{const{onNodesChange,setNodes,nodes:nodes2,hasDefaultNodes,debug}=get2();if(changes?.length){if(hasDefaultNodes){const updatedNodes=applyNodeChanges(changes,nodes2);setNodes(updatedNodes)}debug&&console.log("React Flow: trigger node changes",changes),onNodesChange?.(changes)}},triggerEdgeChanges:changes=>{const{onEdgesChange,setEdges,edges:edges2,hasDefaultEdges,debug}=get2();if(changes?.length){if(hasDefaultEdges){const updatedEdges=applyEdgeChanges(changes,edges2);setEdges(updatedEdges)}debug&&console.log("React Flow: trigger edge changes",changes),onEdgesChange?.(changes)}},addSelectedNodes:selectedNodeIds=>{const{multiSelectionActive,edgeLookup,nodeLookup,triggerNodeChanges,triggerEdgeChanges}=get2();if(multiSelectionActive){const nodeChanges=selectedNodeIds.map(nodeId=>createSelectionChange(nodeId,!0));triggerNodeChanges(nodeChanges);return}triggerNodeChanges(getSelectionChanges(nodeLookup,new Set([...selectedNodeIds]),!0)),triggerEdgeChanges(getSelectionChanges(edgeLookup))},addSelectedEdges:selectedEdgeIds=>{const{multiSelectionActive,edgeLookup,nodeLookup,triggerNodeChanges,triggerEdgeChanges}=get2();if(multiSelectionActive){const changedEdges=selectedEdgeIds.map(edgeId=>createSelectionChange(edgeId,!0));triggerEdgeChanges(changedEdges);return}triggerEdgeChanges(getSelectionChanges(edgeLookup,new Set([...selectedEdgeIds]))),triggerNodeChanges(getSelectionChanges(nodeLookup,new Set,!0))},unselectNodesAndEdges:({nodes:nodes2,edges:edges2}={})=>{const{edges:storeEdges,nodes:storeNodes,triggerNodeChanges,triggerEdgeChanges}=get2(),nodesToUnselect=nodes2||storeNodes,edgesToUnselect=edges2||storeEdges,nodeChanges=nodesToUnselect.map(n2=>(n2.selected=!1,createSelectionChange(n2.id,!1))),edgeChanges=edgesToUnselect.map(edge=>createSelectionChange(edge.id,!1));triggerNodeChanges(nodeChanges),triggerEdgeChanges(edgeChanges)},setMinZoom:minZoom=>{const{panZoom,maxZoom}=get2();panZoom?.setScaleExtent([minZoom,maxZoom]),set2({minZoom})},setMaxZoom:maxZoom=>{const{panZoom,minZoom}=get2();panZoom?.setScaleExtent([minZoom,maxZoom]),set2({maxZoom})},setTranslateExtent:translateExtent=>{get2().panZoom?.setTranslateExtent(translateExtent),set2({translateExtent})},setPaneClickDistance:clickDistance=>{get2().panZoom?.setClickDistance(clickDistance)},resetSelectedElements:()=>{const{edges:edges2,nodes:nodes2,triggerNodeChanges,triggerEdgeChanges}=get2(),nodeChanges=nodes2.reduce((res,node)=>node.selected?[...res,createSelectionChange(node.id,!1)]:res,[]),edgeChanges=edges2.reduce((res,edge)=>edge.selected?[...res,createSelectionChange(edge.id,!1)]:res,[]);triggerNodeChanges(nodeChanges),triggerEdgeChanges(edgeChanges)},setNodeExtent:nodeExtent=>{const{nodeLookup}=get2();for(const[,node]of nodeLookup){const positionAbsolute=clampPosition(node.position,nodeExtent);nodeLookup.set(node.id,{...node,internals:{...node.internals,positionAbsolute}})}set2({nodeExtent})},panBy:delta=>{const{transform:transform2,width:width2,height:height2,panZoom,translateExtent}=get2();return panBy({delta,panZoom,transform:transform2,translateExtent,width:width2,height:height2})},fitView:options=>{const{panZoom,width:width2,height:height2,minZoom,maxZoom,nodeLookup}=get2();if(!panZoom)return Promise.resolve(!1);const fitViewNodes=getFitViewNodes(nodeLookup,options);return fitView({nodes:fitViewNodes,width:width2,height:height2,panZoom,minZoom,maxZoom},options)},fitViewSync:options=>{const{panZoom,width:width2,height:height2,minZoom,maxZoom,nodeLookup}=get2();if(!panZoom)return!1;const fitViewNodes=getFitViewNodes(nodeLookup,options);return fitView({nodes:fitViewNodes,width:width2,height:height2,panZoom,minZoom,maxZoom},options),fitViewNodes.size>0},cancelConnection:()=>{set2({connection:{...initialConnection}})},updateConnection:connection=>{set2({connection})},reset:()=>set2({...getInitialState()})}),Object.is);function ReactFlowProvider({initialNodes:nodes,initialEdges:edges,defaultNodes,defaultEdges,initialWidth:width,initialHeight:height,fitView:fitView2,nodeOrigin,children:children2}){const[store]=useState$1(()=>createStore({nodes,edges,defaultNodes,defaultEdges,width,height,fitView:fitView2,nodeOrigin}));return jsx(Provider$1,{value:store,children:jsx(BatchProvider,{children:children2})})}function Wrapper({children:children2,nodes,edges,defaultNodes,defaultEdges,width,height,fitView:fitView2,nodeOrigin}){return useContext$1(StoreContext)?jsx(Fragment,{children:children2}):jsx(ReactFlowProvider,{initialNodes:nodes,initialEdges:edges,defaultNodes,defaultEdges,initialWidth:width,initialHeight:height,fitView:fitView2,nodeOrigin,children:children2})}const wrapperStyle={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function ReactFlow({nodes,edges,defaultNodes,defaultEdges,className,nodeTypes:nodeTypes2,edgeTypes:edgeTypes2,onNodeClick,onEdgeClick,onInit,onMove,onMoveStart,onMoveEnd,onConnect,onConnectStart,onConnectEnd,onClickConnectStart,onClickConnectEnd,onNodeMouseEnter,onNodeMouseMove,onNodeMouseLeave,onNodeContextMenu,onNodeDoubleClick,onNodeDragStart,onNodeDrag,onNodeDragStop,onNodesDelete,onEdgesDelete,onDelete,onSelectionChange,onSelectionDragStart,onSelectionDrag,onSelectionDragStop,onSelectionContextMenu,onSelectionStart,onSelectionEnd,onBeforeDelete,connectionMode,connectionLineType=ConnectionLineType.Bezier,connectionLineStyle,connectionLineComponent,connectionLineContainerStyle,deleteKeyCode="Backspace",selectionKeyCode="Shift",selectionOnDrag=!1,selectionMode=SelectionMode.Full,panActivationKeyCode="Space",multiSelectionKeyCode=isMacOs()?"Meta":"Control",zoomActivationKeyCode=isMacOs()?"Meta":"Control",snapToGrid,snapGrid,onlyRenderVisibleElements=!1,selectNodesOnDrag,nodesDraggable,nodesConnectable,nodesFocusable,nodeOrigin=defaultNodeOrigin,edgesFocusable,edgesReconnectable,elementsSelectable=!0,defaultViewport:defaultViewport$1=defaultViewport,minZoom=.5,maxZoom=2,translateExtent=infiniteExtent,preventScrolling=!0,nodeExtent,defaultMarkerColor="#b1b1b7",zoomOnScroll=!0,zoomOnPinch=!0,panOnScroll=!1,panOnScrollSpeed=.5,panOnScrollMode=PanOnScrollMode.Free,zoomOnDoubleClick=!0,panOnDrag=!0,onPaneClick,onPaneMouseEnter,onPaneMouseMove,onPaneMouseLeave,onPaneScroll,onPaneContextMenu,paneClickDistance=0,nodeClickDistance=0,children:children2,onReconnect,onReconnectStart,onReconnectEnd,onEdgeContextMenu,onEdgeDoubleClick,onEdgeMouseEnter,onEdgeMouseMove,onEdgeMouseLeave,reconnectRadius=10,onNodesChange,onEdgesChange,noDragClassName="nodrag",noWheelClassName="nowheel",noPanClassName="nopan",fitView:fitView2,fitViewOptions,connectOnClick,attributionPosition,proOptions,defaultEdgeOptions,elevateNodesOnSelect,elevateEdgesOnSelect,disableKeyboardA11y=!1,autoPanOnConnect,autoPanOnNodeDrag,autoPanSpeed,connectionRadius,isValidConnection,onError,style:style2,id:id2,nodeDragThreshold,viewport,onViewportChange,width,height,colorMode="light",debug,...rest},ref){const rfId=id2||"1",colorModeClassName=useColorModeClass(colorMode);return jsx("div",{...rest,style:{...style2,...wrapperStyle},ref,className:cc(["react-flow",className,colorModeClassName]),"data-testid":"rf__wrapper",id:id2,children:jsxs(Wrapper,{nodes,edges,width,height,fitView:fitView2,nodeOrigin,children:[jsx(GraphView,{onInit,onNodeClick,onEdgeClick,onNodeMouseEnter,onNodeMouseMove,onNodeMouseLeave,onNodeContextMenu,onNodeDoubleClick,nodeTypes:nodeTypes2,edgeTypes:edgeTypes2,connectionLineType,connectionLineStyle,connectionLineComponent,connectionLineContainerStyle,selectionKeyCode,selectionOnDrag,selectionMode,deleteKeyCode,multiSelectionKeyCode,panActivationKeyCode,zoomActivationKeyCode,onlyRenderVisibleElements,defaultViewport:defaultViewport$1,translateExtent,minZoom,maxZoom,preventScrolling,zoomOnScroll,zoomOnPinch,zoomOnDoubleClick,panOnScroll,panOnScrollSpeed,panOnScrollMode,panOnDrag,onPaneClick,onPaneMouseEnter,onPaneMouseMove,onPaneMouseLeave,onPaneScroll,onPaneContextMenu,paneClickDistance,nodeClickDistance,onSelectionContextMenu,onSelectionStart,onSelectionEnd,onReconnect,onReconnectStart,onReconnectEnd,onEdgeContextMenu,onEdgeDoubleClick,onEdgeMouseEnter,onEdgeMouseMove,onEdgeMouseLeave,reconnectRadius,defaultMarkerColor,noDragClassName,noWheelClassName,noPanClassName,rfId,disableKeyboardA11y,nodeExtent,viewport,onViewportChange}),jsx(StoreUpdater,{nodes,edges,defaultNodes,defaultEdges,onConnect,onConnectStart,onConnectEnd,onClickConnectStart,onClickConnectEnd,nodesDraggable,nodesConnectable,nodesFocusable,edgesFocusable,edgesReconnectable,elementsSelectable,elevateNodesOnSelect,elevateEdgesOnSelect,minZoom,maxZoom,nodeExtent,onNodesChange,onEdgesChange,snapToGrid,snapGrid,connectionMode,translateExtent,connectOnClick,defaultEdgeOptions,fitView:fitView2,fitViewOptions,onNodesDelete,onEdgesDelete,onDelete,onNodeDragStart,onNodeDrag,onNodeDragStop,onSelectionDrag,onSelectionDragStart,onSelectionDragStop,onMove,onMoveStart,onMoveEnd,noPanClassName,nodeOrigin,rfId,autoPanOnConnect,autoPanOnNodeDrag,autoPanSpeed,onError,connectionRadius,isValidConnection,selectNodesOnDrag,nodeDragThreshold,onBeforeDelete,paneClickDistance,debug}),jsx(SelectionListener,{onSelectionChange}),children2,jsx(Attribution,{proOptions,position:attributionPosition}),jsx(A11yDescriptions,{rfId,disableKeyboardA11y})]})})}var index=fixedForwardRef(ReactFlow);const selector$6=s2=>s2.domNode?.querySelector(".react-flow__edgelabel-renderer");function EdgeLabelRenderer({children:children2}){const edgeLabelRenderer=useStore(selector$6);return edgeLabelRenderer?createPortal(children2,edgeLabelRenderer):null}function useOnViewportChange({onStart,onChange,onEnd}){const store=useStoreApi();useEffect$1(()=>{store.setState({onViewportChangeStart:onStart})},[onStart]),useEffect$1(()=>{store.setState({onViewportChange:onChange})},[onChange]),useEffect$1(()=>{store.setState({onViewportChangeEnd:onEnd})},[onEnd])}function useOnSelectionChange({onChange}){const store=useStoreApi();useEffect$1(()=>{const nextOnSelectionChangeHandlers=[...store.getState().onSelectionChangeHandlers,onChange];return store.setState({onSelectionChangeHandlers:nextOnSelectionChangeHandlers}),()=>{const nextHandlers=store.getState().onSelectionChangeHandlers.filter(fn=>fn!==onChange);store.setState({onSelectionChangeHandlers:nextHandlers})}},[onChange])}function useNodesData(nodeIds){return useStore(useCallback$1(s2=>{const data=[],isArrayOfIds=Array.isArray(nodeIds),_nodeIds=isArrayOfIds?nodeIds:[nodeIds];for(const nodeId of _nodeIds){const node=s2.nodeLookup.get(nodeId);node&&data.push({id:node.id,type:node.type,data:node.data})}return isArrayOfIds?data:data[0]??null},[nodeIds]),shallowNodeData)}function LinePattern({dimensions,lineWidth,variant,className}){return jsx("path",{strokeWidth:lineWidth,d:`M${dimensions[0]/2} 0 V${dimensions[1]} M0 ${dimensions[1]/2} H${dimensions[0]}`,className:cc(["react-flow__background-pattern",variant,className])})}function DotPattern({radius,className}){return jsx("circle",{cx:radius,cy:radius,r:radius,className:cc(["react-flow__background-pattern","dots",className])})}var BackgroundVariant;(function(BackgroundVariant2){BackgroundVariant2.Lines="lines",BackgroundVariant2.Dots="dots",BackgroundVariant2.Cross="cross"})(BackgroundVariant||(BackgroundVariant={}));const defaultSize={[BackgroundVariant.Dots]:1,[BackgroundVariant.Lines]:1,[BackgroundVariant.Cross]:6},selector$3$1=s2=>({transform:s2.transform,patternId:`pattern-${s2.rfId}`});function BackgroundComponent({id:id2,variant=BackgroundVariant.Dots,gap=20,size:size2,lineWidth=1,offset:offset2=2,color:color2,bgColor,style:style2,className,patternClassName}){const ref=useRef$1(null),{transform:transform2,patternId}=useStore(selector$3$1,shallow$1),patternSize=size2||defaultSize[variant],isDots=variant===BackgroundVariant.Dots,isCross=variant===BackgroundVariant.Cross,gapXY=Array.isArray(gap)?gap:[gap,gap],scaledGap=[gapXY[0]*transform2[2]||1,gapXY[1]*transform2[2]||1],scaledSize=patternSize*transform2[2],patternDimensions=isCross?[scaledSize,scaledSize]:scaledGap,patternOffset=isDots?[scaledSize/offset2,scaledSize/offset2]:[patternDimensions[0]/offset2,patternDimensions[1]/offset2],_patternId=`${patternId}${id2||""}`;return jsxs("svg",{className:cc(["react-flow__background",className]),style:{...style2,...containerStyle,"--xy-background-color-props":bgColor,"--xy-background-pattern-color-props":color2},ref,"data-testid":"rf__background",children:[jsx("pattern",{id:_patternId,x:transform2[0]%scaledGap[0],y:transform2[1]%scaledGap[1],width:scaledGap[0],height:scaledGap[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${patternOffset[0]},-${patternOffset[1]})`,children:isDots?jsx(DotPattern,{radius:scaledSize/offset2,className:patternClassName}):jsx(LinePattern,{dimensions:patternDimensions,lineWidth,variant,className:patternClassName})}),jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${_patternId})`})]})}BackgroundComponent.displayName="Background";const Background=memo$1(BackgroundComponent);function PlusIcon(){return jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function MinusIcon(){return jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:jsx("path",{d:"M0 0h32v4.2H0z"})})}function FitViewIcon(){return jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:jsx("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"})})}function LockIcon(){return jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"})})}function UnlockIcon(){return jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"})})}function ControlButton({children:children2,className,...rest}){return jsx("button",{type:"button",className:cc(["react-flow__controls-button",className]),...rest,children:children2})}const selector$2$1=s2=>({isInteractive:s2.nodesDraggable||s2.nodesConnectable||s2.elementsSelectable,minZoomReached:s2.transform[2]<=s2.minZoom,maxZoomReached:s2.transform[2]>=s2.maxZoom});function ControlsComponent({style:style2,showZoom=!0,showFitView=!0,showInteractive=!0,fitViewOptions,onZoomIn,onZoomOut,onFitView,onInteractiveChange,className,children:children2,position="bottom-left",orientation="vertical","aria-label":ariaLabel="React Flow controls"}){const store=useStoreApi(),{isInteractive,minZoomReached,maxZoomReached}=useStore(selector$2$1,shallow$1),{zoomIn,zoomOut,fitView:fitView2}=useReactFlow(),onZoomInHandler=()=>{zoomIn(),onZoomIn?.()},onZoomOutHandler=()=>{zoomOut(),onZoomOut?.()},onFitViewHandler=()=>{fitView2(fitViewOptions),onFitView?.()},onToggleInteractivity=()=>{store.setState({nodesDraggable:!isInteractive,nodesConnectable:!isInteractive,elementsSelectable:!isInteractive}),onInteractiveChange?.(!isInteractive)};return jsxs(Panel$1,{className:cc(["react-flow__controls",orientation==="horizontal"?"horizontal":"vertical",className]),position,style:style2,"data-testid":"rf__controls","aria-label":ariaLabel,children:[showZoom&&jsxs(Fragment,{children:[jsx(ControlButton,{onClick:onZoomInHandler,className:"react-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",disabled:maxZoomReached,children:jsx(PlusIcon,{})}),jsx(ControlButton,{onClick:onZoomOutHandler,className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:minZoomReached,children:jsx(MinusIcon,{})})]}),showFitView&&jsx(ControlButton,{className:"react-flow__controls-fitview",onClick:onFitViewHandler,title:"fit view","aria-label":"fit view",children:jsx(FitViewIcon,{})}),showInteractive&&jsx(ControlButton,{className:"react-flow__controls-interactive",onClick:onToggleInteractivity,title:"toggle interactivity","aria-label":"toggle interactivity",children:isInteractive?jsx(UnlockIcon,{}):jsx(LockIcon,{})}),children2]})}ControlsComponent.displayName="Controls";const Controls=memo$1(ControlsComponent);function MiniMapNodeComponent({id:id2,x:x2,y:y2,width,height,style:style2,color:color2,strokeColor,strokeWidth,className,borderRadius,shapeRendering,selected:selected2,onClick}){const{background,backgroundColor}=style2||{},fill=color2||background||backgroundColor;return jsx("rect",{className:cc(["react-flow__minimap-node",{selected:selected2},className]),x:x2,y:y2,rx:borderRadius,ry:borderRadius,width,height,style:{fill,stroke:strokeColor,strokeWidth},shapeRendering,onClick:onClick?event=>onClick(event,id2):void 0})}const MiniMapNode=memo$1(MiniMapNodeComponent),selectorNodeIds=s2=>s2.nodes.map(node=>node.id),getAttrFunction=func=>func instanceof Function?func:()=>func;function MiniMapNodes({nodeStrokeColor,nodeColor,nodeClassName="",nodeBorderRadius=5,nodeStrokeWidth,nodeComponent:NodeComponent=MiniMapNode,onClick}){const nodeIds=useStore(selectorNodeIds,shallow$1),nodeColorFunc=getAttrFunction(nodeColor),nodeStrokeColorFunc=getAttrFunction(nodeStrokeColor),nodeClassNameFunc=getAttrFunction(nodeClassName),shapeRendering=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return jsx(Fragment,{children:nodeIds.map(nodeId=>jsx(NodeComponentWrapper,{id:nodeId,nodeColorFunc,nodeStrokeColorFunc,nodeClassNameFunc,nodeBorderRadius,nodeStrokeWidth,NodeComponent,onClick,shapeRendering},nodeId))})}function NodeComponentWrapperInner({id:id2,nodeColorFunc,nodeStrokeColorFunc,nodeClassNameFunc,nodeBorderRadius,nodeStrokeWidth,shapeRendering,NodeComponent,onClick}){const{node,x:x2,y:y2}=useStore(s2=>{const node2=s2.nodeLookup.get(id2),{x:x22,y:y22}=node2.internals.positionAbsolute;return{node:node2,x:x22,y:y22}},shallow$1);if(!node||node.hidden||!nodeHasDimensions(node))return null;const{width,height}=getNodeDimensions(node);return jsx(NodeComponent,{x:x2,y:y2,width,height,style:node.style,selected:!!node.selected,className:nodeClassNameFunc(node),color:nodeColorFunc(node),borderRadius:nodeBorderRadius,strokeColor:nodeStrokeColorFunc(node),strokeWidth:nodeStrokeWidth,shapeRendering,onClick,id:node.id})}const NodeComponentWrapper=memo$1(NodeComponentWrapperInner);var MiniMapNodes$1=memo$1(MiniMapNodes);const defaultWidth=200,defaultHeight=150,selector$1$1=s2=>{const viewBB={x:-s2.transform[0]/s2.transform[2],y:-s2.transform[1]/s2.transform[2],width:s2.width/s2.transform[2],height:s2.height/s2.transform[2]};return{viewBB,boundingRect:s2.nodeLookup.size>0?getBoundsOfRects(getInternalNodesBounds(s2.nodeLookup),viewBB):viewBB,rfId:s2.rfId,panZoom:s2.panZoom,translateExtent:s2.translateExtent,flowWidth:s2.width,flowHeight:s2.height}},ARIA_LABEL_KEY="react-flow__minimap-desc";function MiniMapComponent({style:style2,className,nodeStrokeColor,nodeColor,nodeClassName="",nodeBorderRadius=5,nodeStrokeWidth,nodeComponent,bgColor,maskColor,maskStrokeColor,maskStrokeWidth,position="bottom-right",onClick,onNodeClick,pannable=!1,zoomable=!1,ariaLabel="React Flow mini map",inversePan,zoomStep=10,offsetScale=5}){const store=useStoreApi(),svg=useRef$1(null),{boundingRect,viewBB,rfId,panZoom,translateExtent,flowWidth,flowHeight}=useStore(selector$1$1,shallow$1),elementWidth=style2?.width??defaultWidth,elementHeight=style2?.height??defaultHeight,scaledWidth=boundingRect.width/elementWidth,scaledHeight=boundingRect.height/elementHeight,viewScale=Math.max(scaledWidth,scaledHeight),viewWidth=viewScale*elementWidth,viewHeight=viewScale*elementHeight,offset2=offsetScale*viewScale,x2=boundingRect.x-(viewWidth-boundingRect.width)/2-offset2,y2=boundingRect.y-(viewHeight-boundingRect.height)/2-offset2,width=viewWidth+offset2*2,height=viewHeight+offset2*2,labelledBy=`${ARIA_LABEL_KEY}-${rfId}`,viewScaleRef=useRef$1(0),minimapInstance=useRef$1();viewScaleRef.current=viewScale,useEffect$1(()=>{if(svg.current&&panZoom)return minimapInstance.current=XYMinimap({domNode:svg.current,panZoom,getTransform:()=>store.getState().transform,getViewScale:()=>viewScaleRef.current}),()=>{minimapInstance.current?.destroy()}},[panZoom]),useEffect$1(()=>{minimapInstance.current?.update({translateExtent,width:flowWidth,height:flowHeight,inversePan,pannable,zoomStep,zoomable})},[pannable,zoomable,inversePan,zoomStep,translateExtent,flowWidth,flowHeight]);const onSvgClick=onClick?event=>{const[x22,y22]=minimapInstance.current?.pointer(event)||[0,0];onClick(event,{x:x22,y:y22})}:void 0,onSvgNodeClick=onNodeClick?useCallback$1((event,nodeId)=>{const node=store.getState().nodeLookup.get(nodeId);onNodeClick(event,node)},[]):void 0;return jsx(Panel$1,{position,style:{...style2,"--xy-minimap-background-color-props":typeof bgColor=="string"?bgColor:void 0,"--xy-minimap-mask-background-color-props":typeof maskColor=="string"?maskColor:void 0,"--xy-minimap-mask-stroke-color-props":typeof maskStrokeColor=="string"?maskStrokeColor:void 0,"--xy-minimap-mask-stroke-width-props":typeof maskStrokeWidth=="number"?maskStrokeWidth*viewScale:void 0,"--xy-minimap-node-background-color-props":typeof nodeColor=="string"?nodeColor:void 0,"--xy-minimap-node-stroke-color-props":typeof nodeStrokeColor=="string"?nodeStrokeColor:void 0,"--xy-minimap-node-stroke-width-props":typeof nodeStrokeWidth=="string"?nodeStrokeWidth:void 0},className:cc(["react-flow__minimap",className]),"data-testid":"rf__minimap",children:jsxs("svg",{width:elementWidth,height:elementHeight,viewBox:`${x2} ${y2} ${width} ${height}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":labelledBy,ref:svg,onClick:onSvgClick,children:[ariaLabel&&jsx("title",{id:labelledBy,children:ariaLabel}),jsx(MiniMapNodes$1,{onClick:onSvgNodeClick,nodeColor,nodeStrokeColor,nodeBorderRadius,nodeClassName,nodeStrokeWidth,nodeComponent}),jsx("path",{className:"react-flow__minimap-mask",d:`M${x2-offset2},${y2-offset2}h${width+offset2*2}v${height+offset2*2}h${-width-offset2*2}z
|
|
45
|
+
M${viewBB.x},${viewBB.y}h${viewBB.width}v${viewBB.height}h${-viewBB.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}MiniMapComponent.displayName="MiniMap";memo$1(MiniMapComponent);function ResizeControl({nodeId,position,variant=ResizeControlVariant.Handle,className,style:style2={},children:children2,color:color2,minWidth=10,minHeight=10,maxWidth=Number.MAX_VALUE,maxHeight=Number.MAX_VALUE,keepAspectRatio=!1,shouldResize,onResizeStart,onResize,onResizeEnd}){const contextNodeId=useNodeId(),id2=typeof nodeId=="string"?nodeId:contextNodeId,store=useStoreApi(),resizeControlRef=useRef$1(null),defaultPosition=variant===ResizeControlVariant.Line?"right":"bottom-right",controlPosition=position??defaultPosition,resizer=useRef$1(null);useEffect$1(()=>{if(!(!resizeControlRef.current||!id2))return resizer.current||(resizer.current=XYResizer({domNode:resizeControlRef.current,nodeId:id2,getStoreItems:()=>{const{nodeLookup,transform:transform2,snapGrid,snapToGrid,nodeOrigin}=store.getState();return{nodeLookup,transform:transform2,snapGrid,snapToGrid,nodeOrigin}},onChange:(change,childChanges)=>{const{triggerNodeChanges,nodeLookup,parentLookup,nodeOrigin}=store.getState(),changes=[],nextPosition={x:change.x,y:change.y},node=nodeLookup.get(id2);if(node&&node.expandParent&&node.parentId){const origin=node.origin??nodeOrigin,width=change.width??node.measured.width,height=change.height??node.measured.height,child={id:node.id,parentId:node.parentId,rect:{width,height,...evaluateAbsolutePosition({x:change.x??node.position.x,y:change.y??node.position.y},{width,height},node.parentId,nodeLookup,origin)}},parentExpandChanges=handleExpandParent([child],nodeLookup,parentLookup,nodeOrigin);changes.push(...parentExpandChanges),nextPosition.x=change.x?Math.max(origin[0]*width,change.x):void 0,nextPosition.y=change.y?Math.max(origin[1]*height,change.y):void 0}if(nextPosition.x!==void 0&&nextPosition.y!==void 0){const positionChange={id:id2,type:"position",position:{...nextPosition}};changes.push(positionChange)}if(change.width!==void 0&&change.height!==void 0){const dimensionChange={id:id2,type:"dimensions",resizing:!0,setAttributes:!0,dimensions:{width:change.width,height:change.height}};changes.push(dimensionChange)}for(const childChange of childChanges){const positionChange={...childChange,type:"position"};changes.push(positionChange)}triggerNodeChanges(changes)},onEnd:()=>{const dimensionChange={id:id2,type:"dimensions",resizing:!1};store.getState().triggerNodeChanges([dimensionChange])}})),resizer.current.update({controlPosition,boundaries:{minWidth,minHeight,maxWidth,maxHeight},keepAspectRatio,onResizeStart,onResize,onResizeEnd,shouldResize}),()=>{resizer.current?.destroy()}},[controlPosition,minWidth,minHeight,maxWidth,maxHeight,keepAspectRatio,onResizeStart,onResize,onResizeEnd,shouldResize]);const positionClassNames=controlPosition.split("-"),colorStyleProp=variant===ResizeControlVariant.Line?"borderColor":"backgroundColor",controlStyle=color2?{...style2,[colorStyleProp]:color2}:style2;return jsx("div",{className:cc(["react-flow__resize-control","nodrag",...positionClassNames,variant,className]),ref:resizeControlRef,style:controlStyle,children:children2})}memo$1(ResizeControl);var getOwnPropertyNames=Object.getOwnPropertyNames,getOwnPropertySymbols=Object.getOwnPropertySymbols,hasOwnProperty=Object.prototype.hasOwnProperty;function combineComparators(comparatorA,comparatorB){return function(a2,b2,state){return comparatorA(a2,b2,state)&&comparatorB(a2,b2,state)}}function createIsCircular(areItemsEqual){return function(a2,b2,state){if(!a2||!b2||typeof a2!="object"||typeof b2!="object")return areItemsEqual(a2,b2,state);var cache2=state.cache,cachedA=cache2.get(a2),cachedB=cache2.get(b2);if(cachedA&&cachedB)return cachedA===b2&&cachedB===a2;cache2.set(a2,b2),cache2.set(b2,a2);var result=areItemsEqual(a2,b2,state);return cache2.delete(a2),cache2.delete(b2),result}}function getStrictProperties(object){return getOwnPropertyNames(object).concat(getOwnPropertySymbols(object))}var hasOwn=Object.hasOwn||function(object,property){return hasOwnProperty.call(object,property)};function sameValueZeroEqual(a2,b2){return a2||b2?a2===b2:a2===b2||a2!==a2&&b2!==b2}var OWNER="_owner",getOwnPropertyDescriptor=Object.getOwnPropertyDescriptor,keys=Object.keys;function areArraysEqual(a2,b2,state){var index2=a2.length;if(b2.length!==index2)return!1;for(;index2-- >0;)if(!state.equals(a2[index2],b2[index2],index2,index2,a2,b2,state))return!1;return!0}function areDatesEqual(a2,b2){return sameValueZeroEqual(a2.getTime(),b2.getTime())}function areMapsEqual(a2,b2,state){if(a2.size!==b2.size)return!1;for(var matchedIndices={},aIterable=a2.entries(),index2=0,aResult,bResult;(aResult=aIterable.next())&&!aResult.done;){for(var bIterable=b2.entries(),hasMatch=!1,matchIndex=0;(bResult=bIterable.next())&&!bResult.done;){var _a=aResult.value,aKey=_a[0],aValue=_a[1],_b=bResult.value,bKey=_b[0],bValue=_b[1];!hasMatch&&!matchedIndices[matchIndex]&&(hasMatch=state.equals(aKey,bKey,index2,matchIndex,a2,b2,state)&&state.equals(aValue,bValue,aKey,bKey,a2,b2,state))&&(matchedIndices[matchIndex]=!0),matchIndex++}if(!hasMatch)return!1;index2++}return!0}function areObjectsEqual(a2,b2,state){var properties=keys(a2),index2=properties.length;if(keys(b2).length!==index2)return!1;for(var property;index2-- >0;)if(property=properties[index2],property===OWNER&&(a2.$$typeof||b2.$$typeof)&&a2.$$typeof!==b2.$$typeof||!hasOwn(b2,property)||!state.equals(a2[property],b2[property],property,property,a2,b2,state))return!1;return!0}function areObjectsEqualStrict(a2,b2,state){var properties=getStrictProperties(a2),index2=properties.length;if(getStrictProperties(b2).length!==index2)return!1;for(var property,descriptorA,descriptorB;index2-- >0;)if(property=properties[index2],property===OWNER&&(a2.$$typeof||b2.$$typeof)&&a2.$$typeof!==b2.$$typeof||!hasOwn(b2,property)||!state.equals(a2[property],b2[property],property,property,a2,b2,state)||(descriptorA=getOwnPropertyDescriptor(a2,property),descriptorB=getOwnPropertyDescriptor(b2,property),(descriptorA||descriptorB)&&(!descriptorA||!descriptorB||descriptorA.configurable!==descriptorB.configurable||descriptorA.enumerable!==descriptorB.enumerable||descriptorA.writable!==descriptorB.writable)))return!1;return!0}function arePrimitiveWrappersEqual(a2,b2){return sameValueZeroEqual(a2.valueOf(),b2.valueOf())}function areRegExpsEqual(a2,b2){return a2.source===b2.source&&a2.flags===b2.flags}function areSetsEqual(a2,b2,state){if(a2.size!==b2.size)return!1;for(var matchedIndices={},aIterable=a2.values(),aResult,bResult;(aResult=aIterable.next())&&!aResult.done;){for(var bIterable=b2.values(),hasMatch=!1,matchIndex=0;(bResult=bIterable.next())&&!bResult.done;)!hasMatch&&!matchedIndices[matchIndex]&&(hasMatch=state.equals(aResult.value,bResult.value,aResult.value,bResult.value,a2,b2,state))&&(matchedIndices[matchIndex]=!0),matchIndex++;if(!hasMatch)return!1}return!0}function areTypedArraysEqual(a2,b2){var index2=a2.length;if(b2.length!==index2)return!1;for(;index2-- >0;)if(a2[index2]!==b2[index2])return!1;return!0}var ARGUMENTS_TAG="[object Arguments]",BOOLEAN_TAG="[object Boolean]",DATE_TAG="[object Date]",MAP_TAG="[object Map]",NUMBER_TAG="[object Number]",OBJECT_TAG="[object Object]",REG_EXP_TAG="[object RegExp]",SET_TAG="[object Set]",STRING_TAG="[object String]",isArray=Array.isArray,isTypedArray=typeof ArrayBuffer=="function"&&ArrayBuffer.isView?ArrayBuffer.isView:null,assign=Object.assign,getTag=Object.prototype.toString.call.bind(Object.prototype.toString);function createEqualityComparator(_a){var areArraysEqual2=_a.areArraysEqual,areDatesEqual2=_a.areDatesEqual,areMapsEqual2=_a.areMapsEqual,areObjectsEqual2=_a.areObjectsEqual,arePrimitiveWrappersEqual2=_a.arePrimitiveWrappersEqual,areRegExpsEqual2=_a.areRegExpsEqual,areSetsEqual2=_a.areSetsEqual,areTypedArraysEqual2=_a.areTypedArraysEqual;return function(a2,b2,state){if(a2===b2)return!0;if(a2==null||b2==null||typeof a2!="object"||typeof b2!="object")return a2!==a2&&b2!==b2;var constructor=a2.constructor;if(constructor!==b2.constructor)return!1;if(constructor===Object)return areObjectsEqual2(a2,b2,state);if(isArray(a2))return areArraysEqual2(a2,b2,state);if(isTypedArray!=null&&isTypedArray(a2))return areTypedArraysEqual2(a2,b2,state);if(constructor===Date)return areDatesEqual2(a2,b2,state);if(constructor===RegExp)return areRegExpsEqual2(a2,b2,state);if(constructor===Map)return areMapsEqual2(a2,b2,state);if(constructor===Set)return areSetsEqual2(a2,b2,state);var tag=getTag(a2);return tag===DATE_TAG?areDatesEqual2(a2,b2,state):tag===REG_EXP_TAG?areRegExpsEqual2(a2,b2,state):tag===MAP_TAG?areMapsEqual2(a2,b2,state):tag===SET_TAG?areSetsEqual2(a2,b2,state):tag===OBJECT_TAG?typeof a2.then!="function"&&typeof b2.then!="function"&&areObjectsEqual2(a2,b2,state):tag===ARGUMENTS_TAG?areObjectsEqual2(a2,b2,state):tag===BOOLEAN_TAG||tag===NUMBER_TAG||tag===STRING_TAG?arePrimitiveWrappersEqual2(a2,b2,state):!1}}function createEqualityComparatorConfig(_a){var circular=_a.circular,createCustomConfig=_a.createCustomConfig,strict=_a.strict,config={areArraysEqual:strict?areObjectsEqualStrict:areArraysEqual,areDatesEqual,areMapsEqual:strict?combineComparators(areMapsEqual,areObjectsEqualStrict):areMapsEqual,areObjectsEqual:strict?areObjectsEqualStrict:areObjectsEqual,arePrimitiveWrappersEqual,areRegExpsEqual,areSetsEqual:strict?combineComparators(areSetsEqual,areObjectsEqualStrict):areSetsEqual,areTypedArraysEqual:strict?areObjectsEqualStrict:areTypedArraysEqual};if(createCustomConfig&&(config=assign({},config,createCustomConfig(config))),circular){var areArraysEqual$1=createIsCircular(config.areArraysEqual),areMapsEqual$1=createIsCircular(config.areMapsEqual),areObjectsEqual$1=createIsCircular(config.areObjectsEqual),areSetsEqual$1=createIsCircular(config.areSetsEqual);config=assign({},config,{areArraysEqual:areArraysEqual$1,areMapsEqual:areMapsEqual$1,areObjectsEqual:areObjectsEqual$1,areSetsEqual:areSetsEqual$1})}return config}function createInternalEqualityComparator(compare2){return function(a2,b2,_indexOrKeyA,_indexOrKeyB,_parentA,_parentB,state){return compare2(a2,b2,state)}}function createIsEqual(_a){var circular=_a.circular,comparator=_a.comparator,createState2=_a.createState,equals=_a.equals,strict=_a.strict;if(createState2)return function(a2,b2){var _a2=createState2(),_b=_a2.cache,cache2=_b===void 0?circular?new WeakMap:void 0:_b,meta=_a2.meta;return comparator(a2,b2,{cache:cache2,equals,meta,strict})};if(circular)return function(a2,b2){return comparator(a2,b2,{cache:new WeakMap,equals,meta:void 0,strict})};var state={cache:void 0,equals,meta:void 0,strict};return function(a2,b2){return comparator(a2,b2,state)}}var deepEqual=createCustomEqual();createCustomEqual({strict:!0});createCustomEqual({circular:!0});createCustomEqual({circular:!0,strict:!0});var shallowEqual=createCustomEqual({createInternalComparator:function(){return sameValueZeroEqual}});createCustomEqual({strict:!0,createInternalComparator:function(){return sameValueZeroEqual}});createCustomEqual({circular:!0,createInternalComparator:function(){return sameValueZeroEqual}});createCustomEqual({circular:!0,createInternalComparator:function(){return sameValueZeroEqual},strict:!0});function createCustomEqual(options){options===void 0&&(options={});var _a=options.circular,circular=_a===void 0?!1:_a,createCustomInternalComparator=options.createInternalComparator,createState2=options.createState,_b=options.strict,strict=_b===void 0?!1:_b,config=createEqualityComparatorConfig(options),comparator=createEqualityComparator(config),equals=createCustomInternalComparator?createCustomInternalComparator(comparator):createInternalEqualityComparator(comparator);return createIsEqual({circular,comparator,createState:createState2,equals,strict})}const MotionConfigContext=createContext$1({transformPagePoint:p2=>p2,isStatic:!1,reducedMotion:"never"}),MotionContext=createContext$1({}),PresenceContext=createContext$1(null),isBrowser$1=typeof document<"u",useIsomorphicLayoutEffect$2=isBrowser$1?useLayoutEffect$3:useEffect$1,LazyContext=createContext$1({strict:!1}),camelToDash=str=>str.replace(/([a-z])([A-Z])/gu,"$1-$2").toLowerCase(),optimizedAppearDataId="framerAppearId",optimizedAppearDataAttribute="data-"+camelToDash(optimizedAppearDataId),MotionGlobalConfig={skipAnimations:!1,useManualTiming:!1};function createRenderStep(runNextFrame){let thisFrame=new Set,nextFrame=new Set,isProcessing=!1,flushNextFrame=!1;const toKeepAlive=new WeakSet;let latestFrameData={delta:0,timestamp:0,isProcessing:!1};function triggerCallback(callback){toKeepAlive.has(callback)&&(step.schedule(callback),runNextFrame()),callback(latestFrameData)}const step={schedule:(callback,keepAlive=!1,immediate=!1)=>{const queue=immediate&&isProcessing?thisFrame:nextFrame;return keepAlive&&toKeepAlive.add(callback),queue.has(callback)||queue.add(callback),callback},cancel:callback=>{nextFrame.delete(callback),toKeepAlive.delete(callback)},process:frameData2=>{if(latestFrameData=frameData2,isProcessing){flushNextFrame=!0;return}isProcessing=!0,[thisFrame,nextFrame]=[nextFrame,thisFrame],nextFrame.clear(),thisFrame.forEach(triggerCallback),isProcessing=!1,flushNextFrame&&(flushNextFrame=!1,step.process(frameData2))}};return step}const stepsOrder=["read","resolveKeyframes","update","preRender","render","postRender"],maxElapsed=40;function createRenderBatcher(scheduleNextBatch,allowKeepAlive){let runNextFrame=!1,useDefaultElapsed=!0;const state={delta:0,timestamp:0,isProcessing:!1},flagRunNextFrame=()=>runNextFrame=!0,steps2=stepsOrder.reduce((acc,key)=>(acc[key]=createRenderStep(flagRunNextFrame),acc),{}),{read,resolveKeyframes,update,preRender,render,postRender}=steps2,processBatch=()=>{const timestamp=performance.now();runNextFrame=!1,state.delta=useDefaultElapsed?1e3/60:Math.max(Math.min(timestamp-state.timestamp,maxElapsed),1),state.timestamp=timestamp,state.isProcessing=!0,read.process(state),resolveKeyframes.process(state),update.process(state),preRender.process(state),render.process(state),postRender.process(state),state.isProcessing=!1,runNextFrame&&allowKeepAlive&&(useDefaultElapsed=!1,scheduleNextBatch(processBatch))},wake2=()=>{runNextFrame=!0,useDefaultElapsed=!0,state.isProcessing||scheduleNextBatch(processBatch)};return{schedule:stepsOrder.reduce((acc,key)=>{const step=steps2[key];return acc[key]=(process2,keepAlive=!1,immediate=!1)=>(runNextFrame||wake2(),step.schedule(process2,keepAlive,immediate)),acc},{}),cancel:process2=>{for(let i2=0;i2<stepsOrder.length;i2++)steps2[stepsOrder[i2]].cancel(process2)},state,steps:steps2}}const{schedule:microtask,cancel:cancelMicrotask}=createRenderBatcher(queueMicrotask,!1);function isRefObject(ref){return ref&&typeof ref=="object"&&Object.prototype.hasOwnProperty.call(ref,"current")}const SwitchLayoutGroupContext=createContext$1({});let scheduleHandoffComplete=!1;function useVisualElement(Component2,visualState,props2,createVisualElement,ProjectionNodeConstructor){const{visualElement:parent}=useContext$1(MotionContext),lazyContext=useContext$1(LazyContext),presenceContext=useContext$1(PresenceContext),reducedMotionConfig=useContext$1(MotionConfigContext).reducedMotion,visualElementRef=useRef$1();createVisualElement=createVisualElement||lazyContext.renderer,!visualElementRef.current&&createVisualElement&&(visualElementRef.current=createVisualElement(Component2,{visualState,parent,props:props2,presenceContext,blockInitialAnimation:presenceContext?presenceContext.initial===!1:!1,reducedMotionConfig}));const visualElement=visualElementRef.current,initialLayoutGroupConfig=useContext$1(SwitchLayoutGroupContext);visualElement&&!visualElement.projection&&ProjectionNodeConstructor&&(visualElement.type==="html"||visualElement.type==="svg")&&createProjectionNode(visualElementRef.current,props2,ProjectionNodeConstructor,initialLayoutGroupConfig),useInsertionEffect$1(()=>{visualElement&&visualElement.update(props2,presenceContext)});const wantsHandoff=useRef$1(!!(props2[optimizedAppearDataAttribute]&&!window.HandoffComplete));return useIsomorphicLayoutEffect$2(()=>{visualElement&&(visualElement.updateFeatures(),microtask.render(visualElement.render),wantsHandoff.current&&visualElement.animationState&&visualElement.animationState.animateChanges())}),useEffect$1(()=>{visualElement&&(!wantsHandoff.current&&visualElement.animationState&&visualElement.animationState.animateChanges(),wantsHandoff.current&&(wantsHandoff.current=!1,scheduleHandoffComplete||(scheduleHandoffComplete=!0,queueMicrotask(completeHandoff))))}),visualElement}function completeHandoff(){window.HandoffComplete=!0}function createProjectionNode(visualElement,props2,ProjectionNodeConstructor,initialPromotionConfig){const{layoutId,layout,drag:drag2,dragConstraints,layoutScroll,layoutRoot}=props2;visualElement.projection=new ProjectionNodeConstructor(visualElement.latestValues,props2["data-framer-portal-id"]?void 0:getClosestProjectingNode(visualElement.parent)),visualElement.projection.setOptions({layoutId,layout,alwaysMeasureLayout:!!drag2||dragConstraints&&isRefObject(dragConstraints),visualElement,scheduleRender:()=>visualElement.scheduleRender(),animationType:typeof layout=="string"?layout:"both",initialPromotionConfig,layoutScroll,layoutRoot})}function getClosestProjectingNode(visualElement){if(visualElement)return visualElement.options.allowProjection!==!1?visualElement.projection:getClosestProjectingNode(visualElement.parent)}function useMotionRef(visualState,visualElement,externalRef){return useCallback$1(instance=>{instance&&visualState.mount&&visualState.mount(instance),visualElement&&(instance?visualElement.mount(instance):visualElement.unmount()),externalRef&&(typeof externalRef=="function"?externalRef(instance):isRefObject(externalRef)&&(externalRef.current=instance))},[visualElement])}function isVariantLabel(v2){return typeof v2=="string"||Array.isArray(v2)}function isAnimationControls(v2){return v2!==null&&typeof v2=="object"&&typeof v2.start=="function"}const variantPriorityOrder=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],variantProps=["initial",...variantPriorityOrder];function isControllingVariants(props2){return isAnimationControls(props2.animate)||variantProps.some(name=>isVariantLabel(props2[name]))}function isVariantNode(props2){return!!(isControllingVariants(props2)||props2.variants)}function getCurrentTreeVariants(props2,context){if(isControllingVariants(props2)){const{initial,animate}=props2;return{initial:initial===!1||isVariantLabel(initial)?initial:void 0,animate:isVariantLabel(animate)?animate:void 0}}return props2.inherit!==!1?context:{}}function useCreateMotionContext(props2){const{initial,animate}=getCurrentTreeVariants(props2,useContext$1(MotionContext));return useMemo$1(()=>({initial,animate}),[variantLabelsAsDependency(initial),variantLabelsAsDependency(animate)])}function variantLabelsAsDependency(prop){return Array.isArray(prop)?prop.join(" "):prop}const featureProps={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]},featureDefinitions={};for(const key in featureProps)featureDefinitions[key]={isEnabled:props2=>featureProps[key].some(name=>!!props2[name])};function loadFeatures(features){for(const key in features)featureDefinitions[key]={...featureDefinitions[key],...features[key]}}const LayoutGroupContext=createContext$1({}),motionComponentSymbol=Symbol.for("motionComponentSymbol"),noop$2=any=>any;let invariant$1=noop$2;function createMotionComponent({preloadedFeatures,createVisualElement,useRender,useVisualState,Component:Component2}){preloadedFeatures&&loadFeatures(preloadedFeatures);function MotionComponent(props2,externalRef){let MeasureLayout;const configAndProps={...useContext$1(MotionConfigContext),...props2,layoutId:useLayoutId(props2)},{isStatic}=configAndProps,context=useCreateMotionContext(props2),visualState=useVisualState(props2,isStatic);if(!isStatic&&isBrowser$1){useStrictMode();const layoutProjection=getProjectionFunctionality(configAndProps);MeasureLayout=layoutProjection.MeasureLayout,context.visualElement=useVisualElement(Component2,visualState,configAndProps,createVisualElement,layoutProjection.ProjectionNode)}return jsxs(MotionContext.Provider,{value:context,children:[MeasureLayout&&context.visualElement?jsx(MeasureLayout,{visualElement:context.visualElement,...configAndProps}):null,useRender(Component2,props2,useMotionRef(visualState,context.visualElement,externalRef),visualState,isStatic,context.visualElement)]})}const ForwardRefComponent=forwardRef$1(MotionComponent);return ForwardRefComponent[motionComponentSymbol]=Component2,ForwardRefComponent}function useLayoutId({layoutId}){const layoutGroupId=useContext$1(LayoutGroupContext).id;return layoutGroupId&&layoutId!==void 0?layoutGroupId+"-"+layoutId:layoutId}function useStrictMode(configAndProps,preloadedFeatures){useContext$1(LazyContext).strict}function getProjectionFunctionality(props2){const{drag:drag2,layout}=featureDefinitions;if(!drag2&&!layout)return{};const combined={...drag2,...layout};return{MeasureLayout:drag2?.isEnabled(props2)||layout?.isEnabled(props2)?combined.MeasureLayout:void 0,ProjectionNode:combined.ProjectionNode}}function createMotionProxy(createConfig){function custom5(Component2,customMotionComponentConfig={}){return createMotionComponent(createConfig(Component2,customMotionComponentConfig))}if(typeof Proxy>"u")return custom5;const componentCache=new Map;return new Proxy(custom5,{get:(_target,key)=>(componentCache.has(key)||componentCache.set(key,custom5(key)),componentCache.get(key))})}const lowercaseSVGElements=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function isSVGComponent(Component2){return typeof Component2!="string"||Component2.includes("-")?!1:!!(lowercaseSVGElements.indexOf(Component2)>-1||/[A-Z]/u.test(Component2))}const scaleCorrectors={},transformPropOrder=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],transformProps=new Set(transformPropOrder);function isForcedMotionValue(key,{layout,layoutId}){return transformProps.has(key)||key.startsWith("origin")||(layout||layoutId!==void 0)&&(!!scaleCorrectors[key]||key==="opacity")}const isMotionValue=value=>!!(value&&value.getVelocity),translateAlias={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},numTransforms=transformPropOrder.length;function buildTransform(transform2,transformIsDefault,transformTemplate){let transformString="";for(let i2=0;i2<numTransforms;i2++){const key=transformPropOrder[i2];if(transform2[key]!==void 0){const transformName=translateAlias[key]||key;transformString+=`${transformName}(${transform2[key]}) `}}return transformString=transformString.trim(),transformTemplate?transformString=transformTemplate(transform2,transformIsDefault?"":transformString):transformIsDefault&&(transformString="none"),transformString}const checkStringStartsWith=token=>key=>typeof key=="string"&&key.startsWith(token),isCSSVariableName=checkStringStartsWith("--"),startsAsVariableToken=checkStringStartsWith("var(--"),isCSSVariableToken=value=>startsAsVariableToken(value)?singleCssVariableRegex.test(value.split("/*")[0].trim()):!1,singleCssVariableRegex=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu,getValueAsType=(value,type)=>type&&typeof value=="number"?type.transform(value):value,clamp=(min2,max2,v2)=>v2>max2?max2:v2<min2?min2:v2,number={test:v2=>typeof v2=="number",parse:parseFloat,transform:v2=>v2},alpha={...number,transform:v2=>clamp(0,1,v2)},scale={...number,default:1},sanitize=v2=>Math.round(v2*1e5)/1e5,floatRegex=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu,colorRegex=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu,singleColorRegex=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu;function isString$1(v2){return typeof v2=="string"}function isNullish(v2){return v2==null}const createUnitType=unit=>({test:v2=>isString$1(v2)&&v2.endsWith(unit)&&v2.split(" ").length===1,parse:parseFloat,transform:v2=>`${v2}${unit}`}),degrees=createUnitType("deg"),percent=createUnitType("%"),px=createUnitType("px"),vh=createUnitType("vh"),vw=createUnitType("vw"),progressPercentage={...percent,parse:v2=>percent.parse(v2)/100,transform:v2=>percent.transform(v2*100)},int={...number,transform:Math.round},numberValueTypes={borderWidth:px,borderTopWidth:px,borderRightWidth:px,borderBottomWidth:px,borderLeftWidth:px,borderRadius:px,radius:px,borderTopLeftRadius:px,borderTopRightRadius:px,borderBottomRightRadius:px,borderBottomLeftRadius:px,width:px,maxWidth:px,height:px,maxHeight:px,size:px,top:px,right:px,bottom:px,left:px,padding:px,paddingTop:px,paddingRight:px,paddingBottom:px,paddingLeft:px,margin:px,marginTop:px,marginRight:px,marginBottom:px,marginLeft:px,rotate:degrees,rotateX:degrees,rotateY:degrees,rotateZ:degrees,scale,scaleX:scale,scaleY:scale,scaleZ:scale,skew:degrees,skewX:degrees,skewY:degrees,distance:px,translateX:px,translateY:px,translateZ:px,x:px,y:px,z:px,perspective:px,transformPerspective:px,opacity:alpha,originX:progressPercentage,originY:progressPercentage,originZ:px,zIndex:int,backgroundPositionX:px,backgroundPositionY:px,fillOpacity:alpha,strokeOpacity:alpha,numOctaves:int};function buildHTMLStyles(state,latestValues,transformTemplate){const{style:style2,vars,transform:transform2,transformOrigin}=state;let hasTransform=!1,hasTransformOrigin=!1,transformIsNone=!0;for(const key in latestValues){const value=latestValues[key];if(isCSSVariableName(key)){vars[key]=value;continue}const valueType=numberValueTypes[key],valueAsType=getValueAsType(value,valueType);if(transformProps.has(key)){if(hasTransform=!0,transform2[key]=valueAsType,!transformIsNone)continue;value!==(valueType.default||0)&&(transformIsNone=!1)}else key.startsWith("origin")?(hasTransformOrigin=!0,transformOrigin[key]=valueAsType):style2[key]=valueAsType}if(latestValues.transform||(hasTransform||transformTemplate?style2.transform=buildTransform(state.transform,transformIsNone,transformTemplate):style2.transform&&(style2.transform="none")),hasTransformOrigin){const{originX="50%",originY="50%",originZ=0}=transformOrigin;style2.transformOrigin=`${originX} ${originY} ${originZ}`}}const createHtmlRenderState=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function copyRawValuesOnly(target,source,props2){for(const key in source)!isMotionValue(source[key])&&!isForcedMotionValue(key,props2)&&(target[key]=source[key])}function useInitialMotionValues({transformTemplate},visualState){return useMemo$1(()=>{const state=createHtmlRenderState();return buildHTMLStyles(state,visualState,transformTemplate),Object.assign({},state.vars,state.style)},[visualState])}function useStyle(props2,visualState){const styleProp=props2.style||{},style2={};return copyRawValuesOnly(style2,styleProp,props2),Object.assign(style2,useInitialMotionValues(props2,visualState)),style2}function useHTMLProps(props2,visualState){const htmlProps={},style2=useStyle(props2,visualState);return props2.drag&&props2.dragListener!==!1&&(htmlProps.draggable=!1,style2.userSelect=style2.WebkitUserSelect=style2.WebkitTouchCallout="none",style2.touchAction=props2.drag===!0?"none":`pan-${props2.drag==="x"?"y":"x"}`),props2.tabIndex===void 0&&(props2.onTap||props2.onTapStart||props2.whileTap)&&(htmlProps.tabIndex=0),htmlProps.style=style2,htmlProps}const isPropValid_framerMotion={},isPropValid_framerMotion$1=Object.freeze(Object.defineProperty({__proto__:null,default:isPropValid_framerMotion},Symbol.toStringTag,{value:"Module"})),require$$0=getDefaultExportFromNamespaceIfNotNamed(isPropValid_framerMotion$1),validMotionProps=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","ignoreStrict","viewport"]);function isValidMotionProp(key){return key.startsWith("while")||key.startsWith("drag")&&key!=="draggable"||key.startsWith("layout")||key.startsWith("onTap")||key.startsWith("onPan")||key.startsWith("onLayout")||validMotionProps.has(key)}let shouldForward=key=>!isValidMotionProp(key);function loadExternalIsValidProp(isValidProp){isValidProp&&(shouldForward=key=>key.startsWith("on")?!isValidMotionProp(key):isValidProp(key))}try{loadExternalIsValidProp(require$$0.default)}catch{}function filterProps(props2,isDom,forwardMotionProps){const filteredProps={};for(const key in props2)key==="values"&&typeof props2.values=="object"||(shouldForward(key)||forwardMotionProps===!0&&isValidMotionProp(key)||!isDom&&!isValidMotionProp(key)||props2.draggable&&key.startsWith("onDrag"))&&(filteredProps[key]=props2[key]);return filteredProps}function calcOrigin(origin,offset2,size2){return typeof origin=="string"?origin:px.transform(offset2+size2*origin)}function calcSVGTransformOrigin(dimensions,originX,originY){const pxOriginX=calcOrigin(originX,dimensions.x,dimensions.width),pxOriginY=calcOrigin(originY,dimensions.y,dimensions.height);return`${pxOriginX} ${pxOriginY}`}const dashKeys={offset:"stroke-dashoffset",array:"stroke-dasharray"},camelKeys={offset:"strokeDashoffset",array:"strokeDasharray"};function buildSVGPath(attrs,length,spacing=1,offset2=0,useDashCase=!0){attrs.pathLength=1;const keys2=useDashCase?dashKeys:camelKeys;attrs[keys2.offset]=px.transform(-offset2);const pathLength=px.transform(length),pathSpacing=px.transform(spacing);attrs[keys2.array]=`${pathLength} ${pathSpacing}`}function buildSVGAttrs(state,{attrX,attrY,attrScale,originX,originY,pathLength,pathSpacing=1,pathOffset=0,...latest},isSVGTag2,transformTemplate){if(buildHTMLStyles(state,latest,transformTemplate),isSVGTag2){state.style.viewBox&&(state.attrs.viewBox=state.style.viewBox);return}state.attrs=state.style,state.style={};const{attrs,style:style2,dimensions}=state;attrs.transform&&(dimensions&&(style2.transform=attrs.transform),delete attrs.transform),dimensions&&(originX!==void 0||originY!==void 0||style2.transform)&&(style2.transformOrigin=calcSVGTransformOrigin(dimensions,originX!==void 0?originX:.5,originY!==void 0?originY:.5)),attrX!==void 0&&(attrs.x=attrX),attrY!==void 0&&(attrs.y=attrY),attrScale!==void 0&&(attrs.scale=attrScale),pathLength!==void 0&&buildSVGPath(attrs,pathLength,pathSpacing,pathOffset,!1)}const createSvgRenderState=()=>({...createHtmlRenderState(),attrs:{}}),isSVGTag=tag=>typeof tag=="string"&&tag.toLowerCase()==="svg";function useSVGProps(props2,visualState,_isStatic,Component2){const visualProps=useMemo$1(()=>{const state=createSvgRenderState();return buildSVGAttrs(state,visualState,isSVGTag(Component2),props2.transformTemplate),{...state.attrs,style:{...state.style}}},[visualState]);if(props2.style){const rawStyles={};copyRawValuesOnly(rawStyles,props2.style,props2),visualProps.style={...rawStyles,...visualProps.style}}return visualProps}function createUseRender(forwardMotionProps=!1){return(Component2,props2,ref,{latestValues},isStatic)=>{const visualProps=(isSVGComponent(Component2)?useSVGProps:useHTMLProps)(props2,latestValues,isStatic,Component2),filteredProps=filterProps(props2,typeof Component2=="string",forwardMotionProps),elementProps=Component2!==Fragment$1?{...filteredProps,...visualProps,ref}:{},{children:children2}=props2,renderedChildren=useMemo$1(()=>isMotionValue(children2)?children2.get():children2,[children2]);return createElement$1(Component2,{...elementProps,children:renderedChildren})}}function renderHTML(element,{style:style2,vars},styleProp,projection){Object.assign(element.style,style2,projection&&projection.getProjectionStyles(styleProp));for(const key in vars)element.style.setProperty(key,vars[key])}const camelCaseAttributes=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]);function renderSVG(element,renderState,_styleProp,projection){renderHTML(element,renderState,void 0,projection);for(const key in renderState.attrs)element.setAttribute(camelCaseAttributes.has(key)?key:camelToDash(key),renderState.attrs[key])}function scrapeMotionValuesFromProps$1(props2,prevProps,visualElement){var _a;const{style:style2}=props2,newValues={};for(const key in style2)(isMotionValue(style2[key])||prevProps.style&&isMotionValue(prevProps.style[key])||isForcedMotionValue(key,props2)||((_a=visualElement?.getValue(key))===null||_a===void 0?void 0:_a.liveStyle)!==void 0)&&(newValues[key]=style2[key]);return visualElement&&style2&&typeof style2.willChange=="string"&&(visualElement.applyWillChange=!1),newValues}function scrapeMotionValuesFromProps(props2,prevProps,visualElement){const newValues=scrapeMotionValuesFromProps$1(props2,prevProps,visualElement);for(const key in props2)if(isMotionValue(props2[key])||isMotionValue(prevProps[key])){const targetKey=transformPropOrder.indexOf(key)!==-1?"attr"+key.charAt(0).toUpperCase()+key.substring(1):key;newValues[targetKey]=props2[key]}return newValues}function getValueState(visualElement){const state=[{},{}];return visualElement?.values.forEach((value,key)=>{state[0][key]=value.get(),state[1][key]=value.getVelocity()}),state}function resolveVariantFromProps(props2,definition,custom5,visualElement){if(typeof definition=="function"){const[current,velocity]=getValueState(visualElement);definition=definition(custom5!==void 0?custom5:props2.custom,current,velocity)}if(typeof definition=="string"&&(definition=props2.variants&&props2.variants[definition]),typeof definition=="function"){const[current,velocity]=getValueState(visualElement);definition=definition(custom5!==void 0?custom5:props2.custom,current,velocity)}return definition}function useConstant(init2){const ref=useRef$1(null);return ref.current===null&&(ref.current=init2()),ref.current}const isKeyframesTarget=v2=>Array.isArray(v2),isCustomValue=v2=>!!(v2&&typeof v2=="object"&&v2.mix&&v2.toValue),resolveFinalValueInKeyframes=v2=>isKeyframesTarget(v2)?v2[v2.length-1]||0:v2;function resolveMotionValue(value){const unwrappedValue=isMotionValue(value)?value.get():value;return isCustomValue(unwrappedValue)?unwrappedValue.toValue():unwrappedValue}const acceleratedValues=new Set(["opacity","clipPath","filter","transform"]);function getWillChangeName(name){if(transformProps.has(name))return"transform";if(acceleratedValues.has(name))return camelToDash(name)}function addUniqueItem(arr,item){arr.indexOf(item)===-1&&arr.push(item)}function removeItem(arr,item){const index2=arr.indexOf(item);index2>-1&&arr.splice(index2,1)}function makeState({applyWillChange=!1,scrapeMotionValuesFromProps:scrapeMotionValuesFromProps2,createRenderState,onMount},props2,context,presenceContext,isStatic){const state={latestValues:makeLatestValues(props2,context,presenceContext,isStatic?!1:applyWillChange,scrapeMotionValuesFromProps2),renderState:createRenderState()};return onMount&&(state.mount=instance=>onMount(props2,instance,state)),state}const makeUseVisualState=config=>(props2,isStatic)=>{const context=useContext$1(MotionContext),presenceContext=useContext$1(PresenceContext),make=()=>makeState(config,props2,context,presenceContext,isStatic);return isStatic?make():useConstant(make)};function addWillChange(willChange,name){const memberName=getWillChangeName(name);memberName&&addUniqueItem(willChange,memberName)}function forEachDefinition(props2,definition,callback){const list=Array.isArray(definition)?definition:[definition];for(let i2=0;i2<list.length;i2++){const resolved=resolveVariantFromProps(props2,list[i2]);if(resolved){const{transitionEnd,transition,...target}=resolved;callback(target,transitionEnd)}}}function makeLatestValues(props2,context,presenceContext,shouldApplyWillChange,scrapeMotionValues){var _a;const values2={},willChange=[],applyWillChange=shouldApplyWillChange&&((_a=props2.style)===null||_a===void 0?void 0:_a.willChange)===void 0,motionValues=scrapeMotionValues(props2,{});for(const key in motionValues)values2[key]=resolveMotionValue(motionValues[key]);let{initial,animate}=props2;const isControllingVariants$1=isControllingVariants(props2),isVariantNode$1=isVariantNode(props2);context&&isVariantNode$1&&!isControllingVariants$1&&props2.inherit!==!1&&(initial===void 0&&(initial=context.initial),animate===void 0&&(animate=context.animate));let isInitialAnimationBlocked=presenceContext?presenceContext.initial===!1:!1;isInitialAnimationBlocked=isInitialAnimationBlocked||initial===!1;const variantToSet=isInitialAnimationBlocked?animate:initial;return variantToSet&&typeof variantToSet!="boolean"&&!isAnimationControls(variantToSet)&&forEachDefinition(props2,variantToSet,(target,transitionEnd)=>{for(const key in target){let valueTarget=target[key];if(Array.isArray(valueTarget)){const index2=isInitialAnimationBlocked?valueTarget.length-1:0;valueTarget=valueTarget[index2]}valueTarget!==null&&(values2[key]=valueTarget)}for(const key in transitionEnd)values2[key]=transitionEnd[key]}),applyWillChange&&(animate&&initial!==!1&&!isAnimationControls(animate)&&forEachDefinition(props2,animate,target=>{for(const key in target)addWillChange(willChange,key)}),willChange.length&&(values2.willChange=willChange.join(","))),values2}const{schedule:frame,cancel:cancelFrame,state:frameData,steps}=createRenderBatcher(typeof requestAnimationFrame<"u"?requestAnimationFrame:noop$2,!0),svgMotionConfig={useVisualState:makeUseVisualState({scrapeMotionValuesFromProps,createRenderState:createSvgRenderState,onMount:(props2,instance,{renderState,latestValues})=>{frame.read(()=>{try{renderState.dimensions=typeof instance.getBBox=="function"?instance.getBBox():instance.getBoundingClientRect()}catch{renderState.dimensions={x:0,y:0,width:0,height:0}}}),frame.render(()=>{buildSVGAttrs(renderState,latestValues,isSVGTag(instance.tagName),props2.transformTemplate),renderSVG(instance,renderState)})}})},htmlMotionConfig={useVisualState:makeUseVisualState({applyWillChange:!0,scrapeMotionValuesFromProps:scrapeMotionValuesFromProps$1,createRenderState:createHtmlRenderState})};function createDomMotionConfig(Component2,{forwardMotionProps=!1},preloadedFeatures,createVisualElement){return{...isSVGComponent(Component2)?svgMotionConfig:htmlMotionConfig,preloadedFeatures,useRender:createUseRender(forwardMotionProps),createVisualElement,Component:Component2}}function addDomEvent(target,eventName,handler,options={passive:!0}){return target.addEventListener(eventName,handler,options),()=>target.removeEventListener(eventName,handler)}const isPrimaryPointer=event=>event.pointerType==="mouse"?typeof event.button!="number"||event.button<=0:event.isPrimary!==!1;function extractEventInfo(event,pointType="page"){return{point:{x:event[`${pointType}X`],y:event[`${pointType}Y`]}}}const addPointerInfo=handler=>event=>isPrimaryPointer(event)&&handler(event,extractEventInfo(event));function addPointerEvent(target,eventName,handler,options){return addDomEvent(target,eventName,addPointerInfo(handler),options)}const combineFunctions=(a2,b2)=>v2=>b2(a2(v2)),pipe=(...transformers)=>transformers.reduce(combineFunctions);function createLock(name){let lock=null;return()=>{const openLock=()=>{lock=null};return lock===null?(lock=name,openLock):!1}}const globalHorizontalLock=createLock("dragHorizontal"),globalVerticalLock=createLock("dragVertical");function getGlobalLock(drag2){let lock=!1;{const openHorizontal=globalHorizontalLock(),openVertical=globalVerticalLock();openHorizontal&&openVertical?lock=()=>{openHorizontal(),openVertical()}:(openHorizontal&&openHorizontal(),openVertical&&openVertical())}return lock}function isDragActive(){const openGestureLock=getGlobalLock();return openGestureLock?(openGestureLock(),!1):!0}class Feature{constructor(node){this.isMounted=!1,this.node=node}update(){}}function addHoverEvent(node,isActive){const eventName=isActive?"pointerenter":"pointerleave",callbackName=isActive?"onHoverStart":"onHoverEnd",handleEvent=(event,info)=>{if(event.pointerType==="touch"||isDragActive())return;const props2=node.getProps();node.animationState&&props2.whileHover&&node.animationState.setActive("whileHover",isActive);const callback=props2[callbackName];callback&&frame.postRender(()=>callback(event,info))};return addPointerEvent(node.current,eventName,handleEvent,{passive:!node.getProps()[callbackName]})}class HoverGesture extends Feature{mount(){this.unmount=pipe(addHoverEvent(this.node,!0),addHoverEvent(this.node,!1))}unmount(){}}class FocusGesture extends Feature{constructor(){super(...arguments),this.isActive=!1}onFocus(){let isFocusVisible=!1;try{isFocusVisible=this.node.current.matches(":focus-visible")}catch{isFocusVisible=!0}!isFocusVisible||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=pipe(addDomEvent(this.node.current,"focus",()=>this.onFocus()),addDomEvent(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}const isNodeOrChild=(parent,child)=>child?parent===child?!0:isNodeOrChild(parent,child.parentElement):!1;function fireSyntheticPointerEvent(name,handler){if(!handler)return;const syntheticPointerEvent=new PointerEvent("pointer"+name);handler(syntheticPointerEvent,extractEventInfo(syntheticPointerEvent))}class PressGesture extends Feature{constructor(){super(...arguments),this.removeStartListeners=noop$2,this.removeEndListeners=noop$2,this.removeAccessibleListeners=noop$2,this.startPointerPress=(startEvent,startInfo)=>{if(this.isPressing)return;this.removeEndListeners();const props2=this.node.getProps(),removePointerUpListener=addPointerEvent(window,"pointerup",(endEvent,endInfo)=>{if(!this.checkPressEnd())return;const{onTap,onTapCancel,globalTapTarget}=this.node.getProps(),handler=!globalTapTarget&&!isNodeOrChild(this.node.current,endEvent.target)?onTapCancel:onTap;handler&&frame.update(()=>handler(endEvent,endInfo))},{passive:!(props2.onTap||props2.onPointerUp)}),removePointerCancelListener=addPointerEvent(window,"pointercancel",(cancelEvent,cancelInfo)=>this.cancelPress(cancelEvent,cancelInfo),{passive:!(props2.onTapCancel||props2.onPointerCancel)});this.removeEndListeners=pipe(removePointerUpListener,removePointerCancelListener),this.startPress(startEvent,startInfo)},this.startAccessiblePress=()=>{const handleKeydown=keydownEvent=>{if(keydownEvent.key!=="Enter"||this.isPressing)return;const handleKeyup=keyupEvent=>{keyupEvent.key!=="Enter"||!this.checkPressEnd()||fireSyntheticPointerEvent("up",(event,info)=>{const{onTap}=this.node.getProps();onTap&&frame.postRender(()=>onTap(event,info))})};this.removeEndListeners(),this.removeEndListeners=addDomEvent(this.node.current,"keyup",handleKeyup),fireSyntheticPointerEvent("down",(event,info)=>{this.startPress(event,info)})},removeKeydownListener=addDomEvent(this.node.current,"keydown",handleKeydown),handleBlur=()=>{this.isPressing&&fireSyntheticPointerEvent("cancel",(cancelEvent,cancelInfo)=>this.cancelPress(cancelEvent,cancelInfo))},removeBlurListener=addDomEvent(this.node.current,"blur",handleBlur);this.removeAccessibleListeners=pipe(removeKeydownListener,removeBlurListener)}}startPress(event,info){this.isPressing=!0;const{onTapStart,whileTap}=this.node.getProps();whileTap&&this.node.animationState&&this.node.animationState.setActive("whileTap",!0),onTapStart&&frame.postRender(()=>onTapStart(event,info))}checkPressEnd(){return this.removeEndListeners(),this.isPressing=!1,this.node.getProps().whileTap&&this.node.animationState&&this.node.animationState.setActive("whileTap",!1),!isDragActive()}cancelPress(event,info){if(!this.checkPressEnd())return;const{onTapCancel}=this.node.getProps();onTapCancel&&frame.postRender(()=>onTapCancel(event,info))}mount(){const props2=this.node.getProps(),removePointerListener=addPointerEvent(props2.globalTapTarget?window:this.node.current,"pointerdown",this.startPointerPress,{passive:!(props2.onTapStart||props2.onPointerStart)}),removeFocusListener=addDomEvent(this.node.current,"focus",this.startAccessiblePress);this.removeStartListeners=pipe(removePointerListener,removeFocusListener)}unmount(){this.removeStartListeners(),this.removeEndListeners(),this.removeAccessibleListeners()}}const observerCallbacks=new WeakMap,observers=new WeakMap,fireObserverCallback=entry=>{const callback=observerCallbacks.get(entry.target);callback&&callback(entry)},fireAllObserverCallbacks=entries=>{entries.forEach(fireObserverCallback)};function initIntersectionObserver({root:root2,...options}){const lookupRoot=root2||document;observers.has(lookupRoot)||observers.set(lookupRoot,{});const rootObservers=observers.get(lookupRoot),key=JSON.stringify(options);return rootObservers[key]||(rootObservers[key]=new IntersectionObserver(fireAllObserverCallbacks,{root:root2,...options})),rootObservers[key]}function observeIntersection(element,options,callback){const rootInteresectionObserver=initIntersectionObserver(options);return observerCallbacks.set(element,callback),rootInteresectionObserver.observe(element),()=>{observerCallbacks.delete(element),rootInteresectionObserver.unobserve(element)}}const thresholdNames={some:0,all:1};class InViewFeature extends Feature{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport={}}=this.node.getProps(),{root:root2,margin:rootMargin,amount="some",once}=viewport,options={root:root2?root2.current:void 0,rootMargin,threshold:typeof amount=="number"?amount:thresholdNames[amount]},onIntersectionUpdate=entry=>{const{isIntersecting}=entry;if(this.isInView===isIntersecting||(this.isInView=isIntersecting,once&&!isIntersecting&&this.hasEnteredView))return;isIntersecting&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",isIntersecting);const{onViewportEnter,onViewportLeave}=this.node.getProps(),callback=isIntersecting?onViewportEnter:onViewportLeave;callback&&callback(entry)};return observeIntersection(this.node.current,options,onIntersectionUpdate)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:props2,prevProps}=this.node;["amount","margin","root"].some(hasViewportOptionChanged(props2,prevProps))&&this.startObserver()}unmount(){}}function hasViewportOptionChanged({viewport={}},{viewport:prevViewport={}}={}){return name=>viewport[name]!==prevViewport[name]}const gestureAnimations={inView:{Feature:InViewFeature},tap:{Feature:PressGesture},focus:{Feature:FocusGesture},hover:{Feature:HoverGesture}};function shallowCompare(next,prev){if(!Array.isArray(prev))return!1;const prevLength=prev.length;if(prevLength!==next.length)return!1;for(let i2=0;i2<prevLength;i2++)if(prev[i2]!==next[i2])return!1;return!0}function resolveVariant(visualElement,definition,custom5){const props2=visualElement.getProps();return resolveVariantFromProps(props2,definition,custom5!==void 0?custom5:props2.custom,visualElement)}const secondsToMilliseconds=seconds=>seconds*1e3,millisecondsToSeconds=milliseconds=>milliseconds/1e3,underDampedSpring={type:"spring",stiffness:500,damping:25,restSpeed:10},criticallyDampedSpring=target=>({type:"spring",stiffness:550,damping:target===0?2*Math.sqrt(550):30,restSpeed:10}),keyframesTransition={type:"keyframes",duration:.8},ease={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},getDefaultTransition=(valueKey,{keyframes:keyframes2})=>keyframes2.length>2?keyframesTransition:transformProps.has(valueKey)?valueKey.startsWith("scale")?criticallyDampedSpring(keyframes2[1]):underDampedSpring:ease;function isTransitionDefined({when,delay:_delay,delayChildren,staggerChildren,staggerDirection,repeat,repeatType,repeatDelay,from,elapsed,...transition}){return!!Object.keys(transition).length}function getValueTransition(transition,key){return transition[key]||transition.default||transition}const isNotNull=value=>value!==null;function getFinalKeyframe(keyframes2,{repeat,repeatType="loop"},finalKeyframe){const resolvedKeyframes=keyframes2.filter(isNotNull),index2=repeat&&repeatType!=="loop"&&repeat%2===1?0:resolvedKeyframes.length-1;return!index2||finalKeyframe===void 0?resolvedKeyframes[index2]:finalKeyframe}let now;function clearTime(){now=void 0}const time={now:()=>(now===void 0&&time.set(frameData.isProcessing||MotionGlobalConfig.useManualTiming?frameData.timestamp:performance.now()),now),set:newTime=>{now=newTime,queueMicrotask(clearTime)}},isZeroValueString=v2=>/^0[^.\s]+$/u.test(v2);function isNone(value){return typeof value=="number"?value===0:value!==null?value==="none"||value==="0"||isZeroValueString(value):!0}const isNumericalString=v2=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(v2),splitCSSVariableRegex=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function parseCSSVariable(current){const match=splitCSSVariableRegex.exec(current);if(!match)return[,];const[,token1,token2,fallback]=match;return[`--${token1??token2}`,fallback]}function getVariableValue(current,element,depth=1){const[token,fallback]=parseCSSVariable(current);if(!token)return;const resolved=window.getComputedStyle(element).getPropertyValue(token);if(resolved){const trimmed=resolved.trim();return isNumericalString(trimmed)?parseFloat(trimmed):trimmed}return isCSSVariableToken(fallback)?getVariableValue(fallback,element,depth+1):fallback}const positionalKeys=new Set(["width","height","top","left","right","bottom","x","y","translateX","translateY"]),isNumOrPxType=v2=>v2===number||v2===px,getPosFromMatrix=(matrix,pos)=>parseFloat(matrix.split(", ")[pos]),getTranslateFromMatrix=(pos2,pos3)=>(_bbox,{transform:transform2})=>{if(transform2==="none"||!transform2)return 0;const matrix3d=transform2.match(/^matrix3d\((.+)\)$/u);if(matrix3d)return getPosFromMatrix(matrix3d[1],pos3);{const matrix=transform2.match(/^matrix\((.+)\)$/u);return matrix?getPosFromMatrix(matrix[1],pos2):0}},transformKeys=new Set(["x","y","z"]),nonTranslationalTransformKeys=transformPropOrder.filter(key=>!transformKeys.has(key));function removeNonTranslationalTransform(visualElement){const removedTransforms=[];return nonTranslationalTransformKeys.forEach(key=>{const value=visualElement.getValue(key);value!==void 0&&(removedTransforms.push([key,value.get()]),value.set(key.startsWith("scale")?1:0))}),removedTransforms}const positionalValues={width:({x:x2},{paddingLeft="0",paddingRight="0"})=>x2.max-x2.min-parseFloat(paddingLeft)-parseFloat(paddingRight),height:({y:y2},{paddingTop="0",paddingBottom="0"})=>y2.max-y2.min-parseFloat(paddingTop)-parseFloat(paddingBottom),top:(_bbox,{top})=>parseFloat(top),left:(_bbox,{left})=>parseFloat(left),bottom:({y:y2},{top})=>parseFloat(top)+(y2.max-y2.min),right:({x:x2},{left})=>parseFloat(left)+(x2.max-x2.min),x:getTranslateFromMatrix(4,13),y:getTranslateFromMatrix(5,14)};positionalValues.translateX=positionalValues.x;positionalValues.translateY=positionalValues.y;const testValueType=v2=>type=>type.test(v2),auto={test:v2=>v2==="auto",parse:v2=>v2},dimensionValueTypes=[number,px,percent,degrees,vw,vh,auto],findDimensionValueType=v2=>dimensionValueTypes.find(testValueType(v2)),toResolve=new Set;let isScheduled=!1,anyNeedsMeasurement=!1;function measureAllKeyframes(){if(anyNeedsMeasurement){const resolversToMeasure=Array.from(toResolve).filter(resolver=>resolver.needsMeasurement),elementsToMeasure=new Set(resolversToMeasure.map(resolver=>resolver.element)),transformsToRestore=new Map;elementsToMeasure.forEach(element=>{const removedTransforms=removeNonTranslationalTransform(element);removedTransforms.length&&(transformsToRestore.set(element,removedTransforms),element.render())}),resolversToMeasure.forEach(resolver=>resolver.measureInitialState()),elementsToMeasure.forEach(element=>{element.render();const restore=transformsToRestore.get(element);restore&&restore.forEach(([key,value])=>{var _a;(_a=element.getValue(key))===null||_a===void 0||_a.set(value)})}),resolversToMeasure.forEach(resolver=>resolver.measureEndState()),resolversToMeasure.forEach(resolver=>{resolver.suspendedScrollY!==void 0&&window.scrollTo(0,resolver.suspendedScrollY)})}anyNeedsMeasurement=!1,isScheduled=!1,toResolve.forEach(resolver=>resolver.complete()),toResolve.clear()}function readAllKeyframes(){toResolve.forEach(resolver=>{resolver.readKeyframes(),resolver.needsMeasurement&&(anyNeedsMeasurement=!0)})}function flushKeyframeResolvers(){readAllKeyframes(),measureAllKeyframes()}class KeyframeResolver{constructor(unresolvedKeyframes,onComplete,name,motionValue2,element,isAsync=!1){this.isComplete=!1,this.isAsync=!1,this.needsMeasurement=!1,this.isScheduled=!1,this.unresolvedKeyframes=[...unresolvedKeyframes],this.onComplete=onComplete,this.name=name,this.motionValue=motionValue2,this.element=element,this.isAsync=isAsync}scheduleResolve(){this.isScheduled=!0,this.isAsync?(toResolve.add(this),isScheduled||(isScheduled=!0,frame.read(readAllKeyframes),frame.resolveKeyframes(measureAllKeyframes))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes,name,element,motionValue:motionValue2}=this;for(let i2=0;i2<unresolvedKeyframes.length;i2++)if(unresolvedKeyframes[i2]===null)if(i2===0){const currentValue=motionValue2?.get(),finalKeyframe=unresolvedKeyframes[unresolvedKeyframes.length-1];if(currentValue!==void 0)unresolvedKeyframes[0]=currentValue;else if(element&&name){const valueAsRead=element.readValue(name,finalKeyframe);valueAsRead!=null&&(unresolvedKeyframes[0]=valueAsRead)}unresolvedKeyframes[0]===void 0&&(unresolvedKeyframes[0]=finalKeyframe),motionValue2&¤tValue===void 0&&motionValue2.set(unresolvedKeyframes[0])}else unresolvedKeyframes[i2]=unresolvedKeyframes[i2-1]}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(){this.isComplete=!0,this.onComplete(this.unresolvedKeyframes,this.finalKeyframe),toResolve.delete(this)}cancel(){this.isComplete||(this.isScheduled=!1,toResolve.delete(this))}resume(){this.isComplete||this.scheduleResolve()}}const isColorString=(type,testProp)=>v2=>!!(isString$1(v2)&&singleColorRegex.test(v2)&&v2.startsWith(type)||testProp&&!isNullish(v2)&&Object.prototype.hasOwnProperty.call(v2,testProp)),splitColor=(aName,bName,cName)=>v2=>{if(!isString$1(v2))return v2;const[a2,b2,c2,alpha2]=v2.match(floatRegex);return{[aName]:parseFloat(a2),[bName]:parseFloat(b2),[cName]:parseFloat(c2),alpha:alpha2!==void 0?parseFloat(alpha2):1}},clampRgbUnit=v2=>clamp(0,255,v2),rgbUnit={...number,transform:v2=>Math.round(clampRgbUnit(v2))},rgba={test:isColorString("rgb","red"),parse:splitColor("red","green","blue"),transform:({red,green,blue:blue2,alpha:alpha$12=1})=>"rgba("+rgbUnit.transform(red)+", "+rgbUnit.transform(green)+", "+rgbUnit.transform(blue2)+", "+sanitize(alpha.transform(alpha$12))+")"};function parseHex(v2){let r2="",g="",b2="",a2="";return v2.length>5?(r2=v2.substring(1,3),g=v2.substring(3,5),b2=v2.substring(5,7),a2=v2.substring(7,9)):(r2=v2.substring(1,2),g=v2.substring(2,3),b2=v2.substring(3,4),a2=v2.substring(4,5),r2+=r2,g+=g,b2+=b2,a2+=a2),{red:parseInt(r2,16),green:parseInt(g,16),blue:parseInt(b2,16),alpha:a2?parseInt(a2,16)/255:1}}const hex={test:isColorString("#"),parse:parseHex,transform:rgba.transform},hsla={test:isColorString("hsl","hue"),parse:splitColor("hue","saturation","lightness"),transform:({hue,saturation,lightness,alpha:alpha$12=1})=>"hsla("+Math.round(hue)+", "+percent.transform(sanitize(saturation))+", "+percent.transform(sanitize(lightness))+", "+sanitize(alpha.transform(alpha$12))+")"},color={test:v2=>rgba.test(v2)||hex.test(v2)||hsla.test(v2),parse:v2=>rgba.test(v2)?rgba.parse(v2):hsla.test(v2)?hsla.parse(v2):hex.parse(v2),transform:v2=>isString$1(v2)?v2:v2.hasOwnProperty("red")?rgba.transform(v2):hsla.transform(v2)};function test(v2){var _a,_b;return isNaN(v2)&&isString$1(v2)&&(((_a=v2.match(floatRegex))===null||_a===void 0?void 0:_a.length)||0)+(((_b=v2.match(colorRegex))===null||_b===void 0?void 0:_b.length)||0)>0}const NUMBER_TOKEN="number",COLOR_TOKEN="color",VAR_TOKEN="var",VAR_FUNCTION_TOKEN="var(",SPLIT_TOKEN="${}",complexRegex=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function analyseComplexValue(value){const originalValue=value.toString(),values2=[],indexes={color:[],number:[],var:[]},types=[];let i2=0;const split=originalValue.replace(complexRegex,parsedValue=>(color.test(parsedValue)?(indexes.color.push(i2),types.push(COLOR_TOKEN),values2.push(color.parse(parsedValue))):parsedValue.startsWith(VAR_FUNCTION_TOKEN)?(indexes.var.push(i2),types.push(VAR_TOKEN),values2.push(parsedValue)):(indexes.number.push(i2),types.push(NUMBER_TOKEN),values2.push(parseFloat(parsedValue))),++i2,SPLIT_TOKEN)).split(SPLIT_TOKEN);return{values:values2,split,indexes,types}}function parseComplexValue(v2){return analyseComplexValue(v2).values}function createTransformer(source){const{split,types}=analyseComplexValue(source),numSections=split.length;return v2=>{let output="";for(let i2=0;i2<numSections;i2++)if(output+=split[i2],v2[i2]!==void 0){const type=types[i2];type===NUMBER_TOKEN?output+=sanitize(v2[i2]):type===COLOR_TOKEN?output+=color.transform(v2[i2]):output+=v2[i2]}return output}}const convertNumbersToZero=v2=>typeof v2=="number"?0:v2;function getAnimatableNone$1(v2){const parsed=parseComplexValue(v2);return createTransformer(v2)(parsed.map(convertNumbersToZero))}const complex={test,parse:parseComplexValue,createTransformer,getAnimatableNone:getAnimatableNone$1},maxDefaults=new Set(["brightness","contrast","saturate","opacity"]);function applyDefaultFilter(v2){const[name,value]=v2.slice(0,-1).split("(");if(name==="drop-shadow")return v2;const[number2]=value.match(floatRegex)||[];if(!number2)return v2;const unit=value.replace(number2,"");let defaultValue=maxDefaults.has(name)?1:0;return number2!==value&&(defaultValue*=100),name+"("+defaultValue+unit+")"}const functionRegex=/\b([a-z-]*)\(.*?\)/gu,filter={...complex,getAnimatableNone:v2=>{const functions=v2.match(functionRegex);return functions?functions.map(applyDefaultFilter).join(" "):v2}},defaultValueTypes={...numberValueTypes,color,backgroundColor:color,outlineColor:color,fill:color,stroke:color,borderColor:color,borderTopColor:color,borderRightColor:color,borderBottomColor:color,borderLeftColor:color,filter,WebkitFilter:filter},getDefaultValueType=key=>defaultValueTypes[key];function getAnimatableNone(key,value){let defaultValueType=getDefaultValueType(key);return defaultValueType!==filter&&(defaultValueType=complex),defaultValueType.getAnimatableNone?defaultValueType.getAnimatableNone(value):void 0}const invalidTemplates=new Set(["auto","none","0"]);function makeNoneKeyframesAnimatable(unresolvedKeyframes,noneKeyframeIndexes,name){let i2=0,animatableTemplate;for(;i2<unresolvedKeyframes.length&&!animatableTemplate;){const keyframe=unresolvedKeyframes[i2];typeof keyframe=="string"&&!invalidTemplates.has(keyframe)&&analyseComplexValue(keyframe).values.length&&(animatableTemplate=unresolvedKeyframes[i2]),i2++}if(animatableTemplate&&name)for(const noneIndex of noneKeyframeIndexes)unresolvedKeyframes[noneIndex]=getAnimatableNone(name,animatableTemplate)}class DOMKeyframesResolver extends KeyframeResolver{constructor(unresolvedKeyframes,onComplete,name,motionValue2){super(unresolvedKeyframes,onComplete,name,motionValue2,motionValue2?.owner,!0)}readKeyframes(){const{unresolvedKeyframes,element,name}=this;if(!element.current)return;super.readKeyframes();for(let i2=0;i2<unresolvedKeyframes.length;i2++){let keyframe=unresolvedKeyframes[i2];if(typeof keyframe=="string"&&(keyframe=keyframe.trim(),isCSSVariableToken(keyframe))){const resolved=getVariableValue(keyframe,element.current);resolved!==void 0&&(unresolvedKeyframes[i2]=resolved),i2===unresolvedKeyframes.length-1&&(this.finalKeyframe=keyframe)}}if(this.resolveNoneKeyframes(),!positionalKeys.has(name)||unresolvedKeyframes.length!==2)return;const[origin,target]=unresolvedKeyframes,originType=findDimensionValueType(origin),targetType=findDimensionValueType(target);if(originType!==targetType)if(isNumOrPxType(originType)&&isNumOrPxType(targetType))for(let i2=0;i2<unresolvedKeyframes.length;i2++){const value=unresolvedKeyframes[i2];typeof value=="string"&&(unresolvedKeyframes[i2]=parseFloat(value))}else this.needsMeasurement=!0}resolveNoneKeyframes(){const{unresolvedKeyframes,name}=this,noneKeyframeIndexes=[];for(let i2=0;i2<unresolvedKeyframes.length;i2++)isNone(unresolvedKeyframes[i2])&&noneKeyframeIndexes.push(i2);noneKeyframeIndexes.length&&makeNoneKeyframesAnimatable(unresolvedKeyframes,noneKeyframeIndexes,name)}measureInitialState(){const{element,unresolvedKeyframes,name}=this;if(!element.current)return;name==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=positionalValues[name](element.measureViewportBox(),window.getComputedStyle(element.current)),unresolvedKeyframes[0]=this.measuredOrigin;const measureKeyframe=unresolvedKeyframes[unresolvedKeyframes.length-1];measureKeyframe!==void 0&&element.getValue(name,measureKeyframe).jump(measureKeyframe,!1)}measureEndState(){var _a;const{element,name,unresolvedKeyframes}=this;if(!element.current)return;const value=element.getValue(name);value&&value.jump(this.measuredOrigin,!1);const finalKeyframeIndex=unresolvedKeyframes.length-1,finalKeyframe=unresolvedKeyframes[finalKeyframeIndex];unresolvedKeyframes[finalKeyframeIndex]=positionalValues[name](element.measureViewportBox(),window.getComputedStyle(element.current)),finalKeyframe!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=finalKeyframe),!((_a=this.removedTransforms)===null||_a===void 0)&&_a.length&&this.removedTransforms.forEach(([unsetTransformName,unsetTransformValue])=>{element.getValue(unsetTransformName).set(unsetTransformValue)}),this.resolveNoneKeyframes()}}function memo(callback){let result;return()=>(result===void 0&&(result=callback()),result)}const isAnimatable=(value,name)=>name==="zIndex"?!1:!!(typeof value=="number"||Array.isArray(value)||typeof value=="string"&&(complex.test(value)||value==="0")&&!value.startsWith("url("));function hasKeyframesChanged(keyframes2){const current=keyframes2[0];if(keyframes2.length===1)return!0;for(let i2=0;i2<keyframes2.length;i2++)if(keyframes2[i2]!==current)return!0}function canAnimate(keyframes2,name,type,velocity){const originKeyframe=keyframes2[0];if(originKeyframe===null)return!1;if(name==="display"||name==="visibility")return!0;const targetKeyframe=keyframes2[keyframes2.length-1],isOriginAnimatable=isAnimatable(originKeyframe,name),isTargetAnimatable=isAnimatable(targetKeyframe,name);return!isOriginAnimatable||!isTargetAnimatable?!1:hasKeyframesChanged(keyframes2)||type==="spring"&&velocity}class BaseAnimation{constructor({autoplay=!0,delay=0,type="keyframes",repeat=0,repeatDelay=0,repeatType="loop",...options}){this.isStopped=!1,this.hasAttemptedResolve=!1,this.options={autoplay,delay,type,repeat,repeatDelay,repeatType,...options},this.updateFinishedPromise()}get resolved(){return!this._resolved&&!this.hasAttemptedResolve&&flushKeyframeResolvers(),this._resolved}onKeyframesResolved(keyframes2,finalKeyframe){this.hasAttemptedResolve=!0;const{name,type,velocity,delay,onComplete,onUpdate,isGenerator}=this.options;if(!isGenerator&&!canAnimate(keyframes2,name,type,velocity))if(delay)this.options.duration=0;else{onUpdate?.(getFinalKeyframe(keyframes2,this.options,finalKeyframe)),onComplete?.(),this.resolveFinishedPromise();return}const resolvedAnimation=this.initPlayback(keyframes2,finalKeyframe);resolvedAnimation!==!1&&(this._resolved={keyframes:keyframes2,finalKeyframe,...resolvedAnimation},this.onPostResolved())}onPostResolved(){}then(resolve,reject){return this.currentFinishedPromise.then(resolve,reject)}updateFinishedPromise(){this.currentFinishedPromise=new Promise(resolve=>{this.resolveFinishedPromise=resolve})}}function velocityPerSecond(velocity,frameDuration){return frameDuration?velocity*(1e3/frameDuration):0}const velocitySampleDuration=5;function calcGeneratorVelocity(resolveValue,t2,current){const prevT=Math.max(t2-velocitySampleDuration,0);return velocityPerSecond(current-resolveValue(prevT),t2-prevT)}const safeMin=.001,minDuration=.01,maxDuration$1=10,minDamping=.05,maxDamping=1;function findSpring({duration=800,bounce=.25,velocity=0,mass=1}){let envelope,derivative,dampingRatio=1-bounce;dampingRatio=clamp(minDamping,maxDamping,dampingRatio),duration=clamp(minDuration,maxDuration$1,millisecondsToSeconds(duration)),dampingRatio<1?(envelope=undampedFreq2=>{const exponentialDecay=undampedFreq2*dampingRatio,delta=exponentialDecay*duration,a2=exponentialDecay-velocity,b2=calcAngularFreq(undampedFreq2,dampingRatio),c2=Math.exp(-delta);return safeMin-a2/b2*c2},derivative=undampedFreq2=>{const delta=undampedFreq2*dampingRatio*duration,d2=delta*velocity+velocity,e2=Math.pow(dampingRatio,2)*Math.pow(undampedFreq2,2)*duration,f2=Math.exp(-delta),g=calcAngularFreq(Math.pow(undampedFreq2,2),dampingRatio);return(-envelope(undampedFreq2)+safeMin>0?-1:1)*((d2-e2)*f2)/g}):(envelope=undampedFreq2=>{const a2=Math.exp(-undampedFreq2*duration),b2=(undampedFreq2-velocity)*duration+1;return-safeMin+a2*b2},derivative=undampedFreq2=>{const a2=Math.exp(-undampedFreq2*duration),b2=(velocity-undampedFreq2)*(duration*duration);return a2*b2});const initialGuess=5/duration,undampedFreq=approximateRoot(envelope,derivative,initialGuess);if(duration=secondsToMilliseconds(duration),isNaN(undampedFreq))return{stiffness:100,damping:10,duration};{const stiffness=Math.pow(undampedFreq,2)*mass;return{stiffness,damping:dampingRatio*2*Math.sqrt(mass*stiffness),duration}}}const rootIterations=12;function approximateRoot(envelope,derivative,initialGuess){let result=initialGuess;for(let i2=1;i2<rootIterations;i2++)result=result-envelope(result)/derivative(result);return result}function calcAngularFreq(undampedFreq,dampingRatio){return undampedFreq*Math.sqrt(1-dampingRatio*dampingRatio)}const durationKeys=["duration","bounce"],physicsKeys=["stiffness","damping","mass"];function isSpringType(options,keys2){return keys2.some(key=>options[key]!==void 0)}function getSpringOptions(options){let springOptions={velocity:0,stiffness:100,damping:10,mass:1,isResolvedFromDuration:!1,...options};if(!isSpringType(options,physicsKeys)&&isSpringType(options,durationKeys)){const derived=findSpring(options);springOptions={...springOptions,...derived,mass:1},springOptions.isResolvedFromDuration=!0}return springOptions}function spring({keyframes:keyframes2,restDelta,restSpeed,...options}){const origin=keyframes2[0],target=keyframes2[keyframes2.length-1],state={done:!1,value:origin},{stiffness,damping,mass,duration,velocity,isResolvedFromDuration}=getSpringOptions({...options,velocity:-millisecondsToSeconds(options.velocity||0)}),initialVelocity=velocity||0,dampingRatio=damping/(2*Math.sqrt(stiffness*mass)),initialDelta=target-origin,undampedAngularFreq=millisecondsToSeconds(Math.sqrt(stiffness/mass)),isGranularScale=Math.abs(initialDelta)<5;restSpeed||(restSpeed=isGranularScale?.01:2),restDelta||(restDelta=isGranularScale?.005:.5);let resolveSpring;if(dampingRatio<1){const angularFreq=calcAngularFreq(undampedAngularFreq,dampingRatio);resolveSpring=t2=>{const envelope=Math.exp(-dampingRatio*undampedAngularFreq*t2);return target-envelope*((initialVelocity+dampingRatio*undampedAngularFreq*initialDelta)/angularFreq*Math.sin(angularFreq*t2)+initialDelta*Math.cos(angularFreq*t2))}}else if(dampingRatio===1)resolveSpring=t2=>target-Math.exp(-undampedAngularFreq*t2)*(initialDelta+(initialVelocity+undampedAngularFreq*initialDelta)*t2);else{const dampedAngularFreq=undampedAngularFreq*Math.sqrt(dampingRatio*dampingRatio-1);resolveSpring=t2=>{const envelope=Math.exp(-dampingRatio*undampedAngularFreq*t2),freqForT=Math.min(dampedAngularFreq*t2,300);return target-envelope*((initialVelocity+dampingRatio*undampedAngularFreq*initialDelta)*Math.sinh(freqForT)+dampedAngularFreq*initialDelta*Math.cosh(freqForT))/dampedAngularFreq}}return{calculatedDuration:isResolvedFromDuration&&duration||null,next:t2=>{const current=resolveSpring(t2);if(isResolvedFromDuration)state.done=t2>=duration;else{let currentVelocity=initialVelocity;t2!==0&&(dampingRatio<1?currentVelocity=calcGeneratorVelocity(resolveSpring,t2,current):currentVelocity=0);const isBelowVelocityThreshold=Math.abs(currentVelocity)<=restSpeed,isBelowDisplacementThreshold=Math.abs(target-current)<=restDelta;state.done=isBelowVelocityThreshold&&isBelowDisplacementThreshold}return state.value=state.done?target:current,state}}}function inertia({keyframes:keyframes2,velocity=0,power=.8,timeConstant=325,bounceDamping=10,bounceStiffness=500,modifyTarget,min:min2,max:max2,restDelta=.5,restSpeed}){const origin=keyframes2[0],state={done:!1,value:origin},isOutOfBounds=v2=>min2!==void 0&&v2<min2||max2!==void 0&&v2>max2,nearestBoundary=v2=>min2===void 0?max2:max2===void 0||Math.abs(min2-v2)<Math.abs(max2-v2)?min2:max2;let amplitude=power*velocity;const ideal=origin+amplitude,target=modifyTarget===void 0?ideal:modifyTarget(ideal);target!==ideal&&(amplitude=target-origin);const calcDelta=t2=>-amplitude*Math.exp(-t2/timeConstant),calcLatest=t2=>target+calcDelta(t2),applyFriction=t2=>{const delta=calcDelta(t2),latest=calcLatest(t2);state.done=Math.abs(delta)<=restDelta,state.value=state.done?target:latest};let timeReachedBoundary,spring$1;const checkCatchBoundary=t2=>{isOutOfBounds(state.value)&&(timeReachedBoundary=t2,spring$1=spring({keyframes:[state.value,nearestBoundary(state.value)],velocity:calcGeneratorVelocity(calcLatest,t2,state.value),damping:bounceDamping,stiffness:bounceStiffness,restDelta,restSpeed}))};return checkCatchBoundary(0),{calculatedDuration:null,next:t2=>{let hasUpdatedFrame=!1;return!spring$1&&timeReachedBoundary===void 0&&(hasUpdatedFrame=!0,applyFriction(t2),checkCatchBoundary(t2)),timeReachedBoundary!==void 0&&t2>=timeReachedBoundary?spring$1.next(t2-timeReachedBoundary):(!hasUpdatedFrame&&applyFriction(t2),state)}}}const calcBezier=(t2,a1,a2)=>(((1-3*a2+3*a1)*t2+(3*a2-6*a1))*t2+3*a1)*t2,subdivisionPrecision=1e-7,subdivisionMaxIterations=12;function binarySubdivide(x2,lowerBound,upperBound,mX1,mX2){let currentX,currentT,i2=0;do currentT=lowerBound+(upperBound-lowerBound)/2,currentX=calcBezier(currentT,mX1,mX2)-x2,currentX>0?upperBound=currentT:lowerBound=currentT;while(Math.abs(currentX)>subdivisionPrecision&&++i2<subdivisionMaxIterations);return currentT}function cubicBezier(mX1,mY1,mX2,mY2){if(mX1===mY1&&mX2===mY2)return noop$2;const getTForX=aX=>binarySubdivide(aX,0,1,mX1,mX2);return t2=>t2===0||t2===1?t2:calcBezier(getTForX(t2),mY1,mY2)}const easeIn=cubicBezier(.42,0,1,1),easeOut=cubicBezier(0,0,.58,1),easeInOut=cubicBezier(.42,0,.58,1),isEasingArray=ease2=>Array.isArray(ease2)&&typeof ease2[0]!="number",mirrorEasing=easing=>p2=>p2<=.5?easing(2*p2)/2:(2-easing(2*(1-p2)))/2,reverseEasing=easing=>p2=>1-easing(1-p2),circIn=p2=>1-Math.sin(Math.acos(p2)),circOut=reverseEasing(circIn),circInOut=mirrorEasing(circIn),backOut=cubicBezier(.33,1.53,.69,.99),backIn=reverseEasing(backOut),backInOut=mirrorEasing(backIn),anticipate=p2=>(p2*=2)<1?.5*backIn(p2):.5*(2-Math.pow(2,-10*(p2-1))),easingLookup={linear:noop$2,easeIn,easeInOut,easeOut,circIn,circInOut,circOut,backIn,backInOut,backOut,anticipate},easingDefinitionToFunction=definition=>{if(Array.isArray(definition)){invariant$1(definition.length===4);const[x1,y1,x2,y2]=definition;return cubicBezier(x1,y1,x2,y2)}else if(typeof definition=="string")return invariant$1(easingLookup[definition]!==void 0),easingLookup[definition];return definition},progress=(from,to,value)=>{const toFromDifference=to-from;return toFromDifference===0?1:(value-from)/toFromDifference},mixNumber$1=(from,to,progress2)=>from+(to-from)*progress2;function hueToRgb(p2,q2,t2){return t2<0&&(t2+=1),t2>1&&(t2-=1),t2<1/6?p2+(q2-p2)*6*t2:t2<1/2?q2:t2<2/3?p2+(q2-p2)*(2/3-t2)*6:p2}function hslaToRgba({hue,saturation,lightness,alpha:alpha2}){hue/=360,saturation/=100,lightness/=100;let red=0,green=0,blue2=0;if(!saturation)red=green=blue2=lightness;else{const q2=lightness<.5?lightness*(1+saturation):lightness+saturation-lightness*saturation,p2=2*lightness-q2;red=hueToRgb(p2,q2,hue+1/3),green=hueToRgb(p2,q2,hue),blue2=hueToRgb(p2,q2,hue-1/3)}return{red:Math.round(red*255),green:Math.round(green*255),blue:Math.round(blue2*255),alpha:alpha2}}function mixImmediate(a2,b2){return p2=>p2>0?b2:a2}const mixLinearColor=(from,to,v2)=>{const fromExpo=from*from,expo=v2*(to*to-fromExpo)+fromExpo;return expo<0?0:Math.sqrt(expo)},colorTypes=[hex,rgba,hsla],getColorType=v2=>colorTypes.find(type=>type.test(v2));function asRGBA(color2){const type=getColorType(color2);if(!type)return!1;let model=type.parse(color2);return type===hsla&&(model=hslaToRgba(model)),model}const mixColor=(from,to)=>{const fromRGBA=asRGBA(from),toRGBA=asRGBA(to);if(!fromRGBA||!toRGBA)return mixImmediate(from,to);const blended={...fromRGBA};return v2=>(blended.red=mixLinearColor(fromRGBA.red,toRGBA.red,v2),blended.green=mixLinearColor(fromRGBA.green,toRGBA.green,v2),blended.blue=mixLinearColor(fromRGBA.blue,toRGBA.blue,v2),blended.alpha=mixNumber$1(fromRGBA.alpha,toRGBA.alpha,v2),rgba.transform(blended))},invisibleValues=new Set(["none","hidden"]);function mixVisibility(origin,target){return invisibleValues.has(origin)?p2=>p2<=0?origin:target:p2=>p2>=1?target:origin}function mixNumber(a2,b2){return p2=>mixNumber$1(a2,b2,p2)}function getMixer(a2){return typeof a2=="number"?mixNumber:typeof a2=="string"?isCSSVariableToken(a2)?mixImmediate:color.test(a2)?mixColor:mixComplex:Array.isArray(a2)?mixArray:typeof a2=="object"?color.test(a2)?mixColor:mixObject:mixImmediate}function mixArray(a2,b2){const output=[...a2],numValues=output.length,blendValue=a2.map((v2,i2)=>getMixer(v2)(v2,b2[i2]));return p2=>{for(let i2=0;i2<numValues;i2++)output[i2]=blendValue[i2](p2);return output}}function mixObject(a2,b2){const output={...a2,...b2},blendValue={};for(const key in output)a2[key]!==void 0&&b2[key]!==void 0&&(blendValue[key]=getMixer(a2[key])(a2[key],b2[key]));return v2=>{for(const key in blendValue)output[key]=blendValue[key](v2);return output}}function matchOrder(origin,target){var _a;const orderedOrigin=[],pointers={color:0,var:0,number:0};for(let i2=0;i2<target.values.length;i2++){const type=target.types[i2],originIndex=origin.indexes[type][pointers[type]],originValue=(_a=origin.values[originIndex])!==null&&_a!==void 0?_a:0;orderedOrigin[i2]=originValue,pointers[type]++}return orderedOrigin}const mixComplex=(origin,target)=>{const template=complex.createTransformer(target),originStats=analyseComplexValue(origin),targetStats=analyseComplexValue(target);return originStats.indexes.var.length===targetStats.indexes.var.length&&originStats.indexes.color.length===targetStats.indexes.color.length&&originStats.indexes.number.length>=targetStats.indexes.number.length?invisibleValues.has(origin)&&!targetStats.values.length||invisibleValues.has(target)&&!originStats.values.length?mixVisibility(origin,target):pipe(mixArray(matchOrder(originStats,targetStats),targetStats.values),template):mixImmediate(origin,target)};function mix(from,to,p2){return typeof from=="number"&&typeof to=="number"&&typeof p2=="number"?mixNumber$1(from,to,p2):getMixer(from)(from,to)}function createMixers(output,ease2,customMixer){const mixers=[],mixerFactory=customMixer||mix,numMixers=output.length-1;for(let i2=0;i2<numMixers;i2++){let mixer=mixerFactory(output[i2],output[i2+1]);if(ease2){const easingFunction=Array.isArray(ease2)?ease2[i2]||noop$2:ease2;mixer=pipe(easingFunction,mixer)}mixers.push(mixer)}return mixers}function interpolate(input,output,{clamp:isClamp=!0,ease:ease2,mixer}={}){const inputLength=input.length;if(invariant$1(inputLength===output.length),inputLength===1)return()=>output[0];if(inputLength===2&&input[0]===input[1])return()=>output[1];input[0]>input[inputLength-1]&&(input=[...input].reverse(),output=[...output].reverse());const mixers=createMixers(output,ease2,mixer),numMixers=mixers.length,interpolator=v2=>{let i2=0;if(numMixers>1)for(;i2<input.length-2&&!(v2<input[i2+1]);i2++);const progressInRange=progress(input[i2],input[i2+1],v2);return mixers[i2](progressInRange)};return isClamp?v2=>interpolator(clamp(input[0],input[inputLength-1],v2)):interpolator}function fillOffset(offset2,remaining){const min2=offset2[offset2.length-1];for(let i2=1;i2<=remaining;i2++){const offsetProgress=progress(0,remaining,i2);offset2.push(mixNumber$1(min2,1,offsetProgress))}}function defaultOffset(arr){const offset2=[0];return fillOffset(offset2,arr.length-1),offset2}function convertOffsetToTimes(offset2,duration){return offset2.map(o2=>o2*duration)}function defaultEasing(values2,easing){return values2.map(()=>easing||easeInOut).splice(0,values2.length-1)}function keyframes({duration=300,keyframes:keyframeValues,times,ease:ease2="easeInOut"}){const easingFunctions=isEasingArray(ease2)?ease2.map(easingDefinitionToFunction):easingDefinitionToFunction(ease2),state={done:!1,value:keyframeValues[0]},absoluteTimes=convertOffsetToTimes(times&×.length===keyframeValues.length?times:defaultOffset(keyframeValues),duration),mapTimeToKeyframe=interpolate(absoluteTimes,keyframeValues,{ease:Array.isArray(easingFunctions)?easingFunctions:defaultEasing(keyframeValues,easingFunctions)});return{calculatedDuration:duration,next:t2=>(state.value=mapTimeToKeyframe(t2),state.done=t2>=duration,state)}}const maxGeneratorDuration=2e4;function calcGeneratorDuration(generator){let duration=0;const timeStep=50;let state=generator.next(duration);for(;!state.done&&duration<maxGeneratorDuration;)duration+=timeStep,state=generator.next(duration);return duration>=maxGeneratorDuration?1/0:duration}const frameloopDriver=update=>{const passTimestamp=({timestamp})=>update(timestamp);return{start:()=>frame.update(passTimestamp,!0),stop:()=>cancelFrame(passTimestamp),now:()=>frameData.isProcessing?frameData.timestamp:time.now()}},generators={decay:inertia,inertia,tween:keyframes,keyframes,spring},percentToProgress=percent2=>percent2/100;class MainThreadAnimation extends BaseAnimation{constructor({KeyframeResolver:KeyframeResolver$1=KeyframeResolver,...options}){super(options),this.holdTime=null,this.startTime=null,this.cancelTime=null,this.currentTime=0,this.playbackSpeed=1,this.pendingPlayState="running",this.state="idle",this.stop=()=>{if(this.resolver.cancel(),this.isStopped=!0,this.state==="idle")return;this.teardown();const{onStop}=this.options;onStop&&onStop()};const{name,motionValue:motionValue2,keyframes:keyframes2}=this.options,onResolved=(resolvedKeyframes,finalKeyframe)=>this.onKeyframesResolved(resolvedKeyframes,finalKeyframe);name&&motionValue2&&motionValue2.owner?this.resolver=motionValue2.owner.resolveKeyframes(keyframes2,onResolved,name,motionValue2):this.resolver=new KeyframeResolver$1(keyframes2,onResolved,name,motionValue2),this.resolver.scheduleResolve()}initPlayback(keyframes$1){const{type="keyframes",repeat=0,repeatDelay=0,repeatType,velocity=0}=this.options,generatorFactory=generators[type]||keyframes;let mapPercentToKeyframes,mirroredGenerator;generatorFactory!==keyframes&&typeof keyframes$1[0]!="number"&&(mapPercentToKeyframes=pipe(percentToProgress,mix(keyframes$1[0],keyframes$1[1])),keyframes$1=[0,100]);const generator=generatorFactory({...this.options,keyframes:keyframes$1});repeatType==="mirror"&&(mirroredGenerator=generatorFactory({...this.options,keyframes:[...keyframes$1].reverse(),velocity:-velocity})),generator.calculatedDuration===null&&(generator.calculatedDuration=calcGeneratorDuration(generator));const{calculatedDuration}=generator,resolvedDuration=calculatedDuration+repeatDelay,totalDuration=resolvedDuration*(repeat+1)-repeatDelay;return{generator,mirroredGenerator,mapPercentToKeyframes,calculatedDuration,resolvedDuration,totalDuration}}onPostResolved(){const{autoplay=!0}=this.options;this.play(),this.pendingPlayState==="paused"||!autoplay?this.pause():this.state=this.pendingPlayState}tick(timestamp,sample=!1){const{resolved}=this;if(!resolved){const{keyframes:keyframes3}=this.options;return{done:!0,value:keyframes3[keyframes3.length-1]}}const{finalKeyframe,generator,mirroredGenerator,mapPercentToKeyframes,keyframes:keyframes2,calculatedDuration,totalDuration,resolvedDuration}=resolved;if(this.startTime===null)return generator.next(0);const{delay,repeat,repeatType,repeatDelay,onUpdate}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,timestamp):this.speed<0&&(this.startTime=Math.min(timestamp-totalDuration/this.speed,this.startTime)),sample?this.currentTime=timestamp:this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=Math.round(timestamp-this.startTime)*this.speed;const timeWithoutDelay=this.currentTime-delay*(this.speed>=0?1:-1),isInDelayPhase=this.speed>=0?timeWithoutDelay<0:timeWithoutDelay>totalDuration;this.currentTime=Math.max(timeWithoutDelay,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=totalDuration);let elapsed=this.currentTime,frameGenerator=generator;if(repeat){const progress2=Math.min(this.currentTime,totalDuration)/resolvedDuration;let currentIteration=Math.floor(progress2),iterationProgress=progress2%1;!iterationProgress&&progress2>=1&&(iterationProgress=1),iterationProgress===1&¤tIteration--,currentIteration=Math.min(currentIteration,repeat+1),!!(currentIteration%2)&&(repeatType==="reverse"?(iterationProgress=1-iterationProgress,repeatDelay&&(iterationProgress-=repeatDelay/resolvedDuration)):repeatType==="mirror"&&(frameGenerator=mirroredGenerator)),elapsed=clamp(0,1,iterationProgress)*resolvedDuration}const state=isInDelayPhase?{done:!1,value:keyframes2[0]}:frameGenerator.next(elapsed);mapPercentToKeyframes&&(state.value=mapPercentToKeyframes(state.value));let{done}=state;!isInDelayPhase&&calculatedDuration!==null&&(done=this.speed>=0?this.currentTime>=totalDuration:this.currentTime<=0);const isAnimationFinished=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&done);return isAnimationFinished&&finalKeyframe!==void 0&&(state.value=getFinalKeyframe(keyframes2,this.options,finalKeyframe)),onUpdate&&onUpdate(state.value),isAnimationFinished&&this.finish(),state}get duration(){const{resolved}=this;return resolved?millisecondsToSeconds(resolved.calculatedDuration):0}get time(){return millisecondsToSeconds(this.currentTime)}set time(newTime){newTime=secondsToMilliseconds(newTime),this.currentTime=newTime,this.holdTime!==null||this.speed===0?this.holdTime=newTime:this.driver&&(this.startTime=this.driver.now()-newTime/this.speed)}get speed(){return this.playbackSpeed}set speed(newSpeed){const hasChanged=this.playbackSpeed!==newSpeed;this.playbackSpeed=newSpeed,hasChanged&&(this.time=millisecondsToSeconds(this.currentTime))}play(){if(this.resolver.isScheduled||this.resolver.resume(),!this._resolved){this.pendingPlayState="running";return}if(this.isStopped)return;const{driver=frameloopDriver,onPlay}=this.options;this.driver||(this.driver=driver(timestamp=>this.tick(timestamp))),onPlay&&onPlay();const now2=this.driver.now();this.holdTime!==null?this.startTime=now2-this.holdTime:(!this.startTime||this.state==="finished")&&(this.startTime=now2),this.state==="finished"&&this.updateFinishedPromise(),this.cancelTime=this.startTime,this.holdTime=null,this.state="running",this.driver.start()}pause(){var _a;if(!this._resolved){this.pendingPlayState="paused";return}this.state="paused",this.holdTime=(_a=this.currentTime)!==null&&_a!==void 0?_a:0}complete(){this.state!=="running"&&this.play(),this.pendingPlayState=this.state="finished",this.holdTime=null}finish(){this.teardown(),this.state="finished";const{onComplete}=this.options;onComplete&&onComplete()}cancel(){this.cancelTime!==null&&this.tick(this.cancelTime),this.teardown(),this.updateFinishedPromise()}teardown(){this.state="idle",this.stopDriver(),this.resolveFinishedPromise(),this.updateFinishedPromise(),this.startTime=this.cancelTime=null,this.resolver.cancel()}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(time2){return this.startTime=0,this.tick(time2,!0)}}const isBezierDefinition=easing=>Array.isArray(easing)&&typeof easing[0]=="number";function isWaapiSupportedEasing(easing){return!!(!easing||typeof easing=="string"&&easing in supportedWaapiEasing||isBezierDefinition(easing)||Array.isArray(easing)&&easing.every(isWaapiSupportedEasing))}const cubicBezierAsString=([a2,b2,c2,d2])=>`cubic-bezier(${a2}, ${b2}, ${c2}, ${d2})`,supportedWaapiEasing={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:cubicBezierAsString([0,.65,.55,1]),circOut:cubicBezierAsString([.55,0,1,.45]),backIn:cubicBezierAsString([.31,.01,.66,-.59]),backOut:cubicBezierAsString([.33,1.53,.69,.99])};function mapEasingToNativeEasingWithDefault(easing){return mapEasingToNativeEasing(easing)||supportedWaapiEasing.easeOut}function mapEasingToNativeEasing(easing){if(easing)return isBezierDefinition(easing)?cubicBezierAsString(easing):Array.isArray(easing)?easing.map(mapEasingToNativeEasingWithDefault):supportedWaapiEasing[easing]}function animateStyle(element,valueName,keyframes2,{delay=0,duration=300,repeat=0,repeatType="loop",ease:ease2,times}={}){const keyframeOptions={[valueName]:keyframes2};times&&(keyframeOptions.offset=times);const easing=mapEasingToNativeEasing(ease2);return Array.isArray(easing)&&(keyframeOptions.easing=easing),element.animate(keyframeOptions,{delay,duration,easing:Array.isArray(easing)?"linear":easing,fill:"both",iterations:repeat+1,direction:repeatType==="reverse"?"alternate":"normal"})}const supportsWaapi=memo(()=>Object.hasOwnProperty.call(Element.prototype,"animate")),sampleDelta=10,maxDuration=2e4;function requiresPregeneratedKeyframes(options){return options.type==="spring"||!isWaapiSupportedEasing(options.ease)}function pregenerateKeyframes(keyframes2,options){const sampleAnimation=new MainThreadAnimation({...options,keyframes:keyframes2,repeat:0,delay:0,isGenerator:!0});let state={done:!1,value:keyframes2[0]};const pregeneratedKeyframes=[];let t2=0;for(;!state.done&&t2<maxDuration;)state=sampleAnimation.sample(t2),pregeneratedKeyframes.push(state.value),t2+=sampleDelta;return{times:void 0,keyframes:pregeneratedKeyframes,duration:t2-sampleDelta,ease:"linear"}}class AcceleratedAnimation extends BaseAnimation{constructor(options){super(options);const{name,motionValue:motionValue2,keyframes:keyframes2}=this.options;this.resolver=new DOMKeyframesResolver(keyframes2,(resolvedKeyframes,finalKeyframe)=>this.onKeyframesResolved(resolvedKeyframes,finalKeyframe),name,motionValue2),this.resolver.scheduleResolve()}initPlayback(keyframes2,finalKeyframe){var _a;let{duration=300,times,ease:ease2,type,motionValue:motionValue2,name}=this.options;if(!(!((_a=motionValue2.owner)===null||_a===void 0)&&_a.current))return!1;if(requiresPregeneratedKeyframes(this.options)){const{onComplete,onUpdate,motionValue:motionValue3,...options}=this.options,pregeneratedAnimation=pregenerateKeyframes(keyframes2,options);keyframes2=pregeneratedAnimation.keyframes,keyframes2.length===1&&(keyframes2[1]=keyframes2[0]),duration=pregeneratedAnimation.duration,times=pregeneratedAnimation.times,ease2=pregeneratedAnimation.ease,type="keyframes"}const animation=animateStyle(motionValue2.owner.current,name,keyframes2,{...this.options,duration,times,ease:ease2});return animation.startTime=time.now(),this.pendingTimeline?(animation.timeline=this.pendingTimeline,this.pendingTimeline=void 0):animation.onfinish=()=>{const{onComplete}=this.options;motionValue2.set(getFinalKeyframe(keyframes2,this.options,finalKeyframe)),onComplete&&onComplete(),this.cancel(),this.resolveFinishedPromise()},{animation,duration,times,type,ease:ease2,keyframes:keyframes2}}get duration(){const{resolved}=this;if(!resolved)return 0;const{duration}=resolved;return millisecondsToSeconds(duration)}get time(){const{resolved}=this;if(!resolved)return 0;const{animation}=resolved;return millisecondsToSeconds(animation.currentTime||0)}set time(newTime){const{resolved}=this;if(!resolved)return;const{animation}=resolved;animation.currentTime=secondsToMilliseconds(newTime)}get speed(){const{resolved}=this;if(!resolved)return 1;const{animation}=resolved;return animation.playbackRate}set speed(newSpeed){const{resolved}=this;if(!resolved)return;const{animation}=resolved;animation.playbackRate=newSpeed}get state(){const{resolved}=this;if(!resolved)return"idle";const{animation}=resolved;return animation.playState}attachTimeline(timeline){if(!this._resolved)this.pendingTimeline=timeline;else{const{resolved}=this;if(!resolved)return noop$2;const{animation}=resolved;animation.timeline=timeline,animation.onfinish=null}return noop$2}play(){if(this.isStopped)return;const{resolved}=this;if(!resolved)return;const{animation}=resolved;animation.playState==="finished"&&this.updateFinishedPromise(),animation.play()}pause(){const{resolved}=this;if(!resolved)return;const{animation}=resolved;animation.pause()}stop(){if(this.resolver.cancel(),this.isStopped=!0,this.state==="idle")return;const{resolved}=this;if(!resolved)return;const{animation,keyframes:keyframes2,duration,type,ease:ease2,times}=resolved;if(animation.playState==="idle"||animation.playState==="finished")return;if(this.time){const{motionValue:motionValue2,onUpdate,onComplete,...options}=this.options,sampleAnimation=new MainThreadAnimation({...options,keyframes:keyframes2,duration,type,ease:ease2,times,isGenerator:!0}),sampleTime=secondsToMilliseconds(this.time);motionValue2.setWithVelocity(sampleAnimation.sample(sampleTime-sampleDelta).value,sampleAnimation.sample(sampleTime).value,sampleDelta)}const{onStop}=this.options;onStop&&onStop(),this.cancel()}complete(){const{resolved}=this;resolved&&resolved.animation.finish()}cancel(){const{resolved}=this;resolved&&resolved.animation.cancel()}static supports(options){const{motionValue:motionValue2,name,repeatDelay,repeatType,damping,type}=options;return supportsWaapi()&&name&&acceleratedValues.has(name)&&motionValue2&&motionValue2.owner&&motionValue2.owner.current instanceof HTMLElement&&!motionValue2.owner.getProps().onUpdate&&!repeatDelay&&repeatType!=="mirror"&&damping!==0&&type!=="inertia"}}function observeTimeline(update,timeline){let prevProgress;const onFrame=()=>{const{currentTime}=timeline,progress2=(currentTime===null?0:currentTime.value)/100;prevProgress!==progress2&&update(progress2),prevProgress=progress2};return frame.update(onFrame,!0),()=>cancelFrame(onFrame)}const supportsScrollTimeline=memo(()=>window.ScrollTimeline!==void 0);class GroupPlaybackControls{constructor(animations2){this.stop=()=>this.runAll("stop"),this.animations=animations2.filter(Boolean)}then(onResolve,onReject){return Promise.all(this.animations).then(onResolve).catch(onReject)}getAll(propName){return this.animations[0][propName]}setAll(propName,newValue){for(let i2=0;i2<this.animations.length;i2++)this.animations[i2][propName]=newValue}attachTimeline(timeline){const cancelAll=this.animations.map(animation=>{if(supportsScrollTimeline()&&animation.attachTimeline)animation.attachTimeline(timeline);else return animation.pause(),observeTimeline(progress2=>{animation.time=animation.duration*progress2},timeline)});return()=>{cancelAll.forEach((cancelTimeline,i2)=>{cancelTimeline&&cancelTimeline(),this.animations[i2].stop()})}}get time(){return this.getAll("time")}set time(time2){this.setAll("time",time2)}get speed(){return this.getAll("speed")}set speed(speed){this.setAll("speed",speed)}get duration(){let max2=0;for(let i2=0;i2<this.animations.length;i2++)max2=Math.max(max2,this.animations[i2].duration);return max2}runAll(methodName){this.animations.forEach(controls=>controls[methodName]())}play(){this.runAll("play")}pause(){this.runAll("pause")}cancel(){this.runAll("cancel")}complete(){this.runAll("complete")}}const animateMotionValue=(name,value,target,transition={},element,isHandoff,onEnd)=>onComplete=>{const valueTransition=getValueTransition(transition,name)||{},delay=valueTransition.delay||transition.delay||0;let{elapsed=0}=transition;elapsed=elapsed-secondsToMilliseconds(delay);let options={keyframes:Array.isArray(target)?target:[null,target],ease:"easeOut",velocity:value.getVelocity(),...valueTransition,delay:-elapsed,onUpdate:v2=>{value.set(v2),valueTransition.onUpdate&&valueTransition.onUpdate(v2)},onComplete:()=>{onComplete(),valueTransition.onComplete&&valueTransition.onComplete(),onEnd&&onEnd()},onStop:onEnd,name,motionValue:value,element:isHandoff?void 0:element};isTransitionDefined(valueTransition)||(options={...options,...getDefaultTransition(name,options)}),options.duration&&(options.duration=secondsToMilliseconds(options.duration)),options.repeatDelay&&(options.repeatDelay=secondsToMilliseconds(options.repeatDelay)),options.from!==void 0&&(options.keyframes[0]=options.from);let shouldSkip=!1;if((options.type===!1||options.duration===0&&!options.repeatDelay)&&(options.duration=0,options.delay===0&&(shouldSkip=!0)),shouldSkip&&!isHandoff&&value.get()!==void 0){const finalKeyframe=getFinalKeyframe(options.keyframes,valueTransition);if(finalKeyframe!==void 0)return frame.update(()=>{options.onUpdate(finalKeyframe),options.onComplete()}),new GroupPlaybackControls([])}return!isHandoff&&AcceleratedAnimation.supports(options)?new AcceleratedAnimation(options):new MainThreadAnimation(options)};class SubscriptionManager{constructor(){this.subscriptions=[]}add(handler){return addUniqueItem(this.subscriptions,handler),()=>removeItem(this.subscriptions,handler)}notify(a2,b2,c2){const numSubscriptions=this.subscriptions.length;if(numSubscriptions)if(numSubscriptions===1)this.subscriptions[0](a2,b2,c2);else for(let i2=0;i2<numSubscriptions;i2++){const handler=this.subscriptions[i2];handler&&handler(a2,b2,c2)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}const MAX_VELOCITY_DELTA=30,isFloat=value=>!isNaN(parseFloat(value));class MotionValue{constructor(init2,options={}){this.version="11.3.8",this.canTrackVelocity=null,this.events={},this.updateAndNotify=(v2,render=!0)=>{const currentTime=time.now();this.updatedAt!==currentTime&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(v2),this.current!==this.prev&&this.events.change&&this.events.change.notify(this.current),render&&this.events.renderRequest&&this.events.renderRequest.notify(this.current)},this.hasAnimated=!1,this.setCurrent(init2),this.owner=options.owner}setCurrent(current){this.current=current,this.updatedAt=time.now(),this.canTrackVelocity===null&¤t!==void 0&&(this.canTrackVelocity=isFloat(this.current))}setPrevFrameValue(prevFrameValue=this.current){this.prevFrameValue=prevFrameValue,this.prevUpdatedAt=this.updatedAt}onChange(subscription){return this.on("change",subscription)}on(eventName,callback){this.events[eventName]||(this.events[eventName]=new SubscriptionManager);const unsubscribe=this.events[eventName].add(callback);return eventName==="change"?()=>{unsubscribe(),frame.read(()=>{this.events.change.getSize()||this.stop()})}:unsubscribe}clearListeners(){for(const eventManagers in this.events)this.events[eventManagers].clear()}attach(passiveEffect,stopPassiveEffect){this.passiveEffect=passiveEffect,this.stopPassiveEffect=stopPassiveEffect}set(v2,render=!0){!render||!this.passiveEffect?this.updateAndNotify(v2,render):this.passiveEffect(v2,this.updateAndNotify)}setWithVelocity(prev,current,delta){this.set(current),this.prev=void 0,this.prevFrameValue=prev,this.prevUpdatedAt=this.updatedAt-delta}jump(v2,endAnimation=!0){this.updateAndNotify(v2),this.prev=v2,this.prevUpdatedAt=this.prevFrameValue=void 0,endAnimation&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const currentTime=time.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||currentTime-this.updatedAt>MAX_VELOCITY_DELTA)return 0;const delta=Math.min(this.updatedAt-this.prevUpdatedAt,MAX_VELOCITY_DELTA);return velocityPerSecond(parseFloat(this.current)-parseFloat(this.prevFrameValue),delta)}start(startAnimation){return this.stop(),new Promise(resolve=>{this.hasAnimated=!0,this.animation=startAnimation(resolve),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function motionValue(init2,options){return new MotionValue(init2,options)}function setMotionValue(visualElement,key,value){visualElement.hasValue(key)?visualElement.getValue(key).set(value):visualElement.addValue(key,motionValue(value))}function setTarget(visualElement,definition){const resolved=resolveVariant(visualElement,definition);let{transitionEnd={},transition={},...target}=resolved||{};target={...target,...transitionEnd};for(const key in target){const value=resolveFinalValueInKeyframes(target[key]);setMotionValue(visualElement,key,value)}}function getOptimisedAppearId(visualElement){return visualElement.getProps()[optimizedAppearDataAttribute]}class WillChangeMotionValue extends MotionValue{constructor(){super(...arguments),this.output=[],this.counts=new Map}add(name){const styleName=getWillChangeName(name);if(!styleName)return;const prevCount=this.counts.get(styleName)||0;this.counts.set(styleName,prevCount+1),prevCount===0&&(this.output.push(styleName),this.update());let hasRemoved=!1;return()=>{if(hasRemoved)return;hasRemoved=!0;const newCount=this.counts.get(styleName)-1;this.counts.set(styleName,newCount),newCount===0&&(removeItem(this.output,styleName),this.update())}}update(){this.set(this.output.length?this.output.join(", "):"auto")}}function isWillChangeMotionValue(value){return!!(isMotionValue(value)&&value.add)}function addValueToWillChange(visualElement,key){var _a;if(!visualElement.applyWillChange)return;let willChange=visualElement.getValue("willChange");if(!willChange&&!(!((_a=visualElement.props.style)===null||_a===void 0)&&_a.willChange)&&(willChange=new WillChangeMotionValue("auto"),visualElement.addValue("willChange",willChange)),isWillChangeMotionValue(willChange))return willChange.add(key)}function shouldBlockAnimation({protectedKeys,needsAnimating},key){const shouldBlock=protectedKeys.hasOwnProperty(key)&&needsAnimating[key]!==!0;return needsAnimating[key]=!1,shouldBlock}function animateTarget(visualElement,targetAndTransition,{delay=0,transitionOverride,type}={}){var _a;let{transition=visualElement.getDefaultTransition(),transitionEnd,...target}=targetAndTransition;transitionOverride&&(transition=transitionOverride);const animations2=[],animationTypeState=type&&visualElement.animationState&&visualElement.animationState.getState()[type];for(const key in target){const value=visualElement.getValue(key,(_a=visualElement.latestValues[key])!==null&&_a!==void 0?_a:null),valueTarget=target[key];if(valueTarget===void 0||animationTypeState&&shouldBlockAnimation(animationTypeState,key))continue;const valueTransition={delay,elapsed:0,...getValueTransition(transition||{},key)};let isHandoff=!1;if(window.HandoffAppearAnimations){const appearId=getOptimisedAppearId(visualElement);if(appearId){const elapsed=window.HandoffAppearAnimations(appearId,key,value,frame);elapsed!==null&&(valueTransition.elapsed=elapsed,isHandoff=!0)}}value.start(animateMotionValue(key,value,valueTarget,visualElement.shouldReduceMotion&&transformProps.has(key)?{type:!1}:valueTransition,visualElement,isHandoff,addValueToWillChange(visualElement,key)));const animation=value.animation;animation&&animations2.push(animation)}return transitionEnd&&Promise.all(animations2).then(()=>{frame.update(()=>{transitionEnd&&setTarget(visualElement,transitionEnd)})}),animations2}function animateVariant(visualElement,variant,options={}){var _a;const resolved=resolveVariant(visualElement,variant,options.type==="exit"?(_a=visualElement.presenceContext)===null||_a===void 0?void 0:_a.custom:void 0);let{transition=visualElement.getDefaultTransition()||{}}=resolved||{};options.transitionOverride&&(transition=options.transitionOverride);const getAnimation=resolved?()=>Promise.all(animateTarget(visualElement,resolved,options)):()=>Promise.resolve(),getChildAnimations=visualElement.variantChildren&&visualElement.variantChildren.size?(forwardDelay=0)=>{const{delayChildren=0,staggerChildren,staggerDirection}=transition;return animateChildren(visualElement,variant,delayChildren+forwardDelay,staggerChildren,staggerDirection,options)}:()=>Promise.resolve(),{when}=transition;if(when){const[first,last2]=when==="beforeChildren"?[getAnimation,getChildAnimations]:[getChildAnimations,getAnimation];return first().then(()=>last2())}else return Promise.all([getAnimation(),getChildAnimations(options.delay)])}function animateChildren(visualElement,variant,delayChildren=0,staggerChildren=0,staggerDirection=1,options){const animations2=[],maxStaggerDuration=(visualElement.variantChildren.size-1)*staggerChildren,generateStaggerDuration=staggerDirection===1?(i2=0)=>i2*staggerChildren:(i2=0)=>maxStaggerDuration-i2*staggerChildren;return Array.from(visualElement.variantChildren).sort(sortByTreeOrder).forEach((child,i2)=>{child.notify("AnimationStart",variant),animations2.push(animateVariant(child,variant,{...options,delay:delayChildren+generateStaggerDuration(i2)}).then(()=>child.notify("AnimationComplete",variant)))}),Promise.all(animations2)}function sortByTreeOrder(a2,b2){return a2.sortNodePosition(b2)}function animateVisualElement(visualElement,definition,options={}){visualElement.notify("AnimationStart",definition);let animation;if(Array.isArray(definition)){const animations2=definition.map(variant=>animateVariant(visualElement,variant,options));animation=Promise.all(animations2)}else if(typeof definition=="string")animation=animateVariant(visualElement,definition,options);else{const resolvedDefinition=typeof definition=="function"?resolveVariant(visualElement,definition,options.custom):definition;animation=Promise.all(animateTarget(visualElement,resolvedDefinition,options))}return animation.then(()=>{frame.postRender(()=>{visualElement.notify("AnimationComplete",definition)})})}const reversePriorityOrder=[...variantPriorityOrder].reverse(),numAnimationTypes=variantPriorityOrder.length;function animateList(visualElement){return animations2=>Promise.all(animations2.map(({animation,options})=>animateVisualElement(visualElement,animation,options)))}function createAnimationState(visualElement){let animate=animateList(visualElement),state=createState(),isInitialRender=!0;const buildResolvedTypeValues=type=>(acc,definition)=>{var _a;const resolved=resolveVariant(visualElement,definition,type==="exit"?(_a=visualElement.presenceContext)===null||_a===void 0?void 0:_a.custom:void 0);if(resolved){const{transition,transitionEnd,...target}=resolved;acc={...acc,...target,...transitionEnd}}return acc};function setAnimateFunction(makeAnimator){animate=makeAnimator(visualElement)}function animateChanges(changedActiveType){const props2=visualElement.getProps(),context=visualElement.getVariantContext(!0)||{},animations2=[],removedKeys=new Set;let encounteredKeys={},removedVariantIndex=1/0;for(let i2=0;i2<numAnimationTypes;i2++){const type=reversePriorityOrder[i2],typeState=state[type],prop=props2[type]!==void 0?props2[type]:context[type],propIsVariant=isVariantLabel(prop),activeDelta=type===changedActiveType?typeState.isActive:null;activeDelta===!1&&(removedVariantIndex=i2);let isInherited=prop===context[type]&&prop!==props2[type]&&propIsVariant;if(isInherited&&isInitialRender&&visualElement.manuallyAnimateOnMount&&(isInherited=!1),typeState.protectedKeys={...encounteredKeys},!typeState.isActive&&activeDelta===null||!prop&&!typeState.prevProp||isAnimationControls(prop)||typeof prop=="boolean")continue;let shouldAnimateType=checkVariantsDidChange(typeState.prevProp,prop)||type===changedActiveType&&typeState.isActive&&!isInherited&&propIsVariant||i2>removedVariantIndex&&propIsVariant,handledRemovedValues=!1;const definitionList=Array.isArray(prop)?prop:[prop];let resolvedValues=definitionList.reduce(buildResolvedTypeValues(type),{});activeDelta===!1&&(resolvedValues={});const{prevResolvedValues={}}=typeState,allKeys={...prevResolvedValues,...resolvedValues},markToAnimate=key=>{shouldAnimateType=!0,removedKeys.has(key)&&(handledRemovedValues=!0,removedKeys.delete(key)),typeState.needsAnimating[key]=!0;const motionValue2=visualElement.getValue(key);motionValue2&&(motionValue2.liveStyle=!1)};for(const key in allKeys){const next=resolvedValues[key],prev=prevResolvedValues[key];if(encounteredKeys.hasOwnProperty(key))continue;let valueHasChanged=!1;isKeyframesTarget(next)&&isKeyframesTarget(prev)?valueHasChanged=!shallowCompare(next,prev):valueHasChanged=next!==prev,valueHasChanged?next!=null?markToAnimate(key):removedKeys.add(key):next!==void 0&&removedKeys.has(key)?markToAnimate(key):typeState.protectedKeys[key]=!0}typeState.prevProp=prop,typeState.prevResolvedValues=resolvedValues,typeState.isActive&&(encounteredKeys={...encounteredKeys,...resolvedValues}),isInitialRender&&visualElement.blockInitialAnimation&&(shouldAnimateType=!1),shouldAnimateType&&(!isInherited||handledRemovedValues)&&animations2.push(...definitionList.map(animation=>({animation,options:{type}})))}if(removedKeys.size){const fallbackAnimation={};removedKeys.forEach(key=>{const fallbackTarget=visualElement.getBaseTarget(key),motionValue2=visualElement.getValue(key);motionValue2&&(motionValue2.liveStyle=!0),fallbackAnimation[key]=fallbackTarget??null}),animations2.push({animation:fallbackAnimation})}let shouldAnimate=!!animations2.length;return isInitialRender&&(props2.initial===!1||props2.initial===props2.animate)&&!visualElement.manuallyAnimateOnMount&&(shouldAnimate=!1),isInitialRender=!1,shouldAnimate?animate(animations2):Promise.resolve()}function setActive(type,isActive){var _a;if(state[type].isActive===isActive)return Promise.resolve();(_a=visualElement.variantChildren)===null||_a===void 0||_a.forEach(child=>{var _a2;return(_a2=child.animationState)===null||_a2===void 0?void 0:_a2.setActive(type,isActive)}),state[type].isActive=isActive;const animations2=animateChanges(type);for(const key in state)state[key].protectedKeys={};return animations2}return{animateChanges,setActive,setAnimateFunction,getState:()=>state,reset:()=>{state=createState(),isInitialRender=!0}}}function checkVariantsDidChange(prev,next){return typeof next=="string"?next!==prev:Array.isArray(next)?!shallowCompare(next,prev):!1}function createTypeState(isActive=!1){return{isActive,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function createState(){return{animate:createTypeState(!0),whileInView:createTypeState(),whileHover:createTypeState(),whileTap:createTypeState(),whileDrag:createTypeState(),whileFocus:createTypeState(),exit:createTypeState()}}class AnimationFeature extends Feature{constructor(node){super(node),node.animationState||(node.animationState=createAnimationState(node))}updateAnimationControlsSubscription(){const{animate}=this.node.getProps();isAnimationControls(animate)&&(this.unmountControls=animate.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate}=this.node.getProps(),{animate:prevAnimate}=this.node.prevProps||{};animate!==prevAnimate&&this.updateAnimationControlsSubscription()}unmount(){var _a;this.node.animationState.reset(),(_a=this.unmountControls)===null||_a===void 0||_a.call(this)}}let id=0;class ExitAnimationFeature extends Feature{constructor(){super(...arguments),this.id=id++}update(){if(!this.node.presenceContext)return;const{isPresent,onExitComplete}=this.node.presenceContext,{isPresent:prevIsPresent}=this.node.prevPresenceContext||{};if(!this.node.animationState||isPresent===prevIsPresent)return;const exitAnimation=this.node.animationState.setActive("exit",!isPresent);onExitComplete&&!isPresent&&exitAnimation.then(()=>onExitComplete(this.id))}mount(){const{register}=this.node.presenceContext||{};register&&(this.unmount=register(this.id))}unmount(){}}const animations={animation:{Feature:AnimationFeature},exit:{Feature:ExitAnimationFeature}},createAxis=()=>({min:0,max:0}),createBox=()=>({x:createAxis(),y:createAxis()});function convertBoundingBoxToBox({top,left,right,bottom}){return{x:{min:left,max:right},y:{min:top,max:bottom}}}function transformBoxPoints(point2,transformPoint){if(!transformPoint)return point2;const topLeft=transformPoint({x:point2.left,y:point2.top}),bottomRight=transformPoint({x:point2.right,y:point2.bottom});return{top:topLeft.y,left:topLeft.x,bottom:bottomRight.y,right:bottomRight.x}}function measureViewportBox(instance,transformPoint){return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(),transformPoint))}const prefersReducedMotion={current:null},hasReducedMotionListener={current:!1};function initPrefersReducedMotion(){if(hasReducedMotionListener.current=!0,!!isBrowser$1)if(window.matchMedia){const motionMediaQuery=window.matchMedia("(prefers-reduced-motion)"),setReducedMotionPreferences=()=>prefersReducedMotion.current=motionMediaQuery.matches;motionMediaQuery.addListener(setReducedMotionPreferences),setReducedMotionPreferences()}else prefersReducedMotion.current=!1}function updateMotionValuesFromProps(element,next,prev){for(const key in next){const nextValue=next[key],prevValue=prev[key];if(isMotionValue(nextValue))element.addValue(key,nextValue);else if(isMotionValue(prevValue))element.addValue(key,motionValue(nextValue,{owner:element}));else if(prevValue!==nextValue)if(element.hasValue(key)){const existingValue=element.getValue(key);existingValue.liveStyle===!0?existingValue.jump(nextValue):existingValue.hasAnimated||existingValue.set(nextValue)}else{const latestValue=element.getStaticValue(key);element.addValue(key,motionValue(latestValue!==void 0?latestValue:nextValue,{owner:element}))}}for(const key in prev)next[key]===void 0&&element.removeValue(key);return next}const visualElementStore=new WeakMap,valueTypes=[...dimensionValueTypes,color,complex],findValueType=v2=>valueTypes.find(testValueType(v2)),propEventHandlers=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"],numVariantProps=variantProps.length;class VisualElement{scrapeMotionValuesFromProps(_props,_prevProps,_visualElement){return{}}constructor({parent,props:props2,presenceContext,reducedMotionConfig,blockInitialAnimation,visualState},options={}){this.applyWillChange=!1,this.resolveKeyframes=(keyframes2,onComplete,name,value)=>new this.KeyframeResolver(keyframes2,onComplete,name,value,this),this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.KeyframeResolver=KeyframeResolver,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.isRenderScheduled=!1,this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.isRenderScheduled=!1,this.scheduleRender=()=>{this.isRenderScheduled||(this.isRenderScheduled=!0,frame.render(this.render,!1,!0))};const{latestValues,renderState}=visualState;this.latestValues=latestValues,this.baseTarget={...latestValues},this.initialValues=props2.initial?{...latestValues}:{},this.renderState=renderState,this.parent=parent,this.props=props2,this.presenceContext=presenceContext,this.depth=parent?parent.depth+1:0,this.reducedMotionConfig=reducedMotionConfig,this.options=options,this.blockInitialAnimation=!!blockInitialAnimation,this.isControllingVariants=isControllingVariants(props2),this.isVariantNode=isVariantNode(props2),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(parent&&parent.current);const{willChange,...initialMotionValues}=this.scrapeMotionValuesFromProps(props2,{},this);for(const key in initialMotionValues){const value=initialMotionValues[key];latestValues[key]!==void 0&&isMotionValue(value)&&value.set(latestValues[key],!1)}}mount(instance){this.current=instance,visualElementStore.set(instance,this),this.projection&&!this.projection.instance&&this.projection.mount(instance),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((value,key)=>this.bindToMotionValue(key,value)),hasReducedMotionListener.current||initPrefersReducedMotion(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:prefersReducedMotion.current,this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){visualElementStore.delete(this.current),this.projection&&this.projection.unmount(),cancelFrame(this.notifyUpdate),cancelFrame(this.render),this.valueSubscriptions.forEach(remove2=>remove2()),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent&&this.parent.children.delete(this);for(const key in this.events)this.events[key].clear();for(const key in this.features){const feature=this.features[key];feature&&(feature.unmount(),feature.isMounted=!1)}this.current=null}bindToMotionValue(key,value){const valueIsTransform=transformProps.has(key),removeOnChange=value.on("change",latestValue=>{this.latestValues[key]=latestValue,this.props.onUpdate&&frame.preRender(this.notifyUpdate),valueIsTransform&&this.projection&&(this.projection.isTransformDirty=!0)}),removeOnRenderRequest=value.on("renderRequest",this.scheduleRender);this.valueSubscriptions.set(key,()=>{removeOnChange(),removeOnRenderRequest(),value.owner&&value.stop()})}sortNodePosition(other){return!this.current||!this.sortInstanceNodePosition||this.type!==other.type?0:this.sortInstanceNodePosition(this.current,other.current)}updateFeatures(){let key="animation";for(key in featureDefinitions){const featureDefinition=featureDefinitions[key];if(!featureDefinition)continue;const{isEnabled,Feature:FeatureConstructor}=featureDefinition;if(!this.features[key]&&FeatureConstructor&&isEnabled(this.props)&&(this.features[key]=new FeatureConstructor(this)),this.features[key]){const feature=this.features[key];feature.isMounted?feature.update():(feature.mount(),feature.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):createBox()}getStaticValue(key){return this.latestValues[key]}setStaticValue(key,value){this.latestValues[key]=value}update(props2,presenceContext){(props2.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=props2,this.prevPresenceContext=this.presenceContext,this.presenceContext=presenceContext;for(let i2=0;i2<propEventHandlers.length;i2++){const key=propEventHandlers[i2];this.propEventSubscriptions[key]&&(this.propEventSubscriptions[key](),delete this.propEventSubscriptions[key]);const listenerName="on"+key,listener=props2[listenerName];listener&&(this.propEventSubscriptions[key]=this.on(key,listener))}this.prevMotionValues=updateMotionValuesFromProps(this,this.scrapeMotionValuesFromProps(props2,this.prevProps,this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue()}getProps(){return this.props}getVariant(name){return this.props.variants?this.props.variants[name]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}getVariantContext(startAtParent=!1){if(startAtParent)return this.parent?this.parent.getVariantContext():void 0;if(!this.isControllingVariants){const context2=this.parent?this.parent.getVariantContext()||{}:{};return this.props.initial!==void 0&&(context2.initial=this.props.initial),context2}const context={};for(let i2=0;i2<numVariantProps;i2++){const name=variantProps[i2],prop=this.props[name];(isVariantLabel(prop)||prop===!1)&&(context[name]=prop)}return context}addVariantChild(child){const closestVariantNode=this.getClosestVariantNode();if(closestVariantNode)return closestVariantNode.variantChildren&&closestVariantNode.variantChildren.add(child),()=>closestVariantNode.variantChildren.delete(child)}addValue(key,value){const existingValue=this.values.get(key);value!==existingValue&&(existingValue&&this.removeValue(key),this.bindToMotionValue(key,value),this.values.set(key,value),this.latestValues[key]=value.get())}removeValue(key){this.values.delete(key);const unsubscribe=this.valueSubscriptions.get(key);unsubscribe&&(unsubscribe(),this.valueSubscriptions.delete(key)),delete this.latestValues[key],this.removeValueFromRenderState(key,this.renderState)}hasValue(key){return this.values.has(key)}getValue(key,defaultValue){if(this.props.values&&this.props.values[key])return this.props.values[key];let value=this.values.get(key);return value===void 0&&defaultValue!==void 0&&(value=motionValue(defaultValue===null?void 0:defaultValue,{owner:this}),this.addValue(key,value)),value}readValue(key,target){var _a;let value=this.latestValues[key]!==void 0||!this.current?this.latestValues[key]:(_a=this.getBaseTargetFromProps(this.props,key))!==null&&_a!==void 0?_a:this.readValueFromInstance(this.current,key,this.options);return value!=null&&(typeof value=="string"&&(isNumericalString(value)||isZeroValueString(value))?value=parseFloat(value):!findValueType(value)&&complex.test(target)&&(value=getAnimatableNone(key,target)),this.setBaseTarget(key,isMotionValue(value)?value.get():value)),isMotionValue(value)?value.get():value}setBaseTarget(key,value){this.baseTarget[key]=value}getBaseTarget(key){var _a;const{initial}=this.props;let valueFromInitial;if(typeof initial=="string"||typeof initial=="object"){const variant=resolveVariantFromProps(this.props,initial,(_a=this.presenceContext)===null||_a===void 0?void 0:_a.custom);variant&&(valueFromInitial=variant[key])}if(initial&&valueFromInitial!==void 0)return valueFromInitial;const target=this.getBaseTargetFromProps(this.props,key);return target!==void 0&&!isMotionValue(target)?target:this.initialValues[key]!==void 0&&valueFromInitial===void 0?void 0:this.baseTarget[key]}on(eventName,callback){return this.events[eventName]||(this.events[eventName]=new SubscriptionManager),this.events[eventName].add(callback)}notify(eventName,...args){this.events[eventName]&&this.events[eventName].notify(...args)}}class DOMVisualElement extends VisualElement{constructor(){super(...arguments),this.KeyframeResolver=DOMKeyframesResolver}sortInstanceNodePosition(a2,b2){return a2.compareDocumentPosition(b2)&2?1:-1}getBaseTargetFromProps(props2,key){return props2.style?props2.style[key]:void 0}removeValueFromRenderState(key,{vars,style:style2}){delete vars[key],delete style2[key]}}function getComputedStyle$1(element){return window.getComputedStyle(element)}class HTMLVisualElement extends DOMVisualElement{constructor(){super(...arguments),this.type="html",this.applyWillChange=!0,this.renderInstance=renderHTML}readValueFromInstance(instance,key){if(transformProps.has(key)){const defaultType=getDefaultValueType(key);return defaultType&&defaultType.default||0}else{const computedStyle=getComputedStyle$1(instance),value=(isCSSVariableName(key)?computedStyle.getPropertyValue(key):computedStyle[key])||0;return typeof value=="string"?value.trim():value}}measureInstanceViewportBox(instance,{transformPagePoint}){return measureViewportBox(instance,transformPagePoint)}build(renderState,latestValues,props2){buildHTMLStyles(renderState,latestValues,props2.transformTemplate)}scrapeMotionValuesFromProps(props2,prevProps,visualElement){return scrapeMotionValuesFromProps$1(props2,prevProps,visualElement)}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:children2}=this.props;isMotionValue(children2)&&(this.childSubscription=children2.on("change",latest=>{this.current&&(this.current.textContent=`${latest}`)}))}}class SVGVisualElement extends DOMVisualElement{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=createBox}getBaseTargetFromProps(props2,key){return props2[key]}readValueFromInstance(instance,key){if(transformProps.has(key)){const defaultType=getDefaultValueType(key);return defaultType&&defaultType.default||0}return key=camelCaseAttributes.has(key)?key:camelToDash(key),instance.getAttribute(key)}scrapeMotionValuesFromProps(props2,prevProps,visualElement){return scrapeMotionValuesFromProps(props2,prevProps,visualElement)}build(renderState,latestValues,props2){buildSVGAttrs(renderState,latestValues,this.isSVGTag,props2.transformTemplate)}renderInstance(instance,renderState,styleProp,projection){renderSVG(instance,renderState,styleProp,projection)}mount(instance){this.isSVGTag=isSVGTag(instance.tagName),super.mount(instance)}}const createDomVisualElement=(Component2,options)=>isSVGComponent(Component2)?new SVGVisualElement(options):new HTMLVisualElement(options,{allowProjection:Component2!==Fragment$1}),m=createMotionProxy(createDomMotionConfig);function useIsMounted(){const isMounted=useRef$1(!1);return useIsomorphicLayoutEffect$2(()=>(isMounted.current=!0,()=>{isMounted.current=!1}),[]),isMounted}function useForceUpdate(){const isMounted=useIsMounted(),[forcedRenderCount,setForcedRenderCount]=useState$1(0),forceRender=useCallback$1(()=>{isMounted.current&&setForcedRenderCount(forcedRenderCount+1)},[forcedRenderCount]);return[useCallback$1(()=>frame.postRender(forceRender),[forceRender]),forcedRenderCount]}class PopChildMeasure extends React.Component{getSnapshotBeforeUpdate(prevProps){const element=this.props.childRef.current;if(element&&prevProps.isPresent&&!this.props.isPresent){const size2=this.props.sizeRef.current;size2.height=element.offsetHeight||0,size2.width=element.offsetWidth||0,size2.top=element.offsetTop,size2.left=element.offsetLeft}return null}componentDidUpdate(){}render(){return this.props.children}}function PopChild({children:children2,isPresent}){const id2=useId$3(),ref=useRef$1(null),size2=useRef$1({width:0,height:0,top:0,left:0}),{nonce}=useContext$1(MotionConfigContext);return useInsertionEffect$1(()=>{const{width,height,top,left}=size2.current;if(isPresent||!ref.current||!width||!height)return;ref.current.dataset.motionPopId=id2;const style2=document.createElement("style");return nonce&&(style2.nonce=nonce),document.head.appendChild(style2),style2.sheet&&style2.sheet.insertRule(`
|
|
46
|
+
[data-motion-pop-id="${id2}"] {
|
|
47
|
+
position: absolute !important;
|
|
48
|
+
width: ${width}px !important;
|
|
49
|
+
height: ${height}px !important;
|
|
50
|
+
top: ${top}px !important;
|
|
51
|
+
left: ${left}px !important;
|
|
52
|
+
}
|
|
53
|
+
`),()=>{document.head.removeChild(style2)}},[isPresent]),jsx(PopChildMeasure,{isPresent,childRef:ref,sizeRef:size2,children:React.cloneElement(children2,{ref})})}const PresenceChild=({children:children2,initial,isPresent,onExitComplete,custom:custom5,presenceAffectsLayout,mode})=>{const presenceChildren=useConstant(newChildrenMap),id2=useId$3(),context=useMemo$1(()=>({id:id2,initial,isPresent,custom:custom5,onExitComplete:childId=>{presenceChildren.set(childId,!0);for(const isComplete of presenceChildren.values())if(!isComplete)return;onExitComplete&&onExitComplete()},register:childId=>(presenceChildren.set(childId,!1),()=>presenceChildren.delete(childId))}),presenceAffectsLayout?[Math.random()]:[isPresent]);return useMemo$1(()=>{presenceChildren.forEach((_,key)=>presenceChildren.set(key,!1))},[isPresent]),React.useEffect(()=>{!isPresent&&!presenceChildren.size&&onExitComplete&&onExitComplete()},[isPresent]),mode==="popLayout"&&(children2=jsx(PopChild,{isPresent,children:children2})),jsx(PresenceContext.Provider,{value:context,children:children2})};function newChildrenMap(){return new Map}function useUnmountEffect$1(callback){return useEffect$1(()=>()=>callback(),[])}const getChildKey=child=>child.key||"";function updateChildLookup(children2,allChildren){children2.forEach(child=>{const key=getChildKey(child);allChildren.set(key,child)})}function onlyElements(children2){const filtered=[];return Children.forEach(children2,child=>{isValidElement(child)&&filtered.push(child)}),filtered}const AnimatePresence=({children:children2,custom:custom5,initial=!0,onExitComplete,exitBeforeEnter,presenceAffectsLayout=!0,mode="sync"})=>{const forceRender=useContext$1(LayoutGroupContext).forceRender||useForceUpdate()[0],isMounted=useIsMounted(),filteredChildren=onlyElements(children2);let childrenToRender=filteredChildren;const exitingChildren=useRef$1(new Map).current,presentChildren=useRef$1(childrenToRender),allChildren=useRef$1(new Map).current,isInitialRender=useRef$1(!0);if(useIsomorphicLayoutEffect$2(()=>{isInitialRender.current=!1,updateChildLookup(filteredChildren,allChildren),presentChildren.current=childrenToRender}),useUnmountEffect$1(()=>{isInitialRender.current=!0,allChildren.clear(),exitingChildren.clear()}),isInitialRender.current)return jsx(Fragment,{children:childrenToRender.map(child=>jsx(PresenceChild,{isPresent:!0,initial:initial?void 0:!1,presenceAffectsLayout,mode,children:child},getChildKey(child)))});childrenToRender=[...childrenToRender];const presentKeys=presentChildren.current.map(getChildKey),targetKeys=filteredChildren.map(getChildKey),numPresent=presentKeys.length;for(let i2=0;i2<numPresent;i2++){const key=presentKeys[i2];targetKeys.indexOf(key)===-1&&!exitingChildren.has(key)&&exitingChildren.set(key,void 0)}return mode==="wait"&&exitingChildren.size&&(childrenToRender=[]),exitingChildren.forEach((component,key)=>{if(targetKeys.indexOf(key)!==-1)return;const child=allChildren.get(key);if(!child)return;const insertionIndex=presentKeys.indexOf(key);let exitingComponent=component;exitingComponent||(exitingComponent=jsx(PresenceChild,{isPresent:!1,onExitComplete:()=>{exitingChildren.delete(key);const leftOverKeys=Array.from(allChildren.keys()).filter(childKey=>!targetKeys.includes(childKey));if(leftOverKeys.forEach(leftOverKey=>allChildren.delete(leftOverKey)),presentChildren.current=filteredChildren.filter(presentChild=>{const presentChildKey=getChildKey(presentChild);return presentChildKey===key||leftOverKeys.includes(presentChildKey)}),!exitingChildren.size){if(isMounted.current===!1)return;forceRender(),onExitComplete&&onExitComplete()}},custom:custom5,presenceAffectsLayout,mode,children:child},getChildKey(child)),exitingChildren.set(key,exitingComponent)),childrenToRender.splice(insertionIndex,0,exitingComponent)}),childrenToRender=childrenToRender.map(child=>{const key=child.key;return exitingChildren.has(key)?child:jsx(PresenceChild,{isPresent:!0,presenceAffectsLayout,mode,children:child},getChildKey(child))}),jsx(Fragment,{children:exitingChildren.size?childrenToRender:childrenToRender.map(child=>cloneElement(child))})};function LazyMotion({children:children2,features,strict=!1}){const[,setIsLoaded]=useState$1(!isLazyBundle(features)),loadedRenderer=useRef$1(void 0);if(!isLazyBundle(features)){const{renderer,...loadedFeatures}=features;loadedRenderer.current=renderer,loadFeatures(loadedFeatures)}return useEffect$1(()=>{isLazyBundle(features)&&features().then(({renderer,...loadedFeatures})=>{loadFeatures(loadedFeatures),loadedRenderer.current=renderer,setIsLoaded(!0)})},[]),jsx(LazyContext.Provider,{value:{renderer:loadedRenderer.current,strict},children:children2})}function isLazyBundle(features){return typeof features=="function"}const domAnimation={renderer:createDomVisualElement,...animations,...gestureAnimations};var rootClassName="likec4-diagram-root",cssReactFlow="_17jps3v0",cssDisablePan="_17jps3v1",cssTransparentBg="_17jps3v2",cssNoControls="_17jps3v3";function EnsureMantine({children:children2}){if(!useContext$1(MantineContext))throw new Error("LikeC4Diagram must be a child of MantineProvider");return jsx(Fragment,{children:children2})}var s={done:!1,hasNext:!1};function u$7(t2,n2,a2){let o2=r2=>t2(r2,...n2);return a2===void 0?o2:Object.assign(o2,{lazy:a2,lazyArgs:n2})}function u$6(r2,n2,a2){let o2=r2.length-n2.length;if(o2===0)return r2(...n2);if(o2===1)return u$7(r2,n2,a2);throw new Error("Wrong number of arguments")}function r$2(...t2){return u$6(Object.values,t2)}function i$4(...e2){return u$6(r$1,e2)}var r$1=(e2,t2)=>e2.length>=t2;function d$1(...e2){return u$6(i$3,e2)}function i$3(e2,o2){let r2=[];for(let[t2,n2]of e2.entries()){if(!o2(n2,t2,e2))break;r2.push(n2)}return r2}function b(t2){return(e2,r2)=>{if(r2===0)return t2(e2);if(!Number.isInteger(r2))throw new TypeError(`precision must be an integer: ${r2}`);if(r2>15||r2<-15)throw new RangeError("precision must be between -15 and 15");if(Number.isNaN(e2)||!Number.isFinite(e2))return t2(e2);let n2=10**r2;return t2(e2*n2)/n2}}function l$2(...e2){return u$6(u$5,e2)}var u$5=(e2,a2,n2)=>e2.reduce(a2,n2);function i$2(...e2){return u$6(u$4,e2)}function u$4(e2,o2){let t2={};for(let[r2,n2]of Object.entries(e2))o2(n2,r2,e2)&&(t2[r2]=n2);return t2}function y$2(...t2){return u$6(f$1,t2)}function f$1(t2,e2){if(!i$4(e2,1))return{...t2};if(!i$4(e2,2)){let{[e2[0]]:r2,...m2}=t2;return m2}let o2={...t2};for(let r2 of e2)delete o2[r2];return o2}function n$4(e2){return!!e2}function t$3(...n2){return u$6(Object.keys,n2)}function a$2(...e2){return u$6(n$3,e2)}var n$3=e2=>e2.at(-1);function n$2(l2){return l2!==null}function l$1(n2){return n2!=null}function e$2(n2){return n2==null}function e$1(r2){return typeof r2=="number"&&!Number.isNaN(r2)}function n$1(e2){return e2===void 0?!0:typeof e2=="string"?e2.length===0:typeof e2!="object"?!1:Array.isArray(e2)?e2.length===0:Object.keys(e2).length===0}function n(r2){return Array.isArray(r2)}function y$1(...e2){return u$6(u$3,e2)}function u$3(e2,n2){if(e2===n2||Object.is(e2,n2))return!0;if(typeof e2!="object"||typeof n2!="object"||e2===null||n2===null||Object.getPrototypeOf(e2)!==Object.getPrototypeOf(n2))return!1;if(Array.isArray(e2))return l(e2,n2);if(e2 instanceof Map)return a$1(e2,n2);if(e2 instanceof Set)return c$1(e2,n2);if(e2 instanceof Date)return e2.getTime()===n2.getTime();if(e2 instanceof RegExp)return e2.toString()===n2.toString();if(Object.keys(e2).length!==Object.keys(n2).length)return!1;for(let[r2,t2]of Object.entries(e2))if(!(r2 in n2)||!u$3(t2,n2[r2]))return!1;return!0}function l(e2,n2){if(e2.length!==n2.length)return!1;for(let[r2,t2]of e2.entries())if(!u$3(t2,n2[r2]))return!1;return!0}function a$1(e2,n2){if(e2.size!==n2.size)return!1;for(let[r2,t2]of e2.entries())if(!n2.has(r2)||!u$3(t2,n2.get(r2)))return!1;return!0}function c$1(e2,n2){if(e2.size!==n2.size)return!1;let r2=[...n2];for(let t2 of e2){let o2=!1;for(let[i2,f2]of r2.entries())if(u$3(t2,f2)){o2=!0,r2.splice(i2,1);break}if(!o2)return!1}return!0}function o$2(...e2){return u$6(c,e2)}function c(e2,y2){for(let[t2,u2]of Object.entries(y2))if(!Object.hasOwn(e2,t2)||!y$1(u2,e2[t2]))return!1;return!0}var e=n2=>Object.assign(n2,{single:!0});function f(...e$12){return u$6(i$1,e$12,e(u$2))}var i$1=(e2,n2)=>e2.find(n2),u$2=e2=>(n2,t2,o2)=>e2(n2,t2,o2)?{done:!0,hasNext:!0,next:n2}:s;function o$1(...e2){return u$6(t$2,e2)}var t$2=(e2,r2)=>{for(let n2=e2.length-1;n2>=0;n2--){let a2=e2[n2];if(r2(a2,n2,e2))return a2}};function d(...e$12){return u$6(r,e$12,e(o))}var r=([e2])=>e2,o=()=>a,a=e2=>({hasNext:!0,next:e2,done:!0});function t$1(...r2){return u$6(Object.entries,r2)}function u$1(...e2){return u$6(b(Math.ceil),e2)}function u(...n2){return u$6(i,n2)}var i=(n2,{min:e2,max:r2})=>e2!==void 0&&n2<e2?e2:r2!==void 0&&n2>r2?r2:n2;function useSyncedRef(value){const ref=useRef$1(value);return ref.current=value,useMemo$1(()=>Object.freeze({get current(){return ref.current}}),[])}function useUnmountEffect(effect){const effectRef=useSyncedRef(effect);useEffect$1(()=>()=>{effectRef.current()},[])}function useDebouncedCallback(callback,deps,delay,maxWait=0){const timeout2=useRef$1(),waitTimeout=useRef$1(),cb=useRef$1(callback),lastCall=useRef$1(),clear=()=>{timeout2.current&&(clearTimeout(timeout2.current),timeout2.current=void 0),waitTimeout.current&&(clearTimeout(waitTimeout.current),waitTimeout.current=void 0)};return useUnmountEffect(clear),useEffect$1(()=>{cb.current=callback},deps),useMemo$1(()=>{const execute=()=>{if(clear(),!lastCall.current)return;const context=lastCall.current;lastCall.current=void 0,cb.current.apply(context.this,context.args)},wrapped=function(...args){timeout2.current&&clearTimeout(timeout2.current),lastCall.current={args,this:this},timeout2.current=setTimeout(execute,delay),maxWait>0&&!waitTimeout.current&&(waitTimeout.current=setTimeout(execute,maxWait))};return Object.defineProperties(wrapped,{length:{value:callback.length},name:{value:`${callback.name||"anonymous"}__debounced__${delay}`}}),wrapped},[delay,maxWait,...deps])}const noop$1=()=>{},isBrowser=typeof window<"u"&&typeof navigator<"u"&&typeof document<"u",basicDepsComparator=(d1,d2)=>{if(d1===d2)return!0;if(d1.length!==d2.length)return!1;for(const[i2,element]of d1.entries())if(element!==d2[i2])return!1;return!0};function useCustomCompareEffect(callback,deps,comparator=basicDepsComparator,effectHook=useEffect$1,...effectHookRestArgs){const dependencies=useRef$1();(dependencies.current===void 0||isBrowser&&!comparator(dependencies.current,deps))&&(dependencies.current=deps),effectHook(callback,dependencies.current,...effectHookRestArgs)}function useDebouncedEffect(callback,deps,delay,maxWait=0){useEffect$1(useDebouncedCallback(callback,deps,delay,maxWait),deps)}function useFirstMountState(){const isFirstMount=useRef$1(!0);return useEffect$1(()=>{isFirstMount.current=!1},[]),isFirstMount.current}const useIsomorphicLayoutEffect$1=isBrowser?useLayoutEffect$3:useEffect$1;function useUpdateEffect$1(effect,deps){const isFirstMount=useFirstMountState();useEffect$1(isFirstMount?noop$1:effect,deps)}function useAsync(asyncFn,initialValue){const[state,setState]=useState$1({status:"not-executed",error:void 0,result:initialValue}),promiseRef=useRef$1(),argsRef=useRef$1(),methods=useSyncedRef({execute(...params){argsRef.current=params;const promise=asyncFn(...params);return promiseRef.current=promise,setState(s2=>({...s2,status:"loading"})),promise.then(result=>{promise===promiseRef.current&&setState(s2=>({...s2,status:"success",error:void 0,result}))},error=>{promise===promiseRef.current&&setState(s2=>({...s2,status:"error",error}))}),promise},reset(){setState({status:"not-executed",error:void 0,result:initialValue}),promiseRef.current=void 0,argsRef.current=void 0}});return[state,useMemo$1(()=>({reset(){methods.current.reset()},execute:(...params)=>methods.current.execute(...params)}),[]),{promise:promiseRef.current,lastArgs:argsRef.current}]}const noop=()=>{};function useUpdateEffect(callback,deps,equalityFn,effectHook){const isFirstMount=useFirstMountState();useCustomCompareEffect(isFirstMount?noop:callback,deps,equalityFn??shallowEqual,effectHook)}const useXYFlow=useReactFlow,useXYNodesData=useNodesData;function useXYStore(selector2,equalityFn){return useStore(selector2,shallowEqual)}const useXYStoreApi=useStoreApi,blue$1={fill:"#3b82f6",stroke:"#2563eb",hiContrast:"#eff6ff",loContrast:"#bfdbfe"},sky$1={fill:"#0284c7",stroke:"#0369a1",hiContrast:"#f0f9ff",loContrast:"#B6ECF7"},slate$1={fill:"#64748b",stroke:"#475569",hiContrast:"#f8fafc",loContrast:"#cbd5e1"},ElementColors={primary:blue$1,blue:blue$1,secondary:sky$1,sky:sky$1,muted:slate$1,slate:slate$1,gray:{fill:"#737373",stroke:"#525252",hiContrast:"#fafafa",loContrast:"#d4d4d4"},red:{fill:"#AC4D39",stroke:"#853A2D",hiContrast:"#FBD3CB",loContrast:"#FF977D"},green:{fill:"#428a4f",stroke:"#2d5d39",hiContrast:"#f8fafc",loContrast:"#c2f0c2"},amber:{fill:"#A35829",stroke:"#7E451D",hiContrast:"#FFE0C2",loContrast:"#f9b27c"},indigo:{fill:"#6366f1",stroke:"#4f46e5",hiContrast:"#eef2ff",loContrast:"#c7d2fe"}},gray={lineColor:"#6E6E6E",labelBgColor:"#18191b",labelColor:"#C6C6C6"},slate={lineColor:"#64748b",labelBgColor:"#0f172a",labelColor:"#cbd5e1"},blue={lineColor:"#3b82f6",labelBgColor:"#172554",labelColor:"#60a5fa"},sky={lineColor:"#0ea5e9",labelBgColor:"#082f49",labelColor:"#38bdf8"},RelationshipColors={amber:{lineColor:"#b45309",labelBgColor:"#78350f",labelColor:"#FFE0C2"},blue,gray,green:{lineColor:"#15803d",labelBgColor:"#052e16",labelColor:"#22c55e"},indigo:{lineColor:"#6366f1",labelBgColor:"#1e1b4b",labelColor:"#818cf8"},muted:slate,primary:blue,red:{lineColor:"#AC4D39",labelBgColor:"#b91c1c",labelColor:"#FF977D"},secondary:sky,sky,slate},defaultTheme={elements:ElementColors,relationships:RelationshipColors,font:"Arial",shadow:"#0a0a0a"};function fixProto(target,prototype){var setPrototypeOf=Object.setPrototypeOf;setPrototypeOf?setPrototypeOf(target,prototype):target.__proto__=prototype}function fixStack(target,fn){fn===void 0&&(fn=target.constructor);var captureStackTrace=Error.captureStackTrace;captureStackTrace&&captureStackTrace(target,fn)}var __extends=function(){var _extendStatics=function(d2,b2){return _extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d3,b3){d3.__proto__=b3}||function(d3,b3){for(var p2 in b3)Object.prototype.hasOwnProperty.call(b3,p2)&&(d3[p2]=b3[p2])},_extendStatics(d2,b2)};return function(d2,b2){if(typeof b2!="function"&&b2!==null)throw new TypeError("Class extends value "+String(b2)+" is not a constructor or null");_extendStatics(d2,b2);function __(){this.constructor=d2}d2.prototype=b2===null?Object.create(b2):(__.prototype=b2.prototype,new __)}}(),CustomError=function(_super){__extends(CustomError2,_super);function CustomError2(message,options){var _newTarget=this.constructor,_this=_super.call(this,message,options)||this;return Object.defineProperty(_this,"name",{value:_newTarget.name,enumerable:!1,configurable:!0}),fixProto(_this,_newTarget.prototype),fixStack(_this),_this}return CustomError2}(Error);function isString(value){return value!=null&&typeof value=="string"}class BaseError extends CustomError{constructor(message,options){super(message,options),Object.defineProperty(this,"name",{value:"BaseError"})}}class NullableError extends BaseError{constructor(message,options){super(message,options),Object.defineProperty(this,"name",{value:"NullableError"})}}class InvariantError extends BaseError{constructor(message,options){super(message,options),Object.defineProperty(this,"name",{value:"InvariantError"})}}function nonNullable(value,message){if(typeof value>"u"||value==null)throw new NullableError(message??`Expected defined value, but received ${value}`);return value}function invariant(condition,message){if(!condition)throw new InvariantError(message??"Invariant failed")}class NonExhaustiveError extends BaseError{constructor(message,options){super(message,options),Object.defineProperty(this,"name",{value:"NonExhaustiveError"})}}function nonexhaustive(value){throw new NonExhaustiveError(`NonExhaustive value: ${value}`)}const ElementShapes=["rectangle","person","browser","mobile","cylinder","storage","queue"];function StepEdgeId(step){return`step-${String(step).padStart(3,"0")}`}function isStepEdgeId(id2){return id2.startsWith("step-")}function extractStep(id2){if(!isStepEdgeId(id2))throw new Error(`Invalid step edge id: ${id2}`);return Number(id2.slice(5))}function isAncestor(...args){const ancestor=isString(args[0])?args[0]:args[0].id;return(isString(args[1])?args[1]:args[1].id).startsWith(ancestor+".")}var define_import_meta_env_default={VITE_HTML_DEV_INJECT:"",BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1};const trackedConnections=new Map,getTrackedConnectionState=name=>{const api=trackedConnections.get(name);return api?Object.fromEntries(Object.entries(api.stores).map(([key,api2])=>[key,api2.getState()])):{}},extractConnectionInformation=(store,extensionConnector,options)=>{if(store===void 0)return{type:"untracked",connection:extensionConnector.connect(options)};const existingConnection=trackedConnections.get(options.name);if(existingConnection)return{type:"tracked",store,...existingConnection};const newConnection={connection:extensionConnector.connect(options),stores:{}};return trackedConnections.set(options.name,newConnection),{type:"tracked",store,...newConnection}},devtoolsImpl=(fn,devtoolsOptions={})=>(set2,get2,api)=>{const{enabled,anonymousActionType,store,...options}=devtoolsOptions;let extensionConnector;try{extensionConnector=(enabled??(define_import_meta_env_default?"production":void 0)!=="production")&&window.__REDUX_DEVTOOLS_EXTENSION__}catch{}if(!extensionConnector)return(define_import_meta_env_default?"production":void 0)!=="production"&&enabled&&console.warn("[zustand devtools middleware] Please install/enable Redux devtools extension"),fn(set2,get2,api);const{connection,...connectionInformation}=extractConnectionInformation(store,extensionConnector,options);let isRecording=!0;api.setState=(state,replace,nameOrAction)=>{const r2=set2(state,replace);if(!isRecording)return r2;const action=nameOrAction===void 0?{type:anonymousActionType||"anonymous"}:typeof nameOrAction=="string"?{type:nameOrAction}:nameOrAction;return store===void 0?(connection?.send(action,get2()),r2):(connection?.send({...action,type:`${store}/${action.type}`},{...getTrackedConnectionState(options.name),[store]:api.getState()}),r2)};const setStateFromDevtools=(...a2)=>{const originalIsRecording=isRecording;isRecording=!1,set2(...a2),isRecording=originalIsRecording},initialState2=fn(api.setState,get2,api);if(connectionInformation.type==="untracked"?connection?.init(initialState2):(connectionInformation.stores[connectionInformation.store]=api,connection?.init(Object.fromEntries(Object.entries(connectionInformation.stores).map(([key,store2])=>[key,key===connectionInformation.store?initialState2:store2.getState()])))),api.dispatchFromDevtools&&typeof api.dispatch=="function"){let didWarnAboutReservedActionType=!1;const originalDispatch=api.dispatch;api.dispatch=(...a2)=>{(define_import_meta_env_default?"production":void 0)!=="production"&&a2[0].type==="__setState"&&!didWarnAboutReservedActionType&&(console.warn('[zustand devtools middleware] "__setState" action type is reserved to set state from the devtools. Avoid using it.'),didWarnAboutReservedActionType=!0),originalDispatch(...a2)}}return connection.subscribe(message=>{var _a;switch(message.type){case"ACTION":if(typeof message.payload!="string"){console.error("[zustand devtools middleware] Unsupported action format");return}return parseJsonThen(message.payload,action=>{if(action.type==="__setState"){if(store===void 0){setStateFromDevtools(action.state);return}Object.keys(action.state).length!==1&&console.error(`
|
|
54
|
+
[zustand devtools middleware] Unsupported __setState action format.
|
|
55
|
+
When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),
|
|
56
|
+
and value of this only key should be a state object. Example: { "type": "__setState", "state": { "abc123Store": { "foo": "bar" } } }
|
|
57
|
+
`);const stateFromDevtools=action.state[store];if(stateFromDevtools==null)return;JSON.stringify(api.getState())!==JSON.stringify(stateFromDevtools)&&setStateFromDevtools(stateFromDevtools);return}api.dispatchFromDevtools&&typeof api.dispatch=="function"&&api.dispatch(action)});case"DISPATCH":switch(message.payload.type){case"RESET":return setStateFromDevtools(initialState2),store===void 0?connection?.init(api.getState()):connection?.init(getTrackedConnectionState(options.name));case"COMMIT":if(store===void 0){connection?.init(api.getState());return}return connection?.init(getTrackedConnectionState(options.name));case"ROLLBACK":return parseJsonThen(message.state,state=>{if(store===void 0){setStateFromDevtools(state),connection?.init(api.getState());return}setStateFromDevtools(state[store]),connection?.init(getTrackedConnectionState(options.name))});case"JUMP_TO_STATE":case"JUMP_TO_ACTION":return parseJsonThen(message.state,state=>{if(store===void 0){setStateFromDevtools(state);return}JSON.stringify(api.getState())!==JSON.stringify(state[store])&&setStateFromDevtools(state[store])});case"IMPORT_STATE":{const{nextLiftedState}=message.payload,lastComputedState=(_a=nextLiftedState.computedStates.slice(-1)[0])==null?void 0:_a.state;if(!lastComputedState)return;setStateFromDevtools(store===void 0?lastComputedState:lastComputedState[store]),connection?.send(null,nextLiftedState);return}case"PAUSE_RECORDING":return isRecording=!isRecording}return}}),initialState2},devtools=devtoolsImpl,parseJsonThen=(stringified,f2)=>{let parsed;try{parsed=JSON.parse(stringified)}catch(e2){console.error("[zustand devtools middleware] Could not parse the received json",e2)}parsed!==void 0&&f2(parsed)},subscribeWithSelectorImpl=fn=>(set2,get2,api)=>{const origSubscribe=api.subscribe;return api.subscribe=(selector2,optListener,options)=>{let listener=selector2;if(optListener){const equalityFn=options?.equalityFn||Object.is;let currentSlice=selector2(api.getState());listener=state=>{const nextSlice=selector2(state);if(!equalityFn(currentSlice,nextSlice)){const previousSlice=currentSlice;optListener(currentSlice=nextSlice,previousSlice)}},options?.fireImmediately&&optListener(currentSlice,currentSlice)}return origSubscribe(listener)},fn(set2,get2,api)},subscribeWithSelector=subscribeWithSelectorImpl,ZIndexes={Compound:2,Edge:4,Element:6},MinZoom=.1,{abs:abs$1,cos:cos$1,sin:sin$1,acos:acos$1,atan2,sqrt:sqrt$1,pow}=Math;function crt(v2){return v2<0?-pow(-v2,1/3):pow(v2,1/3)}const pi$2=Math.PI,tau$1=2*pi$2,quart=pi$2/2,epsilon$2=1e-6,nMax=Number.MAX_SAFE_INTEGER||9007199254740991,nMin=Number.MIN_SAFE_INTEGER||-9007199254740991,ZERO={x:0,y:0,z:0},utils={Tvalues:[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213],Cvalues:[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872],arcfn:function(t2,derivativeFn){const d2=derivativeFn(t2);let l2=d2.x*d2.x+d2.y*d2.y;return typeof d2.z<"u"&&(l2+=d2.z*d2.z),sqrt$1(l2)},compute:function(t2,points,_3d){if(t2===0)return points[0].t=0,points[0];const order=points.length-1;if(t2===1)return points[order].t=1,points[order];const mt=1-t2;let p2=points;if(order===0)return points[0].t=t2,points[0];if(order===1){const ret={x:mt*p2[0].x+t2*p2[1].x,y:mt*p2[0].y+t2*p2[1].y,t:t2};return _3d&&(ret.z=mt*p2[0].z+t2*p2[1].z),ret}if(order<4){let mt2=mt*mt,t22=t2*t2,a2,b2,c2,d2=0;order===2?(p2=[p2[0],p2[1],p2[2],ZERO],a2=mt2,b2=mt*t2*2,c2=t22):order===3&&(a2=mt2*mt,b2=mt2*t2*3,c2=mt*t22*3,d2=t2*t22);const ret={x:a2*p2[0].x+b2*p2[1].x+c2*p2[2].x+d2*p2[3].x,y:a2*p2[0].y+b2*p2[1].y+c2*p2[2].y+d2*p2[3].y,t:t2};return _3d&&(ret.z=a2*p2[0].z+b2*p2[1].z+c2*p2[2].z+d2*p2[3].z),ret}const dCpts=JSON.parse(JSON.stringify(points));for(;dCpts.length>1;){for(let i2=0;i2<dCpts.length-1;i2++)dCpts[i2]={x:dCpts[i2].x+(dCpts[i2+1].x-dCpts[i2].x)*t2,y:dCpts[i2].y+(dCpts[i2+1].y-dCpts[i2].y)*t2},typeof dCpts[i2].z<"u"&&(dCpts[i2].z=dCpts[i2].z+(dCpts[i2+1].z-dCpts[i2].z)*t2);dCpts.splice(dCpts.length-1,1)}return dCpts[0].t=t2,dCpts[0]},computeWithRatios:function(t2,points,ratios,_3d){const mt=1-t2,r2=ratios,p2=points;let f1=r2[0],f2=r2[1],f3=r2[2],f4=r2[3],d2;if(f1*=mt,f2*=t2,p2.length===2)return d2=f1+f2,{x:(f1*p2[0].x+f2*p2[1].x)/d2,y:(f1*p2[0].y+f2*p2[1].y)/d2,z:_3d?(f1*p2[0].z+f2*p2[1].z)/d2:!1,t:t2};if(f1*=mt,f2*=2*mt,f3*=t2*t2,p2.length===3)return d2=f1+f2+f3,{x:(f1*p2[0].x+f2*p2[1].x+f3*p2[2].x)/d2,y:(f1*p2[0].y+f2*p2[1].y+f3*p2[2].y)/d2,z:_3d?(f1*p2[0].z+f2*p2[1].z+f3*p2[2].z)/d2:!1,t:t2};if(f1*=mt,f2*=1.5*mt,f3*=3*mt,f4*=t2*t2*t2,p2.length===4)return d2=f1+f2+f3+f4,{x:(f1*p2[0].x+f2*p2[1].x+f3*p2[2].x+f4*p2[3].x)/d2,y:(f1*p2[0].y+f2*p2[1].y+f3*p2[2].y+f4*p2[3].y)/d2,z:_3d?(f1*p2[0].z+f2*p2[1].z+f3*p2[2].z+f4*p2[3].z)/d2:!1,t:t2}},derive:function(points,_3d){const dpoints=[];for(let p2=points,d2=p2.length,c2=d2-1;d2>1;d2--,c2--){const list=[];for(let j=0,dpt;j<c2;j++)dpt={x:c2*(p2[j+1].x-p2[j].x),y:c2*(p2[j+1].y-p2[j].y)},_3d&&(dpt.z=c2*(p2[j+1].z-p2[j].z)),list.push(dpt);dpoints.push(list),p2=list}return dpoints},between:function(v2,m2,M){return m2<=v2&&v2<=M||utils.approximately(v2,m2)||utils.approximately(v2,M)},approximately:function(a2,b2,precision){return abs$1(a2-b2)<=(precision||epsilon$2)},length:function(derivativeFn){const len=utils.Tvalues.length;let sum=0;for(let i2=0,t2;i2<len;i2++)t2=.5*utils.Tvalues[i2]+.5,sum+=utils.Cvalues[i2]*utils.arcfn(t2,derivativeFn);return .5*sum},map:function(v2,ds,de,ts,te){const d1=de-ds,d2=te-ts,v22=v2-ds,r2=v22/d1;return ts+d2*r2},lerp:function(r2,v1,v2){const ret={x:v1.x+r2*(v2.x-v1.x),y:v1.y+r2*(v2.y-v1.y)};return v1.z!==void 0&&v2.z!==void 0&&(ret.z=v1.z+r2*(v2.z-v1.z)),ret},pointToString:function(p2){let s2=p2.x+"/"+p2.y;return typeof p2.z<"u"&&(s2+="/"+p2.z),s2},pointsToString:function(points){return"["+points.map(utils.pointToString).join(", ")+"]"},copy:function(obj){return JSON.parse(JSON.stringify(obj))},angle:function(o2,v1,v2){const dx1=v1.x-o2.x,dy1=v1.y-o2.y,dx2=v2.x-o2.x,dy2=v2.y-o2.y,cross=dx1*dy2-dy1*dx2,dot=dx1*dx2+dy1*dy2;return atan2(cross,dot)},round:function(v2,d2){const s2=""+v2,pos=s2.indexOf(".");return parseFloat(s2.substring(0,pos+1+d2))},dist:function(p1,p2){const dx=p1.x-p2.x,dy=p1.y-p2.y;return sqrt$1(dx*dx+dy*dy)},closest:function(LUT,point2){let mdist=pow(2,63),mpos,d2;return LUT.forEach(function(p2,idx){d2=utils.dist(point2,p2),d2<mdist&&(mdist=d2,mpos=idx)}),{mdist,mpos}},abcratio:function(t2,n2){if(n2!==2&&n2!==3)return!1;if(typeof t2>"u")t2=.5;else if(t2===0||t2===1)return t2;const bottom=pow(t2,n2)+pow(1-t2,n2),top=bottom-1;return abs$1(top/bottom)},projectionratio:function(t2,n2){if(n2!==2&&n2!==3)return!1;if(typeof t2>"u")t2=.5;else if(t2===0||t2===1)return t2;const top=pow(1-t2,n2),bottom=pow(t2,n2)+top;return top/bottom},lli8:function(x1,y1,x2,y2,x3,y3,x4,y4){const nx=(x1*y2-y1*x2)*(x3-x4)-(x1-x2)*(x3*y4-y3*x4),ny=(x1*y2-y1*x2)*(y3-y4)-(y1-y2)*(x3*y4-y3*x4),d2=(x1-x2)*(y3-y4)-(y1-y2)*(x3-x4);return d2==0?!1:{x:nx/d2,y:ny/d2}},lli4:function(p1,p2,p3,p4){const x1=p1.x,y1=p1.y,x2=p2.x,y2=p2.y,x3=p3.x,y3=p3.y,x4=p4.x,y4=p4.y;return utils.lli8(x1,y1,x2,y2,x3,y3,x4,y4)},lli:function(v1,v2){return utils.lli4(v1,v1.c,v2,v2.c)},makeline:function(p1,p2){return new Bezier(p1.x,p1.y,(p1.x+p2.x)/2,(p1.y+p2.y)/2,p2.x,p2.y)},findbbox:function(sections){let mx=nMax,my=nMax,MX=nMin,MY=nMin;return sections.forEach(function(s2){const bbox=s2.bbox();mx>bbox.x.min&&(mx=bbox.x.min),my>bbox.y.min&&(my=bbox.y.min),MX<bbox.x.max&&(MX=bbox.x.max),MY<bbox.y.max&&(MY=bbox.y.max)}),{x:{min:mx,mid:(mx+MX)/2,max:MX,size:MX-mx},y:{min:my,mid:(my+MY)/2,max:MY,size:MY-my}}},shapeintersections:function(s1,bbox1,s2,bbox2,curveIntersectionThreshold){if(!utils.bboxoverlap(bbox1,bbox2))return[];const intersections=[],a1=[s1.startcap,s1.forward,s1.back,s1.endcap],a2=[s2.startcap,s2.forward,s2.back,s2.endcap];return a1.forEach(function(l1){l1.virtual||a2.forEach(function(l2){if(l2.virtual)return;const iss=l1.intersects(l2,curveIntersectionThreshold);iss.length>0&&(iss.c1=l1,iss.c2=l2,iss.s1=s1,iss.s2=s2,intersections.push(iss))})}),intersections},makeshape:function(forward,back,curveIntersectionThreshold){const bpl=back.points.length,fpl=forward.points.length,start2=utils.makeline(back.points[bpl-1],forward.points[0]),end=utils.makeline(forward.points[fpl-1],back.points[0]),shape={startcap:start2,forward,back,endcap:end,bbox:utils.findbbox([start2,forward,back,end])};return shape.intersections=function(s2){return utils.shapeintersections(shape,shape.bbox,s2,s2.bbox,curveIntersectionThreshold)},shape},getminmax:function(curve2,d2,list){if(!list)return{min:0,max:0};let min2=nMax,max2=nMin,t2,c2;list.indexOf(0)===-1&&(list=[0].concat(list)),list.indexOf(1)===-1&&list.push(1);for(let i2=0,len=list.length;i2<len;i2++)t2=list[i2],c2=curve2.get(t2),c2[d2]<min2&&(min2=c2[d2]),c2[d2]>max2&&(max2=c2[d2]);return{min:min2,mid:(min2+max2)/2,max:max2,size:max2-min2}},align:function(points,line){const tx=line.p1.x,ty=line.p1.y,a2=-atan2(line.p2.y-ty,line.p2.x-tx),d2=function(v2){return{x:(v2.x-tx)*cos$1(a2)-(v2.y-ty)*sin$1(a2),y:(v2.x-tx)*sin$1(a2)+(v2.y-ty)*cos$1(a2)}};return points.map(d2)},roots:function(points,line){line=line||{p1:{x:0,y:0},p2:{x:1,y:0}};const order=points.length-1,aligned=utils.align(points,line),reduce=function(t2){return 0<=t2&&t2<=1};if(order===2){const a3=aligned[0].y,b3=aligned[1].y,c3=aligned[2].y,d3=a3-2*b3+c3;if(d3!==0){const m1=-sqrt$1(b3*b3-a3*c3),m2=-a3+b3,v12=-(m1+m2)/d3,v2=-(-m1+m2)/d3;return[v12,v2].filter(reduce)}else if(b3!==c3&&d3===0)return[(2*b3-c3)/(2*b3-2*c3)].filter(reduce);return[]}const pa=aligned[0].y,pb=aligned[1].y,pc=aligned[2].y,pd=aligned[3].y;let d2=-pa+3*pb-3*pc+pd,a2=3*pa-6*pb+3*pc,b2=-3*pa+3*pb,c2=pa;if(utils.approximately(d2,0)){if(utils.approximately(a2,0))return utils.approximately(b2,0)?[]:[-c2/b2].filter(reduce);const q3=sqrt$1(b2*b2-4*a2*c2),a22=2*a2;return[(q3-b2)/a22,(-b2-q3)/a22].filter(reduce)}a2/=d2,b2/=d2,c2/=d2;const p2=(3*b2-a2*a2)/3,p3=p2/3,q2=(2*a2*a2*a2-9*a2*b2+27*c2)/27,q22=q2/2,discriminant=q22*q22+p3*p3*p3;let u1,v1,x1,x2,x3;if(discriminant<0){const mp3=-p2/3,mp33=mp3*mp3*mp3,r2=sqrt$1(mp33),t2=-q2/(2*r2),cosphi=t2<-1?-1:t2>1?1:t2,phi=acos$1(cosphi),crtr=crt(r2),t1=2*crtr;return x1=t1*cos$1(phi/3)-a2/3,x2=t1*cos$1((phi+tau$1)/3)-a2/3,x3=t1*cos$1((phi+2*tau$1)/3)-a2/3,[x1,x2,x3].filter(reduce)}else{if(discriminant===0)return u1=q22<0?crt(-q22):-crt(q22),x1=2*u1-a2/3,x2=-u1-a2/3,[x1,x2].filter(reduce);{const sd=sqrt$1(discriminant);return u1=crt(-q22+sd),v1=crt(q22+sd),[u1-v1-a2/3].filter(reduce)}}},droots:function(p2){if(p2.length===3){const a2=p2[0],b2=p2[1],c2=p2[2],d2=a2-2*b2+c2;if(d2!==0){const m1=-sqrt$1(b2*b2-a2*c2),m2=-a2+b2,v1=-(m1+m2)/d2,v2=-(-m1+m2)/d2;return[v1,v2]}else if(b2!==c2&&d2===0)return[(2*b2-c2)/(2*(b2-c2))];return[]}if(p2.length===2){const a2=p2[0],b2=p2[1];return a2!==b2?[a2/(a2-b2)]:[]}return[]},curvature:function(t2,d1,d2,_3d,kOnly){let num,dnm,adk,dk,k2=0,r2=0;const d3=utils.compute(t2,d1),dd=utils.compute(t2,d2),qdsum=d3.x*d3.x+d3.y*d3.y;if(_3d?(num=sqrt$1(pow(d3.y*dd.z-dd.y*d3.z,2)+pow(d3.z*dd.x-dd.z*d3.x,2)+pow(d3.x*dd.y-dd.x*d3.y,2)),dnm=pow(qdsum+d3.z*d3.z,3/2)):(num=d3.x*dd.y-d3.y*dd.x,dnm=pow(qdsum,3/2)),num===0||dnm===0)return{k:0,r:0};if(k2=num/dnm,r2=dnm/num,!kOnly){const pk=utils.curvature(t2-.001,d1,d2,_3d,!0).k,nk=utils.curvature(t2+.001,d1,d2,_3d,!0).k;dk=(nk-k2+(k2-pk))/2,adk=(abs$1(nk-k2)+abs$1(k2-pk))/2}return{k:k2,r:r2,dk,adk}},inflections:function(points){if(points.length<4)return[];const p2=utils.align(points,{p1:points[0],p2:points.slice(-1)[0]}),a2=p2[2].x*p2[1].y,b2=p2[3].x*p2[1].y,c2=p2[1].x*p2[2].y,d2=p2[3].x*p2[2].y,v1=18*(-3*a2+2*b2+3*c2-d2),v2=18*(3*a2-b2-3*c2),v3=18*(c2-a2);if(utils.approximately(v1,0)){if(!utils.approximately(v2,0)){let t2=-v3/v2;if(0<=t2&&t2<=1)return[t2]}return[]}const d22=2*v1;if(utils.approximately(d22,0))return[];const trm=v2*v2-4*v1*v3;if(trm<0)return[];const sq=Math.sqrt(trm);return[(sq-v2)/d22,-(v2+sq)/d22].filter(function(r2){return 0<=r2&&r2<=1})},bboxoverlap:function(b1,b2){const dims=["x","y"],len=dims.length;for(let i2=0,dim,l2,t2,d2;i2<len;i2++)if(dim=dims[i2],l2=b1[dim].mid,t2=b2[dim].mid,d2=(b1[dim].size+b2[dim].size)/2,abs$1(l2-t2)>=d2)return!1;return!0},expandbox:function(bbox,_bbox){_bbox.x.min<bbox.x.min&&(bbox.x.min=_bbox.x.min),_bbox.y.min<bbox.y.min&&(bbox.y.min=_bbox.y.min),_bbox.z&&_bbox.z.min<bbox.z.min&&(bbox.z.min=_bbox.z.min),_bbox.x.max>bbox.x.max&&(bbox.x.max=_bbox.x.max),_bbox.y.max>bbox.y.max&&(bbox.y.max=_bbox.y.max),_bbox.z&&_bbox.z.max>bbox.z.max&&(bbox.z.max=_bbox.z.max),bbox.x.mid=(bbox.x.min+bbox.x.max)/2,bbox.y.mid=(bbox.y.min+bbox.y.max)/2,bbox.z&&(bbox.z.mid=(bbox.z.min+bbox.z.max)/2),bbox.x.size=bbox.x.max-bbox.x.min,bbox.y.size=bbox.y.max-bbox.y.min,bbox.z&&(bbox.z.size=bbox.z.max-bbox.z.min)},pairiteration:function(c1,c2,curveIntersectionThreshold){const c1b=c1.bbox(),c2b=c2.bbox(),r2=1e5,threshold=curveIntersectionThreshold||.5;if(c1b.x.size+c1b.y.size<threshold&&c2b.x.size+c2b.y.size<threshold)return[(r2*(c1._t1+c1._t2)/2|0)/r2+"/"+(r2*(c2._t1+c2._t2)/2|0)/r2];let cc1=c1.split(.5),cc2=c2.split(.5),pairs=[{left:cc1.left,right:cc2.left},{left:cc1.left,right:cc2.right},{left:cc1.right,right:cc2.right},{left:cc1.right,right:cc2.left}];pairs=pairs.filter(function(pair){return utils.bboxoverlap(pair.left.bbox(),pair.right.bbox())});let results=[];return pairs.length===0||(pairs.forEach(function(pair){results=results.concat(utils.pairiteration(pair.left,pair.right,threshold))}),results=results.filter(function(v2,i2){return results.indexOf(v2)===i2})),results},getccenter:function(p1,p2,p3){const dx1=p2.x-p1.x,dy1=p2.y-p1.y,dx2=p3.x-p2.x,dy2=p3.y-p2.y,dx1p=dx1*cos$1(quart)-dy1*sin$1(quart),dy1p=dx1*sin$1(quart)+dy1*cos$1(quart),dx2p=dx2*cos$1(quart)-dy2*sin$1(quart),dy2p=dx2*sin$1(quart)+dy2*cos$1(quart),mx1=(p1.x+p2.x)/2,my1=(p1.y+p2.y)/2,mx2=(p2.x+p3.x)/2,my2=(p2.y+p3.y)/2,mx1n=mx1+dx1p,my1n=my1+dy1p,mx2n=mx2+dx2p,my2n=my2+dy2p,arc=utils.lli8(mx1,my1,mx1n,my1n,mx2,my2,mx2n,my2n),r2=utils.dist(arc,p1);let s2=atan2(p1.y-arc.y,p1.x-arc.x),m2=atan2(p2.y-arc.y,p2.x-arc.x),e2=atan2(p3.y-arc.y,p3.x-arc.x),_;return s2<e2?((s2>m2||m2>e2)&&(s2+=tau$1),s2>e2&&(_=e2,e2=s2,s2=_)):e2<m2&&m2<s2?(_=e2,e2=s2,s2=_):e2+=tau$1,arc.s=s2,arc.e=e2,arc.r=r2,arc},numberSort:function(a2,b2){return a2-b2}};class PolyBezier{constructor(curves){this.curves=[],this._3d=!1,curves&&(this.curves=curves,this._3d=this.curves[0]._3d)}valueOf(){return this.toString()}toString(){return"["+this.curves.map(function(curve2){return utils.pointsToString(curve2.points)}).join(", ")+"]"}addCurve(curve2){this.curves.push(curve2),this._3d=this._3d||curve2._3d}length(){return this.curves.map(function(v2){return v2.length()}).reduce(function(a2,b2){return a2+b2})}curve(idx){return this.curves[idx]}bbox(){const c2=this.curves;for(var bbox=c2[0].bbox(),i2=1;i2<c2.length;i2++)utils.expandbox(bbox,c2[i2].bbox());return bbox}offset(d2){const offset2=[];return this.curves.forEach(function(v2){offset2.push(...v2.offset(d2))}),new PolyBezier(offset2)}}const{abs,min,max,cos,sin,acos,sqrt}=Math,pi$1=Math.PI;class Bezier{constructor(coords){let args=coords&&coords.forEach?coords:Array.from(arguments).slice(),coordlen=!1;if(typeof args[0]=="object"){coordlen=args.length;const newargs=[];args.forEach(function(point3){["x","y","z"].forEach(function(d2){typeof point3[d2]<"u"&&newargs.push(point3[d2])})}),args=newargs}let higher=!1;const len=args.length;if(coordlen){if(coordlen>4){if(arguments.length!==1)throw new Error("Only new Bezier(point[]) is accepted for 4th and higher order curves");higher=!0}}else if(len!==6&&len!==8&&len!==9&&len!==12&&arguments.length!==1)throw new Error("Only new Bezier(point[]) is accepted for 4th and higher order curves");const _3d=this._3d=!higher&&(len===9||len===12)||coords&&coords[0]&&typeof coords[0].z<"u",points=this.points=[];for(let idx=0,step=_3d?3:2;idx<len;idx+=step){var point2={x:args[idx],y:args[idx+1]};_3d&&(point2.z=args[idx+2]),points.push(point2)}const order=this.order=points.length-1,dims=this.dims=["x","y"];_3d&&dims.push("z"),this.dimlen=dims.length;const aligned=utils.align(points,{p1:points[0],p2:points[order]}),baselength=utils.dist(points[0],points[order]);this._linear=aligned.reduce((t2,p2)=>t2+abs(p2.y),0)<baselength/50,this._lut=[],this._t1=0,this._t2=1,this.update()}static quadraticFromPoints(p1,p2,p3,t2){if(typeof t2>"u"&&(t2=.5),t2===0)return new Bezier(p2,p2,p3);if(t2===1)return new Bezier(p1,p2,p2);const abc=Bezier.getABC(2,p1,p2,p3,t2);return new Bezier(p1,abc.A,p3)}static cubicFromPoints(S,B,E,t2,d1){typeof t2>"u"&&(t2=.5);const abc=Bezier.getABC(3,S,B,E,t2);typeof d1>"u"&&(d1=utils.dist(B,abc.C));const d2=d1*(1-t2)/t2,selen=utils.dist(S,E),lx=(E.x-S.x)/selen,ly=(E.y-S.y)/selen,bx1=d1*lx,by1=d1*ly,bx2=d2*lx,by2=d2*ly,e1={x:B.x-bx1,y:B.y-by1},e2={x:B.x+bx2,y:B.y+by2},A=abc.A,v1={x:A.x+(e1.x-A.x)/(1-t2),y:A.y+(e1.y-A.y)/(1-t2)},v2={x:A.x+(e2.x-A.x)/t2,y:A.y+(e2.y-A.y)/t2},nc1={x:S.x+(v1.x-S.x)/t2,y:S.y+(v1.y-S.y)/t2},nc2={x:E.x+(v2.x-E.x)/(1-t2),y:E.y+(v2.y-E.y)/(1-t2)};return new Bezier(S,nc1,nc2,E)}static getUtils(){return utils}getUtils(){return Bezier.getUtils()}static get PolyBezier(){return PolyBezier}valueOf(){return this.toString()}toString(){return utils.pointsToString(this.points)}toSVG(){if(this._3d)return!1;const p2=this.points,x2=p2[0].x,y2=p2[0].y,s2=["M",x2,y2,this.order===2?"Q":"C"];for(let i2=1,last2=p2.length;i2<last2;i2++)s2.push(p2[i2].x),s2.push(p2[i2].y);return s2.join(" ")}setRatios(ratios){if(ratios.length!==this.points.length)throw new Error("incorrect number of ratio values");this.ratios=ratios,this._lut=[]}verify(){const print=this.coordDigest();print!==this._print&&(this._print=print,this.update())}coordDigest(){return this.points.map(function(c2,pos){return""+pos+c2.x+c2.y+(c2.z?c2.z:0)}).join("")}update(){this._lut=[],this.dpoints=utils.derive(this.points,this._3d),this.computedirection()}computedirection(){const points=this.points,angle=utils.angle(points[0],points[this.order],points[1]);this.clockwise=angle>0}length(){return utils.length(this.derivative.bind(this))}static getABC(order=2,S,B,E,t2=.5){const u2=utils.projectionratio(t2,order),um=1-u2,C={x:u2*S.x+um*E.x,y:u2*S.y+um*E.y},s2=utils.abcratio(t2,order);return{A:{x:B.x+(B.x-C.x)/s2,y:B.y+(B.y-C.y)/s2},B,C,S,E}}getABC(t2,B){B=B||this.get(t2);let S=this.points[0],E=this.points[this.order];return Bezier.getABC(this.order,S,B,E,t2)}getLUT(steps2){if(this.verify(),steps2=steps2||100,this._lut.length===steps2+1)return this._lut;this._lut=[],steps2++,this._lut=[];for(let i2=0,p2,t2;i2<steps2;i2++)t2=i2/(steps2-1),p2=this.compute(t2),p2.t=t2,this._lut.push(p2);return this._lut}on(point2,error){error=error||5;const lut=this.getLUT(),hits=[];for(let i2=0,c2,t2=0;i2<lut.length;i2++)c2=lut[i2],utils.dist(c2,point2)<error&&(hits.push(c2),t2+=i2/lut.length);return hits.length?t/=hits.length:!1}project(point2){const LUT=this.getLUT(),l2=LUT.length-1,closest=utils.closest(LUT,point2),mpos=closest.mpos,t1=(mpos-1)/l2,t2=(mpos+1)/l2,step=.1/l2;let mdist=closest.mdist,t3=t1,ft=t3,p2;mdist+=1;for(let d2;t3<t2+step;t3+=step)p2=this.compute(t3),d2=utils.dist(point2,p2),d2<mdist&&(mdist=d2,ft=t3);return ft=ft<0?0:ft>1?1:ft,p2=this.compute(ft),p2.t=ft,p2.d=mdist,p2}get(t2){return this.compute(t2)}point(idx){return this.points[idx]}compute(t2){return this.ratios?utils.computeWithRatios(t2,this.points,this.ratios,this._3d):utils.compute(t2,this.points,this._3d,this.ratios)}raise(){const p2=this.points,np=[p2[0]],k2=p2.length;for(let i2=1,pi2,pim;i2<k2;i2++)pi2=p2[i2],pim=p2[i2-1],np[i2]={x:(k2-i2)/k2*pi2.x+i2/k2*pim.x,y:(k2-i2)/k2*pi2.y+i2/k2*pim.y};return np[k2]=p2[k2-1],new Bezier(np)}derivative(t2){return utils.compute(t2,this.dpoints[0],this._3d)}dderivative(t2){return utils.compute(t2,this.dpoints[1],this._3d)}align(){let p2=this.points;return new Bezier(utils.align(p2,{p1:p2[0],p2:p2[p2.length-1]}))}curvature(t2){return utils.curvature(t2,this.dpoints[0],this.dpoints[1],this._3d)}inflections(){return utils.inflections(this.points)}normal(t2){return this._3d?this.__normal3(t2):this.__normal2(t2)}__normal2(t2){const d2=this.derivative(t2),q2=sqrt(d2.x*d2.x+d2.y*d2.y);return{t:t2,x:-d2.y/q2,y:d2.x/q2}}__normal3(t2){const r1=this.derivative(t2),r2=this.derivative(t2+.01),q1=sqrt(r1.x*r1.x+r1.y*r1.y+r1.z*r1.z),q2=sqrt(r2.x*r2.x+r2.y*r2.y+r2.z*r2.z);r1.x/=q1,r1.y/=q1,r1.z/=q1,r2.x/=q2,r2.y/=q2,r2.z/=q2;const c2={x:r2.y*r1.z-r2.z*r1.y,y:r2.z*r1.x-r2.x*r1.z,z:r2.x*r1.y-r2.y*r1.x},m2=sqrt(c2.x*c2.x+c2.y*c2.y+c2.z*c2.z);c2.x/=m2,c2.y/=m2,c2.z/=m2;const R=[c2.x*c2.x,c2.x*c2.y-c2.z,c2.x*c2.z+c2.y,c2.x*c2.y+c2.z,c2.y*c2.y,c2.y*c2.z-c2.x,c2.x*c2.z-c2.y,c2.y*c2.z+c2.x,c2.z*c2.z];return{t:t2,x:R[0]*r1.x+R[1]*r1.y+R[2]*r1.z,y:R[3]*r1.x+R[4]*r1.y+R[5]*r1.z,z:R[6]*r1.x+R[7]*r1.y+R[8]*r1.z}}hull(t2){let p2=this.points,_p=[],q2=[],idx=0;for(q2[idx++]=p2[0],q2[idx++]=p2[1],q2[idx++]=p2[2],this.order===3&&(q2[idx++]=p2[3]);p2.length>1;){_p=[];for(let i2=0,pt,l2=p2.length-1;i2<l2;i2++)pt=utils.lerp(t2,p2[i2],p2[i2+1]),q2[idx++]=pt,_p.push(pt);p2=_p}return q2}split(t1,t2){if(t1===0&&t2)return this.split(t2).left;if(t2===1)return this.split(t1).right;const q2=this.hull(t1),result={left:this.order===2?new Bezier([q2[0],q2[3],q2[5]]):new Bezier([q2[0],q2[4],q2[7],q2[9]]),right:this.order===2?new Bezier([q2[5],q2[4],q2[2]]):new Bezier([q2[9],q2[8],q2[6],q2[3]]),span:q2};return result.left._t1=utils.map(0,0,1,this._t1,this._t2),result.left._t2=utils.map(t1,0,1,this._t1,this._t2),result.right._t1=utils.map(t1,0,1,this._t1,this._t2),result.right._t2=utils.map(1,0,1,this._t1,this._t2),t2?(t2=utils.map(t2,t1,1,0,1),result.right.split(t2).left):result}extrema(){const result={};let roots=[];return this.dims.forEach(function(dim){let mfn=function(v2){return v2[dim]},p2=this.dpoints[0].map(mfn);result[dim]=utils.droots(p2),this.order===3&&(p2=this.dpoints[1].map(mfn),result[dim]=result[dim].concat(utils.droots(p2))),result[dim]=result[dim].filter(function(t2){return t2>=0&&t2<=1}),roots=roots.concat(result[dim].sort(utils.numberSort))}.bind(this)),result.values=roots.sort(utils.numberSort).filter(function(v2,idx){return roots.indexOf(v2)===idx}),result}bbox(){const extrema=this.extrema(),result={};return this.dims.forEach(function(d2){result[d2]=utils.getminmax(this,d2,extrema[d2])}.bind(this)),result}overlaps(curve2){const lbbox=this.bbox(),tbbox=curve2.bbox();return utils.bboxoverlap(lbbox,tbbox)}offset(t2,d2){if(typeof d2<"u"){const c2=this.get(t2),n2=this.normal(t2),ret={c:c2,n:n2,x:c2.x+n2.x*d2,y:c2.y+n2.y*d2};return this._3d&&(ret.z=c2.z+n2.z*d2),ret}if(this._linear){const nv=this.normal(0),coords=this.points.map(function(p2){const ret={x:p2.x+t2*nv.x,y:p2.y+t2*nv.y};return p2.z&&nv.z&&(ret.z=p2.z+t2*nv.z),ret});return[new Bezier(coords)]}return this.reduce().map(function(s2){return s2._linear?s2.offset(t2)[0]:s2.scale(t2)})}simple(){if(this.order===3){const a1=utils.angle(this.points[0],this.points[3],this.points[1]),a2=utils.angle(this.points[0],this.points[3],this.points[2]);if(a1>0&&a2<0||a1<0&&a2>0)return!1}const n1=this.normal(0),n2=this.normal(1);let s2=n1.x*n2.x+n1.y*n2.y;return this._3d&&(s2+=n1.z*n2.z),abs(acos(s2))<pi$1/3}reduce(){let i2,t1=0,t2=0,step=.01,segment,pass1=[],pass2=[],extrema=this.extrema().values;for(extrema.indexOf(0)===-1&&(extrema=[0].concat(extrema)),extrema.indexOf(1)===-1&&extrema.push(1),t1=extrema[0],i2=1;i2<extrema.length;i2++)t2=extrema[i2],segment=this.split(t1,t2),segment._t1=t1,segment._t2=t2,pass1.push(segment),t1=t2;return pass1.forEach(function(p1){for(t1=0,t2=0;t2<=1;)for(t2=t1+step;t2<=1+step;t2+=step)if(segment=p1.split(t1,t2),!segment.simple()){if(t2-=step,abs(t1-t2)<step)return[];segment=p1.split(t1,t2),segment._t1=utils.map(t1,0,1,p1._t1,p1._t2),segment._t2=utils.map(t2,0,1,p1._t1,p1._t2),pass2.push(segment),t1=t2;break}t1<1&&(segment=p1.split(t1,1),segment._t1=utils.map(t1,0,1,p1._t1,p1._t2),segment._t2=p1._t2,pass2.push(segment))}),pass2}translate(v2,d1,d2){d2=typeof d2=="number"?d2:d1;const o2=this.order;let d3=this.points.map((_,i2)=>(1-i2/o2)*d1+i2/o2*d2);return new Bezier(this.points.map((p2,i2)=>({x:p2.x+v2.x*d3[i2],y:p2.y+v2.y*d3[i2]})))}scale(d2){const order=this.order;let distanceFn=!1;if(typeof d2=="function"&&(distanceFn=d2),distanceFn&&order===2)return this.raise().scale(distanceFn);const clockwise=this.clockwise,points=this.points;if(this._linear)return this.translate(this.normal(0),distanceFn?distanceFn(0):d2,distanceFn?distanceFn(1):d2);const r1=distanceFn?distanceFn(0):d2,r2=distanceFn?distanceFn(1):d2,v2=[this.offset(0,10),this.offset(1,10)],np=[],o2=utils.lli4(v2[0],v2[0].c,v2[1],v2[1].c);if(!o2)throw new Error("cannot scale this curve. Try reducing it first.");return[0,1].forEach(function(t2){const p2=np[t2*order]=utils.copy(points[t2*order]);p2.x+=(t2?r2:r1)*v2[t2].n.x,p2.y+=(t2?r2:r1)*v2[t2].n.y}),distanceFn?([0,1].forEach(function(t2){if(!(order===2&&t2)){var p2=points[t2+1],ov={x:p2.x-o2.x,y:p2.y-o2.y},rc=distanceFn?distanceFn((t2+1)/order):d2;distanceFn&&!clockwise&&(rc=-rc);var m2=sqrt(ov.x*ov.x+ov.y*ov.y);ov.x/=m2,ov.y/=m2,np[t2+1]={x:p2.x+rc*ov.x,y:p2.y+rc*ov.y}}}),new Bezier(np)):([0,1].forEach(t2=>{if(order===2&&t2)return;const p2=np[t2*order],d3=this.derivative(t2),p22={x:p2.x+d3.x,y:p2.y+d3.y};np[t2+1]=utils.lli4(p2,p22,o2,points[t2+1])}),new Bezier(np))}outline(d1,d2,d3,d4){if(d2=d2===void 0?d1:d2,this._linear){const n2=this.normal(0),start2=this.points[0],end=this.points[this.points.length-1];let s2,mid,e2;d3===void 0&&(d3=d1,d4=d2),s2={x:start2.x+n2.x*d1,y:start2.y+n2.y*d1},e2={x:end.x+n2.x*d3,y:end.y+n2.y*d3},mid={x:(s2.x+e2.x)/2,y:(s2.y+e2.y)/2};const fline=[s2,mid,e2];s2={x:start2.x-n2.x*d2,y:start2.y-n2.y*d2},e2={x:end.x-n2.x*d4,y:end.y-n2.y*d4},mid={x:(s2.x+e2.x)/2,y:(s2.y+e2.y)/2};const bline=[e2,mid,s2],ls2=utils.makeline(bline[2],fline[0]),le2=utils.makeline(fline[2],bline[0]),segments2=[ls2,new Bezier(fline),le2,new Bezier(bline)];return new PolyBezier(segments2)}const reduced=this.reduce(),len=reduced.length,fcurves=[];let bcurves=[],p2,alen=0,tlen=this.length();const graduated=typeof d3<"u"&&typeof d4<"u";function linearDistanceFunction(s2,e2,tlen2,alen2,slen){return function(v2){const f1=alen2/tlen2,f2=(alen2+slen)/tlen2,d5=e2-s2;return utils.map(v2,0,1,s2+f1*d5,s2+f2*d5)}}reduced.forEach(function(segment){const slen=segment.length();graduated?(fcurves.push(segment.scale(linearDistanceFunction(d1,d3,tlen,alen,slen))),bcurves.push(segment.scale(linearDistanceFunction(-d2,-d4,tlen,alen,slen)))):(fcurves.push(segment.scale(d1)),bcurves.push(segment.scale(-d2))),alen+=slen}),bcurves=bcurves.map(function(s2){return p2=s2.points,p2[3]?s2.points=[p2[3],p2[2],p2[1],p2[0]]:s2.points=[p2[2],p2[1],p2[0]],s2}).reverse();const fs=fcurves[0].points[0],fe=fcurves[len-1].points[fcurves[len-1].points.length-1],bs=bcurves[len-1].points[bcurves[len-1].points.length-1],be=bcurves[0].points[0],ls=utils.makeline(bs,fs),le=utils.makeline(fe,be),segments=[ls].concat(fcurves).concat([le]).concat(bcurves);return new PolyBezier(segments)}outlineshapes(d1,d2,curveIntersectionThreshold){d2=d2||d1;const outline=this.outline(d1,d2).curves,shapes=[];for(let i2=1,len=outline.length;i2<len/2;i2++){const shape=utils.makeshape(outline[i2],outline[len-i2],curveIntersectionThreshold);shape.startcap.virtual=i2>1,shape.endcap.virtual=i2<len/2-1,shapes.push(shape)}return shapes}intersects(curve2,curveIntersectionThreshold){return curve2?curve2.p1&&curve2.p2?this.lineIntersects(curve2):(curve2 instanceof Bezier&&(curve2=curve2.reduce()),this.curveintersects(this.reduce(),curve2,curveIntersectionThreshold)):this.selfintersects(curveIntersectionThreshold)}lineIntersects(line){const mx=min(line.p1.x,line.p2.x),my=min(line.p1.y,line.p2.y),MX=max(line.p1.x,line.p2.x),MY=max(line.p1.y,line.p2.y);return utils.roots(this.points,line).filter(t2=>{var p2=this.get(t2);return utils.between(p2.x,mx,MX)&&utils.between(p2.y,my,MY)})}selfintersects(curveIntersectionThreshold){const reduced=this.reduce(),len=reduced.length-2,results=[];for(let i2=0,result,left,right;i2<len;i2++)left=reduced.slice(i2,i2+1),right=reduced.slice(i2+2),result=this.curveintersects(left,right,curveIntersectionThreshold),results.push(...result);return results}curveintersects(c1,c2,curveIntersectionThreshold){const pairs=[];c1.forEach(function(l2){c2.forEach(function(r2){l2.overlaps(r2)&&pairs.push({left:l2,right:r2})})});let intersections=[];return pairs.forEach(function(pair){const result=utils.pairiteration(pair.left,pair.right,curveIntersectionThreshold);result.length>0&&(intersections=intersections.concat(result))}),intersections}arcs(errorThreshold){return errorThreshold=errorThreshold||.5,this._iterate(errorThreshold,[])}_error(pc,np1,s2,e2){const q2=(e2-s2)/4,c1=this.get(s2+q2),c2=this.get(e2-q2),ref=utils.dist(pc,np1),d1=utils.dist(pc,c1),d2=utils.dist(pc,c2);return abs(d1-ref)+abs(d2-ref)}_iterate(errorThreshold,circles){let t_s=0,t_e=1,safety;do{safety=0,t_e=1;let np1=this.get(t_s),np2,np3,arc,prev_arc,curr_good=!1,prev_good=!1,done,t_m=t_e,prev_e=1;do if(prev_good=curr_good,prev_arc=arc,t_m=(t_s+t_e)/2,np2=this.get(t_m),np3=this.get(t_e),arc=utils.getccenter(np1,np2,np3),arc.interval={start:t_s,end:t_e},curr_good=this._error(arc,np1,t_s,t_e)<=errorThreshold,done=prev_good&&!curr_good,done||(prev_e=t_e),curr_good){if(t_e>=1){if(arc.interval.end=prev_e=1,prev_arc=arc,t_e>1){let d2={x:arc.x+arc.r*cos(arc.e),y:arc.y+arc.r*sin(arc.e)};arc.e+=utils.angle({x:arc.x,y:arc.y},d2,this.get(1))}break}t_e=t_e+(t_e-t_s)/2}else t_e=t_m;while(!done&&safety++<100);if(safety>=100)break;prev_arc=prev_arc||arc,circles.push(prev_arc),t_s=prev_e}while(t_e<1);return circles}}function toDomPrecision(v2){return v2===null?.01:Math.round(v2*100)/100}function bezierControlPoints(diagramEdge){let[start2,...bezierPoints]=diagramEdge.points;invariant(start2,"start should be defined");const handles=[];for(;i$4(bezierPoints,3);){const[cp1,cp2,end,...rest]=bezierPoints,bezier=new Bezier(start2[0],start2[1],cp1[0],cp1[1],cp2[0],cp2[1],end[0],end[1]),inflections=bezier.inflections();inflections.length===0&&inflections.push(.5),inflections.forEach(t2=>{const{x:x2,y:y2}=bezier.get(t2);handles.push({x:Math.round(x2),y:Math.round(y2)})}),bezierPoints=rest,start2=end}return invariant(bezierPoints.length===0,"all points should be consumed"),handles}const isClose=(a2,b2)=>Math.abs(a2-b2)<3.1;function isSamePoint$1(a2,b2){const[ax,ay]=n(a2)?a2:[a2.x,a2.y],[bx,by]=n(b2)?b2:[b2.x,b2.y];return isClose(ax,bx)&&isClose(ay,by)}const StringSet=Set,DEFAULT_PROPS={viewSyncDebounceTimeout:null,initialized:!1,xyflowSynced:!1,previousViews:[],viewportChanged:!1,activeDynamicViewStep:null,focusedNodeId:null,hoveredNodeId:null,hoveredEdgeId:null,lastClickedNodeId:null,lastClickedEdgeId:null,dimmed:new StringSet,lastOnNavigate:null,onChange:null,onNavigateTo:null,onNodeClick:null,onNodeContextMenu:null,onCanvasContextMenu:null,onEdgeClick:null,onEdgeContextMenu:null,onCanvasClick:null,onCanvasDblClick:null},noReplace=!1;let StoreDevId=1;const EmptyStringSet=new StringSet;function createDiagramStore(props2){const storeDevId="DiagramStore"+String(StoreDevId++).padStart(2,"0");return createWithEqualityFn(subscribeWithSelector(devtools((set2,get2)=>({storeDevId,...DEFAULT_PROPS,...props2,isDynamicView:()=>get2().view?.__==="dynamic",updateView:nextView=>{let{viewSyncDebounceTimeout,xyflow,dimmed:dimmed2,xyflowSynced,view:current,lastOnNavigate,previousViews,focusedNodeId,lastClickedNodeId,lastClickedEdgeId,activeDynamicViewStep,hoveredEdgeId,hoveredNodeId}=get2();if(shallowEqual(current,nextView)){DEV&&console.debug("store: skip updateView");return}viewSyncDebounceTimeout!==null&&(clearTimeout(viewSyncDebounceTimeout),viewSyncDebounceTimeout=null);const isSameView=current.id===nextView.id;if(isSameView){const nodeIds=new StringSet(nextView.nodes.map(n2=>n2.id)),edgeIds=new StringSet(nextView.edges.map(e2=>e2.id));if(lastClickedNodeId&&!nodeIds.has(lastClickedNodeId)&&(lastClickedNodeId=null),hoveredNodeId&&!nodeIds.has(hoveredNodeId)&&(hoveredNodeId=null),focusedNodeId&&!nodeIds.has(focusedNodeId)&&(focusedNodeId=null),lastClickedEdgeId&&!edgeIds.has(lastClickedEdgeId)&&(lastClickedEdgeId=null),hoveredEdgeId&&!edgeIds.has(hoveredEdgeId)&&(hoveredEdgeId=null),activeDynamicViewStep&&!edgeIds.has(StepEdgeId(activeDynamicViewStep))&&(activeDynamicViewStep=null),xyflowSynced=deepEqual([current.nodes,current.edges],[nextView.nodes,nextView.edges]),dimmed2.size>0){let nextDimmed=new StringSet([...dimmed2].filter(id2=>nodeIds.has(id2)||edgeIds.has(id2)));nextDimmed.size!==dimmed2.size&&(dimmed2=nextDimmed)}}else{if(lastOnNavigate&&lastOnNavigate.toView!==nextView.id&&lastOnNavigate.fromView!==nextView.id&&(lastOnNavigate=null),!lastOnNavigate){const zoom2=xyflow.getZoom();xyflow.setCenter(nextView.width/2,nextView.height/2,{zoom:zoom2})}lastClickedEdgeId=null,lastClickedNodeId=null,hoveredEdgeId=null,hoveredNodeId=null,focusedNodeId=null,activeDynamicViewStep=null,dimmed2=EmptyStringSet,previousViews=[current,...previousViews.filter(v2=>v2.id!==nextView.id&&v2.id!==current.id)],xyflowSynced=!1}set2({viewSyncDebounceTimeout,view:nextView,activeDynamicViewStep,xyflowSynced,lastOnNavigate,previousViews,lastClickedNodeId,lastClickedEdgeId,focusedNodeId,hoveredEdgeId,hoveredNodeId,dimmed:dimmed2},noReplace,isSameView?"update-view [same]":"update-view [another]")},focusOnNode:nodeId=>{const{focusedNodeId,view}=get2();if(nodeId!==focusedNodeId){const notDimmed=new StringSet([nodeId]),dimmed2=new StringSet;for(const edge of view.edges)edge.source===nodeId||edge.target===nodeId?(notDimmed.add(edge.source),notDimmed.add(edge.target)):dimmed2.add(edge.id);for(const node of view.nodes)notDimmed.has(node.id)||dimmed2.add(node.id);set2({activeDynamicViewStep:null,focusedNodeId:nodeId,dimmed:dimmed2},noReplace,`focus on node: ${nodeId}`)}},setHoveredNode:nodeId=>{nodeId!==get2().hoveredNodeId&&set2({hoveredNodeId:nodeId})},setHoveredEdge:edgeId=>{edgeId!==get2().hoveredEdgeId&&set2({hoveredEdgeId:edgeId})},setLastClickedNode:nodeId=>{nodeId!==get2().lastClickedNodeId&&set2({lastClickedNodeId:nodeId})},setLastClickedEdge:edgeId=>{edgeId!==get2().lastClickedEdgeId&&set2({lastClickedEdgeId:edgeId})},resetLastClicked:()=>{let{activeDynamicViewStep,focusedNodeId,lastClickedNodeId,lastClickedEdgeId}=get2();(activeDynamicViewStep||focusedNodeId||lastClickedNodeId||lastClickedEdgeId)&&set2({activeDynamicViewStep:null,focusedNodeId:null,lastClickedNodeId:null,lastClickedEdgeId:null,dimmed:EmptyStringSet},noReplace,"resetLastClicked")},getElement:fqn=>{const{view}=get2();return view.nodes.find(({id:id2})=>id2===fqn)??null},triggerChangeElementStyle:change=>{DEV&&console.debug("triggerChangeElementStyle",change);const{view,updateView,onChange}=get2();let hasChanges=!1;const nodes=view.nodes.map(origin=>{if(!change.targets.includes(origin.id))return origin;let element=origin;for(const[key,value]of t$1(change.style))switch(key){case"shape":value!==element.shape&&(element={...element,shape:value});break;case"color":value!==element.color&&(element={...element,color:value});break;case"opacity":value!==element.style?.opacity&&(element={...element,style:{...element.style,opacity:value}});break;case"border":value!==element.style?.border&&(element={...element,style:{...element.style,border:value}});break;default:nonexhaustive(key)}return element!==origin?(hasChanges=!0,element):origin});hasChanges&&updateView({...view,nodes}),onChange?.({change})},cancelSaveManualLayout:()=>{let{viewSyncDebounceTimeout}=get2();viewSyncDebounceTimeout!==null&&(clearTimeout(viewSyncDebounceTimeout),set2({viewSyncDebounceTimeout:null}))},triggerSaveManualLayout:()=>{let{viewSyncDebounceTimeout:debounced,onChange}=get2();if(!onChange){DEV&&console.debug("ignore triggerSaveManualLayout, as no onChange handler is set");return}debounced&&clearTimeout(debounced),debounced=setTimeout(()=>{const{xyflow,onChange:onChange2,xystore}=get2(),{nodeLookup}=xystore.getState();set2({viewSyncDebounceTimeout:null});const movedNodes=new StringSet,nodes=l$2([...nodeLookup.values()],(acc,node)=>{const dimensions=getNodeDimensions(node);return isSamePoint$1(node.internals.positionAbsolute,node.data.element.position)||movedNodes.add(node.id),acc[node.data.fqn]={x:node.internals.positionAbsolute.x,y:node.internals.positionAbsolute.y,width:dimensions.width,height:dimensions.height},acc},{}),edges=l$2(xyflow.getEdges(),(acc,{source,target,data})=>{let controlPoints=data.controlPoints;return!controlPoints&&(movedNodes.has(source)||movedNodes.has(target))&&(controlPoints=bezierControlPoints(data.edge)),controlPoints&&(acc[data.edge.id]={controlPoints}),acc},{});if(movedNodes.size===0&&n$1(edges)){DEV&&console.debug("ignore triggerSaveManualLayout, as no changes detected");return}const change={op:"save-manual-layout",nodes,edges};DEV&&console.debug("triggerSaveManualLayout",change),onChange2?.({change})},2e3),set2({viewSyncDebounceTimeout:debounced},noReplace,"debounce sync state")},triggerOnNavigateTo:(xynodeId,event)=>{const{xyflow,view}=get2(),xynode=xyflow.getInternalNode(xynodeId);invariant(!!xynode,`node not found: ${xynodeId}`);const element=xynode.data.element;invariant(element.navigateTo,`node is not navigable: ${xynodeId}`),set2({lastClickedNodeId:xynodeId,lastOnNavigate:{fromView:view.id,toView:element.navigateTo,element,elementScreenPosition:xyflow.flowToScreenPosition({x:xynode.internals.positionAbsolute.x,y:xynode.internals.positionAbsolute.y}),positionCorrected:!1}},noReplace,"triggerOnNavigateTo"),get2().onNavigateTo?.(element.navigateTo,event,element,xynode.internals.userNode)},fitDiagram:(duration=500)=>{const{fitViewPadding,view,focusedNodeId,activeDynamicViewStep,xystore}=get2(),{width,height,panZoom,transform:transform2}=xystore.getState(),bounds={x:0,y:0,width:view.width,height:view.height},maxZoom=Math.max(1,transform2[2]),viewport=getViewportForBounds(bounds,width,height,MinZoom,maxZoom,fitViewPadding);panZoom?.setViewport(viewport,{duration}),(focusedNodeId??activeDynamicViewStep)!==null&&set2({activeDynamicViewStep:null,focusedNodeId:null,dimmed:EmptyStringSet},noReplace,"unfocus")},nextDynamicStep:(increment=1)=>{const{view,activeDynamicViewStep,xyflow,xystore,fitViewPadding}=get2();invariant(view.__==="dynamic","view is not dynamic");const nextStep=(activeDynamicViewStep??0)+increment;if(nextStep<=0||nextStep>view.edges.length)return;const edgeId=StepEdgeId(nextStep),dimmed2=new StringSet;let edge=null;for(const e2 of xyflow.getEdges()){if(e2.id===edgeId){edge=e2;continue}dimmed2.add(e2.id)}invariant(!!edge,`edge not found: ${edgeId}`);const selected2=[];for(const n2 of xyflow.getNodes()){if(n2.id===edge.source||n2.id===edge.target){selected2.push(n2);continue}dimmed2.add(n2.id)}const{fitView:fitView2,transform:transform2}=xystore.getState();fitView2({duration:400,includeHiddenNodes:!0,maxZoom:Math.max(1,transform2[2]),minZoom:MinZoom,padding:Math.max(fitViewPadding,.2),nodes:selected2}),set2({focusedNodeId:null,activeDynamicViewStep:nextStep,dimmed:dimmed2},noReplace,"nextDynamicStep")},stopDynamicView:()=>{get2().activeDynamicViewStep!==null&&(set2({activeDynamicViewStep:null,focusedNodeId:null,dimmed:EmptyStringSet},noReplace,"stopDynamicView"),get2().fitDiagram())}}),{name:`${storeDevId} - ${props2.view.id}`,enabled:DEV})),shallow$1)}const DiagramContext=createContext$1(null);function DiagramContextProvider({children:children2,view,className,keepAspectRatio,...props2}){const containerRef=useRef$1(null),xystore=useXYStoreApi(),xyflow=useXYFlow(),store=useRef$1();return store.current||(store.current=createDiagramStore({xystore,xyflow,view,getContainer:()=>containerRef.current,...props2})),useEffect$1(()=>{if(!store.current)return;const state=store.current.getState();(state.xyflow!==xyflow||state.xystore!==xystore)&&store.current.setState({xyflow,xystore},!1,"update xyflow and xystore")},[xyflow,xystore]),useUpdateEffect(()=>{if(!store.current)return;const state=store.current.getState();state.view!==view&&state.updateView(view);const newProps=i$2(props2,l$1);o$2(state,newProps)||store.current.setState(newProps,!1,"update incoming props")},[view,props2],shallowEqual),jsx("div",{ref:containerRef,className,...keepAspectRatio&&{style:{aspectRatio:`${Math.ceil(view.width)}/${Math.ceil(view.height)}`,maxHeight:Math.ceil(view.height)}},children:jsx(DiagramContext.Provider,{value:store.current,children:children2})})}function useDiagramState(selector2,equalityFn){const store=useContext$1(DiagramContext);if(store===null)throw new Error("useDiagramStore could be used only inside DiagramContext");return useStoreWithEqualityFn(store,selector2,equalityFn??shallowEqual)}function useDiagramStoreApi(){const store=useContext$1(DiagramContext);if(store===null)throw new Error("useDiagramStoreApi could be used only inside DiagramContext");return store}function diagramViewToXYFlowData(view,opts){const isDynamicView=view.__==="dynamic",editor={nodes:[],edges:[]},nodeLookup=new Map,traverse=view.nodes.reduce((acc,node)=>(nodeLookup.set(node.id,node),node.parent||acc.push({node,parent:null}),acc),new Array),ns="",nodeById=id2=>nonNullable(nodeLookup.get(id2),`Node not found: ${id2}`);let next;for(;next=traverse.shift();){const{node,parent}=next;node.children.length>0&&traverse.push(...node.children.map(child=>({node:nodeById(child),parent:node})));const isCompound=i$4(node.children,1),position={x:node.position[0],y:node.position[1]};parent&&(position.x-=parent.position[0],position.y-=parent.position[1]);const id2=ns+node.id,draggable=opts.draggable&&(!parent||parent.children.length>1);editor.nodes.push({id:id2,type:isCompound?"compound":"element",data:{fqn:node.id,element:node},draggable,selectable:opts.selectable,deletable:!1,position,zIndex:isCompound?ZIndexes.Compound:ZIndexes.Element,hidden:!1,initialWidth:node.width,initialHeight:node.height,width:node.width,height:node.height,...parent&&{parentId:ns+parent.id},...isCompound&&{dragHandle:".likec4-compound-title"}})}for(const edge of view.edges){const source=edge.source,target=edge.target,id2=ns+edge.id;invariant(i$4(edge.points,2),"edge should have at least 2 points"),editor.edges.push({id:id2,type:"relationship",source:ns+source,target:ns+target,zIndex:ZIndexes.Edge,selectable:opts.selectable,deletable:!1,data:{edge,type:"bezier",controlPoints:view.manualLayout?.edges[edge.id]?.controlPoints||null,stepNum:isDynamicView?extractStep(edge.id):null,label:edge.labelBBox?{bbox:edge.labelBBox,text:edge.label??""}:null},interactionWidth:20})}return editor}function useNavigationHistory(){const store=useDiagramStoreApi(),viewId=useDiagramState(s2=>s2.view.id),[historyViewId,historyOps,{history,current:historyIndex}]=useStateHistory(viewId),hasBack=historyIndex>0,hasForward=historyIndex<history.length-1;return useUpdateEffect(()=>{viewId!==historyViewId&&historyOps.set(viewId)},[viewId]),useUpdateEffect(()=>{viewId!==historyViewId&&store.getState().onNavigateTo?.(historyViewId)},[historyViewId]),useMemo$1(()=>({hasBack,hasForward,ops:historyOps}),[hasBack,hasForward,historyOps])}function selectDimensions(state){return`${Math.round(state.width)}:${Math.round(state.height)}`}function FitViewOnViewportResize({diagramApi,xyflowApi}){const dimensions=useXYStore(selectDimensions),prevDimensionsRef=useRef$1(dimensions);return useDebouncedEffect(()=>{const{focusedNodeId,fitDiagram}=diagramApi.getState();focusedNodeId||prevDimensionsRef.current===dimensions||(fitDiagram(300),prevDimensionsRef.current=dimensions)},[dimensions,diagramApi,xyflowApi],300,1e3),null}function selector$3({view,xyflowSynced,viewportChanged,lastOnNavigate,...s2}){const viewId=view.id+"_"+view.autoLayout+"_"+s2.fitViewPadding,waitCorrection=lastOnNavigate&&lastOnNavigate.toView===view.id&&lastOnNavigate.positionCorrected===!1,elTo=waitCorrection?view.nodes.find(n2=>n2.id===lastOnNavigate.element.id):void 0;return waitCorrection&&elTo?{viewId,xyflowSynced,viewportChanged,waitCorrection:!0,elFrom:lastOnNavigate.element,elTo}:{viewId,xyflowSynced,viewportChanged,waitCorrection:!1,fromElement:null,toElement:null}}function FitViewOnDiagramChange(){const xyflowApi=useXYStoreApi(),{viewId:pendingViewId,xyflowSynced,viewportChanged,waitCorrection,elFrom,elTo}=useDiagramState(selector$3,shallowEqual),diagramApi=useDiagramStoreApi(),processedRef=useRef$1(pendingViewId),durationRef=useRef$1(300);return useEffect$1(()=>{if(!(!xyflowSynced||pendingViewId===processedRef.current)){if(waitCorrection){invariant(elTo,"elTo should be defined"),invariant(elFrom,"elFrom should be defined");const{xyflow,lastOnNavigate}=diagramApi.getState();invariant(lastOnNavigate,"lastOnNavigate should be defined");const fromPos=lastOnNavigate.elementScreenPosition,toPos=xyflow.flowToScreenPosition({x:elTo.position[0],y:elTo.position[1]}),diff={x:toDomPrecision(fromPos.x-toPos.x),y:toDomPrecision(fromPos.y-toPos.y)};xyflowApi.getState().panBy(diff),durationRef.current=500,diagramApi.setState({lastOnNavigate:null});return}processedRef.current=pendingViewId,diagramApi.getState().fitDiagram(durationRef.current),durationRef.current=300}},[pendingViewId,xyflowSynced,waitCorrection]),!viewportChanged&&xyflowSynced?jsx(FitViewOnViewportResize,{xyflowApi,diagramApi}):null}function SelectEdgesOnNodeFocus(){const diagramStore=useDiagramStoreApi();return useEffect$1(()=>diagramStore.subscribe(s2=>s2.focusedNodeId,focusedNodeId=>{if(!focusedNodeId)return;const edgeChanges=[],nodeChanges=[],{edgeLookup,nodeLookup,width,height,panZoom,transform:transform2,triggerNodeChanges,triggerEdgeChanges}=diagramStore.getState().xystore.getState();let focusBounds=nodeToRect(nonNullable(nodeLookup.get(focusedNodeId)));for(const[,edge]of edgeLookup){if(edge.source===focusedNodeId||edge.target===focusedNodeId){const anotherNodeId=edge.source===focusedNodeId?edge.target:edge.source,nd=nodeToRect(nonNullable(nodeLookup.get(anotherNodeId)));focusBounds=getBoundsOfRects(focusBounds,nd)}edge.selected&&edgeChanges.push({id:edge.id,type:"select",selected:!1})}for(const[,node]of nodeLookup)node.selected&&node.id!==focusedNodeId&&nodeChanges.push({id:node.id,type:"select",selected:!1});nodeChanges.push({id:focusedNodeId,type:"select",selected:!0}),edgeChanges.length>0&&triggerEdgeChanges(edgeChanges),triggerNodeChanges(nodeChanges);const maxZoom=Math.max(1,transform2[2]),viewport=getViewportForBounds(focusBounds,width,height,MinZoom,maxZoom,.2);panZoom?.setViewport(viewport,{duration:350})}),[diagramStore]),null}function SyncWithDiagram(){const xyflowSynced=useDiagramState(s2=>s2.xyflowSynced),diagramStoreApi=useDiagramStoreApi();return useEffect$1(()=>{if(xyflowSynced)return;const{view,nodesDraggable,nodesSelectable,focusedNodeId,xystore}=diagramStoreApi.getState(),updates=diagramViewToXYFlowData(view,{draggable:nodesDraggable,selectable:nodesSelectable||focusedNodeId!==null}),{nodeLookup,edgeLookup,setNodes,setEdges}=xystore.getState();setNodes(updates.nodes.map(update=>{const existing=nodeLookup.get(update.id)?.internals.userNode;return existing&&existing.type===update.type&&deepEqual(existing.parentId,update.parentId)?deepEqual(existing.data.element,update.data.element)?existing:{...existing,...update}:update})),setEdges(updates.edges.map(update=>{const existing=edgeLookup.get(update.id);return existing?deepEqual(existing.data.controlPoints,update.data.controlPoints)&&deepEqual(existing.markerStart,update.markerStart)&&deepEqual(existing.markerEnd,update.markerEnd)&&deepEqual(existing.data.edge,update.data.edge)?existing:{...y$2(existing,["data","markerStart","markerEnd"]),...update,data:{...existing.data,...update.data}}:update})),diagramStoreApi.setState({xyflowSynced:!0},!1,"xyflowSynced")},[xyflowSynced,diagramStoreApi]),null}function getVarName(variable){var matches=variable.match(/^var\((.*)\)$/);return matches?matches[1]:variable}function assignInlineVars(varsOrContract,tokens){var styles={};{var _vars=varsOrContract;for(var varName in _vars){var value=_vars[varName];value!=null&&(styles[getVarName(varName)]=value)}}return Object.defineProperty(styles,"toString",{value:function(){return Object.keys(this).map(key=>"".concat(key,":").concat(this[key])).join(";")},writable:!1}),styles}function constant(x2){return function(){return x2}}const epsilon$1=1e-12,pi=Math.PI,tau=2*pi,epsilon=1e-6,tauEpsilon=tau-epsilon;function append(strings){this._+=strings[0];for(let i2=1,n2=strings.length;i2<n2;++i2)this._+=arguments[i2]+strings[i2]}function appendRound(digits){let d2=Math.floor(digits);if(!(d2>=0))throw new Error(`invalid digits: ${digits}`);if(d2>15)return append;const k2=10**d2;return function(strings){this._+=strings[0];for(let i2=1,n2=strings.length;i2<n2;++i2)this._+=Math.round(arguments[i2]*k2)/k2+strings[i2]}}class Path{constructor(digits){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=digits==null?append:appendRound(digits)}moveTo(x2,y2){this._append`M${this._x0=this._x1=+x2},${this._y0=this._y1=+y2}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(x2,y2){this._append`L${this._x1=+x2},${this._y1=+y2}`}quadraticCurveTo(x1,y1,x2,y2){this._append`Q${+x1},${+y1},${this._x1=+x2},${this._y1=+y2}`}bezierCurveTo(x1,y1,x2,y2,x3,y3){this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1=+x3},${this._y1=+y3}`}arcTo(x1,y1,x2,y2,r2){if(x1=+x1,y1=+y1,x2=+x2,y2=+y2,r2=+r2,r2<0)throw new Error(`negative radius: ${r2}`);let x0=this._x1,y0=this._y1,x21=x2-x1,y21=y2-y1,x01=x0-x1,y01=y0-y1,l01_2=x01*x01+y01*y01;if(this._x1===null)this._append`M${this._x1=x1},${this._y1=y1}`;else if(l01_2>epsilon)if(!(Math.abs(y01*x21-y21*x01)>epsilon)||!r2)this._append`L${this._x1=x1},${this._y1=y1}`;else{let x20=x2-x0,y20=y2-y0,l21_2=x21*x21+y21*y21,l20_2=x20*x20+y20*y20,l21=Math.sqrt(l21_2),l01=Math.sqrt(l01_2),l2=r2*Math.tan((pi-Math.acos((l21_2+l01_2-l20_2)/(2*l21*l01)))/2),t01=l2/l01,t21=l2/l21;Math.abs(t01-1)>epsilon&&this._append`L${x1+t01*x01},${y1+t01*y01}`,this._append`A${r2},${r2},0,0,${+(y01*x20>x01*y20)},${this._x1=x1+t21*x21},${this._y1=y1+t21*y21}`}}arc(x2,y2,r2,a0,a1,ccw){if(x2=+x2,y2=+y2,r2=+r2,ccw=!!ccw,r2<0)throw new Error(`negative radius: ${r2}`);let dx=r2*Math.cos(a0),dy=r2*Math.sin(a0),x0=x2+dx,y0=y2+dy,cw=1^ccw,da=ccw?a0-a1:a1-a0;this._x1===null?this._append`M${x0},${y0}`:(Math.abs(this._x1-x0)>epsilon||Math.abs(this._y1-y0)>epsilon)&&this._append`L${x0},${y0}`,r2&&(da<0&&(da=da%tau+tau),da>tauEpsilon?this._append`A${r2},${r2},0,1,${cw},${x2-dx},${y2-dy}A${r2},${r2},0,1,${cw},${this._x1=x0},${this._y1=y0}`:da>epsilon&&this._append`A${r2},${r2},0,${+(da>=pi)},${cw},${this._x1=x2+r2*Math.cos(a1)},${this._y1=y2+r2*Math.sin(a1)}`)}rect(x2,y2,w2,h2){this._append`M${this._x0=this._x1=+x2},${this._y0=this._y1=+y2}h${w2=+w2}v${+h2}h${-w2}Z`}toString(){return this._}}function withPath(shape){let digits=3;return shape.digits=function(_){if(!arguments.length)return digits;if(_==null)digits=null;else{const d2=Math.floor(_);if(!(d2>=0))throw new RangeError(`invalid digits: ${_}`);digits=d2}return shape},()=>new Path(digits)}function array(x2){return typeof x2=="object"&&"length"in x2?x2:Array.from(x2)}function Linear(context){this._context=context}Linear.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(x2,y2){switch(x2=+x2,y2=+y2,this._point){case 0:this._point=1,this._line?this._context.lineTo(x2,y2):this._context.moveTo(x2,y2);break;case 1:this._point=2;default:this._context.lineTo(x2,y2);break}}};function curveLinear(context){return new Linear(context)}function x(p2){return p2[0]}function y(p2){return p2[1]}function d3line(x$1,y$12){var defined=constant(!0),context=null,curve2=curveLinear,output=null,path=withPath(line);x$1=typeof x$1=="function"?x$1:x$1===void 0?x:constant(x$1),y$12=typeof y$12=="function"?y$12:y$12===void 0?y:constant(y$12);function line(data){var i2,n2=(data=array(data)).length,d2,defined0=!1,buffer;for(context==null&&(output=curve2(buffer=path())),i2=0;i2<=n2;++i2)!(i2<n2&&defined(d2=data[i2],i2,data))===defined0&&((defined0=!defined0)?output.lineStart():output.lineEnd()),defined0&&output.point(+x$1(d2,i2,data),+y$12(d2,i2,data));if(buffer)return output=null,buffer+""||null}return line.x=function(_){return arguments.length?(x$1=typeof _=="function"?_:constant(+_),line):x$1},line.y=function(_){return arguments.length?(y$12=typeof _=="function"?_:constant(+_),line):y$12},line.defined=function(_){return arguments.length?(defined=typeof _=="function"?_:constant(!!_),line):defined},line.curve=function(_){return arguments.length?(curve2=_,context!=null&&(output=curve2(context)),line):curve2},line.context=function(_){return arguments.length?(_==null?context=output=null:output=curve2(context=_),line):context},line}function point$1(that,x2,y2){that._context.bezierCurveTo(that._x1+that._k*(that._x2-that._x0),that._y1+that._k*(that._y2-that._y0),that._x2+that._k*(that._x1-x2),that._y2+that._k*(that._y1-y2),that._x2,that._y2)}function Cardinal(context,tension){this._context=context,this._k=(1-tension)/6}Cardinal.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:point$1(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(x2,y2){switch(x2=+x2,y2=+y2,this._point){case 0:this._point=1,this._line?this._context.lineTo(x2,y2):this._context.moveTo(x2,y2);break;case 1:this._point=2,this._x1=x2,this._y1=y2;break;case 2:this._point=3;default:point$1(this,x2,y2);break}this._x0=this._x1,this._x1=this._x2,this._x2=x2,this._y0=this._y1,this._y1=this._y2,this._y2=y2}};(function custom(tension){function cardinal(context){return new Cardinal(context,tension)}return cardinal.tension=function(tension2){return custom(+tension2)},cardinal})(0);function CardinalOpen(context,tension){this._context=context,this._k=(1-tension)/6}CardinalOpen.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(x2,y2){switch(x2=+x2,y2=+y2,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:point$1(this,x2,y2);break}this._x0=this._x1,this._x1=this._x2,this._x2=x2,this._y0=this._y1,this._y1=this._y2,this._y2=y2}};(function custom2(tension){function cardinal(context){return new CardinalOpen(context,tension)}return cardinal.tension=function(tension2){return custom2(+tension2)},cardinal})(0);function point(that,x2,y2){var x1=that._x1,y1=that._y1,x22=that._x2,y22=that._y2;if(that._l01_a>epsilon$1){var a2=2*that._l01_2a+3*that._l01_a*that._l12_a+that._l12_2a,n2=3*that._l01_a*(that._l01_a+that._l12_a);x1=(x1*a2-that._x0*that._l12_2a+that._x2*that._l01_2a)/n2,y1=(y1*a2-that._y0*that._l12_2a+that._y2*that._l01_2a)/n2}if(that._l23_a>epsilon$1){var b2=2*that._l23_2a+3*that._l23_a*that._l12_a+that._l12_2a,m2=3*that._l23_a*(that._l23_a+that._l12_a);x22=(x22*b2+that._x1*that._l23_2a-x2*that._l12_2a)/m2,y22=(y22*b2+that._y1*that._l23_2a-y2*that._l12_2a)/m2}that._context.bezierCurveTo(x1,y1,x22,y22,that._x2,that._y2)}function CatmullRom(context,alpha2){this._context=context,this._alpha=alpha2}CatmullRom.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(x2,y2){if(x2=+x2,y2=+y2,this._point){var x23=this._x2-x2,y23=this._y2-y2;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(x23*x23+y23*y23,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(x2,y2):this._context.moveTo(x2,y2);break;case 1:this._point=2;break;case 2:this._point=3;default:point(this,x2,y2);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=x2,this._y0=this._y1,this._y1=this._y2,this._y2=y2}};(function custom3(alpha2){function catmullRom(context){return alpha2?new CatmullRom(context,alpha2):new Cardinal(context,0)}return catmullRom.alpha=function(alpha3){return custom3(+alpha3)},catmullRom})(.5);function CatmullRomOpen(context,alpha2){this._context=context,this._alpha=alpha2}CatmullRomOpen.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(x2,y2){if(x2=+x2,y2=+y2,this._point){var x23=this._x2-x2,y23=this._y2-y2;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(x23*x23+y23*y23,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:point(this,x2,y2);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=x2,this._y0=this._y1,this._y1=this._y2,this._y2=y2}};const curveCatmullRomOpen=function custom4(alpha2){function catmullRom(context){return alpha2?new CatmullRomOpen(context,alpha2):new CardinalOpen(context,0)}return catmullRom.alpha=function(alpha3){return custom4(+alpha3)},catmullRom}(.5),Open=props2=>jsx("marker",{viewBox:"-4 -4 14 16",refX:5,refY:4,markerWidth:"7",markerHeight:"8",preserveAspectRatio:"xMaxYMid meet",orient:"auto-start-reverse",...props2,children:jsx("path",{d:"M0,0 L7,4 L0,8 L4,4 Z",stroke:"context-stroke",fill:"context-stroke",strokeDasharray:0,strokeWidth:1,strokeLinecap:"round"})}),Arrow=props2=>jsx("marker",{viewBox:"-1 -1 12 10",refX:4,refY:3,markerWidth:"8",markerHeight:"6",preserveAspectRatio:"xMaxYMid meet",orient:"auto-start-reverse",...props2,children:jsx("path",{d:"M 0 0 L 8 3 L 0 6 L 1 3 z",fill:"context-stroke",strokeWidth:0})}),OArrow=props2=>jsx("marker",{viewBox:"-1 -1 12 10",refX:4,refY:3,markerWidth:"8",markerHeight:"6",preserveAspectRatio:"xMaxYMid meet",orient:"auto-start-reverse",...props2,children:jsx("path",{d:"M 0 0 L 8 3 L 0 6 L 1 3 z",stroke:"context-stroke",fill:"var(--likec4-background-color)",strokeWidth:1.25,strokeLinejoin:"miter",strokeLinecap:"square"})}),Diamond=props2=>jsx("marker",{viewBox:"-4 -4 16 14",refX:5,refY:4,markerWidth:"10",markerHeight:"8",preserveAspectRatio:"xMaxYMid meet",orient:"auto-start-reverse",...props2,children:jsx("path",{d:"M5,0 L10,4 L5,8 L0,4 Z",fill:"context-stroke",strokeWidth:0,strokeLinecap:"round"})}),ODiamond=props2=>jsx("marker",{viewBox:"-4 -4 16 14",refX:6,refY:4,markerWidth:"10",markerHeight:"8",preserveAspectRatio:"xMaxYMid meet",orient:"auto-start-reverse",...props2,children:jsx("path",{d:"M5,0 L10,4 L5,8 L0,4 Z",stroke:"context-stroke",fill:"var(--likec4-background-color)",strokeWidth:1.25,strokeLinecap:"round"})}),Dot=props2=>jsx("marker",{viewBox:"0 0 10 10",refX:4,refY:4,markerWidth:"6",markerHeight:"6",...props2,children:jsx("circle",{strokeWidth:0,fill:"context-stroke",cx:4,cy:4,r:3})}),ODot=props2=>jsx("marker",{viewBox:"0 0 10 10",refX:4,refY:4,markerWidth:"6",markerHeight:"6",...props2,children:jsx("circle",{strokeWidth:1.25,stroke:"context-stroke",fill:"var(--likec4-background-color)",cx:4,cy:4,r:3})}),EdgeMarkers={Arrow,OArrow,Open,Diamond,ODiamond,Dot,ODot};var container$4="yi2p6v1",dimmed$2="yi2p6v2",edgePathBg="yi2p6v3",markerContext="yi2p6v4",controlPoint="yi2p6v5",controlDragging="yi2p6v6",cssEdgePath="yi2p6v8",varLabelX="var(--yi2p6v9)",varLabelY="var(--yi2p6va)",edgeLabel="yi2p6vc",stepEdgeNumber="yi2p6vd",edgeLabelText="yi2p6ve";function getNodeIntersectionFromCenterToPoint(intersectionNode,{x:x1,y:y1}){const{width:intersectionNodeWidth,height:intersectionNodeHeight}=getNodeDimensions(intersectionNode),intersectionNodePosition=intersectionNode.internals.positionAbsolute,w2=intersectionNodeWidth/2,h2=intersectionNodeHeight/2,x2=intersectionNodePosition.x+w2,y2=intersectionNodePosition.y+h2,xx1=(x1-x2)/(2*w2)-(y1-y2)/(2*h2),yy1=(x1-x2)/(2*w2)+(y1-y2)/(2*h2),a2=1/(Math.abs(xx1)+Math.abs(yy1)),xx3=a2*xx1,yy3=a2*yy1,x3=w2*(xx3+yy3)+x2,y3=h2*(-xx3+yy3)+y2;return{x:x3,y:y3}}const toMarker=arrowType=>{if(!(!arrowType||arrowType==="none"))switch(arrowType){case"normal":case"crow":return"Arrow";case"onormal":return"OArrow";case"diamond":return"Diamond";case"odiamond":return"ODiamond";case"open":case"vee":return"Open";case"dot":return"Dot";case"odot":return"ODot";default:nonexhaustive(arrowType)}};function bezierPath(bezierSpline){let[start2,...points]=bezierSpline;invariant(start2,"start should be defined");let path=`M ${start2[0]},${start2[1]}`;for(;i$4(points,3);){const[cp1,cp2,end,...rest]=points;path=path+` C ${cp1[0]},${cp1[1]} ${cp2[0]},${cp2[1]} ${end[0]},${end[1]}`,points=rest}return invariant(points.length===0,"all points should be consumed"),path}const isSame=(a2,b2)=>Math.abs(a2-b2)<3.1,isSamePoint=(a2,b2)=>{const[ax,ay]=n(a2)?a2:[a2.x,a2.y],[bx,by]=n(b2)?b2:[b2.x,b2.y];return isSame(ax,bx)&&isSame(ay,by)},sameControlPoints=(a2,b2)=>a2===b2?!0:!a2||!b2||a2.length!==b2.length?!1:a2.every((ap,i2)=>isSamePoint(ap,b2[i2])),isEqualProps$2=(prev,next)=>prev.id===next.id&&deepEqual(prev.source,next.source)&&deepEqual(prev.target,next.target)&&deepEqual(prev.selected??!1,next.selected??!1)&&isSame(prev.sourceX,next.sourceX)&&isSame(prev.sourceY,next.sourceY)&&isSame(prev.targetX,next.targetX)&&isSame(prev.targetY,next.targetY)&&deepEqual(prev.data.stepNum,next.data.stepNum)&&sameControlPoints(prev.data.controlPoints,next.data.controlPoints)&&deepEqual(prev.data.edge,next.data.edge),curve=d3line().curve(curveCatmullRomOpen).x(d2=>d2.x).y(d2=>d2.y),RelationshipEdge=memo$1(function({id:id2,data,selected:selected2,sourceX,sourceY,targetX,targetY,style:style2,source,target,interactionWidth}){const[isControlPointDragging,setIsControlPointDragging]=useState$1(!1),diagramStore=useDiagramStoreApi(),xyflowStore=useXYStoreApi(),{isActive,isEditable,isEdgePathEditable,isHovered,isDimmed}=useDiagramState(s2=>({isEditable:s2.readonly!==!0,isEdgePathEditable:s2.readonly!==!0&&s2.experimentalEdgeEditing===!0,isActive:s2.focusedNodeId===source||s2.focusedNodeId===target||s2.activeDynamicViewStep!==null&&s2.activeDynamicViewStep===data.stepNum,isHovered:s2.hoveredEdgeId===id2,isDimmed:s2.dimmed.has(id2)})),{nodeLookup,edgeLookup}=xyflowStore.getState(),sourceNode=nonNullable(nodeLookup.get(source),`source node ${source} not found`),targetNode=nonNullable(nodeLookup.get(target),`target node ${target} not found`),isModified=isEditable&&(n$4(data.controlPoints)||!isSamePoint(sourceNode.internals.positionAbsolute,sourceNode.data.element.position)||!isSamePoint(targetNode.internals.positionAbsolute,targetNode.data.element.position)),{label,edge:{points:diagramEdgePoints,line="dashed",color:color2="gray",...diagramEdge}}=data;let controlPoints=data.controlPoints??bezierControlPoints(data.edge);const isStepEdge=data.stepNum!==null,isDotted=line==="dotted",isDashed=isDotted||line==="dashed";let strokeDasharray;isDotted?strokeDasharray="1,8":isDashed&&(strokeDasharray="8,10");let labelX=label?.bbox.x??0,labelY=label?.bbox.y??0;const[labelPos,setLabelPosition]=useState$1({x:labelX,y:labelY});let edgePath;if(isModified){labelX=labelPos.x,labelY=labelPos.y;const sourceCenterPos={x:sourceX,y:sourceY},targetCenterPos={x:targetX,y:targetY},points=diagramEdge.dir==="back"?[targetCenterPos,getNodeIntersectionFromCenterToPoint(targetNode,d(controlPoints)??sourceCenterPos),...controlPoints,getNodeIntersectionFromCenterToPoint(sourceNode,a$2(controlPoints)??targetCenterPos),sourceCenterPos]:[sourceCenterPos,getNodeIntersectionFromCenterToPoint(sourceNode,d(controlPoints)??targetCenterPos),...controlPoints,getNodeIntersectionFromCenterToPoint(targetNode,a$2(controlPoints)??sourceCenterPos),targetCenterPos];edgePath=nonNullable(curve(points))}else edgePath=bezierPath(diagramEdgePoints);const svgPathRef=useRef$1(null);useIsomorphicLayoutEffect$1(()=>{const path=svgPathRef.current;if(!path)return;const dompoint=path.getPointAtLength(path.getTotalLength()*.5),point2={x:Math.round(dompoint.x),y:Math.round(dompoint.y)};setLabelPosition(current=>isSamePoint(current,point2)?current:point2)},[edgePath]);const onControlPointerDown=(index2,e2)=>{const{domNode}=xyflowStore.getState();if(!domNode||e2.pointerType!=="mouse")return;const{xyflow}=diagramStore.getState();if(e2.button===2&&controlPoints.length>1){const newControlPoints=controlPoints.slice();newControlPoints.splice(index2,1),e2.stopPropagation(),setTimeout(()=>{xyflow.updateEdgeData(id2,{controlPoints:newControlPoints})},10);return}if(e2.button!==0)return;e2.stopPropagation();let hasMoved=!1,pointer2={x:e2.clientX,y:e2.clientY};const onPointerMove=e22=>{if(!isSamePoint(pointer2,[e22.clientX,e22.clientY])){setIsControlPointDragging(!0),hasMoved||diagramStore.getState().cancelSaveManualLayout(),hasMoved=!0,pointer2={x:e22.clientX,y:e22.clientY};const{x:x2,y:y2}=xyflow.screenToFlowPosition(pointer2,{snapToGrid:!1}),newControlPoints=controlPoints.slice();newControlPoints[index2]={x:Math.round(x2),y:Math.round(y2)},xyflow.updateEdgeData(id2,{controlPoints:newControlPoints})}},onPointerUp=()=>{setIsControlPointDragging(!1),domNode.removeEventListener("pointermove",onPointerMove),domNode.removeEventListener("pointerup",onPointerUp),hasMoved&&diagramStore.getState().triggerSaveManualLayout()};domNode.addEventListener("pointermove",onPointerMove),domNode.addEventListener("pointerup",onPointerUp,{once:!0})};let markerStartName=toMarker(diagramEdge.tail),markerEndName=toMarker(diagramEdge.head??"normal");diagramEdge.dir==="back"&&([markerStartName,markerEndName]=[markerEndName,markerStartName]);const MarkerStart=markerStartName?EdgeMarkers[markerStartName]:null,MarkerEnd=markerEndName?EdgeMarkers[markerEndName]:null;return jsxs("g",{className:clsx([container$4,isDimmed&&dimmed$2,isControlPointDragging&&controlDragging]),"data-likec4-color":color2,"data-edge-dir":diagramEdge.dir,"data-edge-active":isActive,"data-edge-hovered":isHovered,children:[jsx("path",{className:clsx("react-flow__edge-interaction"),d:edgePath,fill:"none",stroke:"transparent",strokeWidth:interactionWidth??10}),jsxs("g",{className:markerContext,children:[jsxs("defs",{children:[MarkerStart&&jsx(MarkerStart,{id:"start"+id2}),MarkerEnd&&jsx(MarkerEnd,{id:"end"+id2})]}),jsx("path",{className:clsx("react-flow__edge-path",edgePathBg),d:edgePath,style:style2,strokeLinecap:"round"}),jsx("path",{ref:svgPathRef,className:clsx("react-flow__edge-path",cssEdgePath),d:edgePath,style:style2,strokeLinecap:"round",strokeDasharray,markerStart:MarkerStart?`url(#start${id2})`:void 0,markerEnd:MarkerEnd?`url(#end${id2})`:void 0})]}),isEdgePathEditable&&jsx("g",{onContextMenu:e2=>{e2.preventDefault(),e2.stopPropagation()},children:controlPoints.map((p2,i2)=>jsx("circle",{onPointerDown:e2=>onControlPointerDown(i2,e2),className:controlPoint,cx:p2.x,cy:p2.y,r:3},i2))}),(data.label||isStepEdge)&&jsx(EdgeLabel,{isDimmed,color:color2,isModified,labelX,labelY,isEdgePathEditable,selected:selected2??!1,stepNum:data.stepNum,label:data.label,zIndex:(edgeLookup.get(id2).zIndex??ZIndexes.Edge)+1,isHovered,isActive,isStepEdge})]})},isEqualProps$2),EdgeLabel=memo$1(({isDimmed,color:color2,isModified,labelX,labelY,isEdgePathEditable,selected:selected2,label,stepNum,isHovered,isActive,zIndex})=>jsx(EdgeLabelRenderer,{children:jsxs(Box,{className:clsx(["nodrag nopan",container$4,edgeLabel,isDimmed&&dimmed$2]),style:{...assignInlineVars({[varLabelX]:isModified?`calc(${labelX}px - 10%)`:`${labelX}px`,[varLabelY]:isModified?`${labelY-5}px`:`${labelY}px`}),...isEdgePathEditable&&selected2&&{pointerEvents:"none"},...label&&{maxWidth:label.bbox.width+18},zIndex},mod:{"data-likec4-color":color2,"data-edge-hovered":isHovered,"data-edge-active":isActive},children:[stepNum!==null&&jsx(Box,{className:stepEdgeNumber,children:stepNum}),n$4(label?.text)&&jsx(Box,{className:edgeLabelText,children:label.text})]})}),deepEqual);function createMap(){return new IndexedMap}class IndexedMap{index={};array=[];size(){return this.array.length}empty(){return this.array.length===0}itemAt(index2){return this.array[index2]}contains(key){return this.index[key.id()]!==void 0}find(key){const i2=this.index[key.id()];return i2===void 0?void 0:this.array[i2]}setDefault(key,factory2){const i2=this.index[key.id()];if(i2===void 0){const pair=new Pair(key,factory2());return this.index[key.id()]=this.array.length,this.array.push(pair),pair}else return this.array[i2]}insert(key,value){const pair=new Pair(key,value),i2=this.index[key.id()];return i2===void 0?(this.index[key.id()]=this.array.length,this.array.push(pair)):this.array[i2]=pair,pair}erase(key){const i2=this.index[key.id()];if(i2===void 0)return;this.index[key.id()]=void 0;const pair=this.array[i2],last2=this.array.pop();return pair!==last2&&(this.array[i2]=last2,this.index[last2.first.id()]=i2),pair}copy(){const copy=new IndexedMap;for(let i2=0;i2<this.array.length;i2++){const pair=this.array[i2].copy();copy.array[i2]=pair,copy.index[pair.first.id()]=i2}return copy}}class Pair{first;second;constructor(first,second){this.first=first,this.second=second}copy(){return new Pair(this.first,this.second)}}class Variable{constructor(name=""){this._name=name}id(){return this._id}name(){return this._name}setName(name){this._name=name}context(){return this._context}setContext(context){this._context=context}value(){return this._value}setValue(value){this._value=value}plus(value){return new Expression(this,value)}minus(value){return new Expression(this,typeof value=="number"?-value:[-1,value])}multiply(coefficient){return new Expression([coefficient,this])}divide(coefficient){return new Expression([1/coefficient,this])}toJSON(){return{name:this._name,value:this._value}}toString(){return this._context+"["+this._name+":"+this._value+"]"}_name;_value=0;_context=null;_id=VarId++}let VarId=0;class Expression{constructor(){let parsed=parseArgs(arguments);this._terms=parsed.terms,this._constant=parsed.constant}terms(){return this._terms}constant(){return this._constant}value(){let result=this._constant;for(let i2=0,n2=this._terms.size();i2<n2;i2++){let pair=this._terms.itemAt(i2);result+=pair.first.value()*pair.second}return result}plus(value){return new Expression(this,value)}minus(value){return new Expression(this,typeof value=="number"?-value:[-1,value])}multiply(coefficient){return new Expression([coefficient,this])}divide(coefficient){return new Expression([1/coefficient,this])}isConstant(){return this._terms.size()==0}toString(){let result=this._terms.array.map(function(pair){return pair.second+"*"+pair.first.toString()}).join(" + ");return!this.isConstant()&&this._constant!==0&&(result+=" + "),result+=this._constant,result}_terms;_constant}function parseArgs(args){let constant2=0,factory2=()=>0,terms=createMap();for(let i2=0,n2=args.length;i2<n2;++i2){let item=args[i2];if(typeof item=="number")constant2+=item;else if(item instanceof Variable)terms.setDefault(item,factory2).second+=1;else if(item instanceof Expression){constant2+=item.constant();let terms2=item.terms();for(let j=0,k2=terms2.size();j<k2;j++){let termPair=terms2.itemAt(j);terms.setDefault(termPair.first,factory2).second+=termPair.second}}else if(item instanceof Array){if(item.length!==2)throw new Error("array must have length 2");let value=item[0],value2=item[1];if(typeof value!="number")throw new Error("array item 0 must be a number");if(value2 instanceof Variable)terms.setDefault(value2,factory2).second+=value;else if(value2 instanceof Expression){constant2+=value2.constant()*value;let terms2=value2.terms();for(let j=0,k2=terms2.size();j<k2;j++){let termPair=terms2.itemAt(j);terms.setDefault(termPair.first,factory2).second+=termPair.second*value}}else throw new Error("array item 1 must be a variable or expression")}else throw new Error("invalid Expression argument: "+item)}return{terms,constant:constant2}}class Strength{static create(a2,b2,c2,w2=1){let result=0;return result+=Math.max(0,Math.min(1e3,a2*w2))*1e6,result+=Math.max(0,Math.min(1e3,b2*w2))*1e3,result+=Math.max(0,Math.min(1e3,c2*w2)),result}static required=Strength.create(1e3,1e3,1e3);static strong=Strength.create(1,0,0);static medium=Strength.create(0,1,0);static weak=Strength.create(0,0,1);static clip(value){return Math.max(0,Math.min(Strength.required,value))}}var Operator;(function(Operator2){Operator2[Operator2.Le=0]="Le",Operator2[Operator2.Ge=1]="Ge",Operator2[Operator2.Eq=2]="Eq"})(Operator||(Operator={}));class Constraint{constructor(expression,operator,rhs,strength=Strength.required){this._operator=operator,this._strength=Strength.clip(strength),rhs===void 0&&expression instanceof Expression?this._expression=expression:this._expression=expression.minus(rhs)}id(){return this._id}expression(){return this._expression}op(){return this._operator}strength(){return this._strength}toString(){return this._expression.toString()+" "+["<=",">=","="][this._operator]+" 0 ("+this._strength.toString()+")"}_expression;_operator;_strength;_id=CnId++}let CnId=0;class Solver{maxIterations=1e3;constructor(){}createConstraint(lhs,operator,rhs,strength=Strength.required){let cn=new Constraint(lhs,operator,rhs,strength);return this.addConstraint(cn),cn}addConstraint(constraint){if(this._cnMap.find(constraint)!==void 0)throw new Error("duplicate constraint");let data=this._createRow(constraint),row=data.row,tag=data.tag,subject=this._chooseSubject(row,tag);if(subject.type()===SymbolType.Invalid&&row.allDummies())if(nearZero(row.constant()))subject=tag.marker;else throw new Error("unsatisfiable constraint");if(subject.type()===SymbolType.Invalid){if(!this._addWithArtificialVariable(row))throw new Error("unsatisfiable constraint")}else row.solveFor(subject),this._substitute(subject,row),this._rowMap.insert(subject,row);this._cnMap.insert(constraint,tag),this._optimize(this._objective)}removeConstraint(constraint){let cnPair=this._cnMap.erase(constraint);if(cnPair===void 0)throw new Error("unknown constraint");this._removeConstraintEffects(constraint,cnPair.second);let marker=cnPair.second.marker,rowPair=this._rowMap.erase(marker);if(rowPair===void 0){let leaving=this._getMarkerLeavingSymbol(marker);if(leaving.type()===SymbolType.Invalid)throw new Error("failed to find leaving row");rowPair=this._rowMap.erase(leaving),rowPair.second.solveForEx(leaving,marker),this._substitute(marker,rowPair.second)}this._optimize(this._objective)}hasConstraint(constraint){return this._cnMap.contains(constraint)}getConstraints(){return this._cnMap.array.map(({first})=>first)}addEditVariable(variable,strength){if(this._editMap.find(variable)!==void 0)throw new Error("duplicate edit variable");if(strength=Strength.clip(strength),strength===Strength.required)throw new Error("bad required strength");let expr=new Expression(variable),cn=new Constraint(expr,Operator.Eq,void 0,strength);this.addConstraint(cn);let info={tag:this._cnMap.find(cn).second,constraint:cn,constant:0};this._editMap.insert(variable,info)}removeEditVariable(variable){let editPair=this._editMap.erase(variable);if(editPair===void 0)throw new Error("unknown edit variable");this.removeConstraint(editPair.second.constraint)}hasEditVariable(variable){return this._editMap.contains(variable)}suggestValue(variable,value){let editPair=this._editMap.find(variable);if(editPair===void 0)throw new Error("unknown edit variable");let rows=this._rowMap,info=editPair.second,delta=value-info.constant;info.constant=value;let marker=info.tag.marker,rowPair=rows.find(marker);if(rowPair!==void 0){rowPair.second.add(-delta)<0&&this._infeasibleRows.push(marker),this._dualOptimize();return}let other=info.tag.other;if(rowPair=rows.find(other),rowPair!==void 0){rowPair.second.add(delta)<0&&this._infeasibleRows.push(other),this._dualOptimize();return}for(let i2=0,n2=rows.size();i2<n2;++i2){let rowPair2=rows.itemAt(i2),row=rowPair2.second,coeff=row.coefficientFor(marker);coeff!==0&&row.add(delta*coeff)<0&&rowPair2.first.type()!==SymbolType.External&&this._infeasibleRows.push(rowPair2.first)}this._dualOptimize()}updateVariables(){let vars=this._varMap,rows=this._rowMap;for(let i2=0,n2=vars.size();i2<n2;++i2){let pair=vars.itemAt(i2),rowPair=rows.find(pair.second);rowPair!==void 0?pair.first.setValue(rowPair.second.constant()):pair.first.setValue(0)}}_getVarSymbol(variable){let factory2=()=>this._makeSymbol(SymbolType.External);return this._varMap.setDefault(variable,factory2).second}_createRow(constraint){let expr=constraint.expression(),row=new Row(expr.constant()),terms=expr.terms();for(let i2=0,n2=terms.size();i2<n2;++i2){let termPair=terms.itemAt(i2);if(!nearZero(termPair.second)){let symbol=this._getVarSymbol(termPair.first),basicPair=this._rowMap.find(symbol);basicPair!==void 0?row.insertRow(basicPair.second,termPair.second):row.insertSymbol(symbol,termPair.second)}}let objective=this._objective,strength=constraint.strength(),tag={marker:INVALID_SYMBOL,other:INVALID_SYMBOL};switch(constraint.op()){case Operator.Le:case Operator.Ge:{let coeff=constraint.op()===Operator.Le?1:-1,slack=this._makeSymbol(SymbolType.Slack);if(tag.marker=slack,row.insertSymbol(slack,coeff),strength<Strength.required){let error=this._makeSymbol(SymbolType.Error);tag.other=error,row.insertSymbol(error,-coeff),objective.insertSymbol(error,strength)}break}case Operator.Eq:{if(strength<Strength.required){let errplus=this._makeSymbol(SymbolType.Error),errminus=this._makeSymbol(SymbolType.Error);tag.marker=errplus,tag.other=errminus,row.insertSymbol(errplus,-1),row.insertSymbol(errminus,1),objective.insertSymbol(errplus,strength),objective.insertSymbol(errminus,strength)}else{let dummy=this._makeSymbol(SymbolType.Dummy);tag.marker=dummy,row.insertSymbol(dummy)}break}}return row.constant()<0&&row.reverseSign(),{row,tag}}_chooseSubject(row,tag){let cells=row.cells();for(let i2=0,n2=cells.size();i2<n2;++i2){let pair=cells.itemAt(i2);if(pair.first.type()===SymbolType.External)return pair.first}let type=tag.marker.type();return(type===SymbolType.Slack||type===SymbolType.Error)&&row.coefficientFor(tag.marker)<0?tag.marker:(type=tag.other.type(),(type===SymbolType.Slack||type===SymbolType.Error)&&row.coefficientFor(tag.other)<0?tag.other:INVALID_SYMBOL)}_addWithArtificialVariable(row){let art=this._makeSymbol(SymbolType.Slack);this._rowMap.insert(art,row.copy()),this._artificial=row.copy(),this._optimize(this._artificial);let success=nearZero(this._artificial.constant());this._artificial=null;let pair=this._rowMap.erase(art);if(pair!==void 0){let basicRow=pair.second;if(basicRow.isConstant())return success;let entering=this._anyPivotableSymbol(basicRow);if(entering.type()===SymbolType.Invalid)return!1;basicRow.solveForEx(art,entering),this._substitute(entering,basicRow),this._rowMap.insert(entering,basicRow)}let rows=this._rowMap;for(let i2=0,n2=rows.size();i2<n2;++i2)rows.itemAt(i2).second.removeSymbol(art);return this._objective.removeSymbol(art),success}_substitute(symbol,row){let rows=this._rowMap;for(let i2=0,n2=rows.size();i2<n2;++i2){let pair=rows.itemAt(i2);pair.second.substitute(symbol,row),pair.second.constant()<0&&pair.first.type()!==SymbolType.External&&this._infeasibleRows.push(pair.first)}this._objective.substitute(symbol,row),this._artificial&&this._artificial.substitute(symbol,row)}_optimize(objective){let iterations=0;for(;iterations<this.maxIterations;){let entering=this._getEnteringSymbol(objective);if(entering.type()===SymbolType.Invalid)return;let leaving=this._getLeavingSymbol(entering);if(leaving.type()===SymbolType.Invalid)throw new Error("the objective is unbounded");let row=this._rowMap.erase(leaving).second;row.solveForEx(leaving,entering),this._substitute(entering,row),this._rowMap.insert(entering,row),iterations++}throw new Error("solver iterations exceeded")}_dualOptimize(){let rows=this._rowMap,infeasible=this._infeasibleRows;for(;infeasible.length!==0;){let leaving=infeasible.pop(),pair=rows.find(leaving);if(pair!==void 0&&pair.second.constant()<0){let entering=this._getDualEnteringSymbol(pair.second);if(entering.type()===SymbolType.Invalid)throw new Error("dual optimize failed");let row=pair.second;rows.erase(leaving),row.solveForEx(leaving,entering),this._substitute(entering,row),rows.insert(entering,row)}}}_getEnteringSymbol(objective){let cells=objective.cells();for(let i2=0,n2=cells.size();i2<n2;++i2){let pair=cells.itemAt(i2),symbol=pair.first;if(pair.second<0&&symbol.type()!==SymbolType.Dummy)return symbol}return INVALID_SYMBOL}_getDualEnteringSymbol(row){let ratio=Number.MAX_VALUE,entering=INVALID_SYMBOL,cells=row.cells();for(let i2=0,n2=cells.size();i2<n2;++i2){let pair=cells.itemAt(i2),symbol=pair.first,c2=pair.second;if(c2>0&&symbol.type()!==SymbolType.Dummy){let r2=this._objective.coefficientFor(symbol)/c2;r2<ratio&&(ratio=r2,entering=symbol)}}return entering}_getLeavingSymbol(entering){let ratio=Number.MAX_VALUE,found=INVALID_SYMBOL,rows=this._rowMap;for(let i2=0,n2=rows.size();i2<n2;++i2){let pair=rows.itemAt(i2),symbol=pair.first;if(symbol.type()!==SymbolType.External){let row=pair.second,temp=row.coefficientFor(entering);if(temp<0){let temp_ratio=-row.constant()/temp;temp_ratio<ratio&&(ratio=temp_ratio,found=symbol)}}}return found}_getMarkerLeavingSymbol(marker){let dmax=Number.MAX_VALUE,r1=dmax,r2=dmax,invalid=INVALID_SYMBOL,first=invalid,second=invalid,third=invalid,rows=this._rowMap;for(let i2=0,n2=rows.size();i2<n2;++i2){let pair=rows.itemAt(i2),row=pair.second,c2=row.coefficientFor(marker);if(c2===0)continue;let symbol=pair.first;if(symbol.type()===SymbolType.External)third=symbol;else if(c2<0){let r3=-row.constant()/c2;r3<r1&&(r1=r3,first=symbol)}else{let r3=row.constant()/c2;r3<r2&&(r2=r3,second=symbol)}}return first!==invalid?first:second!==invalid?second:third}_removeConstraintEffects(cn,tag){tag.marker.type()===SymbolType.Error&&this._removeMarkerEffects(tag.marker,cn.strength()),tag.other.type()===SymbolType.Error&&this._removeMarkerEffects(tag.other,cn.strength())}_removeMarkerEffects(marker,strength){let pair=this._rowMap.find(marker);pair!==void 0?this._objective.insertRow(pair.second,-strength):this._objective.insertSymbol(marker,-strength)}_anyPivotableSymbol(row){let cells=row.cells();for(let i2=0,n2=cells.size();i2<n2;++i2){let pair=cells.itemAt(i2),type=pair.first.type();if(type===SymbolType.Slack||type===SymbolType.Error)return pair.first}return INVALID_SYMBOL}_makeSymbol(type){return new Symbol$1(type,this._idTick++)}_cnMap=createCnMap();_rowMap=createRowMap();_varMap=createVarMap();_editMap=createEditMap();_infeasibleRows=[];_objective=new Row;_artificial=null;_idTick=0}function nearZero(value){let eps=1e-8;return value<0?-value<eps:value<eps}function createCnMap(){return createMap()}function createRowMap(){return createMap()}function createVarMap(){return createMap()}function createEditMap(){return createMap()}var SymbolType;(function(SymbolType2){SymbolType2[SymbolType2.Invalid=0]="Invalid",SymbolType2[SymbolType2.External=1]="External",SymbolType2[SymbolType2.Slack=2]="Slack",SymbolType2[SymbolType2.Error=3]="Error",SymbolType2[SymbolType2.Dummy=4]="Dummy"})(SymbolType||(SymbolType={}));let Symbol$1=class{constructor(type,id2){this._id=id2,this._type=type}id(){return this._id}type(){return this._type}_id;_type},INVALID_SYMBOL=new Symbol$1(SymbolType.Invalid,-1);class Row{constructor(constant2=0){this._constant=constant2}cells(){return this._cellMap}constant(){return this._constant}isConstant(){return this._cellMap.empty()}allDummies(){let cells=this._cellMap;for(let i2=0,n2=cells.size();i2<n2;++i2)if(cells.itemAt(i2).first.type()!==SymbolType.Dummy)return!1;return!0}copy(){let theCopy=new Row(this._constant);return theCopy._cellMap=this._cellMap.copy(),theCopy}add(value){return this._constant+=value}insertSymbol(symbol,coefficient=1){let pair=this._cellMap.setDefault(symbol,()=>0);nearZero(pair.second+=coefficient)&&this._cellMap.erase(symbol)}insertRow(other,coefficient=1){this._constant+=other._constant*coefficient;let cells=other._cellMap;for(let i2=0,n2=cells.size();i2<n2;++i2){let pair=cells.itemAt(i2);this.insertSymbol(pair.first,pair.second*coefficient)}}removeSymbol(symbol){this._cellMap.erase(symbol)}reverseSign(){this._constant=-this._constant;let cells=this._cellMap;for(let i2=0,n2=cells.size();i2<n2;++i2){let pair=cells.itemAt(i2);pair.second=-pair.second}}solveFor(symbol){let cells=this._cellMap,coeff=-1/cells.erase(symbol).second;this._constant*=coeff;for(let i2=0,n2=cells.size();i2<n2;++i2)cells.itemAt(i2).second*=coeff}solveForEx(lhs,rhs){this.insertSymbol(lhs,-1),this.solveFor(rhs)}coefficientFor(symbol){let pair=this._cellMap.find(symbol);return pair!==void 0?pair.second:0}substitute(symbol,row){let pair=this._cellMap.erase(symbol);pair!==void 0&&this.insertRow(row,pair.second)}_cellMap=createMap();_constant}class Rect{id;minX=new Variable;minY=new Variable;maxX=new Variable;maxY=new Variable;get x(){return this.minX}get y(){return this.minY}get positionAbsolute(){return{x:this.x.value(),y:this.y.value()}}get dimensions(){return{width:this.maxX.value()-this.minX.value(),height:this.maxY.value()-this.minY.value()}}get position(){const positionAbsolute=this.positionAbsolute;if(!this.parent)return positionAbsolute;const parentPosition=this.parent.positionAbsolute;return{x:positionAbsolute.x-parentPosition.x,y:positionAbsolute.y-parentPosition.y}}}class Compound extends Rect{constructor(solver,xynode,parent=null){super(),this.solver=solver,this.parent=parent,this.id=xynode.id,solver.createConstraint(this.maxX,Operator.Ge,this.minX),solver.createConstraint(this.maxY,Operator.Ge,this.minY),parent&&parent.addChild(this)}children=[];addChild(rect){this.children.push(rect);const leftPadding=new Expression(rect.minX,[-1,this.minX]),{weak}=Strength;this.solver.createConstraint(leftPadding,Operator.Ge,40),this.solver.createConstraint(leftPadding,Operator.Eq,40,weak);const topPadding=new Expression(rect.minY,[-1,this.minY]);this.solver.createConstraint(topPadding,Operator.Ge,60),this.solver.createConstraint(topPadding,Operator.Eq,60,weak);const rightPadding=new Expression(this.maxX,[-1,rect.maxX]);this.solver.createConstraint(rightPadding,Operator.Ge,40),this.solver.createConstraint(rightPadding,Operator.Eq,40,weak);const bottomPadding=new Expression(this.maxY,[-1,rect.maxY]);this.solver.createConstraint(bottomPadding,Operator.Ge,40),this.solver.createConstraint(bottomPadding,Operator.Eq,40,weak)}}class Leaf extends Rect{constructor(solver,xynode,parent=null,isEditing=!1){super(),this.parent=parent,this.isEditing=isEditing,this.id=xynode.id;const x2=Math.ceil(xynode.internals.positionAbsolute.x),y2=Math.ceil(xynode.internals.positionAbsolute.y),{width,height}=getNodeDimensions(xynode);if(this.maxX=new Expression(this.minX,Math.ceil(width)),this.maxY=new Expression(this.minY,Math.ceil(height)),isEditing){const superStrong=Strength.create(100,0,0);solver.addEditVariable(this.minX,superStrong),solver.addEditVariable(this.minY,superStrong),solver.suggestValue(this.minX,x2),solver.suggestValue(this.minY,y2)}else{const halfMedium=Strength.create(0,1,0,.5);solver.createConstraint(this.minX,Operator.Eq,x2,halfMedium),solver.createConstraint(this.minY,Operator.Eq,y2,halfMedium)}parent&&parent.addChild(this)}}function createLayoutConstraints(xyflow,xyflowApi,draggingNodeId){const{parentLookup,nodeLookup}=xyflowApi.getState(),solver=new Solver,rects=new Map,traverse=new Array;for(const[,xynode]of nodeLookup)e$2(xynode.parentId)&&traverse.push({xynode,parent:null});for(;traverse.length>0;){const{xynode,parent}=traverse.shift(),isDragging=xynode.dragging===!0||xynode.id===draggingNodeId,shouldTraverse=!isDragging&&xynode.type==="compound"&&isAncestor(xynode.id,draggingNodeId),rect=shouldTraverse?new Compound(solver,xynode,parent):new Leaf(solver,xynode,parent,isDragging);rects.set(xynode.id,rect),shouldTraverse&&parentLookup.get(xynode.id)?.forEach(child=>{traverse.push({xynode:child,parent:rect})})}solver.updateVariables(),solver.maxIterations=1e3;function updateXYFlowNodes(){solver.updateVariables(),xyflow.setNodes(nodes=>nodes.map(n2=>{if(n2.id===draggingNodeId||n2.dragging===!0)return n2;const rect=rects.get(n2.id);if(!rect)return n2;const dimensions=rect.dimensions,newXY=rect.position;return newXY.x!==n2.position.x||newXY.y!==n2.position.y?{...n2,position:rect.position,width:dimensions.width,height:dimensions.height,measured:dimensions}:dimensions.width!==n2.width||dimensions.height!==n2.height?{...n2,width:dimensions.width,height:dimensions.height,measured:dimensions}:n2}))}let animationFrameId=null;function onNodeDrag(xynode){const pos=nodeLookup.get(xynode.id).internals.positionAbsolute,rect=nonNullable(rects.get(xynode.id));solver.suggestValue(rect.minX,Math.ceil(pos.x)),solver.suggestValue(rect.minY,Math.ceil(pos.y)),animationFrameId??=requestAnimationFrame(()=>{updateXYFlowNodes(),animationFrameId=null})}return{onNodeDrag,updateXYFlowNodes}}function useLayoutConstraints(){const diagramApi=useDiagramStoreApi(),xyflowApi=useXYStoreApi(),solverRef=useRef$1(),dragStartedAt=useRef$1({x:0,y:0});return useMemo$1(()=>({onNodeDragStart:(event,xynode)=>{dragStartedAt.current={x:event.clientX,y:event.clientY};const{xyflow,cancelSaveManualLayout}=diagramApi.getState();cancelSaveManualLayout(),solverRef.current=createLayoutConstraints(xyflow,xyflowApi,xynode.id)},onNodeDrag:(_event,xynode)=>{invariant(solverRef.current,"solverRef.current should be defined"),solverRef.current?.onNodeDrag(xynode)},onNodeDragStop:(event,_xynode)=>{isSamePoint$1(dragStartedAt.current,{x:event.clientX,y:event.clientY})||diagramApi.getState().triggerSaveManualLayout(),solverRef.current=void 0}}),[xyflowApi,diagramApi])}var defaultAttributes={outline:{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"},filled:{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"currentColor",stroke:"none"}};const createReactComponent=(type,iconName,iconNamePascal,iconNode)=>{const Component2=forwardRef$1(({color:color2="currentColor",size:size2=24,stroke=2,title:title2,className,children:children2,...rest},ref)=>createElement$1("svg",{ref,...defaultAttributes[type],width:size2,height:size2,className:["tabler-icon",`tabler-icon-${iconName}`,className].join(" "),...type==="filled"?{fill:color2}:{strokeWidth:stroke,stroke:color2},...rest},[title2&&createElement$1("title",{key:"svg-title"},title2),...iconNode.map(([tag,attrs])=>createElement$1(tag,attrs)),...Array.isArray(children2)?children2:[children2]]));return Component2.displayName=`${iconNamePascal}`,Component2};var IconAlertTriangle=createReactComponent("outline","alert-triangle","IconAlertTriangle",[["path",{d:"M12 9v4",key:"svg-0"}],["path",{d:"M10.363 3.591l-8.106 13.534a1.914 1.914 0 0 0 1.636 2.871h16.214a1.914 1.914 0 0 0 1.636 -2.87l-8.106 -13.536a1.914 1.914 0 0 0 -3.274 0z",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);var IconArrowLeft=createReactComponent("outline","arrow-left","IconArrowLeft",[["path",{d:"M5 12l14 0",key:"svg-0"}],["path",{d:"M5 12l6 6",key:"svg-1"}],["path",{d:"M5 12l6 -6",key:"svg-2"}]]);var IconBrandReact=createReactComponent("outline","brand-react","IconBrandReact",[["path",{d:"M6.306 8.711c-2.602 .723 -4.306 1.926 -4.306 3.289c0 2.21 4.477 4 10 4c.773 0 1.526 -.035 2.248 -.102",key:"svg-0"}],["path",{d:"M17.692 15.289c2.603 -.722 4.308 -1.926 4.308 -3.289c0 -2.21 -4.477 -4 -10 -4c-.773 0 -1.526 .035 -2.25 .102",key:"svg-1"}],["path",{d:"M6.305 15.287c-.676 2.615 -.485 4.693 .695 5.373c1.913 1.105 5.703 -1.877 8.464 -6.66c.387 -.67 .733 -1.339 1.036 -2",key:"svg-2"}],["path",{d:"M17.694 8.716c.677 -2.616 .487 -4.696 -.694 -5.376c-1.913 -1.105 -5.703 1.877 -8.464 6.66c-.387 .67 -.733 1.34 -1.037 2",key:"svg-3"}],["path",{d:"M12 5.424c-1.925 -1.892 -3.82 -2.766 -5 -2.084c-1.913 1.104 -1.226 5.877 1.536 10.66c.386 .67 .793 1.304 1.212 1.896",key:"svg-4"}],["path",{d:"M12 18.574c1.926 1.893 3.821 2.768 5 2.086c1.913 -1.104 1.226 -5.877 -1.536 -10.66c-.375 -.65 -.78 -1.283 -1.212 -1.897",key:"svg-5"}],["path",{d:"M11.5 12.866a1 1 0 1 0 1 -1.732a1 1 0 0 0 -1 1.732z",key:"svg-6"}]]);var IconCheck=createReactComponent("outline","check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var IconChevronDown=createReactComponent("outline","chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var IconChevronLeft=createReactComponent("outline","chevron-left","IconChevronLeft",[["path",{d:"M15 6l-6 6l6 6",key:"svg-0"}]]);var IconChevronRight=createReactComponent("outline","chevron-right","IconChevronRight",[["path",{d:"M9 6l6 6l-6 6",key:"svg-0"}]]);var IconCopy=createReactComponent("outline","copy","IconCopy",[["path",{d:"M7 7m0 2.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667z",key:"svg-0"}],["path",{d:"M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1",key:"svg-1"}]]);var IconExternalLink=createReactComponent("outline","external-link","IconExternalLink",[["path",{d:"M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6",key:"svg-0"}],["path",{d:"M11 13l9 -9",key:"svg-1"}],["path",{d:"M15 4h5v5",key:"svg-2"}]]);var IconFile=createReactComponent("outline","file","IconFile",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}]]);var IconFolderOpen=createReactComponent("outline","folder-open","IconFolderOpen",[["path",{d:"M5 19l2.757 -7.351a1 1 0 0 1 .936 -.649h12.307a1 1 0 0 1 .986 1.164l-.996 5.211a2 2 0 0 1 -1.964 1.625h-14.026a2 2 0 0 1 -2 -2v-11a2 2 0 0 1 2 -2h4l3 3h7a2 2 0 0 1 2 2v2",key:"svg-0"}]]);var IconLayoutDashboard=createReactComponent("outline","layout-dashboard","IconLayoutDashboard",[["path",{d:"M5 4h4a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-6a1 1 0 0 1 1 -1",key:"svg-0"}],["path",{d:"M5 16h4a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1",key:"svg-1"}],["path",{d:"M15 12h4a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-6a1 1 0 0 1 1 -1",key:"svg-2"}],["path",{d:"M15 4h4a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1",key:"svg-3"}]]);var IconLink=createReactComponent("outline","link","IconLink",[["path",{d:"M9 15l6 -6",key:"svg-0"}],["path",{d:"M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464",key:"svg-1"}],["path",{d:"M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463",key:"svg-2"}]]);var IconMenu=createReactComponent("outline","menu","IconMenu",[["path",{d:"M4 8l16 0",key:"svg-0"}],["path",{d:"M4 16l16 0",key:"svg-1"}]]);var IconMoonStars=createReactComponent("outline","moon-stars","IconMoonStars",[["path",{d:"M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z",key:"svg-0"}],["path",{d:"M17 4a2 2 0 0 0 2 2a2 2 0 0 0 -2 2a2 2 0 0 0 -2 -2a2 2 0 0 0 2 -2",key:"svg-1"}],["path",{d:"M19 11h2m-1 -1v2",key:"svg-2"}]]);var IconShare=createReactComponent("outline","share","IconShare",[["path",{d:"M6 12m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0",key:"svg-0"}],["path",{d:"M18 6m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0",key:"svg-1"}],["path",{d:"M18 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0",key:"svg-2"}],["path",{d:"M8.7 10.7l6.6 -3.4",key:"svg-3"}],["path",{d:"M8.7 13.3l6.6 3.4",key:"svg-4"}]]);var IconSun=createReactComponent("outline","sun","IconSun",[["path",{d:"M12 12m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0",key:"svg-0"}],["path",{d:"M3 12h1m8 -9v1m8 8h1m-9 8v1m-6.4 -15.4l.7 .7m12.1 -.7l-.7 .7m0 11.4l.7 .7m-12.1 -.7l-.7 .7",key:"svg-1"}]]);var IconZoomScan=createReactComponent("outline","zoom-scan","IconZoomScan",[["path",{d:"M4 8v-2a2 2 0 0 1 2 -2h2",key:"svg-0"}],["path",{d:"M4 16v2a2 2 0 0 0 2 2h2",key:"svg-1"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v2",key:"svg-2"}],["path",{d:"M16 20h2a2 2 0 0 0 2 -2v-2",key:"svg-3"}],["path",{d:"M8 11a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-4"}],["path",{d:"M16 16l-2.5 -2.5",key:"svg-5"}]]);var IconFolderFilled=createReactComponent("filled","folder-filled","IconFolderFilled",[["path",{d:"M9 3a1 1 0 0 1 .608 .206l.1 .087l2.706 2.707h6.586a3 3 0 0 1 2.995 2.824l.005 .176v8a3 3 0 0 1 -2.824 2.995l-.176 .005h-14a3 3 0 0 1 -2.995 -2.824l-.005 -.176v-11a3 3 0 0 1 2.824 -2.995l.176 -.005h4z",key:"svg-0"}]]);var IconPlayerPlayFilled=createReactComponent("filled","player-play-filled","IconPlayerPlayFilled",[["path",{d:"M6 4v16a1 1 0 0 0 1.524 .852l13 -8a1 1 0 0 0 0 -1.704l-13 -8a1 1 0 0 0 -1.524 .852z",key:"svg-0"}]]);var IconPlayerSkipBackFilled=createReactComponent("filled","player-skip-back-filled","IconPlayerSkipBackFilled",[["path",{d:"M19.496 4.136l-12 7a1 1 0 0 0 0 1.728l12 7a1 1 0 0 0 1.504 -.864v-14a1 1 0 0 0 -1.504 -.864z",key:"svg-0"}],["path",{d:"M4 4a1 1 0 0 1 .993 .883l.007 .117v14a1 1 0 0 1 -1.993 .117l-.007 -.117v-14a1 1 0 0 1 1 -1z",key:"svg-1"}]]);var IconPlayerSkipForwardFilled=createReactComponent("filled","player-skip-forward-filled","IconPlayerSkipForwardFilled",[["path",{d:"M3 5v14a1 1 0 0 0 1.504 .864l12 -7a1 1 0 0 0 0 -1.728l-12 -7a1 1 0 0 0 -1.504 .864z",key:"svg-0"}],["path",{d:"M20 4a1 1 0 0 1 .993 .883l.007 .117v14a1 1 0 0 1 -1.993 .117l-.007 -.117v-14a1 1 0 0 1 1 -1z",key:"svg-1"}]]);var IconPlayerStopFilled=createReactComponent("filled","player-stop-filled","IconPlayerStopFilled",[["path",{d:"M17 4h-10a3 3 0 0 0 -3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3 -3v-10a3 3 0 0 0 -3 -3z",key:"svg-0"}]]);function NavigateToBtn({xynodeId,className}){const diagramApi=useDiagramStoreApi();return jsx(ActionIcon,{className:clsx("nodrag nopan",className),radius:"md",onPointerDownCapture:e2=>e2.stopPropagation(),onClick:event=>{event.stopPropagation(),diagramApi.getState().triggerOnNavigateTo(xynodeId,event)},onDoubleClick:event=>event.stopPropagation(),children:jsx(IconZoomScan,{style:{width:"75%",height:"75%"}})})}var container$3="c3cfh00",nodeHandlerInCenter="c3cfh01",dimmed$1="c3cfh02",varOpacity="var(--c3cfh03)",varBorderTransparency="var(--c3cfh04)",compoundBody="c3cfh05",transparent="c3cfh07",title$2="c3cfh08",titleWithNavigation="c3cfh09",indicator$1="c3cfh0d",navigateBtn="c3cfh0f";const isEqualProps$1=(prev,next)=>prev.id===next.id&&deepEqual(prev.data.element,next.data.element),CompoundNodeMemo=memo$1(function({id:id2,data:{element}}){const{color:color2,style:style2,depth=1,...compound}=element,opacity=u((style2.opacity??100)/100,{min:0,max:1}),borderTransparency=u(50-opacity*50,{min:0,max:50}),{isHovered,isDimmed,hasOnNavigateTo}=useDiagramState(s2=>({isHovered:s2.hoveredNodeId===id2,isDimmed:s2.dimmed.has(id2),hasOnNavigateTo:!!s2.onNavigateTo})),isnavigable=!!compound.navigateTo&&hasOnNavigateTo;return jsxs(Fragment,{children:[jsx(Handle,{type:"target",position:Position.Top,className:nodeHandlerInCenter}),jsxs(Box,{className:clsx(container$3,"likec4-compound-node",opacity<1&&"likec4-compound-transparent",isDimmed&&dimmed$1),mod:{"compound-depth":depth,"likec4-color":color2,hovered:isHovered},children:[jsx("svg",{className:indicator$1,children:jsx("rect",{x:0,y:0,width:"100%",height:"100%",rx:6})}),jsx("div",{className:clsx(compoundBody,opacity<1&&transparent,"likec4-compound"),style:opacity<1?{...assignInlineVars({[varBorderTransparency]:`${borderTransparency}%`,[varOpacity]:opacity.toFixed(2)}),borderStyle:style2.border??"dashed"}:void 0,children:jsx(Text$1,{component:"div",className:clsx(title$2,isnavigable&&titleWithNavigation,"likec4-compound-title"),children:compound.title})}),isnavigable&&jsx(NavigateToBtn,{xynodeId:id2,className:navigateBtn})]}),jsx(Handle,{type:"source",position:Position.Top,className:nodeHandlerInCenter})]})},isEqualProps$1);var container$2="_14ylloj1",handleCenter="_14ylloj2",containerAnimated="_14ylloj3",dimmed="_14ylloj4",indicator="_14ylloj7",fillElementFill="_14ylloj8",fillMixStroke="_14ylloja",hasIcon="_14yllojb",title$1="_14ylloje",description$1="_14yllojf",technology="_14yllojg",elementDataContainer="_14yllojh",elementTextData="_14ylloji",elementIcon="_14yllojj",cssShapeSvg="_14yllojm",cssNavigateBtn="_14yllojn",elementLink="_1s87wm0",trigger="_1s87wm1";const selector$2=s2=>{const target=s2.getContainer();return target?{target}:null};function ElementLink({element}){invariant(element.links,"ElementLink: links are required");const id2=useId$3(),portalProps=useDiagramState(selector$2);return jsx("div",{className:elementLink,"data-likec4-linkid":id2,children:jsxs(HoverCard,{position:"bottom-start",shadow:"lg",radius:"sm",classNames:{dropdown:clsx("nodrag","nopan")},transitionProps:{transition:"pop"},...portalProps?{portalProps}:{withinPortal:!1},floatingStrategy:"fixed",openDelay:350,closeDelay:800,offset:{mainAxis:5,crossAxis:-10},children:[jsx(HoverCardTarget,{children:jsxs(UnstyledButton,{className:clsx("nodrag nopan",trigger),autoFocus:!1,children:[jsx(IconLink,{size:12}),jsx("span",{children:"links"})]})}),jsx(HoverCardDropdown,{onPointerDownCapture:e2=>e2.stopPropagation(),onClick:e2=>e2.stopPropagation(),p:"xs",children:jsx(Stack,{gap:"xs",children:element.links.map(link=>jsxs(Group,{wrap:"nowrap",gap:"sm",children:[jsx(Box,{flex:"1",style:{overflow:"clip",maxWidth:u(element.width,{min:200,max:400})},children:jsx(Anchor,{href:link,target:"_blank",fz:"13",truncate:"end",children:link})}),jsx(CopyButton$1,{value:link,children:({copied,copy})=>jsx(Button,{size:"compact-xs",fz:"10",variant:"light",onClick:copy,color:copied?"teal":"gray",children:copied?"copied":"copy"})})]},link))})})]})})}function cylinderSVGPath(diameter,height,tilt=.065){const radius=Math.round(diameter/2),rx=radius,ry=toDomPrecision(tilt*radius),tiltAdjustedHeight=height-2*ry;return{path:` M ${diameter},${ry}
|
|
58
|
+
a ${rx},${ry} 0,0,0 ${-diameter} 0
|
|
59
|
+
l 0,${tiltAdjustedHeight}
|
|
60
|
+
a ${rx},${ry} 0,0,0 ${diameter} 0
|
|
61
|
+
l 0,${-tiltAdjustedHeight}
|
|
62
|
+
z
|
|
63
|
+
`.replace(/\s+/g," ").trim(),ry,rx}}function queueSVGPath(width,height,tilt=.185){const diameter=height,ry=Math.round(diameter/2),rx=toDomPrecision(diameter/2*tilt),tiltAdjustedWidth=width-2*rx;return{path:`
|
|
64
|
+
M ${rx},0
|
|
65
|
+
a ${rx},${ry} 0,0,0 0 ${diameter}
|
|
66
|
+
l ${tiltAdjustedWidth},0
|
|
67
|
+
a ${rx},${ry} 0,0,0 0 ${-diameter}
|
|
68
|
+
z`.replace(/\s+/g," ").trim(),ry,rx}}const PersonIcon={width:115,height:120,path:"M57.9197 0C10.9124 0 33.5766 54.75 33.5766 54.75C38.6131 62.25 45.3285 60.75 45.3285 66C45.3285 70.5 39.4526 72 33.5766 72.75C24.3431 72.75 15.9489 71.25 7.55474 84.75C2.51825 93 0 120 0 120H115C115 120 112.482 93 108.285 84.75C99.8905 70.5 91.4963 72.75 82.2628 72C76.3869 71.25 70.5109 69.75 70.5109 65.25C70.5109 60.75 77.2263 62.25 82.2628 54C82.2628 54.75 104.927 0 57.9197 0V0Z"};function ElementShapeSvg({shape,w:w2,h:h2}){switch(shape){case"mobile":return jsxs(Fragment,{children:[jsx("rect",{width:w2,height:h2,rx:6,className:fillMixStroke,strokeWidth:0}),jsxs("g",{className:fillElementFill,strokeWidth:0,children:[jsx("circle",{cx:17,cy:h2/2,r:12}),jsx("rect",{x:33,y:12,width:w2-44,height:h2-24,rx:5})]})]});case"browser":return jsxs(Fragment,{children:[jsx("rect",{width:w2,height:h2,rx:6,className:fillMixStroke,strokeWidth:0}),jsxs("g",{className:fillElementFill,strokeWidth:0,children:[jsx("circle",{cx:16,cy:17,r:7}),jsx("circle",{cx:36,cy:17,r:7}),jsx("circle",{cx:56,cy:17,r:7}),jsx("rect",{x:70,y:8,width:w2-80,height:17,rx:4}),jsx("rect",{x:10,y:32,width:w2-20,height:h2-42,rx:4})]})]});case"person":return jsxs(Fragment,{children:[jsx("rect",{width:w2,height:h2,rx:6,strokeWidth:0}),jsx("svg",{x:w2-PersonIcon.width-6,y:h2-PersonIcon.height,width:PersonIcon.width,height:PersonIcon.height,viewBox:`0 0 ${PersonIcon.width} ${PersonIcon.height}`,className:fillMixStroke,children:jsx("path",{strokeWidth:0,d:PersonIcon.path})})]});case"queue":{const{path,rx,ry}=queueSVGPath(w2,h2);return jsxs(Fragment,{children:[jsx("path",{d:path,strokeWidth:2}),jsx("ellipse",{cx:rx,cy:ry,ry:ry-.75,rx,className:fillMixStroke,strokeWidth:2})]})}case"storage":case"cylinder":{const{path,rx,ry}=cylinderSVGPath(w2,h2);return jsxs(Fragment,{children:[jsx("path",{d:path,strokeWidth:2}),jsx("ellipse",{cx:rx,cy:ry,ry,rx:rx-.75,className:fillMixStroke,strokeWidth:2})]})}case"rectangle":return jsx("rect",{width:w2,height:h2,rx:6,strokeWidth:0});default:return nonexhaustive(shape)}}function SelectedIndicator({shape,w:w2,h:h2}){switch(shape){case"queue":return jsx("path",{d:queueSVGPath(w2,h2).path});case"storage":case"cylinder":return jsx("path",{d:cylinderSVGPath(w2,h2).path});default:return jsx("rect",{x:-1,y:-1,width:w2+2,height:h2+2,rx:6})}}const Text=Text$1.withProps({component:"div"}),selectedScale=1.015,variants={idle:(_,{scale:scale2})=>({scale:1,transition:{delay:e$1(scale2)&&scale2>selectedScale?.09:0}}),selected:(_,{scale:scale2})=>({scale:selectedScale,transition:{delay:e$1(scale2)&&scale2>selectedScale?.09:0}}),hovered:{scale:1.06},tap:{scale:.975}},isEqualProps=(prev,next)=>prev.id===next.id&&deepEqual(prev.selected??!1,next.selected??!1)&&deepEqual(prev.dragging??!1,next.dragging??!1)&&deepEqual(prev.draggable??!1,next.draggable??!1)&&deepEqual(prev.width??0,next.width??0)&&deepEqual(prev.height??0,next.height??0)&&deepEqual(prev.data.element,next.data.element),ElementNodeMemo=memo$1(function({id:id2,data:{element},dragging,selected:selected2=!1,width,height}){const{isHovered,isDimmed,hasOnNavigateTo,isHovercards,isInteractive}=useDiagramState(s2=>({isHovered:s2.hoveredNodeId===id2,isDimmed:s2.dimmed.has(id2),isInteractive:s2.nodesDraggable||s2.nodesSelectable||!!s2.onNavigateTo,isHovercards:s2.showElementLinks,hasOnNavigateTo:!!s2.onNavigateTo})),isNavigable=hasOnNavigateTo&&!!element.navigateTo,w2=toDomPrecision(width??element.width),h2=toDomPrecision(height??element.height);let animate="idle";switch(!0){case(dragging&&selected2):animate="selected";break;case dragging:animate="idle";break;case(isInteractive&&isHovered):animate="hovered";break;case selected2:animate="selected";break}return jsxs(Fragment,{children:[jsx(Handle,{type:"target",position:Position.Top,className:handleCenter}),jsxs(m.div,{id:id2,className:clsx([container$2,isDimmed&&dimmed,animate!=="idle"&&containerAnimated,"likec4-element-node"]),"data-hovered":!dragging&&isHovered,"data-likec4-color":element.color,"data-likec4-shape":element.shape,variants,initial:!1,animate,...isInteractive&&{whileTap:dragging?animate:"tap"},children:[jsxs("svg",{className:clsx(cssShapeSvg),viewBox:`0 0 ${w2} ${h2}`,width:w2,height:h2,children:[jsx("g",{className:indicator,children:jsx(SelectedIndicator,{shape:element.shape,w:w2,h:h2})}),jsx(ElementShapeSvg,{shape:element.shape,w:w2,h:h2})]}),jsxs("div",{className:clsx(elementDataContainer,n$4(element.icon)&&hasIcon,"likec4-element"),children:[n$4(element.icon)&&jsx(ElementIcon,{node:element}),jsxs("div",{className:clsx(elementTextData,"likec4-element-main-props"),children:[jsx(Text,{className:clsx(title$1,"likec4-element-title"),children:element.title}),element.technology&&jsx(Text,{className:clsx(technology,"likec4-element-technology"),children:element.technology}),element.description&&jsx(Text,{className:clsx(description$1,"likec4-element-description"),children:element.description})]})]}),isHovercards&&element.links&&jsx(ElementLink,{element}),isNavigable&&jsx(NavigateToBtn,{xynodeId:id2,className:cssNavigateBtn})]}),jsx(Handle,{type:"source",position:Position.Top,className:handleCenter})]})},isEqualProps),ElementIcon=({node})=>{const RenderIcon2=useDiagramState(s2=>s2.renderIcon);if(!node.icon)return null;if(node.icon.startsWith("http://")||node.icon.startsWith("https://"))return jsx("div",{className:clsx(elementIcon,"likec4-element-icon"),children:jsx("img",{src:node.icon,alt:node.title})});const icon=RenderIcon2?jsx(RenderIcon2,{node}):null;return icon?jsx("div",{className:clsx(elementIcon,"likec4-element-icon"),children:icon}):null};function useXYFlowEvents(){const diagramApi=useDiagramStoreApi(),lastClickTimestamp=useRef$1(),dblclickTimeout=useRef$1(),hoveredNodeFromOnEdgeEnterRef=useRef$1("");return useMemo$1(()=>{const dbclickLock=()=>dblclickTimeout.current!==void 0?!0:(dblclickTimeout.current=window.setTimeout(()=>{dblclickTimeout.current=void 0},250),!1),lastClickWasRecent=(ms=1500)=>lastClickTimestamp.current&&Date.now()-lastClickTimestamp.current<ms;return{onDoubleClick:event=>{const{fitViewEnabled,onCanvasDblClick,resetLastClicked,fitDiagram}=diagramApi.getState();fitViewEnabled&&(fitDiagram(),onCanvasDblClick||event.stopPropagation()),resetLastClicked(),onCanvasDblClick?.(event)},onPaneClick:event=>{if(dbclickLock())return;const{focusedNodeId,activeDynamicViewStep,fitDiagram,onCanvasClick,resetLastClicked}=diagramApi.getState();(focusedNodeId??activeDynamicViewStep)!==null&&(fitDiagram(),onCanvasClick||event.stopPropagation()),resetLastClicked(),onCanvasClick?.(event)},onNodeContextMenu:(event,xynode)=>{diagramApi.getState().setLastClickedNode(xynode.id),diagramApi.getState().onNodeContextMenu?.({element:xynode.data.element,xynode,event})},onPaneContextMenu:event=>{diagramApi.getState().resetLastClicked(),diagramApi.getState().onCanvasContextMenu?.(event)},onEdgeContextMenu:(event,xyedge)=>{diagramApi.getState().setLastClickedEdge(xyedge.id),diagramApi.getState().onEdgeContextMenu?.({edge:xyedge.data.edge,xyedge,event})},onNodeClick:(event,xynode)=>{const{zoomable,fitViewEnabled,focusedNodeId,fitDiagram,focusOnNode,onNodeClick,lastClickedNodeId,setLastClickedNode}=diagramApi.getState();setLastClickedNode(xynode.id);const focusPossible=zoomable&&fitViewEnabled,shallChangeFocus=!!focusedNodeId&&focusedNodeId!==xynode.id,clickedRecently=lastClickedNodeId===xynode.id&&lastClickWasRecent();if(focusPossible){let stopPropagation=!1;switch(!0){case(!focusedNodeId&&clickedRecently):case shallChangeFocus:stopPropagation=!0,focusOnNode(xynode.id);break;case(focusedNodeId===xynode.id&&clickedRecently):stopPropagation=!0,fitDiagram();break}!onNodeClick&&stopPropagation&&event.stopPropagation()}lastClickTimestamp.current=Date.now(),onNodeClick?.({element:xynode.data.element,xynode,event})},onNodeDoubleClick:(event,xynode)=>{const{focusedNodeId,zoomable,fitViewEnabled,fitDiagram,focusOnNode,setLastClickedNode}=diagramApi.getState();setLastClickedNode(xynode.id),lastClickTimestamp.current=Date.now(),(focusedNodeId||zoomable&&fitViewEnabled)&&(focusedNodeId===xynode.id?fitDiagram():focusOnNode(xynode.id),event.stopPropagation())},onEdgeClick:(event,xyedge)=>{diagramApi.getState().setLastClickedEdge(xyedge.id);const{focusedNodeId,focusOnNode,onEdgeClick}=diagramApi.getState();focusedNodeId&&(focusedNodeId===xyedge.source||focusedNodeId===xyedge.target)&&(focusOnNode(focusedNodeId===xyedge.source?xyedge.target:xyedge.source),onEdgeClick||event.stopPropagation()),onEdgeClick?.({edge:xyedge.data.edge,xyedge,event})},onMoveEnd:(event,_viewport)=>{const viewportChanged=!!event;viewportChanged!==diagramApi.getState().viewportChanged&&diagramApi.setState({viewportChanged},!1,`viewport-changed: ${viewportChanged}`)},onNodeMouseEnter:(_event,xynode)=>{hoveredNodeFromOnEdgeEnterRef.current="",diagramApi.getState().setHoveredNode(xynode.id)},onNodeMouseLeave:(_event,xynode)=>{const{hoveredNodeId,setHoveredNode}=diagramApi.getState();hoveredNodeId===xynode.id&&setHoveredNode(null)},onEdgeMouseEnter:(_event,{id:id2,source,target})=>{const{hoveredNodeId,focusedNodeId,setHoveredEdge,setHoveredNode}=diagramApi.getState();if(setHoveredEdge(id2),(focusedNodeId===source||focusedNodeId===target)&&focusedNodeId!==hoveredNodeId){const next=hoveredNodeFromOnEdgeEnterRef.current=source===focusedNodeId?target:source;setHoveredNode(next)}},onEdgeMouseLeave:(_event,xyedge)=>{const{hoveredEdgeId,setHoveredEdge,hoveredNodeId,setHoveredNode}=diagramApi.getState();hoveredEdgeId===xyedge.id&&setHoveredEdge(null),hoveredNodeId===hoveredNodeFromOnEdgeEnterRef.current&&setHoveredNode(null),hoveredNodeFromOnEdgeEnterRef.current=""}}},[diagramApi])}const nodeTypes={element:ElementNodeMemo,compound:CompoundNodeMemo},edgeTypes={relationship:RelationshipEdge},selector$1=s2=>({nodesSelectable:s2.nodesSelectable||s2.focusedNodeId!==null,nodesDraggable:s2.nodesDraggable,fitView:s2.fitViewEnabled,fitViewOptions:{minZoom:MinZoom,maxZoom:1,padding:s2.fitViewPadding,includeHiddenNodes:!0},hasOnNavigateTo:!!s2.onNavigateTo,hasOnNodeClick:!!s2.onNodeClick,hasOnNodeContextMenu:!!s2.onNodeContextMenu,hasOnCanvasContextMenu:!!s2.onCanvasContextMenu,hasOnEdgeContextMenu:!!s2.onEdgeContextMenu,hasOnEdgeClick:!!s2.onEdgeClick,zoomable:s2.zoomable,pannable:s2.pannable});function XYFlow({colorMode="system",className,children:children2,defaultNodes,defaultEdges,style:style2}){const xyflowApi=useXYStoreApi(),diagramApi=useDiagramStoreApi(),{nodesSelectable,nodesDraggable,fitView:fitView2,fitViewOptions,pannable,zoomable,hasOnNodeClick,hasOnNavigateTo,hasOnNodeContextMenu,hasOnCanvasContextMenu,hasOnEdgeContextMenu,hasOnEdgeClick}=useDiagramState(selector$1,deepEqual),layoutConstraints=useLayoutConstraints(),handlers=useXYFlowEvents();return useOnViewportChange({onEnd:({x:x2,y:y2,zoom:zoom2})=>{const rounded={x:Math.round(x2),y:Math.round(y2)};(x2!==rounded.x||y2!==rounded.y)&&xyflowApi.setState({transform:[rounded.x,rounded.y,zoom2]})}}),jsx(index,{className,style:style2,...colorMode&&{colorMode},defaultNodes,defaultEdges,nodeTypes,edgeTypes,zoomOnPinch:zoomable,zoomOnScroll:!pannable&&zoomable,...!zoomable&&{zoomActivationKeyCode:null},maxZoom:zoomable?1.9:1,minZoom:zoomable?MinZoom:1,fitView:fitView2,fitViewOptions,preventScrolling:zoomable||pannable,defaultMarkerColor:"var(--xy-edge-stroke)",noDragClassName:"nodrag",noPanClassName:"nopan",panOnScroll:pannable,panOnDrag:pannable,elementsSelectable:nodesSelectable,nodesFocusable:nodesDraggable||nodesSelectable||hasOnNodeClick||hasOnNavigateTo,edgesFocusable:hasOnEdgeClick,nodesDraggable,...nodesDraggable&&{onNodeDragStart:layoutConstraints.onNodeDragStart,onNodeDrag:layoutConstraints.onNodeDrag,onNodeDragStop:layoutConstraints.onNodeDragStop},zoomOnDoubleClick:!1,elevateNodesOnSelect:!1,selectNodesOnDrag:!1,selectionKeyCode:null,onDoubleClick:handlers.onDoubleClick,onPaneClick:handlers.onPaneClick,onMoveEnd:handlers.onMoveEnd,onNodeMouseEnter:handlers.onNodeMouseEnter,onNodeMouseLeave:handlers.onNodeMouseLeave,onEdgeMouseEnter:handlers.onEdgeMouseEnter,onEdgeMouseLeave:handlers.onEdgeMouseLeave,onNodeClick:handlers.onNodeClick,onNodeDoubleClick:handlers.onNodeDoubleClick,onEdgeClick:handlers.onEdgeClick,onInit:useCallback$1(()=>{diagramApi.setState({initialized:!0},!1,"initialized")},[diagramApi]),...hasOnNodeContextMenu&&{onNodeContextMenu:handlers.onNodeContextMenu},...hasOnEdgeContextMenu&&{onEdgeContextMenu:handlers.onEdgeContextMenu},...hasOnCanvasContextMenu&&{onPaneContextMenu:handlers.onPaneContextMenu},children:children2})}var panel$1="ufby1u0";function BackwardForwardPanel(){const{hasBack,hasForward,ops}=useNavigationHistory();return jsx(Group,{className:clsx("react-flow__panel",panel$1,"likec4-navigation-panel"),gap:"xs",children:jsxs(AnimatePresence,{children:[hasBack&&jsx(m.div,{layout:!0,initial:{opacity:.05,transform:"translateX(-10px)"},animate:{opacity:1,transform:"translateX(0)"},exit:{opacity:.05,transform:"translateX(-10px)"},children:jsx(ActionIcon,{variant:"light",color:"gray",onClick:()=>ops.back(),children:jsx(IconChevronLeft,{})})},"back"),hasForward&&jsx(m.div,{layout:!0,initial:{opacity:.05,transform:"translateX(10px)"},animate:{opacity:1,transform:"translateX(0)"},exit:{opacity:0,transform:"translateX(10px)"},children:jsx(ActionIcon,{variant:"light",color:"gray",onClick:()=>ops.forward(),children:jsx(IconChevronRight,{})})},"forward")]})})}var container$1="_19ci0hj0",card="_19ci0hj1",title="_19ci0hj2",description="_19ci0hj3";const selector=s2=>({id:s2.view.id,title:s2.view.title??"untitled",description:s2.view.description,links:s2.view.links});function DiagramTitlePanel(){const{id:id2,title:title$12,description:description$12,links}=useDiagramState(selector),[isCollapsed,setCollapsed]=useLocalStorage({key:"diagram-title-panel-collapsed",defaultValue:!1}),toggle=()=>setCollapsed(v2=>!v2);return jsx(AnimatePresence,{mode:"wait",children:jsx(m.div,{initial:{opacity:.05,scale:.7},animate:{opacity:1,scale:1},exit:{opacity:.05,scale:.6},className:clsx("react-flow__panel",container$1),style:{transformOrigin:"left center"},children:jsxs(Card,{radius:"sm",className:card,withBorder:!0,p:"md",pb:isCollapsed?"sm":"md",onDoubleClick:e2=>e2.stopPropagation(),children:[jsx(CardSection,{mb:isCollapsed?10:"sm",children:jsx(Button,{fullWidth:!0,size:"xs",h:"sm",py:2,radius:"0",variant:isCollapsed?"light":"subtle",color:"gray",onClick:toggle,children:jsx(IconMenu,{size:11,opacity:.7})})}),jsxs(Group,{justify:"stretch",wrap:"nowrap",mb:isCollapsed?0:"sm",children:[jsx(Text$1,{component:"div",flex:"1",size:isCollapsed?"sm":"lg",fw:500,lh:1.1,className:title,children:title$12}),jsxs(Text$1,{hidden:isCollapsed,component:"div",flex:"0 0 auto",inline:!0,size:"xs",fz:9,fw:500,c:"dimmed",style:{userSelect:"all"},children:[jsxs("span",{style:{userSelect:"none"},children:["id:"," "]}),id2]})]}),!isCollapsed&&jsxs(Fragment,{children:[description$12&&jsx(Spoiler,{maxHeight:42,showLabel:jsx(Button,{color:"gray",variant:"light",fz:"10",size:"compact-xs",children:"show more"}),hideLabel:jsx(Button,{color:"gray",variant:"light",fz:"10",size:"compact-xs",children:"hide"}),children:jsx(Text$1,{component:"div",size:"sm",className:description,children:description$12||"no description"})}),!description$12&&jsx(Text$1,{component:"div",size:"xs",c:"dimmed",children:"no description"}),links&&jsx(Stack,{gap:3,justify:"stretch",align:"stretch",children:links.map(link=>jsxs(Group,{wrap:"nowrap",align:"center",gap:"sm",children:[jsx(Box,{flex:"1",style:{overflow:"hidden"},children:jsx(Anchor,{href:link,target:"_blank",fz:"xs",truncate:"end",display:"inline-block",w:"100%",children:link})}),jsx(CopyButton$1,{value:link,children:({copied,copy})=>jsx(Button,{size:"compact-xs",fz:"10",variant:"light",onClick:copy,color:copied?"teal":"gray",children:copied?"copied":"copy"})})]},link))})]})]})},id2)})}var container="h3ljtj0",buttons="h3ljtj1",btn="h3ljtj3";function DynamicViewWalkthrough(){const isMobile=useXYStore(s2=>s2.width<=750),{nextDynamicStep,stopDynamicView,activeDynamicViewStep,hasNextSteps}=useDiagramState(s2=>({nextDynamicStep:s2.nextDynamicStep,stopDynamicView:s2.stopDynamicView,activeDynamicViewStep:s2.activeDynamicViewStep,hasNextSteps:(s2.activeDynamicViewStep??1)<s2.view.edges.length})),isActive=e$1(activeDynamicViewStep);useHotkeys(isActive?[["ArrowLeft",()=>nextDynamicStep(-1)],["ArrowRight",()=>nextDynamicStep()],["Escape",e2=>{e2.stopImmediatePropagation(),stopDynamicView()},{preventDefault:!0}]]:[["ArrowLeft",()=>nextDynamicStep()],["ArrowRight",()=>nextDynamicStep()]]);const buttonProps={className:btn,size:isMobile?"compact-md":"lg",radius:isMobile?"lg":"xl"},nextStep=(increment=1)=>e2=>{e2.stopPropagation(),nextDynamicStep(increment)};return jsxs(Box,{className:clsx("react-flow__panel",container),onClick:e2=>e2.stopPropagation(),onDoubleClick:e2=>e2.stopPropagation(),children:[e$2(activeDynamicViewStep)&&jsx(Button,{...buttonProps,className:clsx(buttons,btn),rightSection:jsx(IconPlayerPlayFilled,{}),onClick:nextStep(),px:"xl",children:"Start"}),e$1(activeDynamicViewStep)&&jsxs(ButtonGroup,{className:buttons,children:[jsx(Button,{...buttonProps,pl:"lg",disabled:activeDynamicViewStep===1,onClick:nextStep(-1),children:jsx(IconPlayerSkipBackFilled,{})}),jsxs(Button,{...buttonProps,px:hasNextSteps?"md":"xl",onClick:e2=>{e2.stopPropagation(),stopDynamicView()},children:[hasNextSteps&&jsx(IconPlayerStopFilled,{}),!hasNextSteps&&"End"]}),hasNextSteps&&jsx(Button,{...buttonProps,pr:"lg",onClick:nextStep(),children:jsx(IconPlayerSkipForwardFilled,{})})]})]})}const{primary,secondary,muted,...otherColors}=defaultTheme.elements,themedColors=[{key:"primary",value:primary.fill},{key:"secondary",value:secondary.fill},{key:"muted",value:muted.fill}],colors=t$3(otherColors).map(key=>({key,value:defaultTheme.elements[key].fill})),NodeOptions=memo$1(({selectedNodeIds})=>{const diagramApi=useDiagramStoreApi(),nodes=useXYNodesData(selectedNodeIds);if(!i$4(nodes,1))return null;if(nodes.length!==selectedNodeIds.length)throw new Error("NodeOptions: nodes and props.nodes should have the same length");const showShapeOption=nodes.some(node=>node.type==="element"),[firstNode,...rest]=nodes,showOpacityOption=firstNode.type==="compound"&&(rest.length===0||rest.every(node=>node.type==="compound")),triggerChange=style2=>{const targets=nodes.map(node=>node.data.element.id);invariant(i$4(targets,1),"At least one target is required"),diagramApi.getState().triggerChangeElementStyle({op:"change-element-style",style:style2,targets})};return jsxs(Stack,{gap:"xs",children:[jsxs("div",{children:[jsxs(Text$1,{fz:rem(9),fw:"500",c:"dimmed",children:["ELEMENT",rest.length>0?"S":""]}),jsx(Text$1,{size:"xs",c:rest.length>0?"dimmed":"",truncate:!0,children:rest.length===0?firstNode.data.element.title:"[ multiple ]"})]}),showShapeOption&&jsx(ShapeOption,{nodes,onShapeChange:shape=>{triggerChange({shape})}}),jsx(Colors,{nodes,onColorChange:color2=>{triggerChange({color:color2})}}),showOpacityOption&&jsxs("div",{children:[jsx(Divider,{label:"opacity and border",labelPosition:"left"}),jsx(Space,{h:"xs"}),jsx(OpacityOption,{node:firstNode,onOpacityChange:opacity=>{triggerChange({opacity})}}),jsx(Space,{h:"sm"}),jsx(BorderStyleOption,{node:firstNode,onChange:border=>{triggerChange({border})}})]},firstNode.id),jsx(NavigateToOption,{nodes})]})},(prevProps,nextProps)=>shallowEqual(prevProps.selectedNodeIds,nextProps.selectedNodeIds));function Colors({nodes:[firstNode,...nodes],onColorChange}){let selectedColor=firstNode.data.element.color;d$1(nodes,node=>node.data.element.color!==selectedColor?(selectedColor=null,!1):!0);const changeColor=color2=>()=>{selectedColor!==color2&&onColorChange(color2)};return jsx("div",{children:jsxs(TooltipGroup,{openDelay:400,closeDelay:300,children:[jsx(Divider,{label:"color",labelPosition:"left"}),jsx(Flex,{mt:"xs",maw:150,gap:"xs",justify:"flex-start",align:"flex-start",direction:"row",wrap:"wrap",children:themedColors.map(({key,value})=>jsx(Tooltip,{label:key,fz:"xs",color:"dark",offset:2,transitionProps:{duration:140,transition:"slide-up"},children:jsx(ColorSwatch,{color:value,size:20,withShadow:!0,onClick:changeColor(key),style:{color:"#fff",cursor:"pointer"},children:selectedColor===key&&jsx(CheckIcon,{style:{width:rem(12),height:rem(12)}})})},key))}),jsx(Flex,{mt:"sm",maw:150,gap:"xs",justify:"flex-start",align:"flex-start",direction:"row",wrap:"wrap",children:colors.map(({key,value})=>jsx(Tooltip,{label:key,fz:"xs",color:"dark",offset:2,transitionProps:{duration:140,transition:"slide-up"},children:jsx(ColorSwatch,{color:value,size:20,onClick:changeColor(key),style:{color:"#fff",cursor:"pointer"},children:selectedColor===key&&jsx(CheckIcon,{style:{width:rem(12),height:rem(12)}})})},key))})]})})}function ShapeOption({nodes:[firstNode,...nodes],onShapeChange}){let selectedShape=firstNode.data.element.shape;return d$1(nodes,node=>node.data.element.shape!==selectedShape?(selectedShape=null,!1):!0),jsxs("div",{children:[jsx(Divider,{label:"shape",labelPosition:"left"}),jsx(Select,{mt:"xs",size:"xs",variant:"filled",value:selectedShape,placeholder:"[ multiple ]",data:ElementShapes,allowDeselect:!1,checkIconPosition:"right",onChange:value=>{!value||value===selectedShape||onShapeChange(value)}})]})}function NavigateToOption({nodes:[node,...nodes]}){const isMultiple=nodes.length>=1;return jsxs("div",{children:[jsx(Divider,{label:"navigate to",labelPosition:"left"}),isMultiple&&jsx(Text$1,{size:"xs",c:"dimmed",children:"[ multiple ]"}),!isMultiple&&jsxs(Fragment,{children:[jsx(Space,{h:"xs"}),jsx(Select,{size:"xs",variant:"filled",value:node.data.element.navigateTo??null,placeholder:"select",data:node.data.element.navigateTo?[{value:node.data.element.navigateTo,label:node.data.element.navigateTo}]:[],allowDeselect:!0,checkIconPosition:"right"})]})]})}function OpacityOption({node,onOpacityChange}){let selectedOpacity=node.data.element.style.opacity??100;const[value,setValue]=useState$1(selectedOpacity);return useUpdateEffect(()=>{setValue(selectedOpacity)},[selectedOpacity]),jsx(Slider,{size:"sm",color:"dark",value,onChange:setValue,onChangeEnd:onOpacityChange})}function BorderStyleOption({node,onChange}){let selecteBorderStyle=node.data.element.style.border??"dashed";const[value,setValue]=useState$1(selecteBorderStyle);return useUpdateEffect(()=>{setValue(selecteBorderStyle)},[selecteBorderStyle]),jsx(Box,{children:jsx(SegmentedControl,{size:"xs",fullWidth:!0,withItemsBorders:!1,value,onChange:v2=>{setValue(v2),onChange(v2)},data:[{label:"Solid",value:"solid"},{label:"Dashed",value:"dashed"},{label:"Dotted",value:"dotted"},{label:"None",value:"none"}]})})}var panel="_12rmdgk0";function OptionsPanel(){const{isFocused,viewId}=useDiagramState(s2=>({viewId:s2.view.id,isFocused:s2.focusedNodeId!==null||s2.activeDynamicViewStep!==null})),[selected2,setSelected]=useState$1({nodes:[],edges:[]});useOnSelectionChange({onChange:({nodes:nodes2,edges})=>{const newSelected={nodes:nodes2.map(n2=>n2.id).sort(),edges:edges.map(e2=>e2.id).sort()};deepEqual(selected2,newSelected)||setSelected(newSelected)}});const{nodes}=selected2,hasAnySelection=!isFocused&&nodes.length>0;return jsx(AnimatePresence,{mode:"wait",children:hasAnySelection&&jsx(m.div,{initial:{opacity:0,scale:.85},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.85},transition:{duration:.14},className:clsx("react-flow__panel",panel),style:{transformOrigin:"center right",maxWidth:"320px"},children:jsx(Card,{shadow:"md",children:nodes.length>0&&jsx(NodeOptions,{selectedNodeIds:nodes})})},viewId)})}function literalToEnum(value){switch(value){case"dots":return BackgroundVariant.Dots;case"lines":return BackgroundVariant.Lines;case"cross":return BackgroundVariant.Cross;default:nonexhaustive(value)}}function XYFlowBackground({background}){if(typeof background=="string")return jsx(Background,{variant:literalToEnum(background)});const{variant,...rest}=background;return jsx(Background,{variant:literalToEnum(variant),...rest})}const XYFlowInner=memo$1(function({children:children2,background,controls,showDiagramTitle,showNavigationButtons,enableDynamicViewWalkthrough}){const{isDynamicView,isDynamicViewActive,readonly}=useDiagramState(s2=>({isDynamicView:s2.isDynamicView(),readonly:s2.readonly,isDynamicViewActive:n$2(s2.activeDynamicViewStep)}));return jsxs(Fragment,{children:[background!=="transparent"&&background!=="solid"&&jsx(XYFlowBackground,{background}),controls&&jsx(Controls,{position:"bottom-right"}),readonly===!1&&jsx(OptionsPanel,{}),!isDynamicViewActive&&showDiagramTitle===!0&&jsx(DiagramTitlePanel,{}),isDynamicView&&enableDynamicViewWalkthrough&&jsx(DynamicViewWalkthrough,{}),showNavigationButtons&&jsx(BackwardForwardPanel,{}),children2]})},shallowEqual);function LikeC4Diagram({view,className,fitView:fitView2=!0,fitViewPadding=0,readonly=!0,pannable=!0,zoomable=!0,nodesSelectable=!readonly,nodesDraggable=!readonly,background="dots",controls=!1,showElementLinks=!0,showDiagramTitle=!0,showNavigationButtons=!1,enableDynamicViewWalkthrough=!0,initialWidth,initialHeight,keepAspectRatio=!1,experimentalEdgeEditing=!1,onCanvasClick,onCanvasContextMenu,onCanvasDblClick,onEdgeClick,onChange,onEdgeContextMenu,onNavigateTo,onNodeClick,onNodeContextMenu,renderIcon}){const initialRef=useRef$1();if(!initialRef.current){const initial=diagramViewToXYFlowData(view,{selectable:nodesSelectable,draggable:nodesDraggable});initialRef.current={defaultNodes:initial.nodes,defaultEdges:initial.edges,initialWidth:initialWidth??view.width,initialHeight:initialHeight??view.height}}return jsx(EnsureMantine,{children:jsx(ReactFlowProvider,{fitView:fitView2,...initialRef.current,children:jsx(DiagramContextProvider,{view,keepAspectRatio,className:clsx(rootClassName,className),readonly,pannable,zoomable,fitViewEnabled:fitView2,fitViewPadding,showElementLinks,nodesDraggable,nodesSelectable,experimentalEdgeEditing,renderIcon:renderIcon??null,onCanvasClick,onCanvasContextMenu,onEdgeClick,onEdgeContextMenu,onNodeClick,onNodeContextMenu,onChange,onNavigateTo,onCanvasDblClick,children:jsx(LazyMotion,{features:domAnimation,strict:!0,children:jsx(LikeC4DiagramInnerMemo,{defaultNodes:initialRef.current.defaultNodes,defaultEdges:initialRef.current.defaultEdges,fitView:fitView2,zoomable,background,controls,pannable,showDiagramTitle,showNavigationButtons,enableDynamicViewWalkthrough})})})})})}const LikeC4DiagramInnerMemo=memo$1(function({background,fitView:fitView2,zoomable,controls,pannable,defaultNodes,defaultEdges,showDiagramTitle,showNavigationButtons,enableDynamicViewWalkthrough}){const diagramApi=useDiagramStoreApi(),[isInitialized,setIsInitialized]=useState$1(diagramApi.getState().initialized);return useEffect$1(()=>{if(!isInitialized)return diagramApi.subscribe(s2=>s2.initialized,setIsInitialized,{fireImmediately:!0})},[isInitialized]),jsxs(Fragment,{children:[jsx(XYFlow,{defaultNodes,defaultEdges,className:clsx("likec4-diagram",cssReactFlow,controls===!1&&cssNoControls,pannable!==!0&&cssDisablePan,background==="transparent"&&cssTransparentBg),children:jsx(XYFlowInner,{showNavigationButtons,showDiagramTitle,enableDynamicViewWalkthrough,background,controls})}),isInitialized&&jsxs(Fragment,{children:[jsx(SyncWithDiagram,{}),fitView2&&jsx(FitViewOnDiagramChange,{}),fitView2&&zoomable&&jsx(SelectEdgesOnNodeFocus,{})]})]})},shallowEqual);function StaticLikeC4Diagram({view,fitView:fitView2=!0,fitViewPadding=0,background="transparent",...rest}){return jsx(LikeC4Diagram,{view,readonly:!0,fitView:fitView2,fitViewPadding,pannable:!1,zoomable:!1,controls:!1,background,showElementLinks:!0,showDiagramTitle:!1,enableDynamicViewWalkthrough:!1,nodesSelectable:!1,nodesDraggable:!1,...rest})}var previewBg="_15b5f732";const Route$9=createFileRoute("/")({component:IndexPage});function IndexPage(){const views=t$3(useStore$2($views));return jsx(SimpleGrid,{p:{base:"md",sm:"xl"},cols:{base:1,sm:2,md:3,lg:5},spacing:{base:10,sm:"xl"},verticalSpacing:{base:"md",sm:"xl"},children:views.map(v2=>jsx(ViewCard,{viewId:v2},v2))})}const ViewCard=memo$1(({viewId})=>{const diagram=useLikeC4View(viewId);if(!diagram)return null;const{id:id2,title:title2,description:description2}=diagram;return jsxs(Card,{component:Link,to:"/view/$viewId",params:{viewId:id2},search:!0,shadow:"xs",padding:"lg",radius:"sm",withBorder:!0,children:[jsx(Card.Section,{children:jsx(DiagramPreview,{diagram})}),jsx(Group,{justify:"space-between",mt:"md",mb:"xs",children:jsx(Text$1,{fw:500,children:title2})}),jsx(Text$1,{size:"sm",c:"dimmed",children:description2})]})},(prev,next)=>prev.viewId===next.viewId);function DiagramPreview(props2){const[diagram,setDiagram]=useState$1(null);return useDebouncedEffect(()=>{setDiagram(props2.diagram)},[props2.diagram],u(u$1(Math.random()*400,-1),{min:50})),jsx(Box,{className:previewBg,style:{height:175},children:diagram&&jsx(StaticLikeC4Diagram,{background:"transparent",view:diagram,keepAspectRatio:!1,renderIcon:RenderIcon,fitView:!0,fitViewPadding:.1})})}var svgContainer="_1dn84dq1",cssViewOutlet="_1dn84dq3",cssExportView="_1dn84dq4",cssExportBox="_1dn84dq5",cssWebcomponentView="_1dn84dq6",cssWebcomponentIframeContainer="_1dn84dq7";const Route$8=createFileRoute("/webcomponent/$")({component:WebcomponentPage});function WebcomponentPage(){const router=useRouter(),viewId=Route$8.useParams()._splat||"index",{colorScheme}=useMantineColorScheme();let base=router.basepath.endsWith("/")?router.basepath:`${router.basepath}/`;const jsurl=new URL(`${base}likec4-views.js`,window.location.href),iframeHtml=`
|
|
69
|
+
<!DOCTYPE html>
|
|
70
|
+
<html lang="en-US" style="color-scheme: ${colorScheme};">
|
|
71
|
+
<head>
|
|
72
|
+
<meta charset="utf-8" />
|
|
73
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no" />
|
|
74
|
+
<style>
|
|
75
|
+
* {
|
|
76
|
+
border-width: 0px;
|
|
77
|
+
border-style: solid;
|
|
78
|
+
box-sizing: border-box;
|
|
79
|
+
overflow-wrap: break-word;
|
|
80
|
+
}
|
|
81
|
+
html, body {
|
|
82
|
+
margin: 0;
|
|
83
|
+
background-color: transparent !important;
|
|
84
|
+
width: 100%;
|
|
85
|
+
height: 100%;
|
|
86
|
+
font-size: 16px;
|
|
87
|
+
}
|
|
88
|
+
body {
|
|
89
|
+
position: relative;
|
|
90
|
+
min-height: 100%;
|
|
91
|
+
padding: clamp(0.5rem, 5vh, 4rem) clamp(0.5rem, 5vw, 5rem);
|
|
92
|
+
}
|
|
93
|
+
</style>
|
|
94
|
+
</head>
|
|
95
|
+
<body>
|
|
96
|
+
<script type="module" src="${jsurl.href}"><\/script>
|
|
97
|
+
<${ComponentName.View} view-id="${encodeURIComponent(viewId)}"></${ComponentName.View}>
|
|
98
|
+
</body>
|
|
99
|
+
</html>
|
|
100
|
+
`;return jsx(Flex,{direction:"column",className:cssWebcomponentView,children:jsx(Box,{className:cssWebcomponentIframeContainer,children:jsx("iframe",{srcDoc:iframeHtml,allowtransparency:"true"})})})}const ErrorBoundaryContext=createContext$1(null),initialState={didCatch:!1,error:null};class ErrorBoundary extends Component{constructor(props2){super(props2),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=initialState}static getDerivedStateFromError(error){return{didCatch:!0,error}}resetErrorBoundary(){const{error}=this.state;if(error!==null){for(var _this$props$onReset,_this$props,_len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];(_this$props$onReset=(_this$props=this.props).onReset)===null||_this$props$onReset===void 0||_this$props$onReset.call(_this$props,{args,reason:"imperative-api"}),this.setState(initialState)}}componentDidCatch(error,info){var _this$props$onError,_this$props2;(_this$props$onError=(_this$props2=this.props).onError)===null||_this$props$onError===void 0||_this$props$onError.call(_this$props2,error,info)}componentDidUpdate(prevProps,prevState){const{didCatch}=this.state,{resetKeys}=this.props;if(didCatch&&prevState.error!==null&&hasArrayChanged(prevProps.resetKeys,resetKeys)){var _this$props$onReset2,_this$props3;(_this$props$onReset2=(_this$props3=this.props).onReset)===null||_this$props$onReset2===void 0||_this$props$onReset2.call(_this$props3,{next:resetKeys,prev:prevProps.resetKeys,reason:"keys"}),this.setState(initialState)}}render(){const{children:children2,fallbackRender,FallbackComponent,fallback}=this.props,{didCatch,error}=this.state;let childToRender=children2;if(didCatch){const props2={error,resetErrorBoundary:this.resetErrorBoundary};if(typeof fallbackRender=="function")childToRender=fallbackRender(props2);else if(FallbackComponent)childToRender=createElement$1(FallbackComponent,props2);else if(fallback===null||isValidElement(fallback))childToRender=fallback;else throw error}return createElement$1(ErrorBoundaryContext.Provider,{value:{didCatch,error,resetErrorBoundary:this.resetErrorBoundary}},childToRender)}}function hasArrayChanged(){let a2=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],b2=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return a2.length!==b2.length||a2.some((item,index2)=>!Object.is(item,b2[index2]))}function compareTreeNodes(a2,b2){return a2.children.length===0&&b2.children.length>0?1:a2.children.length>0&&b2.children.length===0?-1:a2.label.localeCompare(b2.label)}function buildDiagramTreeData(views){const root2={value:"",label:"Diagrams",children:[]},findParent=path=>{let parent=root2;if(path==="")return parent;const segments=path.split("/"),traversed=["@fs"];for(;segments.length;){const label=segments.shift();traversed.push(label);const value=traversed.join("/");let node=f(parent.children,n2=>n2.value===value);node||(node={label,value,children:[]},parent.children.push(node)),parent=node}return parent};for(const view of views){const parent=findParent(view.relativePath??"");parent.children.push({value:view.id,label:view.title??view.id,children:[]}),parent!==root2&&parent.children.sort(compareTreeNodes)}return root2.children.sort(compareTreeNodes)}const $diagramsTree=batched($views,views=>buildDiagramTreeData(r$2(views)));function useDiagramsTreeData(){return useStore$2($diagramsTree)}function DiagramsTree(){const data=useDiagramsTreeData(),{viewId}=useParams({from:"/view/$viewId"}),diagram=useLikeC4View(viewId),initialExpandedState={};if(diagram&&n$4(diagram.relativePath)){const segments=diagram.relativePath.split("/");let path="@fs";for(const segment of segments)path+=`/${segment}`,initialExpandedState[path]=!0}const tree=useTree({initialExpandedState,multiple:!1}),theme2=useComputedColorScheme();return jsx(Box,{children:jsx(Tree,{tree,data,styles:{node:{marginTop:2,marginBottom:2}},renderNode:({node,expanded,elementProps,hasChildren})=>jsx(Box,{...elementProps,children:jsx(Button,{fullWidth:!0,color:theme2==="light"?"dark":"gray",variant:viewId===node.value?"filled":"subtle",size:"sm",fz:"sm",fw:hasChildren?"600":"500",justify:"flex-start",styles:{section:{opacity:.75}},leftSection:jsxs(Fragment,{children:[!hasChildren&&jsx(IconLayoutDashboard,{size:15,opacity:.7}),hasChildren&&expanded&&jsx(IconFolderOpen,{size:15}),hasChildren&&!expanded&&jsx(IconFolderFilled,{size:15})]}),...!hasChildren&&{component:Link,params:{viewId:node.value}},children:node.label})})})})}function SidebarDrawer({opened,onClose}){return jsx(Drawer,{size:"sm",opened,onClose,title:jsx(Button,{component:Link,to:"/",leftSection:jsx(IconArrowLeft,{}),color:"dimmed",variant:"subtle",size:"xs",children:"Back to overview"}),scrollAreaComponent:ScrollArea.Autosize,children:jsx(DiagramsTree,{})})}const scriptRel=function(){const relList=typeof document<"u"&&document.createElement("link").relList;return relList&&relList.supports&&relList.supports("modulepreload")?"modulepreload":"preload"}(),assetsURL=function(dep){return"/"+dep},seen={},__vitePreload=function(baseModule,deps,importerUrl){let promise=Promise.resolve();if(deps&&deps.length>0){document.getElementsByTagName("link");const cspNonceMeta=document.querySelector("meta[property=csp-nonce]"),cspNonce=cspNonceMeta?.nonce||cspNonceMeta?.getAttribute("nonce");promise=Promise.all(deps.map(dep=>{if(dep=assetsURL(dep),dep in seen)return;seen[dep]=!0;const isCss=dep.endsWith(".css"),cssSelector=isCss?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${dep}"]${cssSelector}`))return;const link=document.createElement("link");if(link.rel=isCss?"stylesheet":scriptRel,isCss||(link.as="script",link.crossOrigin=""),link.href=dep,cspNonce&&link.setAttribute("nonce",cspNonce),document.head.appendChild(link),isCss)return new Promise((res,rej)=>{link.addEventListener("load",res),link.addEventListener("error",()=>rej(new Error(`Unable to preload CSS for ${dep}`)))})}))}return promise.then(()=>baseModule()).catch(err=>{const e2=new Event("vite:preloadError",{cancelable:!0});if(e2.payload=err,window.dispatchEvent(e2),!e2.defaultPrevented)throw err})};function ColorSchemeToggle(){const{setColorScheme}=useMantineColorScheme(),computedColorScheme=useComputedColorScheme("light",{getInitialValueInEffect:!0});return jsx(ActionIcon,{visibleFrom:"sm",size:"md",variant:"subtle",color:"gray",onClick:()=>setColorScheme(computedColorScheme==="light"?"dark":"light"),"aria-label":"Toggle color scheme",children:computedColorScheme==="light"?jsx(IconMoonStars,{stroke:1.5}):jsx(IconSun,{stroke:1.5})})}var cssHeader="yr9aef0";const AlertLocalhost=()=>jsx(Alert,{color:"yellow",icon:jsx(IconAlertTriangle,{}),title:"Localhost URL",styles:{body:{gap:rem(4)}},children:jsx(Text$1,{c:"yellow",size:"sm",children:"You need to deploy your project to make it available on the internet"})}),CopyButtonChild=({copied,copy})=>jsx(Button,{size:"xs",color:copied?"teal":"gray",variant:"light",leftSection:copied?jsx(IconCheck,{style:{width:rem(16)}}):jsx(IconCopy,{style:{width:rem(16)}}),onClick:copy,children:copied?"Copied":"Copy to clipboard"}),EmbedPanel=({diagram})=>{const router=useRouter(),{colorScheme}=useMantineColorScheme(),[theme2,setTheme]=useState$1(colorScheme),padding=20,url=new URL(router.buildLocation({to:"/embed/$viewId",params:{viewId:diagram.id},search:{padding,theme:theme2!=="auto"?theme2:void 0}}).href,window.location.href),width=diagram.width+padding*2,height=diagram.height+padding*2,href=url.href,code=`
|
|
101
|
+
<div style="aspect-ratio:${width}/${height};width:100%;height:auto;max-width:${width}px;margin:0 auto">
|
|
102
|
+
<iframe src="${href}" width="100%" height="100%" style="border:0;background:transparent;"></iframe>
|
|
103
|
+
</div>
|
|
104
|
+
`.trim();return jsxs(Stack,{children:[code.includes("http://localhost")&&jsx(AlertLocalhost,{}),jsx(Box,{children:jsx(Text$1,{size:"sm",children:"Embeded view is an iframe with a static diagram"})}),jsxs(Stack,{gap:"xs",children:[jsxs(Group,{justify:"space-between",children:[jsx(Box,{children:jsx(Text$1,{fw:"500",size:"sm",children:"HTML"})}),jsxs(Group,{gap:"xs",children:[jsx(ActionIcon,{component:"a",href,target:"_blank",variant:"light",color:"gray",children:jsx(IconExternalLink,{})}),jsx(CopyButton$1,{value:code,timeout:1500,children:CopyButtonChild})]})]}),jsx(Code,{block:!0,children:code}),jsx(Box,{style:{alignSelf:"flex-start"},children:jsx(Select,{label:"Color scheme",value:theme2,allowDeselect:!1,onChange:v2=>setTheme(v2??"auto"),data:[{value:"auto",label:"Auto"},{value:"light",label:"Light"},{value:"dark",label:"Dark"}]})})]})]})};function WebcomponentsPanel({diagram}){const router=useRouter();let base=router.basepath.endsWith("/")?router.basepath:`${router.basepath}/`;const jscode=`
|
|
105
|
+
<script module src="${new URL(`${base}likec4-views.js`,window.location.href).href}"><\/script>
|
|
106
|
+
`.trim(),htmlCode=`
|
|
107
|
+
<${ComponentName.View} view-id="${encodeURIComponent(diagram.id)}"></${ComponentName.View}>
|
|
108
|
+
`.trim(),webcomponentPreview=router.buildLocation({to:"/webcomponent/$",params:{_splat:diagram.id},search:!0});return jsxs(Stack,{children:[jscode.includes("http://localhost")&&jsx(AlertLocalhost,{}),jsx(Box,{children:jsx(Text$1,{size:"sm",children:"Add this script to your page:"})}),jsxs(Stack,{gap:"xs",children:[jsxs(Group,{justify:"space-between",children:[jsx(Box,{children:jsx(Text$1,{fw:"500",size:"sm",children:"JavaScript"})}),jsxs(Group,{gap:"xs",children:[jsx(ActionIcon,{component:"a",href:webcomponentPreview.href,target:"_blank",variant:"light",color:"gray",children:jsx(IconExternalLink,{})}),jsx(CopyButton$1,{value:jscode,timeout:1500,children:CopyButtonChild})]})]}),jsx(Code,{block:!0,children:jscode}),jsx(Box,{children:jsxs(Text$1,{size:"sm",c:"dimmed",children:["This script defines a custom element (webcomponent) that renders your diagrams.",jsx("br",{}),"Script must be inserted once in the ",jsx("code",{children:"<head>"})," or at the end of the ",jsx("code",{children:"<body>"})," ","tag."]})})]}),jsxs(Stack,{gap:"xs",children:[jsxs(Group,{justify:"space-between",children:[jsx(Box,{children:jsx(Text$1,{fw:"500",size:"sm",children:"HTML"})}),jsx(Box,{children:jsx(CopyButton$1,{value:htmlCode,timeout:1500,children:CopyButtonChild})})]}),jsx(Code,{block:!0,children:htmlCode}),jsx(Box,{children:jsxs(Text$1,{size:"sm",c:"dimmed",children:["Insert this code to your page. Page may have multiple ",jsx("code",{children:"<likec4-view>"}),"."]})})]})]})}function ShareModal({opened,onClose,diagram}){const[activeTab,setActiveTab]=useState$1("webcomponent");return jsxs(ModalRoot,{size:"xl",opened,keepMounted:!0,onClose,children:[jsx(ModalOverlay,{backgroundOpacity:.5,blur:3}),jsx(ModalContent,{children:jsxs(ModalBody,{children:[jsxs(Tabs,{value:activeTab,onChange:tab=>setActiveTab(tab??"webcomponent"),children:[jsxs(TabsList,{children:[jsx(TabsTab,{value:"webcomponent",children:"Webcomponent"}),jsx(TabsTab,{value:"embed",children:"Embed"})]}),jsx(TabsPanel,{value:"embed",pt:"md",children:jsx(EmbedPanel,{diagram})}),jsx(TabsPanel,{value:"webcomponent",pt:"md",children:jsx(WebcomponentsPanel,{diagram})})]}),jsx(Group,{justify:"flex-end",mt:"lg",children:jsx(Button,{size:"sm",onClick:onClose,children:"Close"})})]})})]})}function Header({diagram}){const{breakpoints}=useMantineTheme(),isTablet=useMediaQuery(`(min-width: ${breakpoints.md})`)??!1,[opened,{open,close}]=useDisclosure(!1);return jsxs(Paper,{className:cssHeader,pos:"fixed",top:"0.5rem",right:"0.5rem",py:5,px:"xs",radius:"sm",shadow:"xl",children:[jsxs(Group,{gap:isTablet?6:4,wrap:"nowrap",children:[jsx(ViewPageButton,{isTablet}),jsx(ColorSchemeToggle,{}),jsx(Divider,{orientation:"vertical",mr:isTablet?4:"xs"}),jsx(Button,{size:isTablet?"sm":"xs",leftSection:jsx(IconShare,{size:14}),onClick:open,children:"Share"}),jsx(ExportButton,{diagram})]}),jsx(ShareModal,{opened,onClose:close,diagram})]})}const viewPages=[{route:"/view/$viewId",icon:jsx(IconBrandReact,{opacity:.7,size:16}),title:jsx(Fragment,{children:"React"})},{route:"/view/$viewId/editor",icon:jsx(IconBrandReact,{opacity:.7,size:16}),title:jsx(Text$1,{size:"sm",fw:"500",variant:"gradient",gradient:{from:"pink",to:"violet",deg:90},children:"Editor"})},{route:"/view/$viewId/dot",icon:jsx(IconFile,{opacity:.7,size:16}),title:jsxs(Fragment,{children:["Graphviz ",jsx(Text$1,{component:"span",size:"xs",c:"dimmed",ml:4,children:".dot"})]})},{route:"/view/$viewId/d2",icon:jsx(IconFile,{opacity:.7,size:16}),title:jsx(Fragment,{children:"D2"})},{route:"/view/$viewId/mmd",icon:jsx(IconFile,{opacity:.7,size:16}),title:jsx(Fragment,{children:"Mermaid"})}],routeIds=viewPages.map(({route})=>route);function ViewPageButton({isTablet}){const{viewId}=useParams({from:"/view/$viewId"}),routerState=useRouterState(),matchedRoute=o$1(routerState.matches,({routeId})=>routeIds.includes(routeId)),matched=(matchedRoute&&viewPages.find(({route})=>route===matchedRoute.routeId))??viewPages[0];return jsx(Fragment,{children:jsxs(Menu,{shadow:"md",width:200,trigger:"click-hover",openDelay:100,children:[jsx(MenuTarget,{children:jsx(Button,{leftSection:matched.icon,variant:"subtle",size:isTablet?"sm":"xs",color:"gray",px:"xs",rightSection:jsx(IconChevronDown,{opacity:.5,size:14}),children:matched.title})}),jsx(MenuDropdown,{children:viewPages.map(({route,icon,title:title2})=>jsx(MenuItem,{component:Link,to:route,search:!0,params:{viewId},leftSection:icon,...route===matched.route?{bg:"gray"}:{},style:{whiteSpace:"nowrap"},children:title2},route))})]})})}function downloadImage(name,dataUrl){const a2=document.createElement("a");a2.setAttribute("download",`${name}.png`),a2.setAttribute("href",dataUrl),a2.click()}function ExportButton({diagram}){const params=useParams({from:"/view/$viewId"});return jsxs(Menu,{shadow:"md",width:200,trigger:"click-hover",openDelay:200,children:[jsx(MenuTarget,{children:jsx(Button,{variant:"subtle",size:"sm",color:"gray",px:"sm",rightSection:jsx(IconChevronDown,{opacity:.5,size:14}),visibleFrom:"md",children:"Export"})}),jsxs(MenuDropdown,{children:[jsx(MenuLabel,{children:"Current view"}),jsx(MenuItem,{onClick:async()=>{const{toPng}=await __vitePreload(async()=>{const{toPng:toPng2}=await import("./index-Dx7-rAaw.js");return{toPng:toPng2}},[]),imageWidth=diagram.width+32,imageHeight=diagram.height+32,viewPort=document.querySelector(".react-flow__viewport");if(viewPort)try{const data=await toPng(viewPort,{backgroundColor:"transparent",width:imageWidth,height:imageHeight,cacheBust:!0,imagePlaceholder:"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",style:{width:imageWidth+"px",height:imageHeight+"px",transform:"translate(16px, 16px) scale(1)"}});downloadImage(diagram.id,data)}catch(err){console.error(err),window.alert("Failed to export to PNG, check the console for more details.")}},children:"Export as .png"}),jsx(MenuItem,{component:Link,to:"/view/$viewId/dot",search:!0,params,children:"Export as .dot"}),jsx(MenuItem,{component:Link,to:"/view/$viewId/d2",search:!0,params,children:"Export as .d2"}),jsx(MenuItem,{component:Link,to:"/view/$viewId/mmd",search:!0,params,children:"Export as .mmd"}),jsx(MenuItem,{disabled:!0,children:"Export to Draw.io"}),jsx(MenuItem,{disabled:!0,children:"Export to Miro"}),jsx(MenuItem,{disabled:!0,children:"Export to Notion"}),jsx(MenuDivider,{}),jsx(MenuLabel,{children:"All views"}),jsx(MenuItem,{disabled:!0,children:"Download as ZIP"})]})]})}const Route$7=createFileRoute("/view/$viewId")({component:ViewLayout});function Fallback({error,resetErrorBoundary}){const router=useRouter(),{viewId}=Route$7.useParams();return useUpdateEffect$1(()=>{resetErrorBoundary()},[viewId]),isNotFound(error)?jsx(Container,{my:"md",children:jsxs(Alert,{variant:"light",color:"orange",children:[jsxs(Text$1,{c:"orange",fz:"md",children:["The diagram"," ",jsx(Code,{color:"orange",children:viewId})," ","does not exist or contains errors"]}),jsx(Button,{onClick:()=>{resetErrorBoundary(),router.navigate({to:"/",search:!0})},variant:"light",color:"orange",mt:"lg",size:"xs",children:"Go to overview"})]})}):jsx(Container,{my:"md",children:jsxs(Alert,{variant:"filled",color:"red",title:"Something went wrong",children:[jsx(Code,{block:!0,color:"red",children:error.stack??error.message}),jsx(Button,{onClick:resetErrorBoundary,color:"red",variant:"white",mt:"lg",size:"xs",children:"Try again"})]})})}function ViewLayout(){const[opened,{toggle,close}]=useDisclosure(!1);return jsxs(Fragment,{children:[jsx(Box,{className:cssViewOutlet,children:jsx(ErrorBoundary,{FallbackComponent:Fallback,children:jsx(Outlet,{})})}),jsx(ViewHeader,{}),jsx(SidebarDrawer,{opened,onClose:close}),jsx(Box,{pos:"fixed",top:14,left:10,children:jsx(Burger,{size:"sm",opened,onClick:toggle,"aria-label":"Toggle navigation"})})]})}function ViewHeader(){const view=useLikeC4View(Route$7.useParams().viewId);return view?jsx(Header,{diagram:view}):null}function useTransparentBackground(enabled=!0){useIsomorphicLayoutEffect$1(()=>{const htmlEl=document.body.parentElement;if(!htmlEl||enabled!==!0)return;const classname="transparent-bg";return htmlEl.classList.add(classname),()=>{htmlEl.classList.remove(classname)}},[enabled])}const Route$6=createFileRoute("/export/$viewId")({component:ExportPage});function ExportPage(){const{padding=20}=Route$6.useSearch(),{viewId}=Route$6.useParams(),diagram=useLikeC4View(viewId);if(useTransparentBackground(),useEffect$1(()=>{document.querySelectorAll(".react-flow__viewport").forEach(el=>{el.style.transform=""})}),!diagram)throw notFound();return jsx(Box,{className:cssExportView,role:"presentation",style:{minWidth:diagram.width+padding*2,width:diagram.width+padding*2,minHeight:diagram.height+padding*2,height:diagram.height+padding*2,padding},children:jsx(Box,{className:cssExportBox,style:{width:diagram.width,minWidth:diagram.width,height:diagram.height,minHeight:diagram.height},children:jsx(LikeC4Diagram,{view:diagram,readonly:!0,fitView:!1,fitViewPadding:0,pannable:!1,zoomable:!1,controls:!1,background:"transparent",enableDynamicViewWalkthrough:!1,showElementLinks:!1,showDiagramTitle:!1,nodesSelectable:!1,nodesDraggable:!1,renderIcon:RenderIcon,initialWidth:diagram.width,initialHeight:diagram.height})})})}const Route$5=createFileRoute("/embed/$viewId")({component:EmbedPage});function EmbedPage(){const{padding=20}=Route$5.useSearch(),{viewId}=Route$5.useParams(),diagram=useLikeC4View(viewId);if(useTransparentBackground(!!diagram),!diagram)throw notFound();return jsx(Box,{pos:"absolute",style:{top:0,left:"50%",boxSizing:"border-box",padding,transform:"translateX(-50%)",aspectRatio:`${diagram.width+padding*2} / ${diagram.height+padding*2}`,width:"100vw",maxWidth:diagram.width+padding*2,height:"auto",maxHeight:"100vh"},children:jsx(StaticLikeC4Diagram,{view:diagram,fitViewPadding:0,background:"transparent",renderIcon:RenderIcon})})}const Route$4=createFileRoute("/view/$viewId/")({component:ViewReact});function ViewReact(){const router=useRouter(),{viewId}=Route$4.useParams(),view=useLikeC4View(viewId),onNavigateTo=useCallbackRef(viewId2=>{router.navigate({to:"/view/$viewId",params:{viewId:viewId2},startTransition:!0,search:!0})});if(!view)throw notFound();return jsx(LikeC4Diagram,{view,readonly:!0,controls:!1,fitViewPadding:.08,showNavigationButtons:!0,renderIcon:RenderIcon,onNavigateTo})}const{createElement,createContext,createRef,forwardRef,useCallback,useContext,useEffect,useImperativeHandle,useLayoutEffect,useMemo,useRef,useState}=React,useId=React.useId,useLayoutEffect_do_not_use_directly=useLayoutEffect,PanelGroupContext=createContext(null);PanelGroupContext.displayName="PanelGroupContext";const useIsomorphicLayoutEffect=useLayoutEffect_do_not_use_directly,wrappedUseId=typeof useId=="function"?useId:()=>null;let counter=0;function useUniqueId(idFromParams=null){const idFromUseId=wrappedUseId(),idRef=useRef(idFromParams||idFromUseId||null);return idRef.current===null&&(idRef.current=""+counter++),idFromParams??idRef.current}function PanelWithForwardedRef({children:children2,className:classNameFromProps="",collapsedSize,collapsible,defaultSize:defaultSize2,forwardedRef,id:idFromProps,maxSize,minSize,onCollapse,onExpand,onResize,order,style:styleFromProps,tagName:Type="div",...rest}){const context=useContext(PanelGroupContext);if(context===null)throw Error("Panel components must be rendered within a PanelGroup container");const{collapsePanel,expandPanel,getPanelSize,getPanelStyle,groupId,isPanelCollapsed,reevaluatePanelConstraints,registerPanel,resizePanel:resizePanel2,unregisterPanel}=context,panelId=useUniqueId(idFromProps),panelDataRef=useRef({callbacks:{onCollapse,onExpand,onResize},constraints:{collapsedSize,collapsible,defaultSize:defaultSize2,maxSize,minSize},id:panelId,idIsFromProps:idFromProps!==void 0,order});useRef({didLogMissingDefaultSizeWarning:!1}),useIsomorphicLayoutEffect(()=>{const{callbacks,constraints}=panelDataRef.current,prevConstraints={...constraints};panelDataRef.current.id=panelId,panelDataRef.current.idIsFromProps=idFromProps!==void 0,panelDataRef.current.order=order,callbacks.onCollapse=onCollapse,callbacks.onExpand=onExpand,callbacks.onResize=onResize,constraints.collapsedSize=collapsedSize,constraints.collapsible=collapsible,constraints.defaultSize=defaultSize2,constraints.maxSize=maxSize,constraints.minSize=minSize,(prevConstraints.collapsedSize!==constraints.collapsedSize||prevConstraints.collapsible!==constraints.collapsible||prevConstraints.maxSize!==constraints.maxSize||prevConstraints.minSize!==constraints.minSize)&&reevaluatePanelConstraints(panelDataRef.current,prevConstraints)}),useIsomorphicLayoutEffect(()=>{const panelData=panelDataRef.current;return registerPanel(panelData),()=>{unregisterPanel(panelData)}},[order,panelId,registerPanel,unregisterPanel]),useImperativeHandle(forwardedRef,()=>({collapse:()=>{collapsePanel(panelDataRef.current)},expand:minSize2=>{expandPanel(panelDataRef.current,minSize2)},getId(){return panelId},getSize(){return getPanelSize(panelDataRef.current)},isCollapsed(){return isPanelCollapsed(panelDataRef.current)},isExpanded(){return!isPanelCollapsed(panelDataRef.current)},resize:size2=>{resizePanel2(panelDataRef.current,size2)}}),[collapsePanel,expandPanel,getPanelSize,isPanelCollapsed,panelId,resizePanel2]);const style2=getPanelStyle(panelDataRef.current,defaultSize2);return createElement(Type,{...rest,children:children2,className:classNameFromProps,id:idFromProps,style:{...style2,...styleFromProps},"data-panel":"","data-panel-collapsible":collapsible||void 0,"data-panel-group-id":groupId,"data-panel-id":panelId,"data-panel-size":parseFloat(""+style2.flexGrow).toFixed(1)})}const Panel=forwardRef((props2,ref)=>createElement(PanelWithForwardedRef,{...props2,forwardedRef:ref}));PanelWithForwardedRef.displayName="Panel";Panel.displayName="forwardRef(Panel)";let currentCursorStyle=null,styleElement=null;function getCursorStyle(state,constraintFlags){if(constraintFlags){const horizontalMin=(constraintFlags&EXCEEDED_HORIZONTAL_MIN)!==0,horizontalMax=(constraintFlags&EXCEEDED_HORIZONTAL_MAX)!==0,verticalMin=(constraintFlags&EXCEEDED_VERTICAL_MIN)!==0,verticalMax=(constraintFlags&EXCEEDED_VERTICAL_MAX)!==0;if(horizontalMin)return verticalMin?"se-resize":verticalMax?"ne-resize":"e-resize";if(horizontalMax)return verticalMin?"sw-resize":verticalMax?"nw-resize":"w-resize";if(verticalMin)return"s-resize";if(verticalMax)return"n-resize"}switch(state){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}function resetGlobalCursorStyle(){styleElement!==null&&(document.head.removeChild(styleElement),currentCursorStyle=null,styleElement=null)}function setGlobalCursorStyle(state,constraintFlags){const style2=getCursorStyle(state,constraintFlags);currentCursorStyle!==style2&&(currentCursorStyle=style2,styleElement===null&&(styleElement=document.createElement("style"),document.head.appendChild(styleElement)),styleElement.innerHTML=`*{cursor: ${style2}!important;}`)}function isKeyDown(event){return event.type==="keydown"}function isPointerEvent(event){return event.type.startsWith("pointer")}function isMouseEvent(event){return event.type.startsWith("mouse")}function getResizeEventCoordinates(event){if(isPointerEvent(event)){if(event.isPrimary)return{x:event.clientX,y:event.clientY}}else if(isMouseEvent(event))return{x:event.clientX,y:event.clientY};return{x:1/0,y:1/0}}function getInputType(){if(typeof matchMedia=="function")return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}function intersects(rectOne,rectTwo,strict){return rectOne.x<rectTwo.x+rectTwo.width&&rectOne.x+rectOne.width>rectTwo.x&&rectOne.y<rectTwo.y+rectTwo.height&&rectOne.y+rectOne.height>rectTwo.y}function compare(a2,b2){if(a2===b2)throw new Error("Cannot compare node with itself");const ancestors={a:get_ancestors(a2),b:get_ancestors(b2)};let common_ancestor;for(;ancestors.a.at(-1)===ancestors.b.at(-1);)a2=ancestors.a.pop(),b2=ancestors.b.pop(),common_ancestor=a2;assert(common_ancestor,"Stacking order can only be calculated for elements with a common ancestor");const z_indexes={a:get_z_index(find_stacking_context(ancestors.a)),b:get_z_index(find_stacking_context(ancestors.b))};if(z_indexes.a===z_indexes.b){const children2=common_ancestor.childNodes,furthest_ancestors={a:ancestors.a.at(-1),b:ancestors.b.at(-1)};let i2=children2.length;for(;i2--;){const child=children2[i2];if(child===furthest_ancestors.a)return 1;if(child===furthest_ancestors.b)return-1}}return Math.sign(z_indexes.a-z_indexes.b)}const props=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function is_flex_item(node){var _get_parent;const display=getComputedStyle((_get_parent=get_parent(node))!==null&&_get_parent!==void 0?_get_parent:node).display;return display==="flex"||display==="inline-flex"}function creates_stacking_context(node){const style2=getComputedStyle(node);return!!(style2.position==="fixed"||style2.zIndex!=="auto"&&(style2.position!=="static"||is_flex_item(node))||+style2.opacity<1||"transform"in style2&&style2.transform!=="none"||"webkitTransform"in style2&&style2.webkitTransform!=="none"||"mixBlendMode"in style2&&style2.mixBlendMode!=="normal"||"filter"in style2&&style2.filter!=="none"||"webkitFilter"in style2&&style2.webkitFilter!=="none"||"isolation"in style2&&style2.isolation==="isolate"||props.test(style2.willChange)||style2.webkitOverflowScrolling==="touch")}function find_stacking_context(nodes){let i2=nodes.length;for(;i2--;){const node=nodes[i2];if(assert(node,"Missing node"),creates_stacking_context(node))return node}return null}function get_z_index(node){return node&&Number(getComputedStyle(node).zIndex)||0}function get_ancestors(node){const ancestors=[];for(;node;)ancestors.push(node),node=get_parent(node);return ancestors}function get_parent(node){const{parentNode}=node;return parentNode&&parentNode instanceof ShadowRoot?parentNode.host:parentNode}const EXCEEDED_HORIZONTAL_MIN=1,EXCEEDED_HORIZONTAL_MAX=2,EXCEEDED_VERTICAL_MIN=4,EXCEEDED_VERTICAL_MAX=8,isCoarsePointer=getInputType()==="coarse";let intersectingHandles=[],isPointerDown=!1,ownerDocumentCounts=new Map,panelConstraintFlags=new Map;const registeredResizeHandlers=new Set;function registerResizeHandle(resizeHandleId,element,direction,hitAreaMargins,setResizeHandlerState){var _ownerDocumentCounts$;const{ownerDocument}=element,data={direction,element,hitAreaMargins,setResizeHandlerState},count2=(_ownerDocumentCounts$=ownerDocumentCounts.get(ownerDocument))!==null&&_ownerDocumentCounts$!==void 0?_ownerDocumentCounts$:0;return ownerDocumentCounts.set(ownerDocument,count2+1),registeredResizeHandlers.add(data),updateListeners(),function(){var _ownerDocumentCounts$2;panelConstraintFlags.delete(resizeHandleId),registeredResizeHandlers.delete(data);const count3=(_ownerDocumentCounts$2=ownerDocumentCounts.get(ownerDocument))!==null&&_ownerDocumentCounts$2!==void 0?_ownerDocumentCounts$2:1;if(ownerDocumentCounts.set(ownerDocument,count3-1),updateListeners(),count3===1&&ownerDocumentCounts.delete(ownerDocument),intersectingHandles.includes(data)){const index2=intersectingHandles.indexOf(data);index2>=0&&intersectingHandles.splice(index2,1),updateCursor()}}}function handlePointerDown(event){const{target}=event,{x:x2,y:y2}=getResizeEventCoordinates(event);isPointerDown=!0,recalculateIntersectingHandles({target,x:x2,y:y2}),updateListeners(),intersectingHandles.length>0&&(updateResizeHandlerStates("down",event),event.preventDefault(),event.stopPropagation())}function handlePointerMove(event){const{x:x2,y:y2}=getResizeEventCoordinates(event);if(!isPointerDown){const{target}=event;recalculateIntersectingHandles({target,x:x2,y:y2})}updateResizeHandlerStates("move",event),updateCursor(),intersectingHandles.length>0&&event.preventDefault()}function handlePointerUp(event){const{target}=event,{x:x2,y:y2}=getResizeEventCoordinates(event);panelConstraintFlags.clear(),isPointerDown=!1,intersectingHandles.length>0&&event.preventDefault(),updateResizeHandlerStates("up",event),recalculateIntersectingHandles({target,x:x2,y:y2}),updateCursor(),updateListeners()}function recalculateIntersectingHandles({target,x:x2,y:y2}){intersectingHandles.splice(0);let targetElement=null;target instanceof HTMLElement&&(targetElement=target),registeredResizeHandlers.forEach(data=>{const{element:dragHandleElement,hitAreaMargins}=data,dragHandleRect=dragHandleElement.getBoundingClientRect(),{bottom,left,right,top}=dragHandleRect,margin=isCoarsePointer?hitAreaMargins.coarse:hitAreaMargins.fine;if(x2>=left-margin&&x2<=right+margin&&y2>=top-margin&&y2<=bottom+margin){if(targetElement!==null&&dragHandleElement!==targetElement&&!dragHandleElement.contains(targetElement)&&!targetElement.contains(dragHandleElement)&&compare(targetElement,dragHandleElement)>0){let currentElement=targetElement,didIntersect=!1;for(;currentElement&&!currentElement.contains(dragHandleElement);){if(intersects(currentElement.getBoundingClientRect(),dragHandleRect)){didIntersect=!0;break}currentElement=currentElement.parentElement}if(didIntersect)return}intersectingHandles.push(data)}})}function reportConstraintsViolation(resizeHandleId,flag){panelConstraintFlags.set(resizeHandleId,flag)}function updateCursor(){let intersectsHorizontal=!1,intersectsVertical=!1;intersectingHandles.forEach(data=>{const{direction}=data;direction==="horizontal"?intersectsHorizontal=!0:intersectsVertical=!0});let constraintFlags=0;panelConstraintFlags.forEach(flag=>{constraintFlags|=flag}),intersectsHorizontal&&intersectsVertical?setGlobalCursorStyle("intersection",constraintFlags):intersectsHorizontal?setGlobalCursorStyle("horizontal",constraintFlags):intersectsVertical?setGlobalCursorStyle("vertical",constraintFlags):resetGlobalCursorStyle()}function updateListeners(){ownerDocumentCounts.forEach((_,ownerDocument)=>{const{body}=ownerDocument;body.removeEventListener("contextmenu",handlePointerUp),body.removeEventListener("pointerdown",handlePointerDown),body.removeEventListener("pointerleave",handlePointerMove),body.removeEventListener("pointermove",handlePointerMove)}),window.removeEventListener("pointerup",handlePointerUp),window.removeEventListener("pointercancel",handlePointerUp),registeredResizeHandlers.size>0&&(isPointerDown?(intersectingHandles.length>0&&ownerDocumentCounts.forEach((count2,ownerDocument)=>{const{body}=ownerDocument;count2>0&&(body.addEventListener("contextmenu",handlePointerUp),body.addEventListener("pointerleave",handlePointerMove),body.addEventListener("pointermove",handlePointerMove))}),window.addEventListener("pointerup",handlePointerUp),window.addEventListener("pointercancel",handlePointerUp)):ownerDocumentCounts.forEach((count2,ownerDocument)=>{const{body}=ownerDocument;count2>0&&(body.addEventListener("pointerdown",handlePointerDown,{capture:!0}),body.addEventListener("pointermove",handlePointerMove))}))}function updateResizeHandlerStates(action,event){registeredResizeHandlers.forEach(data=>{const{setResizeHandlerState}=data,isActive=intersectingHandles.includes(data);setResizeHandlerState(action,isActive,event)})}function assert(expectedCondition,message){if(!expectedCondition)throw console.error(message),Error(message)}const PRECISION=10;function fuzzyCompareNumbers(actual,expected,fractionDigits=PRECISION){return actual.toFixed(fractionDigits)===expected.toFixed(fractionDigits)?0:actual>expected?1:-1}function fuzzyNumbersEqual$1(actual,expected,fractionDigits=PRECISION){return fuzzyCompareNumbers(actual,expected,fractionDigits)===0}function fuzzyNumbersEqual(actual,expected,fractionDigits){return fuzzyCompareNumbers(actual,expected,fractionDigits)===0}function fuzzyLayoutsEqual(actual,expected,fractionDigits){if(actual.length!==expected.length)return!1;for(let index2=0;index2<actual.length;index2++){const actualSize=actual[index2],expectedSize=expected[index2];if(!fuzzyNumbersEqual(actualSize,expectedSize,fractionDigits))return!1}return!0}function resizePanel({panelConstraints:panelConstraintsArray,panelIndex,size:size2}){const panelConstraints=panelConstraintsArray[panelIndex];assert(panelConstraints!=null,`Panel constraints not found for index ${panelIndex}`);let{collapsedSize=0,collapsible,maxSize=100,minSize=0}=panelConstraints;if(fuzzyCompareNumbers(size2,minSize)<0)if(collapsible){const halfwayPoint=(collapsedSize+minSize)/2;fuzzyCompareNumbers(size2,halfwayPoint)<0?size2=collapsedSize:size2=minSize}else size2=minSize;return size2=Math.min(maxSize,size2),size2=parseFloat(size2.toFixed(PRECISION)),size2}function adjustLayoutByDelta({delta,initialLayout,panelConstraints:panelConstraintsArray,pivotIndices,prevLayout,trigger:trigger2}){if(fuzzyNumbersEqual(delta,0))return initialLayout;const nextLayout=[...initialLayout],[firstPivotIndex,secondPivotIndex]=pivotIndices;assert(firstPivotIndex!=null,"Invalid first pivot index"),assert(secondPivotIndex!=null,"Invalid second pivot index");let deltaApplied=0;if(trigger2==="keyboard"){{const index2=delta<0?secondPivotIndex:firstPivotIndex,panelConstraints=panelConstraintsArray[index2];assert(panelConstraints,`Panel constraints not found for index ${index2}`);const{collapsedSize=0,collapsible,minSize=0}=panelConstraints;if(collapsible){const prevSize=initialLayout[index2];if(assert(prevSize!=null,`Previous layout not found for panel index ${index2}`),fuzzyNumbersEqual(prevSize,collapsedSize)){const localDelta=minSize-prevSize;fuzzyCompareNumbers(localDelta,Math.abs(delta))>0&&(delta=delta<0?0-localDelta:localDelta)}}}{const index2=delta<0?firstPivotIndex:secondPivotIndex,panelConstraints=panelConstraintsArray[index2];assert(panelConstraints,`No panel constraints found for index ${index2}`);const{collapsedSize=0,collapsible,minSize=0}=panelConstraints;if(collapsible){const prevSize=initialLayout[index2];if(assert(prevSize!=null,`Previous layout not found for panel index ${index2}`),fuzzyNumbersEqual(prevSize,minSize)){const localDelta=prevSize-collapsedSize;fuzzyCompareNumbers(localDelta,Math.abs(delta))>0&&(delta=delta<0?0-localDelta:localDelta)}}}}{const increment=delta<0?1:-1;let index2=delta<0?secondPivotIndex:firstPivotIndex,maxAvailableDelta=0;for(;;){const prevSize=initialLayout[index2];assert(prevSize!=null,`Previous layout not found for panel index ${index2}`);const delta2=resizePanel({panelConstraints:panelConstraintsArray,panelIndex:index2,size:100})-prevSize;if(maxAvailableDelta+=delta2,index2+=increment,index2<0||index2>=panelConstraintsArray.length)break}const minAbsDelta=Math.min(Math.abs(delta),Math.abs(maxAvailableDelta));delta=delta<0?0-minAbsDelta:minAbsDelta}{let index2=delta<0?firstPivotIndex:secondPivotIndex;for(;index2>=0&&index2<panelConstraintsArray.length;){const deltaRemaining=Math.abs(delta)-Math.abs(deltaApplied),prevSize=initialLayout[index2];assert(prevSize!=null,`Previous layout not found for panel index ${index2}`);const unsafeSize=prevSize-deltaRemaining,safeSize=resizePanel({panelConstraints:panelConstraintsArray,panelIndex:index2,size:unsafeSize});if(!fuzzyNumbersEqual(prevSize,safeSize)&&(deltaApplied+=prevSize-safeSize,nextLayout[index2]=safeSize,deltaApplied.toPrecision(3).localeCompare(Math.abs(delta).toPrecision(3),void 0,{numeric:!0})>=0))break;delta<0?index2--:index2++}}if(fuzzyLayoutsEqual(prevLayout,nextLayout))return prevLayout;{const pivotIndex=delta<0?secondPivotIndex:firstPivotIndex,prevSize=initialLayout[pivotIndex];assert(prevSize!=null,`Previous layout not found for panel index ${pivotIndex}`);const unsafeSize=prevSize+deltaApplied,safeSize=resizePanel({panelConstraints:panelConstraintsArray,panelIndex:pivotIndex,size:unsafeSize});if(nextLayout[pivotIndex]=safeSize,!fuzzyNumbersEqual(safeSize,unsafeSize)){let deltaRemaining=unsafeSize-safeSize,index2=delta<0?secondPivotIndex:firstPivotIndex;for(;index2>=0&&index2<panelConstraintsArray.length;){const prevSize2=nextLayout[index2];assert(prevSize2!=null,`Previous layout not found for panel index ${index2}`);const unsafeSize2=prevSize2+deltaRemaining,safeSize2=resizePanel({panelConstraints:panelConstraintsArray,panelIndex:index2,size:unsafeSize2});if(fuzzyNumbersEqual(prevSize2,safeSize2)||(deltaRemaining-=safeSize2-prevSize2,nextLayout[index2]=safeSize2),fuzzyNumbersEqual(deltaRemaining,0))break;delta>0?index2--:index2++}}}const totalSize=nextLayout.reduce((total,size2)=>size2+total,0);return fuzzyNumbersEqual(totalSize,100)?nextLayout:prevLayout}function calculateAriaValues({layout,panelsArray,pivotIndices}){let currentMinSize=0,currentMaxSize=100,totalMinSize=0,totalMaxSize=0;const firstIndex=pivotIndices[0];assert(firstIndex!=null,"No pivot index found"),panelsArray.forEach((panelData,index2)=>{const{constraints}=panelData,{maxSize=100,minSize=0}=constraints;index2===firstIndex?(currentMinSize=minSize,currentMaxSize=maxSize):(totalMinSize+=minSize,totalMaxSize+=maxSize)});const valueMax=Math.min(currentMaxSize,100-totalMinSize),valueMin=Math.max(currentMinSize,100-totalMaxSize),valueNow=layout[firstIndex];return{valueMax,valueMin,valueNow}}function getResizeHandleElementsForGroup(groupId,scope=document){return Array.from(scope.querySelectorAll(`[data-panel-resize-handle-id][data-panel-group-id="${groupId}"]`))}function getResizeHandleElementIndex(groupId,id2,scope=document){const index2=getResizeHandleElementsForGroup(groupId,scope).findIndex(handle=>handle.getAttribute("data-panel-resize-handle-id")===id2);return index2??null}function determinePivotIndices(groupId,dragHandleId,panelGroupElement){const index2=getResizeHandleElementIndex(groupId,dragHandleId,panelGroupElement);return index2!=null?[index2,index2+1]:[-1,-1]}function getPanelGroupElement(id2,rootElement=document){var _dataset;if(rootElement instanceof HTMLElement&&(rootElement==null||(_dataset=rootElement.dataset)===null||_dataset===void 0?void 0:_dataset.panelGroupId)==id2)return rootElement;const element=rootElement.querySelector(`[data-panel-group][data-panel-group-id="${id2}"]`);return element||null}function getResizeHandleElement(id2,scope=document){const element=scope.querySelector(`[data-panel-resize-handle-id="${id2}"]`);return element||null}function getResizeHandlePanelIds(groupId,handleId,panelsArray,scope=document){var _panelsArray$index$id,_panelsArray$index,_panelsArray$id,_panelsArray;const handle=getResizeHandleElement(handleId,scope),handles=getResizeHandleElementsForGroup(groupId,scope),index2=handle?handles.indexOf(handle):-1,idBefore=(_panelsArray$index$id=(_panelsArray$index=panelsArray[index2])===null||_panelsArray$index===void 0?void 0:_panelsArray$index.id)!==null&&_panelsArray$index$id!==void 0?_panelsArray$index$id:null,idAfter=(_panelsArray$id=(_panelsArray=panelsArray[index2+1])===null||_panelsArray===void 0?void 0:_panelsArray.id)!==null&&_panelsArray$id!==void 0?_panelsArray$id:null;return[idBefore,idAfter]}function useWindowSplitterPanelGroupBehavior({committedValuesRef,eagerValuesRef,groupId,layout,panelDataArray,panelGroupElement,setLayout}){useRef({didWarnAboutMissingResizeHandle:!1}),useIsomorphicLayoutEffect(()=>{if(!panelGroupElement)return;const resizeHandleElements=getResizeHandleElementsForGroup(groupId,panelGroupElement);for(let index2=0;index2<panelDataArray.length-1;index2++){const{valueMax,valueMin,valueNow}=calculateAriaValues({layout,panelsArray:panelDataArray,pivotIndices:[index2,index2+1]}),resizeHandleElement=resizeHandleElements[index2];if(resizeHandleElement!=null){const panelData=panelDataArray[index2];assert(panelData,`No panel data found for index "${index2}"`),resizeHandleElement.setAttribute("aria-controls",panelData.id),resizeHandleElement.setAttribute("aria-valuemax",""+Math.round(valueMax)),resizeHandleElement.setAttribute("aria-valuemin",""+Math.round(valueMin)),resizeHandleElement.setAttribute("aria-valuenow",valueNow!=null?""+Math.round(valueNow):"")}}return()=>{resizeHandleElements.forEach((resizeHandleElement,index2)=>{resizeHandleElement.removeAttribute("aria-controls"),resizeHandleElement.removeAttribute("aria-valuemax"),resizeHandleElement.removeAttribute("aria-valuemin"),resizeHandleElement.removeAttribute("aria-valuenow")})}},[groupId,layout,panelDataArray,panelGroupElement]),useEffect(()=>{if(!panelGroupElement)return;const eagerValues=eagerValuesRef.current;assert(eagerValues,"Eager values not found");const{panelDataArray:panelDataArray2}=eagerValues,groupElement=getPanelGroupElement(groupId,panelGroupElement);assert(groupElement!=null,`No group found for id "${groupId}"`);const handles=getResizeHandleElementsForGroup(groupId,panelGroupElement);assert(handles,`No resize handles found for group id "${groupId}"`);const cleanupFunctions=handles.map(handle=>{const handleId=handle.getAttribute("data-panel-resize-handle-id");assert(handleId,"Resize handle element has no handle id attribute");const[idBefore,idAfter]=getResizeHandlePanelIds(groupId,handleId,panelDataArray2,panelGroupElement);if(idBefore==null||idAfter==null)return()=>{};const onKeyDown=event=>{if(!event.defaultPrevented)switch(event.key){case"Enter":{event.preventDefault();const index2=panelDataArray2.findIndex(panelData=>panelData.id===idBefore);if(index2>=0){const panelData=panelDataArray2[index2];assert(panelData,`No panel data found for index ${index2}`);const size2=layout[index2],{collapsedSize=0,collapsible,minSize=0}=panelData.constraints;if(size2!=null&&collapsible){const nextLayout=adjustLayoutByDelta({delta:fuzzyNumbersEqual(size2,collapsedSize)?minSize-collapsedSize:collapsedSize-size2,initialLayout:layout,panelConstraints:panelDataArray2.map(panelData2=>panelData2.constraints),pivotIndices:determinePivotIndices(groupId,handleId,panelGroupElement),prevLayout:layout,trigger:"keyboard"});layout!==nextLayout&&setLayout(nextLayout)}}break}}};return handle.addEventListener("keydown",onKeyDown),()=>{handle.removeEventListener("keydown",onKeyDown)}});return()=>{cleanupFunctions.forEach(cleanupFunction=>cleanupFunction())}},[panelGroupElement,committedValuesRef,eagerValuesRef,groupId,layout,panelDataArray,setLayout])}function areEqual(arrayA,arrayB){if(arrayA.length!==arrayB.length)return!1;for(let index2=0;index2<arrayA.length;index2++)if(arrayA[index2]!==arrayB[index2])return!1;return!0}function getResizeEventCursorPosition(direction,event){const isHorizontal=direction==="horizontal",{x:x2,y:y2}=getResizeEventCoordinates(event);return isHorizontal?x2:y2}function calculateDragOffsetPercentage(event,dragHandleId,direction,initialDragState,panelGroupElement){const isHorizontal=direction==="horizontal",handleElement=getResizeHandleElement(dragHandleId,panelGroupElement);assert(handleElement,`No resize handle element found for id "${dragHandleId}"`);const groupId=handleElement.getAttribute("data-panel-group-id");assert(groupId,"Resize handle element has no group id attribute");let{initialCursorPosition}=initialDragState;const cursorPosition=getResizeEventCursorPosition(direction,event),groupElement=getPanelGroupElement(groupId,panelGroupElement);assert(groupElement,`No group element found for id "${groupId}"`);const groupRect=groupElement.getBoundingClientRect(),groupSizeInPixels=isHorizontal?groupRect.width:groupRect.height;return(cursorPosition-initialCursorPosition)/groupSizeInPixels*100}function calculateDeltaPercentage(event,dragHandleId,direction,initialDragState,keyboardResizeBy,panelGroupElement){if(isKeyDown(event)){const isHorizontal=direction==="horizontal";let delta=0;event.shiftKey?delta=100:keyboardResizeBy!=null?delta=keyboardResizeBy:delta=10;let movement=0;switch(event.key){case"ArrowDown":movement=isHorizontal?0:delta;break;case"ArrowLeft":movement=isHorizontal?-delta:0;break;case"ArrowRight":movement=isHorizontal?delta:0;break;case"ArrowUp":movement=isHorizontal?0:-delta;break;case"End":movement=100;break;case"Home":movement=-100;break}return movement}else return initialDragState==null?0:calculateDragOffsetPercentage(event,dragHandleId,direction,initialDragState,panelGroupElement)}function calculateUnsafeDefaultLayout({panelDataArray}){const layout=Array(panelDataArray.length),panelConstraintsArray=panelDataArray.map(panelData=>panelData.constraints);let numPanelsWithSizes=0,remainingSize=100;for(let index2=0;index2<panelDataArray.length;index2++){const panelConstraints=panelConstraintsArray[index2];assert(panelConstraints,`Panel constraints not found for index ${index2}`);const{defaultSize:defaultSize2}=panelConstraints;defaultSize2!=null&&(numPanelsWithSizes++,layout[index2]=defaultSize2,remainingSize-=defaultSize2)}for(let index2=0;index2<panelDataArray.length;index2++){const panelConstraints=panelConstraintsArray[index2];assert(panelConstraints,`Panel constraints not found for index ${index2}`);const{defaultSize:defaultSize2}=panelConstraints;if(defaultSize2!=null)continue;const numRemainingPanels=panelDataArray.length-numPanelsWithSizes,size2=remainingSize/numRemainingPanels;numPanelsWithSizes++,layout[index2]=size2,remainingSize-=size2}return layout}function callPanelCallbacks(panelsArray,layout,panelIdToLastNotifiedSizeMap){layout.forEach((size2,index2)=>{const panelData=panelsArray[index2];assert(panelData,`Panel data not found for index ${index2}`);const{callbacks,constraints,id:panelId}=panelData,{collapsedSize=0,collapsible}=constraints,lastNotifiedSize=panelIdToLastNotifiedSizeMap[panelId];if(lastNotifiedSize==null||size2!==lastNotifiedSize){panelIdToLastNotifiedSizeMap[panelId]=size2;const{onCollapse,onExpand,onResize}=callbacks;onResize&&onResize(size2,lastNotifiedSize),collapsible&&(onCollapse||onExpand)&&(onExpand&&(lastNotifiedSize==null||fuzzyNumbersEqual$1(lastNotifiedSize,collapsedSize))&&!fuzzyNumbersEqual$1(size2,collapsedSize)&&onExpand(),onCollapse&&(lastNotifiedSize==null||!fuzzyNumbersEqual$1(lastNotifiedSize,collapsedSize))&&fuzzyNumbersEqual$1(size2,collapsedSize)&&onCollapse())}})}function compareLayouts(a2,b2){if(a2.length!==b2.length)return!1;for(let index2=0;index2<a2.length;index2++)if(a2[index2]!=b2[index2])return!1;return!0}function computePanelFlexBoxStyle({defaultSize:defaultSize2,dragState,layout,panelData,panelIndex,precision=3}){const size2=layout[panelIndex];let flexGrow;return size2==null?flexGrow=defaultSize2!=null?defaultSize2.toPrecision(precision):"1":panelData.length===1?flexGrow="1":flexGrow=size2.toPrecision(precision),{flexBasis:0,flexGrow,flexShrink:1,overflow:"hidden",pointerEvents:dragState!==null?"none":void 0}}function debounce(callback,durationMs=10){let timeoutId=null;return(...args)=>{timeoutId!==null&&clearTimeout(timeoutId),timeoutId=setTimeout(()=>{callback(...args)},durationMs)}}function initializeDefaultStorage(storageObject){try{if(typeof localStorage<"u")storageObject.getItem=name=>localStorage.getItem(name),storageObject.setItem=(name,value)=>{localStorage.setItem(name,value)};else throw new Error("localStorage not supported in this environment")}catch(error){console.error(error),storageObject.getItem=()=>null,storageObject.setItem=()=>{}}}function getPanelGroupKey(autoSaveId){return`react-resizable-panels:${autoSaveId}`}function getPanelKey(panels){return panels.map(panel2=>{const{constraints,id:id2,idIsFromProps,order}=panel2;return idIsFromProps?id2:order?`${order}:${JSON.stringify(constraints)}`:JSON.stringify(constraints)}).sort((a2,b2)=>a2.localeCompare(b2)).join(",")}function loadSerializedPanelGroupState(autoSaveId,storage){try{const panelGroupKey=getPanelGroupKey(autoSaveId),serialized=storage.getItem(panelGroupKey);if(serialized){const parsed=JSON.parse(serialized);if(typeof parsed=="object"&&parsed!=null)return parsed}}catch{}return null}function loadPanelGroupState(autoSaveId,panels,storage){var _loadSerializedPanelG,_state$panelKey;const state=(_loadSerializedPanelG=loadSerializedPanelGroupState(autoSaveId,storage))!==null&&_loadSerializedPanelG!==void 0?_loadSerializedPanelG:{},panelKey=getPanelKey(panels);return(_state$panelKey=state[panelKey])!==null&&_state$panelKey!==void 0?_state$panelKey:null}function savePanelGroupState(autoSaveId,panels,panelSizesBeforeCollapse,sizes,storage){var _loadSerializedPanelG2;const panelGroupKey=getPanelGroupKey(autoSaveId),panelKey=getPanelKey(panels),state=(_loadSerializedPanelG2=loadSerializedPanelGroupState(autoSaveId,storage))!==null&&_loadSerializedPanelG2!==void 0?_loadSerializedPanelG2:{};state[panelKey]={expandToSizes:Object.fromEntries(panelSizesBeforeCollapse.entries()),layout:sizes};try{storage.setItem(panelGroupKey,JSON.stringify(state))}catch(error){console.error(error)}}function validatePanelGroupLayout({layout:prevLayout,panelConstraints}){const nextLayout=[...prevLayout],nextLayoutTotalSize=nextLayout.reduce((accumulated,current)=>accumulated+current,0);if(nextLayout.length!==panelConstraints.length)throw Error(`Invalid ${panelConstraints.length} panel layout: ${nextLayout.map(size2=>`${size2}%`).join(", ")}`);if(!fuzzyNumbersEqual(nextLayoutTotalSize,100))for(let index2=0;index2<panelConstraints.length;index2++){const unsafeSize=nextLayout[index2];assert(unsafeSize!=null,`No layout data found for index ${index2}`);const safeSize=100/nextLayoutTotalSize*unsafeSize;nextLayout[index2]=safeSize}let remainingSize=0;for(let index2=0;index2<panelConstraints.length;index2++){const unsafeSize=nextLayout[index2];assert(unsafeSize!=null,`No layout data found for index ${index2}`);const safeSize=resizePanel({panelConstraints,panelIndex:index2,size:unsafeSize});unsafeSize!=safeSize&&(remainingSize+=unsafeSize-safeSize,nextLayout[index2]=safeSize)}if(!fuzzyNumbersEqual(remainingSize,0))for(let index2=0;index2<panelConstraints.length;index2++){const prevSize=nextLayout[index2];assert(prevSize!=null,`No layout data found for index ${index2}`);const unsafeSize=prevSize+remainingSize,safeSize=resizePanel({panelConstraints,panelIndex:index2,size:unsafeSize});if(prevSize!==safeSize&&(remainingSize-=safeSize-prevSize,nextLayout[index2]=safeSize,fuzzyNumbersEqual(remainingSize,0)))break}return nextLayout}const LOCAL_STORAGE_DEBOUNCE_INTERVAL=100,defaultStorage={getItem:name=>(initializeDefaultStorage(defaultStorage),defaultStorage.getItem(name)),setItem:(name,value)=>{initializeDefaultStorage(defaultStorage),defaultStorage.setItem(name,value)}},debounceMap={};function PanelGroupWithForwardedRef({autoSaveId=null,children:children2,className:classNameFromProps="",direction,forwardedRef,id:idFromProps=null,onLayout=null,keyboardResizeBy=null,storage=defaultStorage,style:styleFromProps,tagName:Type="div",...rest}){const groupId=useUniqueId(idFromProps),panelGroupElementRef=useRef(null),[dragState,setDragState]=useState(null),[layout,setLayout]=useState([]),panelIdToLastNotifiedSizeMapRef=useRef({}),panelSizeBeforeCollapseRef=useRef(new Map),prevDeltaRef=useRef(0),committedValuesRef=useRef({autoSaveId,direction,dragState,id:groupId,keyboardResizeBy,onLayout,storage}),eagerValuesRef=useRef({layout,panelDataArray:[],panelDataArrayChanged:!1});useRef({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),useImperativeHandle(forwardedRef,()=>({getId:()=>committedValuesRef.current.id,getLayout:()=>{const{layout:layout2}=eagerValuesRef.current;return layout2},setLayout:unsafeLayout=>{const{onLayout:onLayout2}=committedValuesRef.current,{layout:prevLayout,panelDataArray}=eagerValuesRef.current,safeLayout=validatePanelGroupLayout({layout:unsafeLayout,panelConstraints:panelDataArray.map(panelData=>panelData.constraints)});areEqual(prevLayout,safeLayout)||(setLayout(safeLayout),eagerValuesRef.current.layout=safeLayout,onLayout2&&onLayout2(safeLayout),callPanelCallbacks(panelDataArray,safeLayout,panelIdToLastNotifiedSizeMapRef.current))}}),[]),useIsomorphicLayoutEffect(()=>{committedValuesRef.current.autoSaveId=autoSaveId,committedValuesRef.current.direction=direction,committedValuesRef.current.dragState=dragState,committedValuesRef.current.id=groupId,committedValuesRef.current.onLayout=onLayout,committedValuesRef.current.storage=storage}),useWindowSplitterPanelGroupBehavior({committedValuesRef,eagerValuesRef,groupId,layout,panelDataArray:eagerValuesRef.current.panelDataArray,setLayout,panelGroupElement:panelGroupElementRef.current}),useEffect(()=>{const{panelDataArray}=eagerValuesRef.current;if(autoSaveId){if(layout.length===0||layout.length!==panelDataArray.length)return;let debouncedSave=debounceMap[autoSaveId];debouncedSave==null&&(debouncedSave=debounce(savePanelGroupState,LOCAL_STORAGE_DEBOUNCE_INTERVAL),debounceMap[autoSaveId]=debouncedSave);const clonedPanelDataArray=[...panelDataArray],clonedPanelSizesBeforeCollapse=new Map(panelSizeBeforeCollapseRef.current);debouncedSave(autoSaveId,clonedPanelDataArray,clonedPanelSizesBeforeCollapse,layout,storage)}},[autoSaveId,layout,storage]),useEffect(()=>{});const collapsePanel=useCallback(panelData=>{const{onLayout:onLayout2}=committedValuesRef.current,{layout:prevLayout,panelDataArray}=eagerValuesRef.current;if(panelData.constraints.collapsible){const panelConstraintsArray=panelDataArray.map(panelData2=>panelData2.constraints),{collapsedSize=0,panelSize,pivotIndices}=panelDataHelper(panelDataArray,panelData,prevLayout);if(assert(panelSize!=null,`Panel size not found for panel "${panelData.id}"`),!fuzzyNumbersEqual$1(panelSize,collapsedSize)){panelSizeBeforeCollapseRef.current.set(panelData.id,panelSize);const delta=findPanelDataIndex(panelDataArray,panelData)===panelDataArray.length-1?panelSize-collapsedSize:collapsedSize-panelSize,nextLayout=adjustLayoutByDelta({delta,initialLayout:prevLayout,panelConstraints:panelConstraintsArray,pivotIndices,prevLayout,trigger:"imperative-api"});compareLayouts(prevLayout,nextLayout)||(setLayout(nextLayout),eagerValuesRef.current.layout=nextLayout,onLayout2&&onLayout2(nextLayout),callPanelCallbacks(panelDataArray,nextLayout,panelIdToLastNotifiedSizeMapRef.current))}}},[]),expandPanel=useCallback((panelData,minSizeOverride)=>{const{onLayout:onLayout2}=committedValuesRef.current,{layout:prevLayout,panelDataArray}=eagerValuesRef.current;if(panelData.constraints.collapsible){const panelConstraintsArray=panelDataArray.map(panelData2=>panelData2.constraints),{collapsedSize=0,panelSize=0,minSize:minSizeFromProps=0,pivotIndices}=panelDataHelper(panelDataArray,panelData,prevLayout),minSize=minSizeOverride??minSizeFromProps;if(fuzzyNumbersEqual$1(panelSize,collapsedSize)){const prevPanelSize=panelSizeBeforeCollapseRef.current.get(panelData.id),baseSize=prevPanelSize!=null&&prevPanelSize>=minSize?prevPanelSize:minSize,delta=findPanelDataIndex(panelDataArray,panelData)===panelDataArray.length-1?panelSize-baseSize:baseSize-panelSize,nextLayout=adjustLayoutByDelta({delta,initialLayout:prevLayout,panelConstraints:panelConstraintsArray,pivotIndices,prevLayout,trigger:"imperative-api"});compareLayouts(prevLayout,nextLayout)||(setLayout(nextLayout),eagerValuesRef.current.layout=nextLayout,onLayout2&&onLayout2(nextLayout),callPanelCallbacks(panelDataArray,nextLayout,panelIdToLastNotifiedSizeMapRef.current))}}},[]),getPanelSize=useCallback(panelData=>{const{layout:layout2,panelDataArray}=eagerValuesRef.current,{panelSize}=panelDataHelper(panelDataArray,panelData,layout2);return assert(panelSize!=null,`Panel size not found for panel "${panelData.id}"`),panelSize},[]),getPanelStyle=useCallback((panelData,defaultSize2)=>{const{panelDataArray}=eagerValuesRef.current,panelIndex=findPanelDataIndex(panelDataArray,panelData);return computePanelFlexBoxStyle({defaultSize:defaultSize2,dragState,layout,panelData:panelDataArray,panelIndex})},[dragState,layout]),isPanelCollapsed=useCallback(panelData=>{const{layout:layout2,panelDataArray}=eagerValuesRef.current,{collapsedSize=0,collapsible,panelSize}=panelDataHelper(panelDataArray,panelData,layout2);return assert(panelSize!=null,`Panel size not found for panel "${panelData.id}"`),collapsible===!0&&fuzzyNumbersEqual$1(panelSize,collapsedSize)},[]),isPanelExpanded=useCallback(panelData=>{const{layout:layout2,panelDataArray}=eagerValuesRef.current,{collapsedSize=0,collapsible,panelSize}=panelDataHelper(panelDataArray,panelData,layout2);return assert(panelSize!=null,`Panel size not found for panel "${panelData.id}"`),!collapsible||fuzzyCompareNumbers(panelSize,collapsedSize)>0},[]),registerPanel=useCallback(panelData=>{const{panelDataArray}=eagerValuesRef.current;panelDataArray.push(panelData),panelDataArray.sort((panelA,panelB)=>{const orderA=panelA.order,orderB=panelB.order;return orderA==null&&orderB==null?0:orderA==null?-1:orderB==null?1:orderA-orderB}),eagerValuesRef.current.panelDataArrayChanged=!0},[]);useIsomorphicLayoutEffect(()=>{if(eagerValuesRef.current.panelDataArrayChanged){eagerValuesRef.current.panelDataArrayChanged=!1;const{autoSaveId:autoSaveId2,onLayout:onLayout2,storage:storage2}=committedValuesRef.current,{layout:prevLayout,panelDataArray}=eagerValuesRef.current;let unsafeLayout=null;if(autoSaveId2){const state=loadPanelGroupState(autoSaveId2,panelDataArray,storage2);state&&(panelSizeBeforeCollapseRef.current=new Map(Object.entries(state.expandToSizes)),unsafeLayout=state.layout)}unsafeLayout==null&&(unsafeLayout=calculateUnsafeDefaultLayout({panelDataArray}));const nextLayout=validatePanelGroupLayout({layout:unsafeLayout,panelConstraints:panelDataArray.map(panelData=>panelData.constraints)});areEqual(prevLayout,nextLayout)||(setLayout(nextLayout),eagerValuesRef.current.layout=nextLayout,onLayout2&&onLayout2(nextLayout),callPanelCallbacks(panelDataArray,nextLayout,panelIdToLastNotifiedSizeMapRef.current))}}),useIsomorphicLayoutEffect(()=>{const eagerValues=eagerValuesRef.current;return()=>{eagerValues.layout=[]}},[]);const registerResizeHandle2=useCallback(dragHandleId=>function(event){event.preventDefault();const panelGroupElement=panelGroupElementRef.current;if(!panelGroupElement)return()=>null;const{direction:direction2,dragState:dragState2,id:groupId2,keyboardResizeBy:keyboardResizeBy2,onLayout:onLayout2}=committedValuesRef.current,{layout:prevLayout,panelDataArray}=eagerValuesRef.current,{initialLayout}=dragState2??{},pivotIndices=determinePivotIndices(groupId2,dragHandleId,panelGroupElement);let delta=calculateDeltaPercentage(event,dragHandleId,direction2,dragState2,keyboardResizeBy2,panelGroupElement);if(delta===0)return;const isHorizontal=direction2==="horizontal";document.dir==="rtl"&&isHorizontal&&(delta=-delta);const panelConstraints=panelDataArray.map(panelData=>panelData.constraints),nextLayout=adjustLayoutByDelta({delta,initialLayout:initialLayout??prevLayout,panelConstraints,pivotIndices,prevLayout,trigger:isKeyDown(event)?"keyboard":"mouse-or-touch"}),layoutChanged=!compareLayouts(prevLayout,nextLayout);(isPointerEvent(event)||isMouseEvent(event))&&prevDeltaRef.current!=delta&&(prevDeltaRef.current=delta,layoutChanged?reportConstraintsViolation(dragHandleId,0):isHorizontal?reportConstraintsViolation(dragHandleId,delta<0?EXCEEDED_HORIZONTAL_MIN:EXCEEDED_HORIZONTAL_MAX):reportConstraintsViolation(dragHandleId,delta<0?EXCEEDED_VERTICAL_MIN:EXCEEDED_VERTICAL_MAX)),layoutChanged&&(setLayout(nextLayout),eagerValuesRef.current.layout=nextLayout,onLayout2&&onLayout2(nextLayout),callPanelCallbacks(panelDataArray,nextLayout,panelIdToLastNotifiedSizeMapRef.current))},[]),resizePanel2=useCallback((panelData,unsafePanelSize)=>{const{onLayout:onLayout2}=committedValuesRef.current,{layout:prevLayout,panelDataArray}=eagerValuesRef.current,panelConstraintsArray=panelDataArray.map(panelData2=>panelData2.constraints),{panelSize,pivotIndices}=panelDataHelper(panelDataArray,panelData,prevLayout);assert(panelSize!=null,`Panel size not found for panel "${panelData.id}"`);const delta=findPanelDataIndex(panelDataArray,panelData)===panelDataArray.length-1?panelSize-unsafePanelSize:unsafePanelSize-panelSize,nextLayout=adjustLayoutByDelta({delta,initialLayout:prevLayout,panelConstraints:panelConstraintsArray,pivotIndices,prevLayout,trigger:"imperative-api"});compareLayouts(prevLayout,nextLayout)||(setLayout(nextLayout),eagerValuesRef.current.layout=nextLayout,onLayout2&&onLayout2(nextLayout),callPanelCallbacks(panelDataArray,nextLayout,panelIdToLastNotifiedSizeMapRef.current))},[]),reevaluatePanelConstraints=useCallback((panelData,prevConstraints)=>{const{layout:layout2,panelDataArray}=eagerValuesRef.current,{collapsedSize:prevCollapsedSize=0,collapsible:prevCollapsible}=prevConstraints,{collapsedSize:nextCollapsedSize=0,collapsible:nextCollapsible,maxSize:nextMaxSize=100,minSize:nextMinSize=0}=panelData.constraints,{panelSize:prevPanelSize}=panelDataHelper(panelDataArray,panelData,layout2);prevPanelSize!=null&&(prevCollapsible&&nextCollapsible&&fuzzyNumbersEqual$1(prevPanelSize,prevCollapsedSize)?fuzzyNumbersEqual$1(prevCollapsedSize,nextCollapsedSize)||resizePanel2(panelData,nextCollapsedSize):prevPanelSize<nextMinSize?resizePanel2(panelData,nextMinSize):prevPanelSize>nextMaxSize&&resizePanel2(panelData,nextMaxSize))},[resizePanel2]),startDragging=useCallback((dragHandleId,event)=>{const{direction:direction2}=committedValuesRef.current,{layout:layout2}=eagerValuesRef.current;if(!panelGroupElementRef.current)return;const handleElement=getResizeHandleElement(dragHandleId,panelGroupElementRef.current);assert(handleElement,`Drag handle element not found for id "${dragHandleId}"`);const initialCursorPosition=getResizeEventCursorPosition(direction2,event);setDragState({dragHandleId,dragHandleRect:handleElement.getBoundingClientRect(),initialCursorPosition,initialLayout:layout2})},[]),stopDragging=useCallback(()=>{setDragState(null)},[]),unregisterPanel=useCallback(panelData=>{const{panelDataArray}=eagerValuesRef.current,index2=findPanelDataIndex(panelDataArray,panelData);index2>=0&&(panelDataArray.splice(index2,1),delete panelIdToLastNotifiedSizeMapRef.current[panelData.id],eagerValuesRef.current.panelDataArrayChanged=!0)},[]),context=useMemo(()=>({collapsePanel,direction,dragState,expandPanel,getPanelSize,getPanelStyle,groupId,isPanelCollapsed,isPanelExpanded,reevaluatePanelConstraints,registerPanel,registerResizeHandle:registerResizeHandle2,resizePanel:resizePanel2,startDragging,stopDragging,unregisterPanel,panelGroupElement:panelGroupElementRef.current}),[collapsePanel,dragState,direction,expandPanel,getPanelSize,getPanelStyle,groupId,isPanelCollapsed,isPanelExpanded,reevaluatePanelConstraints,registerPanel,registerResizeHandle2,resizePanel2,startDragging,stopDragging,unregisterPanel]),style2={display:"flex",flexDirection:direction==="horizontal"?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return createElement(PanelGroupContext.Provider,{value:context},createElement(Type,{...rest,children:children2,className:classNameFromProps,id:idFromProps,ref:panelGroupElementRef,style:{...style2,...styleFromProps},"data-panel-group":"","data-panel-group-direction":direction,"data-panel-group-id":groupId}))}const PanelGroup=forwardRef((props2,ref)=>createElement(PanelGroupWithForwardedRef,{...props2,forwardedRef:ref}));PanelGroupWithForwardedRef.displayName="PanelGroup";PanelGroup.displayName="forwardRef(PanelGroup)";function findPanelDataIndex(panelDataArray,panelData){return panelDataArray.findIndex(prevPanelData=>prevPanelData===panelData||prevPanelData.id===panelData.id)}function panelDataHelper(panelDataArray,panelData,layout){const panelIndex=findPanelDataIndex(panelDataArray,panelData),pivotIndices=panelIndex===panelDataArray.length-1?[panelIndex-1,panelIndex]:[panelIndex,panelIndex+1],panelSize=layout[panelIndex];return{...panelData.constraints,panelSize,pivotIndices}}function useWindowSplitterResizeHandlerBehavior({disabled,handleId,resizeHandler,panelGroupElement}){useEffect(()=>{if(disabled||resizeHandler==null||panelGroupElement==null)return;const handleElement=getResizeHandleElement(handleId,panelGroupElement);if(handleElement==null)return;const onKeyDown=event=>{if(!event.defaultPrevented)switch(event.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":{event.preventDefault(),resizeHandler(event);break}case"F6":{event.preventDefault();const groupId=handleElement.getAttribute("data-panel-group-id");assert(groupId,`No group element found for id "${groupId}"`);const handles=getResizeHandleElementsForGroup(groupId,panelGroupElement),index2=getResizeHandleElementIndex(groupId,handleId,panelGroupElement);assert(index2!==null,`No resize element found for id "${handleId}"`);const nextIndex=event.shiftKey?index2>0?index2-1:handles.length-1:index2+1<handles.length?index2+1:0;handles[nextIndex].focus();break}}};return handleElement.addEventListener("keydown",onKeyDown),()=>{handleElement.removeEventListener("keydown",onKeyDown)}},[panelGroupElement,disabled,handleId,resizeHandler])}function PanelResizeHandle({children:children2=null,className:classNameFromProps="",disabled=!1,hitAreaMargins,id:idFromProps,onBlur,onDragging,onFocus,style:styleFromProps={},tabIndex=0,tagName:Type="div",...rest}){var _hitAreaMargins$coars,_hitAreaMargins$fine;const elementRef=useRef(null),callbacksRef=useRef({onDragging});useEffect(()=>{callbacksRef.current.onDragging=onDragging});const panelGroupContext=useContext(PanelGroupContext);if(panelGroupContext===null)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{direction,groupId,registerResizeHandle:registerResizeHandleWithParentGroup,startDragging,stopDragging,panelGroupElement}=panelGroupContext,resizeHandleId=useUniqueId(idFromProps),[state,setState]=useState("inactive"),[isFocused,setIsFocused]=useState(!1),[resizeHandler,setResizeHandler]=useState(null),committedValuesRef=useRef({state});useIsomorphicLayoutEffect(()=>{committedValuesRef.current.state=state}),useEffect(()=>{if(disabled)setResizeHandler(null);else{const resizeHandler2=registerResizeHandleWithParentGroup(resizeHandleId);setResizeHandler(()=>resizeHandler2)}},[disabled,resizeHandleId,registerResizeHandleWithParentGroup]);const coarseHitAreaMargins=(_hitAreaMargins$coars=hitAreaMargins?.coarse)!==null&&_hitAreaMargins$coars!==void 0?_hitAreaMargins$coars:15,fineHitAreaMargins=(_hitAreaMargins$fine=hitAreaMargins?.fine)!==null&&_hitAreaMargins$fine!==void 0?_hitAreaMargins$fine:5;return useEffect(()=>{if(disabled||resizeHandler==null)return;const element=elementRef.current;return assert(element,"Element ref not attached"),registerResizeHandle(resizeHandleId,element,direction,{coarse:coarseHitAreaMargins,fine:fineHitAreaMargins},(action,isActive,event)=>{if(isActive)switch(action){case"down":{setState("drag"),startDragging(resizeHandleId,event);const{onDragging:onDragging2}=callbacksRef.current;onDragging2&&onDragging2(!0);break}case"move":{const{state:state2}=committedValuesRef.current;state2!=="drag"&&setState("hover"),resizeHandler(event);break}case"up":{setState("hover"),stopDragging();const{onDragging:onDragging2}=callbacksRef.current;onDragging2&&onDragging2(!1);break}}else setState("inactive")})},[coarseHitAreaMargins,direction,disabled,fineHitAreaMargins,registerResizeHandleWithParentGroup,resizeHandleId,resizeHandler,startDragging,stopDragging]),useWindowSplitterResizeHandlerBehavior({disabled,handleId:resizeHandleId,resizeHandler,panelGroupElement}),createElement(Type,{...rest,children:children2,className:classNameFromProps,id:idFromProps,onBlur:()=>{setIsFocused(!1),onBlur?.()},onFocus:()=>{setIsFocused(!0),onFocus?.()},ref:elementRef,role:"separator",style:{...{touchAction:"none",userSelect:"none"},...styleFromProps},tabIndex,"data-panel-group-direction":direction,"data-panel-group-id":groupId,"data-resize-handle":"","data-resize-handle-active":state==="drag"?"pointer":isFocused?"keyboard":void 0,"data-resize-handle-state":state,"data-panel-resize-handle-enabled":!disabled,"data-panel-resize-handle-id":resizeHandleId})}PanelResizeHandle.displayName="PanelResizeHandle";function CopyButton({text}){return jsx(CopyButton$1,{value:text,timeout:2e3,children:({copied,copy})=>jsx(Tooltip,{label:copied?"Copied":"Copy",withArrow:!0,position:"right",children:jsx(ActionIcon,{color:copied?"teal":"gray",variant:copied?"light":"subtle",onClick:copy,children:copied?jsx(IconCheck,{style:{width:rem(16)}}):jsx(IconCopy,{style:{width:rem(16)}})})})})}function CopyToClipboard({text}){return jsx(Box,{pos:"absolute",top:"0",right:"0",p:"4",children:jsx(CopyButton,{text})})}var cssScrollArea="_5k2wbq0",cssCodeBlock="_5k2wbq1",viewWithTopPadding="_5k2wbq2";const Route$3=createFileRoute("/view/$viewId/mmd")({component:ViewAsMmd,loader:async({params})=>{const{viewId}=params;try{const{mmdSource}=await __vitePreload(async()=>{const{mmdSource:mmdSource2}=await import("./-view-lazy-data-BinAQ6yB.js");return{mmdSource:mmdSource2}},[]);return{source:mmdSource(viewId)}}catch{throw notFound()}}}),renderSvg=async(viewId,diagram)=>{const{default:mermaid}=await __vitePreload(async()=>{const{default:mermaid2}=await import("https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs");return{default:mermaid2}},[]);mermaid.initialize({theme:"dark"});const{svg}=await mermaid.render(viewId,diagram);return svg};function ViewAsMmd(){const{viewId}=Route$3.useParams(),{source}=Route$3.useLoaderData(),[mmdSvg,{execute}]=useAsync(renderSvg,null);return useEffect$1(()=>{execute(viewId,source)},[source]),jsxs(PanelGroup,{className:viewWithTopPadding,direction:"horizontal",autoSaveId:"viewAsMmd",children:[jsx(Panel,{children:jsxs(ScrollArea,{className:cssScrollArea,p:5,styles:{viewport:{borderRadius:6}},children:[jsx(Code,{block:!0,className:cssCodeBlock,children:source}),jsx(CopyToClipboard,{text:source})]})}),jsx(PanelResizeHandle,{style:{width:10}}),jsx(Panel,{children:jsx(ScrollArea,{h:"100%",children:mmdSvg.result&&jsx("div",{className:svgContainer,dangerouslySetInnerHTML:{__html:mmdSvg.result}})})})]})}const Route$2=createFileRoute("/view/$viewId/editor")({component:ViewEditor});function ViewEditor(){const router=useRouter(),{viewId}=Route$2.useParams(),view=useLikeC4View(viewId),onNavigateTo=useCallbackRef(viewId2=>{router.navigate({to:"/view/$viewId/editor",params:{viewId:viewId2},startTransition:!0,search:!0})}),onChange=useCallbackRef(event=>{console.log("onChange",event)});if(!view)throw notFound();return jsx(LikeC4Diagram,{view,readonly:!1,nodesDraggable:!0,experimentalEdgeEditing:!0,showNavigationButtons:!0,fitViewPadding:.08,onNavigateTo,renderIcon:RenderIcon,...DEV&&{onChange}})}const Route$1=createFileRoute("/view/$viewId/dot")({component:ViewAsDot,loader:async({params})=>{const{viewId}=params;try{const{dotSource,svgSource}=await __vitePreload(async()=>{const{dotSource:dotSource2,svgSource:svgSource2}=await import("./-view-lazy-data-BinAQ6yB.js");return{dotSource:dotSource2,svgSource:svgSource2}},[]),dot=dotSource(viewId),dotSvg=svgSource(viewId);return{dot,dotSvg}}catch(error){throw console.error(error),notFound()}}});function ViewAsDot(){const{dot,dotSvg}=Route$1.useLoaderData();return jsxs(PanelGroup,{className:viewWithTopPadding,direction:"horizontal",autoSaveId:"viewAsDot",children:[jsx(Panel,{children:jsxs(ScrollArea,{className:cssScrollArea,p:5,styles:{viewport:{borderRadius:6}},children:[jsx(Code,{block:!0,className:cssCodeBlock,children:dot}),jsx(CopyToClipboard,{text:dot})]})}),jsx(PanelResizeHandle,{style:{width:10}}),jsx(Panel,{children:jsx(ScrollArea,{h:"100%",children:jsx("div",{className:svgContainer,dangerouslySetInnerHTML:{__html:dotSvg}})})})]})}const Route2=createFileRoute("/view/$viewId/d2")({component:ViewAsD2,loader:async({params})=>{const{viewId}=params;try{const{d2Source}=await __vitePreload(async()=>{const{d2Source:d2Source2}=await import("./-view-lazy-data-BinAQ6yB.js");return{d2Source:d2Source2}},[]);return{source:d2Source(viewId)}}catch{throw notFound()}}});function ViewAsD2(){const{source}=Route2.useLoaderData();return jsxs(PanelGroup,{className:viewWithTopPadding,direction:"horizontal",autoSaveId:"viewAsD2",children:[jsx(Panel,{children:jsxs(ScrollArea,{className:cssScrollArea,p:5,styles:{viewport:{borderRadius:6}},children:[jsx(Code,{block:!0,className:cssCodeBlock,children:source}),jsx(CopyToClipboard,{text:source})]})}),jsx(PanelResizeHandle,{style:{width:10}}),jsx(Panel,{children:jsx(ScrollArea,{h:"100%"})})]})}const IndexRoute=Route$9.update({path:"/",getParentRoute:()=>Route$a}),WebcomponentSplatRoute=Route$8.update({path:"/webcomponent/$",getParentRoute:()=>Route$a}),ViewViewIdRoute=Route$7.update({path:"/view/$viewId",getParentRoute:()=>Route$a}),ExportViewIdRoute=Route$6.update({path:"/export/$viewId",getParentRoute:()=>Route$a}),EmbedViewIdRoute=Route$5.update({path:"/embed/$viewId",getParentRoute:()=>Route$a}),ViewViewIdIndexRoute=Route$4.update({path:"/",getParentRoute:()=>ViewViewIdRoute}),ViewViewIdMmdRoute=Route$3.update({path:"/mmd",getParentRoute:()=>ViewViewIdRoute}),ViewViewIdEditorRoute=Route$2.update({path:"/editor",getParentRoute:()=>ViewViewIdRoute}),ViewViewIdDotRoute=Route$1.update({path:"/dot",getParentRoute:()=>ViewViewIdRoute}),ViewViewIdD2Route=Route2.update({path:"/d2",getParentRoute:()=>ViewViewIdRoute}),routeTree=Route$a.addChildren({IndexRoute,EmbedViewIdRoute,ExportViewIdRoute,ViewViewIdRoute:ViewViewIdRoute.addChildren({ViewViewIdD2Route,ViewViewIdDotRoute,ViewViewIdEditorRoute,ViewViewIdMmdRoute,ViewViewIdIndexRoute}),WebcomponentSplatRoute});function createRouter(){return createRouter$1({routeTree,context:{},basepath,trailingSlash:"preserve",history:useHashHistory?createHashHistory():createBrowserHistory(),defaultPreload:!1,defaultNotFoundComponent:()=>jsx(NotFound,{})})}function Routes(){const router=useMemo$1(()=>createRouter(),[]);return jsx(RouterProvider,{router})}createRoot(document.getElementById("like4-root")).render(jsx(StrictMode,{children:jsx(Routes,{})}));
|