@vellumai/web 0.8.9-staging.3 → 0.8.9-staging.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{account-page-JOmrd7O5.js → account-page-DLWgiDpL.js} +1 -1
- package/dist/assets/add-credits-modal-KR3l-hlL.js +1 -0
- package/dist/assets/{advanced-page-DfQKcHki.js → advanced-page-CM1prrIX.js} +1 -1
- package/dist/assets/ai-page-DfYw7V-1.js +1 -0
- package/dist/assets/{api-key-screen-BFaPTjaE.js → api-key-screen-_pmVhsup.js} +1 -1
- package/dist/assets/{archive-page-BA9_f8tE.js → archive-page-C3-LAH2o.js} +1 -1
- package/dist/assets/{assistant-status-panel-B2a_ey3l.js → assistant-status-panel-AFf9Mjwp.js} +1 -1
- package/dist/assets/auth-store-CiQCAKS1.js +6 -0
- package/dist/assets/billing-page-o68CnS02.js +34 -0
- package/dist/assets/{chunk-5KNZJZUH-B4b1m-Ya.js → chunk-5KNZJZUH-DdS6bb-3.js} +2 -2
- package/dist/assets/{command-palette-BiZB4OSo.js → command-palette-BcHAzecz.js} +1 -1
- package/dist/assets/{community-page-j-8N5lFa.js → community-page-BCX3CsOx.js} +1 -1
- package/dist/assets/{connect-page-zFzMI9NA.js → connect-page-DXB8Xkpw.js} +1 -1
- package/dist/assets/{contacts-gateway-DjUsIJ09.js → contacts-gateway-DBRvewkn.js} +1 -1
- package/dist/assets/contacts-page-route-8pMuZN4b.js +1 -0
- package/dist/assets/danger-zone-redirect-page-G9ozZFrR.js +1 -0
- package/dist/assets/debug-page-CS2bRZp9.js +3 -0
- package/dist/assets/deploy-dialogs-EImApd6S.js +1 -0
- package/dist/assets/{developer-page-CZfUJHd7.js → developer-page-C6j4GZcn.js} +1 -1
- package/dist/assets/devices-page-C1id1sIt.js +1 -0
- package/dist/assets/{document-viewer-page-DP01_kUJ.js → document-viewer-page-D-zkJQlm.js} +1 -1
- package/dist/assets/{earn-credits-modal-QwO92K15.js → earn-credits-modal-RXLM_09P.js} +1 -1
- package/dist/assets/{emails-page-Bqv0y6Lp.js → emails-page-BFlPmeFT.js} +1 -1
- package/dist/assets/general-page-q3bvwcHU.js +1 -0
- package/dist/assets/{hatching-screen-B8RlGI3J.js → hatching-screen-6TxMgPxR.js} +1 -1
- package/dist/assets/home-page-route-mDiWda9f.js +1 -0
- package/dist/assets/{hosting-screen-DoltpG5X.js → hosting-screen-XKK-VeRo.js} +1 -1
- package/dist/assets/identity-page-route-BCiHzwmk.js +1 -0
- package/dist/assets/index-BjEJFZTJ.js +124 -0
- package/dist/assets/{inspect-page-Dmp2FUpn.js → inspect-page-BrUzgvle.js} +2 -2
- package/dist/assets/{install-Db4K638M.js → install-Uj6CrGld.js} +1 -1
- package/dist/assets/integrations-page-BL9LXHFe.js +1 -0
- package/dist/assets/{intelligence-layout-D96EIdSw.js → intelligence-layout-BwYGHEw7.js} +1 -1
- package/dist/assets/{keyboard-shortcuts-page-LBckCCBl.js → keyboard-shortcuts-page-QHFTyWOo.js} +1 -1
- package/dist/assets/library-detail-page-nUyEDHke.js +1 -0
- package/dist/assets/library-page-B0AzCNkJ.js +1 -0
- package/dist/assets/{login-flow-CaZb4l04.js → login-flow-Bi4ujzeb.js} +1 -1
- package/dist/assets/{login-page-C-HGOjOK.js → login-page-BOH-K9Pj.js} +1 -1
- package/dist/assets/{logout-page-Dl5euYyX.js → logout-page-B1QXMyiH.js} +1 -1
- package/dist/assets/{logs-layout-BTlzvT2f.js → logs-layout-zcrIEQRy.js} +1 -1
- package/dist/assets/{memory-router-playground-page-BBlTxde7.js → memory-router-playground-page-CeZ4XMd2.js} +1 -1
- package/dist/assets/{mobile-sidebar-drawer-9EUmVwhv.js → mobile-sidebar-drawer-BjPgVWjw.js} +1 -1
- package/dist/assets/notifications-page-omwlGRbj.js +1 -0
- package/dist/assets/{oauth-complete-page-AZTJJBVl.js → oauth-complete-page--ojS1AzN.js} +1 -1
- package/dist/assets/{oauth-popup-complete-page-CzA0WXr4.js → oauth-popup-complete-page-D5wVrngS.js} +2 -2
- package/dist/assets/password-reset-page-BJo9vGl_.js +1 -0
- package/dist/assets/{platform-loopback-page-CNTdcgsZ.js → platform-loopback-page--72P008D.js} +1 -1
- package/dist/assets/{plugin-detail-page-CS_wmEDi.js → plugin-detail-page-Co_JFwRa.js} +1 -1
- package/dist/assets/{plugins-page-CRtYNHW4.js → plugins-page-D7VpzRFc.js} +1 -1
- package/dist/assets/pre-chat-flow-BoePpEU7.js +1 -0
- package/dist/assets/privacy-page-DpKZ9VJG.js +1 -0
- package/dist/assets/{privacy-screen-qeQ2XoHu.js → privacy-screen-CEsX-1V3.js} +1 -1
- package/dist/assets/{provider-callback-page-C87AasMA.js → provider-callback-page-DDEEkkDM.js} +1 -1
- package/dist/assets/{provider-signup-page-CfbGs1zY.js → provider-signup-page-CZqSVAQl.js} +1 -1
- package/dist/assets/{review-terms-screen-BnGyRURw.js → review-terms-screen-CYFxXWmR.js} +1 -1
- package/dist/assets/routes-Dk5Qeryt.js +1 -0
- package/dist/assets/schedules-page-Dk-YbWK3.js +1 -0
- package/dist/assets/select-assistant-screen-CYpMf074.js +1 -0
- package/dist/assets/settings-layout-C_sqrv5S.js +1 -0
- package/dist/assets/share-feedback-modal-Cg8gci5A.js +1 -0
- package/dist/assets/{sidebar-tree-DyEHuZeN.js → sidebar-tree-Cme65q7r.js} +1 -1
- package/dist/assets/{signup-page-BTfxDffn.js → signup-page-BBM_CboU.js} +1 -1
- package/dist/assets/skills-page-J6mZv9bN.js +1 -0
- package/dist/assets/{sounds-page-CkLyWMqe.js → sounds-page-DpRhAAJv.js} +1 -1
- package/dist/assets/{step-indicator-dots-BjA1nnWA.js → step-indicator-dots-Dmj2aMuo.js} +1 -1
- package/dist/assets/{subagent-detail-panel-4B8mdN25.js → subagent-detail-panel-Dq-GDI61.js} +2 -2
- package/dist/assets/system-events-page-DNln669W.js +1 -0
- package/dist/assets/system-events-redirect-page-DY7BhERh.js +1 -0
- package/dist/assets/{tiptap-document-editor-D_JJ-i8w.js → tiptap-document-editor-DucA37Km.js} +1 -1
- package/dist/assets/tool-detail-panel-CwQTuANT.js +1 -0
- package/dist/assets/trace-page-CKTCZonQ.js +1 -0
- package/dist/assets/upgrade-cancel-page-BsW23ioD.js +1 -0
- package/dist/assets/upgrade-success-page-DqSBwFJv.js +1 -0
- package/dist/assets/{usage-page-DTCDhatY.js → usage-page-D6cPGTNn.js} +1 -1
- package/dist/assets/{use-current-platform-assistant-4FcCb-TC.js → use-current-platform-assistant-Cu95G65M.js} +1 -1
- package/dist/assets/use-is-org-ready-IPLcsl77.js +1 -0
- package/dist/assets/{use-oauth-complete-deep-link-listener-DODuMYm6.js → use-oauth-complete-deep-link-listener-BQZGv8sr.js} +1 -1
- package/dist/assets/{use-onboarding-login-CEqnm099.js → use-onboarding-login-Cd72-1Qe.js} +1 -1
- package/dist/assets/voice-page-D8IZifkA.js +1 -0
- package/dist/assets/{weather-forecast-display-CEt-zNG2.js → weather-forecast-display-DgqpUX3a.js} +1 -1
- package/dist/assets/{welcome-screen-3Gi6zm9f.js → welcome-screen-B2tizoBp.js} +1 -1
- package/dist/assets/workspace-page-Bu8beso_.js +1 -0
- package/dist/index.html +5 -5
- package/package.json +1 -1
- package/dist/assets/add-credits-modal-D1PUmkv8.js +0 -1
- package/dist/assets/ai-page-BHdzWA1C.js +0 -1
- package/dist/assets/auth-store-oleg80LZ.js +0 -6
- package/dist/assets/billing-page-BtGA4D1N.js +0 -34
- package/dist/assets/contacts-page-route-CIhz_sJO.js +0 -1
- package/dist/assets/danger-zone-redirect-page-BOK4eL8M.js +0 -1
- package/dist/assets/debug-page-EPqbjJSc.js +0 -3
- package/dist/assets/deploy-dialogs-DlIjxp-4.js +0 -1
- package/dist/assets/devices-page-CjKo24zw.js +0 -1
- package/dist/assets/general-page-BSf6qSem.js +0 -1
- package/dist/assets/home-page-route-D3PEij2C.js +0 -1
- package/dist/assets/identity-page-route-MDSvMuG9.js +0 -1
- package/dist/assets/index-DM63H2B6.js +0 -124
- package/dist/assets/integrations-page-DKhH4frU.js +0 -1
- package/dist/assets/library-detail-page-T4MedcS4.js +0 -1
- package/dist/assets/library-page-RtbQs7L5.js +0 -1
- package/dist/assets/notifications-page-DlDftqR1.js +0 -1
- package/dist/assets/password-reset-page-DyimUxBH.js +0 -1
- package/dist/assets/pre-chat-flow-BDhreJ7B.js +0 -1
- package/dist/assets/privacy-page-C1kpEJg_.js +0 -1
- package/dist/assets/routes-DMbyM_oF.js +0 -1
- package/dist/assets/schedules-page-DL7EfeDQ.js +0 -1
- package/dist/assets/select-assistant-screen-BGPc4tCz.js +0 -1
- package/dist/assets/settings-layout-Ce4VYURq.js +0 -1
- package/dist/assets/share-feedback-modal-le4GoR2Z.js +0 -1
- package/dist/assets/skills-page-D_8aU82C.js +0 -1
- package/dist/assets/system-events-page-BuSkwmMl.js +0 -1
- package/dist/assets/system-events-redirect-page-Dq56rHVE.js +0 -1
- package/dist/assets/tool-detail-panel-WvA0b4nW.js +0 -1
- package/dist/assets/trace-page-Ckyukuwf.js +0 -1
- package/dist/assets/upgrade-cancel-page-C_KXGnp0.js +0 -1
- package/dist/assets/upgrade-success-page-yvoI0p_k.js +0 -1
- package/dist/assets/use-is-org-ready-tTrrZoWV.js +0 -1
- package/dist/assets/voice-page-pG9E3NoZ.js +0 -1
- package/dist/assets/workspace-page-DNw6D4Sj.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./preload-helper-BewR0kVT.js";var r=e(t(),1),i=e=>{throw TypeError(e)},a=(e,t,n)=>t.has(e)||i(`Cannot `+n),o=(e,t,n)=>(a(e,t,`read from private field`),n?n.call(e):t.get(e)),s=(e,t,n)=>t.has(e)?i(`Cannot add the same private member more than once`):t instanceof WeakSet?t.add(e):t.set(e,n),c=(e,t,n,r)=>(a(e,t,`write to private field`),r?r.call(e,n):t.set(e,n),n),l=`popstate`;function u(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function d(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return g(``,{pathname:r,search:i,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||`default`,n?{pathname:e.location.pathname,search:e.location.search,hash:e.location.hash}:void 0)}function n(e,t){return typeof t==`string`?t:_(t)}return y(t,n,null,e)}function f(e,t){if(e===!1||e==null)throw Error(t)}function p(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function m(){return Math.random().toString(36).substring(2,10)}function h(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function g(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?v(t):t,state:n,key:t&&t.key||r||m(),mask:i}}function _({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function v(e){let t={};if(e){let n=e.indexOf(`#`);n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf(`?`);r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function y(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s=`POP`,c=null,d=f();d??(d=0,o.replaceState({...o.state,idx:d},``));function f(){return(o.state||{idx:null}).idx}function p(){s=`POP`;let e=f(),t=e==null?null:e-d;d=e,c&&c({action:s,location:y.location,delta:t})}function m(e,t){s=`PUSH`;let r=u(e)?e:g(y.location,e,t);n&&n(r,e),d=f()+1;let l=h(r,d),p=y.createHref(r.mask||r);try{o.pushState(l,``,p)}catch(e){if(e instanceof DOMException&&e.name===`DataCloneError`)throw e;i.location.assign(p)}a&&c&&c({action:s,location:y.location,delta:1})}function _(e,t){s=`REPLACE`;let r=u(e)?e:g(y.location,e,t);n&&n(r,e),d=f();let i=h(r,d),l=y.createHref(r.mask||r);o.replaceState(i,``,l),a&&c&&c({action:s,location:y.location,delta:0})}function v(e){return b(e)}let y={get action(){return s},get location(){return e(i,o)},listen(e){if(c)throw Error(`A history only accepts one active listener`);return i.addEventListener(l,p),c=e,()=>{i.removeEventListener(l,p),c=null}},createHref(e){return t(i,e)},createURL:v,encodeLocation(e){let t=v(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:m,replace:_,go(e){return o.go(e)}};return y}function b(e,t=!1){let n=`http://localhost`;typeof window<`u`&&(n=window.location.origin===`null`?window.location.href:window.location.origin),f(n,`No window.location.(origin|href) available to create URL`);let r=typeof e==`string`?e:_(e);return r=r.replace(/ $/,`%20`),!t&&r.startsWith(`//`)&&(r=n+r),new URL(r,n)}function x(e){return{defaultValue:e}}var S,C=class{constructor(e){if(s(this,S,new Map),e)for(let[t,n]of e)this.set(t,n)}get(e){if(o(this,S).has(e))return o(this,S).get(e);if(e.defaultValue!==void 0)return e.defaultValue;throw Error(`No value found for context`)}set(e,t){o(this,S).set(e,t)}};S=new WeakMap;var w=new Set([`lazy`,`caseSensitive`,`path`,`id`,`index`,`children`]);function T(e){return w.has(e)}var E=new Set([`lazy`,`caseSensitive`,`path`,`id`,`index`,`middleware`,`children`]);function D(e){return E.has(e)}function O(e){return e.index===!0}function k(e,t,n=[],r={},i=!1){return e.map((e,a)=>{let o=[...n,String(a)],s=typeof e.id==`string`?e.id:o.join(`-`);if(f(e.index!==!0||!e.children,`Cannot specify children on an index route`),f(i||!r[s],`Found a route id collision on id "${s}". Route id's must be globally unique within Data Router usages`),O(e)){let n={...e,id:s};return r[s]=A(n,t(n)),n}else{let n={...e,id:s,children:void 0};return r[s]=A(n,t(n)),e.children&&(n.children=k(e.children,t,o,r,i)),n}})}function A(e,t){return Object.assign(e,{...t,...typeof t.lazy==`object`&&t.lazy!=null?{lazy:{...e.lazy,...t.lazy}}:{}})}function j(e,t,n=`/`){return M(e,t,n,!1)}function M(e,t,n,r,i){let a=z((typeof t==`string`?v(t):t).pathname||`/`,n);if(a==null)return null;let o=i??N(e),s=null,c=R(a);for(let e=0;s==null&&e<o.length;++e)s=L(o[e],c,r);return s}function ee(e,t){let{route:n,pathname:r,params:i}=e;return{id:n.id,pathname:r,params:i,data:t[n.id],loaderData:t[n.id],handle:n.handle}}function N(e){let t=te(e);return ne(t),t}function te(e,t=[],n=[],r=``,i=!1){let a=(e,a,o=i,s)=>{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;f(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=H([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(f(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),te(e.children,t,u,l,o)),!(e.path==null&&!e.index)&&t.push({path:l,score:ce(l,e.index),routesMeta:u})};return e.forEach((e,t)=>{if(e.path===``||!e.path?.includes(`?`))a(e,t);else for(let n of P(e.path))a(e,t,!0,n)}),t}function P(e){let t=e.split(`/`);if(t.length===0)return[];let[n,...r]=t,i=n.endsWith(`?`),a=n.replace(/\?$/,``);if(r.length===0)return i?[a,``]:[a];let o=P(r.join(`/`)),s=[];return s.push(...o.map(e=>e===``?a:[a,e].join(`/`))),i&&s.push(...o),s.map(t=>e.startsWith(`/`)&&t===``?`/`:t)}function ne(e){e.sort((e,t)=>e.score===t.score?le(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var re=/^:[\w-]+$/,F=3,ie=2,ae=1,oe=10,I=-2,se=e=>e===`*`;function ce(e,t){let n=e.split(`/`),r=n.length;return n.some(se)&&(r+=I),t&&(r+=ie),n.filter(e=>!se(e)).reduce((e,t)=>e+(re.test(t)?F:t===``?ae:oe),r)}function le(e,t){return e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n])?e[e.length-1]-t[t.length-1]:0}function L(e,t,n=!1){let{routesMeta:r}=e,i={},a=`/`,o=[];for(let e=0;e<r.length;++e){let s=r[e],c=e===r.length-1,l=a===`/`?t:t.slice(a.length)||`/`,u=ue({path:s.relativePath,caseSensitive:s.caseSensitive,end:c},l),d=s.route;if(!u&&c&&n&&!r[r.length-1].route.index&&(u=ue({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!u)return null;Object.assign(i,u.params),o.push({params:i,pathname:H([a,u.pathname]),pathnameBase:be(H([a,u.pathnameBase])),route:d}),u.pathnameBase!==`/`&&(a=H([a,u.pathnameBase]))}return o}function ue(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=de(e.path,e.caseSensitive,e.end),i=t.match(n);if(!i)return null;let a=i[0],o=a.replace(/(.)\/+$/,`$1`),s=i.slice(1);return{params:r.reduce((e,{paramName:t,isOptional:n},r)=>{if(t===`*`){let e=s[r]||``;o=a.slice(0,a.length-e.length).replace(/(.)\/+$/,`$1`)}let i=s[r];return n&&!i?e[t]=void 0:e[t]=(i||``).replace(/%2F/g,`/`),e},{}),pathname:a,pathnameBase:o,pattern:e}}function de(e,t=!1,n=!0){p(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n,i,a)=>{if(r.push({paramName:t,isOptional:n!=null}),n){let t=a.charAt(i+e.length);return t&&t!==`/`?`/([^\\/]*)`:`(?:/([^\\/]*))?`}return`/([^\\/]+)`}).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function R(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return p(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function z(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}function fe({basename:e,pathname:t}){return t===`/`?e:H([e,t])}var pe=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,me=e=>pe.test(e);function he(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?v(e):e,a;return n?(n=ye(n),a=n.startsWith(`/`)?ge(n.substring(1),`/`):ge(n,t)):a=t,{pathname:a,search:xe(r),hash:Se(i)}}function ge(e,t){let n=U(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function _e(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function ve(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function B(e){let t=ve(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function V(e,t,n,r=!1){let i;typeof e==`string`?i=v(e):(i={...e},f(!i.pathname||!i.pathname.includes(`?`),_e(`?`,`pathname`,`search`,i)),f(!i.pathname||!i.pathname.includes(`#`),_e(`#`,`pathname`,`hash`,i)),f(!i.search||!i.search.includes(`#`),_e(`#`,`search`,`hash`,i)));let a=e===``||i.pathname===``,o=a?`/`:i.pathname,s;if(o==null)s=n;else{let e=t.length-1;if(!r&&o.startsWith(`..`)){let t=o.split(`/`);for(;t[0]===`..`;)t.shift(),--e;i.pathname=t.join(`/`)}s=e>=0?t[e]:`/`}let c=he(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var ye=e=>e.replace(/\/\/+/g,`/`),H=e=>ye(e.join(`/`)),U=e=>e.replace(/\/+$/,``),be=e=>U(e).replace(/^\/*/,`/`),xe=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,Se=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,Ce=(e,t=302)=>{let n=t;typeof n==`number`?n={status:n}:n.status===void 0&&(n.status=302);let r=new Headers(n.headers);return r.set(`Location`,e),new Response(null,{...n,headers:r})},we=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||``,this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function Te(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function Ee(e){return H(e.map(e=>e.route.path).filter(Boolean))||`/`}var De=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function Oe(e,t){let n=e;if(typeof n!=`string`||!pe.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(De)try{let e=new URL(window.location.href),r=n.startsWith(`//`)?new URL(e.protocol+n):new URL(n),a=z(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{p(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}var W=Symbol(`Uninstrumented`);function ke(e,t){let n={lazy:[],"lazy.loader":[],"lazy.action":[],"lazy.middleware":[],middleware:[],loader:[],action:[]};e.forEach(e=>e({id:t.id,index:t.index,path:t.path,instrument(e){let t=Object.keys(n);for(let r of t)e[r]&&n[r].push(e[r])}}));let r={};if(typeof t.lazy==`function`&&n.lazy.length>0){let e=je(n.lazy,t.lazy,()=>void 0);e&&(r.lazy=e)}if(typeof t.lazy==`object`){let e=t.lazy;[`middleware`,`loader`,`action`].forEach(t=>{let i=e[t],a=n[`lazy.${t}`];if(typeof i==`function`&&a.length>0){let e=je(a,i,()=>void 0);e&&(r.lazy=Object.assign(r.lazy||{},{[t]:e}))}})}return[`loader`,`action`].forEach(e=>{let i=t[e];if(typeof i==`function`&&n[e].length>0){let t=i[W]??i,a=je(n[e],t,(...e)=>G(e[0]));a&&(e===`loader`&&t.hydrate===!0&&(a.hydrate=!0),a[W]=t,r[e]=a)}}),t.middleware&&t.middleware.length>0&&n.middleware.length>0&&(r.middleware=t.middleware.map(e=>{let t=e[W]??e,r=je(n.middleware,t,(...e)=>G(e[0]));return r?(r[W]=t,r):e})),r}function Ae(e,t){let n={navigate:[],fetch:[]};if(t.forEach(e=>e({instrument(e){let t=Object.keys(e);for(let r of t)e[r]&&n[r].push(e[r])}})),n.navigate.length>0){let t=e.navigate[W]??e.navigate,r=je(n.navigate,t,(...t)=>{let[n,r]=t;return{to:typeof n==`number`||typeof n==`string`?n:n?_(n):`.`,...K(e,r??{})}});r&&(r[W]=t,e.navigate=r)}if(n.fetch.length>0){let t=e.fetch[W]??e.fetch,r=je(n.fetch,t,(...t)=>{let[n,,r,i]=t;return{href:r??`.`,fetcherKey:n,...K(e,i??{})}});r&&(r[W]=t,e.fetch=r)}return e}function je(e,t,n){return e.length===0?null:async(...r)=>{let i=await Me(e,n(...r),()=>t(...r),e.length-1);if(i.type===`error`)throw i.value;return i.value}}async function Me(e,t,n,r){let i=e[r],a;if(i){let o,s=async()=>(o?console.error(`You cannot call instrumented handlers more than once`):o=Me(e,t,n,r-1),a=await o,f(a,`Expected a result`),a.type===`error`&&a.value instanceof Error?{status:`error`,error:a.value}:{status:`success`,error:void 0});try{await i(s,t)}catch(e){console.error(`An instrumentation function threw an error:`,e)}o||await s(),await o}else try{a={type:`success`,value:await n()}}catch(e){a={type:`error`,value:e}}return a||{type:`error`,value:Error(`No result assigned in instrumentation chain.`)}}function G(e){let{request:t,context:n,params:r,pattern:i}=e;return{request:Ne(t),params:{...r},pattern:i,context:Pe(n)}}function K(e,t){return{currentUrl:_(e.state.location),...`formMethod`in t?{formMethod:t.formMethod}:{},...`formEncType`in t?{formEncType:t.formEncType}:{},...`formData`in t?{formData:t.formData}:{},...`body`in t?{body:t.body}:{}}}function Ne(e){return{method:e.method,url:e.url,headers:{get:(...t)=>e.headers.get(...t)}}}function Pe(e){if(Ie(e)){let t={...e};return Object.freeze(t),t}else return{get:t=>e.get(t)}}var Fe=Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);function Ie(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null||Object.getOwnPropertyNames(t).sort().join(`\0`)===Fe}var q=[`POST`,`PUT`,`PATCH`,`DELETE`],Le=new Set(q),Re=[`GET`,...q],ze=new Set(Re),Be=new Set([301,302,303,307,308]),Ve=new Set([307,308]),He={state:`idle`,location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},Ue={state:`idle`,data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},We={state:`unblocked`,proceed:void 0,reset:void 0,location:void 0},Ge=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),Ke=`remix-router-transitions`,qe=Symbol(`ResetLoaderData`),Je,Ye,Xe,Ze,Qe=class{constructor(e){s(this,Je),s(this,Ye),s(this,Xe),s(this,Ze),c(this,Je,e),c(this,Ye,N(e))}get stableRoutes(){return o(this,Je)}get activeRoutes(){return o(this,Xe)??o(this,Je)}get branches(){return o(this,Ze)??o(this,Ye)}get hasHMRRoutes(){return o(this,Xe)!=null}setRoutes(e){c(this,Je,e),c(this,Ye,N(e))}setHmrRoutes(e){c(this,Xe,e),c(this,Ze,N(e))}commitHmrRoutes(){o(this,Xe)&&(c(this,Je,o(this,Xe)),c(this,Ye,o(this,Ze)),c(this,Xe,void 0),c(this,Ze,void 0))}};Je=new WeakMap,Ye=new WeakMap,Xe=new WeakMap,Ze=new WeakMap;function $e(e){let t=e.window?e.window:typeof window<`u`?window:void 0,n=t!==void 0&&t.document!==void 0&&t.document.createElement!==void 0;f(e.routes.length>0,`You must provide a non-empty routes array to createRouter`);let r=e.hydrationRouteProperties||[],i=e.mapRouteProperties||Ge,a=i;if(e.instrumentations){let t=e.instrumentations;a=e=>({...i(e),...ke(t.map(e=>e.route).filter(Boolean),e)})}let o={},s=new Qe(k(e.routes,a,void 0,o)),c=e.basename||`/`;c.startsWith(`/`)||(c=`/${c}`);let l=e.dataStrategy||gt,u={...e.future},d=null,m=new Set,h=null,_=null,y=null,x=e.hydrationData!=null,S=M(s.activeRoutes,e.history.location,c,!1,s.branches),w=!1,T=null,E,D;if(S==null&&!e.patchRoutesOnNavigation){let t=J(404,{pathname:e.history.location.pathname}),{matches:n,route:r}=zt(s.activeRoutes);E=!0,D=!E,S=n,T={[r.id]:t}}else if(S&&!e.hydrationData&&ot(S,s.activeRoutes,e.history.location.pathname).active&&(S=null),!S){E=!1,D=!E,S=[];let t=ot(null,s.activeRoutes,e.history.location.pathname);t.active&&t.matches&&(w=!0,S=t.matches)}else if(S.some(e=>e.route.lazy))E=!1,D=!E;else if(!S.some(e=>it(e.route)))E=!0,D=!E;else{let t=e.hydrationData?e.hydrationData.loaderData:null,n=e.hydrationData?e.hydrationData.errors:null,r=S;if(n){let e=S.findIndex(e=>n[e.route.id]!==void 0);r=r.slice(0,e+1)}D=!1,E=!0,r.forEach(e=>{let r=at(e.route,t,n);D||=r.renderFallback,E&&=!r.shouldLoad})}let O,A={historyAction:e.history.action,location:e.history.location,matches:S,initialized:E,renderFallback:D,navigation:He,restoreScrollPosition:e.hydrationData==null?null:!1,preventScrollReset:!1,revalidation:`idle`,loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||T,fetchers:new Map,blockers:new Map},j=`POP`,N=null,te=!1,P,ne=!1,re=new Map,F=null,ie=!1,ae=!1,oe=new Set,I=new Map,se=0,ce=-1,le=new Map,L=new Set,ue=new Map,de=new Map,R=new Set,fe=new Map,pe,he=null;function ge(){if(d=e.history.listen(({action:t,location:n,delta:r})=>{if(pe){pe(),pe=void 0;return}p(fe.size===0||r!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let i=Je({currentLocation:A.location,nextLocation:n,historyAction:t});if(i&&r!=null){let t=new Promise(e=>{pe=e});e.history.go(r*-1),qe(i,{state:`blocked`,location:n,proceed(){qe(i,{state:`proceeding`,proceed:void 0,reset:void 0,location:n}),t.then(()=>e.history.go(r))},reset(){let e=new Map(A.blockers);e.set(i,We),B({blockers:e})}}),N?.resolve(),N=null;return}return U(t,n)}),n){cn(t,re);let e=()=>ln(t,re);t.addEventListener(`pagehide`,e),F=()=>t.removeEventListener(`pagehide`,e)}return A.initialized||U(`POP`,A.location,{initialHydration:!0}),O}function _e(){d&&d(),F&&F(),m.clear(),P&&P.abort(),A.fetchers.forEach((e,t)=>Fe(t)),A.blockers.forEach((e,t)=>Ke(t))}function ve(e){return m.add(e),()=>m.delete(e)}function B(e,t={}){e.matches&&=e.matches.map(e=>{let t=o[e.route.id],n=e.route;return n.element!==t.element||n.errorElement!==t.errorElement||n.hydrateFallbackElement!==t.hydrateFallbackElement?{...e,route:t}:e}),A={...A,...e};let n=[],r=[];A.fetchers.forEach((e,t)=>{e.state===`idle`&&(R.has(t)?n.push(t):r.push(t))}),R.forEach(e=>{!A.fetchers.has(e)&&!I.has(e)&&n.push(e)}),[...m].forEach(r=>r(A,{deletedFetchers:n,newErrors:e.errors??null,viewTransitionOpts:t.viewTransitionOpts,flushSync:t.flushSync===!0})),n.forEach(e=>Fe(e)),r.forEach(e=>A.fetchers.delete(e))}function V(t,n,{flushSync:r}={}){let i=A.actionData!=null&&A.navigation.formMethod!=null&&X(A.navigation.formMethod)&&A.navigation.state===`loading`&&t.state?._isRedirect!==!0,a;a=n.actionData?Object.keys(n.actionData).length>0?n.actionData:null:i?A.actionData:null;let o=n.loaderData?It(A.loaderData,n.loaderData,n.matches||[],n.errors):A.loaderData,c=A.blockers;c.size>0&&(c=new Map(c),c.forEach((e,t)=>c.set(t,We)));let l=ie?!1:et(t,n.matches||A.matches),u=te===!0||A.navigation.formMethod!=null&&X(A.navigation.formMethod)&&t.state?._isRedirect!==!0;s.commitHmrRoutes(),ie||j===`POP`||(j===`PUSH`?e.history.push(t,t.state):j===`REPLACE`&&e.history.replace(t,t.state));let d;if(j===`POP`){let e=re.get(A.location.pathname);e&&e.has(t.pathname)?d={currentLocation:A.location,nextLocation:t}:re.has(t.pathname)&&(d={currentLocation:t,nextLocation:A.location})}else if(ne){let e=re.get(A.location.pathname);e?e.add(t.pathname):(e=new Set([t.pathname]),re.set(A.location.pathname,e)),d={currentLocation:A.location,nextLocation:t}}B({...n,actionData:a,loaderData:o,historyAction:j,location:t,initialized:!0,renderFallback:!1,navigation:He,revalidation:`idle`,restoreScrollPosition:l,preventScrollReset:u,blockers:c},{viewTransitionOpts:d,flushSync:r===!0}),j=`POP`,te=!1,ne=!1,ie=!1,ae=!1,N?.resolve(),N=null,he?.resolve(),he=null}async function ye(t,n){if(N?.resolve(),N=null,typeof t==`number`){N||=un();let n=N.promise;return e.history.go(t),n}let{path:r,submission:i,error:a}=nt(!1,tt(A.location,A.matches,c,t,n?.fromRouteId,n?.relative),n),o;n?.mask&&(o={pathname:``,search:``,hash:``,...typeof n.mask==`string`?v(n.mask):{...A.location.mask,...n.mask}});let s=A.location,l=g(s,r,n&&n.state,void 0,o);l={...l,...e.history.encodeLocation(l)};let u=n&&n.replace!=null?n.replace:void 0,d=`PUSH`;u===!0?d=`REPLACE`:u===!1||i!=null&&X(i.formMethod)&&i.formAction===A.location.pathname+A.location.search&&(d=`REPLACE`);let f=n&&`preventScrollReset`in n?n.preventScrollReset===!0:void 0,p=(n&&n.flushSync)===!0,m=Je({currentLocation:s,nextLocation:l,historyAction:d});if(m){qe(m,{state:`blocked`,location:l,proceed(){qe(m,{state:`proceeding`,proceed:void 0,reset:void 0,location:l}),ye(t,n)},reset(){let e=new Map(A.blockers);e.set(m,We),B({blockers:e})}});return}await U(d,l,{submission:i,pendingError:a,preventScrollReset:f,replace:n&&n.replace,enableViewTransition:n&&n.viewTransition,flushSync:p,callSiteDefaultShouldRevalidate:n&&n.defaultShouldRevalidate})}function H(){he||=un(),Me(),B({revalidation:`loading`});let e=he.promise;return A.navigation.state===`submitting`?e:A.navigation.state===`idle`?(U(A.historyAction,A.location,{startUninterruptedRevalidation:!0}),e):(U(j||A.historyAction,A.navigation.location,{overrideNavigation:A.navigation,enableViewTransition:ne===!0}),e)}async function U(t,n,r){P&&P.abort(),P=null,j=t,ie=(r&&r.startUninterruptedRevalidation)===!0,$e(A.location,A.matches),te=(r&&r.preventScrollReset)===!0,ne=(r&&r.enableViewTransition)===!0;let i=s.activeRoutes,a=r&&r.overrideNavigation,o=r?.initialHydration&&A.matches&&A.matches.length>0&&!w?A.matches:M(i,n,c,!1,s.branches),l=(r&&r.flushSync)===!0;if(o&&A.initialized&&!ae&&Ht(A.location,n)&&!(r&&r.submission&&X(r.submission.formMethod))){V(n,{matches:o},{flushSync:l});return}let u=ot(o,i,n.pathname);if(u.active&&u.matches&&(o=u.matches),!o){let{error:e,notFoundMatches:t,route:r}=Ye(n.pathname);V(n,{matches:t,loaderData:{},errors:{[r.id]:e}},{flushSync:l});return}P=new AbortController;let d=At(e.history,n,P.signal,r&&r.submission),f=e.getContext?await e.getContext():new C,p;if(r&&r.pendingError)p=[Rt(o).route.id,{type:`error`,error:r.pendingError}];else if(r&&r.submission&&X(r.submission.formMethod)){let t=await be(d,n,r.submission,o,f,u.active,r&&r.initialHydration===!0,{replace:r.replace,flushSync:l});if(t.shortCircuited)return;if(t.pendingActionResult){let[e,r]=t.pendingActionResult;if(Y(r)&&Te(r.error)&&r.error.status===404){P=null,V(n,{matches:t.matches,loaderData:{},errors:{[e]:r.error}});return}}o=t.matches||o,p=t.pendingActionResult,a=nn(n,r.submission),l=!1,u.active=!1,d=At(e.history,d.url,d.signal)}let{shortCircuited:m,matches:h,loaderData:g,errors:_}=await xe(d,n,o,f,u.active,a,r&&r.submission,r&&r.fetcherSubmission,r&&r.replace,r&&r.initialHydration===!0,l,p,r&&r.callSiteDefaultShouldRevalidate);m||(P=null,V(n,{matches:h||o,...Lt(p),loaderData:g,errors:_}))}async function be(t,n,i,l,u,d,f,p={}){if(Me(),B({navigation:rn(n,i)},{flushSync:p.flushSync===!0}),d){let e=await st(l,n.pathname,t.signal);if(e.type===`aborted`)return{shortCircuited:!0};if(e.type===`error`){if(e.partialMatches.length===0){let{matches:t,route:n}=zt(s.activeRoutes);return{matches:t,pendingActionResult:[n.id,{type:`error`,error:e.error}]}}let t=Rt(e.partialMatches).route.id;return{matches:e.partialMatches,pendingActionResult:[t,{type:`error`,error:e.error}]}}else if(e.matches)l=e.matches;else{let{notFoundMatches:e,error:t,route:r}=Ye(n.pathname);return{matches:e,pendingActionResult:[r.id,{type:`error`,error:t}]}}}let m,h=en(l,n);if(!h.route.action&&!h.route.lazy)m={type:`error`,error:J(405,{method:t.method,pathname:n.pathname,routeId:h.route.id})};else{let e=await W(t,n,St(a,o,t,n,l,h,f?[]:r,u),u,null);if(m=e[h.route.id],!m){for(let t of l)if(e[t.route.id]){m=e[t.route.id];break}}if(t.signal.aborted)return{shortCircuited:!0}}if(qt(m)){let n;return n=p&&p.replace!=null?p.replace:kt(m.response.headers.get(`Location`),new URL(t.url),c,e.history)===A.location.pathname+A.location.search,await Oe(t,m,!0,{submission:i,replace:n}),{shortCircuited:!0}}if(Y(m)){let e=Rt(l,h.route.id);return(p&&p.replace)!==!0&&(j=`PUSH`),{matches:l,pendingActionResult:[e.route.id,m,h.route.id]}}return{matches:l,pendingActionResult:[h.route.id,m]}}async function xe(t,n,i,l,u,d,f,p,m,h,g,_,v){let y=d||nn(n,f),b=f||p||tn(y),x=!ie&&!h;if(u){if(x){let e=Se(_);B({navigation:y,...e===void 0?{}:{actionData:e}},{flushSync:g})}let e=await st(i,n.pathname,t.signal);if(e.type===`aborted`)return{shortCircuited:!0};if(e.type===`error`){if(e.partialMatches.length===0){let{matches:t,route:n}=zt(s.activeRoutes);return{matches:t,loaderData:{},errors:{[n.id]:e.error}}}let t=Rt(e.partialMatches).route.id;return{matches:e.partialMatches,loaderData:{},errors:{[t]:e.error}}}else if(e.matches)i=e.matches;else{let{error:e,notFoundMatches:t,route:r}=Ye(n.pathname);return{matches:t,loaderData:{},errors:{[r.id]:e}}}}let S=s.activeRoutes,{dsMatches:C,revalidatingFetchers:w}=rt(t,l,a,o,e.history,A,i,b,n,h?[]:r,h===!0,ae,oe,R,ue,L,S,c,e.patchRoutesOnNavigation!=null,s.branches,_,v);if(ce=++se,!e.dataStrategy&&!C.some(e=>e.shouldLoad)&&!C.some(e=>e.route.middleware&&e.route.middleware.length>0)&&w.length===0){let e=Re();return V(n,{matches:i,loaderData:{},errors:_&&Y(_[1])?{[_[0]]:_[1].error}:null,...Lt(_),...e?{fetchers:new Map(A.fetchers)}:{}},{flushSync:g}),{shortCircuited:!0}}if(x){let e={};if(!u){e.navigation=y;let t=Se(_);t!==void 0&&(e.actionData=t)}w.length>0&&(e.fetchers=Ce(w)),B(e,{flushSync:g})}w.forEach(e=>{q(e.key),e.controller&&I.set(e.key,e.controller)});let T=()=>w.forEach(e=>q(e.key));P&&P.signal.addEventListener(`abort`,T);let{loaderResults:E,fetcherResults:D}=await je(C,w,t,n,l);if(t.signal.aborted)return{shortCircuited:!0};P&&P.signal.removeEventListener(`abort`,T),w.forEach(e=>I.delete(e.key));let O=Bt(E);if(O)return await Oe(t,O.result,!0,{replace:m}),{shortCircuited:!0};if(O=Bt(D),O)return L.add(O.key),await Oe(t,O.result,!0,{replace:m}),{shortCircuited:!0};let{loaderData:k,errors:j}=Ft(A,i,E,_,w,D);h&&A.errors&&(j={...A.errors,...j});let M=Re(),ee=ze(ce),N=M||ee||w.length>0;return{matches:i,loaderData:k,errors:j,...N?{fetchers:new Map(A.fetchers)}:{}}}function Se(e){if(e&&!Y(e[1]))return{[e[0]]:e[1].data};if(A.actionData)return Object.keys(A.actionData).length===0?null:A.actionData}function Ce(e){return e.forEach(e=>{let t=A.fetchers.get(e.key),n=an(void 0,t?t.data:void 0);A.fetchers.set(e.key,n)}),new Map(A.fetchers)}async function we(t,n,r,i){q(t);let a=(i&&i.flushSync)===!0,o=s.activeRoutes,l=tt(A.location,A.matches,c,r,n,i?.relative),u=M(o,l,c,!1,s.branches),d=ot(u,o,l);if(d.active&&d.matches&&(u=d.matches),!u){K(t,n,J(404,{pathname:l}),{flushSync:a});return}let{path:f,submission:p,error:m}=nt(!0,l,i);if(m){K(t,n,m,{flushSync:a});return}let h=e.getContext?await e.getContext():new C,g=(i&&i.preventScrollReset)===!0;if(p&&X(p.formMethod)){await Ee(t,n,f,u,h,d.active,a,g,p,i&&i.defaultShouldRevalidate);return}ue.set(t,{routeId:n,path:f}),await De(t,n,f,u,h,d.active,a,g,p)}async function Ee(t,n,i,l,u,d,p,m,h,g){Me(),ue.delete(t),G(t,on(h,A.fetchers.get(t)),{flushSync:p});let _=new AbortController,v=At(e.history,i,_.signal,h);if(d){let e=await st(l,new URL(v.url).pathname,v.signal,t);if(e.type===`aborted`)return;if(e.type===`error`){K(t,n,e.error,{flushSync:p});return}else if(e.matches)l=e.matches;else{K(t,n,J(404,{pathname:i}),{flushSync:p});return}}let y=en(l,i);if(!y.route.action&&!y.route.lazy){K(t,n,J(405,{method:h.formMethod,pathname:i,routeId:n}),{flushSync:p});return}I.set(t,_);let b=se,x=St(a,o,v,i,l,y,r,u),S=await W(v,i,x,u,t),C=S[y.route.id];if(!C){for(let e of x)if(S[e.route.id]){C=S[e.route.id];break}}if(v.signal.aborted){I.get(t)===_&&I.delete(t);return}if(R.has(t)){if(qt(C)||Y(C)){G(t,sn(void 0));return}}else{if(qt(C))if(I.delete(t),ce>b){G(t,sn(void 0));return}else return L.add(t),G(t,an(h)),Oe(v,C,!1,{fetcherSubmission:h,preventScrollReset:m});if(Y(C)){K(t,n,C.error);return}}let w=A.navigation.location||A.location,T=At(e.history,w,_.signal),E=s.activeRoutes,D=A.navigation.state===`idle`?A.matches:M(E,A.navigation.location,c,!1,s.branches);f(D,`Didn't find any matches after fetcher action`);let O=++se;le.set(t,O);let k=an(h,C.data);A.fetchers.set(t,k);let{dsMatches:ee,revalidatingFetchers:N}=rt(T,u,a,o,e.history,A,D,h,w,r,!1,ae,oe,R,ue,L,E,c,e.patchRoutesOnNavigation!=null,s.branches,[y.route.id,C],g);N.filter(e=>e.key!==t).forEach(e=>{let t=e.key,n=A.fetchers.get(t),r=an(void 0,n?n.data:void 0);A.fetchers.set(t,r),q(t),e.controller&&I.set(t,e.controller)}),B({fetchers:new Map(A.fetchers)});let te=()=>N.forEach(e=>q(e.key));_.signal.addEventListener(`abort`,te);let{loaderResults:ne,fetcherResults:re}=await je(ee,N,T,w,u);if(_.signal.aborted)return;if(_.signal.removeEventListener(`abort`,te),le.delete(t),I.delete(t),N.forEach(e=>I.delete(e.key)),A.fetchers.has(t)){let e=sn(C.data);A.fetchers.set(t,e)}let F=Bt(ne);if(F)return Oe(T,F.result,!1,{preventScrollReset:m});if(F=Bt(re),F)return L.add(F.key),Oe(T,F.result,!1,{preventScrollReset:m});let{loaderData:ie,errors:de}=Ft(A,D,ne,void 0,N,re);ze(O),A.navigation.state===`loading`&&O>ce?(f(j,`Expected pending action`),P&&P.abort(),V(A.navigation.location,{matches:D,loaderData:ie,errors:de,fetchers:new Map(A.fetchers)})):(B({errors:de,loaderData:It(A.loaderData,ie,D,de),fetchers:new Map(A.fetchers)}),ae=!1)}async function De(t,n,i,s,c,l,u,d,f){let p=A.fetchers.get(t);G(t,an(f,p?p.data:void 0),{flushSync:u});let m=new AbortController,h=At(e.history,i,m.signal);if(l){let e=await st(s,new URL(h.url).pathname,h.signal,t);if(e.type===`aborted`)return;if(e.type===`error`){K(t,n,e.error,{flushSync:u});return}else if(e.matches)s=e.matches;else{K(t,n,J(404,{pathname:i}),{flushSync:u});return}}let g=en(s,i);I.set(t,m);let _=se,v=await W(h,i,St(a,o,h,i,s,g,r,c),c,t),y=v[g.route.id];if(!y){for(let e of s)if(v[e.route.id]){y=v[e.route.id];break}}if(I.get(t)===m&&I.delete(t),!h.signal.aborted){if(R.has(t)){G(t,sn(void 0));return}if(qt(y))if(ce>_){G(t,sn(void 0));return}else{L.add(t),await Oe(h,y,!1,{preventScrollReset:d});return}if(Y(y)){K(t,n,y.error);return}G(t,sn(y.data))}}async function Oe(r,i,a,{submission:o,fetcherSubmission:s,preventScrollReset:l,replace:u}={}){a||(N?.resolve(),N=null),i.response.headers.has(`X-Remix-Revalidate`)&&(ae=!0);let d=i.response.headers.get(`Location`);f(d,`Expected a Location header on the redirect Response`),d=kt(d,new URL(r.url),c,e.history);let p=g(A.location,d,{_isRedirect:!0});if(n){let e=!1;if(i.response.headers.has(`X-Remix-Reload-Document`))e=!0;else if(me(d)){let n=b(d,!0);e=n.origin!==t.location.origin||z(n.pathname,c)==null}if(e){u?t.location.replace(d):t.location.assign(d);return}}P=null;let m=u===!0||i.response.headers.has(`X-Remix-Replace`)?`REPLACE`:`PUSH`,{formMethod:h,formAction:_,formEncType:v}=A.navigation;!o&&!s&&h&&_&&v&&(o=tn(A.navigation));let y=o||s;Ve.has(i.response.status)&&y&&X(y.formMethod)?await U(m,p,{submission:{...y,formAction:d},preventScrollReset:l||te,enableViewTransition:a?ne:void 0}):await U(m,p,{overrideNavigation:nn(p,o),fetcherSubmission:s,preventScrollReset:l||te,enableViewTransition:a?ne:void 0})}async function W(e,t,n,r,i){let a,o={};try{a=await Ct(l,e,t,n,i,r,!1)}catch(e){return n.filter(e=>e.shouldLoad).forEach(t=>{o[t.route.id]={type:`error`,error:e}}),o}if(e.signal.aborted)return o;if(!X(e.method))for(let e of n){if(a[e.route.id]?.type===`error`)break;!a.hasOwnProperty(e.route.id)&&!A.loaderData.hasOwnProperty(e.route.id)&&(!A.errors||!A.errors.hasOwnProperty(e.route.id))&&e.shouldCallHandler()&&(a[e.route.id]={type:`error`,result:Error(`No result returned from dataStrategy for route ${e.route.id}`)})}for(let[t,r]of Object.entries(a))if(Kt(r)){let i=r.result;o[t]={type:`redirect`,response:Dt(i,e,t,n,c)}}else o[t]=await Et(r);return o}async function je(e,t,n,r,i){let a=W(n,r,e,i,null),o=Promise.all(t.map(async e=>{if(e.matches&&e.match&&e.request&&e.controller){let t=(await W(e.request,e.path,e.matches,i,e.key))[e.match.route.id];return{[e.key]:t}}else return Promise.resolve({[e.key]:{type:`error`,error:J(404,{pathname:e.path})}})}));return{loaderResults:await a,fetcherResults:(await o).reduce((e,t)=>Object.assign(e,t),{})}}function Me(){ae=!0,ue.forEach((e,t)=>{I.has(t)&&oe.add(t),q(t)})}function G(e,t,n={}){A.fetchers.set(e,t),B({fetchers:new Map(A.fetchers)},{flushSync:(n&&n.flushSync)===!0})}function K(e,t,n,r={}){let i=Rt(A.matches,t);Fe(e),B({errors:{[i.route.id]:n},fetchers:new Map(A.fetchers)},{flushSync:(r&&r.flushSync)===!0})}function Ne(e){return de.set(e,(de.get(e)||0)+1),R.has(e)&&R.delete(e),A.fetchers.get(e)||Ue}function Pe(e,t){q(e,t?.reason),G(e,sn(null))}function Fe(e){let t=A.fetchers.get(e);I.has(e)&&!(t&&t.state===`loading`&&le.has(e))&&q(e),ue.delete(e),le.delete(e),L.delete(e),R.delete(e),oe.delete(e),A.fetchers.delete(e)}function Ie(e){let t=(de.get(e)||0)-1;t<=0?(de.delete(e),R.add(e)):de.set(e,t),B({fetchers:new Map(A.fetchers)})}function q(e,t){let n=I.get(e);n&&(n.abort(t),I.delete(e))}function Le(e){for(let t of e){let e=sn(Ne(t).data);A.fetchers.set(t,e)}}function Re(){let e=[],t=!1;for(let n of L){let r=A.fetchers.get(n);f(r,`Expected fetcher: ${n}`),r.state===`loading`&&(L.delete(n),e.push(n),t=!0)}return Le(e),t}function ze(e){let t=[];for(let[n,r]of le)if(r<e){let e=A.fetchers.get(n);f(e,`Expected fetcher: ${n}`),e.state===`loading`&&(q(n),le.delete(n),t.push(n))}return Le(t),t.length>0}function Be(e,t){let n=A.blockers.get(e)||We;return fe.get(e)!==t&&fe.set(e,t),n}function Ke(e){A.blockers.delete(e),fe.delete(e)}function qe(e,t){let n=A.blockers.get(e)||We;f(n.state===`unblocked`&&t.state===`blocked`||n.state===`blocked`&&t.state===`blocked`||n.state===`blocked`&&t.state===`proceeding`||n.state===`blocked`&&t.state===`unblocked`||n.state===`proceeding`&&t.state===`unblocked`,`Invalid blocker state transition: ${n.state} -> ${t.state}`);let r=new Map(A.blockers);r.set(e,t),B({blockers:r})}function Je({currentLocation:e,nextLocation:t,historyAction:n}){if(fe.size===0)return;fe.size>1&&p(!1,`A router only supports one blocker at a time`);let r=Array.from(fe.entries()),[i,a]=r[r.length-1],o=A.blockers.get(i);if(!(o&&o.state===`proceeding`)&&a({currentLocation:e,nextLocation:t,historyAction:n}))return i}function Ye(e){let t=J(404,{pathname:e}),n=s.activeRoutes,{matches:r,route:i}=zt(n);return{notFoundMatches:r,route:i,error:t}}function Xe(e,t,n){if(h=e,y=t,_=n||null,!x&&A.navigation===He){x=!0;let e=et(A.location,A.matches);e!=null&&B({restoreScrollPosition:e})}return()=>{h=null,y=null,_=null}}function Ze(e,t){return _&&_(e,t.map(e=>ee(e,A.loaderData)))||e.key}function $e(e,t){if(h&&y){let n=Ze(e,t);h[n]=y()}}function et(e,t){if(h){let n=Ze(e,t),r=h[n];if(typeof r==`number`)return r}return null}function ot(t,n,r){if(e.patchRoutesOnNavigation){let e=s.branches;if(!t)return{active:!0,matches:M(n,r,c,!0,e)||[]};if(Object.keys(t[0].params).length>0)return{active:!0,matches:M(n,r,c,!0,e)}}return{active:!1,matches:null}}async function st(t,n,r,i){if(!e.patchRoutesOnNavigation)return{type:`success`,matches:t};let l=t;for(;;){let t=o;try{await e.patchRoutesOnNavigation({signal:r,path:n,matches:l,fetcherKey:i,patch:(e,n)=>{r.aborted||lt(e,n,s,t,a,!1)}})}catch(e){return{type:`error`,error:e,partialMatches:l}}if(r.aborted)return{type:`aborted`};let u=s.branches,d=M(s.activeRoutes,n,c,!1,u),f=null;if(d&&(Object.keys(d[0].params).length===0||(f=M(s.activeRoutes,n,c,!0,u),!(f&&l.length<f.length&&ct(l,f.slice(0,l.length))))))return{type:`success`,matches:d};if(f||=M(s.activeRoutes,n,c,!0,u),!f||ct(l,f))return{type:`success`,matches:null};l=f}}function ct(e,t){return e.length===t.length&&e.every((e,n)=>e.route.id===t[n].route.id)}function ut(e){o={},s.setHmrRoutes(k(e,a,void 0,o))}function dt(e,t,n=!1){lt(e,t,s,o,a,n),s.hasHMRRoutes||B({})}return O={get basename(){return c},get future(){return u},get state(){return A},get routes(){return s.stableRoutes},get branches(){return s.branches},get manifest(){return o},get window(){return t},initialize:ge,subscribe:ve,enableScrollRestoration:Xe,navigate:ye,fetch:we,revalidate:H,createHref:t=>e.history.createHref(t),encodeLocation:t=>e.history.encodeLocation(t),getFetcher:Ne,resetFetcher:Pe,deleteFetcher:Ie,dispose:_e,getBlocker:Be,deleteBlocker:Ke,patchRoutes:dt,_internalFetchControllers:I,_internalSetRoutes:ut,_internalSetStateDoNotUseOrYouWillBreakYourApp(e){B(e)}},e.instrumentations&&(O=Ae(O,e.instrumentations.map(e=>e.router).filter(Boolean))),O}function et(e){return e!=null&&(`formData`in e&&e.formData!=null||`body`in e&&e.body!==void 0)}function tt(e,t,n,r,i,a){let o,s;if(i){o=[];for(let e of t)if(o.push(e),e.route.id===i){s=e;break}}else o=t,s=t[t.length-1];let c=V(r||`.`,B(o),z(e.pathname,n)||e.pathname,a===`path`);if(r??(c.search=e.search,c.hash=e.hash),(r==null||r===``||r===`.`)&&s){let e=$t(c.search);if(s.route.index&&!e)c.search=c.search?c.search.replace(/^\?/,`?index&`):`?index`;else if(!s.route.index&&e){let e=new URLSearchParams(c.search),t=e.getAll(`index`);e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();c.search=n?`?${n}`:``}}return n!==`/`&&(c.pathname=fe({basename:n,pathname:c.pathname})),_(c)}function nt(e,t,n){if(!n||!et(n))return{path:t};if(n.formMethod&&!Qt(n.formMethod))return{path:t,error:J(405,{method:n.formMethod})};let r=()=>({path:t,error:J(400,{type:`invalid-body`})}),i=(n.formMethod||`get`).toUpperCase(),a=Vt(t);if(n.body!==void 0){if(n.formEncType===`text/plain`){if(!X(i))return r();let e=typeof n.body==`string`?n.body:n.body instanceof FormData||n.body instanceof URLSearchParams?Array.from(n.body.entries()).reduce((e,[t,n])=>`${e}${t}=${n}
|
|
2
|
-
`,``):String(n.body);return{path:t,submission:{formMethod:i,formAction:a,formEncType:n.formEncType,formData:void 0,json:void 0,text:e}}}else if(n.formEncType===`application/json`){if(!X(i))return r();try{let e=typeof n.body==`string`?JSON.parse(n.body):n.body;return{path:t,submission:{formMethod:i,formAction:a,formEncType:n.formEncType,formData:void 0,json:e,text:void 0}}}catch{return r()}}}f(typeof FormData==`function`,`FormData is not available in this environment`);let o,s;if(n.formData)o=Mt(n.formData),s=n.formData;else if(n.body instanceof FormData)o=Mt(n.body),s=n.body;else if(n.body instanceof URLSearchParams)o=n.body,s=Nt(o);else if(n.body==null)o=new URLSearchParams,s=new FormData;else try{o=new URLSearchParams(n.body),s=Nt(o)}catch{return r()}let c={formMethod:i,formAction:a,formEncType:n&&n.formEncType||`application/x-www-form-urlencoded`,formData:s,json:void 0,text:void 0};if(X(c.formMethod))return{path:t,submission:c};let l=v(t);return e&&l.search&&$t(l.search)&&o.append(`index`,``),l.search=`?${o}`,{path:_(l),submission:c}}function rt(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x){let S=b?Y(b[1])?b[1].error:b[1].data:void 0,C=i.createURL(a.location),w=i.createURL(c),T;if(u&&a.errors){let e=Object.keys(a.errors)[0];T=o.findIndex(t=>t.route.id===e)}else if(b&&Y(b[1])){let e=b[0];T=o.findIndex(t=>t.route.id===e)-1}let E=b?b[1].statusCode:void 0,D=E&&E>=400,O={currentUrl:C,currentParams:a.matches[0]?.params||{},nextUrl:w,nextParams:o[0].params,...s,actionResult:S,actionStatus:E},k=Ee(o),A=o.map((i,o)=>{let{route:s}=i,f=null;if(T!=null&&o>T)f=!1;else if(s.lazy)f=!0;else if(!it(s))f=!1;else if(u){let{shouldLoad:e}=at(s,a.loaderData,a.errors);f=e}else ot(a.loaderData,a.matches[o],i)&&(f=!0);if(f!==null)return xt(n,r,e,c,k,i,l,t,f);let p=!1;typeof x==`boolean`?p=x:D?p=!1:d||C.pathname+C.search===w.pathname+w.search?p=!0:C.search===w.search?st(a.matches[o],i)&&(p=!0):p=!0;let m={...O,defaultShouldRevalidate:p};return xt(n,r,e,c,k,i,l,t,ct(i,m),m,x)}),j=[];return m.forEach((e,s)=>{if(u||!o.some(t=>t.route.id===e.routeId)||p.has(s))return;let c=a.fetchers.get(s),m=c&&c.state!==`idle`&&c.data===void 0,b=M(g,e.path,_??`/`,!1,y);if(!b){if(v&&m)return;j.push({key:s,routeId:e.routeId,path:e.path,matches:null,match:null,request:null,controller:null});return}if(h.has(s))return;let S=en(b,e.path),C=new AbortController,w=At(i,e.path,C.signal),T=null;if(f.has(s))f.delete(s),T=St(n,r,w,e.path,b,S,l,t);else if(m)d&&(T=St(n,r,w,e.path,b,S,l,t));else{let i;i=typeof x==`boolean`?x:D?!1:d;let a={...O,defaultShouldRevalidate:i};ct(S,a)&&(T=St(n,r,w,e.path,b,S,l,t,a))}T&&j.push({key:s,routeId:e.routeId,path:e.path,matches:T,match:S,request:w,controller:C})}),{dsMatches:A,revalidatingFetchers:j}}function it(e){return e.loader!=null||e.middleware!=null&&e.middleware.length>0}function at(e,t,n){if(e.lazy)return{shouldLoad:!0,renderFallback:!0};if(!it(e))return{shouldLoad:!1,renderFallback:!1};let r=t!=null&&e.id in t,i=n!=null&&n[e.id]!==void 0;if(!r&&i)return{shouldLoad:!1,renderFallback:!1};if(typeof e.loader==`function`&&e.loader.hydrate===!0)return{shouldLoad:!0,renderFallback:!r};let a=!r&&!i;return{shouldLoad:a,renderFallback:a}}function ot(e,t,n){let r=!t||n.route.id!==t.route.id,i=!e.hasOwnProperty(n.route.id);return r||i}function st(e,t){let n=e.route.path;return e.pathname!==t.pathname||n!=null&&n.endsWith(`*`)&&e.params[`*`]!==t.params[`*`]}function ct(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if(typeof n==`boolean`)return n}return t.defaultShouldRevalidate}function lt(e,t,n,r,i,a){let o;if(e){let t=r[e];f(t,`No route found to patch children into: routeId = ${e}`),t.children||=[],o=t.children}else o=n.activeRoutes;let s=[],c=[];if(t.forEach(e=>{let t=o.find(t=>ut(e,t));t?c.push({existingRoute:t,newRoute:e}):s.push(e)}),s.length>0){let t=k(s,i,[e||`_`,`patch`,String(o?.length||`0`)],r);o.push(...t)}if(a&&c.length>0)for(let e=0;e<c.length;e++){let{existingRoute:t,newRoute:n}=c[e],r=t,[a]=k([n],i,[],{},!0);Object.assign(r,{element:a.element?a.element:r.element,errorElement:a.errorElement?a.errorElement:r.errorElement,hydrateFallbackElement:a.hydrateFallbackElement?a.hydrateFallbackElement:r.hydrateFallbackElement})}n.hasHMRRoutes||n.setRoutes([...n.activeRoutes])}function ut(e,t){return`id`in e&&`id`in t&&e.id===t.id?!0:e.index===t.index&&e.path===t.path&&e.caseSensitive===t.caseSensitive?(!e.children||e.children.length===0)&&(!t.children||t.children.length===0)?!0:e.children?.every((e,n)=>t.children?.some(t=>ut(e,t)))??!1:!1}var dt=new WeakMap,ft=({key:e,route:t,manifest:n,mapRouteProperties:r})=>{let i=n[t.id];if(f(i,`No route found in manifest`),!i.lazy||typeof i.lazy!=`object`)return;let a=i.lazy[e];if(!a)return;let o=dt.get(i);o||(o={},dt.set(i,o));let s=o[e];if(s)return s;let c=(async()=>{let t=T(e),n=i[e]!==void 0&&e!==`hasErrorBoundary`;if(t)p(!t,`Route property `+e+` is not a supported lazy route property. This property will be ignored.`),o[e]=Promise.resolve();else if(n)p(!1,`Route "${i.id}" has a static property "${e}" defined. The lazy property will be ignored.`);else{let t=await a();t!=null&&(Object.assign(i,{[e]:t}),Object.assign(i,r(i)))}typeof i.lazy==`object`&&(i.lazy[e]=void 0,Object.values(i.lazy).every(e=>e===void 0)&&(i.lazy=void 0))})();return o[e]=c,c},pt=new WeakMap;function mt(e,t,n,r,i){let a=n[e.id];if(f(a,`No route found in manifest`),!e.lazy)return{lazyRoutePromise:void 0,lazyHandlerPromise:void 0};if(typeof e.lazy==`function`){let t=pt.get(a);if(t)return{lazyRoutePromise:t,lazyHandlerPromise:t};let n=(async()=>{f(typeof e.lazy==`function`,`No lazy route function found`);let t=await e.lazy(),n={};for(let e in t){let r=t[e];if(r===void 0)continue;let i=D(e),o=a[e]!==void 0&&e!==`hasErrorBoundary`;i?p(!i,`Route property `+e+` is not a supported property to be returned from a lazy route function. This property will be ignored.`):o?p(!o,`Route "${a.id}" has a static property "${e}" defined but its lazy function is also returning a value for this property. The lazy route property "${e}" will be ignored.`):n[e]=r}Object.assign(a,n),Object.assign(a,{...r(a),lazy:void 0})})();return pt.set(a,n),n.catch(()=>{}),{lazyRoutePromise:n,lazyHandlerPromise:n}}let o=Object.keys(e.lazy),s=[],c;for(let a of o){if(i&&i.includes(a))continue;let o=ft({key:a,route:e,manifest:n,mapRouteProperties:r});o&&(s.push(o),a===t&&(c=o))}let l=s.length>0?Promise.all(s).then(()=>{}):void 0;return l?.catch(()=>{}),c?.catch(()=>{}),{lazyRoutePromise:l,lazyHandlerPromise:c}}async function ht(e){let t=e.matches.filter(e=>e.shouldLoad),n={};return(await Promise.all(t.map(e=>e.resolve()))).forEach((e,r)=>{n[t[r].route.id]=e}),n}async function gt(e){return e.matches.some(e=>e.route.middleware)?_t(e,()=>ht(e)):ht(e)}function _t(e,t){return vt(e,t,e=>{if(Zt(e))throw e;return e},Wt,n);function n(t,n,r){if(r)return Promise.resolve(Object.assign(r.value,{[n]:{type:`error`,result:t}}));{let{matches:r}=e,i=Rt(r,r[Math.min(Math.max(r.findIndex(e=>e.route.id===n),0),Math.max(r.findIndex(e=>e.shouldCallHandler()),0))].route.id).route.id;return Promise.resolve({[i]:{type:`error`,result:t}})}}}async function vt(e,t,n,r,i){let{matches:a,...o}=e;return await yt(o,a.flatMap(e=>e.route.middleware?e.route.middleware.map(t=>[e.route.id,t]):[]),t,n,r,i)}async function yt(e,t,n,r,i,a,o=0){let{request:s}=e;if(s.signal.aborted)throw s.signal.reason??Error(`Request aborted: ${s.method} ${s.url}`);let c=t[o];if(!c)return await n();let[l,u]=c,d,f=async()=>{if(d)throw Error("You may only call `next()` once per middleware");try{return d={value:await yt(e,t,n,r,i,a,o+1)},d.value}catch(e){return d={value:await a(e,l,d)},d.value}};try{let t=await u(e,f),n=t==null?void 0:r(t);return i(n)?n:d?n??d.value:(d={value:await f()},d.value)}catch(e){return await a(e,l,d)}}function bt(e,t,n,r,i){let a=ft({key:`middleware`,route:r.route,manifest:t,mapRouteProperties:e}),o=mt(r.route,X(n.method)?`action`:`loader`,t,e,i);return{middleware:a,route:o.lazyRoutePromise,handler:o.lazyHandlerPromise}}function xt(e,t,n,r,i,a,o,s,c,l=null,u){let d=!1,f=bt(e,t,n,a,o);return{...a,_lazyPromises:f,shouldLoad:c,shouldRevalidateArgs:l,shouldCallHandler(e){return d=!0,l?typeof u==`boolean`?ct(a,{...l,defaultShouldRevalidate:u}):typeof e==`boolean`?ct(a,{...l,defaultShouldRevalidate:e}):ct(a,l):c},resolve(e){let{lazy:t,loader:o,middleware:l}=a.route,u=d||c||e&&!X(n.method)&&(t||o),p=l&&l.length>0&&!o&&!t;return u&&(X(n.method)||!p)?wt({request:n,path:r,pattern:i,match:a,lazyHandlerPromise:f?.handler,lazyRoutePromise:f?.route,handlerOverride:e,scopedContext:s}):Promise.resolve({type:`data`,result:void 0})}}}function St(e,t,n,r,i,a,o,s,c=null){return i.map(l=>l.route.id===a.route.id?xt(e,t,n,r,Ee(i),l,o,s,!0,c):{...l,shouldLoad:!1,shouldRevalidateArgs:c,shouldCallHandler:()=>!1,_lazyPromises:bt(e,t,n,l,o),resolve:()=>Promise.resolve({type:`data`,result:void 0})})}async function Ct(e,t,n,r,i,a,o){r.some(e=>e._lazyPromises?.middleware)&&await Promise.all(r.map(e=>e._lazyPromises?.middleware));let s={request:t,url:jt(t,n),pattern:Ee(r),params:r[0].params,context:a,matches:r},c=o?()=>{throw Error("You cannot call `runClientMiddleware()` from a static handler `dataStrategy`. Middleware is run outside of `dataStrategy` during SSR in order to bubble up the Response. You can enable middleware via the `respond` API in `query`/`queryRoute`")}:e=>{let t=s;return _t(t,()=>e({...t,fetcherKey:i,runClientMiddleware:()=>{throw Error("Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler")}}))},l=await e({...s,fetcherKey:i,runClientMiddleware:c});try{await Promise.all(r.flatMap(e=>[e._lazyPromises?.handler,e._lazyPromises?.route]))}catch{}return l}async function wt({request:e,path:t,pattern:n,match:r,lazyHandlerPromise:i,lazyRoutePromise:a,handlerOverride:o,scopedContext:s}){let c,l,u=X(e.method),d=u?`action`:`loader`,f=i=>{let a,c=new Promise((e,t)=>a=t);l=()=>a(),e.signal.addEventListener(`abort`,l);let u=a=>typeof i==`function`?i({request:e,url:jt(e,t),pattern:n,params:r.params,context:s},...a===void 0?[]:[a]):Promise.reject(Error(`You cannot call the handler for a route which defines a boolean "${d}" [routeId: ${r.route.id}]`)),f=(async()=>{try{return{type:`data`,result:await(o?o(e=>u(e)):u())}}catch(e){return{type:`error`,result:e}}})();return Promise.race([f,c])};try{let t=u?r.route.action:r.route.loader;if(i||a)if(t){let e,[n]=await Promise.all([f(t).catch(t=>{e=t}),i,a]);if(e!==void 0)throw e;c=n}else{await i;let t=u?r.route.action:r.route.loader;if(t)[c]=await Promise.all([f(t),a]);else if(d===`action`){let t=new URL(e.url),n=t.pathname+t.search;throw J(405,{method:e.method,pathname:n,routeId:r.route.id})}else return{type:`data`,result:void 0}}else if(t)c=await f(t);else{let t=new URL(e.url);throw J(404,{pathname:t.pathname+t.search})}}catch(e){return{type:`error`,result:e}}finally{l&&e.signal.removeEventListener(`abort`,l)}return c}async function Tt(e){let t=e.headers.get(`Content-Type`);return t&&/\bapplication\/json\b/.test(t)?e.body==null?null:e.json():e.text()}async function Et(e){let{result:t,type:n}=e;if(Yt(t)){let e;try{e=await Tt(t)}catch(e){return{type:`error`,error:e}}return n===`error`?{type:`error`,error:new we(t.status,t.statusText,e),statusCode:t.status,headers:t.headers}:{type:`data`,data:e,statusCode:t.status,headers:t.headers}}return n===`error`?Jt(t)?t.data instanceof Error?{type:`error`,error:t.data,statusCode:t.init?.status,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:`error`,error:Ut(t),statusCode:Te(t)?t.status:void 0,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:`error`,error:t,statusCode:Te(t)?t.status:void 0}:Jt(t)?{type:`data`,data:t.data,statusCode:t.init?.status,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:`data`,data:t}}function Dt(e,t,n,r,i){let a=e.headers.get(`Location`);if(f(a,`Redirects returned/thrown from loaders/actions must have a Location header`),!me(a)){let o=r.slice(0,r.findIndex(e=>e.route.id===n)+1);a=tt(new URL(t.url),o,i,a),e.headers.set(`Location`,a)}return e}var Ot=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function kt(e,t,n,r){if(me(e)){let r=e,i=r.startsWith(`//`)?new URL(t.protocol+r):new URL(r);if(Ot.includes(i.protocol))throw Error(`Invalid redirect location`);let a=z(i.pathname,n)!=null;if(i.origin===t.origin&&a)return ye(i.pathname)+i.search+i.hash}try{let t=r.createURL(e);if(Ot.includes(t.protocol))throw Error(`Invalid redirect location`)}catch{}return e}function At(e,t,n,r){let i=e.createURL(Vt(t)).toString(),a={signal:n};if(r&&X(r.formMethod)){let{formMethod:e,formEncType:t}=r;a.method=e.toUpperCase(),t===`application/json`?(a.headers=new Headers({"Content-Type":t}),a.body=JSON.stringify(r.json)):t===`text/plain`?a.body=r.text:t===`application/x-www-form-urlencoded`&&r.formData?a.body=Mt(r.formData):a.body=r.formData}return new Request(i,a)}function jt(e,t){let n=new URL(e.url),r=typeof t==`string`?v(t):t;if(n.pathname=r.pathname||`/`,r.search){let e=new URLSearchParams(r.search),t=e.getAll(`index`);e.delete(`index`);for(let n of t.filter(Boolean))e.append(`index`,n);n.search=e.size?`?${e.toString()}`:``}else n.search=``;return n.hash=r.hash||``,n}function Mt(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,typeof r==`string`?r:r.name);return t}function Nt(e){let t=new FormData;for(let[n,r]of e.entries())t.append(n,r);return t}function Pt(e,t,n,r=!1,i=!1){let a={},o=null,s,c=!1,l={},u=n&&Y(n[1])?n[1].error:void 0;return e.forEach(n=>{if(!(n.route.id in t))return;let d=n.route.id,p=t[d];if(f(!qt(p),`Cannot handle redirect results in processLoaderData`),Y(p)){let t=p.error;if(u!==void 0&&(t=u,u=void 0),o||={},i)o[d]=t;else{let n=Rt(e,d);o[n.route.id]??(o[n.route.id]=t)}r||(a[d]=qe),c||(c=!0,s=Te(p.error)?p.error.status:500),p.headers&&(l[d]=p.headers)}else a[d]=p.data,p.statusCode&&p.statusCode!==200&&!c&&(s=p.statusCode),p.headers&&(l[d]=p.headers)}),u!==void 0&&n&&(o={[n[0]]:u},n[2]&&(a[n[2]]=void 0)),{loaderData:a,errors:o,statusCode:s||200,loaderHeaders:l}}function Ft(e,t,n,r,i,a){let{loaderData:o,errors:s}=Pt(t,n,r);return i.filter(e=>!e.matches||e.matches.some(e=>e.shouldLoad)).forEach(t=>{let{key:n,match:r,controller:i}=t;if(i&&i.signal.aborted)return;let o=a[n];if(f(o,`Did not find corresponding fetcher result`),Y(o)){let t=Rt(e.matches,r?.route.id);s&&s[t.route.id]||(s={...s,[t.route.id]:o.error}),e.fetchers.delete(n)}else if(qt(o))f(!1,`Unhandled fetcher revalidation redirect`);else{let t=sn(o.data);e.fetchers.set(n,t)}}),{loaderData:o,errors:s}}function It(e,t,n,r){let i=Object.entries(t).filter(([,e])=>e!==qe).reduce((e,[t,n])=>(e[t]=n,e),{});for(let a of n){let n=a.route.id;if(!t.hasOwnProperty(n)&&e.hasOwnProperty(n)&&a.route.loader&&(i[n]=e[n]),r&&r.hasOwnProperty(n))break}return i}function Lt(e){return e?Y(e[1])?{actionData:{}}:{actionData:{[e[0]]:e[1].data}}:{}}function Rt(e,t){return(t?e.slice(0,e.findIndex(e=>e.route.id===t)+1):[...e]).reverse().find(e=>e.route.hasErrorBoundary===!0)||e[0]}function zt(e){let t=e.length===1?e[0]:e.find(e=>e.index||!e.path||e.path===`/`)||{id:`__shim-error-route__`};return{matches:[{params:{},pathname:``,pathnameBase:``,route:t}],route:t}}function J(e,{pathname:t,routeId:n,method:r,type:i,message:a}={}){let o=`Unknown Server Error`,s=`Unknown @remix-run/router error`;return e===400?(o=`Bad Request`,r&&t&&n?s=`You made a ${r} request to "${t}" but did not provide a \`loader\` for route "${n}", so there is no way to handle the request.`:i===`invalid-body`&&(s=`Unable to encode submission body`)):e===403?(o=`Forbidden`,s=`Route "${n}" does not match URL "${t}"`):e===404?(o=`Not Found`,s=`No route matches URL "${t}"`):e===405&&(o=`Method Not Allowed`,r&&t&&n?s=`You made a ${r.toUpperCase()} request to "${t}" but did not provide an \`action\` for route "${n}", so there is no way to handle the request.`:r&&(s=`Invalid request method "${r.toUpperCase()}"`)),new we(e||500,o,Error(s),!0)}function Bt(e){let t=Object.entries(e);for(let e=t.length-1;e>=0;e--){let[n,r]=t[e];if(qt(r))return{key:n,result:r}}}function Vt(e){return _({...typeof e==`string`?v(e):e,hash:``})}function Ht(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===``?t.hash!==``:e.hash===t.hash?!0:t.hash!==``}function Ut(e){return new we(e.init?.status??500,e.init?.statusText??`Internal Server Error`,e.data)}function Wt(e){return typeof e==`object`&&!!e&&Object.entries(e).every(([e,t])=>typeof e==`string`&&Gt(t))}function Gt(e){return typeof e==`object`&&!!e&&`type`in e&&`result`in e&&(e.type===`data`||e.type===`error`)}function Kt(e){return Yt(e.result)&&Be.has(e.result.status)}function Y(e){return e.type===`error`}function qt(e){return(e&&e.type)===`redirect`}function Jt(e){return typeof e==`object`&&!!e&&`type`in e&&`data`in e&&`init`in e&&e.type===`DataWithResponseInit`}function Yt(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.headers==`object`&&e.body!==void 0}function Xt(e){return Be.has(e)}function Zt(e){return Yt(e)&&Xt(e.status)&&e.headers.has(`Location`)}function Qt(e){return ze.has(e.toUpperCase())}function X(e){return Le.has(e.toUpperCase())}function $t(e){return new URLSearchParams(e).getAll(`index`).some(e=>e===``)}function en(e,t){let n=typeof t==`string`?v(t).search:t.search;if(e[e.length-1].route.index&&$t(n||``))return e[e.length-1];let r=ve(e);return r[r.length-1]}function tn(e){let{formMethod:t,formAction:n,formEncType:r,text:i,formData:a,json:o}=e;if(!(!t||!n||!r)){if(i!=null)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:void 0,text:i};if(a!=null)return{formMethod:t,formAction:n,formEncType:r,formData:a,json:void 0,text:void 0};if(o!==void 0)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:o,text:void 0}}}function nn(e,t){return t?{state:`loading`,location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:`loading`,location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function rn(e,t){return{state:`submitting`,location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}function an(e,t){return e?{state:`loading`,formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:`loading`,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function on(e,t){return{state:`submitting`,formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}function sn(e){return{state:`idle`,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function cn(e,t){try{let n=e.sessionStorage.getItem(Ke);if(n){let e=JSON.parse(n);for(let[n,r]of Object.entries(e||{}))r&&Array.isArray(r)&&t.set(n,new Set(r||[]))}}catch{}}function ln(e,t){if(t.size>0){let n={};for(let[e,r]of t)n[e]=[...r];try{e.sessionStorage.setItem(Ke,JSON.stringify(n))}catch(e){p(!1,`Failed to save applied view transitions in sessionStorage (${e}).`)}}}function un(){let e,t,n=new Promise((r,i)=>{e=async e=>{r(e);try{await n}catch{}},t=async e=>{i(e);try{await n}catch{}}});return{promise:n,resolve:e,reject:t}}var dn=r.createContext(null);dn.displayName=`DataRouter`;var fn=r.createContext(null);fn.displayName=`DataRouterState`;var pn=r.createContext(!1);function mn(){return r.useContext(pn)}var hn=r.createContext({isTransitioning:!1});hn.displayName=`ViewTransition`;var gn=r.createContext(new Map);gn.displayName=`Fetchers`;var _n=r.createContext(null);_n.displayName=`Await`;var Z=r.createContext(null);Z.displayName=`Navigation`;var vn=r.createContext(null);vn.displayName=`Location`;var Q=r.createContext({outlet:null,matches:[],isDataRoute:!1});Q.displayName=`Route`;var yn=r.createContext(null);yn.displayName=`RouteError`;var bn=`REACT_ROUTER_ERROR`,xn=`REDIRECT`,Sn=`ROUTE_ERROR_RESPONSE`;function Cn(e){if(e.startsWith(`${bn}:${xn}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function wn(e){if(e.startsWith(`${bn}:${Sn}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new we(t.status,t.statusText,t.data)}catch{}}function Tn(e,{relative:t}={}){f(En(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:i}=r.useContext(Z),{hash:a,pathname:o,search:s}=Pn(e,{relative:t}),c=o;return n!==`/`&&(c=o===`/`?n:H([n,o])),i.createHref({pathname:c,search:s,hash:a})}function En(){return r.useContext(vn)!=null}function $(){return f(En(),`useLocation() may be used only in the context of a <Router> component.`),r.useContext(vn).location}var Dn=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function On(e){r.useContext(Z).static||r.useLayoutEffect(e)}function kn(){let{isDataRoute:e}=r.useContext(Q);return e?Qn():An()}function An(){f(En(),`useNavigate() may be used only in the context of a <Router> component.`);let e=r.useContext(dn),{basename:t,navigator:n}=r.useContext(Z),{matches:i}=r.useContext(Q),{pathname:a}=$(),o=JSON.stringify(B(i)),s=r.useRef(!1);return On(()=>{s.current=!0}),r.useCallback((r,i={})=>{if(p(s.current,Dn),!s.current)return;if(typeof r==`number`){n.go(r);return}let c=V(r,JSON.parse(o),a,i.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:H([t,c.pathname])),(i.replace?n.replace:n.push)(c,i.state,i)},[t,n,o,a,e])}var jn=r.createContext(null);function Mn(e){let t=r.useContext(Q).outlet;return r.useMemo(()=>t&&r.createElement(jn.Provider,{value:e},t),[t,e])}function Nn(){let{matches:e}=r.useContext(Q);return e[e.length-1]?.params??{}}function Pn(e,{relative:t}={}){let{matches:n}=r.useContext(Q),{pathname:i}=$(),a=JSON.stringify(B(n));return r.useMemo(()=>V(e,JSON.parse(a),i,t===`path`),[e,a,i,t])}function Fn(e,t,n){f(En(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:i}=r.useContext(Z),{matches:a}=r.useContext(Q),o=a[a.length-1],s=o?o.params:{},c=o?o.pathname:`/`,l=o?o.pathnameBase:`/`,u=o&&o.route;{let e=u&&u.path||``;er(c,!u||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${c}" (under <Route path="${e}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
|
|
2
|
+
`,``):String(n.body);return{path:t,submission:{formMethod:i,formAction:a,formEncType:n.formEncType,formData:void 0,json:void 0,text:e}}}else if(n.formEncType===`application/json`){if(!X(i))return r();try{let e=typeof n.body==`string`?JSON.parse(n.body):n.body;return{path:t,submission:{formMethod:i,formAction:a,formEncType:n.formEncType,formData:void 0,json:e,text:void 0}}}catch{return r()}}}f(typeof FormData==`function`,`FormData is not available in this environment`);let o,s;if(n.formData)o=Mt(n.formData),s=n.formData;else if(n.body instanceof FormData)o=Mt(n.body),s=n.body;else if(n.body instanceof URLSearchParams)o=n.body,s=Nt(o);else if(n.body==null)o=new URLSearchParams,s=new FormData;else try{o=new URLSearchParams(n.body),s=Nt(o)}catch{return r()}let c={formMethod:i,formAction:a,formEncType:n&&n.formEncType||`application/x-www-form-urlencoded`,formData:s,json:void 0,text:void 0};if(X(c.formMethod))return{path:t,submission:c};let l=v(t);return e&&l.search&&$t(l.search)&&o.append(`index`,``),l.search=`?${o}`,{path:_(l),submission:c}}function rt(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x){let S=b?Y(b[1])?b[1].error:b[1].data:void 0,C=i.createURL(a.location),w=i.createURL(c),T;if(u&&a.errors){let e=Object.keys(a.errors)[0];T=o.findIndex(t=>t.route.id===e)}else if(b&&Y(b[1])){let e=b[0];T=o.findIndex(t=>t.route.id===e)-1}let E=b?b[1].statusCode:void 0,D=E&&E>=400,O={currentUrl:C,currentParams:a.matches[0]?.params||{},nextUrl:w,nextParams:o[0].params,...s,actionResult:S,actionStatus:E},k=Ee(o),A=o.map((i,o)=>{let{route:s}=i,f=null;if(T!=null&&o>T)f=!1;else if(s.lazy)f=!0;else if(!it(s))f=!1;else if(u){let{shouldLoad:e}=at(s,a.loaderData,a.errors);f=e}else ot(a.loaderData,a.matches[o],i)&&(f=!0);if(f!==null)return xt(n,r,e,c,k,i,l,t,f);let p=!1;typeof x==`boolean`?p=x:D?p=!1:d||C.pathname+C.search===w.pathname+w.search?p=!0:C.search===w.search?st(a.matches[o],i)&&(p=!0):p=!0;let m={...O,defaultShouldRevalidate:p};return xt(n,r,e,c,k,i,l,t,ct(i,m),m,x)}),j=[];return m.forEach((e,s)=>{if(u||!o.some(t=>t.route.id===e.routeId)||p.has(s))return;let c=a.fetchers.get(s),m=c&&c.state!==`idle`&&c.data===void 0,b=M(g,e.path,_??`/`,!1,y);if(!b){if(v&&m)return;j.push({key:s,routeId:e.routeId,path:e.path,matches:null,match:null,request:null,controller:null});return}if(h.has(s))return;let S=en(b,e.path),C=new AbortController,w=At(i,e.path,C.signal),T=null;if(f.has(s))f.delete(s),T=St(n,r,w,e.path,b,S,l,t);else if(m)d&&(T=St(n,r,w,e.path,b,S,l,t));else{let i;i=typeof x==`boolean`?x:D?!1:d;let a={...O,defaultShouldRevalidate:i};ct(S,a)&&(T=St(n,r,w,e.path,b,S,l,t,a))}T&&j.push({key:s,routeId:e.routeId,path:e.path,matches:T,match:S,request:w,controller:C})}),{dsMatches:A,revalidatingFetchers:j}}function it(e){return e.loader!=null||e.middleware!=null&&e.middleware.length>0}function at(e,t,n){if(e.lazy)return{shouldLoad:!0,renderFallback:!0};if(!it(e))return{shouldLoad:!1,renderFallback:!1};let r=t!=null&&e.id in t,i=n!=null&&n[e.id]!==void 0;if(!r&&i)return{shouldLoad:!1,renderFallback:!1};if(typeof e.loader==`function`&&e.loader.hydrate===!0)return{shouldLoad:!0,renderFallback:!r};let a=!r&&!i;return{shouldLoad:a,renderFallback:a}}function ot(e,t,n){let r=!t||n.route.id!==t.route.id,i=!e.hasOwnProperty(n.route.id);return r||i}function st(e,t){let n=e.route.path;return e.pathname!==t.pathname||n!=null&&n.endsWith(`*`)&&e.params[`*`]!==t.params[`*`]}function ct(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if(typeof n==`boolean`)return n}return t.defaultShouldRevalidate}function lt(e,t,n,r,i,a){let o;if(e){let t=r[e];f(t,`No route found to patch children into: routeId = ${e}`),t.children||=[],o=t.children}else o=n.activeRoutes;let s=[],c=[];if(t.forEach(e=>{let t=o.find(t=>ut(e,t));t?c.push({existingRoute:t,newRoute:e}):s.push(e)}),s.length>0){let t=k(s,i,[e||`_`,`patch`,String(o?.length||`0`)],r);o.push(...t)}if(a&&c.length>0)for(let e=0;e<c.length;e++){let{existingRoute:t,newRoute:n}=c[e],r=t,[a]=k([n],i,[],{},!0);Object.assign(r,{element:a.element?a.element:r.element,errorElement:a.errorElement?a.errorElement:r.errorElement,hydrateFallbackElement:a.hydrateFallbackElement?a.hydrateFallbackElement:r.hydrateFallbackElement})}n.hasHMRRoutes||n.setRoutes([...n.activeRoutes])}function ut(e,t){return`id`in e&&`id`in t&&e.id===t.id?!0:e.index===t.index&&e.path===t.path&&e.caseSensitive===t.caseSensitive?(!e.children||e.children.length===0)&&(!t.children||t.children.length===0)?!0:e.children?.every((e,n)=>t.children?.some(t=>ut(e,t)))??!1:!1}var dt=new WeakMap,ft=({key:e,route:t,manifest:n,mapRouteProperties:r})=>{let i=n[t.id];if(f(i,`No route found in manifest`),!i.lazy||typeof i.lazy!=`object`)return;let a=i.lazy[e];if(!a)return;let o=dt.get(i);o||(o={},dt.set(i,o));let s=o[e];if(s)return s;let c=(async()=>{let t=T(e),n=i[e]!==void 0&&e!==`hasErrorBoundary`;if(t)p(!t,`Route property `+e+` is not a supported lazy route property. This property will be ignored.`),o[e]=Promise.resolve();else if(n)p(!1,`Route "${i.id}" has a static property "${e}" defined. The lazy property will be ignored.`);else{let t=await a();t!=null&&(Object.assign(i,{[e]:t}),Object.assign(i,r(i)))}typeof i.lazy==`object`&&(i.lazy[e]=void 0,Object.values(i.lazy).every(e=>e===void 0)&&(i.lazy=void 0))})();return o[e]=c,c},pt=new WeakMap;function mt(e,t,n,r,i){let a=n[e.id];if(f(a,`No route found in manifest`),!e.lazy)return{lazyRoutePromise:void 0,lazyHandlerPromise:void 0};if(typeof e.lazy==`function`){let t=pt.get(a);if(t)return{lazyRoutePromise:t,lazyHandlerPromise:t};let n=(async()=>{f(typeof e.lazy==`function`,`No lazy route function found`);let t=await e.lazy(),n={};for(let e in t){let r=t[e];if(r===void 0)continue;let i=D(e),o=a[e]!==void 0&&e!==`hasErrorBoundary`;i?p(!i,`Route property `+e+` is not a supported property to be returned from a lazy route function. This property will be ignored.`):o?p(!o,`Route "${a.id}" has a static property "${e}" defined but its lazy function is also returning a value for this property. The lazy route property "${e}" will be ignored.`):n[e]=r}Object.assign(a,n),Object.assign(a,{...r(a),lazy:void 0})})();return pt.set(a,n),n.catch(()=>{}),{lazyRoutePromise:n,lazyHandlerPromise:n}}let o=Object.keys(e.lazy),s=[],c;for(let a of o){if(i&&i.includes(a))continue;let o=ft({key:a,route:e,manifest:n,mapRouteProperties:r});o&&(s.push(o),a===t&&(c=o))}let l=s.length>0?Promise.all(s).then(()=>{}):void 0;return l?.catch(()=>{}),c?.catch(()=>{}),{lazyRoutePromise:l,lazyHandlerPromise:c}}async function ht(e){let t=e.matches.filter(e=>e.shouldLoad),n={};return(await Promise.all(t.map(e=>e.resolve()))).forEach((e,r)=>{n[t[r].route.id]=e}),n}async function gt(e){return e.matches.some(e=>e.route.middleware)?_t(e,()=>ht(e)):ht(e)}function _t(e,t){return vt(e,t,e=>{if(Zt(e))throw e;return e},Wt,n);function n(t,n,r){if(r)return Promise.resolve(Object.assign(r.value,{[n]:{type:`error`,result:t}}));{let{matches:r}=e,i=Rt(r,r[Math.min(Math.max(r.findIndex(e=>e.route.id===n),0),Math.max(r.findIndex(e=>e.shouldCallHandler()),0))].route.id).route.id;return Promise.resolve({[i]:{type:`error`,result:t}})}}}async function vt(e,t,n,r,i){let{matches:a,...o}=e;return await yt(o,a.flatMap(e=>e.route.middleware?e.route.middleware.map(t=>[e.route.id,t]):[]),t,n,r,i)}async function yt(e,t,n,r,i,a,o=0){let{request:s}=e;if(s.signal.aborted)throw s.signal.reason??Error(`Request aborted: ${s.method} ${s.url}`);let c=t[o];if(!c)return await n();let[l,u]=c,d,f=async()=>{if(d)throw Error("You may only call `next()` once per middleware");try{return d={value:await yt(e,t,n,r,i,a,o+1)},d.value}catch(e){return d={value:await a(e,l,d)},d.value}};try{let t=await u(e,f),n=t==null?void 0:r(t);return i(n)?n:d?n??d.value:(d={value:await f()},d.value)}catch(e){return await a(e,l,d)}}function bt(e,t,n,r,i){let a=ft({key:`middleware`,route:r.route,manifest:t,mapRouteProperties:e}),o=mt(r.route,X(n.method)?`action`:`loader`,t,e,i);return{middleware:a,route:o.lazyRoutePromise,handler:o.lazyHandlerPromise}}function xt(e,t,n,r,i,a,o,s,c,l=null,u){let d=!1,f=bt(e,t,n,a,o);return{...a,_lazyPromises:f,shouldLoad:c,shouldRevalidateArgs:l,shouldCallHandler(e){return d=!0,l?typeof u==`boolean`?ct(a,{...l,defaultShouldRevalidate:u}):typeof e==`boolean`?ct(a,{...l,defaultShouldRevalidate:e}):ct(a,l):c},resolve(e){let{lazy:t,loader:o,middleware:l}=a.route,u=d||c||e&&!X(n.method)&&(t||o),p=l&&l.length>0&&!o&&!t;return u&&(X(n.method)||!p)?wt({request:n,path:r,pattern:i,match:a,lazyHandlerPromise:f?.handler,lazyRoutePromise:f?.route,handlerOverride:e,scopedContext:s}):Promise.resolve({type:`data`,result:void 0})}}}function St(e,t,n,r,i,a,o,s,c=null){return i.map(l=>l.route.id===a.route.id?xt(e,t,n,r,Ee(i),l,o,s,!0,c):{...l,shouldLoad:!1,shouldRevalidateArgs:c,shouldCallHandler:()=>!1,_lazyPromises:bt(e,t,n,l,o),resolve:()=>Promise.resolve({type:`data`,result:void 0})})}async function Ct(e,t,n,r,i,a,o){r.some(e=>e._lazyPromises?.middleware)&&await Promise.all(r.map(e=>e._lazyPromises?.middleware));let s={request:t,url:jt(t,n),pattern:Ee(r),params:r[0].params,context:a,matches:r},c=o?()=>{throw Error("You cannot call `runClientMiddleware()` from a static handler `dataStrategy`. Middleware is run outside of `dataStrategy` during SSR in order to bubble up the Response. You can enable middleware via the `respond` API in `query`/`queryRoute`")}:e=>{let t=s;return _t(t,()=>e({...t,fetcherKey:i,runClientMiddleware:()=>{throw Error("Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler")}}))},l=await e({...s,fetcherKey:i,runClientMiddleware:c});try{await Promise.all(r.flatMap(e=>[e._lazyPromises?.handler,e._lazyPromises?.route]))}catch{}return l}async function wt({request:e,path:t,pattern:n,match:r,lazyHandlerPromise:i,lazyRoutePromise:a,handlerOverride:o,scopedContext:s}){let c,l,u=X(e.method),d=u?`action`:`loader`,f=i=>{let a,c=new Promise((e,t)=>a=t);l=()=>a(),e.signal.addEventListener(`abort`,l);let u=a=>typeof i==`function`?i({request:e,url:jt(e,t),pattern:n,params:r.params,context:s},...a===void 0?[]:[a]):Promise.reject(Error(`You cannot call the handler for a route which defines a boolean "${d}" [routeId: ${r.route.id}]`)),f=(async()=>{try{return{type:`data`,result:await(o?o(e=>u(e)):u())}}catch(e){return{type:`error`,result:e}}})();return Promise.race([f,c])};try{let t=u?r.route.action:r.route.loader;if(i||a)if(t){let e,[n]=await Promise.all([f(t).catch(t=>{e=t}),i,a]);if(e!==void 0)throw e;c=n}else{await i;let t=u?r.route.action:r.route.loader;if(t)[c]=await Promise.all([f(t),a]);else if(d===`action`){let t=new URL(e.url),n=t.pathname+t.search;throw J(405,{method:e.method,pathname:n,routeId:r.route.id})}else return{type:`data`,result:void 0}}else if(t)c=await f(t);else{let t=new URL(e.url);throw J(404,{pathname:t.pathname+t.search})}}catch(e){return{type:`error`,result:e}}finally{l&&e.signal.removeEventListener(`abort`,l)}return c}async function Tt(e){let t=e.headers.get(`Content-Type`);return t&&/\bapplication\/json\b/.test(t)?e.body==null?null:e.json():e.text()}async function Et(e){let{result:t,type:n}=e;if(Yt(t)){let e;try{e=await Tt(t)}catch(e){return{type:`error`,error:e}}return n===`error`?{type:`error`,error:new we(t.status,t.statusText,e),statusCode:t.status,headers:t.headers}:{type:`data`,data:e,statusCode:t.status,headers:t.headers}}return n===`error`?Jt(t)?t.data instanceof Error?{type:`error`,error:t.data,statusCode:t.init?.status,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:`error`,error:Ut(t),statusCode:Te(t)?t.status:void 0,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:`error`,error:t,statusCode:Te(t)?t.status:void 0}:Jt(t)?{type:`data`,data:t.data,statusCode:t.init?.status,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:`data`,data:t}}function Dt(e,t,n,r,i){let a=e.headers.get(`Location`);if(f(a,`Redirects returned/thrown from loaders/actions must have a Location header`),!me(a)){let o=r.slice(0,r.findIndex(e=>e.route.id===n)+1);a=tt(new URL(t.url),o,i,a),e.headers.set(`Location`,a)}return e}var Ot=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function kt(e,t,n,r){if(me(e)){let r=e,i=r.startsWith(`//`)?new URL(t.protocol+r):new URL(r);if(Ot.includes(i.protocol))throw Error(`Invalid redirect location`);let a=z(i.pathname,n)!=null;if(i.origin===t.origin&&a)return ye(i.pathname)+i.search+i.hash}try{let t=r.createURL(e);if(Ot.includes(t.protocol))throw Error(`Invalid redirect location`)}catch{}return e}function At(e,t,n,r){let i=e.createURL(Vt(t)).toString(),a={signal:n};if(r&&X(r.formMethod)){let{formMethod:e,formEncType:t}=r;a.method=e.toUpperCase(),t===`application/json`?(a.headers=new Headers({"Content-Type":t}),a.body=JSON.stringify(r.json)):t===`text/plain`?a.body=r.text:t===`application/x-www-form-urlencoded`&&r.formData?a.body=Mt(r.formData):a.body=r.formData}return new Request(i,a)}function jt(e,t){let n=new URL(e.url),r=typeof t==`string`?v(t):t;if(n.pathname=r.pathname||`/`,r.search){let e=new URLSearchParams(r.search),t=e.getAll(`index`);e.delete(`index`);for(let n of t.filter(Boolean))e.append(`index`,n);n.search=e.size?`?${e.toString()}`:``}else n.search=``;return n.hash=r.hash||``,n}function Mt(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,typeof r==`string`?r:r.name);return t}function Nt(e){let t=new FormData;for(let[n,r]of e.entries())t.append(n,r);return t}function Pt(e,t,n,r=!1,i=!1){let a={},o=null,s,c=!1,l={},u=n&&Y(n[1])?n[1].error:void 0;return e.forEach(n=>{if(!(n.route.id in t))return;let d=n.route.id,p=t[d];if(f(!qt(p),`Cannot handle redirect results in processLoaderData`),Y(p)){let t=p.error;if(u!==void 0&&(t=u,u=void 0),o||={},i)o[d]=t;else{let n=Rt(e,d);o[n.route.id]??(o[n.route.id]=t)}r||(a[d]=qe),c||(c=!0,s=Te(p.error)?p.error.status:500),p.headers&&(l[d]=p.headers)}else a[d]=p.data,p.statusCode&&p.statusCode!==200&&!c&&(s=p.statusCode),p.headers&&(l[d]=p.headers)}),u!==void 0&&n&&(o={[n[0]]:u},n[2]&&(a[n[2]]=void 0)),{loaderData:a,errors:o,statusCode:s||200,loaderHeaders:l}}function Ft(e,t,n,r,i,a){let{loaderData:o,errors:s}=Pt(t,n,r);return i.filter(e=>!e.matches||e.matches.some(e=>e.shouldLoad)).forEach(t=>{let{key:n,match:r,controller:i}=t;if(i&&i.signal.aborted)return;let o=a[n];if(f(o,`Did not find corresponding fetcher result`),Y(o)){let t=Rt(e.matches,r?.route.id);s&&s[t.route.id]||(s={...s,[t.route.id]:o.error}),e.fetchers.delete(n)}else if(qt(o))f(!1,`Unhandled fetcher revalidation redirect`);else{let t=sn(o.data);e.fetchers.set(n,t)}}),{loaderData:o,errors:s}}function It(e,t,n,r){let i=Object.entries(t).filter(([,e])=>e!==qe).reduce((e,[t,n])=>(e[t]=n,e),{});for(let a of n){let n=a.route.id;if(!t.hasOwnProperty(n)&&e.hasOwnProperty(n)&&a.route.loader&&(i[n]=e[n]),r&&r.hasOwnProperty(n))break}return i}function Lt(e){return e?Y(e[1])?{actionData:{}}:{actionData:{[e[0]]:e[1].data}}:{}}function Rt(e,t){return(t?e.slice(0,e.findIndex(e=>e.route.id===t)+1):[...e]).reverse().find(e=>e.route.hasErrorBoundary===!0)||e[0]}function zt(e){let t=e.length===1?e[0]:e.find(e=>e.index||!e.path||e.path===`/`)||{id:`__shim-error-route__`};return{matches:[{params:{},pathname:``,pathnameBase:``,route:t}],route:t}}function J(e,{pathname:t,routeId:n,method:r,type:i,message:a}={}){let o=`Unknown Server Error`,s=`Unknown @remix-run/router error`;return e===400?(o=`Bad Request`,r&&t&&n?s=`You made a ${r} request to "${t}" but did not provide a \`loader\` for route "${n}", so there is no way to handle the request.`:i===`invalid-body`&&(s=`Unable to encode submission body`)):e===403?(o=`Forbidden`,s=`Route "${n}" does not match URL "${t}"`):e===404?(o=`Not Found`,s=`No route matches URL "${t}"`):e===405&&(o=`Method Not Allowed`,r&&t&&n?s=`You made a ${r.toUpperCase()} request to "${t}" but did not provide an \`action\` for route "${n}", so there is no way to handle the request.`:r&&(s=`Invalid request method "${r.toUpperCase()}"`)),new we(e||500,o,Error(s),!0)}function Bt(e){let t=Object.entries(e);for(let e=t.length-1;e>=0;e--){let[n,r]=t[e];if(qt(r))return{key:n,result:r}}}function Vt(e){return _({...typeof e==`string`?v(e):e,hash:``})}function Ht(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===``?t.hash!==``:e.hash===t.hash?!0:t.hash!==``}function Ut(e){return new we(e.init?.status??500,e.init?.statusText??`Internal Server Error`,e.data)}function Wt(e){return typeof e==`object`&&!!e&&Object.entries(e).every(([e,t])=>typeof e==`string`&&Gt(t))}function Gt(e){return typeof e==`object`&&!!e&&`type`in e&&`result`in e&&(e.type===`data`||e.type===`error`)}function Kt(e){return Yt(e.result)&&Be.has(e.result.status)}function Y(e){return e.type===`error`}function qt(e){return(e&&e.type)===`redirect`}function Jt(e){return typeof e==`object`&&!!e&&`type`in e&&`data`in e&&`init`in e&&e.type===`DataWithResponseInit`}function Yt(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.headers==`object`&&e.body!==void 0}function Xt(e){return Be.has(e)}function Zt(e){return Yt(e)&&Xt(e.status)&&e.headers.has(`Location`)}function Qt(e){return ze.has(e.toUpperCase())}function X(e){return Le.has(e.toUpperCase())}function $t(e){return new URLSearchParams(e).getAll(`index`).some(e=>e===``)}function en(e,t){let n=typeof t==`string`?v(t).search:t.search;if(e[e.length-1].route.index&&$t(n||``))return e[e.length-1];let r=ve(e);return r[r.length-1]}function tn(e){let{formMethod:t,formAction:n,formEncType:r,text:i,formData:a,json:o}=e;if(!(!t||!n||!r)){if(i!=null)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:void 0,text:i};if(a!=null)return{formMethod:t,formAction:n,formEncType:r,formData:a,json:void 0,text:void 0};if(o!==void 0)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:o,text:void 0}}}function nn(e,t){return t?{state:`loading`,location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:`loading`,location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function rn(e,t){return{state:`submitting`,location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}function an(e,t){return e?{state:`loading`,formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:`loading`,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function on(e,t){return{state:`submitting`,formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}function sn(e){return{state:`idle`,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function cn(e,t){try{let n=e.sessionStorage.getItem(Ke);if(n){let e=JSON.parse(n);for(let[n,r]of Object.entries(e||{}))r&&Array.isArray(r)&&t.set(n,new Set(r||[]))}}catch{}}function ln(e,t){if(t.size>0){let n={};for(let[e,r]of t)n[e]=[...r];try{e.sessionStorage.setItem(Ke,JSON.stringify(n))}catch(e){p(!1,`Failed to save applied view transitions in sessionStorage (${e}).`)}}}function un(){let e,t,n=new Promise((r,i)=>{e=async e=>{r(e);try{await n}catch{}},t=async e=>{i(e);try{await n}catch{}}});return{promise:n,resolve:e,reject:t}}var dn=r.createContext(null);dn.displayName=`DataRouter`;var fn=r.createContext(null);fn.displayName=`DataRouterState`;var pn=r.createContext(!1);function mn(){return r.useContext(pn)}var hn=r.createContext({isTransitioning:!1});hn.displayName=`ViewTransition`;var gn=r.createContext(new Map);gn.displayName=`Fetchers`;var _n=r.createContext(null);_n.displayName=`Await`;var Z=r.createContext(null);Z.displayName=`Navigation`;var vn=r.createContext(null);vn.displayName=`Location`;var Q=r.createContext({outlet:null,matches:[],isDataRoute:!1});Q.displayName=`Route`;var yn=r.createContext(null);yn.displayName=`RouteError`;var bn=`REACT_ROUTER_ERROR`,xn=`REDIRECT`,Sn=`ROUTE_ERROR_RESPONSE`;function Cn(e){if(e.startsWith(`${bn}:${xn}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function wn(e){if(e.startsWith(`${bn}:${Sn}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new we(t.status,t.statusText,t.data)}catch{}}function Tn(e,{relative:t}={}){f(En(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:i}=r.useContext(Z),{hash:a,pathname:o,search:s}=Fn(e,{relative:t}),c=o;return n!==`/`&&(c=o===`/`?n:H([n,o])),i.createHref({pathname:c,search:s,hash:a})}function En(){return r.useContext(vn)!=null}function $(){return f(En(),`useLocation() may be used only in the context of a <Router> component.`),r.useContext(vn).location}function Dn(){return r.useContext(vn).navigationType}var On=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function kn(e){r.useContext(Z).static||r.useLayoutEffect(e)}function An(){let{isDataRoute:e}=r.useContext(Q);return e?$n():jn()}function jn(){f(En(),`useNavigate() may be used only in the context of a <Router> component.`);let e=r.useContext(dn),{basename:t,navigator:n}=r.useContext(Z),{matches:i}=r.useContext(Q),{pathname:a}=$(),o=JSON.stringify(B(i)),s=r.useRef(!1);return kn(()=>{s.current=!0}),r.useCallback((r,i={})=>{if(p(s.current,On),!s.current)return;if(typeof r==`number`){n.go(r);return}let c=V(r,JSON.parse(o),a,i.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:H([t,c.pathname])),(i.replace?n.replace:n.push)(c,i.state,i)},[t,n,o,a,e])}var Mn=r.createContext(null);function Nn(e){let t=r.useContext(Q).outlet;return r.useMemo(()=>t&&r.createElement(Mn.Provider,{value:e},t),[t,e])}function Pn(){let{matches:e}=r.useContext(Q);return e[e.length-1]?.params??{}}function Fn(e,{relative:t}={}){let{matches:n}=r.useContext(Q),{pathname:i}=$(),a=JSON.stringify(B(n));return r.useMemo(()=>V(e,JSON.parse(a),i,t===`path`),[e,a,i,t])}function In(e,t,n){f(En(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:i}=r.useContext(Z),{matches:a}=r.useContext(Q),o=a[a.length-1],s=o?o.params:{},c=o?o.pathname:`/`,l=o?o.pathnameBase:`/`,u=o&&o.route;{let e=u&&u.path||``;tr(c,!u||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${c}" (under <Route path="${e}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
|
|
3
3
|
|
|
4
|
-
Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let d=$(),m;if(t){let e=typeof t==`string`?v(t):t;f(l===`/`||e.pathname?.startsWith(l),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${l}" but pathname "${e.pathname}" was given in the \`location\` prop.`),m=e}else m=d;let h=m.pathname||`/`,g=h;if(l!==`/`){let e=l.replace(/^\//,``).split(`/`);g=`/`+h.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let _=n&&n.state.matches.length?n.state.matches.map(e=>Object.assign(e,{route:n.manifest[e.route.id]||e.route})):j(e,{pathname:g});p(u||_!=null,`No routes matched location "${m.pathname}${m.search}${m.hash}" `),p(_==null||_[_.length-1].route.element!==void 0||_[_.length-1].route.Component!==void 0||_[_.length-1].route.lazy!==void 0,`Matched leaf route at location "${m.pathname}${m.search}${m.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let y=Hn(_&&_.map(e=>Object.assign({},e,{params:Object.assign({},s,e.params),pathname:H([l,i.encodeLocation?i.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?l:H([l,i.encodeLocation?i.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),a,n);return t&&y?r.createElement(vn.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...m},navigationType:`POP`}},y):y}function In(){let e=Zn(),t=Te(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,i=`rgba(200,200,200, 0.5)`,a={padding:`0.5rem`,backgroundColor:i},o={padding:`2px 4px`,backgroundColor:i},s=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),s=r.createElement(r.Fragment,null,r.createElement(`p`,null,`💿 Hey developer 👋`),r.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,r.createElement(`code`,{style:o},`ErrorBoundary`),` or`,` `,r.createElement(`code`,{style:o},`errorElement`),` prop on your route.`)),r.createElement(r.Fragment,null,r.createElement(`h2`,null,`Unexpected Application Error!`),r.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?r.createElement(`pre`,{style:a},n):null,s)}var Ln=r.createElement(In,null),Rn=class extends r.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=wn(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:r.createElement(Q.Provider,{value:this.props.routeContext},r.createElement(yn.Provider,{value:e,children:this.props.component}));return this.context?r.createElement(Bn,{error:e},t):t}};Rn.contextType=pn;var zn=new WeakMap;function Bn({children:e,error:t}){let{basename:n}=r.useContext(Z);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=Cn(t.digest);if(e){let i=zn.get(t);if(i)throw i;let a=Oe(e.location,n);if(De&&!zn.get(t))if(a.isExternal||e.reloadDocument)window.location.href=a.absoluteURL||a.to;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(a.to,{replace:e.replace}));throw zn.set(t,n),n}return r.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${a.absoluteURL||a.to}`})}}return e}function Vn({routeContext:e,match:t,children:n}){let i=r.useContext(dn);return i&&i.static&&i.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(i.staticContext._deepestRenderedBoundaryId=t.route.id),r.createElement(Q.Provider,{value:e},n)}function Hn(e,t=[],n){let i=n?.state;if(e==null){if(!i)return null;if(i.errors)e=i.matches;else if(t.length===0&&!i.initialized&&i.matches.length>0)e=i.matches;else return null}let a=e,o=i?.errors;if(o!=null){let e=a.findIndex(e=>e.route.id&&o?.[e.route.id]!==void 0);f(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(o).join(`,`)}`),a=a.slice(0,Math.min(a.length,e+1))}let s=!1,c=-1;if(n&&i){s=i.renderFallback;for(let e=0;e<a.length;e++){let t=a[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(c=e),t.route.id){let{loaderData:e,errors:r}=i,o=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!r||r[t.route.id]===void 0);if(t.route.lazy||o){n.isStatic&&(s=!0),a=c>=0?a.slice(0,c+1):[a[0]];break}}}}let l=n?.onError,u=i&&l?(e,t)=>{l(e,{location:i.location,params:i.matches?.[0]?.params??{},pattern:Ee(i.matches),errorInfo:t})}:void 0;return a.reduceRight((e,n,l)=>{let d,f=!1,p=null,m=null;i&&(d=o&&n.route.id?o[n.route.id]:void 0,p=n.route.errorElement||Ln,s&&(c<0&&l===0?(er(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),f=!0,m=null):c===l&&(f=!0,m=n.route.hydrateFallbackElement||null)));let h=t.concat(a.slice(0,l+1)),g=()=>{let t;return t=d?p:f?m:n.route.Component?r.createElement(n.route.Component,null):n.route.element?n.route.element:e,r.createElement(Vn,{match:n,routeContext:{outlet:e,matches:h,isDataRoute:i!=null},children:t})};return i&&(n.route.ErrorBoundary||n.route.errorElement||l===0)?r.createElement(Rn,{location:i.location,revalidation:i.revalidation,component:p,error:d,children:g(),routeContext:{outlet:null,matches:h,isDataRoute:!0},onError:u}):g()},null)}function Un(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Wn(e){let t=r.useContext(dn);return f(t,Un(e)),t}function Gn(e){let t=r.useContext(fn);return f(t,Un(e)),t}function Kn(e){let t=r.useContext(Q);return f(t,Un(e)),t}function qn(e){let t=Kn(e),n=t.matches[t.matches.length-1];return f(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function Jn(){return qn(`useRouteId`)}function Yn(){return Gn(`useNavigation`).navigation}function Xn(){let{matches:e,loaderData:t}=Gn(`useMatches`);return r.useMemo(()=>e.map(e=>ee(e,t)),[e,t])}function Zn(){let e=r.useContext(yn),t=Gn(`useRouteError`),n=qn(`useRouteError`);return e===void 0?t.errors?.[n]:e}function Qn(){let{router:e}=Wn(`useNavigate`),t=qn(`useNavigate`),n=r.useRef(!1);return On(()=>{n.current=!0}),r.useCallback(async(r,i={})=>{p(n.current,Dn),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var $n={};function er(e,t,n){!t&&!$n[e]&&($n[e]=!0,p(!1,n))}var tr={};function nr(e,t){!e&&!tr[t]&&(tr[t]=!0,console.warn(t))}var rr=r.useOptimistic,ir=()=>void 0;function ar(e){return rr?rr(e):[e,ir]}function or(e){let t={hasErrorBoundary:e.hasErrorBoundary||e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&(e.element&&p(!1,"You should not include both `Component` and `element` on your route - `Component` will be used."),Object.assign(t,{element:r.createElement(e.Component),Component:void 0})),e.HydrateFallback&&(e.hydrateFallbackElement&&p(!1,"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used."),Object.assign(t,{hydrateFallbackElement:r.createElement(e.HydrateFallback),HydrateFallback:void 0})),e.ErrorBoundary&&(e.errorElement&&p(!1,"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used."),Object.assign(t,{errorElement:r.createElement(e.ErrorBoundary),ErrorBoundary:void 0})),t}var sr=[`HydrateFallback`,`hydrateFallbackElement`],cr=class{constructor(){this.status=`pending`,this.promise=new Promise((e,t)=>{this.resolve=t=>{this.status===`pending`&&(this.status=`resolved`,e(t))},this.reject=e=>{this.status===`pending`&&(this.status=`rejected`,t(e))}})}};function lr({router:e,flushSync:t,onError:n,useTransitions:i}){i=mn()||i;let[a,o]=r.useState(e.state),[s,c]=ar(a),[l,u]=r.useState(),[d,f]=r.useState({isTransitioning:!1}),[p,m]=r.useState(),[h,g]=r.useState(),[_,v]=r.useState(),y=r.useRef(new Map),b=r.useCallback((a,{deletedFetchers:s,newErrors:l,flushSync:d,viewTransitionOpts:_})=>{l&&n&&Object.values(l).forEach(e=>n(e,{location:a.location,params:a.matches[0]?.params??{},pattern:Ee(a.matches)})),a.fetchers.forEach((e,t)=>{e.data!==void 0&&y.current.set(t,e.data)}),s.forEach(e=>y.current.delete(e)),nr(d===!1||t!=null,'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.');let b=e.window!=null&&e.window.document!=null&&typeof e.window.document.startViewTransition==`function`;if(nr(_==null||b,"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available."),!_||!b){t&&d?t(()=>o(a)):i===!1?o(a):r.startTransition(()=>{i===!0&&c(e=>ur(e,a)),o(a)});return}if(t&&d){t(()=>{h&&(p?.resolve(),h.skipTransition()),f({isTransitioning:!0,flushSync:!0,currentLocation:_.currentLocation,nextLocation:_.nextLocation})});let n=e.window.document.startViewTransition(()=>{t(()=>o(a))});n.finished.finally(()=>{t(()=>{m(void 0),g(void 0),u(void 0),f({isTransitioning:!1})})}),t(()=>g(n));return}h?(p?.resolve(),h.skipTransition(),v({state:a,currentLocation:_.currentLocation,nextLocation:_.nextLocation})):(u(a),f({isTransitioning:!0,flushSync:!1,currentLocation:_.currentLocation,nextLocation:_.nextLocation}))},[e.window,t,h,p,i,c,n]);r.useLayoutEffect(()=>e.subscribe(b),[e,b]);let x=s.initialized;r.useLayoutEffect(()=>{!x&&e.state.initialized&&b(e.state,{deletedFetchers:[],flushSync:!1,newErrors:null})},[x,b,e.state]),r.useEffect(()=>{d.isTransitioning&&!d.flushSync&&m(new cr)},[d]),r.useEffect(()=>{if(p&&l&&e.window){let t=l,n=p.promise,a=e.window.document.startViewTransition(async()=>{i===!1?o(t):r.startTransition(()=>{i===!0&&c(e=>ur(e,t)),o(t)}),await n});a.finished.finally(()=>{m(void 0),g(void 0),u(void 0),f({isTransitioning:!1})}),g(a)}},[l,p,e.window,i,c]),r.useEffect(()=>{p&&l&&s.location.key===l.location.key&&p.resolve()},[p,h,s.location,l]),r.useEffect(()=>{!d.isTransitioning&&_&&(u(_.state),f({isTransitioning:!0,flushSync:!1,currentLocation:_.currentLocation,nextLocation:_.nextLocation}),v(void 0))},[d.isTransitioning,_]);let S=r.useMemo(()=>({createHref:e.createHref,encodeLocation:e.encodeLocation,go:t=>e.navigate(t),push:(t,n,r)=>e.navigate(t,{state:n,preventScrollReset:r?.preventScrollReset}),replace:(t,n,r)=>e.navigate(t,{replace:!0,state:n,preventScrollReset:r?.preventScrollReset})}),[e]),C=e.basename||`/`,w=r.useMemo(()=>({router:e,navigator:S,static:!1,basename:C,onError:n}),[e,S,C,n]);return r.createElement(r.Fragment,null,r.createElement(dn.Provider,{value:w},r.createElement(fn.Provider,{value:s},r.createElement(gn.Provider,{value:y.current},r.createElement(hn.Provider,{value:d},r.createElement(hr,{basename:C,location:s.location,navigationType:s.historyAction,navigator:S,useTransitions:i},r.createElement(dr,{routes:e.routes,manifest:e.manifest,future:e.future,state:s,isStatic:!1,onError:n})))))),null)}function ur(e,t){return{...e,navigation:t.navigation.state===`idle`?e.navigation:t.navigation,revalidation:t.revalidation===`idle`?e.revalidation:t.revalidation,actionData:t.navigation.state===`submitting`?e.actionData:t.actionData,fetchers:t.fetchers}}var dr=r.memo(fr);function fr({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return Fn(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function pr({to:e,replace:t,state:n,relative:i}){f(En(),`<Navigate> may be used only in the context of a <Router> component.`);let{static:a}=r.useContext(Z);p(!a,`<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`);let{matches:o}=r.useContext(Q),{pathname:s}=$(),c=kn(),l=V(e,B(o),s,i===`path`),u=JSON.stringify(l);return r.useEffect(()=>{c(JSON.parse(u),{replace:t,state:n,relative:i})},[c,u,i,t,n]),null}function mr(e){return Mn(e.context)}function hr({basename:e=`/`,children:t=null,location:n,navigationType:i=`POP`,navigator:a,static:o=!1,useTransitions:s}){f(!En(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let c=e.replace(/^\/*/,`/`),l=r.useMemo(()=>({basename:c,navigator:a,static:o,useTransitions:s,future:{}}),[c,a,o,s]);typeof n==`string`&&(n=v(n));let{pathname:u=`/`,search:d=``,hash:m=``,state:h=null,key:g=`default`,mask:_}=n,y=r.useMemo(()=>{let e=z(u,c);return e==null?null:{location:{pathname:e,search:d,hash:m,state:h,key:g,mask:_},navigationType:i}},[c,u,d,m,h,g,i,_]);return p(y!=null,`<Router basename="${c}"> is not able to match the URL "${u}${d}${m}" because it does not start with the basename, so the <Router> won't render anything.`),y==null?null:r.createElement(Z.Provider,{value:l},r.createElement(vn.Provider,{children:t,value:y}))}r.Component;var gr=`get`,_r=`application/x-www-form-urlencoded`;function vr(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function yr(e){return vr(e)&&e.tagName.toLowerCase()===`button`}function br(e){return vr(e)&&e.tagName.toLowerCase()===`form`}function xr(e){return vr(e)&&e.tagName.toLowerCase()===`input`}function Sr(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Cr(e,t){return e.button===0&&(!t||t===`_self`)&&!Sr(e)}function wr(e=``){return new URLSearchParams(typeof e==`string`||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(e=>[n,e]):[[n,r]])},[]))}function Tr(e,t){let n=wr(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var Er=null;function Dr(){if(Er===null)try{new FormData(document.createElement(`form`),0),Er=!1}catch{Er=!0}return Er}var Or=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function kr(e){return e!=null&&!Or.has(e)?(p(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${_r}"`),null):e}function Ar(e,t){let n,r,i,a,o;if(br(e)){let o=e.getAttribute(`action`);r=o?z(o,t):null,n=e.getAttribute(`method`)||gr,i=kr(e.getAttribute(`enctype`))||_r,a=new FormData(e)}else if(yr(e)||xr(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?z(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||gr,i=kr(e.getAttribute(`formenctype`))||kr(o.getAttribute(`enctype`))||_r,a=new FormData(o,e),!Dr()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(vr(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=gr,r=null,i=_r,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var jr={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},Mr=/[&><\u2028\u2029]/g;function Nr(e){return e.replace(Mr,e=>jr[e])}function Pr(e,t){if(e===!1||e==null)throw Error(t)}function Fr(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return n?i.pathname.endsWith(`/`)?i.pathname=`${i.pathname}_.${r}`:i.pathname=`${i.pathname}.${r}`:i.pathname===`/`?i.pathname=`_root.${r}`:t&&z(i.pathname,t)===`/`?i.pathname=`${U(t)}/_root.${r}`:i.pathname=`${U(i.pathname)}.${r}`,i}async function Ir(e,t){if(e.id in t)return t[e.id];try{let r=await n(()=>import(e.module),[]);return t[e.id]=r,r}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Lr(e){return e!=null&&typeof e.page==`string`}function Rr(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function zr(e,t,n){return Wr((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Ir(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(Rr).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function Br(e,t,n,r,i,a){let o=(e,t)=>n[t]?e.route.id!==n[t].route.id:!0,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function Vr(e,t,{includeHydrateFallback:n}={}){return Hr(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function Hr(e){return[...new Set(e)]}function Ur(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Wr(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Lr(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Ur(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Gr(){let e=r.useContext(dn);return Pr(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function Kr(){let e=r.useContext(fn);return Pr(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var qr=r.createContext(void 0);qr.displayName=`FrameworkContext`;function Jr(){let e=r.useContext(qr);return Pr(e,`You must render this element inside a <HydratedRouter> element`),e}function Yr(e,t){let n=r.useContext(qr),[i,a]=r.useState(!1),[o,s]=r.useState(!1),{onFocus:c,onBlur:l,onMouseEnter:u,onMouseLeave:d,onTouchStart:f}=t,p=r.useRef(null);r.useEffect(()=>{if(e===`render`&&s(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{s(e.isIntersecting)})},{threshold:.5});return p.current&&e.observe(p.current),()=>{e.disconnect()}}},[e]),r.useEffect(()=>{if(i){let e=setTimeout(()=>{s(!0)},100);return()=>{clearTimeout(e)}}},[i]);let m=()=>{a(!0)},h=()=>{a(!1),s(!1)};return n?e===`intent`?[o,p,{onFocus:Xr(c,m),onBlur:Xr(l,h),onMouseEnter:Xr(u,m),onMouseLeave:Xr(d,h),onTouchStart:Xr(f,m)}]:[o,p,{}]:[!1,p,{}]}function Xr(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Zr({page:e,...t}){let n=mn(),{router:i}=Gr(),a=r.useMemo(()=>j(i.routes,e,i.basename),[i.routes,e,i.basename]);return a?n?r.createElement($r,{page:e,matches:a,...t}):r.createElement(ei,{page:e,matches:a,...t}):null}function Qr(e){let{manifest:t,routeModules:n}=Jr(),[i,a]=r.useState([]);return r.useEffect(()=>{let r=!1;return zr(e,t,n).then(e=>{r||a(e)}),()=>{r=!0}},[e,t,n]),i}function $r({page:e,matches:t,...n}){let i=$(),{future:a}=Jr(),{basename:o}=Gr(),s=r.useMemo(()=>{if(e===i.pathname+i.search+i.hash)return[];let n=Fr(e,o,a.unstable_trailingSlashAwareDataRequests,`rsc`),r=!1,s=[];for(let e of t)typeof e.route.shouldRevalidate==`function`?r=!0:s.push(e.route.id);return r&&s.length>0&&n.searchParams.set(`_routes`,s.join(`,`)),[n.pathname+n.search]},[o,a.unstable_trailingSlashAwareDataRequests,e,i,t]);return r.createElement(r.Fragment,null,s.map(e=>r.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function ei({page:e,matches:t,...n}){let i=$(),{future:a,manifest:o,routeModules:s}=Jr(),{basename:c}=Gr(),{loaderData:l,matches:u}=Kr(),d=r.useMemo(()=>Br(e,t,u,o,i,`data`),[e,t,u,o,i]),f=r.useMemo(()=>Br(e,t,u,o,i,`assets`),[e,t,u,o,i]),p=r.useMemo(()=>{if(e===i.pathname+i.search+i.hash)return[];let n=new Set,r=!1;if(t.forEach(e=>{let t=o.routes[e.route.id];!t||!t.hasLoader||(!d.some(t=>t.route.id===e.route.id)&&e.route.id in l&&s[e.route.id]?.shouldRevalidate||t.hasClientLoader?r=!0:n.add(e.route.id))}),n.size===0)return[];let u=Fr(e,c,a.unstable_trailingSlashAwareDataRequests,`data`);return r&&n.size>0&&u.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[u.pathname+u.search]},[c,a.unstable_trailingSlashAwareDataRequests,l,i,o,d,t,e,s]),m=r.useMemo(()=>Vr(f,o),[f,o]),h=Qr(f);return r.createElement(r.Fragment,null,p.map(e=>r.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),m.map(e=>r.createElement(`link`,{key:e,rel:`modulepreload`,href:e,...n})),h.map(({key:e,link:t})=>r.createElement(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function ti(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}r.Component;var ni=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{ni&&(window.__reactRouterVersion=`7.15.0`)}catch{}function ri(e,t){return $e({basename:t?.basename,getContext:t?.getContext,future:t?.future,history:d({window:t?.window}),hydrationData:t?.hydrationData||ii(),routes:e,mapRouteProperties:or,hydrationRouteProperties:sr,dataStrategy:t?.dataStrategy,patchRoutesOnNavigation:t?.patchRoutesOnNavigation,window:t?.window,instrumentations:t?.instrumentations}).initialize()}function ii(){let e=window?.__staticRouterHydrationData;return e&&e.errors&&(e={...e,errors:ai(e.errors)}),e}function ai(e){if(!e)return null;let t=Object.entries(e),n={};for(let[e,r]of t)if(r&&r.__type===`RouteErrorResponse`)n[e]=new we(r.status,r.statusText,r.data,r.internal===!0);else if(r&&r.__type===`Error`){if(r.__subType){let t=window[r.__subType];if(typeof t==`function`)try{let i=new t(r.message);i.stack=``,n[e]=i}catch{}}if(n[e]==null){let t=Error(r.message);t.stack=``,n[e]=t}}else n[e]=r;return n}function oi({basename:e,children:t,history:n,useTransitions:i}){let[a,o]=r.useState({action:n.action,location:n.location}),s=r.useCallback(e=>{i===!1?o(e):r.startTransition(()=>o(e))},[i]);return r.useLayoutEffect(()=>n.listen(s),[n,s]),r.createElement(hr,{basename:e,children:t,location:a.location,navigationType:a.action,navigator:n,useTransitions:i})}oi.displayName=`unstable_HistoryRouter`;var si=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,ci=r.forwardRef(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:i,reloadDocument:a,replace:o,mask:s,state:c,target:l,to:u,preventScrollReset:d,viewTransition:f,defaultShouldRevalidate:p,...m},h){let{basename:g,navigator:_,useTransitions:v}=r.useContext(Z),y=typeof u==`string`&&si.test(u),b=Oe(u,g);u=b.to;let x=Tn(u,{relative:i}),S=$(),C=null;if(s){let e=V(s,[],S.mask?S.mask.pathname:`/`,!0);g!==`/`&&(e.pathname=e.pathname===`/`?g:H([g,e.pathname])),C=_.createHref(e)}let[w,T,E]=Yr(n,m),D=hi(u,{replace:o,mask:s,state:c,target:l,preventScrollReset:d,relative:i,viewTransition:f,defaultShouldRevalidate:p,useTransitions:v});function O(t){e&&e(t),t.defaultPrevented||D(t)}let k=!(b.isExternal||a),A=r.createElement(`a`,{...m,...E,href:(k?C:void 0)||b.absoluteURL||x,onClick:k?O:e,ref:ti(h,T),target:l,"data-discover":!y&&t===`render`?`true`:void 0});return w&&!y?r.createElement(r.Fragment,null,A,r.createElement(Zr,{page:x})):A});ci.displayName=`Link`;var li=r.forwardRef(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:i=!1,style:a,to:o,viewTransition:s,children:c,...l},u){let d=Pn(o,{relative:l.relative}),f=$(),p=r.useContext(fn),{navigator:m,basename:h}=r.useContext(Z),g=p!=null&&Ei(d)&&s===!0,_=m.encodeLocation?m.encodeLocation(d).pathname:d.pathname,v=f.pathname,y=p&&p.navigation&&p.navigation.location?p.navigation.location.pathname:null;t||(v=v.toLowerCase(),y=y?y.toLowerCase():null,_=_.toLowerCase()),y&&h&&(y=z(y,h)||y);let b=_!==`/`&&_.endsWith(`/`)?_.length-1:_.length,x=v===_||!i&&v.startsWith(_)&&v.charAt(b)===`/`,S=y!=null&&(y===_||!i&&y.startsWith(_)&&y.charAt(_.length)===`/`),C={isActive:x,isPending:S,isTransitioning:g},w=x?e:void 0,T;T=typeof n==`function`?n(C):[n,x?`active`:null,S?`pending`:null,g?`transitioning`:null].filter(Boolean).join(` `);let E=typeof a==`function`?a(C):a;return r.createElement(ci,{...l,"aria-current":w,className:T,ref:u,style:E,to:o,viewTransition:s},typeof c==`function`?c(C):c)});li.displayName=`NavLink`;var ui=r.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:i,replace:a,state:o,method:s=gr,action:c,onSubmit:l,relative:u,preventScrollReset:d,viewTransition:f,defaultShouldRevalidate:p,...m},h)=>{let{useTransitions:g}=r.useContext(Z),_=yi(),v=bi(c,{relative:u}),y=s.toLowerCase()===`get`?`get`:`post`,b=typeof c==`string`&&si.test(c);return r.createElement(`form`,{ref:h,method:y,action:v,onSubmit:i?l:e=>{if(l&&l(e),e.defaultPrevented)return;e.preventDefault();let i=e.nativeEvent.submitter,c=i?.getAttribute(`formmethod`)||s,m=()=>_(i||e.currentTarget,{fetcherKey:t,method:c,navigate:n,replace:a,state:o,relative:u,preventScrollReset:d,viewTransition:f,defaultShouldRevalidate:p});g&&n!==!1?r.startTransition(()=>m()):m()},...m,"data-discover":!b&&e===`render`?`true`:void 0})});ui.displayName=`Form`;function di({getKey:e,storageKey:t,...n}){let i=r.useContext(qr),{basename:a}=r.useContext(Z),o=$(),s=Xn();wi({getKey:e,storageKey:t});let c=r.useMemo(()=>{if(!i||!e)return null;let t=Ci(o,s,a,e);return t===o.key?null:t},[]);if(!i||i.isSpaMode)return null;let l=((e,t)=>{if(!window.history.state||!window.history.state.key){let e=Math.random().toString(32).slice(2);window.history.replaceState({key:e},``)}try{let n=JSON.parse(sessionStorage.getItem(e)||`{}`)[t||window.history.state.key];typeof n==`number`&&window.scrollTo(0,n)}catch(t){console.error(t),sessionStorage.removeItem(e)}}).toString();return r.createElement(`script`,{...n,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${l})(${Nr(JSON.stringify(t||xi))}, ${Nr(JSON.stringify(c))})`}})}di.displayName=`ScrollRestoration`;function fi(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function pi(e){let t=r.useContext(dn);return f(t,fi(e)),t}function mi(e){let t=r.useContext(fn);return f(t,fi(e)),t}function hi(e,{target:t,replace:n,mask:i,state:a,preventScrollReset:o,relative:s,viewTransition:c,defaultShouldRevalidate:l,useTransitions:u}={}){let d=kn(),f=$(),p=Pn(e,{relative:s});return r.useCallback(m=>{if(Cr(m,t)){m.preventDefault();let t=n===void 0?_(f)===_(p):n,h=()=>d(e,{replace:t,mask:i,state:a,preventScrollReset:o,relative:s,viewTransition:c,defaultShouldRevalidate:l});u?r.startTransition(()=>h()):h()}},[f,d,p,n,i,a,t,e,o,s,c,l,u])}function gi(e){p(typeof URLSearchParams<`u`,"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=r.useRef(wr(e)),n=r.useRef(!1),i=$(),a=r.useMemo(()=>Tr(i.search,n.current?null:t.current),[i.search]),o=kn();return[a,r.useCallback((e,t)=>{let r=wr(typeof e==`function`?e(new URLSearchParams(a)):e);n.current=!0,o(`?`+r,t)},[o,a])]}var _i=0,vi=()=>`__${String(++_i)}__`;function yi(){let{router:e}=pi(`useSubmit`),{basename:t}=r.useContext(Z),n=Jn(),i=e.fetch,a=e.navigate;return r.useCallback(async(e,r={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=Ar(e,t);r.navigate===!1?await i(r.fetcherKey||vi(),n,r.action||o,{defaultShouldRevalidate:r.defaultShouldRevalidate,preventScrollReset:r.preventScrollReset,formData:l,body:u,formMethod:r.method||s,formEncType:r.encType||c,flushSync:r.flushSync}):await a(r.action||o,{defaultShouldRevalidate:r.defaultShouldRevalidate,preventScrollReset:r.preventScrollReset,formData:l,body:u,formMethod:r.method||s,formEncType:r.encType||c,replace:r.replace,state:r.state,fromRouteId:n,flushSync:r.flushSync,viewTransition:r.viewTransition})},[i,a,t,n])}function bi(e,{relative:t}={}){let{basename:n}=r.useContext(Z),i=r.useContext(Q);f(i,`useFormAction must be used inside a RouteContext`);let[a]=i.matches.slice(-1),o={...Pn(e||`.`,{relative:t})},s=$();if(e==null){o.search=s.search;let e=new URLSearchParams(o.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();o.search=n?`?${n}`:``}}return(!e||e===`.`)&&a.route.index&&(o.search=o.search?o.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(o.pathname=o.pathname===`/`?n:H([n,o.pathname])),_(o)}var xi=`react-router-scroll-positions`,Si={};function Ci(e,t,n,r){let i=null;return r&&(i=r(n===`/`?e:{...e,pathname:z(e.pathname,n)||e.pathname},t)),i??=e.key,i}function wi({getKey:e,storageKey:t}={}){let{router:n}=pi(`useScrollRestoration`),{restoreScrollPosition:i,preventScrollReset:a}=mi(`useScrollRestoration`),{basename:o}=r.useContext(Z),s=$(),c=Xn(),l=Yn();r.useEffect(()=>(window.history.scrollRestoration=`manual`,()=>{window.history.scrollRestoration=`auto`}),[]),Ti(r.useCallback(()=>{if(l.state===`idle`){let t=Ci(s,c,o,e);Si[t]=window.scrollY}try{sessionStorage.setItem(t||xi,JSON.stringify(Si))}catch(e){p(!1,`Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${e}).`)}window.history.scrollRestoration=`auto`},[l.state,e,o,s,c,t])),typeof document<`u`&&(r.useLayoutEffect(()=>{try{let e=sessionStorage.getItem(t||xi);e&&(Si=JSON.parse(e))}catch{}},[t]),r.useLayoutEffect(()=>{let t=n?.enableScrollRestoration(Si,()=>window.scrollY,e?(t,n)=>Ci(t,n,o,e):void 0);return()=>t&&t()},[n,o,e]),r.useLayoutEffect(()=>{if(i!==!1){if(typeof i==`number`){window.scrollTo(0,i);return}try{if(s.hash){let e=document.getElementById(decodeURIComponent(s.hash.slice(1)));if(e){e.scrollIntoView();return}}}catch{p(!1,`"${s.hash.slice(1)}" is not a decodable element ID. The view will not scroll to it.`)}a!==!0&&window.scrollTo(0,0)}},[s,i,a]))}function Ti(e,t){let{capture:n}=t||{};r.useEffect(()=>{let t=n==null?void 0:{capture:n};return window.addEventListener(`pagehide`,e,t),()=>{window.removeEventListener(`pagehide`,e,t)}},[e,n])}function Ei(e,{relative:t}={}){let n=r.useContext(hn);f(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:i}=pi(`useViewTransitionState`),a=Pn(e,{relative:t});if(!n.isTransitioning)return!1;let o=z(n.currentLocation.pathname,i)||n.currentLocation.pathname,s=z(n.nextLocation.pathname,i)||n.nextLocation.pathname;return ue(a.pathname,s)!=null||ue(a.pathname,o)!=null}export{lr as a,Te as c,kn as d,Nn as f,mr as i,Ce as l,gi as m,li as n,ri as o,Zn as p,pr as r,x as s,ci as t,$ as u};
|
|
4
|
+
Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let d=$(),m;if(t){let e=typeof t==`string`?v(t):t;f(l===`/`||e.pathname?.startsWith(l),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${l}" but pathname "${e.pathname}" was given in the \`location\` prop.`),m=e}else m=d;let h=m.pathname||`/`,g=h;if(l!==`/`){let e=l.replace(/^\//,``).split(`/`);g=`/`+h.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let _=n&&n.state.matches.length?n.state.matches.map(e=>Object.assign(e,{route:n.manifest[e.route.id]||e.route})):j(e,{pathname:g});p(u||_!=null,`No routes matched location "${m.pathname}${m.search}${m.hash}" `),p(_==null||_[_.length-1].route.element!==void 0||_[_.length-1].route.Component!==void 0||_[_.length-1].route.lazy!==void 0,`Matched leaf route at location "${m.pathname}${m.search}${m.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let y=Un(_&&_.map(e=>Object.assign({},e,{params:Object.assign({},s,e.params),pathname:H([l,i.encodeLocation?i.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?l:H([l,i.encodeLocation?i.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),a,n);return t&&y?r.createElement(vn.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...m},navigationType:`POP`}},y):y}function Ln(){let e=Qn(),t=Te(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,i=`rgba(200,200,200, 0.5)`,a={padding:`0.5rem`,backgroundColor:i},o={padding:`2px 4px`,backgroundColor:i},s=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),s=r.createElement(r.Fragment,null,r.createElement(`p`,null,`💿 Hey developer 👋`),r.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,r.createElement(`code`,{style:o},`ErrorBoundary`),` or`,` `,r.createElement(`code`,{style:o},`errorElement`),` prop on your route.`)),r.createElement(r.Fragment,null,r.createElement(`h2`,null,`Unexpected Application Error!`),r.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?r.createElement(`pre`,{style:a},n):null,s)}var Rn=r.createElement(Ln,null),zn=class extends r.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=wn(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:r.createElement(Q.Provider,{value:this.props.routeContext},r.createElement(yn.Provider,{value:e,children:this.props.component}));return this.context?r.createElement(Vn,{error:e},t):t}};zn.contextType=pn;var Bn=new WeakMap;function Vn({children:e,error:t}){let{basename:n}=r.useContext(Z);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=Cn(t.digest);if(e){let i=Bn.get(t);if(i)throw i;let a=Oe(e.location,n);if(De&&!Bn.get(t))if(a.isExternal||e.reloadDocument)window.location.href=a.absoluteURL||a.to;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(a.to,{replace:e.replace}));throw Bn.set(t,n),n}return r.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${a.absoluteURL||a.to}`})}}return e}function Hn({routeContext:e,match:t,children:n}){let i=r.useContext(dn);return i&&i.static&&i.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(i.staticContext._deepestRenderedBoundaryId=t.route.id),r.createElement(Q.Provider,{value:e},n)}function Un(e,t=[],n){let i=n?.state;if(e==null){if(!i)return null;if(i.errors)e=i.matches;else if(t.length===0&&!i.initialized&&i.matches.length>0)e=i.matches;else return null}let a=e,o=i?.errors;if(o!=null){let e=a.findIndex(e=>e.route.id&&o?.[e.route.id]!==void 0);f(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(o).join(`,`)}`),a=a.slice(0,Math.min(a.length,e+1))}let s=!1,c=-1;if(n&&i){s=i.renderFallback;for(let e=0;e<a.length;e++){let t=a[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(c=e),t.route.id){let{loaderData:e,errors:r}=i,o=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!r||r[t.route.id]===void 0);if(t.route.lazy||o){n.isStatic&&(s=!0),a=c>=0?a.slice(0,c+1):[a[0]];break}}}}let l=n?.onError,u=i&&l?(e,t)=>{l(e,{location:i.location,params:i.matches?.[0]?.params??{},pattern:Ee(i.matches),errorInfo:t})}:void 0;return a.reduceRight((e,n,l)=>{let d,f=!1,p=null,m=null;i&&(d=o&&n.route.id?o[n.route.id]:void 0,p=n.route.errorElement||Rn,s&&(c<0&&l===0?(tr(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),f=!0,m=null):c===l&&(f=!0,m=n.route.hydrateFallbackElement||null)));let h=t.concat(a.slice(0,l+1)),g=()=>{let t;return t=d?p:f?m:n.route.Component?r.createElement(n.route.Component,null):n.route.element?n.route.element:e,r.createElement(Hn,{match:n,routeContext:{outlet:e,matches:h,isDataRoute:i!=null},children:t})};return i&&(n.route.ErrorBoundary||n.route.errorElement||l===0)?r.createElement(zn,{location:i.location,revalidation:i.revalidation,component:p,error:d,children:g(),routeContext:{outlet:null,matches:h,isDataRoute:!0},onError:u}):g()},null)}function Wn(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Gn(e){let t=r.useContext(dn);return f(t,Wn(e)),t}function Kn(e){let t=r.useContext(fn);return f(t,Wn(e)),t}function qn(e){let t=r.useContext(Q);return f(t,Wn(e)),t}function Jn(e){let t=qn(e),n=t.matches[t.matches.length-1];return f(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function Yn(){return Jn(`useRouteId`)}function Xn(){return Kn(`useNavigation`).navigation}function Zn(){let{matches:e,loaderData:t}=Kn(`useMatches`);return r.useMemo(()=>e.map(e=>ee(e,t)),[e,t])}function Qn(){let e=r.useContext(yn),t=Kn(`useRouteError`),n=Jn(`useRouteError`);return e===void 0?t.errors?.[n]:e}function $n(){let{router:e}=Gn(`useNavigate`),t=Jn(`useNavigate`),n=r.useRef(!1);return kn(()=>{n.current=!0}),r.useCallback(async(r,i={})=>{p(n.current,On),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var er={};function tr(e,t,n){!t&&!er[e]&&(er[e]=!0,p(!1,n))}var nr={};function rr(e,t){!e&&!nr[t]&&(nr[t]=!0,console.warn(t))}var ir=r.useOptimistic,ar=()=>void 0;function or(e){return ir?ir(e):[e,ar]}function sr(e){let t={hasErrorBoundary:e.hasErrorBoundary||e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&(e.element&&p(!1,"You should not include both `Component` and `element` on your route - `Component` will be used."),Object.assign(t,{element:r.createElement(e.Component),Component:void 0})),e.HydrateFallback&&(e.hydrateFallbackElement&&p(!1,"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used."),Object.assign(t,{hydrateFallbackElement:r.createElement(e.HydrateFallback),HydrateFallback:void 0})),e.ErrorBoundary&&(e.errorElement&&p(!1,"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used."),Object.assign(t,{errorElement:r.createElement(e.ErrorBoundary),ErrorBoundary:void 0})),t}var cr=[`HydrateFallback`,`hydrateFallbackElement`],lr=class{constructor(){this.status=`pending`,this.promise=new Promise((e,t)=>{this.resolve=t=>{this.status===`pending`&&(this.status=`resolved`,e(t))},this.reject=e=>{this.status===`pending`&&(this.status=`rejected`,t(e))}})}};function ur({router:e,flushSync:t,onError:n,useTransitions:i}){i=mn()||i;let[a,o]=r.useState(e.state),[s,c]=or(a),[l,u]=r.useState(),[d,f]=r.useState({isTransitioning:!1}),[p,m]=r.useState(),[h,g]=r.useState(),[_,v]=r.useState(),y=r.useRef(new Map),b=r.useCallback((a,{deletedFetchers:s,newErrors:l,flushSync:d,viewTransitionOpts:_})=>{l&&n&&Object.values(l).forEach(e=>n(e,{location:a.location,params:a.matches[0]?.params??{},pattern:Ee(a.matches)})),a.fetchers.forEach((e,t)=>{e.data!==void 0&&y.current.set(t,e.data)}),s.forEach(e=>y.current.delete(e)),rr(d===!1||t!=null,'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.');let b=e.window!=null&&e.window.document!=null&&typeof e.window.document.startViewTransition==`function`;if(rr(_==null||b,"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available."),!_||!b){t&&d?t(()=>o(a)):i===!1?o(a):r.startTransition(()=>{i===!0&&c(e=>dr(e,a)),o(a)});return}if(t&&d){t(()=>{h&&(p?.resolve(),h.skipTransition()),f({isTransitioning:!0,flushSync:!0,currentLocation:_.currentLocation,nextLocation:_.nextLocation})});let n=e.window.document.startViewTransition(()=>{t(()=>o(a))});n.finished.finally(()=>{t(()=>{m(void 0),g(void 0),u(void 0),f({isTransitioning:!1})})}),t(()=>g(n));return}h?(p?.resolve(),h.skipTransition(),v({state:a,currentLocation:_.currentLocation,nextLocation:_.nextLocation})):(u(a),f({isTransitioning:!0,flushSync:!1,currentLocation:_.currentLocation,nextLocation:_.nextLocation}))},[e.window,t,h,p,i,c,n]);r.useLayoutEffect(()=>e.subscribe(b),[e,b]);let x=s.initialized;r.useLayoutEffect(()=>{!x&&e.state.initialized&&b(e.state,{deletedFetchers:[],flushSync:!1,newErrors:null})},[x,b,e.state]),r.useEffect(()=>{d.isTransitioning&&!d.flushSync&&m(new lr)},[d]),r.useEffect(()=>{if(p&&l&&e.window){let t=l,n=p.promise,a=e.window.document.startViewTransition(async()=>{i===!1?o(t):r.startTransition(()=>{i===!0&&c(e=>dr(e,t)),o(t)}),await n});a.finished.finally(()=>{m(void 0),g(void 0),u(void 0),f({isTransitioning:!1})}),g(a)}},[l,p,e.window,i,c]),r.useEffect(()=>{p&&l&&s.location.key===l.location.key&&p.resolve()},[p,h,s.location,l]),r.useEffect(()=>{!d.isTransitioning&&_&&(u(_.state),f({isTransitioning:!0,flushSync:!1,currentLocation:_.currentLocation,nextLocation:_.nextLocation}),v(void 0))},[d.isTransitioning,_]);let S=r.useMemo(()=>({createHref:e.createHref,encodeLocation:e.encodeLocation,go:t=>e.navigate(t),push:(t,n,r)=>e.navigate(t,{state:n,preventScrollReset:r?.preventScrollReset}),replace:(t,n,r)=>e.navigate(t,{replace:!0,state:n,preventScrollReset:r?.preventScrollReset})}),[e]),C=e.basename||`/`,w=r.useMemo(()=>({router:e,navigator:S,static:!1,basename:C,onError:n}),[e,S,C,n]);return r.createElement(r.Fragment,null,r.createElement(dn.Provider,{value:w},r.createElement(fn.Provider,{value:s},r.createElement(gn.Provider,{value:y.current},r.createElement(hn.Provider,{value:d},r.createElement(gr,{basename:C,location:s.location,navigationType:s.historyAction,navigator:S,useTransitions:i},r.createElement(fr,{routes:e.routes,manifest:e.manifest,future:e.future,state:s,isStatic:!1,onError:n})))))),null)}function dr(e,t){return{...e,navigation:t.navigation.state===`idle`?e.navigation:t.navigation,revalidation:t.revalidation===`idle`?e.revalidation:t.revalidation,actionData:t.navigation.state===`submitting`?e.actionData:t.actionData,fetchers:t.fetchers}}var fr=r.memo(pr);function pr({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return In(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function mr({to:e,replace:t,state:n,relative:i}){f(En(),`<Navigate> may be used only in the context of a <Router> component.`);let{static:a}=r.useContext(Z);p(!a,`<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`);let{matches:o}=r.useContext(Q),{pathname:s}=$(),c=An(),l=V(e,B(o),s,i===`path`),u=JSON.stringify(l);return r.useEffect(()=>{c(JSON.parse(u),{replace:t,state:n,relative:i})},[c,u,i,t,n]),null}function hr(e){return Nn(e.context)}function gr({basename:e=`/`,children:t=null,location:n,navigationType:i=`POP`,navigator:a,static:o=!1,useTransitions:s}){f(!En(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let c=e.replace(/^\/*/,`/`),l=r.useMemo(()=>({basename:c,navigator:a,static:o,useTransitions:s,future:{}}),[c,a,o,s]);typeof n==`string`&&(n=v(n));let{pathname:u=`/`,search:d=``,hash:m=``,state:h=null,key:g=`default`,mask:_}=n,y=r.useMemo(()=>{let e=z(u,c);return e==null?null:{location:{pathname:e,search:d,hash:m,state:h,key:g,mask:_},navigationType:i}},[c,u,d,m,h,g,i,_]);return p(y!=null,`<Router basename="${c}"> is not able to match the URL "${u}${d}${m}" because it does not start with the basename, so the <Router> won't render anything.`),y==null?null:r.createElement(Z.Provider,{value:l},r.createElement(vn.Provider,{children:t,value:y}))}r.Component;var _r=`get`,vr=`application/x-www-form-urlencoded`;function yr(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function br(e){return yr(e)&&e.tagName.toLowerCase()===`button`}function xr(e){return yr(e)&&e.tagName.toLowerCase()===`form`}function Sr(e){return yr(e)&&e.tagName.toLowerCase()===`input`}function Cr(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function wr(e,t){return e.button===0&&(!t||t===`_self`)&&!Cr(e)}function Tr(e=``){return new URLSearchParams(typeof e==`string`||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(e=>[n,e]):[[n,r]])},[]))}function Er(e,t){let n=Tr(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var Dr=null;function Or(){if(Dr===null)try{new FormData(document.createElement(`form`),0),Dr=!1}catch{Dr=!0}return Dr}var kr=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function Ar(e){return e!=null&&!kr.has(e)?(p(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${vr}"`),null):e}function jr(e,t){let n,r,i,a,o;if(xr(e)){let o=e.getAttribute(`action`);r=o?z(o,t):null,n=e.getAttribute(`method`)||_r,i=Ar(e.getAttribute(`enctype`))||vr,a=new FormData(e)}else if(br(e)||Sr(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?z(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||_r,i=Ar(e.getAttribute(`formenctype`))||Ar(o.getAttribute(`enctype`))||vr,a=new FormData(o,e),!Or()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(yr(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=_r,r=null,i=vr,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var Mr={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},Nr=/[&><\u2028\u2029]/g;function Pr(e){return e.replace(Nr,e=>Mr[e])}function Fr(e,t){if(e===!1||e==null)throw Error(t)}function Ir(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return n?i.pathname.endsWith(`/`)?i.pathname=`${i.pathname}_.${r}`:i.pathname=`${i.pathname}.${r}`:i.pathname===`/`?i.pathname=`_root.${r}`:t&&z(i.pathname,t)===`/`?i.pathname=`${U(t)}/_root.${r}`:i.pathname=`${U(i.pathname)}.${r}`,i}async function Lr(e,t){if(e.id in t)return t[e.id];try{let r=await n(()=>import(e.module),[]);return t[e.id]=r,r}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Rr(e){return e!=null&&typeof e.page==`string`}function zr(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function Br(e,t,n){return Gr((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Lr(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(zr).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function Vr(e,t,n,r,i,a){let o=(e,t)=>n[t]?e.route.id!==n[t].route.id:!0,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function Hr(e,t,{includeHydrateFallback:n}={}){return Ur(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function Ur(e){return[...new Set(e)]}function Wr(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Gr(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Rr(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Wr(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Kr(){let e=r.useContext(dn);return Fr(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function qr(){let e=r.useContext(fn);return Fr(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var Jr=r.createContext(void 0);Jr.displayName=`FrameworkContext`;function Yr(){let e=r.useContext(Jr);return Fr(e,`You must render this element inside a <HydratedRouter> element`),e}function Xr(e,t){let n=r.useContext(Jr),[i,a]=r.useState(!1),[o,s]=r.useState(!1),{onFocus:c,onBlur:l,onMouseEnter:u,onMouseLeave:d,onTouchStart:f}=t,p=r.useRef(null);r.useEffect(()=>{if(e===`render`&&s(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{s(e.isIntersecting)})},{threshold:.5});return p.current&&e.observe(p.current),()=>{e.disconnect()}}},[e]),r.useEffect(()=>{if(i){let e=setTimeout(()=>{s(!0)},100);return()=>{clearTimeout(e)}}},[i]);let m=()=>{a(!0)},h=()=>{a(!1),s(!1)};return n?e===`intent`?[o,p,{onFocus:Zr(c,m),onBlur:Zr(l,h),onMouseEnter:Zr(u,m),onMouseLeave:Zr(d,h),onTouchStart:Zr(f,m)}]:[o,p,{}]:[!1,p,{}]}function Zr(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Qr({page:e,...t}){let n=mn(),{router:i}=Kr(),a=r.useMemo(()=>j(i.routes,e,i.basename),[i.routes,e,i.basename]);return a?n?r.createElement(ei,{page:e,matches:a,...t}):r.createElement(ti,{page:e,matches:a,...t}):null}function $r(e){let{manifest:t,routeModules:n}=Yr(),[i,a]=r.useState([]);return r.useEffect(()=>{let r=!1;return Br(e,t,n).then(e=>{r||a(e)}),()=>{r=!0}},[e,t,n]),i}function ei({page:e,matches:t,...n}){let i=$(),{future:a}=Yr(),{basename:o}=Kr(),s=r.useMemo(()=>{if(e===i.pathname+i.search+i.hash)return[];let n=Ir(e,o,a.unstable_trailingSlashAwareDataRequests,`rsc`),r=!1,s=[];for(let e of t)typeof e.route.shouldRevalidate==`function`?r=!0:s.push(e.route.id);return r&&s.length>0&&n.searchParams.set(`_routes`,s.join(`,`)),[n.pathname+n.search]},[o,a.unstable_trailingSlashAwareDataRequests,e,i,t]);return r.createElement(r.Fragment,null,s.map(e=>r.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function ti({page:e,matches:t,...n}){let i=$(),{future:a,manifest:o,routeModules:s}=Yr(),{basename:c}=Kr(),{loaderData:l,matches:u}=qr(),d=r.useMemo(()=>Vr(e,t,u,o,i,`data`),[e,t,u,o,i]),f=r.useMemo(()=>Vr(e,t,u,o,i,`assets`),[e,t,u,o,i]),p=r.useMemo(()=>{if(e===i.pathname+i.search+i.hash)return[];let n=new Set,r=!1;if(t.forEach(e=>{let t=o.routes[e.route.id];!t||!t.hasLoader||(!d.some(t=>t.route.id===e.route.id)&&e.route.id in l&&s[e.route.id]?.shouldRevalidate||t.hasClientLoader?r=!0:n.add(e.route.id))}),n.size===0)return[];let u=Ir(e,c,a.unstable_trailingSlashAwareDataRequests,`data`);return r&&n.size>0&&u.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[u.pathname+u.search]},[c,a.unstable_trailingSlashAwareDataRequests,l,i,o,d,t,e,s]),m=r.useMemo(()=>Hr(f,o),[f,o]),h=$r(f);return r.createElement(r.Fragment,null,p.map(e=>r.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),m.map(e=>r.createElement(`link`,{key:e,rel:`modulepreload`,href:e,...n})),h.map(({key:e,link:t})=>r.createElement(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function ni(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}r.Component;var ri=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{ri&&(window.__reactRouterVersion=`7.15.0`)}catch{}function ii(e,t){return $e({basename:t?.basename,getContext:t?.getContext,future:t?.future,history:d({window:t?.window}),hydrationData:t?.hydrationData||ai(),routes:e,mapRouteProperties:sr,hydrationRouteProperties:cr,dataStrategy:t?.dataStrategy,patchRoutesOnNavigation:t?.patchRoutesOnNavigation,window:t?.window,instrumentations:t?.instrumentations}).initialize()}function ai(){let e=window?.__staticRouterHydrationData;return e&&e.errors&&(e={...e,errors:oi(e.errors)}),e}function oi(e){if(!e)return null;let t=Object.entries(e),n={};for(let[e,r]of t)if(r&&r.__type===`RouteErrorResponse`)n[e]=new we(r.status,r.statusText,r.data,r.internal===!0);else if(r&&r.__type===`Error`){if(r.__subType){let t=window[r.__subType];if(typeof t==`function`)try{let i=new t(r.message);i.stack=``,n[e]=i}catch{}}if(n[e]==null){let t=Error(r.message);t.stack=``,n[e]=t}}else n[e]=r;return n}function si({basename:e,children:t,history:n,useTransitions:i}){let[a,o]=r.useState({action:n.action,location:n.location}),s=r.useCallback(e=>{i===!1?o(e):r.startTransition(()=>o(e))},[i]);return r.useLayoutEffect(()=>n.listen(s),[n,s]),r.createElement(gr,{basename:e,children:t,location:a.location,navigationType:a.action,navigator:n,useTransitions:i})}si.displayName=`unstable_HistoryRouter`;var ci=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,li=r.forwardRef(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:i,reloadDocument:a,replace:o,mask:s,state:c,target:l,to:u,preventScrollReset:d,viewTransition:f,defaultShouldRevalidate:p,...m},h){let{basename:g,navigator:_,useTransitions:v}=r.useContext(Z),y=typeof u==`string`&&ci.test(u),b=Oe(u,g);u=b.to;let x=Tn(u,{relative:i}),S=$(),C=null;if(s){let e=V(s,[],S.mask?S.mask.pathname:`/`,!0);g!==`/`&&(e.pathname=e.pathname===`/`?g:H([g,e.pathname])),C=_.createHref(e)}let[w,T,E]=Xr(n,m),D=gi(u,{replace:o,mask:s,state:c,target:l,preventScrollReset:d,relative:i,viewTransition:f,defaultShouldRevalidate:p,useTransitions:v});function O(t){e&&e(t),t.defaultPrevented||D(t)}let k=!(b.isExternal||a),A=r.createElement(`a`,{...m,...E,href:(k?C:void 0)||b.absoluteURL||x,onClick:k?O:e,ref:ni(h,T),target:l,"data-discover":!y&&t===`render`?`true`:void 0});return w&&!y?r.createElement(r.Fragment,null,A,r.createElement(Qr,{page:x})):A});li.displayName=`Link`;var ui=r.forwardRef(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:i=!1,style:a,to:o,viewTransition:s,children:c,...l},u){let d=Fn(o,{relative:l.relative}),f=$(),p=r.useContext(fn),{navigator:m,basename:h}=r.useContext(Z),g=p!=null&&Di(d)&&s===!0,_=m.encodeLocation?m.encodeLocation(d).pathname:d.pathname,v=f.pathname,y=p&&p.navigation&&p.navigation.location?p.navigation.location.pathname:null;t||(v=v.toLowerCase(),y=y?y.toLowerCase():null,_=_.toLowerCase()),y&&h&&(y=z(y,h)||y);let b=_!==`/`&&_.endsWith(`/`)?_.length-1:_.length,x=v===_||!i&&v.startsWith(_)&&v.charAt(b)===`/`,S=y!=null&&(y===_||!i&&y.startsWith(_)&&y.charAt(_.length)===`/`),C={isActive:x,isPending:S,isTransitioning:g},w=x?e:void 0,T;T=typeof n==`function`?n(C):[n,x?`active`:null,S?`pending`:null,g?`transitioning`:null].filter(Boolean).join(` `);let E=typeof a==`function`?a(C):a;return r.createElement(li,{...l,"aria-current":w,className:T,ref:u,style:E,to:o,viewTransition:s},typeof c==`function`?c(C):c)});ui.displayName=`NavLink`;var di=r.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:i,replace:a,state:o,method:s=_r,action:c,onSubmit:l,relative:u,preventScrollReset:d,viewTransition:f,defaultShouldRevalidate:p,...m},h)=>{let{useTransitions:g}=r.useContext(Z),_=bi(),v=xi(c,{relative:u}),y=s.toLowerCase()===`get`?`get`:`post`,b=typeof c==`string`&&ci.test(c);return r.createElement(`form`,{ref:h,method:y,action:v,onSubmit:i?l:e=>{if(l&&l(e),e.defaultPrevented)return;e.preventDefault();let i=e.nativeEvent.submitter,c=i?.getAttribute(`formmethod`)||s,m=()=>_(i||e.currentTarget,{fetcherKey:t,method:c,navigate:n,replace:a,state:o,relative:u,preventScrollReset:d,viewTransition:f,defaultShouldRevalidate:p});g&&n!==!1?r.startTransition(()=>m()):m()},...m,"data-discover":!b&&e===`render`?`true`:void 0})});di.displayName=`Form`;function fi({getKey:e,storageKey:t,...n}){let i=r.useContext(Jr),{basename:a}=r.useContext(Z),o=$(),s=Zn();Ti({getKey:e,storageKey:t});let c=r.useMemo(()=>{if(!i||!e)return null;let t=wi(o,s,a,e);return t===o.key?null:t},[]);if(!i||i.isSpaMode)return null;let l=((e,t)=>{if(!window.history.state||!window.history.state.key){let e=Math.random().toString(32).slice(2);window.history.replaceState({key:e},``)}try{let n=JSON.parse(sessionStorage.getItem(e)||`{}`)[t||window.history.state.key];typeof n==`number`&&window.scrollTo(0,n)}catch(t){console.error(t),sessionStorage.removeItem(e)}}).toString();return r.createElement(`script`,{...n,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${l})(${Pr(JSON.stringify(t||Si))}, ${Pr(JSON.stringify(c))})`}})}fi.displayName=`ScrollRestoration`;function pi(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function mi(e){let t=r.useContext(dn);return f(t,pi(e)),t}function hi(e){let t=r.useContext(fn);return f(t,pi(e)),t}function gi(e,{target:t,replace:n,mask:i,state:a,preventScrollReset:o,relative:s,viewTransition:c,defaultShouldRevalidate:l,useTransitions:u}={}){let d=An(),f=$(),p=Fn(e,{relative:s});return r.useCallback(m=>{if(wr(m,t)){m.preventDefault();let t=n===void 0?_(f)===_(p):n,h=()=>d(e,{replace:t,mask:i,state:a,preventScrollReset:o,relative:s,viewTransition:c,defaultShouldRevalidate:l});u?r.startTransition(()=>h()):h()}},[f,d,p,n,i,a,t,e,o,s,c,l,u])}function _i(e){p(typeof URLSearchParams<`u`,"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=r.useRef(Tr(e)),n=r.useRef(!1),i=$(),a=r.useMemo(()=>Er(i.search,n.current?null:t.current),[i.search]),o=An();return[a,r.useCallback((e,t)=>{let r=Tr(typeof e==`function`?e(new URLSearchParams(a)):e);n.current=!0,o(`?`+r,t)},[o,a])]}var vi=0,yi=()=>`__${String(++vi)}__`;function bi(){let{router:e}=mi(`useSubmit`),{basename:t}=r.useContext(Z),n=Yn(),i=e.fetch,a=e.navigate;return r.useCallback(async(e,r={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=jr(e,t);r.navigate===!1?await i(r.fetcherKey||yi(),n,r.action||o,{defaultShouldRevalidate:r.defaultShouldRevalidate,preventScrollReset:r.preventScrollReset,formData:l,body:u,formMethod:r.method||s,formEncType:r.encType||c,flushSync:r.flushSync}):await a(r.action||o,{defaultShouldRevalidate:r.defaultShouldRevalidate,preventScrollReset:r.preventScrollReset,formData:l,body:u,formMethod:r.method||s,formEncType:r.encType||c,replace:r.replace,state:r.state,fromRouteId:n,flushSync:r.flushSync,viewTransition:r.viewTransition})},[i,a,t,n])}function xi(e,{relative:t}={}){let{basename:n}=r.useContext(Z),i=r.useContext(Q);f(i,`useFormAction must be used inside a RouteContext`);let[a]=i.matches.slice(-1),o={...Fn(e||`.`,{relative:t})},s=$();if(e==null){o.search=s.search;let e=new URLSearchParams(o.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();o.search=n?`?${n}`:``}}return(!e||e===`.`)&&a.route.index&&(o.search=o.search?o.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(o.pathname=o.pathname===`/`?n:H([n,o.pathname])),_(o)}var Si=`react-router-scroll-positions`,Ci={};function wi(e,t,n,r){let i=null;return r&&(i=r(n===`/`?e:{...e,pathname:z(e.pathname,n)||e.pathname},t)),i??=e.key,i}function Ti({getKey:e,storageKey:t}={}){let{router:n}=mi(`useScrollRestoration`),{restoreScrollPosition:i,preventScrollReset:a}=hi(`useScrollRestoration`),{basename:o}=r.useContext(Z),s=$(),c=Zn(),l=Xn();r.useEffect(()=>(window.history.scrollRestoration=`manual`,()=>{window.history.scrollRestoration=`auto`}),[]),Ei(r.useCallback(()=>{if(l.state===`idle`){let t=wi(s,c,o,e);Ci[t]=window.scrollY}try{sessionStorage.setItem(t||Si,JSON.stringify(Ci))}catch(e){p(!1,`Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${e}).`)}window.history.scrollRestoration=`auto`},[l.state,e,o,s,c,t])),typeof document<`u`&&(r.useLayoutEffect(()=>{try{let e=sessionStorage.getItem(t||Si);e&&(Ci=JSON.parse(e))}catch{}},[t]),r.useLayoutEffect(()=>{let t=n?.enableScrollRestoration(Ci,()=>window.scrollY,e?(t,n)=>wi(t,n,o,e):void 0);return()=>t&&t()},[n,o,e]),r.useLayoutEffect(()=>{if(i!==!1){if(typeof i==`number`){window.scrollTo(0,i);return}try{if(s.hash){let e=document.getElementById(decodeURIComponent(s.hash.slice(1)));if(e){e.scrollIntoView();return}}}catch{p(!1,`"${s.hash.slice(1)}" is not a decodable element ID. The view will not scroll to it.`)}a!==!0&&window.scrollTo(0,0)}},[s,i,a]))}function Ei(e,t){let{capture:n}=t||{};r.useEffect(()=>{let t=n==null?void 0:{capture:n};return window.addEventListener(`pagehide`,e,t),()=>{window.removeEventListener(`pagehide`,e,t)}},[e,n])}function Di(e,{relative:t}={}){let n=r.useContext(hn);f(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:i}=mi(`useViewTransitionState`),a=Fn(e,{relative:t});if(!n.isTransitioning)return!1;let o=z(n.currentLocation.pathname,i)||n.currentLocation.pathname,s=z(n.nextLocation.pathname,i)||n.nextLocation.pathname;return ue(a.pathname,s)!=null||ue(a.pathname,o)!=null}export{ur as a,Te as c,An as d,Dn as f,_i as h,hr as i,Ce as l,Qn as m,ui as n,ii as o,Pn as p,mr as r,x as s,li as t,$ as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{T as n}from"./portal-container-DIXEBWUe.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{t as i}from"./button-DdEh-9f_.js";import{t as a}from"./typography-Czgs_2w_.js";import"./src-hn7lwVCD.js";import{t as o}from"./panel-item-FzMfzMJA.js";import{t as s}from"./loader-circle-BSAFLoPH.js";import{t as c}from"./x-BDqbYVtS.js";import{n as l}from"./use-is-mobile-D_xrnINF.js";import{
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{T as n}from"./portal-container-DIXEBWUe.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{t as i}from"./button-DdEh-9f_.js";import{t as a}from"./typography-Czgs_2w_.js";import"./src-hn7lwVCD.js";import{t as o}from"./panel-item-FzMfzMJA.js";import{t as s}from"./loader-circle-BSAFLoPH.js";import{t as c}from"./x-BDqbYVtS.js";import{n as l}from"./use-is-mobile-D_xrnINF.js";import{Yi as u}from"./index-BjEJFZTJ.js";var d=e(t(),1),f=e(n(),1),p=r();function m({icon:e,title:t,subtitle:n,shortcutHint:r,isSelected:i,onClick:a}){return(0,p.jsx)(o,{icon:e,label:(0,p.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[(0,p.jsx)(`span`,{className:`truncate`,children:t}),n?(0,p.jsx)(`span`,{className:`shrink-0 truncate text-[var(--content-tertiary)] text-body-small-default`,children:n}):null,r?(0,p.jsx)(`span`,{className:`ml-auto shrink-0 text-[var(--content-tertiary)] text-body-small-default`,children:r}):null]}),active:i,onSelect:a,className:`px-3 py-2`})}var h=({isOpen:e,onClose:t,query:n,onQueryChange:r,selectedIndex:o,sections:h,isSearching:g=!1,onItemSelect:_,onKeyDown:v})=>{let y=l(),b=(0,d.useRef)(null),x=(0,d.useRef)(null),S=(0,d.useRef)(null);(0,d.useEffect)(()=>{if(e){let e=requestAnimationFrame(()=>{x.current?.focus()});return()=>cancelAnimationFrame(e)}},[e]),(0,d.useEffect)(()=>{if(!e||!S.current)return;let t=S.current.querySelector(`[aria-current='page']`);t&&t.scrollIntoView({block:`nearest`})},[e,o]);let C=(0,d.useCallback)(e=>{e.target===b.current&&t()},[t]);if(!e)return null;let w=0,T=(0,p.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b border-[var(--border-base)] px-4 py-3`,children:[g?(0,p.jsx)(s,{size:16,"aria-hidden":!0,className:`shrink-0 animate-spin text-[var(--content-tertiary)]`}):(0,p.jsx)(u,{size:16,"aria-hidden":!0,className:`shrink-0 text-[var(--content-tertiary)]`}),(0,p.jsx)(`input`,{ref:x,type:`text`,value:n,onChange:e=>r(e.target.value),placeholder:`Search conversations, memories…`,className:`min-w-0 flex-1 bg-transparent text-body-medium-lighter text-[var(--content-default)] placeholder:text-[var(--content-tertiary)] outline-none`,"aria-label":`Search`}),n?y?(0,p.jsx)(`button`,{type:`button`,className:`shrink-0 text-body-medium-lighter text-[var(--content-tertiary)]`,onClick:()=>r(``),"aria-label":`Clear search`,children:`Clear`}):(0,p.jsx)(i,{variant:`ghost`,size:`compact`,iconOnly:(0,p.jsx)(c,{}),"aria-label":`Clear search`,onClick:()=>r(``),tintColor:`var(--content-tertiary)`}):y?null:(0,p.jsx)(`kbd`,{className:`shrink-0 rounded-md border border-[var(--border-base)] bg-[var(--surface-active)] px-1.5 py-0.5 text-label-small-default text-[var(--content-tertiary)]`,children:`⌘K`}),y?(0,p.jsx)(i,{variant:`ghost`,size:`compact`,iconOnly:(0,p.jsx)(c,{}),expandOnMobile:!1,"aria-label":`Close search`,onClick:t,tintColor:`var(--content-tertiary)`}):null]}),E=(0,p.jsx)(`div`,{ref:S,className:y?`flex-1 overflow-y-auto overscroll-contain p-2`:`max-h-[360px] overflow-y-auto overscroll-contain p-2`,role:`listbox`,children:h.length===0?(0,p.jsx)(`div`,{className:`px-3 py-6 text-center`,children:(0,p.jsx)(a,{variant:`body-medium-lighter`,className:`text-[var(--content-tertiary)]`,children:g?`Searching…`:`No results`})}):h.map(e=>(0,p.jsxs)(`div`,{role:`group`,"aria-label":e.label,children:[(0,p.jsx)(a,{variant:`label-small-default`,as:`div`,className:`px-3 pb-1 pt-2 text-[var(--content-tertiary)]`,children:e.label}),e.items.map(e=>{let t=w++;return(0,p.jsx)(m,{icon:e.icon,title:e.title,subtitle:e.subtitle,shortcutHint:y?void 0:e.shortcutHint,isSelected:t===o,onClick:()=>_?.(e,t)},e.id)})]},e.id))});return y?(0,p.jsxs)(`div`,{className:`absolute inset-0 z-30 flex flex-col bg-[var(--surface-lift)]`,role:`dialog`,"aria-modal":`true`,"aria-label":`Search`,onKeyDown:v,style:{paddingTop:`var(--safe-area-inset-top, env(safe-area-inset-top, 0px))`,paddingBottom:`var(--safe-area-inset-bottom, env(safe-area-inset-bottom, 0px))`,paddingLeft:`var(--safe-area-inset-left, env(safe-area-inset-left, 0px))`,paddingRight:`var(--safe-area-inset-right, env(safe-area-inset-right, 0px))`},children:[T,E]}):(0,f.createPortal)((0,p.jsx)(`div`,{ref:b,role:`dialog`,"aria-modal":`true`,"aria-label":`Command palette`,className:`fixed inset-0 z-50 flex items-start justify-center bg-black/40 pt-[15vh]`,onClick:C,onKeyDown:v,children:(0,p.jsxs)(`div`,{className:`flex w-full max-w-[560px] flex-col overflow-hidden rounded-xl border border-[var(--border-base)] bg-[var(--surface-base)] shadow-xl`,children:[T,E]})}),document.body)};export{h as CommandPalette};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-CVSDxk6A.js";import{t}from"./button-DdEh-9f_.js";import{t as n}from"./card-CL5iEMJO.js";import{t as r}from"./tag-Ccr7Quy6.js";import{t as i}from"./createLucideIcon-D6d6iDdi.js";import{t as a}from"./bug-DDEBp29t.js";import{t as o}from"./external-link-BCB1rbW9.js";import{t as s}from"./globe-ByNYDdSW.js";import{
|
|
1
|
+
import{t as e}from"./jsx-runtime-CVSDxk6A.js";import{t}from"./button-DdEh-9f_.js";import{t as n}from"./card-CL5iEMJO.js";import{t as r}from"./tag-Ccr7Quy6.js";import{t as i}from"./createLucideIcon-D6d6iDdi.js";import{t as a}from"./bug-DDEBp29t.js";import{t as o}from"./external-link-BCB1rbW9.js";import{t as s}from"./globe-ByNYDdSW.js";import{Aa as c,Bi as l,Di as u,H as d,I as f,Li as p,a as m,i as h,ia as g,r as _,vo as v}from"./index-BjEJFZTJ.js";var y=i(`git-pull-request`,[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M13 6h3a2 2 0 0 1 2 2v7`,key:`1yeb86`}],[`line`,{x1:`6`,x2:`6`,y1:`9`,y2:`21`,key:`rroup`}]]),b=e();function x({size:e=24,className:t,style:n}){return(0,b.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,width:e,height:e,fill:`currentColor`,className:t,style:n,"aria-hidden":!0,children:(0,b.jsx)(`path`,{d:`M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12`})})}function S({size:e=24,className:t,style:n}){return(0,b.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,width:e,height:e,fill:`currentColor`,className:t,style:n,"aria-hidden":!0,children:(0,b.jsx)(`path`,{d:`M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z`})})}function C({size:e=24,className:t,style:n}){return(0,b.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,width:e,height:e,fill:`currentColor`,className:t,style:n,"aria-hidden":!0,children:(0,b.jsx)(`path`,{d:`M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814ZM9.545 15.568V8.432L15.818 12l-6.273 3.568Z`})})}function w(){return(0,b.jsx)(n,{padding:`lg`,className:`bg-[var(--surface-lift)]`,children:(0,b.jsxs)(`div`,{className:`relative`,children:[(0,b.jsx)(`div`,{className:`pointer-events-none absolute -right-16 -top-16 h-64 w-64 rounded-full opacity-30 blur-3xl`,style:{background:`radial-gradient(circle, var(--system-mid-weak) 0%, transparent 70%)`},"aria-hidden":!0}),(0,b.jsxs)(`div`,{className:`relative flex flex-col items-start gap-3`,children:[(0,b.jsxs)(r,{tone:`neutral`,children:[(0,b.jsx)(g,{className:`h-3.5 w-3.5`}),`Community`]}),(0,b.jsx)(`h1`,{className:`text-[28px] font-semibold leading-tight tracking-tight text-[var(--content-emphasised)]`,children:`Build with us, in the open.`}),(0,b.jsx)(`p`,{className:`max-w-xl text-body-medium-default text-[color:var(--content-tertiary)]`,children:`Vellum is built in the open with a growing community of developers, designers, and tinkerers. Here's how to get involved.`})]})]})})}function T({icon:e,text:t}){return(0,b.jsxs)(`li`,{className:`flex items-center gap-3`,children:[(0,b.jsx)(`span`,{className:`flex size-7 shrink-0 items-center justify-center rounded-md bg-[var(--surface-base)]`,children:(0,b.jsx)(e,{size:14,className:`text-[var(--content-secondary)]`,"aria-hidden":!0})}),(0,b.jsx)(`span`,{className:`text-body-medium-lighter text-[color:var(--content-secondary)]`,children:t})]})}function E({accentColor:e,iconColor:r=`var(--aux-white)`,label:i,icon:a,title:o,subtitle:s,benefits:c,primaryAction:l,secondaryAction:u}){return(0,b.jsx)(n,{padding:`lg`,className:`flex-1`,children:(0,b.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,b.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,b.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg`,style:{backgroundColor:e,color:r},children:a}),(0,b.jsx)(`span`,{className:`text-label-medium-default uppercase tracking-wider text-[color:var(--content-tertiary)]`,children:i})]}),(0,b.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,b.jsx)(`h2`,{className:`text-title-medium text-[var(--content-emphasised)]`,children:o}),(0,b.jsx)(`p`,{className:`text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:s})]}),(0,b.jsx)(`ul`,{className:`flex flex-col gap-3`,children:c.map(({icon:e,text:t})=>(0,b.jsx)(T,{icon:e,text:t},t))}),(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsxs)(t,{onClick:l.onClick,children:[l.icon,l.label]}),u&&(0,b.jsxs)(t,{variant:`ghost`,onClick:()=>window.open(u.href,`_blank`,`noopener,noreferrer`),children:[u.label,(0,b.jsx)(v,{className:`h-3.5 w-3.5`})]})]})]})})}function D({icon:e,iconBg:t,title:r,description:i,href:a}){return(0,b.jsx)(`a`,{href:a,target:`_blank`,rel:`noopener noreferrer`,className:`flex flex-1 cursor-pointer`,children:(0,b.jsx)(n,{className:`flex-1 transition-shadow hover:shadow-md`,padding:`lg`,children:(0,b.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,b.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,b.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg text-white`,style:{backgroundColor:t},children:e}),(0,b.jsx)(o,{size:14,className:`text-[var(--content-tertiary)]`,"aria-hidden":!0})]}),(0,b.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,b.jsx)(`span`,{className:`text-title-medium text-[var(--content-emphasised)]`,children:r}),(0,b.jsx)(`p`,{className:`text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:i})]})]})})})}function O(){let{handleStar:e}=m();return(0,b.jsxs)(`div`,{className:`space-y-6`,children:[(0,b.jsx)(w,{}),(0,b.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-2`,children:[(0,b.jsx)(E,{accentColor:`var(--content-emphasised)`,iconColor:`var(--surface-base)`,label:`Open Source`,icon:(0,b.jsx)(x,{size:20}),title:`Vellum is open source`,subtitle:`Read the source, star the repo, and contribute fixes and features on GitHub.`,benefits:[{icon:p,text:`Star the repo to follow updates`},{icon:a,text:`Open issues and report bugs`},{icon:y,text:`Contribute fixes and new features`}],primaryAction:{label:`Star on GitHub`,icon:(0,b.jsx)(p,{size:16}),onClick:e},secondaryAction:{label:`View source`,href:h}}),(0,b.jsx)(E,{accentColor:`#5865F2`,label:`Discord`,icon:(0,b.jsx)(f,{size:20}),title:`Join our community`,subtitle:`Talk to the team, share feedback, request features, and get answers faster.`,benefits:[{icon:c,text:`Talk directly with the team`},{icon:l,text:`Share feedback and request features`},{icon:u,text:`Get answers faster from the community`}],primaryAction:{label:`Join Discord`,icon:(0,b.jsx)(f,{size:16,style:{color:`currentColor`}}),onClick:_}})]}),(0,b.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,b.jsx)(`h2`,{className:`text-label-medium-default uppercase tracking-wider text-[color:var(--content-tertiary)]`,children:`More from Vellum`}),(0,b.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-3`,children:[(0,b.jsx)(D,{icon:(0,b.jsx)(s,{size:20}),iconBg:`#22c55e`,title:`Community Hub`,description:`Showcases, guides, and projects shared by the community.`,href:d}),(0,b.jsx)(D,{icon:(0,b.jsx)(S,{size:20}),iconBg:`#0f172a`,title:`Follow on X`,description:`Product updates, releases, and behind-the-scenes.`,href:`https://x.com/vellum_ai`}),(0,b.jsx)(D,{icon:(0,b.jsx)(C,{size:20}),iconBg:`#ef4444`,title:`YouTube channel`,description:`Walkthroughs, tutorials, and product deep-dives.`,href:`https://www.youtube.com/@Vellum_AI`})]})]})]})}export{O as CommunityPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{d as n,
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{d as n,h as r}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as i}from"./QueryClientProvider-DNHWXaGq.js";import{t as a}from"./useMutation-BuofVRHk.js";import{t as o}from"./jsx-runtime-CVSDxk6A.js";import{t as s}from"./button-DdEh-9f_.js";import{t as c}from"./typography-Czgs_2w_.js";import{t as l}from"./card-CL5iEMJO.js";import{n as u}from"./toast-DU1nH33j.js";import{t as d}from"./link-2-BHdo-6Lp.js";import{t as f}from"./loader-circle-BSAFLoPH.js";import{i as p}from"./routes-Dk5Qeryt.js";import{ji as m}from"./index-BjEJFZTJ.js";import{t as h}from"./use-active-assistant-id-BIhArlF_.js";import{n as g,o as _}from"./contacts-gateway-DBRvewkn.js";var v=e(t(),1),y=o();function b(e){let t=e[0];return typeof t==`object`&&!!t&&t._id===`contactsGet`}function x(e,t){switch(e){case`expired`:case`not_found`:return`This invite link has expired or already been used.`;case`already_redeemed_by_other`:return`This invite has already been claimed by someone else.`;case`sender_not_found`:return`The sender's assistant could not be found.`;case`not_platform_managed`:return`A2A invite links are only supported for platform-hosted assistants.`;default:return t||`Something went wrong. Please try again.`}}function S(){return(0,y.jsx)(C,{assistantId:h()})}function C({assistantId:e}){let t=n(),o=i(),[h]=r(),S=(0,v.useMemo)(()=>_(h),[h]),C=a({mutationFn:()=>{if(!S)throw Error(`Invalid invite link`);return g(e,{senderAssistantId:S.senderAssistantId,token:S.token})},onSuccess:e=>{e.success&&(o.invalidateQueries({predicate:e=>b(e.queryKey)}),e.alreadyConnected?u(`Already connected`):u(`Connected!`),t(p.contacts.root))}}),w=(0,v.useCallback)(()=>{t(p.contacts.root)},[t]),T=(0,v.useCallback)(()=>{C.mutate()},[C]),E=(0,v.useMemo)(()=>C.isError?C.error instanceof Error?C.error.message:`Something went wrong. Please try again.`:C.data&&!C.data.success?x(C.data.errorCode,C.data.error):null,[C.isError,C.error,C.data]);return S?(0,y.jsx)(`div`,{className:`flex min-h-full items-center justify-center p-6`,children:(0,y.jsx)(l,{className:`w-full max-w-md`,children:(0,y.jsxs)(`div`,{className:`flex flex-col gap-4 p-6`,children:[(0,y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,y.jsx)(d,{className:`h-6 w-6`,style:{color:`var(--content-secondary)`}}),(0,y.jsx)(c,{variant:`title-small`,children:`Connect assistants`})]}),(0,y.jsx)(c,{variant:`body-medium-lighter`,style:{color:`var(--content-secondary)`},children:`Accepting this link will create a trusted A2A connection between your assistant and the sender's.`}),E&&(0,y.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md p-3`,style:{backgroundColor:`var(--surface-negative-subtle)`,color:`var(--system-negative-strong)`},children:[(0,y.jsx)(m,{className:`h-4 w-4 shrink-0`}),(0,y.jsx)(c,{variant:`body-small-default`,children:E})]}),(0,y.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,y.jsx)(s,{variant:`primary`,onClick:T,disabled:C.isPending,children:C.isPending?(0,y.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,y.jsx)(f,{className:`h-4 w-4 animate-spin`}),`Connecting…`]}):`Connect`}),(0,y.jsx)(s,{variant:`outlined`,onClick:w,disabled:C.isPending,children:`Cancel`})]})]})})}):(0,y.jsx)(`div`,{className:`flex min-h-full items-center justify-center p-6`,children:(0,y.jsx)(l,{className:`w-full max-w-md`,children:(0,y.jsxs)(`div`,{className:`flex flex-col gap-4 p-6`,children:[(0,y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,y.jsx)(m,{className:`h-6 w-6`,style:{color:`var(--system-negative-strong)`}}),(0,y.jsx)(c,{variant:`title-small`,children:`Invalid invite link`})]}),(0,y.jsx)(c,{variant:`body-medium-lighter`,style:{color:`var(--content-secondary)`},children:`The link you followed is missing required parameters and cannot be used.`}),(0,y.jsx)(`div`,{className:`flex gap-2 pt-2`,children:(0,y.jsx)(s,{variant:`primary`,onClick:w,children:`Go to Contacts`})})]})})})}export{S as ConnectPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,r as t,t as n}from"./api-errors-ChauV4ed.js";import{t as r}from"./client.gen-BKAMS0D0.js";import{i}from"./routes-
|
|
1
|
+
import{n as e,r as t,t as n}from"./api-errors-ChauV4ed.js";import{t as r}from"./client.gen-BKAMS0D0.js";import{i}from"./routes-Dk5Qeryt.js";function a(e){let t=typeof window<`u`?window.location.origin:``,n=new URLSearchParams({senderAssistantId:e.senderAssistantId,token:e.token});return`${t}${i.connect}?${n.toString()}`}function o(e){let t=e.get(`senderAssistantId`)?.trim(),n=e.get(`token`)?.trim();return!t||!n?null:{senderAssistantId:t,token:n}}async function s(i,a){let{data:o,error:s,response:c}=await r.post({url:`/v1/assistants/{assistant_id}/contacts/`,path:{assistant_id:i},body:a,headers:{"Content-Type":`application/json`},throwOnError:!1});if(e(c,s,`Failed to save contact`),!c.ok||!o?.contact)throw new n(c.status,t(s,c,`Failed to save contact`));return o.contact}async function c(i,a){let{error:o,response:s}=await r.delete({url:`/v1/assistants/{assistant_id}/contacts/{contact_id}/`,path:{assistant_id:i,contact_id:a},throwOnError:!1});if(e(s,o,`Failed to delete contact`),!s.ok&&s.status!==204)throw new n(s.status,t(o,s,`Failed to delete contact`))}async function l(i,a){let{error:o,response:s}=await r.post({url:`/v1/assistants/{assistant_id}/contact-channels/{channel_id}/verify/`,path:{assistant_id:i,channel_id:a},throwOnError:!1});if(e(s,o,`Failed to verify channel`),!s.ok)throw new n(s.status,t(o,s,`Failed to verify channel`))}async function u(i,a){let{data:o,error:s,response:c}=await r.post({url:`/v1/assistants/{assistant_id}/a2a/invites/redeem/`,path:{assistant_id:i},body:{sender_assistant_id:a.senderAssistantId,token:a.token},headers:{"Content-Type":`application/json`},throwOnError:!1});if(e(c,s,`Failed to redeem A2A invite`),!c.ok)throw new n(c.status,t(s,c,`Failed to redeem A2A invite`));return{success:o?.success??!0,alreadyConnected:o?.already_connected,error:o?.error,errorCode:o?.error_code}}export{a,l as i,u as n,o,s as r,c as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{d as n}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as r}from"./QueryClientProvider-DNHWXaGq.js";import{t as i}from"./useQuery-D2zf6Uhu.js";import{t as a}from"./useMutation-BuofVRHk.js";import{t as o}from"./jsx-runtime-CVSDxk6A.js";import{t as s}from"./button-DdEh-9f_.js";import{t as c}from"./typography-Czgs_2w_.js";import{t as l}from"./card-CL5iEMJO.js";import{t as u}from"./confirm-dialog-NYG-K9zN.js";import{t as d}from"./tag-Ccr7Quy6.js";import{t as f}from"./panel-item-FzMfzMJA.js";import{t as p}from"./input-Cu3PPVCq.js";import{t as m}from"./modal-BYMhDpQo.js";import{n as h}from"./toast-DU1nH33j.js";import{t as g}from"./createLucideIcon-D6d6iDdi.js";import{t as _}from"./chevron-right-zTNPbA1m.js";import{t as v}from"./ellipsis-vertical-Dxg526It.js";import{t as y}from"./link-2-BHdo-6Lp.js";import{t as b}from"./loader-circle-BSAFLoPH.js";import{t as x}from"./pencil-BA9LOIzP.js";import{At as S,Ft as C,Mt as ee,Nt as w,Pt as T,jt as te,v as E}from"./sdk.gen-AJllUeDf.js";import{a as ne,c as re,d as ie,i as ae,l as oe,r as se,u as ce,w as le}from"./react-query.gen-B8xaBreR.js";import{i as ue}from"./routes-Dk5Qeryt.js";import{t as de}from"./assistant-feature-flag-store-0382ImYF.js";import{t as D}from"./viewer-store-Cc5YI5ay.js";import{t as O}from"./conversation-store-BEgf__eu.js";import{t as fe}from"./assistant-identity-store-dQ1LxIr0.js";import{$n as k,Ja as pe,Ji as A,Yi as j,ba as M,bo as N,ha as P,ja as me,ki as F,mo as I,na as L,po as R,sa as z,uo as B}from"./index-BjEJFZTJ.js";import{t as he}from"./use-active-assistant-id-BIhArlF_.js";import{n as ge,t as _e}from"./mobile-sidebar-drawer-BjPgVWjw.js";import{t as V}from"./detail-card-B5j4Rqau.js";import{a as ve,i as ye,r as be,t as xe}from"./contacts-gateway-DBRvewkn.js";var H=g(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),U=g(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),W=g(`git-merge`,[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M6 21V9a9 9 0 0 0 9 9`,key:`7kw0sc`}]]),G=e(t(),1),K=o();function q({role:e,contactType:t}){let{label:n,tone:r}=J(e,t);return(0,K.jsx)(d,{tone:r,children:n})}function J(e,t){switch(e){case`guardian`:return{label:`Guardian`,tone:`positive`};case`assistant`:return{label:`Assistant`,tone:`negative`};default:return t===`assistant`?{label:`Assistant`,tone:`negative`}:{label:`Human`,tone:`warning`}}}function Y({onClick:e}){return(0,K.jsx)(s,{variant:`outlined`,size:`compact`,leftIcon:(0,K.jsx)(y,{className:`h-3.5 w-3.5`}),onClick:e,children:`Share Connection Link`})}var X={slack:{label:`Slack`,Icon:me,disconnectMessage:`This clears the stored Slack bot and app tokens for this assistant. You can reconnect later.`},telegram:{label:`Telegram`,Icon:A,disconnectMessage:`This clears the stored Telegram bot token for this assistant. You can reconnect later.`},phone:{label:`Phone Calling`,Icon:z,disconnectMessage:`This clears the stored Twilio credentials for this assistant. You can reconnect later.`}};function Se({assistantName:e,channels:t,pendingChannelKey:n=null,onSetup:r,onDisconnect:i,onSaveTelegramToken:a,onSaveSlackConfig:o,onSaveTwilioCredentials:s,onGenerateInviteLink:c}){let l=e.trim()||`your assistant`,[d,f]=(0,G.useState)(null),[p,m]=(0,G.useState)(new Set),h=d?X[d]:null,g=e=>{m(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})};return(0,K.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,K.jsx)(V,{title:`${l} (Your Assistant)`,accessory:(0,K.jsx)(q,{role:`assistant`}),compactAccessory:!0}),(0,K.jsx)(V,{title:`Channels`,subtitle:`Manage where ${l} can be reached.`,children:(0,K.jsx)(`div`,{className:`flex flex-col`,children:t.map((e,t)=>(0,K.jsxs)(`div`,{children:[t>0?(0,K.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}):null,(0,K.jsx)(Ce,{channel:e,pending:n===e.key,expanded:p.has(e.key),onToggleExpand:()=>g(e.key),onSetup:r?()=>r(e.key):void 0,onDisconnect:i?()=>f(e.key):void 0,onSaveTelegramToken:a,onSaveSlackConfig:o,onSaveTwilioCredentials:s})]},e.key))})}),c?(0,K.jsx)(Y,{onClick:c}):null,(0,K.jsx)(u,{open:d!==null,title:`Disconnect ${h?.label??``}?`,message:h?.disconnectMessage??``,confirmLabel:`Disconnect`,destructive:!0,onConfirm:()=>{d&&i&&i(d),f(null)},onCancel:()=>f(null)})]})}function Ce({channel:e,pending:t,expanded:n,onToggleExpand:r,onSetup:i,onDisconnect:a,onSaveTelegramToken:o,onSaveSlackConfig:c,onSaveTwilioCredentials:l}){let u=X[e.key],d=e.status===`ready`;return(0,K.jsxs)(`div`,{className:`flex flex-col gap-2 py-4`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-3`,children:[!d||e.key!==`slack`?(0,K.jsx)(`button`,{type:`button`,className:`flex shrink-0 items-center justify-center`,onClick:r,style:{color:`var(--content-secondary)`},children:n?(0,K.jsx)(R,{className:`h-4 w-4`}):(0,K.jsx)(_,{className:`h-4 w-4`})}):(0,K.jsx)(u.Icon,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),(0,K.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:u.label}),e.address?(0,K.jsx)(`span`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e.address}):null,(0,K.jsx)(`div`,{className:`ml-auto flex items-center gap-2`,children:d?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-8 px-2.5 rounded-md whitespace-nowrap select-none text-body-small-emphasised leading-none bg-[var(--content-default)] text-[var(--surface-base)]`,children:[(0,K.jsx)(B,{className:`h-3 w-3`}),`Connected`]}),(0,K.jsx)(s,{type:`button`,variant:`danger`,onClick:a,disabled:!a||t,children:t?`Disconnecting…`:`Disconnect`})]}):(0,K.jsx)(s,{type:`button`,variant:`outlined`,onClick:i,disabled:!i||t,children:t?`Opening…`:`Set up`})})]}),!d&&e.key===`telegram`&&n?(0,K.jsx)(we,{onSave:o}):null,!d&&e.key===`slack`&&n?(0,K.jsx)(Te,{onSave:c}):null,!d&&e.key===`phone`&&n?(0,K.jsx)(Z,{onSave:l}):null,d&&e.key===`telegram`&&n?(0,K.jsx)(we,{onSave:o}):null,d&&e.key===`phone`&&n?(0,K.jsx)(Z,{onSave:l}):null]})}function we({onSave:e}){let[t,n]=(0,G.useState)(``),[r,i]=(0,G.useState)(!1),[a,o]=(0,G.useState)(null),c=t.trim().length>0&&!r;return(0,K.jsxs)(`div`,{className:`flex flex-col gap-3 pl-7`,children:[(0,K.jsx)(p,{label:`Bot Token`,type:`password`,value:t,onChange:e=>n(e.target.value),placeholder:`Paste your Telegram bot token`,disabled:r,fullWidth:!0}),a?(0,K.jsx)(`p`,{className:`text-label-small`,style:{color:`var(--content-negative)`},children:a}):null,(0,K.jsx)(`div`,{children:(0,K.jsx)(s,{type:`button`,onClick:async()=>{if(!(!e||!c)){i(!0),o(null);try{await e(t.trim()),n(``)}catch(e){o(e instanceof Error?e.message:`Failed to save`)}finally{i(!1)}}},disabled:!c,children:r?`Saving…`:`Save`})})]})}function Te({onSave:e}){let[t,n]=(0,G.useState)(``),[r,i]=(0,G.useState)(``),[a,o]=(0,G.useState)(!1),[c,l]=(0,G.useState)(null),u=t.trim().length>0&&r.trim().length>0&&!a;return(0,K.jsxs)(`div`,{className:`flex flex-col gap-3 pl-7`,children:[(0,K.jsx)(p,{label:`Bot Token`,type:`password`,value:t,onChange:e=>n(e.target.value),placeholder:`xoxb-...`,disabled:a,fullWidth:!0}),(0,K.jsx)(p,{label:`App Token`,type:`password`,value:r,onChange:e=>i(e.target.value),placeholder:`xapp-...`,disabled:a,fullWidth:!0}),c?(0,K.jsx)(`p`,{className:`text-label-small`,style:{color:`var(--content-negative)`},children:c}):null,(0,K.jsx)(`div`,{children:(0,K.jsx)(s,{type:`button`,onClick:async()=>{if(!(!e||!u)){o(!0),l(null);try{await e(t.trim(),r.trim()),n(``),i(``)}catch(e){l(e instanceof Error?e.message:`Failed to save`)}finally{o(!1)}}},disabled:!u,children:a?`Saving…`:`Save`})})]})}function Z({onSave:e}){let[t,n]=(0,G.useState)(``),[r,i]=(0,G.useState)(``),[a,o]=(0,G.useState)(!1),[c,l]=(0,G.useState)(null),u=t.trim().length>0&&r.trim().length>0&&!a;return(0,K.jsxs)(`div`,{className:`flex flex-col gap-3 pl-7`,children:[(0,K.jsx)(p,{label:`Account SID`,type:`text`,value:t,onChange:e=>n(e.target.value),placeholder:`ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`,disabled:a,fullWidth:!0}),(0,K.jsx)(p,{label:`Auth Token`,type:`password`,value:r,onChange:e=>i(e.target.value),placeholder:`Twilio auth token`,disabled:a,fullWidth:!0}),c?(0,K.jsx)(`p`,{className:`text-label-small`,style:{color:`var(--content-negative)`},children:c}):null,(0,K.jsx)(`div`,{children:(0,K.jsx)(s,{type:`button`,onClick:async()=>{if(!(!e||!u)){o(!0),l(null);try{await e(t.trim(),r.trim()),n(``),i(``)}catch(e){l(e instanceof Error?e.message:`Failed to save`)}finally{o(!1)}}},disabled:!u,children:a?`Saving…`:`Save`})})]})}var Ee=new Set([`telegram`,`phone`,`vellum`,`whatsapp`,`slack`,`email`,`platform`,`a2a`]);function De(e){return Ee.has(e)}function Oe(e,t){return e.id===`a2a`?t&&t.status!==`revoked`?{kind:`connected`}:{kind:`setup`}:t?.status===`verified`||t?.status===`active`&&t?.verifiedAt!=null?{kind:`verified`}:t&&t.status!==`revoked`?{kind:`unverified`}:{kind:`setup`}}function ke(e,t,n){let r=[],i=new Set;if(e)for(let t of e)t.id===`a2a`&&!n||(r.push(t),i.add(t.id));for(let e of t)e.status===`revoked`||i.has(e.type)||e.type===`a2a`&&!n||De(e.type)&&(r.push({id:e.type,label:e.type.charAt(0).toUpperCase()+e.type.slice(1),subtitle:``,icon:`help-circle`,supportsVerification:!1,setupMessages:{guardian:``,contact:``}}),i.add(e.type));return r}function Ae({name:e,className:t,style:n}){switch(e){case`bot`:return(0,K.jsx)(H,{className:t,style:n});case`hash`:return(0,K.jsx)(me,{className:t,style:n});case`send`:return(0,K.jsx)(A,{className:t,style:n});case`phone`:return(0,K.jsx)(z,{className:t,style:n});case`mail`:return(0,K.jsx)(M,{className:t,style:n});case`message-square`:return(0,K.jsx)(P,{className:t,style:n});default:return(0,K.jsx)(U,{className:t,style:n})}}function Q({contactChannels:e,availableChannels:t,a2aEnabled:n,setupLabel:r=`Invite`,verifyLoading:i,onSetupChannel:a,onVerifyChannel:o,onRevokeChannel:s}){let[c,l]=(0,G.useState)(null),[d,f]=(0,G.useState)(null),p=new Map;for(let t of e)t.status!==`revoked`&&(p.has(t.type)||p.set(t.type,t));return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{className:`flex flex-col`,children:ke(t,e,n).map((e,t)=>{let n=p.get(e.id);return(0,K.jsxs)(`div`,{children:[t>0&&(0,K.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),(0,K.jsx)(je,{info:e,existing:n,setupLabel:r,verifyLoading:i,onSetup:a?()=>a(e.id):void 0,onVerify:o&&e.supportsVerification?()=>l(e):void 0,onRevoke:s&&n?()=>f({channelId:n.id,channel:e}):void 0})]},e.id)})}),c&&(0,K.jsx)(u,{open:!0,title:`Verify ${c.label}`,message:`This will mark your ${c.label} channel as verified. Your assistant will recognize you when you reach out from it.`,confirmLabel:`Verify`,onConfirm:()=>{c&&(o?.(c.id),l(null))},onCancel:()=>l(null)}),d&&(0,K.jsx)(u,{open:!0,title:`Revoke ${d.channel.label}`,message:`This will disconnect the verified channel. The contact will need to re-verify to use this channel again.`,confirmLabel:`Revoke`,destructive:!0,onConfirm:()=>{s?.(d.channelId,d.channel.id),f(null)},onCancel:()=>f(null)})]})}function je({info:e,existing:t,setupLabel:n,verifyLoading:r,onSetup:i,onVerify:a,onRevoke:o}){let c=Oe(e,t);return(0,K.jsxs)(`div`,{className:`flex items-center gap-3 py-4`,children:[(0,K.jsx)(Ae,{name:e.icon,className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),(0,K.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-default)`},children:e.label}),t?.address?(0,K.jsx)(`span`,{className:`truncate text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:t.address}):null,(0,K.jsx)(`div`,{className:`ml-auto flex shrink-0 items-center gap-2`,children:c.kind===`connected`?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-8 px-2.5 rounded-md whitespace-nowrap select-none text-body-small-emphasised leading-none bg-[var(--content-default)] text-[var(--surface-base)]`,children:[(0,K.jsx)(B,{className:`h-3 w-3`}),`Connected`]}),o?(0,K.jsx)(s,{variant:`danger`,onClick:o,children:`Revoke`}):null]}):c.kind===`verified`?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-8 px-2.5 rounded-md whitespace-nowrap select-none text-body-small-emphasised leading-none bg-[var(--content-default)] text-[var(--surface-base)]`,children:[(0,K.jsx)(B,{className:`h-3 w-3`}),`Verified`]}),o?(0,K.jsx)(s,{variant:`danger`,onClick:o,children:`Revoke`}):null]}):c.kind===`unverified`?(0,K.jsx)(s,{variant:`outlined`,onClick:a,disabled:!a||r,children:r?`Verifying…`:`Verify`}):c.kind===`setup`?e.id===`a2a`?null:(0,K.jsx)(s,{variant:`outlined`,onClick:i,disabled:!i,children:n}):null})]})}function Me(e){return(0,K.jsx)(Ne,{...e},e.contact.id)}function Ne({contact:e,savePending:t,deletePending:n,mergePending:r=!1,canMerge:i=!1,availableChannels:a,a2aEnabled:o,onSave:c,onDelete:l,onMerge:d,onSetupChannel:f,onRevokeChannel:m}){let h=e.displayName===`New Contact`,[g,_]=(0,G.useState)(h?``:e.displayName),[v,y]=(0,G.useState)(e.notes??``),[b,x]=(0,G.useState)(!1),S=g.trim(),C=v.trim(),ee=h?``:e.displayName,w=e.notes??``,T=S!==ee||C!==w,te=S.length>0&&T&&!t&&!n,E=h&&e.channels.length===0&&e.interactionCount===0,ne=S||e.displayName,re=`${e.interactionCount} interaction${e.interactionCount===1?``:`s`}`;return(0,K.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,K.jsx)(V,{title:ne,accessory:(0,K.jsx)(q,{role:e.role,contactType:e.contactType}),compactAccessory:!0,subtitle:re,children:(0,K.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,K.jsx)(p,{label:`Name`,type:`text`,value:g,onChange:e=>_(e.target.value),placeholder:`Give this human a name`,autoFocus:h,disabled:t||n,fullWidth:!0}),(0,K.jsx)(p,{label:`Notes`,type:`text`,value:v,onChange:e=>y(e.target.value),placeholder:`Optional notes about the human which AI will take into account`,disabled:t||n,fullWidth:!0}),(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,K.jsx)(s,{type:`button`,onClick:()=>c({displayName:S,notes:C}),disabled:!te,children:t?`Saving…`:`Save`}),d?(0,K.jsx)(s,{type:`button`,variant:`outlined`,onClick:d,disabled:!i||E||T||r||t||n,title:i?E?`Save this contact before merging`:T?`Save your changes before merging`:void 0:`No other contacts available to merge`,children:r?`Merging…`:`Merge…`}):null,(0,K.jsx)(s,{type:`button`,variant:`danger`,onClick:()=>{E?l():x(!0)},disabled:n,children:n?`Deleting…`:`Delete Contact`})]})]})}),(0,K.jsx)(V,{title:`Channels`,subtitle:`Once verified, your assistant will recognize this contact when they message from these channels.`,children:(0,K.jsx)(Q,{contactChannels:e.channels,availableChannels:a,a2aEnabled:o,onSetupChannel:f,onRevokeChannel:m})}),(0,K.jsx)(u,{open:b,title:`Delete ${e.displayName}?`,message:`This will permanently delete this contact and all their channels. This action cannot be undone.`,confirmLabel:`Delete`,destructive:!0,onConfirm:async()=>{x(!1),await l()},onCancel:()=>x(!1)})]})}function Pe(e){return(0,K.jsx)($,{...e},`${e.survivor.id}:${e.open?`open`:`closed`}`)}function $({open:e,survivor:t,candidates:n,pending:r,errorMessage:i,onMerge:a,onClose:o}){let[l,u]=(0,G.useState)(``),[d,f]=(0,G.useState)(null);(0,G.useEffect)(()=>{d&&!n.some(e=>e.id===d)&&f(null)},[n,d]);let p=(0,G.useMemo)(()=>{let e=l.trim().toLowerCase();return e?n.filter(t=>t.displayName.toLowerCase().includes(e)):n},[n,l]),h=d?n.find(e=>e.id===d)??null:null,g=ze(t);return(0,K.jsx)(m.Root,{open:e,onOpenChange:e=>{!e&&!r&&o()},children:(0,K.jsxs)(m.Content,{size:`md`,children:[(0,K.jsxs)(m.Header,{children:[(0,K.jsx)(m.Title,{icon:W,children:h?`Merge "${h.displayName}" into ${g}?`:`Merge another contact into ${g}`}),(0,K.jsx)(m.Description,{children:h?`Channels and notes from the merged contact will move over. The merged contact will be deleted.`:`The contact you pick will be deleted. Its channels and notes will be added to this one.`})]}),(0,K.jsxs)(m.Body,{className:`flex flex-col gap-3`,children:[h?(0,K.jsx)(Le,{survivor:t,donor:h}):n.length===0?(0,K.jsx)(Re,{}):(0,K.jsx)(Fe,{search:l,onSearch:u,candidates:p,onPick:f}),i?(0,K.jsx)(c,{as:`p`,variant:`body-small-default`,className:`text-(--system-negative-strong)`,role:`alert`,children:i}):null]}),(0,K.jsx)(m.Footer,{children:h?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(s,{variant:`outlined`,onClick:()=>f(null),disabled:r,leftIcon:(0,K.jsx)(N,{"aria-hidden":!0}),children:`Back`}),(0,K.jsx)(s,{variant:`danger`,onClick:()=>a(h.id),disabled:r,children:r?`Merging…`:`Merge`})]}):(0,K.jsx)(s,{variant:`outlined`,onClick:o,disabled:r,children:`Cancel`})})]})})}function Fe({search:e,onSearch:t,candidates:n,onPick:r}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(p,{type:`text`,value:e,onChange:e=>t(e.target.value),placeholder:`Search contacts`,leftIcon:(0,K.jsx)(j,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}),(0,K.jsx)(`div`,{className:`flex max-h-[320px] min-h-[120px] flex-col gap-1 overflow-y-auto`,role:`listbox`,"aria-label":`Select a contact to merge`,children:n.length===0?(0,K.jsx)(c,{as:`p`,variant:`body-small-default`,className:`px-3 py-4 text-center text-(--content-tertiary)`,children:`No matching contacts`}):n.map(e=>(0,K.jsx)(Ie,{contact:e,onPick:()=>r(e.id)},e.id))})]})}function Ie({contact:e,onPick:t}){let n=Ue(e).join(` | `)||void 0;return(0,K.jsx)(f,{asChild:!0,label:``,children:(0,K.jsx)(`button`,{type:`button`,onClick:t,role:`option`,"aria-selected":`false`,className:`flex h-auto w-full items-center gap-2 rounded-[6px] px-[8px] py-2 text-left`,children:(0,K.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,K.jsx)(`span`,{className:`truncate text-body-medium-default`,children:e.displayName}),n?(0,K.jsx)(`span`,{className:`truncate text-body-small-default text-(--content-tertiary)`,children:n}):null]})})})}function Le({survivor:e,donor:t}){let n=ze(e),{moved:r,duplicates:i}=He(e,t);return(0,K.jsxs)(`ul`,{className:`flex flex-col gap-2 text-body-medium-lighter text-(--content-secondary)`,children:[(0,K.jsxs)(`li`,{children:[(0,K.jsxs)(`span`,{className:`text-(--content-default)`,children:[`“`,t.displayName,`”`]}),` `,`will be deleted.`]}),(0,K.jsx)(`li`,{children:r.length===0?`No new channels will move to ${n}.`:`${r.length} channel${r.length===1?``:`s`} will move to ${n}: ${r.map(e=>Ve(e.type)).join(`, `)}.`}),i.length>0?(0,K.jsxs)(`li`,{className:`text-(--content-tertiary)`,children:[i.length,` duplicate channel`,i.length===1?``:`s`,` already on `,n,` `,`(skipped).`]}):null,t.notes?(0,K.jsx)(`li`,{children:`Notes from the merged contact will be appended.`}):null,(0,K.jsx)(`li`,{className:`text-(--content-tertiary)`,children:`This cannot be undone.`})]})}function Re(){return(0,K.jsx)(c,{as:`p`,variant:`body-medium-lighter`,className:`px-3 py-6 text-center text-(--content-tertiary)`,children:`No other contacts available to merge.`})}function ze(e){return e.role===`guardian`?!e.displayName||e.displayName.startsWith(`vellum-principal-`)?`you`:`${e.displayName} (you)`:e.displayName||`this contact`}var Be={slack:`Slack`,telegram:`Telegram`,phone:`Phone`,email:`Email`,whatsapp:`WhatsApp`};function Ve(e){return Be[e.toLowerCase()]??e}function He(e,t){let n=[],r=[];for(let i of t.channels)i.status!==`revoked`&&(e.channels.some(e=>e.type===i.type&&e.address.toLowerCase()===i.address.toLowerCase())?r.push(i):n.push(i));return{moved:n,duplicates:r}}function Ue(e){let t=new Set,n=[];for(let r of e.channels){if(r.status===`revoked`)continue;let e=r.type.toLowerCase();t.has(e)||(t.add(e),n.push(Be[e]??r.type))}return n}function We({loading:e,guardian:t,assistantName:n,regularContacts:r,selection:i,onSelect:a,onAddContact:o,addingContact:c=!1}){let[u,d]=(0,G.useState)(``),f=u.trim()?r.filter(e=>e.displayName.toLowerCase().includes(u.trim().toLowerCase())):r;return(0,K.jsx)(l,{className:`h-full`,children:(0,K.jsxs)(`div`,{className:`flex h-full min-w-0 flex-col gap-4`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:`Entries`}),(0,K.jsx)(s,{type:`button`,variant:`ghost`,iconOnly:c?(0,K.jsx)(b,{className:`animate-spin`,"aria-hidden":!0}):(0,K.jsx)(L,{"aria-hidden":!0}),onClick:o,disabled:c,"aria-label":`Add contact`,tintColor:`var(--content-secondary)`})]}),(0,K.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[t?(0,K.jsx)(Ge,{name:t.displayName?`${t.displayName} (You)`:`You`,role:t.role,channelTypes:t.channelTypes,selected:i?.kind===`contact`&&i.contactId===t.id,onClick:()=>a({kind:`contact`,contactId:t.id}),trailingIcon:`pencil`}):null,(0,K.jsx)(Ge,{name:n?.trim()||`Your Assistant`,role:`assistant`,selected:i?.kind===`assistant`,onClick:()=>a({kind:`assistant`}),trailingIcon:`more`})]}),(0,K.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--border-base)`}}),r.length>0?(0,K.jsx)(p,{type:`text`,value:u,onChange:e=>d(e.target.value),placeholder:`Search Contacts`,leftIcon:(0,K.jsx)(j,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0}):null,r.length>0?(0,K.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[f.map(e=>(0,K.jsx)(Ge,{name:e.displayName,role:e.role,contactType:e.contactType,channelTypes:e.channelTypes,selected:i?.kind===`contact`&&i.contactId===e.id,onClick:()=>a({kind:`contact`,contactId:e.id}),trailingIcon:`more`},e.id)),f.length===0?(0,K.jsx)(`p`,{className:`px-3 py-4 text-center text-body-small-default`,style:{color:`var(--content-tertiary)`},children:`No matching contacts`}):null]}):e?null:(0,K.jsx)(s,{type:`button`,variant:`ghost`,onClick:o,disabled:c,tintColor:`var(--primary-base)`,leftIcon:c?(0,K.jsx)(b,{className:`animate-spin`,"aria-hidden":!0}):(0,K.jsx)(F,{"aria-hidden":!0}),children:`Add Contact`})]})})}function Ge({name:e,role:t,contactType:n,channelTypes:r,selected:i,onClick:a,trailingIcon:o}){let s=r&&r.length>0?r.join(` | `):void 0;return(0,K.jsx)(f,{asChild:!0,active:i,label:``,trailingAction:o===`pencil`?(0,K.jsx)(x,{className:`h-3.5 w-3.5`,"aria-hidden":!0}):o===`more`?(0,K.jsx)(v,{className:`h-3.5 w-3.5`,"aria-hidden":!0}):void 0,children:(0,K.jsxs)(`button`,{type:`button`,onClick:a,className:`flex h-auto w-full items-center gap-2 rounded-[6px] px-[8px] py-2 text-left`,children:[(0,K.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,K.jsx)(`span`,{className:`truncate text-body-medium-default`,children:e}),s?(0,K.jsx)(`span`,{className:`truncate text-body-small-default`,style:{color:`var(--content-tertiary)`},children:s}):null]}),(0,K.jsx)(`span`,{className:`shrink-0`,children:(0,K.jsx)(q,{role:t,contactType:n})})]})})}function Ke(e){let t=e-Date.now();if(t<=0)return`Expired`;let n=Math.ceil(t/(1e3*60*60*24));return n===1?`Expires in 1 day`:`Expires in ${n} days`}function qe({open:e,assistantId:t,onClose:n}){let[r,i]=(0,G.useState)(!1),o=(0,G.useRef)(null),l=(0,G.useRef)(!1),u=a({...le({path:{assistant_id:t}})}),d=(0,G.useRef)(u.mutate);(0,G.useLayoutEffect)(()=>{d.current=u.mutate});let f=(0,G.useRef)(u.reset);(0,G.useLayoutEffect)(()=>{f.current=u.reset}),(0,G.useEffect)(()=>{e&&!l.current&&d.current({path:{assistant_id:t}}),l.current=e},[e,t]),(0,G.useEffect)(()=>()=>{o.current&&clearTimeout(o.current)},[]);let h=(0,G.useCallback)(()=>{f.current(),i(!1),o.current&&=(clearTimeout(o.current),null),n()},[n]),g=(0,G.useCallback)(e=>{navigator.clipboard.writeText(e).then(()=>{i(!0),o.current&&clearTimeout(o.current),o.current=setTimeout(()=>i(!1),2e3)})},[]),_=u.isSuccess&&u.data.token?ve({senderAssistantId:t,token:u.data.token}):``;return(0,K.jsx)(m.Root,{open:e,onOpenChange:e=>{e||h()},children:(0,K.jsxs)(m.Content,{size:`sm`,children:[(0,K.jsx)(m.Header,{children:(0,K.jsx)(m.Title,{children:`Share Connection Link`})}),(0,K.jsx)(m.Body,{children:u.isPending?(0,K.jsxs)(`div`,{className:`flex items-center gap-2 py-2 text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:[(0,K.jsx)(b,{className:`h-4 w-4 animate-spin`}),`Creating invite link…`]}):u.isError?(0,K.jsxs)(`div`,{className:`space-y-3`,children:[(0,K.jsx)(`p`,{role:`alert`,className:`!m-0 text-body-medium-lighter`,style:{color:`var(--system-negative-strong)`},children:`Failed to create invite link. Make sure A2A is enabled for your assistant.`}),(0,K.jsx)(s,{variant:`outlined`,onClick:()=>u.mutate({path:{assistant_id:t}}),children:`Try Again`})]}):u.isSuccess?(0,K.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,K.jsx)(c,{variant:`body-medium-lighter`,style:{color:`var(--content-secondary)`},children:`Share this link with another assistant owner to establish a connection.`}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(p,{type:`text`,readOnly:!0,value:_,fullWidth:!0,wrapperClassName:`flex-1`,className:`font-mono`,onFocus:e=>e.currentTarget.select()}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>g(_),"aria-label":`Copy invite link`,className:`flex h-9 w-9 shrink-0 items-center justify-center rounded-md border border-[var(--border-base)] hover:bg-[var(--surface-hover)]`,children:r?(0,K.jsx)(I,{className:`h-4 w-4`}):(0,K.jsx)(pe,{className:`h-4 w-4`})})]}),u.data.expiresAt!=null&&(0,K.jsx)(c,{variant:`body-small-default`,style:{color:`var(--content-tertiary)`},children:Ke(u.data.expiresAt)})]}):null}),(0,K.jsx)(m.Footer,{children:(0,K.jsx)(s,{variant:`outlined`,onClick:h,children:`Done`})})]})})}function Je(e){return(0,K.jsx)(Ye,{...e},e.contact.id)}function Ye({contact:e,savePending:t,verifyPending:n,mergePending:r=!1,canMerge:i=!1,availableChannels:a,a2aEnabled:o,onSave:c,onMerge:l,onSetupChannel:u,onVerifyChannel:d,onRevokeChannel:f,onGenerateInviteLink:m}){let h=e.displayName.startsWith(`vellum-principal-`),g=h?``:e.displayName,[_,v]=(0,G.useState)(g),[y,b]=(0,G.useState)(e.notes??``),x=_.trim(),S=y.trim(),C=x!==g.trim()||S!==(e.notes??``).trim(),ee=C&&!t,w=`${e.interactionCount} interaction${e.interactionCount===1?``:`s`}`;return(0,K.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,K.jsx)(V,{title:h?`You`:`${e.displayName} (You)`,accessory:(0,K.jsx)(q,{role:`guardian`}),compactAccessory:!0,subtitle:w,children:(0,K.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,K.jsx)(p,{label:`Name`,type:`text`,value:_,onChange:e=>v(e.target.value),placeholder:`Your name`,disabled:t,fullWidth:!0}),(0,K.jsx)(p,{label:`Notes`,type:`text`,value:y,onChange:e=>b(e.target.value),placeholder:`Notes about yourself which AI will take into account`,disabled:t,fullWidth:!0}),(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,K.jsx)(s,{variant:`primary`,onClick:()=>c({displayName:x||e.displayName,notes:S}),disabled:!ee,children:t?`Saving…`:`Save`}),l?(0,K.jsx)(s,{variant:`outlined`,onClick:l,disabled:!i||C||r||t,title:i?C?`Save your changes before merging`:void 0:`No other contacts available to merge`,children:r?`Merging…`:`Merge…`}):null]})]})}),(0,K.jsx)(V,{title:`Channels`,subtitle:`Once verified, your assistant will recognize you when you message from these channels.`,children:(0,K.jsx)(Q,{contactChannels:e.channels,availableChannels:a,a2aEnabled:o,setupLabel:`Enable`,verifyLoading:n,onSetupChannel:u,onVerifyChannel:d,onRevokeChannel:f})}),m?(0,K.jsx)(Y,{onClick:m}):null]})}var Xe=[{id:`slack`,label:`Slack`,subtitle:`Message your assistant from Slack`,icon:`hash`,supportsVerification:!0,setupMessages:{guardian:`I'd like to verify my identity as your guardian on Slack. Can you help me set that up?`,contact:`I'd like to verify a contact's Slack identity. Can you walk me through it?`}},{id:`telegram`,label:`Telegram`,subtitle:`Message your assistant from Telegram`,icon:`send`,supportsVerification:!0,setupMessages:{guardian:`I'd like to verify my identity as your guardian on Telegram. Can you help me set that up?`,contact:`I'd like to verify a contact's Telegram identity. Can you walk me through it?`}},{id:`phone`,label:`Phone Calling`,subtitle:`Call or text your assistant via phone`,icon:`phone`,supportsVerification:!0,setupMessages:{guardian:`I'd like to verify my identity as your guardian for phone calls. Can you help me set that up?`,contact:`I'd like to verify a contact's phone number. Can you help me set that up?`}}],Ze={slack:`I want to reach you on Slack. Let's set it up.`,telegram:`I want to reach you on Telegram. Let's set it up.`,phone:`I want to be able to call you. Let's set you up with a phone number.`},Qe=15e3,$e=[];function et({assistantId:e,onStartSetupConversation:t}){let n=de.use.a2aChannel(),o=fe.use.name(),s=r(),[c,l]=(0,G.useState)({kind:`assistant`}),[u,d]=(0,G.useState)(!1),[f,p]=(0,G.useState)(!1),[m,g]=(0,G.useState)(!1),_=o??`your assistant`,v=(0,G.useMemo)(()=>({path:{assistant_id:e}}),[e]),y=ce(v),b=(0,G.useMemo)(()=>({path:{assistant_id:e}}),[e]),x=ne(b),le=i({...oe(v),enabled:!!e,select:e=>e.contacts}),ue=i({...ae(b),enabled:!!e,refetchInterval:Qe,select:e=>e.snapshots}),D=i({...se({path:{assistant_id:e}}),enabled:!!e,queryFn:async({signal:t})=>{let{data:n,error:r,response:i}=await E({path:{assistant_id:e},signal:t,throwOnError:!1});if(!i||i.status===404)return{channels:Xe};if(!i.ok)throw r??Error(`Failed to fetch channel availability`);return n},select:e=>e.channels}).data??$e,O=le.data,k=(0,G.useMemo)(()=>O?.find(e=>e.role===`guardian`)??null,[O]),pe=(0,G.useMemo)(()=>O?.filter(e=>e.role!==`guardian`)??[],[O]),A=(0,G.useMemo)(()=>c.kind===`contact`?O?.find(e=>e.id===c.contactId)??null:null,[O,c]),j=ue.data??[],M=(0,G.useMemo)(()=>!O||!A?[]:O.filter(e=>e.id!==A.id&&e.role!==`guardian`),[O,A]),N=M.length>0,P=(0,G.useRef)(!1);(0,G.useEffect)(()=>{P.current||k&&(P.current=!0,l({kind:`contact`,contactId:k.id}))},[k]);let me=(0,G.useMemo)(()=>nt(j),[j]),F=(0,G.useCallback)(()=>s.invalidateQueries({queryKey:y}),[s,y]),I=(0,G.useCallback)(()=>s.invalidateQueries({queryKey:x}),[s,x]),L=a({mutationFn:()=>be(e,{displayName:`New Contact`}),onMutate:async()=>{await s.cancelQueries({queryKey:y})},onSuccess:e=>{s.setQueryData(y,t=>t?{...t,contacts:[...t.contacts,e]}:void 0),l({kind:`contact`,contactId:e.id})},onSettled:()=>F()}),R=a({mutationFn:t=>xe(e,t),onSuccess:(e,t)=>{s.setQueryData(y,e=>e?{...e,contacts:e.contacts.filter(e=>e.id!==t)}:void 0),l({kind:`assistant`})},onSettled:()=>F()}),z=a({mutationFn:({contactId:t,patch:n})=>be(e,{id:t,displayName:n.displayName,notes:n.notes}),onSuccess:e=>{s.setQueryData(y,t=>t?{...t,contacts:t.contacts.map(t=>t.id===e.id?e:t)}:void 0)},onSettled:()=>F()}),B=a({...ie({path:{assistant_id:e}}),onMutate:async()=>{await s.cancelQueries({queryKey:y})},onSuccess:(e,t)=>{let n=e.contact,r=t.body.mergeId;n&&(s.setQueryData(y,e=>e?{...e,contacts:e.contacts.filter(e=>e.id!==r).map(e=>e.id===n.id?n:e)}:void 0),l({kind:`contact`,contactId:n.id})),g(!1),h.success(`Contacts merged`)},onSettled:()=>F()}),he=(0,G.useCallback)(e=>{l(e),p(!1),g(!1),B.reset()},[B]),V=(0,G.useCallback)(()=>{B.reset(),g(!0)},[B]),ve=(0,G.useCallback)(()=>{B.isPending||(g(!1),B.reset())},[B]),H=a({mutationFn:async t=>{let n={path:{assistant_id:e},throwOnError:!0};t===`slack`?await S(n):t===`telegram`?await ee(n):t===`phone`&&await T(n)},onSettled:()=>I()}),U=a({...re(),onSuccess:()=>F()}),W=(0,G.useCallback)((t,n)=>{U.mutate({path:{assistant_id:e,contactChannelId:t},body:{status:`revoked`}})},[U,e]),q=a({mutationFn:t=>w({path:{assistant_id:e},body:{botToken:t},throwOnError:!0}),onSettled:()=>I()}),J=a({mutationFn:({botToken:t,appToken:n})=>te({path:{assistant_id:e},body:{botToken:t,appToken:n},throwOnError:!0}),onSettled:()=>I()}),Y=a({mutationFn:({accountSid:t,authToken:n})=>C({path:{assistant_id:e},body:{accountSid:t,authToken:n},throwOnError:!0}),onSettled:()=>I()}),X=(0,G.useCallback)(async e=>{await q.mutateAsync(e)},[q]),Ce=(0,G.useCallback)(async(e,t)=>{await J.mutateAsync({botToken:e,appToken:t})},[J]),we=(0,G.useCallback)(async(e,t)=>{await Y.mutateAsync({accountSid:e,authToken:t})},[Y]),Te=(0,G.useCallback)(()=>{L.isPending||L.mutate()},[L]),Z=(0,G.useCallback)(()=>{d(!0)},[]),Ee=(0,G.useCallback)(()=>{d(!1),F()},[F]),De=(0,G.useCallback)(e=>{t&&t(Ze[e])},[t]),Oe=(0,G.useCallback)(e=>{H.mutate(e)},[H]),ke=(0,G.useCallback)(e=>{if(!t)return;let n=D.find(t=>t.id===e)?.setupMessages.contact;n&&t(n)},[D,t]),Ae=(0,G.useCallback)(e=>{if(!t)return;let n=D.find(t=>t.id===e)?.setupMessages.guardian;n&&t(n)},[D,t]),Q=a({mutationFn:t=>ye(e,t.channelId),onSuccess:()=>F(),onError:e=>{let t=e instanceof Error?e.message:`Failed to verify channel`;h.error(t)}}),je=(0,G.useCallback)(e=>{if(!A)return;let t=A.channels.find(t=>t.type===e&&t.status!==`revoked`);t&&Q.mutate({channelId:t.id})},[A,Q]),Ne=R.isPending?R.variables:null,$=(0,G.useMemo)(()=>A?z.isPending&&z.variables?.contactId===A.id?{...A,displayName:z.variables.patch.displayName,notes:z.variables.patch.notes}:A:null,[A,z.isPending,z.variables]),Fe={loading:le.isLoading,assistantName:_,guardian:k?{id:k.id,displayName:k.displayName.startsWith(`vellum-principal-`)?``:k.displayName,role:k.role,channelTypes:at(k.channels,n)}:null,regularContacts:pe.filter(e=>e.id!==Ne).map(e=>({id:e.id,displayName:e.displayName,role:e.role,contactType:e.contactType,channelTypes:at(e.channels,n)})),selection:c,onAddContact:Te,addingContact:L.isPending};return(0,K.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-4 overflow-hidden sm:flex-row sm:gap-6`,children:[(0,K.jsx)(`div`,{className:`flex items-center sm:hidden`,children:(0,K.jsx)(ge,{onClick:()=>p(!0)})}),(0,K.jsx)(_e,{open:f,onClose:()=>p(!1),title:`Contacts`,children:(0,K.jsx)(We,{...Fe,onSelect:he})}),(0,K.jsx)(`aside`,{className:`hidden min-h-0 w-[320px] shrink-0 overflow-y-auto self-stretch sm:block`,children:(0,K.jsx)(We,{...Fe,onSelect:he})}),(0,K.jsx)(`section`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:c.kind===`assistant`||c.kind===`contact`&&c.contactId===Ne?(0,K.jsx)(Se,{assistantName:_,channels:me,pendingChannelKey:H.isPending?H.variables??null:null,onSetup:t?De:void 0,onDisconnect:Oe,onSaveTelegramToken:X,onSaveSlackConfig:Ce,onSaveTwilioCredentials:we,onGenerateInviteLink:n?Z:void 0}):$?$.role===`guardian`?(0,K.jsx)(Je,{contact:$,savePending:z.isPending,verifyPending:Q.isPending,mergePending:B.isPending,canMerge:N,availableChannels:D,a2aEnabled:n,onSave:async e=>{await z.mutateAsync({contactId:$.id,patch:e})},onMerge:V,onSetupChannel:t?Ae:void 0,onVerifyChannel:je,onRevokeChannel:W,onGenerateInviteLink:n?Z:void 0}):(0,K.jsx)(Me,{contact:$,savePending:z.isPending,deletePending:R.isPending,mergePending:B.isPending,canMerge:N,availableChannels:D,a2aEnabled:n,onSave:async e=>{await z.mutateAsync({contactId:$.id,patch:e})},onDelete:async()=>{await R.mutateAsync($.id)},onMerge:V,onSetupChannel:t?ke:void 0,onRevokeChannel:W}):(0,K.jsx)(tt,{})}),A?(0,K.jsx)(Pe,{open:m,survivor:A,candidates:M,pending:B.isPending,errorMessage:B.error instanceof Error?B.error.message:B.error?`Failed to merge contacts`:null,onMerge:t=>B.mutate({path:{assistant_id:e},body:{keepId:A.id,mergeId:t}}),onClose:ve}):null,(0,K.jsx)(qe,{open:u,assistantId:e,onClose:Ee})]})}function tt(){return(0,K.jsx)(`div`,{className:`flex h-full items-center justify-center py-16`,children:(0,K.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`Select a contact`})})}function nt(e){let t=new Map;for(let n of e)t.set(n.channel,n);return[`slack`,`telegram`,`phone`].map(e=>{let n=t.get(e);return{key:e,status:rt(n),address:n?.channelHandle??void 0}})}function rt(e){return e?e.ready||e.setupStatus===`ready`?`ready`:e.setupStatus===`incomplete`?`incomplete`:`not_configured`:`not_configured`}var it={slack:`Slack`,telegram:`Telegram`,phone:`Phone`,email:`Email`,whatsapp:`WhatsApp`,a2a:`A2A`};function at(e,t){let n=new Set,r=[];for(let i of e){if(i.status===`revoked`)continue;let e=i.type.toLowerCase();n.has(e)||e===`a2a`&&!t||(n.add(e),r.push(it[e]??i.type))}return r}function ot(){let e=n(),t=he();return(0,K.jsx)(et,{assistantId:t,onStartSetupConversation:t=>{D.getState().setMainView(`chat`);let n=k();O.getState().setActiveConversationId(n),e(`${ue.conversation(n)}?prompt=${encodeURIComponent(t)}`)}},t)}export{ot as ContactsPageRoute};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{d as n}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{i as r}from"./routes-Dk5Qeryt.js";var i=e(t(),1);function a(){let e=n();return(0,i.useEffect)(()=>{e(r.settings.general,{replace:!0})},[e]),null}export{a as DangerZoneRedirectPage};
|