Socket
Socket
Sign inDemoInstall

@remix-run/router

Package Overview
Dependencies
Maintainers
2
Versions
212
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@remix-run/router - npm Package Compare versions

Comparing version 0.2.0-pre.1 to 0.2.0-pre.2

6

CHANGELOG.md
# @remix-run/router
## 0.2.0-pre.2
### Patch Changes
- Capture fetcher errors at contextual route error boundaries (#8945)
## 0.2.0-pre.1

@@ -4,0 +10,0 @@

2

dist/index.d.ts

@@ -7,3 +7,3 @@ import type { BrowserHistoryOptions, HashHistoryOptions, MemoryHistoryOptions } from "./history";

export * from "./router";
export type { ActionFunction, DataRouteObject, FormEncType, FormMethod, JsonFunction, LoaderFunction, ParamParseKey, Params, PathMatch, PathPattern, RedirectFunction, RouteMatch, RouteObject, ShouldRevalidateFunction, Submission, } from "./utils";
export type { ActionFunction, ActionFunctionArgs, DataRouteObject, FormEncType, FormMethod, JsonFunction, LoaderFunction, LoaderFunctionArgs, ParamParseKey, Params, PathMatch, PathPattern, RedirectFunction, RouteMatch, RouteObject, ShouldRevalidateFunction, Submission, } from "./utils";
export { generatePath, getToPathname, invariant, isRouteErrorResponse, joinPaths, json, matchPath, matchRoutes, normalizePathname, redirect, resolvePath, resolveTo, stripBasename, warning, } from "./utils";

@@ -10,0 +10,0 @@ export type { BrowserHistory, HashHistory, History, InitialEntry, Location, MemoryHistory, Path, To, } from "./history";

/**
* @remix-run/router v0.2.0-pre.1
* @remix-run/router v0.2.0-pre.2
*

@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc.

@@ -1,4 +0,4 @@

import type { History, Location, To } from "./history";
import { History, Location, To } from "./history";
import { Action as HistoryAction } from "./history";
import type { DataRouteObject, FormEncType, FormMethod, RouteMatch, RouteObject } from "./utils";
import { DataRouteObject, FormEncType, FormMethod, RouteMatch, RouteObject } from "./utils";
/**

@@ -55,7 +55,8 @@ * Map of routeId -> data returned from a loader/action/error

*
* @param key Fetcher key
* @param href href to fetch
* @param opts Fetcher options, (method, submission, etc.)
* @param key Fetcher key
* @param routeId Route that owns the fetcher
* @param href href to fetch
* @param opts Fetcher options, (method, submission, etc.)
*/
fetch(key: string, href: string, opts?: RouterNavigateOptions): void;
fetch(key: string, routeId: string, href: string, opts?: RouterNavigateOptions): void;
/**

@@ -62,0 +63,0 @@ * Trigger a revalidation of all current route loaders and fetcher loads

/**
* @remix-run/router v0.2.0-pre.1
* @remix-run/router v0.2.0-pre.2
*

@@ -11,3 +11,3 @@ * Copyright (c) Remix Software Inc.

*/
let t;!function(t){t.Pop="POP",t.Push="PUSH",t.Replace="REPLACE"}(t||(t={}));function e(e={}){let r,{initialEntries:n=["/"],initialIndex:a,v5Compat:l=!1}=e;r=n.map(((t,e)=>f(t,null,0===e?"default":void 0)));let s=d(null==a?r.length-1:a),c=t.Pop,u=null;function d(t){return Math.min(Math.max(t,0),r.length-1)}function h(){return r[s]}function f(t,e=null,n){return o(r?h().pathname:"/",t,e,n)}return{get index(){return s},get action(){return c},get location(){return h()},createHref:t=>"string"==typeof t?t:i(t),push(e,n){c=t.Push;let a=f(e,n);s+=1,r.splice(s,r.length,a),l&&u&&u({action:c,location:a})},replace(e,n){c=t.Replace;let a=f(e,n);r[s]=a,l&&u&&u({action:c,location:a})},go(e){c=t.Pop,s=d(s+e),u&&u({action:c,location:h()})},listen:t=>(u=t,()=>{u=null})}}function r(t={}){return s((function(t,e){let{pathname:r,search:n,hash:a}=t.location;return o("",{pathname:r,search:n,hash:a},e.state?.usr||null,e.state?.key||"default")}),(function(t,e){return"string"==typeof e?e:i(e)}),null,t)}function n(t={}){return s((function(t,e){let{pathname:r="/",search:n="",hash:a=""}=l(t.location.hash.substr(1));return o("",{pathname:r,search:n,hash:a},e.state?.usr||null,e.state?.key||"default")}),(function(t,e){let r=t.document.querySelector("base"),n="";if(r&&r.getAttribute("href")){let e=t.location.href,r=e.indexOf("#");n=-1===r?e:e.slice(0,r)}return n+"#"+("string"==typeof e?e:i(e))}),(function(t,e){}),t)}function a(t){return{usr:t.state,key:t.key}}function o(t,e,r=null,n){return{pathname:"string"==typeof t?t:t.pathname,search:"",hash:"",..."string"==typeof e?l(e):e,state:r,key:e?.key||n||Math.random().toString(36).substr(2,8)}}function i({pathname:t="/",search:e="",hash:r=""}){return e&&"?"!==e&&(t+="?"===e.charAt(0)?e:"?"+e),r&&"#"!==r&&(t+="#"===r.charAt(0)?r:"#"+r),t}function l(t){let e={};if(t){let r=t.indexOf("#");r>=0&&(e.hash=t.substr(r),t=t.substr(0,r));let n=t.indexOf("?");n>=0&&(e.search=t.substr(n),t=t.substr(0,n)),t&&(e.pathname=t)}return e}function s(e,r,n,i={}){let{window:l=document.defaultView,v5Compat:s=!1}=i,c=l.history,u=t.Pop,d=null;function h(){u=t.Pop,d&&d({action:u,location:f.location})}let f={get action(){return u},get location(){return e(l,c)},listen(t){if(d)throw new Error("A history only accepts one active listener");return l.addEventListener("popstate",h),d=t,()=>{l.removeEventListener("popstate",h),d=null}},createHref:t=>r(l,t),push:function(e,r){u=t.Push;let i=o(f.location,e,r);n?.(i,e);let h=a(i),p=f.createHref(i);try{c.pushState(h,"",p)}catch(m){l.location.assign(p)}s&&d&&d({action:u,location:i})},replace:function(e,r){u=t.Replace;let i=o(f.location,e,r);n?.(i,e);let l=a(i),h=f.createHref(i);c.replaceState(l,"",h),s&&d&&d({action:u,location:i})},go:t=>c.go(t)};return f}function c(t,e,r="/"){let n=v(("string"==typeof e?l(e):e).pathname||"/",r);if(null==n)return null;let a=u(t);!function(t){t.sort(((t,e)=>t.score!==e.score?e.score-t.score:function(t,e){return t.length===e.length&&t.slice(0,-1).every(((t,r)=>t===e[r]))?t[t.length-1]-e[e.length-1]:0}(t.routesMeta.map((t=>t.childrenIndex)),e.routesMeta.map((t=>t.childrenIndex)))))}(a);let o=null;for(let i=0;null==o&&i<a.length;++i)o=p(a[i],n);return o}function u(t,e=[],r=[],n=""){return t.forEach(((t,a)=>{let o={relativePath:t.path||"",caseSensitive:!0===t.caseSensitive,childrenIndex:a,route:t};o.relativePath.startsWith("/")&&(o.relativePath.startsWith(n)||y(!1),o.relativePath=o.relativePath.slice(n.length));let i=M([n,o.relativePath]),l=r.concat(o);t.children&&t.children.length>0&&(!0===t.index&&y(!1),u(t.children,e,l,i)),(null!=t.path||t.index)&&e.push({path:i,score:f(i,t.index),routesMeta:l})})),e}const d=/^:\w+$/,h=t=>"*"===t;function f(t,e){let r=t.split("/"),n=r.length;return r.some(h)&&(n+=-2),e&&(n+=2),r.filter((t=>!h(t))).reduce(((t,e)=>t+(d.test(e)?3:""===e?1:10)),n)}function p(t,e){let{routesMeta:r}=t,n={},a="/",o=[];for(let i=0;i<r.length;++i){let t=r[i],l=i===r.length-1,s="/"===a?e:e.slice(a.length)||"/",c=g({path:t.relativePath,caseSensitive:t.caseSensitive,end:l},s);if(!c)return null;Object.assign(n,c.params);let u=t.route;o.push({params:n,pathname:M([a,c.pathname]),pathnameBase:A(M([a,c.pathnameBase])),route:u}),"/"!==c.pathnameBase&&(a=M([a,c.pathnameBase]))}return o}function m(t,e={}){return t.replace(/:(\w+)/g,((t,r)=>(null==e[r]&&y(!1),e[r]))).replace(/\/*\*$/,(t=>null==e["*"]?"":e["*"].replace(/^\/*/,"/")))}function g(t,e){"string"==typeof t&&(t={path:t,caseSensitive:!1,end:!0});let[r,n]=function(t,e=!1,r=!0){let n=[],a="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^$?{}|()[\]]/g,"\\$&").replace(/:(\w+)/g,((t,e)=>(n.push(e),"([^\\/]+)")));t.endsWith("*")?(n.push("*"),a+="*"===t||"/*"===t?"(.*)$":"(?:\\/(.+)|\\/*)$"):a+=r?"\\/*$":"(?:(?=[@.~-]|%[0-9A-F]{2})|\\b|\\/|$)";return[new RegExp(a,e?void 0:"i"),n]}(t.path,t.caseSensitive,t.end),a=e.match(r);if(!a)return null;let o=a[0],i=o.replace(/(.)\/+$/,"$1"),l=a.slice(1);return{params:n.reduce(((t,e,r)=>{if("*"===e){let t=l[r]||"";i=o.slice(0,o.length-t.length).replace(/(.)\/+$/,"$1")}return t[e]=function(t,e){try{return decodeURIComponent(t)}catch(r){return t}}(l[r]||""),t}),{}),pathname:o,pathnameBase:i,pattern:t}}function v(t,e){if("/"===e)return t;if(!t.toLowerCase().startsWith(e.toLowerCase()))return null;let r=t.charAt(e.length);return r&&"/"!==r?null:t.slice(e.length)||"/"}function y(t,e){if(!1===t||null==t)throw new Error(e)}function w(t,e){if(!t){"undefined"!=typeof console&&console.warn(e);try{throw new Error(e)}catch(r){}}}function b(t,e="/"){let{pathname:r,search:n="",hash:a=""}="string"==typeof t?l(t):t,o=r?r.startsWith("/")?r:function(t,e){let r=e.replace(/\/+$/,"").split("/");return t.split("/").forEach((t=>{".."===t?r.length>1&&r.pop():"."!==t&&r.push(t)})),r.length>1?r.join("/"):"/"}(r,e):e;return{pathname:o,search:P(n),hash:S(a)}}function D(t,e,r){let n,a="string"==typeof t?l(t):{...t},o=""===t||""===a.pathname?"/":a.pathname;if(null==o)n=r;else{let t=e.length-1;if(o.startsWith("..")){let e=o.split("/");for(;".."===e[0];)e.shift(),t-=1;a.pathname=e.join("/")}n=t>=0?e[t]:"/"}let i=b(a,n);return o&&"/"!==o&&o.endsWith("/")&&!i.pathname.endsWith("/")&&(i.pathname+="/"),i}function E(t){return""===t||""===t.pathname?"/":"string"==typeof t?l(t).pathname:t.pathname}const M=t=>t.join("/").replace(/\/\/+/g,"/"),A=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),P=t=>t&&"?"!==t?t.startsWith("?")?t:"?"+t:"",S=t=>t&&"#"!==t?t.startsWith("#")?t:"#"+t:"",x=(t,e={})=>{let r="number"==typeof e?{status:e}:e,n=new Headers(r.headers);return n.has("Content-Type")||n.set("Content-Type","application/json; charset=utf-8"),new Response(JSON.stringify(t),{...r,headers:n})},R=(t,e=302)=>{let r=e;"number"==typeof r?r={status:r}:void 0===r.status&&(r.status=302);let n=new Headers(r.headers);return n.set("Location",t),new Response(null,{...r,headers:n})};class C{constructor(t,e,r){this.status=t,this.statusText=e||"",this.data=r}}function T(t){return t instanceof C}var $;!function(t){t.data="data",t.redirect="redirect",t.error="error"}($||($={}));const j={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0},k={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};function O(e){e.routes.length>0||y(!1);let r=W(e.routes),n=null,a=null,s=null,u=null,d=null,h=!1,f=c(r,e.history.location),p=null;if(null==f){let{matches:t,route:e,error:n}=z(r);f=t,p={[e.id]:n}}let m,g=null==e.hydrationData?.errors&&null!=e.hydrationData?.loaderData&&f.filter((t=>t.route.loader)).some((t=>void 0===e.hydrationData?.loaderData?.[t.route.id]));g&&console.warn("The provided hydration data did not find loaderData for all matched routes with loaders. Performing a full initial data load");let v,w={historyAction:e.history.action,location:e.history.location,matches:f,initialized:null!=e.hydrationData&&!g,navigation:j,restoreScrollPosition:null,resetScrollPosition:!0,revalidation:"idle",loaderData:g?{}:e.hydrationData?.loaderData||{},actionData:e.hydrationData?.actionData||null,errors:e.hydrationData?.errors||p,fetchers:new Map},b=null,D=!0,E=!1,M=!1,A=new Map,P=0,S=-1,x=new Map,R=new Set,T=new Map;function O(t){w={...w,...t},a?.(w)}function H(r,n,a){O({...null!=w.actionData&&null!=w.navigation.formMethod&&"loading"===w.navigation.state?{}:{actionData:null},...a,historyAction:r,location:n,initialized:!0,navigation:j,revalidation:"idle",loaderData:q(w,a),restoreScrollPosition:!w.navigation.formData&&rt(n,a.matches||w.matches),resetScrollPosition:D}),E||r===t.Pop||(r===t.Push?e.history.push(n,n.state):r===t.Replace&&e.history.replace(n,n.state)),b=null,D=!0,E=!1,M=!1}async function N(t,e,n){v?.abort(),b=t,E=!0===n?.startUninterruptedRevalidation,function(t,e){if(s&&u&&d){let r=u(t,e)||t.key;s[r]=d()}}(w.location,w.matches),D=!1!==n?.resetScroll;let a=n?.overrideNavigation,i=c(r,e);if(!i){let{matches:n,route:a,error:o}=z(r);return void H(t,e,{matches:n,errors:{[a.id]:o}})}if(n?.pendingError){return void H(t,e,{matches:i,errors:{[_(i).route.id]:n?.pendingError}})}if(l=w.location,h=e,l.pathname===h.pathname&&l.search===h.search&&l.hash!==h.hash)return void H(t,e,{matches:i});var l,h;let f=null,p=null;if(n?.submission){let t=await async function(t,e,r,n){M=!0,n[n.length-1].route.index&&!Y(e.search)&&(n=n.slice(0,-1));let a;O({navigation:{state:"submitting",location:e,...r}});let i=n.slice(-1)[0];if(i.route.action){let t=new AbortController;if(v=t,a=await B(i,e,t.signal,r),t.signal.aborted)return{shortCircuited:!0};v=null}else a={type:$.error,error:new C(405,"Method Not Allowed",`No action found for [${J(e)}]`)};if(X(a)){let t={state:"loading",location:o(w.location,a.location),...r};return await Q(a,t),{shortCircuited:!0}}if(V(a)){return{pendingActionError:{[_(n,i.route.id).route.id]:a.error}}}return{pendingActionData:{[i.route.id]:a.data}}}(0,e,n.submission,i);if(t.shortCircuited)return;f=t.pendingActionData||null,p=t.pendingActionError||null,a={state:"loading",location:e,...n.submission}}let{shortCircuited:m,loaderData:g,errors:x}=await async function(t,e,r,n,a,o,i){let l=a;if(!l){l={state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0}}let[s,c]=I(w,n,r,e,M,o,i,T);if(0===s.length&&0===c.length)return H(t,e,{matches:n,errors:i||null,actionData:o||null}),{shortCircuited:!0};E||(c.forEach((([t])=>{let e={state:"loading",data:w.fetchers.get(t)?.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};w.fetchers.set(t,e)})),O({navigation:l,actionData:o||w.actionData||null,...c.length>0?{fetchers:new Map(w.fetchers)}:{}}));let u=new AbortController;v=u,S=++P,c.forEach((([t])=>A.set(t,u)));let d=await Promise.all([...s.map((t=>B(t,e,u.signal))),...c.map((([,t,e])=>B(e,t,u.signal)))]),h=d.slice(0,s.length),f=d.slice(s.length);if(u.signal.aborted)return{shortCircuited:!0};v=null,c.forEach((t=>A.delete(t)));let p=G(d);if(p){let t=U(w,p);return await Q(p,t),{shortCircuited:!0}}let{loaderData:m,errors:g}=F(w,n,s,h,i,c,f);!function(){let t=[];for(let e of R){let r=w.fetchers.get(e);r||y(!1),"loading"===r.state&&(R.delete(e),t.push(e))}tt(t)}();let b=et(S);return{loaderData:m,errors:g,...b||c.length>0?{fetchers:new Map(w.fetchers)}:{}}}(t,e,n?.submission,i,a,f,p);m||H(t,e,{matches:i,loaderData:g,errors:x})}function K(t){return w.fetchers.get(t)||k}async function Q(e,r){e.revalidate&&(M=!0),r.location||y(!1),await N(t.Replace,r.location,{overrideNavigation:r})}function Z(t){let e=A.get(t);e||y(!1),e.abort(),A.delete(t)}function tt(t){for(let e of t){let t={state:"idle",data:K(e).data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};w.fetchers.set(e,t)}}function et(t){let e=[];for(let[r,n]of x)if(n<t){let t=w.fetchers.get(r);t||y(!1),"loading"===t.state&&(Z(r),x.delete(r),e.push(r))}return tt(e),e.length>0}function rt(t,e){if(s&&u&&d){let r=u(t,e)||t.key,n=s[r];if("number"==typeof n)return n}return null}return m={get state(){return w},initialize:function(){return n=e.history.listen((({action:t,location:e})=>N(t,e))),w.initialized||N(t.Pop,w.location),m},subscribe:function(t){if(a)throw new Error("A router only accepts one active subscriber");return a=t,()=>{a=null}},enableScrollRestoration:function(t,e,r){if(s=t,d=e,u=r||(t=>t.key),!h&&w.navigation===j){h=!0;let t=rt(w.location,w.matches);null!=t&&O({restoreScrollPosition:t})}return()=>{s=null,d=null,u=null}},navigate:async function(r,n){if("number"==typeof r)return void e.history.go(r);let{path:a,submission:i,error:s}=L("string"==typeof r?l(r):r,n),c=o(w.location,a,n?.state),u=n?.replace?t.Replace:t.Push,d=n&&"resetScroll"in n?n.resetScroll:void 0;return await N(u,c,{submission:i,pendingError:s,resetScroll:d})},fetch:function(t,e,n){if("undefined"==typeof AbortController)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.");let a=c(r,e);a||y(!1),A.has(t)&&Z(t);let s=a[a.length-1].route.index&&!Y(l(e).search||"")?a.slice(-2)[0]:a.slice(-1)[0],{path:u,submission:d}=L(l(e),n);if(d)return void async function(t,e,n,a){M=!0,T.delete(t);let i={state:"submitting",...a,data:w.fetchers.get(t)?.data||void 0};w.fetchers.set(t,i),O({fetchers:new Map(w.fetchers)});let l=new AbortController;A.set(t,l);let s=await B(n,e,l.signal,a);if(l.signal.aborted)return;if(X(s)){R.add(t);let e={state:"loading",...a,data:void 0};w.fetchers.set(t,e),O({fetchers:new Map(w.fetchers)});let r={state:"loading",location:o(w.location,s.location),...a};return void(await Q(s,r))}if(V(s)){let e=_(w.matches,n.route.id);return w.fetchers.delete(t),void O({fetchers:new Map(w.fetchers),errors:{[e.route.id]:s.error}})}let u=w.navigation.location||w.location,d="idle"!==w.navigation.state?c(r,w.navigation.location):w.matches;d||y(!1);let h=++P;x.set(t,h);let f={state:"loading",data:s.data,...a};w.fetchers.set(t,f);let[p,m]=I(w,d,a,u,M,{[n.route.id]:s.data},null,T);m.filter((([e])=>e!==t)).forEach((([e])=>{let r={state:"loading",data:w.fetchers.get(t)?.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};w.fetchers.set(e,r),A.set(e,l)})),O({fetchers:new Map(w.fetchers)});let g=await Promise.all([...p.map((t=>B(t,u,l.signal))),...m.map((([,t,e])=>B(e,t,l.signal)))]),D=g.slice(0,p.length),E=g.slice(p.length);if(l.signal.aborted)return;x.delete(t),A.delete(t),m.forEach((t=>A.delete(t)));let C=G(D);if(C){let t=U(w,C);return void(await Q(C,t))}let{loaderData:$,errors:j}=F(w,w.matches,p,D,null,m,E),k={state:"idle",data:s.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};w.fetchers.set(t,k);let W=et(h);"loading"===w.navigation.state&&h>S?(b||y(!1),v?.abort(),H(b,w.navigation.location,{matches:d,loaderData:$,errors:j,fetchers:new Map(w.fetchers)})):(O({errors:j,loaderData:$,...W?{fetchers:new Map(w.fetchers)}:{}}),M=!1)}(t,e,s,d);let h={state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,data:w.fetchers.get(t)?.data||void 0};!async function(t,e,r,n){w.fetchers.set(t,n),O({fetchers:new Map(w.fetchers)}),T.set(t,[e,r]);let a=new AbortController;A.set(t,a);let o=await B(r,e,a.signal);if(a.signal.aborted)return;if(A.delete(t),X(o)){let t=U(w,o);return void(await Q(o,t))}if(V(o)){let e=_(w.matches,r.route.id);return w.fetchers.delete(t),void O({fetchers:new Map(w.fetchers),errors:{[e.route.id]:o.error}})}let i={state:"idle",data:o.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};w.fetchers.set(t,i),O({fetchers:new Map(w.fetchers)})}(t,i(u),s,h)},revalidate:function(){M=!0,O({revalidation:"loading"}),"submitting"===w.navigation.state&&"get"!==w.navigation.formMethod||("idle"!==w.navigation.state?N(b||w.historyAction,w.navigation.location,{overrideNavigation:w.navigation}):N(w.historyAction,w.location,{startUninterruptedRevalidation:!0}))},createHref:J,getFetcher:K,deleteFetcher:function(t){A.has(t)&&Z(t),T.delete(t),x.delete(t),R.delete(t),w.fetchers.delete(t)},dispose:function(){n&&n(),a=null,v?.abort();for(let[,t]of A)t.abort()},_internalFetchControllers:A},m}function W(t,e=[],r=new Set){return t.map(((t,n)=>{let a=[...e,n],o="string"==typeof t.id?t.id:a.join("-");return r.has(o)&&y(!1),r.add(o),{...t,id:o,children:t.children?W(t.children,a,r):void 0}}))}function L(t,e){if(!e||!("formMethod"in e)&&!("formData"in e))return{path:t};if(null!=e.formMethod&&"get"!==e.formMethod)return{path:t,submission:{formMethod:e.formMethod,formAction:J(t),formEncType:e?.formEncType||"application/x-www-form-urlencoded",formData:e.formData}};if(!e.formData)return{path:t};let r=new URLSearchParams(t.search);for(let[n,a]of e.formData){if("string"!=typeof a)return{path:t,error:new C(400,"Bad Request","Cannot submit binary form data using GET")};r.append(n,a)}return{path:{...t,search:`?${r}`}}}function U(t,e){let{formMethod:r,formAction:n,formEncType:a,formData:i}=t.navigation;return{state:"loading",location:o(t.location,e.location),formMethod:r||void 0,formAction:n||void 0,formEncType:a||void 0,formData:i||void 0}}function I(t,e,r,n,a,o,i,l){let s=i?e.findIndex((t=>t.route.id===Object.keys(i)[0])):e.length,c=i?Object.values(i)[0]:o?Object.values(o)[0]:null,u=e.filter(((e,o)=>!(!e.route.loader||o>=s)&&(function(t,e,r){let n=!e||r.route.id!==e.route.id,a=void 0===t[r.route.id];return n||a}(t.loaderData,t.matches[o],e)||H(t.location,t.matches[o],r,n,e,a,c)))),d=[];if(a)for(let h of l.entries()){let[t,[e,n]]=h;H(e,n,r,e,n,a,c)&&d.push([t,e,n])}return[u,d]}function H(t,e,r,n,a,o,i){let l=K(t),s=e.params,c=K(n),u=a.params,d=e.pathname!==a.pathname||e.route.path?.endsWith("*")&&e.params["*"]!==a.params["*"]||l.toString()===c.toString()||l.search!==c.search||o;return a.route.shouldRevalidate?a.route.shouldRevalidate({currentUrl:l,currentParams:s,nextUrl:c,nextParams:u,...r,actionResult:i,defaultShouldRevalidate:d}):d}async function B(t,e,r,n){let a,o=$.data;try{let o=n?"action":"loader",i=t.route[o];i||y(!1),a=await i({params:t.params,request:N(e,n),signal:r})}catch(i){o=$.error,a=i}if(a instanceof Response){let t,e=a.status,r=a.headers.get("Location");return e>=300&&e<=399&&null!=r?{type:$.redirect,status:e,location:r,revalidate:null!==a.headers.get("X-Remix-Revalidate")}:(t=a.headers.get("Content-Type")?.startsWith("application/json")?await a.json():await a.text(),o===$.error?{type:o,error:new C(e,a.statusText,t)}:{type:o,data:t})}return o===$.error?{type:o,error:a}:{type:o,data:a}}function N(t,e){let r=K(t).toString();if(!e)return new Request(r);let{formMethod:n,formEncType:a,formData:o}=e,i=o;if("application/x-www-form-urlencoded"===a){i=new URLSearchParams;for(let[t,e]of o.entries())"string"!=typeof e&&y(!1),i.append(t,e)}return new Request(r,{method:n.toUpperCase(),headers:{"Content-Type":a},body:i})}function F(t,e,r,n,a,o,i){let l={},s=null;return n.forEach(((t,n)=>{let o=r[n].route.id;if(X(t)&&y(!1),V(t)){let r=_(e,o),n=t.error;a&&(n=Object.values(a)[0],a=null),s=Object.assign(s||{},{[r.route.id]:n})}else l[o]=t.data})),a&&(s=a),o.forEach((([e,r,n],a)=>{let o=i[a];if(V(o)){let r=_(t.matches,n.route.id);s?.[r.route.id]||(s={...s,[r.route.id]:o.error}),t.fetchers.delete(e)}else if(X(o))y(!1);else{let r={state:"idle",data:o.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};t.fetchers.set(e,r)}})),{loaderData:l,errors:s}}function q(t,e){let r=(e.matches||t.matches).filter((r=>void 0!==t.loaderData[r.route.id]&&void 0===e.loaderData?.[r.route.id]));return{...e.loaderData,...r.reduce(((e,r)=>Object.assign(e,{[r.route.id]:t.loaderData[r.route.id]})),{})}}function _(t,e){return(e?t.slice(0,t.findIndex((t=>t.route.id===e))+1):[...t]).reverse().find((t=>t.route.errorElement))||t[0]}function z(t){let e=t.find((t=>t.index||""===t.path||"/"===t.path))||{id:"__shim-404-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:e}],route:e,error:new C(404,"Not Found",null)}}function G(t){for(let e=t.length-1;e>=0;e--){let r=t[e];if(X(r))return r}}function J(t){return(t.pathname||"")+(t.search||"")}function V(t){return t.type===$.error}function X(t){return t?.type===$.redirect}function Y(t){return new URLSearchParams(t).getAll("index").some((t=>""===t))}function K(t){let e="undefined"!=typeof window&&void 0!==window.location?window.location.origin:"unknown://unknown",r="string"==typeof t?t:J(t);return new URL(r,e)}function Q({initialEntries:t,initialIndex:r,...n}){return O({history:e({initialEntries:t,initialIndex:r}),...n})}function Z({window:t,...e}){return O({history:r({window:t}),...e})}function tt({window:t,...e}){return O({history:n({window:t}),...e})}export{t as Action,k as IDLE_FETCHER,j as IDLE_NAVIGATION,r as createBrowserHistory,Z as createBrowserRouter,n as createHashHistory,tt as createHashRouter,e as createMemoryHistory,Q as createMemoryRouter,i as createPath,O as createRouter,m as generatePath,E as getToPathname,y as invariant,T as isRouteErrorResponse,M as joinPaths,x as json,g as matchPath,c as matchRoutes,A as normalizePathname,l as parsePath,R as redirect,b as resolvePath,D as resolveTo,v as stripBasename,w as warning};
let t;!function(t){t.Pop="POP",t.Push="PUSH",t.Replace="REPLACE"}(t||(t={}));function e(e={}){let r,{initialEntries:n=["/"],initialIndex:a,v5Compat:l=!1}=e;r=n.map(((t,e)=>f(t,null,0===e?"default":void 0)));let s=d(null==a?r.length-1:a),c=t.Pop,u=null;function d(t){return Math.min(Math.max(t,0),r.length-1)}function h(){return r[s]}function f(t,e=null,n){return o(r?h().pathname:"/",t,e,n)}return{get index(){return s},get action(){return c},get location(){return h()},createHref:t=>"string"==typeof t?t:i(t),push(e,n){c=t.Push;let a=f(e,n);s+=1,r.splice(s,r.length,a),l&&u&&u({action:c,location:a})},replace(e,n){c=t.Replace;let a=f(e,n);r[s]=a,l&&u&&u({action:c,location:a})},go(e){c=t.Pop,s=d(s+e),u&&u({action:c,location:h()})},listen:t=>(u=t,()=>{u=null})}}function r(t={}){return s((function(t,e){let{pathname:r,search:n,hash:a}=t.location;return o("",{pathname:r,search:n,hash:a},e.state?.usr||null,e.state?.key||"default")}),(function(t,e){return"string"==typeof e?e:i(e)}),null,t)}function n(t={}){return s((function(t,e){let{pathname:r="/",search:n="",hash:a=""}=l(t.location.hash.substr(1));return o("",{pathname:r,search:n,hash:a},e.state?.usr||null,e.state?.key||"default")}),(function(t,e){let r=t.document.querySelector("base"),n="";if(r&&r.getAttribute("href")){let e=t.location.href,r=e.indexOf("#");n=-1===r?e:e.slice(0,r)}return n+"#"+("string"==typeof e?e:i(e))}),(function(t,e){}),t)}function a(t){return{usr:t.state,key:t.key}}function o(t,e,r=null,n){return{pathname:"string"==typeof t?t:t.pathname,search:"",hash:"",..."string"==typeof e?l(e):e,state:r,key:e?.key||n||Math.random().toString(36).substr(2,8)}}function i({pathname:t="/",search:e="",hash:r=""}){return e&&"?"!==e&&(t+="?"===e.charAt(0)?e:"?"+e),r&&"#"!==r&&(t+="#"===r.charAt(0)?r:"#"+r),t}function l(t){let e={};if(t){let r=t.indexOf("#");r>=0&&(e.hash=t.substr(r),t=t.substr(0,r));let n=t.indexOf("?");n>=0&&(e.search=t.substr(n),t=t.substr(0,n)),t&&(e.pathname=t)}return e}function s(e,r,n,i={}){let{window:l=document.defaultView,v5Compat:s=!1}=i,c=l.history,u=t.Pop,d=null;function h(){u=t.Pop,d&&d({action:u,location:f.location})}let f={get action(){return u},get location(){return e(l,c)},listen(t){if(d)throw new Error("A history only accepts one active listener");return l.addEventListener("popstate",h),d=t,()=>{l.removeEventListener("popstate",h),d=null}},createHref:t=>r(l,t),push:function(e,r){u=t.Push;let i=o(f.location,e,r);n?.(i,e);let h=a(i),p=f.createHref(i);try{c.pushState(h,"",p)}catch(m){l.location.assign(p)}s&&d&&d({action:u,location:i})},replace:function(e,r){u=t.Replace;let i=o(f.location,e,r);n?.(i,e);let l=a(i),h=f.createHref(i);c.replaceState(l,"",h),s&&d&&d({action:u,location:i})},go:t=>c.go(t)};return f}function c(t,e,r="/"){let n=v(("string"==typeof e?l(e):e).pathname||"/",r);if(null==n)return null;let a=u(t);!function(t){t.sort(((t,e)=>t.score!==e.score?e.score-t.score:function(t,e){return t.length===e.length&&t.slice(0,-1).every(((t,r)=>t===e[r]))?t[t.length-1]-e[e.length-1]:0}(t.routesMeta.map((t=>t.childrenIndex)),e.routesMeta.map((t=>t.childrenIndex)))))}(a);let o=null;for(let i=0;null==o&&i<a.length;++i)o=p(a[i],n);return o}function u(t,e=[],r=[],n=""){return t.forEach(((t,a)=>{let o={relativePath:t.path||"",caseSensitive:!0===t.caseSensitive,childrenIndex:a,route:t};o.relativePath.startsWith("/")&&(o.relativePath.startsWith(n)||y(!1),o.relativePath=o.relativePath.slice(n.length));let i=M([n,o.relativePath]),l=r.concat(o);t.children&&t.children.length>0&&(!0===t.index&&y(!1),u(t.children,e,l,i)),(null!=t.path||t.index)&&e.push({path:i,score:f(i,t.index),routesMeta:l})})),e}const d=/^:\w+$/,h=t=>"*"===t;function f(t,e){let r=t.split("/"),n=r.length;return r.some(h)&&(n+=-2),e&&(n+=2),r.filter((t=>!h(t))).reduce(((t,e)=>t+(d.test(e)?3:""===e?1:10)),n)}function p(t,e){let{routesMeta:r}=t,n={},a="/",o=[];for(let i=0;i<r.length;++i){let t=r[i],l=i===r.length-1,s="/"===a?e:e.slice(a.length)||"/",c=g({path:t.relativePath,caseSensitive:t.caseSensitive,end:l},s);if(!c)return null;Object.assign(n,c.params);let u=t.route;o.push({params:n,pathname:M([a,c.pathname]),pathnameBase:A(M([a,c.pathnameBase])),route:u}),"/"!==c.pathnameBase&&(a=M([a,c.pathnameBase]))}return o}function m(t,e={}){return t.replace(/:(\w+)/g,((t,r)=>(null==e[r]&&y(!1),e[r]))).replace(/\/*\*$/,(t=>null==e["*"]?"":e["*"].replace(/^\/*/,"/")))}function g(t,e){"string"==typeof t&&(t={path:t,caseSensitive:!1,end:!0});let[r,n]=function(t,e=!1,r=!0){let n=[],a="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^$?{}|()[\]]/g,"\\$&").replace(/:(\w+)/g,((t,e)=>(n.push(e),"([^\\/]+)")));t.endsWith("*")?(n.push("*"),a+="*"===t||"/*"===t?"(.*)$":"(?:\\/(.+)|\\/*)$"):a+=r?"\\/*$":"(?:(?=[@.~-]|%[0-9A-F]{2})|\\b|\\/|$)";return[new RegExp(a,e?void 0:"i"),n]}(t.path,t.caseSensitive,t.end),a=e.match(r);if(!a)return null;let o=a[0],i=o.replace(/(.)\/+$/,"$1"),l=a.slice(1);return{params:n.reduce(((t,e,r)=>{if("*"===e){let t=l[r]||"";i=o.slice(0,o.length-t.length).replace(/(.)\/+$/,"$1")}return t[e]=function(t,e){try{return decodeURIComponent(t)}catch(r){return t}}(l[r]||""),t}),{}),pathname:o,pathnameBase:i,pattern:t}}function v(t,e){if("/"===e)return t;if(!t.toLowerCase().startsWith(e.toLowerCase()))return null;let r=t.charAt(e.length);return r&&"/"!==r?null:t.slice(e.length)||"/"}function y(t,e){if(!1===t||null==t)throw new Error(e)}function w(t,e){if(!t){"undefined"!=typeof console&&console.warn(e);try{throw new Error(e)}catch(r){}}}function b(t,e="/"){let{pathname:r,search:n="",hash:a=""}="string"==typeof t?l(t):t,o=r?r.startsWith("/")?r:function(t,e){let r=e.replace(/\/+$/,"").split("/");return t.split("/").forEach((t=>{".."===t?r.length>1&&r.pop():"."!==t&&r.push(t)})),r.length>1?r.join("/"):"/"}(r,e):e;return{pathname:o,search:P(n),hash:S(a)}}function D(t,e,r){let n,a="string"==typeof t?l(t):{...t},o=""===t||""===a.pathname?"/":a.pathname;if(null==o)n=r;else{let t=e.length-1;if(o.startsWith("..")){let e=o.split("/");for(;".."===e[0];)e.shift(),t-=1;a.pathname=e.join("/")}n=t>=0?e[t]:"/"}let i=b(a,n);return o&&"/"!==o&&o.endsWith("/")&&!i.pathname.endsWith("/")&&(i.pathname+="/"),i}function E(t){return""===t||""===t.pathname?"/":"string"==typeof t?l(t).pathname:t.pathname}const M=t=>t.join("/").replace(/\/\/+/g,"/"),A=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),P=t=>t&&"?"!==t?t.startsWith("?")?t:"?"+t:"",S=t=>t&&"#"!==t?t.startsWith("#")?t:"#"+t:"",x=(t,e={})=>{let r="number"==typeof e?{status:e}:e,n=new Headers(r.headers);return n.has("Content-Type")||n.set("Content-Type","application/json; charset=utf-8"),new Response(JSON.stringify(t),{...r,headers:n})},R=(t,e=302)=>{let r=e;"number"==typeof r?r={status:r}:void 0===r.status&&(r.status=302);let n=new Headers(r.headers);return n.set("Location",t),new Response(null,{...r,headers:n})};class C{constructor(t,e,r){this.status=t,this.statusText=e||"",this.data=r}}function T(t){return t instanceof C}var $;!function(t){t.data="data",t.redirect="redirect",t.error="error"}($||($={}));const j={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0},k={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};function O(e){e.routes.length>0||y(!1);let r=W(e.routes),n=null,a=null,s=null,u=null,d=null,h=!1,f=c(r,e.history.location),p=null;if(null==f){let{matches:t,route:e,error:n}=z(r);f=t,p={[e.id]:n}}let m,g=null==e.hydrationData?.errors&&null!=e.hydrationData?.loaderData&&f.filter((t=>t.route.loader)).some((t=>void 0===e.hydrationData?.loaderData?.[t.route.id]));g&&console.warn("The provided hydration data did not find loaderData for all matched routes with loaders. Performing a full initial data load");let v,w={historyAction:e.history.action,location:e.history.location,matches:f,initialized:null!=e.hydrationData&&!g,navigation:j,restoreScrollPosition:null,resetScrollPosition:!0,revalidation:"idle",loaderData:g?{}:e.hydrationData?.loaderData||{},actionData:e.hydrationData?.actionData||null,errors:e.hydrationData?.errors||p,fetchers:new Map},b=null,D=!0,E=!1,M=!1,A=new Map,P=0,S=-1,x=new Map,R=new Set,T=new Map;function O(t){w={...w,...t},a?.(w)}function H(r,n,a){O({...null!=w.actionData&&null!=w.navigation.formMethod&&"loading"===w.navigation.state?{}:{actionData:null},...a,historyAction:r,location:n,initialized:!0,navigation:j,revalidation:"idle",loaderData:q(w,a),restoreScrollPosition:!w.navigation.formData&&rt(n,a.matches||w.matches),resetScrollPosition:D}),E||r===t.Pop||(r===t.Push?e.history.push(n,n.state):r===t.Replace&&e.history.replace(n,n.state)),b=null,D=!0,E=!1,M=!1}async function N(t,e,n){v?.abort(),b=t,E=!0===n?.startUninterruptedRevalidation,function(t,e){if(s&&u&&d){let r=u(t,e)||t.key;s[r]=d()}}(w.location,w.matches),D=!1!==n?.resetScroll;let a=n?.overrideNavigation,i=c(r,e);if(!i){let{matches:n,route:a,error:o}=z(r);return void H(t,e,{matches:n,errors:{[a.id]:o}})}if(n?.pendingError){return void H(t,e,{matches:i,errors:{[_(i).route.id]:n?.pendingError}})}if(l=w.location,h=e,l.pathname===h.pathname&&l.search===h.search&&l.hash!==h.hash)return void H(t,e,{matches:i});var l,h;let f=null,p=null;if(n?.submission){let t=await async function(t,e,r,n){M=!0,n[n.length-1].route.index&&!Y(e.search)&&(n=n.slice(0,-1));let a;O({navigation:{state:"submitting",location:e,...r}});let i=n.slice(-1)[0];if(i.route.action){let t=new AbortController;if(v=t,a=await B(i,e,t.signal,r),t.signal.aborted)return{shortCircuited:!0};v=null}else a={type:$.error,error:new C(405,"Method Not Allowed",`No action found for [${J(e)}]`)};if(X(a)){let t={state:"loading",location:o(w.location,a.location),...r};return await Q(a,t),{shortCircuited:!0}}if(V(a)){return{pendingActionError:{[_(n,i.route.id).route.id]:a.error}}}return{pendingActionData:{[i.route.id]:a.data}}}(0,e,n.submission,i);if(t.shortCircuited)return;f=t.pendingActionData||null,p=t.pendingActionError||null,a={state:"loading",location:e,...n.submission}}let{shortCircuited:m,loaderData:g,errors:x}=await async function(t,e,r,n,a,o,i){let l=a;if(!l){l={state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0}}let[s,c]=I(w,n,r,e,M,o,i,T);if(0===s.length&&0===c.length)return H(t,e,{matches:n,errors:i||null,actionData:o||null}),{shortCircuited:!0};E||(c.forEach((([t])=>{let e={state:"loading",data:w.fetchers.get(t)?.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};w.fetchers.set(t,e)})),O({navigation:l,actionData:o||w.actionData||null,...c.length>0?{fetchers:new Map(w.fetchers)}:{}}));let u=new AbortController;v=u,S=++P,c.forEach((([t])=>A.set(t,u)));let d=await Promise.all([...s.map((t=>B(t,e,u.signal))),...c.map((([,t,e])=>B(e,t,u.signal)))]),h=d.slice(0,s.length),f=d.slice(s.length);if(u.signal.aborted)return{shortCircuited:!0};v=null,c.forEach((t=>A.delete(t)));let p=G(d);if(p){let t=U(w,p);return await Q(p,t),{shortCircuited:!0}}let{loaderData:m,errors:g}=F(w,n,s,h,i,c,f);!function(){let t=[];for(let e of R){let r=w.fetchers.get(e);r||y(!1),"loading"===r.state&&(R.delete(e),t.push(e))}tt(t)}();let b=et(S);return{loaderData:m,errors:g,...b||c.length>0?{fetchers:new Map(w.fetchers)}:{}}}(t,e,n?.submission,i,a,f,p);m||H(t,e,{matches:i,loaderData:g,errors:x})}function K(t){return w.fetchers.get(t)||k}async function Q(e,r){e.revalidate&&(M=!0),r.location||y(!1),await N(t.Replace,r.location,{overrideNavigation:r})}function Z(t){let e=A.get(t);e||y(!1),e.abort(),A.delete(t)}function tt(t){for(let e of t){let t={state:"idle",data:K(e).data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};w.fetchers.set(e,t)}}function et(t){let e=[];for(let[r,n]of x)if(n<t){let t=w.fetchers.get(r);t||y(!1),"loading"===t.state&&(Z(r),x.delete(r),e.push(r))}return tt(e),e.length>0}function rt(t,e){if(s&&u&&d){let r=u(t,e)||t.key,n=s[r];if("number"==typeof n)return n}return null}return m={get state(){return w},initialize:function(){return n=e.history.listen((({action:t,location:e})=>N(t,e))),w.initialized||N(t.Pop,w.location),m},subscribe:function(t){if(a)throw new Error("A router only accepts one active subscriber");return a=t,()=>{a=null}},enableScrollRestoration:function(t,e,r){if(s=t,d=e,u=r||(t=>t.key),!h&&w.navigation===j){h=!0;let t=rt(w.location,w.matches);null!=t&&O({restoreScrollPosition:t})}return()=>{s=null,d=null,u=null}},navigate:async function(r,n){if("number"==typeof r)return void e.history.go(r);let{path:a,submission:i,error:s}=L("string"==typeof r?l(r):r,n),c=o(w.location,a,n?.state),u=n?.replace?t.Replace:t.Push,d=n&&"resetScroll"in n?n.resetScroll:void 0;return await N(u,c,{submission:i,pendingError:s,resetScroll:d})},fetch:function(t,e,n,a){if("undefined"==typeof AbortController)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.");let s=c(r,n);s||y(!1),A.has(t)&&Z(t);let u=s[s.length-1].route.index&&!Y(l(n).search||"")?s.slice(-2)[0]:s.slice(-1)[0],{path:d,submission:h}=L(l(n),a);if(h)return void async function(t,e,n,a,i){M=!0,T.delete(t);let l={state:"submitting",...i,data:w.fetchers.get(t)?.data||void 0};w.fetchers.set(t,l),O({fetchers:new Map(w.fetchers)});let s=new AbortController;A.set(t,s);let u=await B(a,n,s.signal,i);if(s.signal.aborted)return;if(X(u)){R.add(t);let e={state:"loading",...i,data:void 0};w.fetchers.set(t,e),O({fetchers:new Map(w.fetchers)});let r={state:"loading",location:o(w.location,u.location),...i};return void(await Q(u,r))}if(V(u)){let r=_(w.matches,e);return w.fetchers.delete(t),void O({fetchers:new Map(w.fetchers),errors:{[r.route.id]:u.error}})}let d=w.navigation.location||w.location,h="idle"!==w.navigation.state?c(r,w.navigation.location):w.matches;h||y(!1);let f=++P;x.set(t,f);let p={state:"loading",data:u.data,...i};w.fetchers.set(t,p);let[m,g]=I(w,h,i,d,M,{[a.route.id]:u.data},null,T);g.filter((([e])=>e!==t)).forEach((([e])=>{let r={state:"loading",data:w.fetchers.get(t)?.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};w.fetchers.set(e,r),A.set(e,s)})),O({fetchers:new Map(w.fetchers)});let D=await Promise.all([...m.map((t=>B(t,d,s.signal))),...g.map((([,t,e])=>B(e,t,s.signal)))]),E=D.slice(0,m.length),C=D.slice(m.length);if(s.signal.aborted)return;x.delete(t),A.delete(t),g.forEach((t=>A.delete(t)));let $=G(E);if($){let t=U(w,$);return void(await Q($,t))}let{loaderData:j,errors:k}=F(w,w.matches,m,E,null,g,C),W={state:"idle",data:u.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};w.fetchers.set(t,W);let L=et(f);"loading"===w.navigation.state&&f>S?(b||y(!1),v?.abort(),H(b,w.navigation.location,{matches:h,loaderData:j,errors:k,fetchers:new Map(w.fetchers)})):(O({errors:k,loaderData:j,...L?{fetchers:new Map(w.fetchers)}:{}}),M=!1)}(t,e,n,u,h);let f={state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,data:w.fetchers.get(t)?.data||void 0};!async function(t,e,r,n,a){w.fetchers.set(t,a),O({fetchers:new Map(w.fetchers)}),T.set(t,[r,n]);let o=new AbortController;A.set(t,o);let i=await B(n,r,o.signal);if(o.signal.aborted)return;if(A.delete(t),X(i)){let t=U(w,i);return void(await Q(i,t))}if(V(i)){let r=_(w.matches,e);return w.fetchers.delete(t),void O({fetchers:new Map(w.fetchers),errors:{[r.route.id]:i.error}})}let l={state:"idle",data:i.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};w.fetchers.set(t,l),O({fetchers:new Map(w.fetchers)})}(t,e,i(d),u,f)},revalidate:function(){M=!0,O({revalidation:"loading"}),"submitting"===w.navigation.state&&"get"!==w.navigation.formMethod||("idle"!==w.navigation.state?N(b||w.historyAction,w.navigation.location,{overrideNavigation:w.navigation}):N(w.historyAction,w.location,{startUninterruptedRevalidation:!0}))},createHref:J,getFetcher:K,deleteFetcher:function(t){A.has(t)&&Z(t),T.delete(t),x.delete(t),R.delete(t),w.fetchers.delete(t)},dispose:function(){n&&n(),a=null,v?.abort();for(let[,t]of A)t.abort()},_internalFetchControllers:A},m}function W(t,e=[],r=new Set){return t.map(((t,n)=>{let a=[...e,n],o="string"==typeof t.id?t.id:a.join("-");return r.has(o)&&y(!1),r.add(o),{...t,id:o,children:t.children?W(t.children,a,r):void 0}}))}function L(t,e){if(!e||!("formMethod"in e)&&!("formData"in e))return{path:t};if(null!=e.formMethod&&"get"!==e.formMethod)return{path:t,submission:{formMethod:e.formMethod,formAction:J(t),formEncType:e?.formEncType||"application/x-www-form-urlencoded",formData:e.formData}};if(!e.formData)return{path:t};let r=new URLSearchParams(t.search);for(let[n,a]of e.formData){if("string"!=typeof a)return{path:t,error:new C(400,"Bad Request","Cannot submit binary form data using GET")};r.append(n,a)}return{path:{...t,search:`?${r}`}}}function U(t,e){let{formMethod:r,formAction:n,formEncType:a,formData:i}=t.navigation;return{state:"loading",location:o(t.location,e.location),formMethod:r||void 0,formAction:n||void 0,formEncType:a||void 0,formData:i||void 0}}function I(t,e,r,n,a,o,i,l){let s=i?e.findIndex((t=>t.route.id===Object.keys(i)[0])):e.length,c=i?Object.values(i)[0]:o?Object.values(o)[0]:null,u=e.filter(((e,o)=>!(!e.route.loader||o>=s)&&(function(t,e,r){let n=!e||r.route.id!==e.route.id,a=void 0===t[r.route.id];return n||a}(t.loaderData,t.matches[o],e)||H(t.location,t.matches[o],r,n,e,a,c)))),d=[];if(a)for(let h of l.entries()){let[t,[e,n]]=h;H(e,n,r,e,n,a,c)&&d.push([t,e,n])}return[u,d]}function H(t,e,r,n,a,o,i){let l=K(t),s=e.params,c=K(n),u=a.params,d=e.pathname!==a.pathname||e.route.path?.endsWith("*")&&e.params["*"]!==a.params["*"]||l.toString()===c.toString()||l.search!==c.search||o;return a.route.shouldRevalidate?a.route.shouldRevalidate({currentUrl:l,currentParams:s,nextUrl:c,nextParams:u,...r,actionResult:i,defaultShouldRevalidate:d}):d}async function B(t,e,r,n){let a,o=$.data;try{let o=n?"action":"loader",i=t.route[o];i||y(!1),a=await i({params:t.params,request:N(e,n),signal:r})}catch(i){o=$.error,a=i}if(a instanceof Response){let t,e=a.status,r=a.headers.get("Location");return e>=300&&e<=399&&null!=r?{type:$.redirect,status:e,location:r,revalidate:null!==a.headers.get("X-Remix-Revalidate")}:(t=a.headers.get("Content-Type")?.startsWith("application/json")?await a.json():await a.text(),o===$.error?{type:o,error:new C(e,a.statusText,t)}:{type:o,data:t})}return o===$.error?{type:o,error:a}:{type:o,data:a}}function N(t,e){let r=K(t).toString();if(!e)return new Request(r);let{formMethod:n,formEncType:a,formData:o}=e,i=o;if("application/x-www-form-urlencoded"===a){i=new URLSearchParams;for(let[t,e]of o.entries())"string"!=typeof e&&y(!1),i.append(t,e)}return new Request(r,{method:n.toUpperCase(),headers:{"Content-Type":a},body:i})}function F(t,e,r,n,a,o,i){let l={},s=null;return n.forEach(((t,n)=>{let o=r[n].route.id;if(X(t)&&y(!1),V(t)){let r=_(e,o),n=t.error;a&&(n=Object.values(a)[0],a=null),s=Object.assign(s||{},{[r.route.id]:n})}else l[o]=t.data})),a&&(s=a),o.forEach((([e,r,n],a)=>{let o=i[a];if(V(o)){let r=_(t.matches,n.route.id);s?.[r.route.id]||(s={...s,[r.route.id]:o.error}),t.fetchers.delete(e)}else if(X(o))y(!1);else{let r={state:"idle",data:o.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};t.fetchers.set(e,r)}})),{loaderData:l,errors:s}}function q(t,e){let r=(e.matches||t.matches).filter((r=>void 0!==t.loaderData[r.route.id]&&void 0===e.loaderData?.[r.route.id]));return{...e.loaderData,...r.reduce(((e,r)=>Object.assign(e,{[r.route.id]:t.loaderData[r.route.id]})),{})}}function _(t,e){return(e?t.slice(0,t.findIndex((t=>t.route.id===e))+1):[...t]).reverse().find((t=>t.route.errorElement))||t[0]}function z(t){let e=t.find((t=>t.index||""===t.path||"/"===t.path))||{id:"__shim-404-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:e}],route:e,error:new C(404,"Not Found",null)}}function G(t){for(let e=t.length-1;e>=0;e--){let r=t[e];if(X(r))return r}}function J(t){return(t.pathname||"")+(t.search||"")}function V(t){return t.type===$.error}function X(t){return t?.type===$.redirect}function Y(t){return new URLSearchParams(t).getAll("index").some((t=>""===t))}function K(t){let e="undefined"!=typeof window&&void 0!==window.location?window.location.origin:"unknown://unknown",r="string"==typeof t?t:J(t);return new URL(r,e)}function Q({initialEntries:t,initialIndex:r,...n}){return O({history:e({initialEntries:t,initialIndex:r}),...n})}function Z({window:t,...e}){return O({history:r({window:t}),...e})}function tt({window:t,...e}){return O({history:n({window:t}),...e})}export{t as Action,k as IDLE_FETCHER,j as IDLE_NAVIGATION,r as createBrowserHistory,Z as createBrowserRouter,n as createHashHistory,tt as createHashRouter,e as createMemoryHistory,Q as createMemoryRouter,i as createPath,O as createRouter,m as generatePath,E as getToPathname,y as invariant,T as isRouteErrorResponse,M as joinPaths,x as json,g as matchPath,c as matchRoutes,A as normalizePathname,l as parsePath,R as redirect,b as resolvePath,D as resolveTo,v as stripBasename,w as warning};
//# sourceMappingURL=router.production.min.js.map
/**
* @remix-run/router v0.2.0-pre.1
* @remix-run/router v0.2.0-pre.2
*

@@ -11,3 +11,3 @@ * Copyright (c) Remix Software Inc.

*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Router={})}(this,(function(t){"use strict";function e(){return e=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},e.apply(this,arguments)}function n(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r<a.length;r++)n=a[r],e.indexOf(n)>=0||(o[n]=t[n]);return o}var r;t.Action=void 0,(r=t.Action||(t.Action={})).Pop="POP",r.Push="PUSH",r.Replace="REPLACE";const o="popstate";function a(e){void 0===e&&(e={});let n,{initialEntries:r=["/"],initialIndex:o,v5Compat:a=!1}=e;n=r.map(((t,e)=>f(t,null,0===e?"default":void 0)));let i=d(null==o?n.length-1:o),l=t.Action.Pop,s=null;function d(t){return Math.min(Math.max(t,0),n.length-1)}function h(){return n[i]}function f(t,e,r){return void 0===e&&(e=null),c(n?h().pathname:"/",t,e,r)}return{get index(){return i},get action(){return l},get location(){return h()},createHref:t=>"string"==typeof t?t:u(t),push(e,r){l=t.Action.Push;let o=f(e,r);i+=1,n.splice(i,n.length,o),a&&s&&s({action:l,location:o})},replace(e,r){l=t.Action.Replace;let o=f(e,r);n[i]=o,a&&s&&s({action:l,location:o})},go(e){l=t.Action.Pop,i=d(i+e),s&&s({action:l,location:h()})},listen:t=>(s=t,()=>{s=null})}}function i(t){return void 0===t&&(t={}),h((function(t,e){var n,r;let{pathname:o,search:a,hash:i}=t.location;return c("",{pathname:o,search:a,hash:i},(null==(n=e.state)?void 0:n.usr)||null,(null==(r=e.state)?void 0:r.key)||"default")}),(function(t,e){return"string"==typeof e?e:u(e)}),null,t)}function l(t){return void 0===t&&(t={}),h((function(t,e){var n,r;let{pathname:o="/",search:a="",hash:i=""}=d(t.location.hash.substr(1));return c("",{pathname:o,search:a,hash:i},(null==(n=e.state)?void 0:n.usr)||null,(null==(r=e.state)?void 0:r.key)||"default")}),(function(t,e){let n=t.document.querySelector("base"),r="";if(n&&n.getAttribute("href")){let e=t.location.href,n=e.indexOf("#");r=-1===n?e:e.slice(0,n)}return r+"#"+("string"==typeof e?e:u(e))}),(function(t,e){}),t)}function s(t){return{usr:t.state,key:t.key}}function c(t,n,r,o){return void 0===r&&(r=null),e({pathname:"string"==typeof t?t:t.pathname,search:"",hash:""},"string"==typeof n?d(n):n,{state:r,key:(null==n?void 0:n.key)||o||Math.random().toString(36).substr(2,8)})}function u(t){let{pathname:e="/",search:n="",hash:r=""}=t;return n&&"?"!==n&&(e+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(e+="#"===r.charAt(0)?r:"#"+r),e}function d(t){let e={};if(t){let n=t.indexOf("#");n>=0&&(e.hash=t.substr(n),t=t.substr(0,n));let r=t.indexOf("?");r>=0&&(e.search=t.substr(r),t=t.substr(0,r)),t&&(e.pathname=t)}return e}function h(e,n,r,a){void 0===a&&(a={});let{window:i=document.defaultView,v5Compat:l=!1}=a,u=i.history,d=t.Action.Pop,h=null;function f(){d=t.Action.Pop,h&&h({action:d,location:p.location})}let p={get action(){return d},get location(){return e(i,u)},listen(t){if(h)throw new Error("A history only accepts one active listener");return i.addEventListener(o,f),h=t,()=>{i.removeEventListener(o,f),h=null}},createHref:t=>n(i,t),push:function(e,n){d=t.Action.Push;let o=c(p.location,e,n);null==r||r(o,e);let a=s(o),f=p.createHref(o);try{u.pushState(a,"",f)}catch(t){i.location.assign(f)}l&&h&&h({action:d,location:o})},replace:function(e,n){d=t.Action.Replace;let o=c(p.location,e,n);null==r||r(o,e);let a=s(o),i=p.createHref(o);u.replaceState(a,"",i),l&&h&&h({action:d,location:o})},go:t=>u.go(t)};return p}function f(t,e,n){void 0===n&&(n="/");let r=b(("string"==typeof e?d(e):e).pathname||"/",n);if(null==r)return null;let o=p(t);!function(t){t.sort(((t,e)=>t.score!==e.score?e.score-t.score:function(t,e){return t.length===e.length&&t.slice(0,-1).every(((t,n)=>t===e[n]))?t[t.length-1]-e[e.length-1]:0}(t.routesMeta.map((t=>t.childrenIndex)),e.routesMeta.map((t=>t.childrenIndex)))))}(o);let a=null;for(let t=0;null==a&&t<o.length;++t)a=y(o[t],r);return a}function p(t,e,n,r){return void 0===e&&(e=[]),void 0===n&&(n=[]),void 0===r&&(r=""),t.forEach(((t,o)=>{let a={relativePath:t.path||"",caseSensitive:!0===t.caseSensitive,childrenIndex:o,route:t};a.relativePath.startsWith("/")&&(a.relativePath.startsWith(r)||A(!1),a.relativePath=a.relativePath.slice(r.length));let i=E([r,a.relativePath]),l=n.concat(a);t.children&&t.children.length>0&&(!0===t.index&&A(!1),p(t.children,e,l,i)),(null!=t.path||t.index)&&e.push({path:i,score:g(i,t.index),routesMeta:l})})),e}const v=/^:\w+$/,m=t=>"*"===t;function g(t,e){let n=t.split("/"),r=n.length;return n.some(m)&&(r+=-2),e&&(r+=2),n.filter((t=>!m(t))).reduce(((t,e)=>t+(v.test(e)?3:""===e?1:10)),r)}function y(t,e){let{routesMeta:n}=t,r={},o="/",a=[];for(let t=0;t<n.length;++t){let i=n[t],l=t===n.length-1,s="/"===o?e:e.slice(o.length)||"/",c=w({path:i.relativePath,caseSensitive:i.caseSensitive,end:l},s);if(!c)return null;Object.assign(r,c.params);let u=i.route;a.push({params:r,pathname:E([o,c.pathname]),pathnameBase:M(E([o,c.pathnameBase])),route:u}),"/"!==c.pathnameBase&&(o=E([o,c.pathnameBase]))}return a}function w(t,e){"string"==typeof t&&(t={path:t,caseSensitive:!1,end:!0});let[n,r]=function(t,e,n){void 0===e&&(e=!1);void 0===n&&(n=!0);let r=[],o="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^$?{}|()[\]]/g,"\\$&").replace(/:(\w+)/g,((t,e)=>(r.push(e),"([^\\/]+)")));t.endsWith("*")?(r.push("*"),o+="*"===t||"/*"===t?"(.*)$":"(?:\\/(.+)|\\/*)$"):o+=n?"\\/*$":"(?:(?=[@.~-]|%[0-9A-F]{2})|\\b|\\/|$)";return[new RegExp(o,e?void 0:"i"),r]}(t.path,t.caseSensitive,t.end),o=e.match(n);if(!o)return null;let a=o[0],i=a.replace(/(.)\/+$/,"$1"),l=o.slice(1);return{params:r.reduce(((t,e,n)=>{if("*"===e){let t=l[n]||"";i=a.slice(0,a.length-t.length).replace(/(.)\/+$/,"$1")}return t[e]=function(t,e){try{return decodeURIComponent(t)}catch(e){return t}}(l[n]||""),t}),{}),pathname:a,pathnameBase:i,pattern:t}}function b(t,e){if("/"===e)return t;if(!t.toLowerCase().startsWith(e.toLowerCase()))return null;let n=t.charAt(e.length);return n&&"/"!==n?null:t.slice(e.length)||"/"}function A(t,e){if(!1===t||null==t)throw new Error(e)}function D(t,e){void 0===e&&(e="/");let{pathname:n,search:r="",hash:o=""}="string"==typeof t?d(t):t,a=n?n.startsWith("/")?n:function(t,e){let n=e.replace(/\/+$/,"").split("/");return t.split("/").forEach((t=>{".."===t?n.length>1&&n.pop():"."!==t&&n.push(t)})),n.length>1?n.join("/"):"/"}(n,e):e;return{pathname:a,search:P(r),hash:R(o)}}const E=t=>t.join("/").replace(/\/\/+/g,"/"),M=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),P=t=>t&&"?"!==t?t.startsWith("?")?t:"?"+t:"",R=t=>t&&"#"!==t?t.startsWith("#")?t:"#"+t:"";class x{constructor(t,e,n){this.status=t,this.statusText=e||"",this.data=n}}var S;!function(t){t.data="data",t.redirect="redirect",t.error="error"}(S||(S={}));const T={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0},C={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};function j(n){var r,o,a,i,l;n.routes.length>0||A(!1);let s=O(n.routes),h=null,p=null,v=null,m=null,g=null,y=!1,w=f(s,n.history.location),b=null;if(null==w){let{matches:t,route:e,error:n}=_(s);w=t,b={[e.id]:n}}let D,E=null==(null==(r=n.hydrationData)?void 0:r.errors)&&null!=(null==(o=n.hydrationData)?void 0:o.loaderData)&&w.filter((t=>t.route.loader)).some((t=>{var e,r;return void 0===(null==(e=n.hydrationData)||null==(r=e.loaderData)?void 0:r[t.route.id])}));E&&console.warn("The provided hydration data did not find loaderData for all matched routes with loaders. Performing a full initial data load");let M,P={historyAction:n.history.action,location:n.history.location,matches:w,initialized:null!=n.hydrationData&&!E,navigation:T,restoreScrollPosition:null,resetScrollPosition:!0,revalidation:"idle",loaderData:E?{}:(null==(a=n.hydrationData)?void 0:a.loaderData)||{},actionData:(null==(i=n.hydrationData)?void 0:i.actionData)||null,errors:(null==(l=n.hydrationData)?void 0:l.errors)||b,fetchers:new Map},R=null,j=!0,I=!1,W=!1,J=new Map,X=0,Y=-1,K=new Map,Q=new Set,Z=new Map;function tt(t){P=e({},P,t),null==p||p(P)}function et(r,o,a){tt(e({},null!=P.actionData&&null!=P.navigation.formMethod&&"loading"===P.navigation.state?{}:{actionData:null},a,{historyAction:r,location:o,initialized:!0,navigation:T,revalidation:"idle",loaderData:B(P,a),restoreScrollPosition:!P.navigation.formData&&st(o,a.matches||P.matches),resetScrollPosition:j})),I||r===t.Action.Pop||(r===t.Action.Push?n.history.push(o,o.state):r===t.Action.Replace&&n.history.replace(o,o.state)),R=null,j=!0,I=!1,W=!1}async function nt(t,n,r){var o;null==(o=M)||o.abort(),R=t,I=!0===(null==r?void 0:r.startUninterruptedRevalidation),function(t,e){if(v&&m&&g){let n=m(t,e)||t.key;v[n]=g()}}(P.location,P.matches),j=!1!==(null==r?void 0:r.resetScroll);let a=null==r?void 0:r.overrideNavigation,i=f(s,n);if(!i){let{matches:e,route:r,error:o}=_(s);return void et(t,n,{matches:e,errors:{[r.id]:o}})}if(null!=r&&r.pendingError){return void et(t,n,{matches:i,errors:{[N(i).route.id]:null==r?void 0:r.pendingError}})}if(l=P.location,u=n,l.pathname===u.pathname&&l.search===u.search&&l.hash!==u.hash)return void et(t,n,{matches:i});var l,u;let d=null,h=null;if(null!=r&&r.submission){let t=await async function(t,n,r,o){W=!0,o[o.length-1].route.index&&!V(n.search)&&(o=o.slice(0,-1));let a;tt({navigation:e({state:"submitting",location:n},r)});let i=o.slice(-1)[0];if(i.route.action){let t=new AbortController;if(M=t,a=await L(i,n,t.signal,r),t.signal.aborted)return{shortCircuited:!0};M=null}else a={type:S.error,error:new x(405,"Method Not Allowed","No action found for ["+q(n)+"]")};if(G(a)){let t=e({state:"loading",location:c(P.location,a.location)},r);return await ot(a,t),{shortCircuited:!0}}if(z(a)){return{pendingActionError:{[N(o,i.route.id).route.id]:a.error}}}return{pendingActionData:{[i.route.id]:a.data}}}(0,n,r.submission,i);if(t.shortCircuited)return;d=t.pendingActionData||null,h=t.pendingActionError||null,a=e({state:"loading",location:n},r.submission)}let{shortCircuited:p,loaderData:y,errors:w}=await async function(t,n,r,o,a,i,l){let s=a;if(!s){s={state:"loading",location:n,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0}}let[c,u]=H(P,o,r,n,W,i,l,Z);if(0===c.length&&0===u.length)return et(t,n,{matches:o,errors:l||null,actionData:i||null}),{shortCircuited:!0};I||(u.forEach((t=>{var e;let[n]=t,r={state:"loading",data:null==(e=P.fetchers.get(n))?void 0:e.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};P.fetchers.set(n,r)})),tt(e({navigation:s,actionData:i||P.actionData||null},u.length>0?{fetchers:new Map(P.fetchers)}:{})));let d=new AbortController;M=d,Y=++X,u.forEach((t=>{let[e]=t;return J.set(e,d)}));let h=await Promise.all([...c.map((t=>L(t,n,d.signal))),...u.map((t=>{let[,e,n]=t;return L(n,e,d.signal)}))]),f=h.slice(0,c.length),p=h.slice(c.length);if(d.signal.aborted)return{shortCircuited:!0};M=null,u.forEach((t=>J.delete(t)));let v=F(h);if(v){let t=$(P,v);return await ot(v,t),{shortCircuited:!0}}let{loaderData:m,errors:g}=U(P,o,c,f,l,u,p);!function(){let t=[];for(let e of Q){let n=P.fetchers.get(e);n||A(!1),"loading"===n.state&&(Q.delete(e),t.push(e))}it(t)}();let y=lt(Y);return e({loaderData:m,errors:g},y||u.length>0?{fetchers:new Map(P.fetchers)}:{})}(t,n,null==r?void 0:r.submission,i,a,d,h);p||et(t,n,{matches:i,loaderData:y,errors:w})}function rt(t){return P.fetchers.get(t)||C}async function ot(e,n){e.revalidate&&(W=!0),n.location||A(!1),await nt(t.Action.Replace,n.location,{overrideNavigation:n})}function at(t){let e=J.get(t);e||A(!1),e.abort(),J.delete(t)}function it(t){for(let e of t){let t={state:"idle",data:rt(e).data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};P.fetchers.set(e,t)}}function lt(t){let e=[];for(let[n,r]of K)if(r<t){let t=P.fetchers.get(n);t||A(!1),"loading"===t.state&&(at(n),K.delete(n),e.push(n))}return it(e),e.length>0}function st(t,e){if(v&&m&&g){let n=m(t,e)||t.key,r=v[n];if("number"==typeof r)return r}return null}return D={get state(){return P},initialize:function(){return h=n.history.listen((t=>{let{action:e,location:n}=t;return nt(e,n)})),P.initialized||nt(t.Action.Pop,P.location),D},subscribe:function(t){if(p)throw new Error("A router only accepts one active subscriber");return p=t,()=>{p=null}},enableScrollRestoration:function(t,e,n){if(v=t,g=e,m=n||(t=>t.key),!y&&P.navigation===T){y=!0;let t=st(P.location,P.matches);null!=t&&tt({restoreScrollPosition:t})}return()=>{v=null,g=null,m=null}},navigate:async function(e,r){if("number"==typeof e)return void n.history.go(e);let{path:o,submission:a,error:i}=k("string"==typeof e?d(e):e,r),l=c(P.location,o,null==r?void 0:r.state),s=null!=r&&r.replace?t.Action.Replace:t.Action.Push,u=r&&"resetScroll"in r?r.resetScroll:void 0;return await nt(s,l,{submission:a,pendingError:i,resetScroll:u})},fetch:function(t,n,r){var o;if("undefined"==typeof AbortController)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.");let a=f(s,n);a||A(!1),J.has(t)&&at(t);let i=a[a.length-1].route.index&&!V(d(n).search||"")?a.slice(-2)[0]:a.slice(-1)[0],{path:l,submission:h}=k(d(n),r);if(h)return void async function(t,n,r,o){var a;W=!0,Z.delete(t);let i=e({state:"submitting"},o,{data:(null==(a=P.fetchers.get(t))?void 0:a.data)||void 0});P.fetchers.set(t,i),tt({fetchers:new Map(P.fetchers)});let l=new AbortController;J.set(t,l);let u=await L(r,n,l.signal,o);if(l.signal.aborted)return;if(G(u)){Q.add(t);let n=e({state:"loading"},o,{data:void 0});P.fetchers.set(t,n),tt({fetchers:new Map(P.fetchers)});let r=e({state:"loading",location:c(P.location,u.location)},o);return void await ot(u,r)}if(z(u)){let e=N(P.matches,r.route.id);return P.fetchers.delete(t),void tt({fetchers:new Map(P.fetchers),errors:{[e.route.id]:u.error}})}let d=P.navigation.location||P.location,h="idle"!==P.navigation.state?f(s,P.navigation.location):P.matches;h||A(!1);let p=++X;K.set(t,p);let v=e({state:"loading",data:u.data},o);P.fetchers.set(t,v);let[m,g]=H(P,h,o,d,W,{[r.route.id]:u.data},null,Z);g.filter((e=>{let[n]=e;return n!==t})).forEach((e=>{var n;let[r]=e,o={state:"loading",data:null==(n=P.fetchers.get(t))?void 0:n.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};P.fetchers.set(r,o),J.set(r,l)})),tt({fetchers:new Map(P.fetchers)});let y=await Promise.all([...m.map((t=>L(t,d,l.signal))),...g.map((t=>{let[,e,n]=t;return L(n,e,l.signal)}))]),w=y.slice(0,m.length),b=y.slice(m.length);if(l.signal.aborted)return;K.delete(t),J.delete(t),g.forEach((t=>J.delete(t)));let D=F(w);if(D){let t=$(P,D);return void await ot(D,t)}let{loaderData:E,errors:x}=U(P,P.matches,m,w,null,g,b),S={state:"idle",data:u.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};P.fetchers.set(t,S);let T=lt(p);if("loading"===P.navigation.state&&p>Y){var C;R||A(!1),null==(C=M)||C.abort(),et(R,P.navigation.location,{matches:h,loaderData:E,errors:x,fetchers:new Map(P.fetchers)})}else tt(e({errors:x,loaderData:E},T?{fetchers:new Map(P.fetchers)}:{})),W=!1}(t,n,i,h);let p={state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,data:(null==(o=P.fetchers.get(t))?void 0:o.data)||void 0};!async function(t,e,n,r){P.fetchers.set(t,r),tt({fetchers:new Map(P.fetchers)}),Z.set(t,[e,n]);let o=new AbortController;J.set(t,o);let a=await L(n,e,o.signal);if(o.signal.aborted)return;if(J.delete(t),G(a)){let t=$(P,a);return void await ot(a,t)}if(z(a)){let e=N(P.matches,n.route.id);return P.fetchers.delete(t),void tt({fetchers:new Map(P.fetchers),errors:{[e.route.id]:a.error}})}let i={state:"idle",data:a.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};P.fetchers.set(t,i),tt({fetchers:new Map(P.fetchers)})}(t,u(l),i,p)},revalidate:function(){W=!0,tt({revalidation:"loading"}),"submitting"===P.navigation.state&&"get"!==P.navigation.formMethod||("idle"!==P.navigation.state?nt(R||P.historyAction,P.navigation.location,{overrideNavigation:P.navigation}):nt(P.historyAction,P.location,{startUninterruptedRevalidation:!0}))},createHref:q,getFetcher:rt,deleteFetcher:function(t){J.has(t)&&at(t),Z.delete(t),K.delete(t),Q.delete(t),P.fetchers.delete(t)},dispose:function(){var t;h&&h(),p=null,null==(t=M)||t.abort();for(let[,t]of J)t.abort()},_internalFetchControllers:J},D}function O(t,n,r){return void 0===n&&(n=[]),void 0===r&&(r=new Set),t.map(((t,o)=>{let a=[...n,o],i="string"==typeof t.id?t.id:a.join("-");return r.has(i)&&A(!1),r.add(i),e({},t,{id:i,children:t.children?O(t.children,a,r):void 0})}))}function k(t,n){if(!n||!("formMethod"in n)&&!("formData"in n))return{path:t};if(null!=n.formMethod&&"get"!==n.formMethod)return{path:t,submission:{formMethod:n.formMethod,formAction:q(t),formEncType:(null==n?void 0:n.formEncType)||"application/x-www-form-urlencoded",formData:n.formData}};if(!n.formData)return{path:t};let r=new URLSearchParams(t.search);for(let[e,o]of n.formData){if("string"!=typeof o)return{path:t,error:new x(400,"Bad Request","Cannot submit binary form data using GET")};r.append(e,o)}return{path:e({},t,{search:"?"+r})}}function $(t,e){let{formMethod:n,formAction:r,formEncType:o,formData:a}=t.navigation;return{state:"loading",location:c(t.location,e.location),formMethod:n||void 0,formAction:r||void 0,formEncType:o||void 0,formData:a||void 0}}function H(t,e,n,r,o,a,i,l){let s=i?e.findIndex((t=>t.route.id===Object.keys(i)[0])):e.length,c=i?Object.values(i)[0]:a?Object.values(a)[0]:null,u=e.filter(((e,a)=>!(!e.route.loader||a>=s)&&(function(t,e,n){let r=!e||n.route.id!==e.route.id,o=void 0===t[n.route.id];return r||o}(t.loaderData,t.matches[a],e)||I(t.location,t.matches[a],n,r,e,o,c)))),d=[];if(o)for(let t of l.entries()){let[e,[r,a]]=t;I(r,a,n,r,a,o,c)&&d.push([e,r,a])}return[u,d]}function I(t,n,r,o,a,i,l){var s;let c=J(t),u=n.params,d=J(o),h=a.params,f=n.pathname!==a.pathname||(null==(s=n.route.path)?void 0:s.endsWith("*"))&&n.params["*"]!==a.params["*"]||c.toString()===d.toString()||c.search!==d.search||i;return a.route.shouldRevalidate?a.route.shouldRevalidate(e({currentUrl:c,currentParams:u,nextUrl:d,nextParams:h},r,{actionResult:l,defaultShouldRevalidate:f})):f}async function L(t,e,n,r){let o,a=S.data;try{let a=r?"action":"loader",i=t.route[a];i||A(!1),o=await i({params:t.params,request:W(e,r),signal:n})}catch(t){a=S.error,o=t}if(o instanceof Response){var i;let t,e=o.status,n=o.headers.get("Location");return e>=300&&e<=399&&null!=n?{type:S.redirect,status:e,location:n,revalidate:null!==o.headers.get("X-Remix-Revalidate")}:(t=null!=(i=o.headers.get("Content-Type"))&&i.startsWith("application/json")?await o.json():await o.text(),a===S.error?{type:a,error:new x(e,o.statusText,t)}:{type:a,data:t})}return a===S.error?{type:a,error:o}:{type:a,data:o}}function W(t,e){let n=J(t).toString();if(!e)return new Request(n);let{formMethod:r,formEncType:o,formData:a}=e,i=a;if("application/x-www-form-urlencoded"===o){i=new URLSearchParams;for(let[t,e]of a.entries())"string"!=typeof e&&A(!1),i.append(t,e)}return new Request(n,{method:r.toUpperCase(),headers:{"Content-Type":o},body:i})}function U(t,n,r,o,a,i,l){let s={},c=null;return o.forEach(((t,e)=>{let o=r[e].route.id;if(G(t)&&A(!1),z(t)){let e=N(n,o),r=t.error;a&&(r=Object.values(a)[0],a=null),c=Object.assign(c||{},{[e.route.id]:r})}else s[o]=t.data})),a&&(c=a),i.forEach(((n,r)=>{let[o,a,i]=n,s=l[r];if(z(s)){var u;let n=N(t.matches,i.route.id);null!=(u=c)&&u[n.route.id]||(c=e({},c,{[n.route.id]:s.error})),t.fetchers.delete(o)}else if(G(s))A(!1);else{let e={state:"idle",data:s.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};t.fetchers.set(o,e)}})),{loaderData:s,errors:c}}function B(t,n){let r=(n.matches||t.matches).filter((e=>{var r;return void 0!==t.loaderData[e.route.id]&&void 0===(null==(r=n.loaderData)?void 0:r[e.route.id])}));return e({},n.loaderData,r.reduce(((e,n)=>Object.assign(e,{[n.route.id]:t.loaderData[n.route.id]})),{}))}function N(t,e){return(e?t.slice(0,t.findIndex((t=>t.route.id===e))+1):[...t]).reverse().find((t=>t.route.errorElement))||t[0]}function _(t){let e=t.find((t=>t.index||""===t.path||"/"===t.path))||{id:"__shim-404-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:e}],route:e,error:new x(404,"Not Found",null)}}function F(t){for(let e=t.length-1;e>=0;e--){let n=t[e];if(G(n))return n}}function q(t){return(t.pathname||"")+(t.search||"")}function z(t){return t.type===S.error}function G(t){return(null==t?void 0:t.type)===S.redirect}function V(t){return new URLSearchParams(t).getAll("index").some((t=>""===t))}function J(t){let e="undefined"!=typeof window&&void 0!==window.location?window.location.origin:"unknown://unknown",n="string"==typeof t?t:q(t);return new URL(n,e)}const X=["initialEntries","initialIndex"],Y=["window"],K=["window"];t.IDLE_FETCHER=C,t.IDLE_NAVIGATION=T,t.createBrowserHistory=i,t.createBrowserRouter=function(t){let{window:r}=t,o=n(t,Y);return j(e({history:i({window:r})},o))},t.createHashHistory=l,t.createHashRouter=function(t){let{window:r}=t,o=n(t,K);return j(e({history:l({window:r})},o))},t.createMemoryHistory=a,t.createMemoryRouter=function(t){let{initialEntries:r,initialIndex:o}=t,i=n(t,X);return j(e({history:a({initialEntries:r,initialIndex:o})},i))},t.createPath=u,t.createRouter=j,t.generatePath=function(t,e){return void 0===e&&(e={}),t.replace(/:(\w+)/g,((t,n)=>(null==e[n]&&A(!1),e[n]))).replace(/\/*\*$/,(t=>null==e["*"]?"":e["*"].replace(/^\/*/,"/")))},t.getToPathname=function(t){return""===t||""===t.pathname?"/":"string"==typeof t?d(t).pathname:t.pathname},t.invariant=A,t.isRouteErrorResponse=function(t){return t instanceof x},t.joinPaths=E,t.json=function(t,n){void 0===n&&(n={});let r="number"==typeof n?{status:n}:n,o=new Headers(r.headers);return o.has("Content-Type")||o.set("Content-Type","application/json; charset=utf-8"),new Response(JSON.stringify(t),e({},r,{headers:o}))},t.matchPath=w,t.matchRoutes=f,t.normalizePathname=M,t.parsePath=d,t.redirect=function(t,n){void 0===n&&(n=302);let r=n;"number"==typeof r?r={status:r}:void 0===r.status&&(r.status=302);let o=new Headers(r.headers);return o.set("Location",t),new Response(null,e({},r,{headers:o}))},t.resolvePath=D,t.resolveTo=function(t,n,r){let o,a="string"==typeof t?d(t):e({},t),i=""===t||""===a.pathname?"/":a.pathname;if(null==i)o=r;else{let t=n.length-1;if(i.startsWith("..")){let e=i.split("/");for(;".."===e[0];)e.shift(),t-=1;a.pathname=e.join("/")}o=t>=0?n[t]:"/"}let l=D(a,o);return i&&"/"!==i&&i.endsWith("/")&&!l.pathname.endsWith("/")&&(l.pathname+="/"),l},t.stripBasename=b,t.warning=function(t,e){if(!t){"undefined"!=typeof console&&console.warn(e);try{throw new Error(e)}catch(t){}}},Object.defineProperty(t,"__esModule",{value:!0})}));
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Router={})}(this,(function(t){"use strict";function e(){return e=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},e.apply(this,arguments)}function n(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r<a.length;r++)n=a[r],e.indexOf(n)>=0||(o[n]=t[n]);return o}var r;t.Action=void 0,(r=t.Action||(t.Action={})).Pop="POP",r.Push="PUSH",r.Replace="REPLACE";const o="popstate";function a(e){void 0===e&&(e={});let n,{initialEntries:r=["/"],initialIndex:o,v5Compat:a=!1}=e;n=r.map(((t,e)=>f(t,null,0===e?"default":void 0)));let i=d(null==o?n.length-1:o),l=t.Action.Pop,s=null;function d(t){return Math.min(Math.max(t,0),n.length-1)}function h(){return n[i]}function f(t,e,r){return void 0===e&&(e=null),c(n?h().pathname:"/",t,e,r)}return{get index(){return i},get action(){return l},get location(){return h()},createHref:t=>"string"==typeof t?t:u(t),push(e,r){l=t.Action.Push;let o=f(e,r);i+=1,n.splice(i,n.length,o),a&&s&&s({action:l,location:o})},replace(e,r){l=t.Action.Replace;let o=f(e,r);n[i]=o,a&&s&&s({action:l,location:o})},go(e){l=t.Action.Pop,i=d(i+e),s&&s({action:l,location:h()})},listen:t=>(s=t,()=>{s=null})}}function i(t){return void 0===t&&(t={}),h((function(t,e){var n,r;let{pathname:o,search:a,hash:i}=t.location;return c("",{pathname:o,search:a,hash:i},(null==(n=e.state)?void 0:n.usr)||null,(null==(r=e.state)?void 0:r.key)||"default")}),(function(t,e){return"string"==typeof e?e:u(e)}),null,t)}function l(t){return void 0===t&&(t={}),h((function(t,e){var n,r;let{pathname:o="/",search:a="",hash:i=""}=d(t.location.hash.substr(1));return c("",{pathname:o,search:a,hash:i},(null==(n=e.state)?void 0:n.usr)||null,(null==(r=e.state)?void 0:r.key)||"default")}),(function(t,e){let n=t.document.querySelector("base"),r="";if(n&&n.getAttribute("href")){let e=t.location.href,n=e.indexOf("#");r=-1===n?e:e.slice(0,n)}return r+"#"+("string"==typeof e?e:u(e))}),(function(t,e){}),t)}function s(t){return{usr:t.state,key:t.key}}function c(t,n,r,o){return void 0===r&&(r=null),e({pathname:"string"==typeof t?t:t.pathname,search:"",hash:""},"string"==typeof n?d(n):n,{state:r,key:(null==n?void 0:n.key)||o||Math.random().toString(36).substr(2,8)})}function u(t){let{pathname:e="/",search:n="",hash:r=""}=t;return n&&"?"!==n&&(e+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(e+="#"===r.charAt(0)?r:"#"+r),e}function d(t){let e={};if(t){let n=t.indexOf("#");n>=0&&(e.hash=t.substr(n),t=t.substr(0,n));let r=t.indexOf("?");r>=0&&(e.search=t.substr(r),t=t.substr(0,r)),t&&(e.pathname=t)}return e}function h(e,n,r,a){void 0===a&&(a={});let{window:i=document.defaultView,v5Compat:l=!1}=a,u=i.history,d=t.Action.Pop,h=null;function f(){d=t.Action.Pop,h&&h({action:d,location:p.location})}let p={get action(){return d},get location(){return e(i,u)},listen(t){if(h)throw new Error("A history only accepts one active listener");return i.addEventListener(o,f),h=t,()=>{i.removeEventListener(o,f),h=null}},createHref:t=>n(i,t),push:function(e,n){d=t.Action.Push;let o=c(p.location,e,n);null==r||r(o,e);let a=s(o),f=p.createHref(o);try{u.pushState(a,"",f)}catch(t){i.location.assign(f)}l&&h&&h({action:d,location:o})},replace:function(e,n){d=t.Action.Replace;let o=c(p.location,e,n);null==r||r(o,e);let a=s(o),i=p.createHref(o);u.replaceState(a,"",i),l&&h&&h({action:d,location:o})},go:t=>u.go(t)};return p}function f(t,e,n){void 0===n&&(n="/");let r=b(("string"==typeof e?d(e):e).pathname||"/",n);if(null==r)return null;let o=p(t);!function(t){t.sort(((t,e)=>t.score!==e.score?e.score-t.score:function(t,e){return t.length===e.length&&t.slice(0,-1).every(((t,n)=>t===e[n]))?t[t.length-1]-e[e.length-1]:0}(t.routesMeta.map((t=>t.childrenIndex)),e.routesMeta.map((t=>t.childrenIndex)))))}(o);let a=null;for(let t=0;null==a&&t<o.length;++t)a=y(o[t],r);return a}function p(t,e,n,r){return void 0===e&&(e=[]),void 0===n&&(n=[]),void 0===r&&(r=""),t.forEach(((t,o)=>{let a={relativePath:t.path||"",caseSensitive:!0===t.caseSensitive,childrenIndex:o,route:t};a.relativePath.startsWith("/")&&(a.relativePath.startsWith(r)||A(!1),a.relativePath=a.relativePath.slice(r.length));let i=E([r,a.relativePath]),l=n.concat(a);t.children&&t.children.length>0&&(!0===t.index&&A(!1),p(t.children,e,l,i)),(null!=t.path||t.index)&&e.push({path:i,score:g(i,t.index),routesMeta:l})})),e}const v=/^:\w+$/,m=t=>"*"===t;function g(t,e){let n=t.split("/"),r=n.length;return n.some(m)&&(r+=-2),e&&(r+=2),n.filter((t=>!m(t))).reduce(((t,e)=>t+(v.test(e)?3:""===e?1:10)),r)}function y(t,e){let{routesMeta:n}=t,r={},o="/",a=[];for(let t=0;t<n.length;++t){let i=n[t],l=t===n.length-1,s="/"===o?e:e.slice(o.length)||"/",c=w({path:i.relativePath,caseSensitive:i.caseSensitive,end:l},s);if(!c)return null;Object.assign(r,c.params);let u=i.route;a.push({params:r,pathname:E([o,c.pathname]),pathnameBase:M(E([o,c.pathnameBase])),route:u}),"/"!==c.pathnameBase&&(o=E([o,c.pathnameBase]))}return a}function w(t,e){"string"==typeof t&&(t={path:t,caseSensitive:!1,end:!0});let[n,r]=function(t,e,n){void 0===e&&(e=!1);void 0===n&&(n=!0);let r=[],o="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^$?{}|()[\]]/g,"\\$&").replace(/:(\w+)/g,((t,e)=>(r.push(e),"([^\\/]+)")));t.endsWith("*")?(r.push("*"),o+="*"===t||"/*"===t?"(.*)$":"(?:\\/(.+)|\\/*)$"):o+=n?"\\/*$":"(?:(?=[@.~-]|%[0-9A-F]{2})|\\b|\\/|$)";return[new RegExp(o,e?void 0:"i"),r]}(t.path,t.caseSensitive,t.end),o=e.match(n);if(!o)return null;let a=o[0],i=a.replace(/(.)\/+$/,"$1"),l=o.slice(1);return{params:r.reduce(((t,e,n)=>{if("*"===e){let t=l[n]||"";i=a.slice(0,a.length-t.length).replace(/(.)\/+$/,"$1")}return t[e]=function(t,e){try{return decodeURIComponent(t)}catch(e){return t}}(l[n]||""),t}),{}),pathname:a,pathnameBase:i,pattern:t}}function b(t,e){if("/"===e)return t;if(!t.toLowerCase().startsWith(e.toLowerCase()))return null;let n=t.charAt(e.length);return n&&"/"!==n?null:t.slice(e.length)||"/"}function A(t,e){if(!1===t||null==t)throw new Error(e)}function D(t,e){void 0===e&&(e="/");let{pathname:n,search:r="",hash:o=""}="string"==typeof t?d(t):t,a=n?n.startsWith("/")?n:function(t,e){let n=e.replace(/\/+$/,"").split("/");return t.split("/").forEach((t=>{".."===t?n.length>1&&n.pop():"."!==t&&n.push(t)})),n.length>1?n.join("/"):"/"}(n,e):e;return{pathname:a,search:P(r),hash:R(o)}}const E=t=>t.join("/").replace(/\/\/+/g,"/"),M=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),P=t=>t&&"?"!==t?t.startsWith("?")?t:"?"+t:"",R=t=>t&&"#"!==t?t.startsWith("#")?t:"#"+t:"";class x{constructor(t,e,n){this.status=t,this.statusText=e||"",this.data=n}}var S;!function(t){t.data="data",t.redirect="redirect",t.error="error"}(S||(S={}));const T={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0},C={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};function j(n){var r,o,a,i,l;n.routes.length>0||A(!1);let s=O(n.routes),h=null,p=null,v=null,m=null,g=null,y=!1,w=f(s,n.history.location),b=null;if(null==w){let{matches:t,route:e,error:n}=_(s);w=t,b={[e.id]:n}}let D,E=null==(null==(r=n.hydrationData)?void 0:r.errors)&&null!=(null==(o=n.hydrationData)?void 0:o.loaderData)&&w.filter((t=>t.route.loader)).some((t=>{var e,r;return void 0===(null==(e=n.hydrationData)||null==(r=e.loaderData)?void 0:r[t.route.id])}));E&&console.warn("The provided hydration data did not find loaderData for all matched routes with loaders. Performing a full initial data load");let M,P={historyAction:n.history.action,location:n.history.location,matches:w,initialized:null!=n.hydrationData&&!E,navigation:T,restoreScrollPosition:null,resetScrollPosition:!0,revalidation:"idle",loaderData:E?{}:(null==(a=n.hydrationData)?void 0:a.loaderData)||{},actionData:(null==(i=n.hydrationData)?void 0:i.actionData)||null,errors:(null==(l=n.hydrationData)?void 0:l.errors)||b,fetchers:new Map},R=null,j=!0,I=!1,W=!1,J=new Map,X=0,Y=-1,K=new Map,Q=new Set,Z=new Map;function tt(t){P=e({},P,t),null==p||p(P)}function et(r,o,a){tt(e({},null!=P.actionData&&null!=P.navigation.formMethod&&"loading"===P.navigation.state?{}:{actionData:null},a,{historyAction:r,location:o,initialized:!0,navigation:T,revalidation:"idle",loaderData:B(P,a),restoreScrollPosition:!P.navigation.formData&&st(o,a.matches||P.matches),resetScrollPosition:j})),I||r===t.Action.Pop||(r===t.Action.Push?n.history.push(o,o.state):r===t.Action.Replace&&n.history.replace(o,o.state)),R=null,j=!0,I=!1,W=!1}async function nt(t,n,r){var o;null==(o=M)||o.abort(),R=t,I=!0===(null==r?void 0:r.startUninterruptedRevalidation),function(t,e){if(v&&m&&g){let n=m(t,e)||t.key;v[n]=g()}}(P.location,P.matches),j=!1!==(null==r?void 0:r.resetScroll);let a=null==r?void 0:r.overrideNavigation,i=f(s,n);if(!i){let{matches:e,route:r,error:o}=_(s);return void et(t,n,{matches:e,errors:{[r.id]:o}})}if(null!=r&&r.pendingError){return void et(t,n,{matches:i,errors:{[N(i).route.id]:null==r?void 0:r.pendingError}})}if(l=P.location,u=n,l.pathname===u.pathname&&l.search===u.search&&l.hash!==u.hash)return void et(t,n,{matches:i});var l,u;let d=null,h=null;if(null!=r&&r.submission){let t=await async function(t,n,r,o){W=!0,o[o.length-1].route.index&&!V(n.search)&&(o=o.slice(0,-1));let a;tt({navigation:e({state:"submitting",location:n},r)});let i=o.slice(-1)[0];if(i.route.action){let t=new AbortController;if(M=t,a=await L(i,n,t.signal,r),t.signal.aborted)return{shortCircuited:!0};M=null}else a={type:S.error,error:new x(405,"Method Not Allowed","No action found for ["+q(n)+"]")};if(G(a)){let t=e({state:"loading",location:c(P.location,a.location)},r);return await ot(a,t),{shortCircuited:!0}}if(z(a)){return{pendingActionError:{[N(o,i.route.id).route.id]:a.error}}}return{pendingActionData:{[i.route.id]:a.data}}}(0,n,r.submission,i);if(t.shortCircuited)return;d=t.pendingActionData||null,h=t.pendingActionError||null,a=e({state:"loading",location:n},r.submission)}let{shortCircuited:p,loaderData:y,errors:w}=await async function(t,n,r,o,a,i,l){let s=a;if(!s){s={state:"loading",location:n,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0}}let[c,u]=H(P,o,r,n,W,i,l,Z);if(0===c.length&&0===u.length)return et(t,n,{matches:o,errors:l||null,actionData:i||null}),{shortCircuited:!0};I||(u.forEach((t=>{var e;let[n]=t,r={state:"loading",data:null==(e=P.fetchers.get(n))?void 0:e.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};P.fetchers.set(n,r)})),tt(e({navigation:s,actionData:i||P.actionData||null},u.length>0?{fetchers:new Map(P.fetchers)}:{})));let d=new AbortController;M=d,Y=++X,u.forEach((t=>{let[e]=t;return J.set(e,d)}));let h=await Promise.all([...c.map((t=>L(t,n,d.signal))),...u.map((t=>{let[,e,n]=t;return L(n,e,d.signal)}))]),f=h.slice(0,c.length),p=h.slice(c.length);if(d.signal.aborted)return{shortCircuited:!0};M=null,u.forEach((t=>J.delete(t)));let v=F(h);if(v){let t=$(P,v);return await ot(v,t),{shortCircuited:!0}}let{loaderData:m,errors:g}=U(P,o,c,f,l,u,p);!function(){let t=[];for(let e of Q){let n=P.fetchers.get(e);n||A(!1),"loading"===n.state&&(Q.delete(e),t.push(e))}it(t)}();let y=lt(Y);return e({loaderData:m,errors:g},y||u.length>0?{fetchers:new Map(P.fetchers)}:{})}(t,n,null==r?void 0:r.submission,i,a,d,h);p||et(t,n,{matches:i,loaderData:y,errors:w})}function rt(t){return P.fetchers.get(t)||C}async function ot(e,n){e.revalidate&&(W=!0),n.location||A(!1),await nt(t.Action.Replace,n.location,{overrideNavigation:n})}function at(t){let e=J.get(t);e||A(!1),e.abort(),J.delete(t)}function it(t){for(let e of t){let t={state:"idle",data:rt(e).data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};P.fetchers.set(e,t)}}function lt(t){let e=[];for(let[n,r]of K)if(r<t){let t=P.fetchers.get(n);t||A(!1),"loading"===t.state&&(at(n),K.delete(n),e.push(n))}return it(e),e.length>0}function st(t,e){if(v&&m&&g){let n=m(t,e)||t.key,r=v[n];if("number"==typeof r)return r}return null}return D={get state(){return P},initialize:function(){return h=n.history.listen((t=>{let{action:e,location:n}=t;return nt(e,n)})),P.initialized||nt(t.Action.Pop,P.location),D},subscribe:function(t){if(p)throw new Error("A router only accepts one active subscriber");return p=t,()=>{p=null}},enableScrollRestoration:function(t,e,n){if(v=t,g=e,m=n||(t=>t.key),!y&&P.navigation===T){y=!0;let t=st(P.location,P.matches);null!=t&&tt({restoreScrollPosition:t})}return()=>{v=null,g=null,m=null}},navigate:async function(e,r){if("number"==typeof e)return void n.history.go(e);let{path:o,submission:a,error:i}=k("string"==typeof e?d(e):e,r),l=c(P.location,o,null==r?void 0:r.state),s=null!=r&&r.replace?t.Action.Replace:t.Action.Push,u=r&&"resetScroll"in r?r.resetScroll:void 0;return await nt(s,l,{submission:a,pendingError:i,resetScroll:u})},fetch:function(t,n,r,o){var a;if("undefined"==typeof AbortController)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.");let i=f(s,r);i||A(!1),J.has(t)&&at(t);let l=i[i.length-1].route.index&&!V(d(r).search||"")?i.slice(-2)[0]:i.slice(-1)[0],{path:h,submission:p}=k(d(r),o);if(p)return void async function(t,n,r,o,a){var i;W=!0,Z.delete(t);let l=e({state:"submitting"},a,{data:(null==(i=P.fetchers.get(t))?void 0:i.data)||void 0});P.fetchers.set(t,l),tt({fetchers:new Map(P.fetchers)});let u=new AbortController;J.set(t,u);let d=await L(o,r,u.signal,a);if(u.signal.aborted)return;if(G(d)){Q.add(t);let n=e({state:"loading"},a,{data:void 0});P.fetchers.set(t,n),tt({fetchers:new Map(P.fetchers)});let r=e({state:"loading",location:c(P.location,d.location)},a);return void await ot(d,r)}if(z(d)){let e=N(P.matches,n);return P.fetchers.delete(t),void tt({fetchers:new Map(P.fetchers),errors:{[e.route.id]:d.error}})}let h=P.navigation.location||P.location,p="idle"!==P.navigation.state?f(s,P.navigation.location):P.matches;p||A(!1);let v=++X;K.set(t,v);let m=e({state:"loading",data:d.data},a);P.fetchers.set(t,m);let[g,y]=H(P,p,a,h,W,{[o.route.id]:d.data},null,Z);y.filter((e=>{let[n]=e;return n!==t})).forEach((e=>{var n;let[r]=e,o={state:"loading",data:null==(n=P.fetchers.get(t))?void 0:n.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};P.fetchers.set(r,o),J.set(r,u)})),tt({fetchers:new Map(P.fetchers)});let w=await Promise.all([...g.map((t=>L(t,h,u.signal))),...y.map((t=>{let[,e,n]=t;return L(n,e,u.signal)}))]),b=w.slice(0,g.length),D=w.slice(g.length);if(u.signal.aborted)return;K.delete(t),J.delete(t),y.forEach((t=>J.delete(t)));let E=F(b);if(E){let t=$(P,E);return void await ot(E,t)}let{loaderData:x,errors:S}=U(P,P.matches,g,b,null,y,D),T={state:"idle",data:d.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};P.fetchers.set(t,T);let C=lt(v);if("loading"===P.navigation.state&&v>Y){var j;R||A(!1),null==(j=M)||j.abort(),et(R,P.navigation.location,{matches:p,loaderData:x,errors:S,fetchers:new Map(P.fetchers)})}else tt(e({errors:S,loaderData:x},C?{fetchers:new Map(P.fetchers)}:{})),W=!1}(t,n,r,l,p);let v={state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,data:(null==(a=P.fetchers.get(t))?void 0:a.data)||void 0};!async function(t,e,n,r,o){P.fetchers.set(t,o),tt({fetchers:new Map(P.fetchers)}),Z.set(t,[n,r]);let a=new AbortController;J.set(t,a);let i=await L(r,n,a.signal);if(a.signal.aborted)return;if(J.delete(t),G(i)){let t=$(P,i);return void await ot(i,t)}if(z(i)){let n=N(P.matches,e);return P.fetchers.delete(t),void tt({fetchers:new Map(P.fetchers),errors:{[n.route.id]:i.error}})}let l={state:"idle",data:i.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};P.fetchers.set(t,l),tt({fetchers:new Map(P.fetchers)})}(t,n,u(h),l,v)},revalidate:function(){W=!0,tt({revalidation:"loading"}),"submitting"===P.navigation.state&&"get"!==P.navigation.formMethod||("idle"!==P.navigation.state?nt(R||P.historyAction,P.navigation.location,{overrideNavigation:P.navigation}):nt(P.historyAction,P.location,{startUninterruptedRevalidation:!0}))},createHref:q,getFetcher:rt,deleteFetcher:function(t){J.has(t)&&at(t),Z.delete(t),K.delete(t),Q.delete(t),P.fetchers.delete(t)},dispose:function(){var t;h&&h(),p=null,null==(t=M)||t.abort();for(let[,t]of J)t.abort()},_internalFetchControllers:J},D}function O(t,n,r){return void 0===n&&(n=[]),void 0===r&&(r=new Set),t.map(((t,o)=>{let a=[...n,o],i="string"==typeof t.id?t.id:a.join("-");return r.has(i)&&A(!1),r.add(i),e({},t,{id:i,children:t.children?O(t.children,a,r):void 0})}))}function k(t,n){if(!n||!("formMethod"in n)&&!("formData"in n))return{path:t};if(null!=n.formMethod&&"get"!==n.formMethod)return{path:t,submission:{formMethod:n.formMethod,formAction:q(t),formEncType:(null==n?void 0:n.formEncType)||"application/x-www-form-urlencoded",formData:n.formData}};if(!n.formData)return{path:t};let r=new URLSearchParams(t.search);for(let[e,o]of n.formData){if("string"!=typeof o)return{path:t,error:new x(400,"Bad Request","Cannot submit binary form data using GET")};r.append(e,o)}return{path:e({},t,{search:"?"+r})}}function $(t,e){let{formMethod:n,formAction:r,formEncType:o,formData:a}=t.navigation;return{state:"loading",location:c(t.location,e.location),formMethod:n||void 0,formAction:r||void 0,formEncType:o||void 0,formData:a||void 0}}function H(t,e,n,r,o,a,i,l){let s=i?e.findIndex((t=>t.route.id===Object.keys(i)[0])):e.length,c=i?Object.values(i)[0]:a?Object.values(a)[0]:null,u=e.filter(((e,a)=>!(!e.route.loader||a>=s)&&(function(t,e,n){let r=!e||n.route.id!==e.route.id,o=void 0===t[n.route.id];return r||o}(t.loaderData,t.matches[a],e)||I(t.location,t.matches[a],n,r,e,o,c)))),d=[];if(o)for(let t of l.entries()){let[e,[r,a]]=t;I(r,a,n,r,a,o,c)&&d.push([e,r,a])}return[u,d]}function I(t,n,r,o,a,i,l){var s;let c=J(t),u=n.params,d=J(o),h=a.params,f=n.pathname!==a.pathname||(null==(s=n.route.path)?void 0:s.endsWith("*"))&&n.params["*"]!==a.params["*"]||c.toString()===d.toString()||c.search!==d.search||i;return a.route.shouldRevalidate?a.route.shouldRevalidate(e({currentUrl:c,currentParams:u,nextUrl:d,nextParams:h},r,{actionResult:l,defaultShouldRevalidate:f})):f}async function L(t,e,n,r){let o,a=S.data;try{let a=r?"action":"loader",i=t.route[a];i||A(!1),o=await i({params:t.params,request:W(e,r),signal:n})}catch(t){a=S.error,o=t}if(o instanceof Response){var i;let t,e=o.status,n=o.headers.get("Location");return e>=300&&e<=399&&null!=n?{type:S.redirect,status:e,location:n,revalidate:null!==o.headers.get("X-Remix-Revalidate")}:(t=null!=(i=o.headers.get("Content-Type"))&&i.startsWith("application/json")?await o.json():await o.text(),a===S.error?{type:a,error:new x(e,o.statusText,t)}:{type:a,data:t})}return a===S.error?{type:a,error:o}:{type:a,data:o}}function W(t,e){let n=J(t).toString();if(!e)return new Request(n);let{formMethod:r,formEncType:o,formData:a}=e,i=a;if("application/x-www-form-urlencoded"===o){i=new URLSearchParams;for(let[t,e]of a.entries())"string"!=typeof e&&A(!1),i.append(t,e)}return new Request(n,{method:r.toUpperCase(),headers:{"Content-Type":o},body:i})}function U(t,n,r,o,a,i,l){let s={},c=null;return o.forEach(((t,e)=>{let o=r[e].route.id;if(G(t)&&A(!1),z(t)){let e=N(n,o),r=t.error;a&&(r=Object.values(a)[0],a=null),c=Object.assign(c||{},{[e.route.id]:r})}else s[o]=t.data})),a&&(c=a),i.forEach(((n,r)=>{let[o,a,i]=n,s=l[r];if(z(s)){var u;let n=N(t.matches,i.route.id);null!=(u=c)&&u[n.route.id]||(c=e({},c,{[n.route.id]:s.error})),t.fetchers.delete(o)}else if(G(s))A(!1);else{let e={state:"idle",data:s.data,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0};t.fetchers.set(o,e)}})),{loaderData:s,errors:c}}function B(t,n){let r=(n.matches||t.matches).filter((e=>{var r;return void 0!==t.loaderData[e.route.id]&&void 0===(null==(r=n.loaderData)?void 0:r[e.route.id])}));return e({},n.loaderData,r.reduce(((e,n)=>Object.assign(e,{[n.route.id]:t.loaderData[n.route.id]})),{}))}function N(t,e){return(e?t.slice(0,t.findIndex((t=>t.route.id===e))+1):[...t]).reverse().find((t=>t.route.errorElement))||t[0]}function _(t){let e=t.find((t=>t.index||""===t.path||"/"===t.path))||{id:"__shim-404-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:e}],route:e,error:new x(404,"Not Found",null)}}function F(t){for(let e=t.length-1;e>=0;e--){let n=t[e];if(G(n))return n}}function q(t){return(t.pathname||"")+(t.search||"")}function z(t){return t.type===S.error}function G(t){return(null==t?void 0:t.type)===S.redirect}function V(t){return new URLSearchParams(t).getAll("index").some((t=>""===t))}function J(t){let e="undefined"!=typeof window&&void 0!==window.location?window.location.origin:"unknown://unknown",n="string"==typeof t?t:q(t);return new URL(n,e)}const X=["initialEntries","initialIndex"],Y=["window"],K=["window"];t.IDLE_FETCHER=C,t.IDLE_NAVIGATION=T,t.createBrowserHistory=i,t.createBrowserRouter=function(t){let{window:r}=t,o=n(t,Y);return j(e({history:i({window:r})},o))},t.createHashHistory=l,t.createHashRouter=function(t){let{window:r}=t,o=n(t,K);return j(e({history:l({window:r})},o))},t.createMemoryHistory=a,t.createMemoryRouter=function(t){let{initialEntries:r,initialIndex:o}=t,i=n(t,X);return j(e({history:a({initialEntries:r,initialIndex:o})},i))},t.createPath=u,t.createRouter=j,t.generatePath=function(t,e){return void 0===e&&(e={}),t.replace(/:(\w+)/g,((t,n)=>(null==e[n]&&A(!1),e[n]))).replace(/\/*\*$/,(t=>null==e["*"]?"":e["*"].replace(/^\/*/,"/")))},t.getToPathname=function(t){return""===t||""===t.pathname?"/":"string"==typeof t?d(t).pathname:t.pathname},t.invariant=A,t.isRouteErrorResponse=function(t){return t instanceof x},t.joinPaths=E,t.json=function(t,n){void 0===n&&(n={});let r="number"==typeof n?{status:n}:n,o=new Headers(r.headers);return o.has("Content-Type")||o.set("Content-Type","application/json; charset=utf-8"),new Response(JSON.stringify(t),e({},r,{headers:o}))},t.matchPath=w,t.matchRoutes=f,t.normalizePathname=M,t.parsePath=d,t.redirect=function(t,n){void 0===n&&(n=302);let r=n;"number"==typeof r?r={status:r}:void 0===r.status&&(r.status=302);let o=new Headers(r.headers);return o.set("Location",t),new Response(null,e({},r,{headers:o}))},t.resolvePath=D,t.resolveTo=function(t,n,r){let o,a="string"==typeof t?d(t):e({},t),i=""===t||""===a.pathname?"/":a.pathname;if(null==i)o=r;else{let t=n.length-1;if(i.startsWith("..")){let e=i.split("/");for(;".."===e[0];)e.shift(),t-=1;a.pathname=e.join("/")}o=t>=0?n[t]:"/"}let l=D(a,o);return i&&"/"!==i&&i.endsWith("/")&&!l.pathname.endsWith("/")&&(l.pathname+="/"),l},t.stripBasename=b,t.warning=function(t,e){if(!t){"undefined"!=typeof console&&console.warn(e);try{throw new Error(e)}catch(t){}}},Object.defineProperty(t,"__esModule",{value:!0})}));
//# sourceMappingURL=router.production.min.js.map

@@ -18,5 +18,7 @@ /// <reference types="react" />

/**
* Arguments passed to route loader/action functions
* @private
* Arguments passed to route loader/action functions. Same for now but we keep
* this as a private implementation detail in case they diverge in the future.
*/
export interface DataFunctionArgs {
interface DataFunctionArgs {
request: Request;

@@ -27,6 +29,16 @@ params: Params;

/**
* Arguments passed to loader functions
*/
export interface LoaderFunctionArgs extends DataFunctionArgs {
}
/**
* Arguments passed to action functions
*/
export interface ActionFunctionArgs extends DataFunctionArgs {
}
/**
* Route loader function signature
*/
export interface LoaderFunction {
(args: DataFunctionArgs): Promise<Response> | Response | Promise<any> | any;
(args: LoaderFunctionArgs): Promise<Response> | Response | Promise<any> | any;
}

@@ -37,3 +49,3 @@ /**

export interface ActionFunction {
(args: DataFunctionArgs): Promise<Response> | Response | Promise<any> | any;
(args: ActionFunctionArgs): Promise<Response> | Response | Promise<any> | any;
}

@@ -40,0 +52,0 @@ /**

{
"name": "@remix-run/router",
"version": "0.2.0-pre.1",
"version": "0.2.0-pre.2",
"description": "Nested/Data-driven/Framework-agnostic Routing",

@@ -5,0 +5,0 @@ "keywords": [

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc