@remix-run/router 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @remix-run/router v1.3.0
2
+ * @remix-run/router v1.3.1
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -8,5 +8,5 @@
8
8
  *
9
9
  * @license MIT
10
10
  */
11
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).RemixRouter={})}(this,(function(e){"use strict";function t(){return t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e},t.apply(this,arguments)}var r;e.Action=void 0,(r=e.Action||(e.Action={})).Pop="POP",r.Push="PUSH",r.Replace="REPLACE";const a="popstate";function o(e,t){if(!1===e||null==e)throw new Error(t)}function n(e,t){if(!e){"undefined"!=typeof console&&console.warn(t);try{throw new Error(t)}catch(e){}}}function i(e,t){return{usr:e.state,key:e.key,idx:t}}function s(e,r,a,o){return void 0===a&&(a=null),t({pathname:"string"==typeof e?e:e.pathname,search:"",hash:""},"string"==typeof r?c(r):r,{state:a,key:r&&r.key||o||Math.random().toString(36).substr(2,8)})}function l(e){let{pathname:t="/",search:r="",hash:a=""}=e;return r&&"?"!==r&&(t+="?"===r.charAt(0)?r:"?"+r),a&&"#"!==a&&(t+="#"===a.charAt(0)?a:"#"+a),t}function c(e){let t={};if(e){let r=e.indexOf("#");r>=0&&(t.hash=e.substr(r),e=e.substr(0,r));let a=e.indexOf("?");a>=0&&(t.search=e.substr(a),e=e.substr(0,a)),e&&(t.pathname=e)}return t}function d(r,c,d,u){void 0===u&&(u={});let{window:h=document.defaultView,v5Compat:f=!1}=u,p=h.history,m=e.Action.Pop,g=null,v=y();function y(){return(p.state||{idx:null}).idx}function b(){let t=e.Action.Pop,r=y();if(null!=r){let e=r-v;m=t,v=r,g&&g({action:m,location:D.location,delta:e})}else n(!1,"You are trying to block a POP navigation to a location that was not created by @remix-run/router. The block will fail silently in production, but in general you should do all navigation with the router (instead of using window.history.pushState directly) to avoid this situation.")}function w(e){let t="null"!==h.location.origin?h.location.origin:h.location.href,r="string"==typeof e?e:l(e);return o(t,"No window.location.(origin|href) available to create URL for href: "+r),new URL(r,t)}null==v&&(v=0,p.replaceState(t({},p.state,{idx:v}),""));let D={get action(){return m},get location(){return r(h,p)},listen(e){if(g)throw new Error("A history only accepts one active listener");return h.addEventListener(a,b),g=e,()=>{h.removeEventListener(a,b),g=null}},createHref:e=>c(h,e),createURL:w,encodeLocation(e){let t=w(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:function(t,r){m=e.Action.Push;let a=s(D.location,t,r);d&&d(a,t),v=y()+1;let o=i(a,v),n=D.createHref(a);try{p.pushState(o,"",n)}catch(e){h.location.assign(n)}f&&g&&g({action:m,location:D.location,delta:1})},replace:function(t,r){m=e.Action.Replace;let a=s(D.location,t,r);d&&d(a,t),v=y();let o=i(a,v),n=D.createHref(a);p.replaceState(o,"",n),f&&g&&g({action:m,location:D.location,delta:0})},go:e=>p.go(e)};return D}let u;function h(e,r,a){return void 0===r&&(r=[]),void 0===a&&(a=new Set),e.map(((e,n)=>{let i=[...r,n],s="string"==typeof e.id?e.id:i.join("-");if(o(!0!==e.index||!e.children,"Cannot specify children on an index route"),o(!a.has(s),'Found a route id collision on id "'+s+"\". Route id's must be globally unique within Data Router usages"),a.add(s),function(e){return!0===e.index}(e)){return t({},e,{id:s})}return t({},e,{id:s,children:e.children?h(e.children,i,a):void 0})}))}function f(e,t,r){void 0===r&&(r="/");let a=A(("string"==typeof t?c(t):t).pathname||"/",r);if(null==a)return null;let o=p(e);!function(e){e.sort(((e,t)=>e.score!==t.score?t.score-e.score:function(e,t){return e.length===t.length&&e.slice(0,-1).every(((e,r)=>e===t[r]))?e[e.length-1]-t[t.length-1]:0}(e.routesMeta.map((e=>e.childrenIndex)),t.routesMeta.map((e=>e.childrenIndex)))))}(o);let n=null;for(let e=0;null==n&&e<o.length;++e)n=b(o[e],D(a));return n}function p(e,t,r,a){void 0===t&&(t=[]),void 0===r&&(r=[]),void 0===a&&(a="");let n=(e,n,i)=>{let s={relativePath:void 0===i?e.path||"":i,caseSensitive:!0===e.caseSensitive,childrenIndex:n,route:e};s.relativePath.startsWith("/")&&(o(s.relativePath.startsWith(a),'Absolute route path "'+s.relativePath+'" nested under path "'+a+'" is not valid. An absolute child route path must start with the combined path of all its parent routes.'),s.relativePath=s.relativePath.slice(a.length));let l=L([a,s.relativePath]),c=r.concat(s);e.children&&e.children.length>0&&(o(!0!==e.index,'Index routes must not have child routes. Please remove all child routes from route path "'+l+'".'),p(e.children,t,c,l)),(null!=e.path||e.index)&&t.push({path:l,score:y(l,e.index),routesMeta:c})};return e.forEach(((e,t)=>{var r;if(""!==e.path&&null!=(r=e.path)&&r.includes("?"))for(let r of m(e.path))n(e,t,r);else n(e,t)})),t}function m(e){let t=e.split("/");if(0===t.length)return[];let[r,...a]=t,o=r.endsWith("?"),n=r.replace(/\?$/,"");if(0===a.length)return o?[n,""]:[n];let i=m(a.join("/")),s=[];return s.push(...i.map((e=>""===e?n:[n,e].join("/")))),o&&s.push(...i),s.map((t=>e.startsWith("/")&&""===t?"/":t))}!function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"}(u||(u={}));const g=/^:\w+$/,v=e=>"*"===e;function y(e,t){let r=e.split("/"),a=r.length;return r.some(v)&&(a+=-2),t&&(a+=2),r.filter((e=>!v(e))).reduce(((e,t)=>e+(g.test(t)?3:""===t?1:10)),a)}function b(e,t){let{routesMeta:r}=e,a={},o="/",n=[];for(let e=0;e<r.length;++e){let i=r[e],s=e===r.length-1,l="/"===o?t:t.slice(o.length)||"/",c=w({path:i.relativePath,caseSensitive:i.caseSensitive,end:s},l);if(!c)return null;Object.assign(a,c.params);let d=i.route;n.push({params:a,pathname:L([o,c.pathname]),pathnameBase:x(L([o,c.pathnameBase])),route:d}),"/"!==c.pathnameBase&&(o=L([o,c.pathnameBase]))}return n}function w(e,t){"string"==typeof e&&(e={path:e,caseSensitive:!1,end:!0});let[r,a]=function(e,t,r){void 0===t&&(t=!1);void 0===r&&(r=!0);R("*"===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 a=[],o="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^$?{}|()[\]]/g,"\\$&").replace(/\/:(\w+)/g,((e,t)=>(a.push(t),"/([^\\/]+)")));e.endsWith("*")?(a.push("*"),o+="*"===e||"/*"===e?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?o+="\\/*$":""!==e&&"/"!==e&&(o+="(?:(?=\\/|$))");return[new RegExp(o,t?void 0:"i"),a]}(e.path,e.caseSensitive,e.end),o=t.match(r);if(!o)return null;let n=o[0],i=n.replace(/(.)\/+$/,"$1"),s=o.slice(1);return{params:a.reduce(((e,t,r)=>{if("*"===t){let e=s[r]||"";i=n.slice(0,n.length-e.length).replace(/(.)\/+$/,"$1")}return e[t]=function(e,t){try{return decodeURIComponent(e)}catch(r){return R(!1,'The value for the URL param "'+t+'" will not be decoded because the string "'+e+'" is a malformed URL segment. This is probably due to a bad percent encoding ('+r+")."),e}}(s[r]||"",t),e}),{}),pathname:n,pathnameBase:i,pattern:e}}function D(e){try{return decodeURI(e)}catch(t){return R(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent encoding ('+t+")."),e}}function A(e,t){if("/"===t)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let r=t.endsWith("/")?t.length-1:t.length,a=e.charAt(r);return a&&"/"!==a?null:e.slice(r)||"/"}function R(e,t){if(!e){"undefined"!=typeof console&&console.warn(t);try{throw new Error(t)}catch(e){}}}function E(e,t){void 0===t&&(t="/");let{pathname:r,search:a="",hash:o=""}="string"==typeof e?c(e):e,n=r?r.startsWith("/")?r:function(e,t){let r=t.replace(/\/+$/,"").split("/");return e.split("/").forEach((e=>{".."===e?r.length>1&&r.pop():"."!==e&&r.push(e)})),r.length>1?r.join("/"):"/"}(r,t):t;return{pathname:n,search:k(a),hash:C(o)}}function P(e,t,r,a){return"Cannot include a '"+e+"' character in a manually specified `to."+t+"` field ["+JSON.stringify(a)+"]. Please separate it out to the `to."+r+'` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.'}function M(e){return e.filter(((e,t)=>0===t||e.route.path&&e.route.path.length>0))}function S(e,r,a,n){let i;void 0===n&&(n=!1),"string"==typeof e?i=c(e):(i=t({},e),o(!i.pathname||!i.pathname.includes("?"),P("?","pathname","search",i)),o(!i.pathname||!i.pathname.includes("#"),P("#","pathname","hash",i)),o(!i.search||!i.search.includes("#"),P("#","search","hash",i)));let s,l=""===e||""===i.pathname,d=l?"/":i.pathname;if(n||null==d)s=a;else{let e=r.length-1;if(d.startsWith("..")){let t=d.split("/");for(;".."===t[0];)t.shift(),e-=1;i.pathname=t.join("/")}s=e>=0?r[e]:"/"}let u=E(i,s),h=d&&"/"!==d&&d.endsWith("/"),f=(l||"."===d)&&a.endsWith("/");return u.pathname.endsWith("/")||!h&&!f||(u.pathname+="/"),u}const L=e=>e.join("/").replace(/\/\/+/g,"/"),x=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),k=e=>e&&"?"!==e?e.startsWith("?")?e:"?"+e:"",C=e=>e&&"#"!==e?e.startsWith("#")?e:"#"+e:"";class U extends Error{}class j{constructor(e,t){let r;this.pendingKeysSet=new Set,this.subscribers=new Set,this.deferredKeys=[],o(e&&"object"==typeof e&&!Array.isArray(e),"defer() only accepts plain objects"),this.abortPromise=new Promise(((e,t)=>r=t)),this.controller=new AbortController;let a=()=>r(new U("Deferred data aborted"));this.unlistenAbortSignal=()=>this.controller.signal.removeEventListener("abort",a),this.controller.signal.addEventListener("abort",a),this.data=Object.entries(e).reduce(((e,t)=>{let[r,a]=t;return Object.assign(e,{[r]:this.trackPromise(r,a)})}),{}),this.init=t}trackPromise(e,t){if(!(t instanceof Promise))return t;this.deferredKeys.push(e),this.pendingKeysSet.add(e);let r=Promise.race([t,this.abortPromise]).then((t=>this.onSettle(r,e,null,t)),(t=>this.onSettle(r,e,t)));return r.catch((()=>{})),Object.defineProperty(r,"_tracked",{get:()=>!0}),r}onSettle(e,t,r,a){return this.controller.signal.aborted&&r instanceof U?(this.unlistenAbortSignal(),Object.defineProperty(e,"_error",{get:()=>r}),Promise.reject(r)):(this.pendingKeysSet.delete(t),this.done&&this.unlistenAbortSignal(),r?(Object.defineProperty(e,"_error",{get:()=>r}),this.emit(!1,t),Promise.reject(r)):(Object.defineProperty(e,"_data",{get:()=>a}),this.emit(!1,t),a))}emit(e,t){this.subscribers.forEach((r=>r(e,t)))}subscribe(e){return this.subscribers.add(e),()=>this.subscribers.delete(e)}cancel(){this.controller.abort(),this.pendingKeysSet.forEach(((e,t)=>this.pendingKeysSet.delete(t))),this.emit(!0)}async resolveData(e){let t=!1;if(!this.done){let r=()=>this.cancel();e.addEventListener("abort",r),t=await new Promise((t=>{this.subscribe((a=>{e.removeEventListener("abort",r),(a||this.done)&&t(a)}))}))}return t}get done(){return 0===this.pendingKeysSet.size}get unwrappedData(){return o(null!==this.data&&this.done,"Can only unwrap data on initialized and settled deferreds"),Object.entries(this.data).reduce(((e,t)=>{let[r,a]=t;return Object.assign(e,{[r]:T(a)})}),{})}get pendingKeys(){return Array.from(this.pendingKeysSet)}}function T(e){if(!function(e){return e instanceof Promise&&!0===e._tracked}(e))return e;if(e._error)throw e._error;return e._data}class O{constructor(e,t,r,a){void 0===a&&(a=!1),this.status=e,this.statusText=t||"",this.internal=a,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}}function _(e){return e instanceof O}const F=["post","put","patch","delete"],H=new Set(F),I=["get",...F],q=new Set(I),W=new Set([301,302,303,307,308]),$=new Set([307,308]),N={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0},B={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0},K={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},z="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,Y=!z;const J=Symbol("deferred");function G(e,t,r){void 0===r&&(r=!1);let a,o="string"==typeof e?e:l(e);if(!t||!function(e){return null!=e&&"formData"in e}(t))return{path:o};if(t.formMethod&&!ge(t.formMethod))return{path:o,error:le(405,{method:t.formMethod})};if(t.formData&&(a={formMethod:t.formMethod||"get",formAction:de(o),formEncType:t&&t.formEncType||"application/x-www-form-urlencoded",formData:t.formData},ve(a.formMethod)))return{path:o,submission:a};let n=c(o);try{let e=re(t.formData);r&&n.search&&we(n.search)&&e.append("index",""),n.search="?"+e}catch(e){return{path:o,error:le(400)}}return{path:l(n),submission:a}}function V(e,t){let r=e;if(t){let a=e.findIndex((e=>e.route.id===t));a>=0&&(r=e.slice(0,a))}return r}function X(e,t,r,a,o,n,i,s,l,c,d){let u=c?Object.values(c)[0]:l?Object.values(l)[0]:void 0,h=V(r,c?Object.keys(c)[0]:void 0).filter(((r,s)=>null!=r.route.loader&&(function(e,t,r){let a=!t||r.route.id!==t.route.id,o=void 0===e[r.route.id];return a||o}(t.loaderData,t.matches[s],r)||i.some((e=>e===r.route.id))||Z(e,t.location,t.matches[s],a,o,r,n,u)))),f=[];return d&&d.forEach(((t,r)=>{let[o,i,l]=t;if(s.includes(r))f.push([r,o,i,l]);else if(n){Z(e,o,i,a,o,i,n,u)&&f.push([r,o,i,l])}})),[h,f]}function Q(e,t){let r=e.route.path;return e.pathname!==t.pathname||r&&r.endsWith("*")&&e.params["*"]!==t.params["*"]}function Z(e,r,a,o,n,i,s,l){let c=e.createURL(r),d=a.params,u=e.createURL(n),h=i.params,f=Q(a,i)||c.toString()===u.toString()||c.search!==u.search||s;if(i.route.shouldRevalidate){let e=i.route.shouldRevalidate(t({currentUrl:c,currentParams:d,nextUrl:u,nextParams:h},o,{actionResult:l,defaultShouldRevalidate:f}));if("boolean"==typeof e)return e}return f}async function ee(e,t,r,a,n,i,s,c){let d,h,f;void 0===n&&(n="/"),void 0===i&&(i=!1),void 0===s&&(s=!1);let p=new Promise(((e,t)=>f=t)),m=()=>f();t.signal.addEventListener("abort",m);try{let a=r.route[e];o(a,"Could not find the "+e+' to run on the "'+r.route.id+'" route'),h=await Promise.race([a({request:t,params:r.params,context:c}),p]),o(void 0!==h,"You defined "+("action"===e?"an action":"a loader")+' for route "'+r.route.id+"\" but didn't return anything from your `"+e+"` function. Please return a value or `null`.")}catch(e){d=u.error,h=e}finally{t.signal.removeEventListener("abort",m)}if(pe(h)){let e,c=h.status;if(W.has(c)){let e=h.headers.get("Location");if(o(e,"Redirects returned/thrown from loaders/actions must have a Location header"),/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i.test(e)){if(!i){let r=new URL(t.url),a=e.startsWith("//")?new URL(r.protocol+e):new URL(e);a.origin===r.origin&&(e=a.pathname+a.search+a.hash)}}else{let i=S(e,M(a.slice(0,a.indexOf(r)+1)).map((e=>e.pathnameBase)),new URL(t.url).pathname);if(o(l(i),"Unable to resolve redirect location: "+e),n){let e=i.pathname;i.pathname="/"===e?n:L([n,e])}e=l(i)}if(i)throw h.headers.set("Location",e),h;return{type:u.redirect,status:c,location:e,revalidate:null!==h.headers.get("X-Remix-Revalidate")}}if(s)throw{type:d||u.data,response:h};let f=h.headers.get("Content-Type");return e=f&&/\bapplication\/json\b/.test(f)?await h.json():await h.text(),d===u.error?{type:d,error:new O(c,h.statusText,e),headers:h.headers}:{type:u.data,data:e,statusCode:h.status,headers:h.headers}}return d===u.error?{type:d,error:h}:h instanceof j?{type:u.deferred,deferredData:h}:{type:u.data,data:h}}function te(e,t,r,a){let o=e.createURL(de(t)).toString(),n={signal:r};if(a&&ve(a.formMethod)){let{formMethod:e,formEncType:t,formData:r}=a;n.method=e.toUpperCase(),n.body="application/x-www-form-urlencoded"===t?re(r):r}return new Request(o,n)}function re(e){let t=new URLSearchParams;for(let[r,a]of e.entries())o("string"==typeof a,'File inputs are not supported with encType "application/x-www-form-urlencoded", please use "multipart/form-data" instead.'),t.append(r,a);return t}function ae(e,t,r,a,n){let i,s={},l=null,c=!1,d={};return r.forEach(((r,u)=>{let h=t[u].route.id;if(o(!fe(r),"Cannot handle redirect results in processLoaderData"),he(r)){let t=ie(e,h),o=r.error;a&&(o=Object.values(a)[0],a=void 0),l=l||{},null==l[t.route.id]&&(l[t.route.id]=o),s[h]=void 0,c||(c=!0,i=_(r.error)?r.error.status:500),r.headers&&(d[h]=r.headers)}else ue(r)?(n.set(h,r.deferredData),s[h]=r.deferredData.data):s[h]=r.data,null==r.statusCode||200===r.statusCode||c||(i=r.statusCode),r.headers&&(d[h]=r.headers)})),a&&(l=a,s[Object.keys(a)[0]]=void 0),{loaderData:s,errors:l,statusCode:i||200,loaderHeaders:d}}function oe(e,r,a,n,i,s,l,c){let{loaderData:d,errors:u}=ae(r,a,n,i,c);for(let r=0;r<s.length;r++){let[a,,n]=s[r];o(void 0!==l&&void 0!==l[r],"Did not find corresponding fetcher result");let i=l[r];if(he(i)){let r=ie(e.matches,n.route.id);u&&u[r.route.id]||(u=t({},u,{[r.route.id]:i.error})),e.fetchers.delete(a)}else if(fe(i))o(!1,"Unhandled fetcher revalidation redirect");else if(ue(i))o(!1,"Unhandled fetcher deferred data");else{let t={state:"idle",data:i.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0," _hasFetcherDoneAnything ":!0};e.fetchers.set(a,t)}}return{loaderData:d,errors:u}}function ne(e,r,a,o){let n=t({},r);for(let t of a){let a=t.route.id;if(r.hasOwnProperty(a)?void 0!==r[a]&&(n[a]=r[a]):void 0!==e[a]&&(n[a]=e[a]),o&&o.hasOwnProperty(a))break}return n}function ie(e,t){return(t?e.slice(0,e.findIndex((e=>e.route.id===t))+1):[...e]).reverse().find((e=>!0===e.route.hasErrorBoundary))||e[0]}function se(e){let t=e.find((e=>e.index||!e.path||"/"===e.path))||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function le(e,t){let{pathname:r,routeId:a,method:o,type:n}=void 0===t?{}:t,i="Unknown Server Error",s="Unknown @remix-run/router error";return 400===e?(i="Bad Request",s=o&&r&&a?"You made a "+o+' request to "'+r+'" but did not provide a `loader` for route "'+a+'", so there is no way to handle the request.':"defer-action"===n?"defer() is not supported in actions":"Cannot submit binary form data using GET"):403===e?(i="Forbidden",s='Route "'+a+'" does not match URL "'+r+'"'):404===e?(i="Not Found",s='No route matches URL "'+r+'"'):405===e&&(i="Method Not Allowed",o&&r&&a?s="You made a "+o.toUpperCase()+' request to "'+r+'" but did not provide an `action` for route "'+a+'", so there is no way to handle the request.':o&&(s='Invalid request method "'+o.toUpperCase()+'"')),new O(e||500,i,new Error(s),!0)}function ce(e){for(let t=e.length-1;t>=0;t--){let r=e[t];if(fe(r))return r}}function de(e){return l(t({},"string"==typeof e?c(e):e,{hash:""}))}function ue(e){return e.type===u.deferred}function he(e){return e.type===u.error}function fe(e){return(e&&e.type)===u.redirect}function pe(e){return null!=e&&"number"==typeof e.status&&"string"==typeof e.statusText&&"object"==typeof e.headers&&void 0!==e.body}function me(e){if(!pe(e))return!1;let t=e.status,r=e.headers.get("Location");return t>=300&&t<=399&&null!=r}function ge(e){return q.has(e)}function ve(e){return H.has(e)}async function ye(e,t,r,a,o,n){for(let i=0;i<r.length;i++){let s=r[i],l=t[i],c=e.find((e=>e.route.id===l.route.id)),d=null!=c&&!Q(c,l)&&void 0!==(n&&n[l.route.id]);ue(s)&&(o||d)&&await be(s,a,o).then((e=>{e&&(r[i]=e||r[i])}))}}async function be(e,t,r){if(void 0===r&&(r=!1),!await e.deferredData.resolveData(t)){if(r)try{return{type:u.data,data:e.deferredData.unwrappedData}}catch(e){return{type:u.error,error:e}}return{type:u.data,data:e.deferredData.data}}}function we(e){return new URLSearchParams(e).getAll("index").some((e=>""===e))}function De(e,t){let{route:r,pathname:a,params:o}=e;return{id:r.id,pathname:a,params:o,data:t[r.id],handle:r.handle}}function Ae(e,t){let r="string"==typeof t?c(t).search:t.search;if(e[e.length-1].route.index&&we(r||""))return e[e.length-1];let a=M(e);return a[a.length-1]}e.AbortedDeferredError=U,e.ErrorResponse=O,e.IDLE_BLOCKER=K,e.IDLE_FETCHER=B,e.IDLE_NAVIGATION=N,e.UNSAFE_DEFERRED_SYMBOL=J,e.UNSAFE_DeferredData=j,e.UNSAFE_convertRoutesToDataRoutes=h,e.UNSAFE_getPathContributingMatches=M,e.createBrowserHistory=function(e){return void 0===e&&(e={}),d((function(e,t){let{pathname:r,search:a,hash:o}=e.location;return s("",{pathname:r,search:a,hash:o},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}),(function(e,t){return"string"==typeof t?t:l(t)}),null,e)},e.createHashHistory=function(e){return void 0===e&&(e={}),d((function(e,t){let{pathname:r="/",search:a="",hash:o=""}=c(e.location.hash.substr(1));return s("",{pathname:r,search:a,hash:o},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}),(function(e,t){let r=e.document.querySelector("base"),a="";if(r&&r.getAttribute("href")){let t=e.location.href,r=t.indexOf("#");a=-1===r?t:t.slice(0,r)}return a+"#"+("string"==typeof t?t:l(t))}),(function(e,t){n("/"===e.pathname.charAt(0),"relative pathnames are not supported in hash history.push("+JSON.stringify(t)+")")}),e)},e.createMemoryHistory=function(t){void 0===t&&(t={});let r,{initialEntries:a=["/"],initialIndex:o,v5Compat:i=!1}=t;r=a.map(((e,t)=>m(e,"string"==typeof e?null:e.state,0===t?"default":void 0)));let d=f(null==o?r.length-1:o),u=e.Action.Pop,h=null;function f(e){return Math.min(Math.max(e,0),r.length-1)}function p(){return r[d]}function m(e,t,a){void 0===t&&(t=null);let o=s(r?p().pathname:"/",e,t,a);return n("/"===o.pathname.charAt(0),"relative pathnames are not supported in memory history: "+JSON.stringify(e)),o}function g(e){return"string"==typeof e?e:l(e)}return{get index(){return d},get action(){return u},get location(){return p()},createHref:g,createURL:e=>new URL(g(e),"http://localhost"),encodeLocation(e){let t="string"==typeof e?c(e):e;return{pathname:t.pathname||"",search:t.search||"",hash:t.hash||""}},push(t,a){u=e.Action.Push;let o=m(t,a);d+=1,r.splice(d,r.length,o),i&&h&&h({action:u,location:o,delta:1})},replace(t,a){u=e.Action.Replace;let o=m(t,a);r[d]=o,i&&h&&h({action:u,location:o,delta:0})},go(t){u=e.Action.Pop;let a=f(d+t),o=r[a];d=a,h&&h({action:u,location:o,delta:t})},listen:e=>(h=e,()=>{h=null})}},e.createPath=l,e.createRouter=function(r){o(r.routes.length>0,"You must provide a non-empty routes array to createRouter");let a=h(r.routes),n=null,i=new Set,l=null,c=null,d=null,p=null!=r.hydrationData,m=f(a,r.history.location,r.basename),g=null;if(null==m){let e=le(404,{pathname:r.history.location.pathname}),{matches:t,route:o}=se(a);m=t,g={[o.id]:e}}let v,y,b=!m.some((e=>e.route.loader))||null!=r.hydrationData,w={historyAction:r.history.action,location:r.history.location,matches:m,initialized:b,navigation:N,restoreScrollPosition:null==r.hydrationData&&null,preventScrollReset:!1,revalidation:"idle",loaderData:r.hydrationData&&r.hydrationData.loaderData||{},actionData:r.hydrationData&&r.hydrationData.actionData||null,errors:r.hydrationData&&r.hydrationData.errors||g,fetchers:new Map,blockers:new Map},D=e.Action.Pop,A=!1,E=!1,P=!1,M=[],S=[],L=new Map,x=0,k=-1,C=new Map,U=new Set,j=new Map,T=new Map,O=null,_=new Map,F=!1;function H(e){w=t({},w,e),i.forEach((e=>e(w)))}function I(a,o){var n,i;let s,l=null!=w.actionData&&null!=w.navigation.formMethod&&ve(w.navigation.formMethod)&&"loading"===w.navigation.state&&!0!==(null==(n=a.state)?void 0:n._isRedirect);s=o.actionData?Object.keys(o.actionData).length>0?o.actionData:null:l?w.actionData:null;let c=o.loaderData?ne(w.loaderData,o.loaderData,o.matches||[],o.errors):w.loaderData;for(let[e]of _)me(e);let d=!0===A||null!=w.navigation.formMethod&&ve(w.navigation.formMethod)&&!0!==(null==(i=a.state)?void 0:i._isRedirect);H(t({},o,{actionData:s,loaderData:c,historyAction:D,location:a,initialized:!0,navigation:N,revalidation:"idle",restoreScrollPosition:Ee(a,o.matches||w.matches),preventScrollReset:d,blockers:new Map(w.blockers)})),E||D===e.Action.Pop||(D===e.Action.Push?r.history.push(a,a.state):D===e.Action.Replace&&r.history.replace(a,a.state)),D=e.Action.Pop,A=!1,E=!1,P=!1,M=[],S=[]}async function q(n,i,s){y&&y.abort(),y=null,D=n,E=!0===(s&&s.startUninterruptedRevalidation),function(e,t){if(l&&c&&d){let r=t.map((e=>De(e,w.loaderData))),a=c(e,r)||e.key;l[a]=d()}}(w.location,w.matches),A=!0===(s&&s.preventScrollReset);let h=s&&s.overrideNavigation,p=f(a,i,r.basename);if(!p){let e=le(404,{pathname:i.pathname}),{matches:t,route:r}=se(a);return Re(),void I(i,{matches:t,loaderData:{},errors:{[r.id]:e}})}if(m=w.location,g=i,m.pathname===g.pathname&&m.search===g.search&&m.hash!==g.hash)return void I(i,{matches:p});var m,g;y=new AbortController;let b,R,C=te(r.history,i,y.signal,s&&s.submission);if(s&&s.pendingError)R={[ie(p).route.id]:s.pendingError};else if(s&&s.submission&&ve(s.submission.formMethod)){let r=await async function(r,a,o,n,i){let s;Q(),H({navigation:t({state:"submitting",location:a},o)});let l=Ae(n,a);if(l.route.action){if(s=await ee("action",r,l,n,v.basename),r.signal.aborted)return{shortCircuited:!0}}else s={type:u.error,error:le(405,{method:r.method,pathname:a.pathname,routeId:l.route.id})};if(fe(s)){let e;return e=i&&null!=i.replace?i.replace:s.location===w.location.pathname+w.location.search,await J(w,s,{submission:o,replace:e}),{shortCircuited:!0}}if(he(s)){let t=ie(n,l.route.id);return!0!==(i&&i.replace)&&(D=e.Action.Push),{pendingActionData:{},pendingActionError:{[t.route.id]:s.error}}}if(ue(s))throw le(400,{type:"defer-action"});return{pendingActionData:{[l.route.id]:s.data}}}(C,i,s.submission,p,{replace:s.replace});if(r.shortCircuited)return;b=r.pendingActionData,R=r.pendingActionError,h=t({state:"loading",location:i},s.submission),C=new Request(C.url,{signal:C.signal})}let{shortCircuited:O,loaderData:_,errors:F}=await async function(e,a,n,i,s,l,c,d){let u=i;if(!u){u=t({state:"loading",location:a,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0},s)}let h=s||(u.formMethod&&u.formAction&&u.formData&&u.formEncType?{formMethod:u.formMethod,formAction:u.formAction,formData:u.formData,formEncType:u.formEncType}:void 0),[f,p]=X(r.history,w,n,h,a,P,M,S,c,d,j);if(Re((e=>!(n&&n.some((t=>t.route.id===e)))||f&&f.some((t=>t.route.id===e)))),0===f.length&&0===p.length)return I(a,t({matches:n,loaderData:{},errors:d||null},c?{actionData:c}:{})),{shortCircuited:!0};if(!E){p.forEach((e=>{let[t]=e,r=w.fetchers.get(t),a={state:"loading",data:r&&r.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0," _hasFetcherDoneAnything ":!0};w.fetchers.set(t,a)}));let e=c||w.actionData;H(t({navigation:u},e?0===Object.keys(e).length?{actionData:null}:{actionData:e}:{},p.length>0?{fetchers:new Map(w.fetchers)}:{}))}k=++x,p.forEach((e=>{let[t]=e;return L.set(t,y)}));let{results:m,loaderResults:g,fetcherResults:v}=await V(w.matches,n,f,p,e);if(e.signal.aborted)return{shortCircuited:!0};p.forEach((e=>{let[t]=e;return L.delete(t)}));let b=ce(m);if(b)return await J(w,b,{replace:l}),{shortCircuited:!0};let{loaderData:D,errors:A}=oe(w,n,f,g,d,p,v,T);T.forEach(((e,t)=>{e.subscribe((r=>{(r||e.done)&&T.delete(t)}))})),function(){let e=[];for(let t of U){let r=w.fetchers.get(t);o(r,"Expected fetcher: "+t),"loading"===r.state&&(U.delete(t),e.push(t))}de(e)}();let R=pe(k);return t({loaderData:D,errors:A},R||p.length>0?{fetchers:new Map(w.fetchers)}:{})}(C,i,p,h,s&&s.submission,s&&s.replace,b,R);O||(y=null,I(i,t({matches:p},b?{actionData:b}:{},{loaderData:_,errors:F})))}function W(e){return w.fetchers.get(e)||B}async function J(a,n,i){var l;let{submission:c,replace:d,isFetchActionRedirect:u}=void 0===i?{}:i;n.revalidate&&(P=!0);let h=s(a.location,n.location,t({_isRedirect:!0},u?{_isFetchActionRedirect:!0}:{}));if(o(h,"Expected a location on the redirect navigation"),z&&void 0!==(null==(l=window)?void 0:l.location)){let e=r.history.createURL(n.location).origin;if(window.location.origin!==e)return void(d?window.location.replace(n.location):window.location.assign(n.location))}y=null;let f=!0===d?e.Action.Replace:e.Action.Push,{formMethod:p,formAction:m,formEncType:g,formData:v}=a.navigation;!c&&p&&m&&v&&g&&(c={formMethod:p,formAction:m,formEncType:g,formData:v}),$.has(n.status)&&c&&ve(c.formMethod)?await q(f,h,{submission:t({},c,{formAction:n.location}),preventScrollReset:A}):await q(f,h,{overrideNavigation:{state:"loading",location:h,formMethod:c?c.formMethod:void 0,formAction:c?c.formAction:void 0,formEncType:c?c.formEncType:void 0,formData:c?c.formData:void 0},preventScrollReset:A})}async function V(e,t,a,o,n){let i=await Promise.all([...a.map((e=>ee("loader",n,e,t,v.basename))),...o.map((e=>{let[,t,a,o]=e;return ee("loader",te(r.history,t,n.signal),a,o,v.basename)}))]),s=i.slice(0,a.length),l=i.slice(a.length);return await Promise.all([ye(e,a,s,n.signal,!1,w.loaderData),ye(e,o.map((e=>{let[,,t]=e;return t})),l,n.signal,!0)]),{results:i,loaderResults:s,fetcherResults:l}}function Q(){P=!0,M.push(...Re()),j.forEach(((e,t)=>{L.has(t)&&(S.push(t),ae(t))}))}function Z(e,t,r){let a=ie(w.matches,t);re(e),H({errors:{[a.route.id]:r},fetchers:new Map(w.fetchers)})}function re(e){L.has(e)&&ae(e),j.delete(e),C.delete(e),U.delete(e),w.fetchers.delete(e)}function ae(e){let t=L.get(e);o(t,"Expected fetch controller: "+e),t.abort(),L.delete(e)}function de(e){for(let t of e){let e={state:"idle",data:W(t).data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0," _hasFetcherDoneAnything ":!0};w.fetchers.set(t,e)}}function pe(e){let t=[];for(let[r,a]of C)if(a<e){let e=w.fetchers.get(r);o(e,"Expected fetcher: "+r),"loading"===e.state&&(ae(r),C.delete(r),t.push(r))}return de(t),t.length>0}function me(e){w.blockers.delete(e),_.delete(e),O===e&&(O=null)}function ge(e,t){let r=w.blockers.get(e)||K;o("unblocked"===r.state&&"blocked"===t.state||"blocked"===r.state&&"blocked"===t.state||"blocked"===r.state&&"proceeding"===t.state||"blocked"===r.state&&"unblocked"===t.state||"proceeding"===r.state&&"unblocked"===t.state,"Invalid blocker state transition: "+r.state+" -> "+t.state),w.blockers.set(e,t),H({blockers:new Map(w.blockers)})}function we(e){let{currentLocation:t,nextLocation:r,historyAction:a}=e;if(null==O)return;let n=_.get(O);o(n,"Could not find a function for the active blocker");let i=w.blockers.get(O);return i&&"proceeding"===i.state?void 0:n({currentLocation:t,nextLocation:r,historyAction:a})?O:void 0}function Re(e){let t=[];return T.forEach(((r,a)=>{e&&!e(a)||(r.cancel(),t.push(a),T.delete(a))})),t}function Ee(e,t){if(l&&c&&d){let r=t.map((e=>De(e,w.loaderData))),a=c(e,r)||e.key,o=l[a];if("number"==typeof o)return o}return null}return v={get basename(){return r.basename},get state(){return w},get routes(){return a},initialize:function(){return n=r.history.listen((e=>{let{action:t,location:a,delta:o}=e;if(F)return void(F=!1);let n=we({currentLocation:w.location,nextLocation:a,historyAction:t});return n?(F=!0,r.history.go(-1*o),void ge(n,{state:"blocked",location:a,proceed(){ge(n,{state:"proceeding",proceed:void 0,reset:void 0,location:a}),r.history.go(o)},reset(){me(n),H({blockers:new Map(v.state.blockers)})}})):q(t,a)})),w.initialized||q(e.Action.Pop,w.location),v},subscribe:function(e){return i.add(e),()=>i.delete(e)},enableScrollRestoration:function(e,t,r){if(l=e,d=t,c=r||(e=>e.key),!p&&w.navigation===N){p=!0;let e=Ee(w.location,w.matches);null!=e&&H({restoreScrollPosition:e})}return()=>{l=null,d=null,c=null}},navigate:async function a(o,n){if("number"==typeof o)return void r.history.go(o);let{path:i,submission:l,error:c}=G(o,n),d=w.location,u=s(w.location,i,n&&n.state);u=t({},u,r.history.encodeLocation(u));let h=n&&null!=n.replace?n.replace:void 0,f=e.Action.Push;!0===h?f=e.Action.Replace:!1===h||null!=l&&ve(l.formMethod)&&l.formAction===w.location.pathname+w.location.search&&(f=e.Action.Replace);let p=n&&"preventScrollReset"in n?!0===n.preventScrollReset:void 0,m=we({currentLocation:d,nextLocation:u,historyAction:f});if(!m)return await q(f,u,{submission:l,pendingError:c,preventScrollReset:p,replace:n&&n.replace});ge(m,{state:"blocked",location:u,proceed(){ge(m,{state:"proceeding",proceed:void 0,reset:void 0,location:u}),a(o,n)},reset(){me(m),H({blockers:new Map(w.blockers)})}})},fetch:function(e,n,i,s){if(Y)throw new Error("router.fetch() was called during the server render, but it shouldn't be. You are likely calling a useFetcher() method in the body of your component. Try moving it to a useEffect or a callback.");L.has(e)&&ae(e);let l=f(a,i,r.basename);if(!l)return void Z(e,n,le(404,{pathname:i}));let{path:c,submission:d}=G(i,s,!0),u=Ae(l,c);d&&ve(d.formMethod)?async function(e,n,i,s,l,c){if(Q(),j.delete(e),!s.route.action){let t=le(405,{method:c.formMethod,pathname:i,routeId:n});return void Z(e,n,t)}let d=w.fetchers.get(e),u=t({state:"submitting"},c,{data:d&&d.data," _hasFetcherDoneAnything ":!0});w.fetchers.set(e,u),H({fetchers:new Map(w.fetchers)});let h=new AbortController,p=te(r.history,i,h.signal,c);L.set(e,h);let m=await ee("action",p,s,l,v.basename);if(p.signal.aborted)return void(L.get(e)===h&&L.delete(e));if(fe(m)){L.delete(e),U.add(e);let r=t({state:"loading"},c,{data:void 0," _hasFetcherDoneAnything ":!0});return w.fetchers.set(e,r),H({fetchers:new Map(w.fetchers)}),J(w,m,{isFetchActionRedirect:!0})}if(he(m))return void Z(e,n,m.error);if(ue(m))throw le(400,{type:"defer-action"});let g=w.navigation.location||w.location,b=te(r.history,g,h.signal),A="idle"!==w.navigation.state?f(a,w.navigation.location,r.basename):w.matches;o(A,"Didn't find any matches after fetcher action");let R=++x;C.set(e,R);let E=t({state:"loading",data:m.data},c,{" _hasFetcherDoneAnything ":!0});w.fetchers.set(e,E);let[O,_]=X(r.history,w,A,c,g,P,M,S,{[s.route.id]:m.data},void 0,j);_.filter((t=>{let[r]=t;return r!==e})).forEach((e=>{let[t]=e,r=w.fetchers.get(t),a={state:"loading",data:r&&r.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0," _hasFetcherDoneAnything ":!0};w.fetchers.set(t,a),L.set(t,h)})),H({fetchers:new Map(w.fetchers)});let{results:F,loaderResults:q,fetcherResults:W}=await V(w.matches,A,O,_,b);if(h.signal.aborted)return;C.delete(e),L.delete(e),_.forEach((e=>{let[t]=e;return L.delete(t)}));let $=ce(F);if($)return J(w,$);let{loaderData:N,errors:B}=oe(w,w.matches,O,q,void 0,_,W,T),K={state:"idle",data:m.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0," _hasFetcherDoneAnything ":!0};w.fetchers.set(e,K);let z=pe(R);"loading"===w.navigation.state&&R>k?(o(D,"Expected pending action"),y&&y.abort(),I(w.navigation.location,{matches:A,loaderData:N,errors:B,fetchers:new Map(w.fetchers)})):(H(t({errors:B,loaderData:ne(w.loaderData,N,A,B)},z?{fetchers:new Map(w.fetchers)}:{})),P=!1)}(e,n,c,u,l,d):(j.set(e,[c,u,l]),async function(e,a,n,i,s,l){let c=w.fetchers.get(e),d=t({state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0},l,{data:c&&c.data," _hasFetcherDoneAnything ":!0});w.fetchers.set(e,d),H({fetchers:new Map(w.fetchers)});let u=new AbortController,h=te(r.history,n,u.signal);L.set(e,u);let f=await ee("loader",h,i,s,v.basename);ue(f)&&(f=await be(f,h.signal,!0)||f);L.get(e)===u&&L.delete(e);if(h.signal.aborted)return;if(fe(f))return void await J(w,f);if(he(f)){let t=ie(w.matches,a);return w.fetchers.delete(e),void H({fetchers:new Map(w.fetchers),errors:{[t.route.id]:f.error}})}o(!ue(f),"Unhandled fetcher deferred data");let p={state:"idle",data:f.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0," _hasFetcherDoneAnything ":!0};w.fetchers.set(e,p),H({fetchers:new Map(w.fetchers)})}(e,n,c,u,l,d))},revalidate:function(){Q(),H({revalidation:"loading"}),"submitting"!==w.navigation.state&&("idle"!==w.navigation.state?q(D||w.historyAction,w.navigation.location,{overrideNavigation:w.navigation}):q(w.historyAction,w.location,{startUninterruptedRevalidation:!0}))},createHref:e=>r.history.createHref(e),encodeLocation:e=>r.history.encodeLocation(e),getFetcher:W,deleteFetcher:re,dispose:function(){n&&n(),i.clear(),y&&y.abort(),w.fetchers.forEach(((e,t)=>re(t))),w.blockers.forEach(((e,t)=>me(t)))},getBlocker:function(e,t){let r=w.blockers.get(e)||K;return _.get(e)!==t&&(_.set(e,t),null==O?O=e:e!==O&&R(!1,"A router only supports one blocker at a time")),r},deleteBlocker:me,_internalFetchControllers:L,_internalActiveDeferreds:T},v},e.createStaticHandler=function(e,r){o(e.length>0,"You must provide a non-empty routes array to createStaticHandler");let a=h(e),n=(r?r.basename:null)||"/";async function i(e,r,a,i,s){o(e.signal,"query()/queryRoute() requests must contain an AbortController signal");try{if(ve(e.method.toLowerCase())){let o=await async function(e,r,a,o,i){let s;if(a.route.action){if(s=await ee("action",e,a,r,n,!0,i,o),e.signal.aborted){throw new Error((i?"queryRoute":"query")+"() call aborted")}}else{let t=le(405,{method:e.method,pathname:new URL(e.url).pathname,routeId:a.route.id});if(i)throw t;s={type:u.error,error:t}}if(fe(s))throw new Response(null,{status:s.status,headers:{Location:s.location}});if(ue(s)){let e=le(400,{type:"defer-action"});if(i)throw e;s={type:u.error,error:e}}if(i){if(he(s))throw s.error;return{matches:[a],loaderData:{},actionData:{[a.route.id]:s.data},errors:null,statusCode:200,loaderHeaders:{},actionHeaders:{},activeDeferreds:null}}if(he(s)){let n=ie(r,a.route.id);return t({},await c(e,r,o,void 0,{[n.route.id]:s.error}),{statusCode:_(s.error)?s.error.status:500,actionData:null,actionHeaders:t({},s.headers?{[a.route.id]:s.headers}:{})})}let l=new Request(e.url,{headers:e.headers,redirect:e.redirect,signal:e.signal});return t({},await c(l,r,o),s.statusCode?{statusCode:s.statusCode}:{},{actionData:{[a.route.id]:s.data},actionHeaders:t({},s.headers?{[a.route.id]:s.headers}:{})})}(e,a,s||Ae(a,r),i,null!=s);return o}let o=await c(e,a,i,s);return pe(o)?o:t({},o,{actionData:null,actionHeaders:{}})}catch(e){if((l=e)&&pe(l.response)&&(l.type===u.data||u.error)){if(e.type===u.error&&!me(e.response))throw e.response;return e.response}if(me(e))return e;throw e}var l}async function c(e,r,a,o,i){let s=null!=o;if(s&&(null==o||!o.route.loader))throw le(400,{method:e.method,pathname:new URL(e.url).pathname,routeId:null==o?void 0:o.route.id});let l=(o?[o]:V(r,Object.keys(i||{})[0])).filter((e=>e.route.loader));if(0===l.length)return{matches:r,loaderData:r.reduce(((e,t)=>Object.assign(e,{[t.route.id]:null})),{}),errors:i||null,statusCode:200,loaderHeaders:{},activeDeferreds:null};let c=await Promise.all([...l.map((t=>ee("loader",e,t,r,n,!0,s,a)))]);if(e.signal.aborted){throw new Error((s?"queryRoute":"query")+"() call aborted")}let d=new Map,u=ae(r,l,c,i,d),h=new Set(l.map((e=>e.route.id)));return r.forEach((e=>{h.has(e.route.id)||(u.loaderData[e.route.id]=null)})),t({},u,{matches:r,activeDeferreds:d.size>0?Object.fromEntries(d.entries()):null})}return{dataRoutes:a,query:async function(e,r){let{requestContext:o}=void 0===r?{}:r,c=new URL(e.url),d=e.method.toLowerCase(),u=s("",l(c),null,"default"),h=f(a,u,n);if(!ge(d)&&"head"!==d){let e=le(405,{method:d}),{matches:t,route:r}=se(a);return{basename:n,location:u,matches:t,loaderData:{},actionData:null,errors:{[r.id]:e},statusCode:e.status,loaderHeaders:{},actionHeaders:{},activeDeferreds:null}}if(!h){let e=le(404,{pathname:u.pathname}),{matches:t,route:r}=se(a);return{basename:n,location:u,matches:t,loaderData:{},actionData:null,errors:{[r.id]:e},statusCode:e.status,loaderHeaders:{},actionHeaders:{},activeDeferreds:null}}let p=await i(e,u,h,o);return pe(p)?p:t({location:u,basename:n},p)},queryRoute:async function(e,t){let{routeId:r,requestContext:o}=void 0===t?{}:t,c=new URL(e.url),d=e.method.toLowerCase(),u=s("",l(c),null,"default"),h=f(a,u,n);if(!ge(d)&&"head"!==d&&"options"!==d)throw le(405,{method:d});if(!h)throw le(404,{pathname:u.pathname});let p=r?h.find((e=>e.route.id===r)):Ae(h,u);if(r&&!p)throw le(403,{pathname:u.pathname,routeId:r});if(!p)throw le(404,{pathname:u.pathname});let m=await i(e,u,h,o,p);if(pe(m))return m;let g=m.errors?Object.values(m.errors)[0]:void 0;if(void 0!==g)throw g;if(m.actionData)return Object.values(m.actionData)[0];if(m.loaderData){var v;let e=Object.values(m.loaderData)[0];return null!=(v=m.activeDeferreds)&&v[p.route.id]&&(e[J]=m.activeDeferreds[p.route.id]),e}}}},e.defer=function(e,t){return void 0===t&&(t={}),new j(e,"number"==typeof t?{status:t}:t)},e.generatePath=function(e,t){void 0===t&&(t={});let r=e;return r.endsWith("*")&&"*"!==r&&!r.endsWith("/*")&&(R(!1,'Route path "'+r+'" will be treated as if it were "'+r.replace(/\*$/,"/*")+'" because the `*` character must always follow a `/` in the pattern. To get rid of this warning, please change the route path to "'+r.replace(/\*$/,"/*")+'".'),r=r.replace(/\*$/,"/*")),r.replace(/^:(\w+)(\??)/g,((e,r,a)=>{let n=t[r];return"?"===a?null==n?"":n:(null==n&&o(!1,'Missing ":'+r+'" param'),n)})).replace(/\/:(\w+)(\??)/g,((e,r,a)=>{let n=t[r];return"?"===a?null==n?"":"/"+n:(null==n&&o(!1,'Missing ":'+r+'" param'),"/"+n)})).replace(/\?/g,"").replace(/(\/?)\*/,((e,r,a,o)=>null==t["*"]?"/*"===o?"/":"":""+r+t["*"]))},e.getStaticContextFromError=function(e,r,a){return t({},r,{statusCode:500,errors:{[r._deepestRenderedBoundaryId||e[0].id]:a}})},e.getToPathname=function(e){return""===e||""===e.pathname?"/":"string"==typeof e?c(e).pathname:e.pathname},e.invariant=o,e.isRouteErrorResponse=_,e.joinPaths=L,e.json=function(e,r){void 0===r&&(r={});let a="number"==typeof r?{status:r}:r,o=new Headers(a.headers);return o.has("Content-Type")||o.set("Content-Type","application/json; charset=utf-8"),new Response(JSON.stringify(e),t({},a,{headers:o}))},e.matchPath=w,e.matchRoutes=f,e.normalizePathname=x,e.parsePath=c,e.redirect=function(e,r){void 0===r&&(r=302);let a=r;"number"==typeof a?a={status:a}:void 0===a.status&&(a.status=302);let o=new Headers(a.headers);return o.set("Location",e),new Response(null,t({},a,{headers:o}))},e.resolvePath=E,e.resolveTo=S,e.stripBasename=A,e.warning=R,Object.defineProperty(e,"__esModule",{value:!0})}));
11
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).RemixRouter={})}(this,(function(e){"use strict";function t(){return t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e},t.apply(this,arguments)}var r;e.Action=void 0,(r=e.Action||(e.Action={})).Pop="POP",r.Push="PUSH",r.Replace="REPLACE";const a="popstate";function n(e,t){if(!1===e||null==e)throw new Error(t)}function o(e,t){if(!e){"undefined"!=typeof console&&console.warn(t);try{throw new Error(t)}catch(e){}}}function i(e,t){return{usr:e.state,key:e.key,idx:t}}function s(e,r,a,n){return void 0===a&&(a=null),t({pathname:"string"==typeof e?e:e.pathname,search:"",hash:""},"string"==typeof r?c(r):r,{state:a,key:r&&r.key||n||Math.random().toString(36).substr(2,8)})}function l(e){let{pathname:t="/",search:r="",hash:a=""}=e;return r&&"?"!==r&&(t+="?"===r.charAt(0)?r:"?"+r),a&&"#"!==a&&(t+="#"===a.charAt(0)?a:"#"+a),t}function c(e){let t={};if(e){let r=e.indexOf("#");r>=0&&(t.hash=e.substr(r),e=e.substr(0,r));let a=e.indexOf("?");a>=0&&(t.search=e.substr(a),e=e.substr(0,a)),e&&(t.pathname=e)}return t}function d(r,o,c,d){void 0===d&&(d={});let{window:u=document.defaultView,v5Compat:h=!1}=d,f=u.history,p=e.Action.Pop,m=null,g=v();function v(){return(f.state||{idx:null}).idx}function y(){p=e.Action.Pop;let t=v(),r=null==t?null:t-g;g=t,m&&m({action:p,location:w.location,delta:r})}function b(e){let t="null"!==u.location.origin?u.location.origin:u.location.href,r="string"==typeof e?e:l(e);return n(t,"No window.location.(origin|href) available to create URL for href: "+r),new URL(r,t)}null==g&&(g=0,f.replaceState(t({},f.state,{idx:g}),""));let w={get action(){return p},get location(){return r(u,f)},listen(e){if(m)throw new Error("A history only accepts one active listener");return u.addEventListener(a,y),m=e,()=>{u.removeEventListener(a,y),m=null}},createHref:e=>o(u,e),createURL:b,encodeLocation(e){let t=b(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:function(t,r){p=e.Action.Push;let a=s(w.location,t,r);c&&c(a,t),g=v()+1;let n=i(a,g),o=w.createHref(a);try{f.pushState(n,"",o)}catch(e){u.location.assign(o)}h&&m&&m({action:p,location:w.location,delta:1})},replace:function(t,r){p=e.Action.Replace;let a=s(w.location,t,r);c&&c(a,t),g=v();let n=i(a,g),o=w.createHref(a);f.replaceState(n,"",o),h&&m&&m({action:p,location:w.location,delta:0})},go:e=>f.go(e)};return w}let u;function h(e,r,a){return void 0===r&&(r=[]),void 0===a&&(a=new Set),e.map(((e,o)=>{let i=[...r,o],s="string"==typeof e.id?e.id:i.join("-");if(n(!0!==e.index||!e.children,"Cannot specify children on an index route"),n(!a.has(s),'Found a route id collision on id "'+s+"\". Route id's must be globally unique within Data Router usages"),a.add(s),function(e){return!0===e.index}(e)){return t({},e,{id:s})}return t({},e,{id:s,children:e.children?h(e.children,i,a):void 0})}))}function f(e,t,r){void 0===r&&(r="/");let a=A(("string"==typeof t?c(t):t).pathname||"/",r);if(null==a)return null;let n=p(e);!function(e){e.sort(((e,t)=>e.score!==t.score?t.score-e.score:function(e,t){return e.length===t.length&&e.slice(0,-1).every(((e,r)=>e===t[r]))?e[e.length-1]-t[t.length-1]:0}(e.routesMeta.map((e=>e.childrenIndex)),t.routesMeta.map((e=>e.childrenIndex)))))}(n);let o=null;for(let e=0;null==o&&e<n.length;++e)o=b(n[e],D(a));return o}function p(e,t,r,a){void 0===t&&(t=[]),void 0===r&&(r=[]),void 0===a&&(a="");let o=(e,o,i)=>{let s={relativePath:void 0===i?e.path||"":i,caseSensitive:!0===e.caseSensitive,childrenIndex:o,route:e};s.relativePath.startsWith("/")&&(n(s.relativePath.startsWith(a),'Absolute route path "'+s.relativePath+'" nested under path "'+a+'" is not valid. An absolute child route path must start with the combined path of all its parent routes.'),s.relativePath=s.relativePath.slice(a.length));let l=k([a,s.relativePath]),c=r.concat(s);e.children&&e.children.length>0&&(n(!0!==e.index,'Index routes must not have child routes. Please remove all child routes from route path "'+l+'".'),p(e.children,t,c,l)),(null!=e.path||e.index)&&t.push({path:l,score:y(l,e.index),routesMeta:c})};return e.forEach(((e,t)=>{var r;if(""!==e.path&&null!=(r=e.path)&&r.includes("?"))for(let r of m(e.path))o(e,t,r);else o(e,t)})),t}function m(e){let t=e.split("/");if(0===t.length)return[];let[r,...a]=t,n=r.endsWith("?"),o=r.replace(/\?$/,"");if(0===a.length)return n?[o,""]:[o];let i=m(a.join("/")),s=[];return s.push(...i.map((e=>""===e?o:[o,e].join("/")))),n&&s.push(...i),s.map((t=>e.startsWith("/")&&""===t?"/":t))}!function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"}(u||(u={}));const g=/^:\w+$/,v=e=>"*"===e;function y(e,t){let r=e.split("/"),a=r.length;return r.some(v)&&(a+=-2),t&&(a+=2),r.filter((e=>!v(e))).reduce(((e,t)=>e+(g.test(t)?3:""===t?1:10)),a)}function b(e,t){let{routesMeta:r}=e,a={},n="/",o=[];for(let e=0;e<r.length;++e){let i=r[e],s=e===r.length-1,l="/"===n?t:t.slice(n.length)||"/",c=w({path:i.relativePath,caseSensitive:i.caseSensitive,end:s},l);if(!c)return null;Object.assign(a,c.params);let d=i.route;o.push({params:a,pathname:k([n,c.pathname]),pathnameBase:L(k([n,c.pathnameBase])),route:d}),"/"!==c.pathnameBase&&(n=k([n,c.pathnameBase]))}return o}function w(e,t){"string"==typeof e&&(e={path:e,caseSensitive:!1,end:!0});let[r,a]=function(e,t,r){void 0===t&&(t=!1);void 0===r&&(r=!0);R("*"===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 a=[],n="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^$?{}|()[\]]/g,"\\$&").replace(/\/:(\w+)/g,((e,t)=>(a.push(t),"/([^\\/]+)")));e.endsWith("*")?(a.push("*"),n+="*"===e||"/*"===e?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?n+="\\/*$":""!==e&&"/"!==e&&(n+="(?:(?=\\/|$))");return[new RegExp(n,t?void 0:"i"),a]}(e.path,e.caseSensitive,e.end),n=t.match(r);if(!n)return null;let o=n[0],i=o.replace(/(.)\/+$/,"$1"),s=n.slice(1);return{params:a.reduce(((e,t,r)=>{if("*"===t){let e=s[r]||"";i=o.slice(0,o.length-e.length).replace(/(.)\/+$/,"$1")}return e[t]=function(e,t){try{return decodeURIComponent(e)}catch(r){return R(!1,'The value for the URL param "'+t+'" will not be decoded because the string "'+e+'" is a malformed URL segment. This is probably due to a bad percent encoding ('+r+")."),e}}(s[r]||"",t),e}),{}),pathname:o,pathnameBase:i,pattern:e}}function D(e){try{return decodeURI(e)}catch(t){return R(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent encoding ('+t+")."),e}}function A(e,t){if("/"===t)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let r=t.endsWith("/")?t.length-1:t.length,a=e.charAt(r);return a&&"/"!==a?null:e.slice(r)||"/"}function R(e,t){if(!e){"undefined"!=typeof console&&console.warn(t);try{throw new Error(t)}catch(e){}}}function E(e,t){void 0===t&&(t="/");let{pathname:r,search:a="",hash:n=""}="string"==typeof e?c(e):e,o=r?r.startsWith("/")?r:function(e,t){let r=t.replace(/\/+$/,"").split("/");return e.split("/").forEach((e=>{".."===e?r.length>1&&r.pop():"."!==e&&r.push(e)})),r.length>1?r.join("/"):"/"}(r,t):t;return{pathname:o,search:x(a),hash:C(n)}}function P(e,t,r,a){return"Cannot include a '"+e+"' character in a manually specified `to."+t+"` field ["+JSON.stringify(a)+"]. Please separate it out to the `to."+r+'` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.'}function S(e){return e.filter(((e,t)=>0===t||e.route.path&&e.route.path.length>0))}function M(e,r,a,o){let i;void 0===o&&(o=!1),"string"==typeof e?i=c(e):(i=t({},e),n(!i.pathname||!i.pathname.includes("?"),P("?","pathname","search",i)),n(!i.pathname||!i.pathname.includes("#"),P("#","pathname","hash",i)),n(!i.search||!i.search.includes("#"),P("#","search","hash",i)));let s,l=""===e||""===i.pathname,d=l?"/":i.pathname;if(o||null==d)s=a;else{let e=r.length-1;if(d.startsWith("..")){let t=d.split("/");for(;".."===t[0];)t.shift(),e-=1;i.pathname=t.join("/")}s=e>=0?r[e]:"/"}let u=E(i,s),h=d&&"/"!==d&&d.endsWith("/"),f=(l||"."===d)&&a.endsWith("/");return u.pathname.endsWith("/")||!h&&!f||(u.pathname+="/"),u}const k=e=>e.join("/").replace(/\/\/+/g,"/"),L=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),x=e=>e&&"?"!==e?e.startsWith("?")?e:"?"+e:"",C=e=>e&&"#"!==e?e.startsWith("#")?e:"#"+e:"";class U extends Error{}class T{constructor(e,t){let r;this.pendingKeysSet=new Set,this.subscribers=new Set,this.deferredKeys=[],n(e&&"object"==typeof e&&!Array.isArray(e),"defer() only accepts plain objects"),this.abortPromise=new Promise(((e,t)=>r=t)),this.controller=new AbortController;let a=()=>r(new U("Deferred data aborted"));this.unlistenAbortSignal=()=>this.controller.signal.removeEventListener("abort",a),this.controller.signal.addEventListener("abort",a),this.data=Object.entries(e).reduce(((e,t)=>{let[r,a]=t;return Object.assign(e,{[r]:this.trackPromise(r,a)})}),{}),this.done&&this.unlistenAbortSignal(),this.init=t}trackPromise(e,t){if(!(t instanceof Promise))return t;this.deferredKeys.push(e),this.pendingKeysSet.add(e);let r=Promise.race([t,this.abortPromise]).then((t=>this.onSettle(r,e,null,t)),(t=>this.onSettle(r,e,t)));return r.catch((()=>{})),Object.defineProperty(r,"_tracked",{get:()=>!0}),r}onSettle(e,t,r,a){return this.controller.signal.aborted&&r instanceof U?(this.unlistenAbortSignal(),Object.defineProperty(e,"_error",{get:()=>r}),Promise.reject(r)):(this.pendingKeysSet.delete(t),this.done&&this.unlistenAbortSignal(),r?(Object.defineProperty(e,"_error",{get:()=>r}),this.emit(!1,t),Promise.reject(r)):(Object.defineProperty(e,"_data",{get:()=>a}),this.emit(!1,t),a))}emit(e,t){this.subscribers.forEach((r=>r(e,t)))}subscribe(e){return this.subscribers.add(e),()=>this.subscribers.delete(e)}cancel(){this.controller.abort(),this.pendingKeysSet.forEach(((e,t)=>this.pendingKeysSet.delete(t))),this.emit(!0)}async resolveData(e){let t=!1;if(!this.done){let r=()=>this.cancel();e.addEventListener("abort",r),t=await new Promise((t=>{this.subscribe((a=>{e.removeEventListener("abort",r),(a||this.done)&&t(a)}))}))}return t}get done(){return 0===this.pendingKeysSet.size}get unwrappedData(){return n(null!==this.data&&this.done,"Can only unwrap data on initialized and settled deferreds"),Object.entries(this.data).reduce(((e,t)=>{let[r,a]=t;return Object.assign(e,{[r]:j(a)})}),{})}get pendingKeys(){return Array.from(this.pendingKeysSet)}}function j(e){if(!function(e){return e instanceof Promise&&!0===e._tracked}(e))return e;if(e._error)throw e._error;return e._data}class O{constructor(e,t,r,a){void 0===a&&(a=!1),this.status=e,this.statusText=t||"",this.internal=a,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}}function _(e){return null!=e&&"number"==typeof e.status&&"string"==typeof e.statusText&&"boolean"==typeof e.internal&&"data"in e}const F=["post","put","patch","delete"],H=new Set(F),I=["get",...F],q=new Set(I),W=new Set([301,302,303,307,308]),$=new Set([307,308]),N={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0},B={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0},K={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},z="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,Y=!z;const J=Symbol("deferred");function V(e,t,r){void 0===r&&(r=!1);let a,n="string"==typeof e?e:l(e);if(!t||!function(e){return null!=e&&"formData"in e}(t))return{path:n};if(t.formMethod&&!ge(t.formMethod))return{path:n,error:le(405,{method:t.formMethod})};if(t.formData&&(a={formMethod:t.formMethod||"get",formAction:de(n),formEncType:t&&t.formEncType||"application/x-www-form-urlencoded",formData:t.formData},ve(a.formMethod)))return{path:n,submission:a};let o=c(n),i=re(t.formData);return r&&o.search&&we(o.search)&&i.append("index",""),o.search="?"+i,{path:l(o),submission:a}}function G(e,t){let r=e;if(t){let a=e.findIndex((e=>e.route.id===t));a>=0&&(r=e.slice(0,a))}return r}function X(e,r,a,n,o,i,s,l,c,d,u){let h=d?Object.values(d)[0]:c?Object.values(c)[0]:void 0,f=e.createURL(r.location),p=e.createURL(o),m=i||f.toString()===p.toString()||f.search!==p.search,g=d?Object.keys(d)[0]:void 0,v=G(a,g).filter(((e,a)=>{if(null==e.route.loader)return!1;if(function(e,t,r){let a=!t||r.route.id!==t.route.id,n=void 0===e[r.route.id];return a||n}(r.loaderData,r.matches[a],e)||s.some((t=>t===e.route.id)))return!0;let o=r.matches[a],i=e;return Z(e,t({currentUrl:f,currentParams:o.params,nextUrl:p,nextParams:i.params},n,{actionResult:h,defaultShouldRevalidate:m||Q(o,i)}))})),y=[];return u&&u.forEach(((e,o)=>{if(a.some((t=>t.route.id===e.routeId)))if(l.includes(o))y.push(t({key:o},e));else{Z(e.match,t({currentUrl:f,currentParams:r.matches[r.matches.length-1].params,nextUrl:p,nextParams:a[a.length-1].params},n,{actionResult:h,defaultShouldRevalidate:m}))&&y.push(t({key:o},e))}})),[v,y]}function Q(e,t){let r=e.route.path;return e.pathname!==t.pathname||null!=r&&r.endsWith("*")&&e.params["*"]!==t.params["*"]}function Z(e,t){if(e.route.shouldRevalidate){let r=e.route.shouldRevalidate(t);if("boolean"==typeof r)return r}return t.defaultShouldRevalidate}async function ee(e,t,r,a,o,i,s,c){let d,h,f;void 0===o&&(o="/"),void 0===i&&(i=!1),void 0===s&&(s=!1);let p=new Promise(((e,t)=>f=t)),m=()=>f();t.signal.addEventListener("abort",m);try{let a=r.route[e];n(a,"Could not find the "+e+' to run on the "'+r.route.id+'" route'),h=await Promise.race([a({request:t,params:r.params,context:c}),p]),n(void 0!==h,"You defined "+("action"===e?"an action":"a loader")+' for route "'+r.route.id+"\" but didn't return anything from your `"+e+"` function. Please return a value or `null`.")}catch(e){d=u.error,h=e}finally{t.signal.removeEventListener("abort",m)}if(pe(h)){let e,c=h.status;if(W.has(c)){let e=h.headers.get("Location");if(n(e,"Redirects returned/thrown from loaders/actions must have a Location header"),/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i.test(e)){if(!i){let r=new URL(t.url),a=e.startsWith("//")?new URL(r.protocol+e):new URL(e);a.origin===r.origin&&(e=a.pathname+a.search+a.hash)}}else{let i=M(e,S(a.slice(0,a.indexOf(r)+1)).map((e=>e.pathnameBase)),new URL(t.url).pathname);if(n(l(i),"Unable to resolve redirect location: "+e),o){let e=i.pathname;i.pathname="/"===e?o:k([o,e])}e=l(i)}if(i)throw h.headers.set("Location",e),h;return{type:u.redirect,status:c,location:e,revalidate:null!==h.headers.get("X-Remix-Revalidate")}}if(s)throw{type:d||u.data,response:h};let f=h.headers.get("Content-Type");return e=f&&/\bapplication\/json\b/.test(f)?await h.json():await h.text(),d===u.error?{type:d,error:new O(c,h.statusText,e),headers:h.headers}:{type:u.data,data:e,statusCode:h.status,headers:h.headers}}return d===u.error?{type:d,error:h}:h instanceof T?{type:u.deferred,deferredData:h}:{type:u.data,data:h}}function te(e,t,r,a){let n=e.createURL(de(t)).toString(),o={signal:r};if(a&&ve(a.formMethod)){let{formMethod:e,formEncType:t,formData:r}=a;o.method=e.toUpperCase(),o.body="application/x-www-form-urlencoded"===t?re(r):r}return new Request(n,o)}function re(e){let t=new URLSearchParams;for(let[r,a]of e.entries())t.append(r,a instanceof File?a.name:a);return t}function ae(e,t,r,a,o){let i,s={},l=null,c=!1,d={};return r.forEach(((r,u)=>{let h=t[u].route.id;if(n(!fe(r),"Cannot handle redirect results in processLoaderData"),he(r)){let t=ie(e,h),n=r.error;a&&(n=Object.values(a)[0],a=void 0),l=l||{},null==l[t.route.id]&&(l[t.route.id]=n),s[h]=void 0,c||(c=!0,i=_(r.error)?r.error.status:500),r.headers&&(d[h]=r.headers)}else ue(r)?(o.set(h,r.deferredData),s[h]=r.deferredData.data):s[h]=r.data,null==r.statusCode||200===r.statusCode||c||(i=r.statusCode),r.headers&&(d[h]=r.headers)})),a&&(l=a,s[Object.keys(a)[0]]=void 0),{loaderData:s,errors:l,statusCode:i||200,loaderHeaders:d}}function ne(e,r,a,o,i,s,l,c){let{loaderData:d,errors:u}=ae(r,a,o,i,c);for(let r=0;r<s.length;r++){let{key:a,match:o}=s[r];n(void 0!==l&&void 0!==l[r],"Did not find corresponding fetcher result");let i=l[r];if(he(i)){let r=ie(e.matches,o.route.id);u&&u[r.route.id]||(u=t({},u,{[r.route.id]:i.error})),e.fetchers.delete(a)}else if(fe(i))n(!1,"Unhandled fetcher revalidation redirect");else if(ue(i))n(!1,"Unhandled fetcher deferred data");else{let t={state:"idle",data:i.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0," _hasFetcherDoneAnything ":!0};e.fetchers.set(a,t)}}return{loaderData:d,errors:u}}function oe(e,r,a,n){let o=t({},r);for(let t of a){let a=t.route.id;if(r.hasOwnProperty(a)?void 0!==r[a]&&(o[a]=r[a]):void 0!==e[a]&&(o[a]=e[a]),n&&n.hasOwnProperty(a))break}return o}function ie(e,t){return(t?e.slice(0,e.findIndex((e=>e.route.id===t))+1):[...e]).reverse().find((e=>!0===e.route.hasErrorBoundary))||e[0]}function se(e){let t=e.find((e=>e.index||!e.path||"/"===e.path))||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function le(e,t){let{pathname:r,routeId:a,method:n,type:o}=void 0===t?{}:t,i="Unknown Server Error",s="Unknown @remix-run/router error";return 400===e?(i="Bad Request",n&&r&&a?s="You made a "+n+' request to "'+r+'" but did not provide a `loader` for route "'+a+'", so there is no way to handle the request.':"defer-action"===o&&(s="defer() is not supported in actions")):403===e?(i="Forbidden",s='Route "'+a+'" does not match URL "'+r+'"'):404===e?(i="Not Found",s='No route matches URL "'+r+'"'):405===e&&(i="Method Not Allowed",n&&r&&a?s="You made a "+n.toUpperCase()+' request to "'+r+'" but did not provide an `action` for route "'+a+'", so there is no way to handle the request.':n&&(s='Invalid request method "'+n.toUpperCase()+'"')),new O(e||500,i,new Error(s),!0)}function ce(e){for(let t=e.length-1;t>=0;t--){let r=e[t];if(fe(r))return r}}function de(e){return l(t({},"string"==typeof e?c(e):e,{hash:""}))}function ue(e){return e.type===u.deferred}function he(e){return e.type===u.error}function fe(e){return(e&&e.type)===u.redirect}function pe(e){return null!=e&&"number"==typeof e.status&&"string"==typeof e.statusText&&"object"==typeof e.headers&&void 0!==e.body}function me(e){if(!pe(e))return!1;let t=e.status,r=e.headers.get("Location");return t>=300&&t<=399&&null!=r}function ge(e){return q.has(e)}function ve(e){return H.has(e)}async function ye(e,t,r,a,n,o){for(let i=0;i<r.length;i++){let s=r[i],l=t[i],c=e.find((e=>e.route.id===l.route.id)),d=null!=c&&!Q(c,l)&&void 0!==(o&&o[l.route.id]);ue(s)&&(n||d)&&await be(s,a,n).then((e=>{e&&(r[i]=e||r[i])}))}}async function be(e,t,r){if(void 0===r&&(r=!1),!await e.deferredData.resolveData(t)){if(r)try{return{type:u.data,data:e.deferredData.unwrappedData}}catch(e){return{type:u.error,error:e}}return{type:u.data,data:e.deferredData.data}}}function we(e){return new URLSearchParams(e).getAll("index").some((e=>""===e))}function De(e,t){let{route:r,pathname:a,params:n}=e;return{id:r.id,pathname:a,params:n,data:t[r.id],handle:r.handle}}function Ae(e,t){let r="string"==typeof t?c(t).search:t.search;if(e[e.length-1].route.index&&we(r||""))return e[e.length-1];let a=S(e);return a[a.length-1]}e.AbortedDeferredError=U,e.ErrorResponse=O,e.IDLE_BLOCKER=K,e.IDLE_FETCHER=B,e.IDLE_NAVIGATION=N,e.UNSAFE_DEFERRED_SYMBOL=J,e.UNSAFE_DeferredData=T,e.UNSAFE_convertRoutesToDataRoutes=h,e.UNSAFE_getPathContributingMatches=S,e.createBrowserHistory=function(e){return void 0===e&&(e={}),d((function(e,t){let{pathname:r,search:a,hash:n}=e.location;return s("",{pathname:r,search:a,hash:n},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}),(function(e,t){return"string"==typeof t?t:l(t)}),null,e)},e.createHashHistory=function(e){return void 0===e&&(e={}),d((function(e,t){let{pathname:r="/",search:a="",hash:n=""}=c(e.location.hash.substr(1));return s("",{pathname:r,search:a,hash:n},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}),(function(e,t){let r=e.document.querySelector("base"),a="";if(r&&r.getAttribute("href")){let t=e.location.href,r=t.indexOf("#");a=-1===r?t:t.slice(0,r)}return a+"#"+("string"==typeof t?t:l(t))}),(function(e,t){o("/"===e.pathname.charAt(0),"relative pathnames are not supported in hash history.push("+JSON.stringify(t)+")")}),e)},e.createMemoryHistory=function(t){void 0===t&&(t={});let r,{initialEntries:a=["/"],initialIndex:n,v5Compat:i=!1}=t;r=a.map(((e,t)=>m(e,"string"==typeof e?null:e.state,0===t?"default":void 0)));let d=f(null==n?r.length-1:n),u=e.Action.Pop,h=null;function f(e){return Math.min(Math.max(e,0),r.length-1)}function p(){return r[d]}function m(e,t,a){void 0===t&&(t=null);let n=s(r?p().pathname:"/",e,t,a);return o("/"===n.pathname.charAt(0),"relative pathnames are not supported in memory history: "+JSON.stringify(e)),n}function g(e){return"string"==typeof e?e:l(e)}return{get index(){return d},get action(){return u},get location(){return p()},createHref:g,createURL:e=>new URL(g(e),"http://localhost"),encodeLocation(e){let t="string"==typeof e?c(e):e;return{pathname:t.pathname||"",search:t.search||"",hash:t.hash||""}},push(t,a){u=e.Action.Push;let n=m(t,a);d+=1,r.splice(d,r.length,n),i&&h&&h({action:u,location:n,delta:1})},replace(t,a){u=e.Action.Replace;let n=m(t,a);r[d]=n,i&&h&&h({action:u,location:n,delta:0})},go(t){u=e.Action.Pop;let a=f(d+t),n=r[a];d=a,h&&h({action:u,location:n,delta:t})},listen:e=>(h=e,()=>{h=null})}},e.createPath=l,e.createRouter=function(r){n(r.routes.length>0,"You must provide a non-empty routes array to createRouter");let a=h(r.routes),o=null,i=new Set,l=null,c=null,d=null,p=null!=r.hydrationData,m=f(a,r.history.location,r.basename),g=null;if(null==m){let e=le(404,{pathname:r.history.location.pathname}),{matches:t,route:n}=se(a);m=t,g={[n.id]:e}}let v,y,b=!m.some((e=>e.route.loader))||null!=r.hydrationData,w={historyAction:r.history.action,location:r.history.location,matches:m,initialized:b,navigation:N,restoreScrollPosition:null==r.hydrationData&&null,preventScrollReset:!1,revalidation:"idle",loaderData:r.hydrationData&&r.hydrationData.loaderData||{},actionData:r.hydrationData&&r.hydrationData.actionData||null,errors:r.hydrationData&&r.hydrationData.errors||g,fetchers:new Map,blockers:new Map},D=e.Action.Pop,A=!1,E=!1,P=!1,S=[],M=[],k=new Map,L=0,x=-1,C=new Map,U=new Set,T=new Map,j=new Map,O=null,_=new Map,F=!1;function H(e){w=t({},w,e),i.forEach((e=>e(w)))}function I(a,n){var o,i;let s,l=null!=w.actionData&&null!=w.navigation.formMethod&&ve(w.navigation.formMethod)&&"loading"===w.navigation.state&&!0!==(null==(o=a.state)?void 0:o._isRedirect);s=n.actionData?Object.keys(n.actionData).length>0?n.actionData:null:l?w.actionData:null;let c=n.loaderData?oe(w.loaderData,n.loaderData,n.matches||[],n.errors):w.loaderData;for(let[e]of _)me(e);let d=!0===A||null!=w.navigation.formMethod&&ve(w.navigation.formMethod)&&!0!==(null==(i=a.state)?void 0:i._isRedirect);H(t({},n,{actionData:s,loaderData:c,historyAction:D,location:a,initialized:!0,navigation:N,revalidation:"idle",restoreScrollPosition:Ee(a,n.matches||w.matches),preventScrollReset:d,blockers:new Map(w.blockers)})),E||D===e.Action.Pop||(D===e.Action.Push?r.history.push(a,a.state):D===e.Action.Replace&&r.history.replace(a,a.state)),D=e.Action.Pop,A=!1,E=!1,P=!1,S=[],M=[]}async function q(o,i,s){y&&y.abort(),y=null,D=o,E=!0===(s&&s.startUninterruptedRevalidation),function(e,t){if(l&&c&&d){let r=t.map((e=>De(e,w.loaderData))),a=c(e,r)||e.key;l[a]=d()}}(w.location,w.matches),A=!0===(s&&s.preventScrollReset);let h=s&&s.overrideNavigation,p=f(a,i,r.basename);if(!p){let e=le(404,{pathname:i.pathname}),{matches:t,route:r}=se(a);return Re(),void I(i,{matches:t,loaderData:{},errors:{[r.id]:e}})}if(!(m=w.location,g=i,m.pathname!==g.pathname||m.search!==g.search||m.hash===g.hash||s&&s.submission&&ve(s.submission.formMethod)))return void I(i,{matches:p});var m,g;y=new AbortController;let b,R,C=te(r.history,i,y.signal,s&&s.submission);if(s&&s.pendingError)R={[ie(p).route.id]:s.pendingError};else if(s&&s.submission&&ve(s.submission.formMethod)){let r=await async function(r,a,n,o,i){let s;Q(),H({navigation:t({state:"submitting",location:a},n)});let l=Ae(o,a);if(l.route.action){if(s=await ee("action",r,l,o,v.basename),r.signal.aborted)return{shortCircuited:!0}}else s={type:u.error,error:le(405,{method:r.method,pathname:a.pathname,routeId:l.route.id})};if(fe(s)){let e;return e=i&&null!=i.replace?i.replace:s.location===w.location.pathname+w.location.search,await J(w,s,{submission:n,replace:e}),{shortCircuited:!0}}if(he(s)){let t=ie(o,l.route.id);return!0!==(i&&i.replace)&&(D=e.Action.Push),{pendingActionData:{},pendingActionError:{[t.route.id]:s.error}}}if(ue(s))throw le(400,{type:"defer-action"});return{pendingActionData:{[l.route.id]:s.data}}}(C,i,s.submission,p,{replace:s.replace});if(r.shortCircuited)return;b=r.pendingActionData,R=r.pendingActionError,h=t({state:"loading",location:i},s.submission),C=new Request(C.url,{signal:C.signal})}let{shortCircuited:O,loaderData:_,errors:F}=await async function(e,a,o,i,s,l,c,d){let u=i;if(!u){u=t({state:"loading",location:a,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0},s)}let h=s||(u.formMethod&&u.formAction&&u.formData&&u.formEncType?{formMethod:u.formMethod,formAction:u.formAction,formData:u.formData,formEncType:u.formEncType}:void 0),[f,p]=X(r.history,w,o,h,a,P,S,M,c,d,T);if(Re((e=>!(o&&o.some((t=>t.route.id===e)))||f&&f.some((t=>t.route.id===e)))),0===f.length&&0===p.length)return I(a,t({matches:o,loaderData:{},errors:d||null},c?{actionData:c}:{})),{shortCircuited:!0};if(!E){p.forEach((e=>{let t=w.fetchers.get(e.key),r={state:"loading",data:t&&t.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0," _hasFetcherDoneAnything ":!0};w.fetchers.set(e.key,r)}));let e=c||w.actionData;H(t({navigation:u},e?0===Object.keys(e).length?{actionData:null}:{actionData:e}:{},p.length>0?{fetchers:new Map(w.fetchers)}:{}))}x=++L,p.forEach((e=>k.set(e.key,y)));let{results:m,loaderResults:g,fetcherResults:v}=await G(w.matches,o,f,p,e);if(e.signal.aborted)return{shortCircuited:!0};p.forEach((e=>k.delete(e.key)));let b=ce(m);if(b)return await J(w,b,{replace:l}),{shortCircuited:!0};let{loaderData:D,errors:A}=ne(w,o,f,g,d,p,v,j);j.forEach(((e,t)=>{e.subscribe((r=>{(r||e.done)&&j.delete(t)}))})),function(){let e=[];for(let t of U){let r=w.fetchers.get(t);n(r,"Expected fetcher: "+t),"loading"===r.state&&(U.delete(t),e.push(t))}de(e)}();let R=pe(x);return t({loaderData:D,errors:A},R||p.length>0?{fetchers:new Map(w.fetchers)}:{})}(C,i,p,h,s&&s.submission,s&&s.replace,b,R);O||(y=null,I(i,t({matches:p},b?{actionData:b}:{},{loaderData:_,errors:F})))}function W(e){return w.fetchers.get(e)||B}async function J(a,o,i){var l;let{submission:c,replace:d,isFetchActionRedirect:u}=void 0===i?{}:i;o.revalidate&&(P=!0);let h=s(a.location,o.location,t({_isRedirect:!0},u?{_isFetchActionRedirect:!0}:{}));if(n(h,"Expected a location on the redirect navigation"),z&&void 0!==(null==(l=window)?void 0:l.location)){let e=r.history.createURL(o.location).origin;if(window.location.origin!==e)return void(d?window.location.replace(o.location):window.location.assign(o.location))}y=null;let f=!0===d?e.Action.Replace:e.Action.Push,{formMethod:p,formAction:m,formEncType:g,formData:v}=a.navigation;!c&&p&&m&&v&&g&&(c={formMethod:p,formAction:m,formEncType:g,formData:v}),$.has(o.status)&&c&&ve(c.formMethod)?await q(f,h,{submission:t({},c,{formAction:o.location}),preventScrollReset:A}):await q(f,h,{overrideNavigation:{state:"loading",location:h,formMethod:c?c.formMethod:void 0,formAction:c?c.formAction:void 0,formEncType:c?c.formEncType:void 0,formData:c?c.formData:void 0},preventScrollReset:A})}async function G(e,t,a,n,o){let i=await Promise.all([...a.map((e=>ee("loader",o,e,t,v.basename))),...n.map((e=>ee("loader",te(r.history,e.path,o.signal),e.match,e.matches,v.basename)))]),s=i.slice(0,a.length),l=i.slice(a.length);return await Promise.all([ye(e,a,s,o.signal,!1,w.loaderData),ye(e,n.map((e=>e.match)),l,o.signal,!0)]),{results:i,loaderResults:s,fetcherResults:l}}function Q(){P=!0,S.push(...Re()),T.forEach(((e,t)=>{k.has(t)&&(M.push(t),ae(t))}))}function Z(e,t,r){let a=ie(w.matches,t);re(e),H({errors:{[a.route.id]:r},fetchers:new Map(w.fetchers)})}function re(e){k.has(e)&&ae(e),T.delete(e),C.delete(e),U.delete(e),w.fetchers.delete(e)}function ae(e){let t=k.get(e);n(t,"Expected fetch controller: "+e),t.abort(),k.delete(e)}function de(e){for(let t of e){let e={state:"idle",data:W(t).data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0," _hasFetcherDoneAnything ":!0};w.fetchers.set(t,e)}}function pe(e){let t=[];for(let[r,a]of C)if(a<e){let e=w.fetchers.get(r);n(e,"Expected fetcher: "+r),"loading"===e.state&&(ae(r),C.delete(r),t.push(r))}return de(t),t.length>0}function me(e){w.blockers.delete(e),_.delete(e),O===e&&(O=null)}function ge(e,t){let r=w.blockers.get(e)||K;n("unblocked"===r.state&&"blocked"===t.state||"blocked"===r.state&&"blocked"===t.state||"blocked"===r.state&&"proceeding"===t.state||"blocked"===r.state&&"unblocked"===t.state||"proceeding"===r.state&&"unblocked"===t.state,"Invalid blocker state transition: "+r.state+" -> "+t.state),w.blockers.set(e,t),H({blockers:new Map(w.blockers)})}function we(e){let{currentLocation:t,nextLocation:r,historyAction:a}=e;if(null==O)return;let o=_.get(O);n(o,"Could not find a function for the active blocker");let i=w.blockers.get(O);return i&&"proceeding"===i.state?void 0:o({currentLocation:t,nextLocation:r,historyAction:a})?O:void 0}function Re(e){let t=[];return j.forEach(((r,a)=>{e&&!e(a)||(r.cancel(),t.push(a),j.delete(a))})),t}function Ee(e,t){if(l&&c&&d){let r=t.map((e=>De(e,w.loaderData))),a=c(e,r)||e.key,n=l[a];if("number"==typeof n)return n}return null}return v={get basename(){return r.basename},get state(){return w},get routes(){return a},initialize:function(){return o=r.history.listen((e=>{let{action:t,location:a,delta:n}=e;if(F)return void(F=!1);R(null!=O&&null===n,"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 o=we({currentLocation:w.location,nextLocation:a,historyAction:t});return o&&null!=n?(F=!0,r.history.go(-1*n),void ge(o,{state:"blocked",location:a,proceed(){ge(o,{state:"proceeding",proceed:void 0,reset:void 0,location:a}),r.history.go(n)},reset(){me(o),H({blockers:new Map(v.state.blockers)})}})):q(t,a)})),w.initialized||q(e.Action.Pop,w.location),v},subscribe:function(e){return i.add(e),()=>i.delete(e)},enableScrollRestoration:function(e,t,r){if(l=e,d=t,c=r||(e=>e.key),!p&&w.navigation===N){p=!0;let e=Ee(w.location,w.matches);null!=e&&H({restoreScrollPosition:e})}return()=>{l=null,d=null,c=null}},navigate:async function a(n,o){if("number"==typeof n)return void r.history.go(n);let{path:i,submission:l,error:c}=V(n,o),d=w.location,u=s(w.location,i,o&&o.state);u=t({},u,r.history.encodeLocation(u));let h=o&&null!=o.replace?o.replace:void 0,f=e.Action.Push;!0===h?f=e.Action.Replace:!1===h||null!=l&&ve(l.formMethod)&&l.formAction===w.location.pathname+w.location.search&&(f=e.Action.Replace);let p=o&&"preventScrollReset"in o?!0===o.preventScrollReset:void 0,m=we({currentLocation:d,nextLocation:u,historyAction:f});if(!m)return await q(f,u,{submission:l,pendingError:c,preventScrollReset:p,replace:o&&o.replace});ge(m,{state:"blocked",location:u,proceed(){ge(m,{state:"proceeding",proceed:void 0,reset:void 0,location:u}),a(n,o)},reset(){me(m),H({blockers:new Map(w.blockers)})}})},fetch:function(e,o,i,s){if(Y)throw new Error("router.fetch() was called during the server render, but it shouldn't be. You are likely calling a useFetcher() method in the body of your component. Try moving it to a useEffect or a callback.");k.has(e)&&ae(e);let l=f(a,i,r.basename);if(!l)return void Z(e,o,le(404,{pathname:i}));let{path:c,submission:d}=V(i,s,!0),u=Ae(l,c);A=!0===(s&&s.preventScrollReset),d&&ve(d.formMethod)?async function(e,o,i,s,l,c){if(Q(),T.delete(e),!s.route.action){let t=le(405,{method:c.formMethod,pathname:i,routeId:o});return void Z(e,o,t)}let d=w.fetchers.get(e),u=t({state:"submitting"},c,{data:d&&d.data," _hasFetcherDoneAnything ":!0});w.fetchers.set(e,u),H({fetchers:new Map(w.fetchers)});let h=new AbortController,p=te(r.history,i,h.signal,c);k.set(e,h);let m=await ee("action",p,s,l,v.basename);if(p.signal.aborted)return void(k.get(e)===h&&k.delete(e));if(fe(m)){k.delete(e),U.add(e);let r=t({state:"loading"},c,{data:void 0," _hasFetcherDoneAnything ":!0});return w.fetchers.set(e,r),H({fetchers:new Map(w.fetchers)}),J(w,m,{isFetchActionRedirect:!0})}if(he(m))return void Z(e,o,m.error);if(ue(m))throw le(400,{type:"defer-action"});let g=w.navigation.location||w.location,b=te(r.history,g,h.signal),A="idle"!==w.navigation.state?f(a,w.navigation.location,r.basename):w.matches;n(A,"Didn't find any matches after fetcher action");let R=++L;C.set(e,R);let E=t({state:"loading",data:m.data},c,{" _hasFetcherDoneAnything ":!0});w.fetchers.set(e,E);let[O,_]=X(r.history,w,A,c,g,P,S,M,{[s.route.id]:m.data},void 0,T);_.filter((t=>t.key!==e)).forEach((e=>{let t=e.key,r=w.fetchers.get(t),a={state:"loading",data:r&&r.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0," _hasFetcherDoneAnything ":!0};w.fetchers.set(t,a),k.set(t,h)})),H({fetchers:new Map(w.fetchers)});let{results:F,loaderResults:q,fetcherResults:W}=await G(w.matches,A,O,_,b);if(h.signal.aborted)return;C.delete(e),k.delete(e),_.forEach((e=>k.delete(e.key)));let $=ce(F);if($)return J(w,$);let{loaderData:N,errors:B}=ne(w,w.matches,O,q,void 0,_,W,j),K={state:"idle",data:m.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0," _hasFetcherDoneAnything ":!0};w.fetchers.set(e,K);let z=pe(R);"loading"===w.navigation.state&&R>x?(n(D,"Expected pending action"),y&&y.abort(),I(w.navigation.location,{matches:A,loaderData:N,errors:B,fetchers:new Map(w.fetchers)})):(H(t({errors:B,loaderData:oe(w.loaderData,N,A,B)},z?{fetchers:new Map(w.fetchers)}:{})),P=!1)}(e,o,c,u,l,d):(T.set(e,{routeId:o,path:c,match:u,matches:l}),async function(e,a,o,i,s,l){let c=w.fetchers.get(e),d=t({state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0},l,{data:c&&c.data," _hasFetcherDoneAnything ":!0});w.fetchers.set(e,d),H({fetchers:new Map(w.fetchers)});let u=new AbortController,h=te(r.history,o,u.signal);k.set(e,u);let f=await ee("loader",h,i,s,v.basename);ue(f)&&(f=await be(f,h.signal,!0)||f);k.get(e)===u&&k.delete(e);if(h.signal.aborted)return;if(fe(f))return void await J(w,f);if(he(f)){let t=ie(w.matches,a);return w.fetchers.delete(e),void H({fetchers:new Map(w.fetchers),errors:{[t.route.id]:f.error}})}n(!ue(f),"Unhandled fetcher deferred data");let p={state:"idle",data:f.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0," _hasFetcherDoneAnything ":!0};w.fetchers.set(e,p),H({fetchers:new Map(w.fetchers)})}(e,o,c,u,l,d))},revalidate:function(){Q(),H({revalidation:"loading"}),"submitting"!==w.navigation.state&&("idle"!==w.navigation.state?q(D||w.historyAction,w.navigation.location,{overrideNavigation:w.navigation}):q(w.historyAction,w.location,{startUninterruptedRevalidation:!0}))},createHref:e=>r.history.createHref(e),encodeLocation:e=>r.history.encodeLocation(e),getFetcher:W,deleteFetcher:re,dispose:function(){o&&o(),i.clear(),y&&y.abort(),w.fetchers.forEach(((e,t)=>re(t))),w.blockers.forEach(((e,t)=>me(t)))},getBlocker:function(e,t){let r=w.blockers.get(e)||K;return _.get(e)!==t&&(_.set(e,t),null==O?O=e:e!==O&&R(!1,"A router only supports one blocker at a time")),r},deleteBlocker:me,_internalFetchControllers:k,_internalActiveDeferreds:j},v},e.createStaticHandler=function(e,r){n(e.length>0,"You must provide a non-empty routes array to createStaticHandler");let a=h(e),o=(r?r.basename:null)||"/";async function i(e,r,a,i,s){n(e.signal,"query()/queryRoute() requests must contain an AbortController signal");try{if(ve(e.method.toLowerCase())){let n=await async function(e,r,a,n,i){let s;if(a.route.action){if(s=await ee("action",e,a,r,o,!0,i,n),e.signal.aborted){throw new Error((i?"queryRoute":"query")+"() call aborted")}}else{let t=le(405,{method:e.method,pathname:new URL(e.url).pathname,routeId:a.route.id});if(i)throw t;s={type:u.error,error:t}}if(fe(s))throw new Response(null,{status:s.status,headers:{Location:s.location}});if(ue(s)){let e=le(400,{type:"defer-action"});if(i)throw e;s={type:u.error,error:e}}if(i){if(he(s))throw s.error;return{matches:[a],loaderData:{},actionData:{[a.route.id]:s.data},errors:null,statusCode:200,loaderHeaders:{},actionHeaders:{},activeDeferreds:null}}if(he(s)){let o=ie(r,a.route.id);return t({},await c(e,r,n,void 0,{[o.route.id]:s.error}),{statusCode:_(s.error)?s.error.status:500,actionData:null,actionHeaders:t({},s.headers?{[a.route.id]:s.headers}:{})})}let l=new Request(e.url,{headers:e.headers,redirect:e.redirect,signal:e.signal});return t({},await c(l,r,n),s.statusCode?{statusCode:s.statusCode}:{},{actionData:{[a.route.id]:s.data},actionHeaders:t({},s.headers?{[a.route.id]:s.headers}:{})})}(e,a,s||Ae(a,r),i,null!=s);return n}let n=await c(e,a,i,s);return pe(n)?n:t({},n,{actionData:null,actionHeaders:{}})}catch(e){if((l=e)&&pe(l.response)&&(l.type===u.data||u.error)){if(e.type===u.error&&!me(e.response))throw e.response;return e.response}if(me(e))return e;throw e}var l}async function c(e,r,a,n,i){let s=null!=n;if(s&&(null==n||!n.route.loader))throw le(400,{method:e.method,pathname:new URL(e.url).pathname,routeId:null==n?void 0:n.route.id});let l=(n?[n]:G(r,Object.keys(i||{})[0])).filter((e=>e.route.loader));if(0===l.length)return{matches:r,loaderData:r.reduce(((e,t)=>Object.assign(e,{[t.route.id]:null})),{}),errors:i||null,statusCode:200,loaderHeaders:{},activeDeferreds:null};let c=await Promise.all([...l.map((t=>ee("loader",e,t,r,o,!0,s,a)))]);if(e.signal.aborted){throw new Error((s?"queryRoute":"query")+"() call aborted")}let d=new Map,u=ae(r,l,c,i,d),h=new Set(l.map((e=>e.route.id)));return r.forEach((e=>{h.has(e.route.id)||(u.loaderData[e.route.id]=null)})),t({},u,{matches:r,activeDeferreds:d.size>0?Object.fromEntries(d.entries()):null})}return{dataRoutes:a,query:async function(e,r){let{requestContext:n}=void 0===r?{}:r,c=new URL(e.url),d=e.method.toLowerCase(),u=s("",l(c),null,"default"),h=f(a,u,o);if(!ge(d)&&"head"!==d){let e=le(405,{method:d}),{matches:t,route:r}=se(a);return{basename:o,location:u,matches:t,loaderData:{},actionData:null,errors:{[r.id]:e},statusCode:e.status,loaderHeaders:{},actionHeaders:{},activeDeferreds:null}}if(!h){let e=le(404,{pathname:u.pathname}),{matches:t,route:r}=se(a);return{basename:o,location:u,matches:t,loaderData:{},actionData:null,errors:{[r.id]:e},statusCode:e.status,loaderHeaders:{},actionHeaders:{},activeDeferreds:null}}let p=await i(e,u,h,n);return pe(p)?p:t({location:u,basename:o},p)},queryRoute:async function(e,t){let{routeId:r,requestContext:n}=void 0===t?{}:t,c=new URL(e.url),d=e.method.toLowerCase(),u=s("",l(c),null,"default"),h=f(a,u,o);if(!ge(d)&&"head"!==d&&"options"!==d)throw le(405,{method:d});if(!h)throw le(404,{pathname:u.pathname});let p=r?h.find((e=>e.route.id===r)):Ae(h,u);if(r&&!p)throw le(403,{pathname:u.pathname,routeId:r});if(!p)throw le(404,{pathname:u.pathname});let m=await i(e,u,h,n,p);if(pe(m))return m;let g=m.errors?Object.values(m.errors)[0]:void 0;if(void 0!==g)throw g;if(m.actionData)return Object.values(m.actionData)[0];if(m.loaderData){var v;let e=Object.values(m.loaderData)[0];return null!=(v=m.activeDeferreds)&&v[p.route.id]&&(e[J]=m.activeDeferreds[p.route.id]),e}}}},e.defer=function(e,t){return void 0===t&&(t={}),new T(e,"number"==typeof t?{status:t}:t)},e.generatePath=function(e,t){void 0===t&&(t={});let r=e;return r.endsWith("*")&&"*"!==r&&!r.endsWith("/*")&&(R(!1,'Route path "'+r+'" will be treated as if it were "'+r.replace(/\*$/,"/*")+'" because the `*` character must always follow a `/` in the pattern. To get rid of this warning, please change the route path to "'+r.replace(/\*$/,"/*")+'".'),r=r.replace(/\*$/,"/*")),r.replace(/^:(\w+)(\??)/g,((e,r,a)=>{let o=t[r];return"?"===a?null==o?"":o:(null==o&&n(!1,'Missing ":'+r+'" param'),o)})).replace(/\/:(\w+)(\??)/g,((e,r,a)=>{let o=t[r];return"?"===a?null==o?"":"/"+o:(null==o&&n(!1,'Missing ":'+r+'" param'),"/"+o)})).replace(/\?/g,"").replace(/(\/?)\*/,((e,r,a,n)=>null==t["*"]?"/*"===n?"/":"":""+r+t["*"]))},e.getStaticContextFromError=function(e,r,a){return t({},r,{statusCode:500,errors:{[r._deepestRenderedBoundaryId||e[0].id]:a}})},e.getToPathname=function(e){return""===e||""===e.pathname?"/":"string"==typeof e?c(e).pathname:e.pathname},e.invariant=n,e.isRouteErrorResponse=_,e.joinPaths=k,e.json=function(e,r){void 0===r&&(r={});let a="number"==typeof r?{status:r}:r,n=new Headers(a.headers);return n.has("Content-Type")||n.set("Content-Type","application/json; charset=utf-8"),new Response(JSON.stringify(e),t({},a,{headers:n}))},e.matchPath=w,e.matchRoutes=f,e.normalizePathname=L,e.parsePath=c,e.redirect=function(e,r){void 0===r&&(r=302);let a=r;"number"==typeof a?a={status:a}:void 0===a.status&&(a.status=302);let n=new Headers(a.headers);return n.set("Location",e),new Response(null,t({},a,{headers:n}))},e.resolvePath=E,e.resolveTo=M,e.stripBasename=A,e.warning=R,Object.defineProperty(e,"__esModule",{value:!0})}));
12
12
  //# sourceMappingURL=router.umd.min.js.map