named-react-router
Version:
A lightweight extension to React Router for named routes
32 lines (29 loc) • 13 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("react-router-dom"),O=require("react");var M={exports:{}},S={};/**
* @license React
* react-jsx-runtime.production.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var pe;function Ae(){if(pe)return S;pe=1;var n=Symbol.for("react.transitional.element"),l=Symbol.for("react.fragment");function c(u,a,d){var f=null;if(d!==void 0&&(f=""+d),a.key!==void 0&&(f=""+a.key),"key"in a){d={};for(var m in a)m!=="key"&&(d[m]=a[m])}else d=a;return a=d.ref,{$$typeof:n,type:u,key:f,ref:a!==void 0?a:null,props:d}}return S.Fragment=l,S.jsx=c,S.jsxs=c,S}var A={};/**
* @license React
* react-jsx-runtime.development.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var Re;function Oe(){return Re||(Re=1,process.env.NODE_ENV!=="production"&&function(){function n(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===ke?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case U:return"Fragment";case xe:return"Portal";case re:return"Profiler";case ee:return"StrictMode";case L:return"Suspense";case V:return"SuspenseList"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case oe:return(e.displayName||"Context")+".Provider";case te:return(e._context.displayName||"Context")+".Consumer";case F:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case B:return r=e.displayName||null,r!==null?r:n(e.type)||"Memo";case J:r=e._payload,e=e._init;try{return n(e(r))}catch{}}return null}function l(e){return""+e}function c(e){try{l(e);var r=!1}catch{r=!0}if(r){r=console;var t=r.error,s=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return t.call(r,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",s),l(e)}}function u(){}function a(){if(k===0){ue=console.log,se=console.info,ie=console.warn,le=console.error,ce=console.group,fe=console.groupCollapsed,de=console.groupEnd;var e={configurable:!0,enumerable:!0,value:u,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}k++}function d(){if(k--,k===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:_({},e,{value:ue}),info:_({},e,{value:se}),warn:_({},e,{value:ie}),error:_({},e,{value:le}),group:_({},e,{value:ce}),groupCollapsed:_({},e,{value:fe}),groupEnd:_({},e,{value:de})})}0>k&&console.error("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}function f(e){if(G===void 0)try{throw Error()}catch(t){var r=t.stack.trim().match(/\n( *(at )?)/);G=r&&r[1]||"",me=-1<t.stack.indexOf(`
at`)?" (<anonymous>)":-1<t.stack.indexOf("@")?"@unknown:0:0":""}return`
`+G+e+me}function m(e,r){if(!e||H)return"";var t=X.get(e);if(t!==void 0)return t;H=!0,t=Error.prepareStackTrace,Error.prepareStackTrace=void 0;var s=null;s=N.H,N.H=null,a();try{var v={DetermineComponentFrameRoot:function(){try{if(r){var h=function(){throw Error()};if(Object.defineProperty(h.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(h,[])}catch(R){var $=R}Reflect.construct(e,[],h)}else{try{h.call()}catch(R){$=R}e.call(h.prototype)}}else{try{throw Error()}catch(R){$=R}(h=e())&&typeof h.catch=="function"&&h.catch(function(){})}}catch(R){if(R&&$&&typeof R.stack=="string")return[R.stack,$.stack]}return[null,null]}};v.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var i=Object.getOwnPropertyDescriptor(v.DetermineComponentFrameRoot,"name");i&&i.configurable&&Object.defineProperty(v.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var o=v.DetermineComponentFrameRoot(),p=o[0],T=o[1];if(p&&T){var E=p.split(`
`),w=T.split(`
`);for(o=i=0;i<E.length&&!E[i].includes("DetermineComponentFrameRoot");)i++;for(;o<w.length&&!w[o].includes("DetermineComponentFrameRoot");)o++;if(i===E.length||o===w.length)for(i=E.length-1,o=w.length-1;1<=i&&0<=o&&E[i]!==w[o];)o--;for(;1<=i&&0<=o;i--,o--)if(E[i]!==w[o]){if(i!==1||o!==1)do if(i--,o--,0>o||E[i]!==w[o]){var C=`
`+E[i].replace(" at new "," at ");return e.displayName&&C.includes("<anonymous>")&&(C=C.replace("<anonymous>",e.displayName)),typeof e=="function"&&X.set(e,C),C}while(1<=i&&0<=o);break}}}finally{H=!1,N.H=s,d(),Error.prepareStackTrace=t}return E=(E=e?e.displayName||e.name:"")?f(E):"",typeof e=="function"&&X.set(e,E),E}function g(e){if(e==null)return"";if(typeof e=="function"){var r=e.prototype;return m(e,!(!r||!r.isReactComponent))}if(typeof e=="string")return f(e);switch(e){case L:return f("Suspense");case V:return f("SuspenseList")}if(typeof e=="object")switch(e.$$typeof){case F:return e=m(e.render,!1),e;case B:return g(e.type);case J:r=e._payload,e=e._init;try{return g(e(r))}catch{}}return""}function b(){var e=N.A;return e===null?null:e.getOwner()}function j(e){if(ae.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function ye(e,r){function t(){ve||(ve=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",r))}t.isReactWarning=!0,Object.defineProperty(e,"key",{get:t,configurable:!0})}function Ne(){var e=n(this.type);return Ee[e]||(Ee[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function _e(e,r,t,s,v,i){return t=i.ref,e={$$typeof:q,type:e,key:r,props:i,_owner:v},(t!==void 0?t:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:Ne}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function I(e,r,t,s,v,i){if(typeof e=="string"||typeof e=="function"||e===U||e===re||e===ee||e===L||e===V||e===je||typeof e=="object"&&e!==null&&(e.$$typeof===J||e.$$typeof===B||e.$$typeof===oe||e.$$typeof===te||e.$$typeof===F||e.$$typeof===Ce||e.getModuleId!==void 0)){var o=r.children;if(o!==void 0)if(s)if(z(o)){for(s=0;s<o.length;s++)K(o[s],e);Object.freeze&&Object.freeze(o)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else K(o,e)}else o="",(e===void 0||typeof e=="object"&&e!==null&&Object.keys(e).length===0)&&(o+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports."),e===null?s="null":z(e)?s="array":e!==void 0&&e.$$typeof===q?(s="<"+(n(e.type)||"Unknown")+" />",o=" Did you accidentally export a JSX literal instead of a component?"):s=typeof e,console.error("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",s,o);if(ae.call(r,"key")){o=n(e);var p=Object.keys(r).filter(function(E){return E!=="key"});s=0<p.length?"{key: someKey, "+p.join(": ..., ")+": ...}":"{key: someKey}",ge[o+s]||(p=0<p.length?"{"+p.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
let props = %s;
<%s {...props} />
React keys must be passed directly to JSX without using spread:
let props = %s;
<%s key={someKey} {...props} />`,s,o,p,o),ge[o+s]=!0)}if(o=null,t!==void 0&&(c(t),o=""+t),j(r)&&(c(r.key),o=""+r.key),"key"in r){t={};for(var T in r)T!=="key"&&(t[T]=r[T])}else t=r;return o&&ye(t,typeof e=="function"?e.displayName||e.name||"Unknown":e),_e(e,o,i,v,b(),t)}function K(e,r){if(typeof e=="object"&&e&&e.$$typeof!==Se){if(z(e))for(var t=0;t<e.length;t++){var s=e[t];W(s)&&D(s,r)}else if(W(e))e._store&&(e._store.validated=1);else if(e===null||typeof e!="object"?t=null:(t=ne&&e[ne]||e["@@iterator"],t=typeof t=="function"?t:null),typeof t=="function"&&t!==e.entries&&(t=t.call(e),t!==e))for(;!(e=t.next()).done;)W(e.value)&&D(e.value,r)}}function W(e){return typeof e=="object"&&e!==null&&e.$$typeof===q}function D(e,r){if(e._store&&!e._store.validated&&e.key==null&&(e._store.validated=1,r=we(r),!be[r])){be[r]=!0;var t="";e&&e._owner!=null&&e._owner!==b()&&(t=null,typeof e._owner.tag=="number"?t=n(e._owner.type):typeof e._owner.name=="string"&&(t=e._owner.name),t=" It was passed a child from "+t+".");var s=N.getCurrentStack;N.getCurrentStack=function(){var v=g(e.type);return s&&(v+=s()||""),v},console.error('Each child in a list should have a unique "key" prop.%s%s See https://react.dev/link/warning-keys for more information.',r,t),N.getCurrentStack=s}}function we(e){var r="",t=b();return t&&(t=n(t.type))&&(r=`
Check the render method of \``+t+"`."),r||(e=n(e))&&(r=`
Check the top-level render call using <`+e+">."),r}var Te=O,q=Symbol.for("react.transitional.element"),xe=Symbol.for("react.portal"),U=Symbol.for("react.fragment"),ee=Symbol.for("react.strict_mode"),re=Symbol.for("react.profiler"),te=Symbol.for("react.consumer"),oe=Symbol.for("react.context"),F=Symbol.for("react.forward_ref"),L=Symbol.for("react.suspense"),V=Symbol.for("react.suspense_list"),B=Symbol.for("react.memo"),J=Symbol.for("react.lazy"),je=Symbol.for("react.offscreen"),ne=Symbol.iterator,ke=Symbol.for("react.client.reference"),N=Te.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ae=Object.prototype.hasOwnProperty,_=Object.assign,Ce=Symbol.for("react.client.reference"),z=Array.isArray,k=0,ue,se,ie,le,ce,fe,de;u.__reactDisabledLog=!0;var G,me,H=!1,X=new(typeof WeakMap=="function"?WeakMap:Map),Se=Symbol.for("react.client.reference"),ve,Ee={},ge={},be={};A.Fragment=U,A.jsx=function(e,r,t,s,v){return I(e,r,t,!1,s,v)},A.jsxs=function(e,r,t,s,v){return I(e,r,t,!0,s,v)}}()),A}var he;function Pe(){return he||(he=1,process.env.NODE_ENV==="production"?M.exports=Ae():M.exports=Oe()),M.exports}var P=Pe();function Z(n){return P.jsx(P.Fragment,{})}function $e({children:n}){const l=[];function c(a){if(a.type!==Z&&a.type!==O.Fragment)throw new Error(`Type ${a.type} is not of type NamedRoute or React.Fragment.`);const{props:d}=a,{path:f,name:m,children:g,...b}=d,j={name:m,path:f,...b,children:[]};return Array.isArray(g)?j.children=g.map(c):g&&(j.children=[c(g)]),j}O.useEffect(()=>{n.forEach(a=>{l.push(c(a))}),Y(l)},[]);function u(a){if(a.type!==Z&&a.type!==O.Fragment)throw new Error(`Type ${a.type} is not of type NamedRoute or React.Fragment.`);const{key:d,props:f}=a,{children:m,...g}=f;let b=null;return Array.isArray(m)?b=m.map(u):m&&(b=u(m)),P.jsx(y.Route,{...g,children:b},d)}return P.jsx(y.Routes,{children:n.map(u)})}function Me({to:n,...l}){const c=O.useMemo(()=>Q(n),[n]);return P.jsx(y.NavLink,{to:c,...l})}function Ye(n){return!!n.name}const x=new Map;function Y(n,l="",c=""){n.forEach((u,a)=>{var m,g;const d=c?`${c}-${a}`:`${a}`;let f;if((m=u.path)!=null&&m.startsWith("/")?f=u.path:f=l+u.path,u.name){u.__absolutePath=f;const b=x.get(u.name);process.env.NODE_ENV==="development"&&b&&console.warn(`Development mode warning: Duplicate route name: ${u.name} found. Use unique names. Possible caused by HMR. if so, you can ignore this warning`),x.set(u.name,u),x.set(d,u)}(g=u.path)!=null&&g.endsWith("/")||(f+="/"),u.children&&Y(u.children,f,d)})}function We(n,l){return Y(n),y.createBrowserRouter(n,l)}function qe(){const n=y.useNavigate();function l(c,u){const a=Q(c);n(a,u)}return l}function Ue(){const n=y.useLocation();try{const l=y.useMatches(),c=l[l.length-1],u=x.get(c.id);return{...n,name:u==null?void 0:u.name}}catch{process.env.NODE_ENV!=="production"&&console.warn("useNamedLocation is only supported with createNamedBrowserRouter")}return n}function Q(n){if(Ye(n)){const{name:l,params:c,query:u}=n,a=x.get(l);if(a!=null&&a.__absolutePath){let d=y.generatePath(a.__absolutePath,c);if(u){const f=new URLSearchParams(u).toString();d+=`?${f}`}return d}else throw new Error(`Route name: ${l} not found.`)}else return n}exports.NamedNavLink=Me;exports.NamedRoute=Z;exports.NamedRoutes=$e;exports.__namedToFilledPath=Q;exports.collectRouteNames=Y;exports.createNamedBrowserRouter=We;exports.namedRoutesMap=x;exports.useNamedLocation=Ue;exports.useNamedNavigate=qe;