@kitbag/router 0.16.1 → 0.17.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/kitbag-router.d.ts +64 -25
- package/dist/kitbag-router.js +1325 -1052
- package/dist/kitbag-router.umd.cjs +4 -1
- package/package.json +12 -6
|
@@ -1 +1,4 @@
|
|
|
1
|
-
(function(A,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],c):(A=typeof globalThis<"u"?globalThis:A||self,c(A["@kitbag/router"]={},A.Vue))})(this,function(A,c){"use strict";var Gn=Object.defineProperty;var Qn=(A,c,N)=>c in A?Gn(A,c,{enumerable:!0,configurable:!0,writable:!0,value:N}):A[c]=N;var W=(A,c,N)=>Qn(A,typeof c!="symbol"?c+"":c,N);function N(e){return typeof e!="string"?!1:/^(https?:\/\/|\/).*/g.test(e)}function xe(e){return N(e)?e:`/${e}`}class ze extends Error{constructor(t){super(`Invalid Param "${t}": Router does not support multiple params by the same name. All param names must be unique.`)}}class Ke extends Error{constructor(t){super(`Child property on meta for ${t} conflicts with the parent meta.`)}}class te extends Error{constructor(){super("Router not installed")}}class Ye extends Error{constructor(t,r){super(`useRoute called with incorrect route. Given ${t}, expected ${r}`)}}const Xe=Symbol();function ye(){const e=c.inject(Xe);if(!e)throw new te;return e}function ue(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function F(e){return typeof e=="string"&&e.length>0}function ge(e){return{value:F(e)?e.replace(/^#*/,""):void 0}}function or(e,t){return ge(`${e.value??""}${t.value??""}`)}function ar(e,t){return sr(e,t),{...e,...t}}function sr(e,t){const r=Object.keys(e).find(n=>n in t&&typeof t[n]!=typeof e[n]);if(r)throw new Ke(r)}function re(e){return Array.isArray(e)?e:[e]}function Ze(e,t){return e.filter(r=>t===r).length}function ne(...e){const t=e.flatMap(r=>Array.isArray(r)?r:Object.keys(r).map(cr));for(const r of t)if(Ze(t,r)>1)throw new ze(r)}function cr(e){return e.startsWith("?")?e.slice(1):e}function ur(e,t){return ne(e.params,t.params),{value:`${e.value}${t.value}`,params:{...e.params,...t.params}}}function ir(e,t){return ne(e.params,t.params),{value:[e.value,t.value].filter(F).join("&"),params:{...e.params,...t.params}}}function fr(e,t){return ne(e,t),{...e,...t}}function lr(e){return"host"in e&&!!e.host}function et(e){return"parent"in e&&!!e.parent}function tt(e){return"component"in e&&!!e.component}function hr(e){return"props"in e&&typeof e.props=="function"}function rt(e){return"components"in e&&!!e.components}function dr(e){return"props"in e&&typeof e.props=="object"}function pr(e){return"state"in e&&!!e.state}function nt(e,t){return{...t,path:ur(e.path,t.path),query:ir(e.query,t.query),meta:ar(e.meta,t.meta),state:fr(e.state,t.state),hash:or(e.hash,t.hash),matches:[...e.matches,t.matched],host:e.host,depth:e.depth+1}}function Be(){return typeof window<"u"&&typeof window.document<"u"}class ie extends Error{}const J="[",Q="]";function mr(e){return e!==String&&e!==Boolean&&e!==Number&&e!==Date}function Rr(e){return typeof e=="function"&&mr(e)}function we(e){return typeof e=="object"&&"get"in e&&typeof e.get=="function"&&"set"in e&&typeof e.set=="function"}function yr(e){return we(e)&&e.defaultValue!==void 0}function gr(e,t){return ut(e,t)}function wr(e,t){return e[t]??String}const $={invalid:e=>{throw new ie(e)}},vr={get:e=>e,set:(e,{invalid:t})=>{if(typeof e!="string")throw t();return e}},ot={get:(e,{invalid:t})=>{if(e==="true")return!0;if(e==="false")return!1;throw t()},set:(e,{invalid:t})=>{if(typeof e!="boolean")throw t();return e.toString()}},at={get:(e,{invalid:t})=>{const r=Number(e);if(isNaN(r))throw t();return r},set:(e,{invalid:t})=>{if(typeof e!="number")throw t();return e.toString()}},st={get:(e,{invalid:t})=>{const r=new Date(e);if(isNaN(r.getTime()))throw t();return r},set:(e,{invalid:t})=>{if(typeof e!="object"||!(e instanceof Date))throw t();return e.toISOString()}},ct={get:(e,{invalid:t})=>{try{return JSON.parse(e)}catch{throw t()}},set:(e,{invalid:t})=>{try{return JSON.stringify(e)}catch{throw t()}}};function fe(e,t,r=!1){if(e===void 0||!F(e)){if(yr(t))return t.defaultValue;if(r)return;throw new ie}if(t===String)return vr.get(e,$);if(t===Boolean)return ot.get(e,$);if(t===Number)return at.get(e,$);if(t===Date)return st.get(e,$);if(t===JSON)return ct.get(e,$);if(Rr(t))return t(e,$);if(we(t))return t.get(e,$);if(t instanceof RegExp){if(t.test(e))return e;throw new ie}return e}function le(e,t,r=!1){if(e===void 0){if(r)return"";throw new ie}if(t===Boolean)return ot.set(e,$);if(t===Number)return at.set(e,$);if(t===Date)return st.set(e,$);if(t===JSON)return ct.set(e,$);if(we(t))return t.set(e,$);try{return e.toString()}catch{throw new ie}}function ut(e,t){return we(e)?{...e,defaultValue:t??e.defaultValue}:{get:r=>fe(r,e),set:r=>le(r,e),defaultValue:t}}function z(){return z=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},z.apply(null,arguments)}var H;(function(e){e.Pop="POP",e.Push="PUSH",e.Replace="REPLACE"})(H||(H={}));var oe=process.env.NODE_ENV!=="production"?function(e){return Object.freeze(e)}:function(e){return e};function Y(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}var ve="beforeunload",Er="hashchange",it="popstate";function ft(e){e===void 0&&(e={});var t=e,r=t.window,n=r===void 0?document.defaultView:r,o=n.history;function a(){var p=n.location,h=p.pathname,v=p.search,x=p.hash,B=o.state||{};return[B.idx,oe({pathname:h,search:v,hash:x,state:B.usr||null,key:B.key||"default"})]}var s=null;function l(){if(s)b.call(s),s=null;else{var p=H.Pop,h=a(),v=h[0],x=h[1];if(b.length)if(v!=null){var B=d-v;B&&(s={action:p,location:x,retry:function(){k(B*-1)}},k(B))}else process.env.NODE_ENV!=="production"&&Y(!1,"You are trying to block a POP navigation to a location that was not created by the history library. The block will fail silently in production, but in general you should do all navigation with the history library (instead of using window.history.pushState directly) to avoid this situation.");else U(p)}}n.addEventListener(it,l);var i=H.Pop,u=a(),d=u[0],R=u[1],P=ae(),b=ae();d==null&&(d=0,o.replaceState(z({},o.state,{idx:d}),""));function y(p){return typeof p=="string"?p:X(p)}function w(p,h){return h===void 0&&(h=null),oe(z({pathname:R.pathname,hash:"",search:""},typeof p=="string"?he(p):p,{state:h,key:Pe()}))}function f(p,h){return[{usr:p.state,key:p.key,idx:h},y(p)]}function m(p,h,v){return!b.length||(b.call({action:p,location:h,retry:v}),!1)}function U(p){i=p;var h=a();d=h[0],R=h[1],P.call({action:i,location:R})}function g(p,h){var v=H.Push,x=w(p,h);function B(){g(p,h)}if(m(v,x,B)){var V=f(x,d+1),j=V[0],_=V[1];try{o.pushState(j,"",_)}catch{n.location.assign(_)}U(v)}}function E(p,h){var v=H.Replace,x=w(p,h);function B(){E(p,h)}if(m(v,x,B)){var V=f(x,d),j=V[0],_=V[1];o.replaceState(j,"",_),U(v)}}function k(p){o.go(p)}var L={get action(){return i},get location(){return R},createHref:y,push:g,replace:E,go:k,back:function(){k(-1)},forward:function(){k(1)},listen:function(h){return P.push(h)},block:function(h){var v=b.push(h);return b.length===1&&n.addEventListener(ve,Ee),function(){v(),b.length||n.removeEventListener(ve,Ee)}}};return L}function Pr(e){e===void 0&&(e={});var t=e,r=t.window,n=r===void 0?document.defaultView:r,o=n.history;function a(){var h=he(n.location.hash.substr(1)),v=h.pathname,x=v===void 0?"/":v,B=h.search,V=B===void 0?"":B,j=h.hash,_=j===void 0?"":j,O=o.state||{};return[O.idx,oe({pathname:x,search:V,hash:_,state:O.usr||null,key:O.key||"default"})]}var s=null;function l(){if(s)b.call(s),s=null;else{var h=H.Pop,v=a(),x=v[0],B=v[1];if(b.length)if(x!=null){var V=d-x;V&&(s={action:h,location:B,retry:function(){L(V*-1)}},L(V))}else process.env.NODE_ENV!=="production"&&Y(!1,"You are trying to block a POP navigation to a location that was not created by the history library. The block will fail silently in production, but in general you should do all navigation with the history library (instead of using window.history.pushState directly) to avoid this situation.");else g(h)}}n.addEventListener(it,l),n.addEventListener(Er,function(){var h=a(),v=h[1];X(v)!==X(R)&&l()});var i=H.Pop,u=a(),d=u[0],R=u[1],P=ae(),b=ae();d==null&&(d=0,o.replaceState(z({},o.state,{idx:d}),""));function y(){var h=document.querySelector("base"),v="";if(h&&h.getAttribute("href")){var x=n.location.href,B=x.indexOf("#");v=B===-1?x:x.slice(0,B)}return v}function w(h){return y()+"#"+(typeof h=="string"?h:X(h))}function f(h,v){return v===void 0&&(v=null),oe(z({pathname:R.pathname,hash:"",search:""},typeof h=="string"?he(h):h,{state:v,key:Pe()}))}function m(h,v){return[{usr:h.state,key:h.key,idx:v},w(h)]}function U(h,v,x){return!b.length||(b.call({action:h,location:v,retry:x}),!1)}function g(h){i=h;var v=a();d=v[0],R=v[1],P.call({action:i,location:R})}function E(h,v){var x=H.Push,B=f(h,v);function V(){E(h,v)}if(process.env.NODE_ENV!=="production"&&Y(B.pathname.charAt(0)==="/","Relative pathnames are not supported in hash history.push("+JSON.stringify(h)+")"),U(x,B,V)){var j=m(B,d+1),_=j[0],O=j[1];try{o.pushState(_,"",O)}catch{n.location.assign(O)}g(x)}}function k(h,v){var x=H.Replace,B=f(h,v);function V(){k(h,v)}if(process.env.NODE_ENV!=="production"&&Y(B.pathname.charAt(0)==="/","Relative pathnames are not supported in hash history.replace("+JSON.stringify(h)+")"),U(x,B,V)){var j=m(B,d),_=j[0],O=j[1];o.replaceState(_,"",O),g(x)}}function L(h){o.go(h)}var p={get action(){return i},get location(){return R},createHref:w,push:E,replace:k,go:L,back:function(){L(-1)},forward:function(){L(1)},listen:function(v){return P.push(v)},block:function(v){var x=b.push(v);return b.length===1&&n.addEventListener(ve,Ee),function(){x(),b.length||n.removeEventListener(ve,Ee)}}};return p}function lt(e){e===void 0&&(e={});var t=e,r=t.initialEntries,n=r===void 0?["/"]:r,o=t.initialIndex,a=n.map(function(g){var E=oe(z({pathname:"/",search:"",hash:"",state:null,key:Pe()},typeof g=="string"?he(g):g));return process.env.NODE_ENV!=="production"&&Y(E.pathname.charAt(0)==="/","Relative pathnames are not supported in createMemoryHistory({ initialEntries }) (invalid entry: "+JSON.stringify(g)+")"),E}),s=ht(o??a.length-1,0,a.length-1),l=H.Pop,i=a[s],u=ae(),d=ae();function R(g){return typeof g=="string"?g:X(g)}function P(g,E){return E===void 0&&(E=null),oe(z({pathname:i.pathname,search:"",hash:""},typeof g=="string"?he(g):g,{state:E,key:Pe()}))}function b(g,E,k){return!d.length||(d.call({action:g,location:E,retry:k}),!1)}function y(g,E){l=g,i=E,u.call({action:l,location:i})}function w(g,E){var k=H.Push,L=P(g,E);function p(){w(g,E)}process.env.NODE_ENV!=="production"&&Y(i.pathname.charAt(0)==="/","Relative pathnames are not supported in memory history.push("+JSON.stringify(g)+")"),b(k,L,p)&&(s+=1,a.splice(s,a.length,L),y(k,L))}function f(g,E){var k=H.Replace,L=P(g,E);function p(){f(g,E)}process.env.NODE_ENV!=="production"&&Y(i.pathname.charAt(0)==="/","Relative pathnames are not supported in memory history.replace("+JSON.stringify(g)+")"),b(k,L,p)&&(a[s]=L,y(k,L))}function m(g){var E=ht(s+g,0,a.length-1),k=H.Pop,L=a[E];function p(){m(g)}b(k,L,p)&&(s=E,y(k,L))}var U={get index(){return s},get action(){return l},get location(){return i},createHref:R,push:w,replace:f,go:m,back:function(){m(-1)},forward:function(){m(1)},listen:function(E){return u.push(E)},block:function(E){return d.push(E)}};return U}function ht(e,t,r){return Math.min(Math.max(e,t),r)}function Ee(e){e.preventDefault(),e.returnValue=""}function ae(){var e=[];return{get length(){return e.length},push:function(r){return e.push(r),function(){e=e.filter(function(n){return n!==r})}},call:function(r){e.forEach(function(n){return n&&n(r)})}}}function Pe(){return Math.random().toString(36).substr(2,8)}function X(e){var t=e.pathname,r=t===void 0?"/":t,n=e.search,o=n===void 0?"":n,a=e.hash,s=a===void 0?"":a;return o&&o!=="?"&&(r+=o.charAt(0)==="?"?o:"?"+o),s&&s!=="#"&&(r+=s.charAt(0)==="#"?s:"#"+s),r}function he(e){var t={};if(e){var r=e.indexOf("#");r>=0&&(t.hash=e.substr(r),e=e.substr(0,r));var n=e.indexOf("?");n>=0&&(t.search=e.substr(n),e=e.substr(0,n)),e&&(t.pathname=e)}return t}const dt=Symbol();function br(){const e=c.inject(dt);if(!e)throw new te;return e}const pt=Symbol("isRouterRouteSymbol");function Sr(e){return typeof e=="object"&&e!==null&&pt in e}function Ar(e,t){function r(f,m,U){if(typeof f=="object"){const E={...e.params,...f};return t(e.name,E,m)}const g={...e.params,[f]:m};return t(e.name,g,U)}const n=(...f)=>{const m=new URLSearchParams(e.query);m.set(...f),r({},{query:m})},o=(...f)=>{const m=new URLSearchParams(e.query);m.append(...f),r({},{query:m})},a=(...f)=>{const m=new URLSearchParams(e.query);m.delete(...f),r({},{query:m})},{id:s,matched:l,matches:i,name:u,hash:d,href:R}=c.toRefs(e),P=c.computed({get(){return new Proxy(e.params,{set(f,m,U){return r(m,U),!0}})},set(f){r(f)}}),b=c.computed({get(){return new Proxy(e.query,{get(f,m,U){switch(m){case"append":return o;case"set":return n;case"delete":return a;default:return Reflect.get(f,m,U)}}})},set(f){r({},{query:f})}}),y=c.computed({get(){return new Proxy(e.state,{set(f,m,U){return r({},{state:{...e.state,[m]:U}}),!0}})},set(f){r({},{state:f})}});return c.reactive({id:s,matched:l,matches:i,state:y,query:b,hash:d,params:P,name:u,href:R,update:r,[pt]:!0})}const mt=Symbol();function kr(e,t){const r=c.reactive({...e}),n=s=>{Object.assign(r,{[mt]:!1,...s})},o=r,a=Ar(o,t);return{currentRoute:o,routerRoute:a,updateRoute:n}}function q(e){return!e.startsWith("http")?Lr(e):Ur(e)}function Ur(e){const{protocol:t,host:r,pathname:n,search:o,searchParams:a,hash:s}=new URL(e,e);return{protocol:t,host:r,pathname:n,search:o,searchParams:a,hash:s}}function Lr(e){const{pathname:t,search:r,searchParams:n,hash:o}=new URL(e,"https://localhost");return{pathname:t,search:r,searchParams:n,hash:o}}function xr(e){return t=>{const{host:r}=q(t);return!(r===void 0||r===e)}}function Br({mode:e,listener:t}){const r=Cr(e),n=(i,u)=>{if(u!=null&&u.replace){r.replace(i,u.state);return}r.push(i,u==null?void 0:u.state)},o=()=>{const i=X(r.location);r.replace(i)};let a;return{...r,update:n,refresh:o,startListening:()=>{a==null||a(),a=r.listen(t)},stopListening:()=>{a==null||a()}}}function Cr(e="auto"){switch(e){case"auto":return Be()?ft():lt();case"browser":return ft();case"memory":return lt();case"hash":return Pr();default:const t=e;throw new Error(`Switch is not exhaustive for mode: ${t}`)}}class Rt extends Error{constructor(){super("Uncaught CallbackContextAbortError");W(this,"response");this.response={status:"ABORT"}}}class se extends Error{constructor(r){super("Uncaught CallbackContextPushError");W(this,"response");this.response={status:"PUSH",to:r}}}class be extends Error{constructor(r){super("Uncaught CallbackContextRejectionError");W(this,"response");this.response={status:"REJECT",type:r}}}function yt(){return{reject:o=>{throw new be(o)},push:(...o)=>{throw new se(o)},replace:(o,a,s)=>{if(N(o)){const u=a??{};throw new se([o,{...u,replace:!0}])}const l=a,i=s??{};throw new se([o,l,{...i,replace:!0}])},abort:()=>{throw new Rt}}}class Z{constructor(){W(this,"onBeforeRouteEnter",new Set);W(this,"onBeforeRouteUpdate",new Set);W(this,"onBeforeRouteLeave",new Set);W(this,"onAfterRouteEnter",new Set);W(this,"onAfterRouteUpdate",new Set);W(this,"onAfterRouteLeave",new Set)}}const de=(e,t,r)=>{var a,s;const n=e.matches,o=(t==null?void 0:t.matches)??[];return((a=n.at(r))==null?void 0:a.id)!==((s=o.at(r))==null?void 0:s.id)},pe=(e,t,r)=>{var a,s;const n=e.matches,o=(t==null?void 0:t.matches)??[];return((a=n.at(r))==null?void 0:a.id)!==((s=o.at(r))==null?void 0:s.id)},me=(e,t,r)=>{var n,o;return((n=e.matches.at(r))==null?void 0:n.id)===((o=t==null?void 0:t.matches.at(r))==null?void 0:o.id)};function gt(e){switch(e){case"onBeforeRouteEnter":case"onAfterRouteEnter":return de;case"onBeforeRouteUpdate":case"onAfterRouteUpdate":return me;case"onBeforeRouteLeave":case"onAfterRouteLeave":return pe;default:throw new Error(`Switch is not exhaustive for lifecycle: ${e}`)}}function Vr(e,t){const r=new Z;return e.matches.forEach((n,o)=>{n.onBeforeRouteEnter&&de(e,t,o)&&re(n.onBeforeRouteEnter).forEach(a=>r.onBeforeRouteEnter.add(a)),n.onBeforeRouteUpdate&&me(e,t,o)&&re(n.onBeforeRouteUpdate).forEach(a=>r.onBeforeRouteUpdate.add(a))}),t==null||t.matches.forEach((n,o)=>{n.onBeforeRouteLeave&&pe(e,t,o)&&re(n.onBeforeRouteLeave).forEach(a=>r.onBeforeRouteLeave.add(a))}),r}function Nr(e,t){const r=new Z;return e.matches.forEach((n,o)=>{n.onAfterRouteEnter&&de(e,t,o)&&re(n.onAfterRouteEnter).forEach(a=>r.onAfterRouteEnter.add(a)),n.onAfterRouteUpdate&&me(e,t,o)&&re(n.onAfterRouteUpdate).forEach(a=>r.onAfterRouteUpdate.add(a))}),t==null||t.matches.forEach((n,o)=>{n.onAfterRouteLeave&&pe(e,t,o)&&re(n.onAfterRouteLeave).forEach(a=>r.onAfterRouteLeave.add(a))}),r}function jr(e,t,r){const n=new Z;return e.matches.forEach((o,a)=>{de(e,t,a)&&r.onBeforeRouteEnter.forEach(s=>n.onBeforeRouteEnter.add(s)),me(e,t,a)&&r.onBeforeRouteUpdate.forEach(s=>n.onBeforeRouteUpdate.add(s))}),t==null||t.matches.forEach((o,a)=>{pe(e,t,a)&&r.onBeforeRouteLeave.forEach(s=>n.onBeforeRouteLeave.add(s))}),n}function Hr(e,t,r){const n=new Z;return e.matches.forEach((o,a)=>{de(e,t,a)&&r.onAfterRouteEnter.forEach(s=>n.onAfterRouteEnter.add(s)),me(e,t,a)&&r.onAfterRouteUpdate.forEach(s=>n.onAfterRouteUpdate.add(s))}),t==null||t.matches.forEach((o,a)=>{pe(e,t,a)&&r.onAfterRouteLeave.forEach(s=>n.onAfterRouteLeave.add(s))}),n}const wt=Symbol();function $r(){const e={global:new Z,component:new Z},{reject:t,push:r,replace:n,abort:o}=yt(),a=f=>(e.global.onBeforeRouteEnter.add(f),()=>e.global.onBeforeRouteEnter.delete(f)),s=f=>(e.global.onBeforeRouteUpdate.add(f),()=>e.global.onBeforeRouteUpdate.delete(f)),l=f=>(e.global.onBeforeRouteLeave.add(f),()=>e.global.onBeforeRouteLeave.delete(f)),i=f=>(e.global.onAfterRouteEnter.add(f),()=>e.global.onAfterRouteEnter.delete(f)),u=f=>(e.global.onAfterRouteUpdate.add(f),()=>e.global.onAfterRouteUpdate.delete(f)),d=f=>(e.global.onAfterRouteLeave.add(f),()=>e.global.onAfterRouteLeave.delete(f));async function R({to:f,from:m}){const{global:U,component:g}=e,E=Vr(f,m),k=jr(f,m,U),L=[...k.onBeforeRouteEnter,...E.onBeforeRouteEnter,...k.onBeforeRouteUpdate,...E.onBeforeRouteUpdate,...g.onBeforeRouteUpdate,...k.onBeforeRouteLeave,...E.onBeforeRouteLeave,...g.onBeforeRouteLeave];try{const p=L.map(h=>h(f,{from:m,reject:t,push:r,replace:n,abort:o}));await Promise.all(p)}catch(p){if(p instanceof se||p instanceof be||p instanceof Rt)return p.response;throw p}return{status:"SUCCESS"}}async function P({to:f,from:m}){const{global:U,component:g}=e,E=Nr(f,m),k=Hr(f,m,U),L=[...g.onAfterRouteLeave,...E.onAfterRouteLeave,...k.onAfterRouteLeave,...g.onAfterRouteUpdate,...E.onAfterRouteUpdate,...k.onAfterRouteUpdate,...g.onAfterRouteEnter,...E.onAfterRouteEnter,...k.onAfterRouteEnter];try{const p=L.map(h=>h(f,{from:m,reject:t,push:r,replace:n}));await Promise.all(p)}catch(p){if(p instanceof se||p instanceof be)return p.response;throw p}return{status:"SUCCESS"}}return{runBeforeRouteHooks:R,runAfterRouteHooks:P,addComponentBeforeRouteHook:({lifecycle:f,depth:m,hook:U})=>{const g=gt(f),E=e.component[f],k=(L,p)=>{if(g(L,p.from,m))return U(L,p)};return E.add(k),()=>E.delete(k)},addComponentAfterRouteHook:({lifecycle:f,depth:m,hook:U})=>{const g=gt(f),E=e.component[f],k=(L,p)=>{if(g(L,p.from,m))return U(L,p)};return E.add(k),()=>E.delete(k)},addGlobalRouteHooks:f=>{f.onBeforeRouteEnter.forEach(m=>a(m)),f.onBeforeRouteUpdate.forEach(m=>s(m)),f.onBeforeRouteLeave.forEach(m=>l(m)),f.onAfterRouteEnter.forEach(m=>i(m)),f.onAfterRouteUpdate.forEach(m=>u(m)),f.onAfterRouteLeave.forEach(m=>d(m))},onBeforeRouteEnter:a,onBeforeRouteUpdate:s,onBeforeRouteLeave:l,onAfterRouteEnter:i,onAfterRouteUpdate:u,onAfterRouteLeave:d}}function qr(e){return c.defineComponent(()=>()=>c.h("h1",e),{name:e,props:[]})}function Ce(e){const t=new URLSearchParams(e);return{get:(...r)=>t.get(...r),getAll:(...r)=>t.getAll(...r),set:(...r)=>{t.set(...r)},append:(...r)=>{t.append(...r)},delete:(...r)=>{t.delete(...r)},toString:(...r)=>t.toString(...r),forEach:(...r)=>{t.forEach(...r)},entries:(...r)=>t.entries(...r),keys:(...r)=>t.keys(...r),values:(...r)=>t.values(...r),has:(...r)=>t.has(...r),size:t.size,sort:()=>{t.sort()},[Symbol.iterator]:()=>t[Symbol.iterator]()}}function Ve(){let e=0;return()=>(++e).toString()}const _r=Ve()();function Ir(e){return e===_r}const Ne=Ve();function Or(e){const t=a=>c.markRaw(e[a]??qr(a)),r=a=>{const s=c.markRaw(t(a)),l={id:Ne(),component:s,meta:{},state:{}};return{id:l.id,matched:l,matches:[l],name:a,query:Ce(""),params:{},state:{},href:"/",hash:"",[mt]:!0}},n=a=>{if(!a){o.value=null;return}const s=t(a);o.value={type:a,component:s}},o=c.ref(null);return{setRejection:n,rejection:o,getRejectionRoute:r}}class Tr extends Error{constructor(){super("initialUrl must be set if window.location is unavailable")}}function Dr(e){if(e)return e;if(Be())return window.location.toString();throw new Tr}function vt(e){return!!e&&typeof e=="object"}const Se=!0;function Mr(e,t,r){if(vt(e)&&t in e){const n=e[t];return typeof n=="string"?fe(n,r,Se):n}return fe(void 0,r,Se)}function Et(e,t){const r={};for(const[n,o]of Object.entries(e)){const a=Mr(t,n,o);r[n]=a}return r}function Wr(e,t,r){if(vt(e)&&t in e){const n=e[t];return le(n,r,Se)}return le(void 0,r,Se)}const Pt=(e,t)=>{const r={};for(const[n,o]of Object.entries(e)){const a=Wr(t,n,o);r[n]=a}return r};function Fr(){const e=c.reactive(new Map),t=Be()?s():null,r=l=>{e.set(l,!1),t==null||t.observe(l)},n=l=>{e.delete(l),t==null||t.unobserve(l)},o=()=>{t==null||t.disconnect()},a=l=>e.get(l)??!1;function s(){return new IntersectionObserver(l=>{l.forEach(i=>{e.set(i.target,i.isIntersecting)})})}return{observe:r,unobserve:n,disconnect:o,isElementVisible:a}}const bt=Symbol("visibilityObserver");function Jr(e){const t=c.inject(bt);if(!t)throw new te;return c.watch(e,(n,o)=>{n&&t.observe(n),o&&t.unobserve(o)},{immediate:!0}),c.onUnmounted(()=>{e.value&&t.unobserve(e.value)}),{isElementVisible:c.computed(()=>e.value?t.isElementVisible(e.value):!1)}}class Gr extends Error{constructor(t){super(`Route not found: "${t}"`)}}function je(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Qr(e,t){const r=Array.from(e.matchAll(t));if(r.length===0)return[e];let n=0;const o=r.reduce((s,l)=>{const i=je(e.slice(n,l.index));i.length&&s.push(i);const[u]=l;return s.push(u),n=l.index+u.length,s},[]),a=e.slice(n);return a&&o.push(a),o}function zr(e){const t=St(e.path.value);return new RegExp(`^${t}$`,"i")}function Kr(e){const t=new URLSearchParams(e.query.value);return Array.from(t.entries()).filter(([,r])=>!$e(r)).map(([r,n])=>{const o=St(n);return new RegExp(`${je(r)}=${o}(&|$)`,"i")})}function St(e){return Qr(e,new RegExp(Yr,"g")).map(t=>t.startsWith(J)?At(t):je(t)).join("")}function At(e){return[Xr,Zr].reduce((t,r)=>r(t),e)}const Yr=`\\${J}\\??([\\w-_]+)\\${Q}`,He=`\\${J}\\?([\\w-_]+)\\${Q}`,kt=`\\${J}([\\w-_]+)\\${Q}`;function Xr(e){return e.replace(new RegExp(He,"g"),".*")}function $e(e){return new RegExp(He,"g").test(e)}function Zr(e){return e.replace(new RegExp(kt,"g"),".+")}function Re(e){const[t]=Ae(e,new RegExp(He,"g")),[r]=Ae(e,new RegExp(kt,"g"));return t??r}function Ae(e,t){return Array.from(e.matchAll(t)).flatMap(([,...n])=>n.map(o=>F(o)?o:""))}function Ut(e,t,r){const n=xt(t,r),[o]=Ae(e,n);return o}function Lt(e,t){if(!t)return e;const{name:r,param:n,value:o}=t,a=xt(e,r);return Ae(e,a).reduce((l,i)=>i===void 0?l:l.replace(i,()=>le(o,n,r.startsWith("?"))),e)}function xt(e,t){const r=[en,tn,At].reduce((n,o)=>o(n,t),e);return new RegExp(r,"g")}function en(e,t){if(!t.startsWith("?"))return e;const r=new RegExp(`\\${J}\\${t}\\${Q}`,"g");return e.replace(r,"(.*)")}function tn(e,t){if(t.startsWith("?"))return e;const r=new RegExp(`\\${J}${t}\\${Q}`,"g");return e.replace(r,"(.+)")}function Bt({protocol:e,host:t,pathname:r,search:n,searchParams:o,hash:a}){const s=new URL("https://localhost");e&&(s.protocol=e),t&&(s.host=t),r&&(s.pathname=r),o?s.search=new URLSearchParams(o).toString():n&&(s.search=n),a&&(s.hash=a);const l=s.toString().replace(/^https:\/\/localhost\/*/,"/");return xe(l)}function qe(...e){const t=new URLSearchParams;for(const r of e){const n=new URLSearchParams(r);for(const[o,a]of n.entries())t.append(o,a)}return t}function rn(e,t={}){const{params:r={},query:n}=t,o=an(e.query,r),a=qe(o,n),s=on(e.path,r),l=ge(e.hash.value??t.hash).value,i=nn(e.host,r),{protocol:u,host:d}=q(i);return Bt({protocol:u,host:d,pathname:s,searchParams:a,hash:l})}function nn(e,t){const r=e.value&&!e.value.startsWith("http")?`https://${e.value}`:e.value;return Object.entries(e.params).reduce((n,[o,a])=>{const s=Re(`${J}${o}${Q}`);return s?Lt(n,{name:o,param:a,value:t[s]}):n},r)}function on(e,t){return Object.entries(e.params).reduce((r,[n,o])=>{const a=Re(`${J}${n}${Q}`);return a?Lt(r,{name:n,param:o,value:t[a]}):r},e.value)}function an(e,t){const r=new URLSearchParams(e.value);if(!e.value)return r;for(const[n,o]of Array.from(r.entries())){const a=Re(o);if(!a)continue;const l=$e(o),i=l?`?${a}`:a,u=le(t[a],e.params[i],l),d=t[a]===void 0&&u==="";l&&d?r.delete(n,o):r.set(n,u)}return r}const sn=(e,t)=>{try{_e(e,t)}catch{return!1}return!0},_e=(e,t)=>{const{pathname:r,search:n}=q(t);return{...cn(e.path,r),...un(e.query,n)}};function cn(e,t){const r={},n=decodeURIComponent(t);for(const[o,a]of Object.entries(e.params)){const s=o.startsWith("?"),l=s?o.slice(1):o,i=Ut(n,e.value,o),u=fe(i,a,s);r[l]=u}return r}function un(e,t){const r={},n=new URLSearchParams(e.value),o=new URLSearchParams(t);for(const[a,s]of Array.from(n.entries())){const l=Re(s);if(!l)continue;const u=$e(s),d=u?`?${l}`:l,R=o.get(a)??void 0,P=fe(R,e.params[d],u);r[l]=P}return r}function fn(e,t={},r={}){const n=rn(e,{params:t,query:r.query,hash:r.hash}),{search:o,hash:a}=q(n);return{id:e.id,matched:e.matched,matches:e.matches,name:e.name,query:Ce(o),params:_e(e,n),state:Et(e.state,r.state),hash:a,href:n}}const ln=e=>"name"in e.matched&&!!e.matched.name,hn=(e,t)=>{const{pathname:r}=q(t);return zr(e).test(r)},dn=(e,t)=>{const{search:r}=q(t);return Kr(e).every(o=>o.test(r))},Ie=(e,t)=>{const{hash:r}=q(t),{value:n}=e.hash;return n===void 0||`#${n.toLowerCase()}`===r.toLowerCase()};function pn(e){const{searchParams:t,pathname:r}=q(e),n=-1,o=1;return(a,s)=>{const l=Vt(a,t),i=Ct(a,r),u=Vt(s,t),d=Ct(s,r);return a.depth>s.depth?n:a.depth<s.depth?o:l+i>u+d?n:l+i<u+d?o:Ie(a,e)?n:Ie(s,e)?o:0}}function Ct(e,t){const r=Object.keys(e.path.params).filter(o=>o.startsWith("?")).map(o=>o),n=r.filter(o=>Ut(t,e.path.value,o)===void 0);return r.length-n.length}function Vt(e,t){const r=new URLSearchParams(t),n=new URLSearchParams(e.query.value),o=Array.from(n.keys()),a=o.filter(s=>!r.has(s));return o.length-a.length}const mn=[ln,hn,dn,Ie,sn];function Rn(e,t){const r=pn(t);return e.filter(n=>mn.every(o=>o(n,t))).sort(r)}function yn(e,t,r){const n=Rn(e,t);if(!n.length)return;const[o]=n,{searchParams:a,hash:s}=q(t);return{id:o.id,matched:o.matched,matches:o.matches,name:o.name,query:Ce(a),params:_e(o,t),state:Et(o.state,r),hash:s,href:xe(t)}}function Nt(e,t){const r=typeof e=="string"?q(e):e,n=typeof t=="string"?q(t):t,o=r.searchParams??new URLSearchParams(r.search),a=n.searchParams??new URLSearchParams(n.search);return Bt({protocol:F(n.protocol)?n.protocol:r.protocol,host:F(n.host)?n.host:r.host,pathname:F(n.pathname)?n.pathname:r.pathname,searchParams:qe(a,o),hash:F(n.hash)?n.hash:r.hash})}function Oe(e,t){const r=new RegExp(`\\${J}(\\??[\\w-_]+)\\${Q}`,"g");return Array.from(e.matchAll(r)).reduce((o,[a,s])=>{const l=Re(a);if(!l)return o;const i=wr(t,l);return ne([l],o),o[s]=i,o},{})}function ke(e,t){return{value:e,params:Oe(e,t)}}function gn(e,t){return F(t)?e.map(r=>{const n=`${t}${r.path.value}`;return{...r,path:ke(n,r.path.params)}}):e}class wn extends Error{constructor(t){super(`Invalid Name "${t}": Router does not support multiple routes with the same name. All name names must be unique.`)}}function vn(e){const t=e.map(({name:r})=>r);for(const r of t)if(Ze(t,r)>1)throw new wn(r)}function En(e,t=[],r){const n=[...e,...t.map(o=>o.routes)].flat();return vn(n),gn(n,r)}function Pn(e={},t=[]){const r=new Z;return ce("onBeforeRouteEnter",e,t).forEach(n=>r.onBeforeRouteEnter.add(n)),ce("onBeforeRouteUpdate",e,t).forEach(n=>r.onBeforeRouteUpdate.add(n)),ce("onBeforeRouteLeave",e,t).forEach(n=>r.onBeforeRouteLeave.add(n)),ce("onAfterRouteEnter",e,t).forEach(n=>r.onAfterRouteEnter.add(n)),ce("onAfterRouteUpdate",e,t).forEach(n=>r.onAfterRouteUpdate.add(n)),ce("onAfterRouteLeave",e,t).forEach(n=>r.onAfterRouteLeave.add(n)),r}function ce(e,t,r){return[t[e],...r.map(o=>o[e])].flat().filter(o=>o!==void 0)}function bn(e,t,r=[]){const n=En(e,r,t==null?void 0:t.base),o=$r();o.addGlobalRouteHooks(Pn(t,r));const a=Ve(),s=Vn(),l=Fr(),i=Br({mode:t==null?void 0:t.historyMode,listener:({location:S})=>{const C=X(S);d(C,{state:S.state,replace:!0})}});function u(S,C={}){return yn(n,S,C.state)}async function d(S,C={}){const G=a();if(i.stopListening(),v(S)){i.update(S,C);return}const T=u(S,C)??m("NotFound"),I=O(G),K=await o.runBeforeRouteHooks({to:T,from:I});switch(K.status){case"ABORT":return;case"PUSH":i.update(S,C),await P(...K.to);return;case"REJECT":i.update(S,C),w(K.type);break;case"SUCCESS":i.update(S,C),w(null);break;default:throw new Error(`Switch is not exhaustive for before hook response status: ${JSON.stringify(K)}`)}const Je=G;s.setProps(T).then(D=>{if(Je===G)switch(D.status){case"SUCCESS":break;case"PUSH":P(...D.to);break;case"REJECT":w(D.type);break;default:const Ge=D;throw new Error(`Switch is not exhaustive for prop store response status: ${JSON.stringify(Ge)}`)}}),k(T);const M=await o.runAfterRouteHooks({to:T,from:I});switch(M.status){case"PUSH":await P(...M.to);break;case"REJECT":w(M.type);break;case"SUCCESS":break;default:const D=M;throw new Error(`Switch is not exhaustive for after hook response status: ${JSON.stringify(D)}`)}i.startListening()}const R=(S,C={},G={})=>{const T=n.find(I=>I.name===S);if(!T)throw new Gr(String(S));return fn(T,C,G)},P=(S,C,G)=>{if(N(S)){const M={...C},D=Nt(S,{searchParams:M.query,hash:M.hash});return d(D,M)}if(typeof S=="string"){const{replace:M,...D}={...G},Ge={...C},Qe=R(S,Ge,D),Jn=Pt({...Qe.matched.state},{...Qe.state,...D.state});return d(Qe.href,{replace:M,state:Jn})}const{replace:T,...I}={...C},K=Pt({...S.matched.state},{...S.state,...I.state}),Je=Nt(S.href,{searchParams:I.query,hash:I.hash});return d(Je,{replace:T,state:K})},b=(S,C,G)=>{if(N(S)){const I={...C,replace:!0};return P(S,I)}if(typeof S=="string"){const I={...G,replace:!0},K={...C};return P(S,K,I)}const T={...C,replace:!0};return P(S,T)},y=S=>{w(S)},{setRejection:w,rejection:f,getRejectionRoute:m}=Or({...r.reduce((S,C)=>({...S,...C.rejections}),{}),...t==null?void 0:t.rejections}),U=m("NotFound"),{currentRoute:g,routerRoute:E,updateRoute:k}=kr(U,P),L=Dr(t==null?void 0:t.initialUrl),p=i.location.state,{host:h}=q(L),v=xr(h);let x=!1;const{promise:B,resolve:V}=Promise.withResolvers();async function j(){if(x)return B;x=!0,await d(L,{replace:!0,state:p}),i.startListening(),V()}function _(){i.stopListening()}function O(S){return Ir(S)?null:{...g}}function rr(S){S.component("RouterView",Yt),S.component("RouterLink",Qt),S.provide(dt,f),S.provide(wt,o),S.provide(Mt,s),S.provide(bt,l),S.provide(Xe,nr),j()}const nr={route:E,resolve:R,find:u,push:P,replace:b,reject:y,refresh:i.refresh,forward:i.forward,back:i.back,go:i.go,install:rr,isExternal:v,onBeforeRouteEnter:o.onBeforeRouteEnter,onBeforeRouteUpdate:o.onBeforeRouteUpdate,onBeforeRouteLeave:o.onBeforeRouteLeave,onAfterRouteEnter:o.onAfterRouteEnter,onAfterRouteUpdate:o.onAfterRouteUpdate,onAfterRouteLeave:o.onAfterRouteLeave,prefetch:t==null?void 0:t.prefetch,start:j,stop:_};return nr}function Te(e,t){return{value:e,params:Oe(e,t)}}function Sn(e){return{routes:e.routes??[],rejections:e.rejections??{},...e}}function jt(e,t){return{value:e,params:Oe(e,t)}}function An(e){return ue(e)&&typeof e.hash=="string"}function Ht(e){return e===void 0?ge():An(e)?e:ge(e)}function $t(e){return e===void 0?"":e}function kn(e){return ue(e)&&typeof e.value=="string"}function qt(e){return e===void 0?ke("",{}):kn(e)?e:ke(e,{})}function Un(e){return ue(e)&&typeof e.value=="string"}function _t(e){return e===void 0?Te("",{}):Un(e)?e:Te(e,{})}function ee(e,t){const r=Ne(),n=$t(e.name),o=qt(e.path),a=_t(e.query),s=Ht(e.hash),l=e.meta??{},i=pr(e)?e.state:{},u=c.markRaw({id:r,meta:{},state:{},...e,props:t}),d={id:r,matched:u,matches:[u],name:n,path:o,query:a,hash:s,meta:l,state:i,depth:1,host:jt("",{}),prefetch:e.prefetch},R=et(e)?nt(e.parent,d):d;return ne(R.path.params,R.query.params),R}const Ue={template:"<div>This is component</div>"},De=ee({name:"parentA",path:"/parentA/[paramA]"}),It=ee({parent:De,name:"parentA.childA",path:"/childA/[?paramB]"}),Ln=ee({parent:De,name:"parentA.childB",path:"/childB/[paramD]",component:Ue}),xn=ee({parent:It,name:"parentA.childA.grandChildA",path:"/[paramC]",component:Ue});ee({name:"parentB",path:"/parentB",component:Ue}),ee({name:"parentC",path:"/",component:Ue});const Bn="lazy",Cn={components:!0,props:!1};function Le(e){return["eager","lazy","intent"].includes(e)}function Ot({routerPrefetch:e,routePrefetch:t,linkPrefetch:r},n){const o=Me(r,n),a=Me(t,n),s=Me(e,n),l=[o,a,s,Cn[n],Bn].reduce((i,u)=>Le(i)?i:i===!0&&Le(u)?u:i===!0&&!Le(u)?i:i===void 0?u:i,void 0);return Le(l)?l:!1}function Me(e,t){return ue(e)?e[t]:e}function Tt(e){return typeof e=="object"&&e!==null&&"then"in e}function Dt(e){try{const t=e();return Tt(t)?t.catch(r=>r):t}catch(t){return t}}const Mt=Symbol();function Vn(){const e=c.reactive(new Map),{push:t,replace:r,reject:n}=yt(),o=(R,P,b)=>P.matches.filter(y=>Ot({...b,routePrefetch:y.prefetch},"props")===R).flatMap(y=>u(y)).reduce((y,{id:w,name:f,props:m})=>{if(!m)return y;const U=i(w,f,P),g=Dt(()=>m(P,{push:t,replace:r,reject:n}));return y[U]=g,y},{}),a=R=>{Object.entries(R).forEach(([P,b])=>{e.set(P,b)})},s=async R=>{const P=R.matches.flatMap(u),b=[],y=[];for(const{id:w,name:f,props:m}of P){if(!m)continue;const U=i(w,f,R);if(b.push(U),!e.has(U)){const g=Dt(()=>m(R,{push:t,replace:r,reject:n}));e.set(U,g)}y.push((async()=>{const g=await e.get(U);if(g instanceof Error)throw g})())}d(b);try{return await Promise.all(y),{status:"SUCCESS"}}catch(w){if(w instanceof se||w instanceof be)return w.response;throw w}},l=(R,P,b)=>{const y=i(R,P,b);return e.get(y)};function i(R,P,b){return[R,P,b.id,JSON.stringify(b.params)].join("-")}function u(R){return hr(R)?[{id:R.id,name:"default",props:R.props}]:dr(R)?Object.entries(R.props).map(([P,b])=>({id:R.id,name:P,props:b})):[]}function d(R){for(const P of e.keys())R.includes(P)||e.delete(P)}return{getPrefetchProps:o,setPrefetchProps:a,getProps:l,setProps:s}}function Wt(){const e=c.inject(Mt);if(!e)throw new te;return e}const Nn=c.defineAsyncComponent(()=>new Promise(e=>{e({default:{template:"foo"}})}));function Ft(e){return e.name===Nn.name&&"__asyncLoader"in e}function Jt(e,t,r){c.watch(e,(n,o)=>{n&&n.addEventListener(t,r),o&&o.removeEventListener(t,r)},{immediate:!0}),c.onUnmounted(()=>{e.value&&e.value.removeEventListener(t,r)})}function jn(e){const t=new Map,r=c.ref(),{getPrefetchProps:n,setPrefetchProps:o}=Wt(),{isElementVisible:a}=Jr(r),s=()=>{const u=Array.from(t.values()).reduce((d,R)=>(Object.assign(d,R),d),{});o(u)};c.watch(()=>c.toValue(e),({route:u,...d})=>{t.clear(),u&&i("eager",u,d)},{immediate:!0}),c.watch(a,u=>{const{route:d,...R}=c.toValue(e);!d||!u||i("lazy",d,R)},{immediate:!0}),Jt(r,"focusin",l),Jt(r,"mouseover",l);function l(){const{route:u,...d}=c.toValue(e);u&&i("intent",u,d)}function i(u,d,R){Hn(u,d,R),t.has(u)||t.set(u,n(u,d,R))}return{element:r,commit:s}}function Hn(e,t,r){t.matches.forEach(n=>{Ot({...r,routePrefetch:n.prefetch},"components")===e&&(tt(n)&&Ft(n.component)&&n.component.__asyncLoader(),rt(n)&&Object.values(n.components).forEach(a=>{Ft(a)&&a.__asyncLoader()}))})}function We(e,t,{exact:r}={}){return Sr(e)?t===void 0?!0:r?e.matched.name===t:e.matches.map(n=>n.name).includes(t):!1}function Gt(e,t={},r={}){const n=ye(),o=c.computed(()=>{const y=c.toValue(e);return typeof y!="string"?y:N(y)?n.find(y,c.toValue(r)):n.resolve(y,c.toValue(t),c.toValue(r))}),a=c.computed(()=>{if(o.value)return o.value.href;const y=c.toValue(e);if(N(y))return y;console.error(new Error("Failed to resolve route in RouterLink."))}),s=c.computed(()=>We(n.route)&&n.route.matches.some(y=>{var w;return y.id===((w=o.value)==null?void 0:w.id)})),l=c.computed(()=>{var y;return n.route.id===((y=o.value)==null?void 0:y.id)}),i=c.computed(()=>!!a.value&&n.isExternal(a.value)),u=c.computed(()=>{const y=c.toValue(e);return typeof y!="string"||N(y)?c.toValue(t):c.toValue(r)}),{element:d,commit:R}=jn(()=>({route:o.value,routerPrefetch:n.prefetch,linkPrefetch:u.value.prefetch})),P=y=>{R();const w={replace:(y==null?void 0:y.replace)??u.value.replace,query:qe(u.value.query,y==null?void 0:y.query),hash:(y==null?void 0:y.hash)??u.value.hash,state:{...u.value.state,...y==null?void 0:y.state}},f=c.toValue(e);return N(f)||typeof f=="object"?n.push(f,w):n.push(f,c.toValue(t),w)};return{element:d,route:o,href:a,isMatch:s,isExactMatch:l,isExternal:i,push:P,replace:y=>P({...y,replace:!0})}}const $n=["href"],Qt=c.defineComponent({__name:"routerLink",props:{to:{},prefetch:{type:[Boolean,String,Object],default:void 0},query:{},hash:{},replace:{type:Boolean},state:{}},setup(e){const t=e,r=ye(),n=c.computed(()=>P(t.to)),o=c.computed(()=>b(t.to)),a=c.computed(()=>{const{to:w,...f}=t;return f}),{element:s,isMatch:l,isExactMatch:i,isExternal:u,push:d}=Gt(()=>typeof t.to=="function"?t.to(r.resolve):t.to,a),R=c.computed(()=>({"router-link--match":l.value,"router-link--exact-match":i.value}));function P(w){if(typeof w=="function"){const f=w(r.resolve);return P(f)}return N(w)?r.find(w):w}function b(w){if(typeof w=="function"){const f=w(r.resolve);return b(f)}return N(w)?w:w==null?void 0:w.href}function y(w){w.preventDefault(),d()}return(w,f)=>(c.openBlock(),c.createElementBlock("a",{ref_key:"element",ref:s,href:o.value,class:c.normalizeClass(["router-link",R.value]),onClick:y},[c.renderSlot(w.$slots,"default",c.normalizeProps(c.guardReactiveProps({route:n.value,isMatch:c.unref(l),isExactMatch:c.unref(i),isExternal:c.unref(u)})))],10,$n))}});function zt(e,t){const r=ye();function n(){if(!e)return;if(!We(r.route,e,t))throw new Ye(e,r.route.name)}return c.watch(r.route,n,{immediate:!0,deep:!0}),r.route}const Kt=Symbol();function Fe(){return c.inject(Kt,0)}function qn(e,t){return c.defineComponent({name:"PropsWrapper",expose:[],setup(){const r=t(),n=c.getCurrentInstance();return()=>r instanceof Error?"":Tt(r)?n!=null&&n.suspense?c.h(In(e,r)):c.h(_n(e,r)):c.h(e,r)}})}function _n(e,t){return c.defineComponent({name:"AsyncPropsWrapper",expose:[],setup(){const r=c.ref();return(async()=>r.value=await t)(),()=>r.value instanceof Error?"":r.value?c.h(e,r.value):""}})}function In(e,t){return c.defineComponent({name:"SuspenseAsyncPropsWrapper",expose:[],async setup(){const r=await t;return()=>c.h(e,r)}})}const Yt=c.defineComponent({__name:"routerView",props:{name:{default:"default"}},setup(e){const t=zt(),r=br(),n=Fe(),{getProps:o}=Wt(),a=c.resolveComponent("RouterView",!0);c.provide(Kt,n+1);const s=c.computed(()=>{if(r.value)return r.value.component;const u=t.matches.at(n);if(!u)return null;const d=l(u),R=o(u.id,e.name,t);return d?R?qn(d,()=>R):d:null});function l(u){return i(u)[e.name]}function i(u){return rt(u)?u.components:tt(u)?{default:u.component}:typeof a=="string"?{}:{default:a}}return(u,d)=>s.value?c.renderSlot(u.$slots,"default",c.normalizeProps(c.mergeProps({key:0},{route:c.unref(t),component:s.value,rejection:c.unref(r)})),()=>[(c.openBlock(),c.createBlock(c.resolveDynamicComponent(s.value)))]):c.createCommentVNode("",!0)}});function Xt(){const e=c.inject(wt);if(!e)throw new te;return e}function Zt(e){return t=>{const r=Fe(),o=Xt().addComponentBeforeRouteHook({lifecycle:e,hook:t,depth:r-1});return c.onUnmounted(o),o}}function er(e){return t=>{const r=Fe(),o=Xt().addComponentAfterRouteHook({lifecycle:e,hook:t,depth:r-1});return c.onUnmounted(o),o}}const On=Zt("onBeforeRouteLeave"),Tn=Zt("onBeforeRouteUpdate"),Dn=er("onAfterRouteLeave"),Mn=er("onAfterRouteUpdate");function Wn(e){return ue(e)&&typeof e.value=="string"}function tr(e){return Wn(e)?e:jt(e,{})}function Fn(e){const t=Ne(),r=$t(e.name),n=qt(e.path),o=_t(e.query),a=Ht(e.hash),s=e.meta??{},l=lr(e)?tr(e.host):tr(""),i=c.markRaw({id:t,meta:{},state:{},...e}),u={id:t,matched:i,matches:[i],name:r,host:l,path:n,query:o,hash:a,meta:s,depth:1,state:{}},d=et(e)?nt(e.parent,u):u;return ne(d.path.params,d.query.params,d.host.params),d}A.DuplicateParamsError=ze,A.MetaPropertyConflict=Ke,A.RouterLink=Qt,A.RouterNotInstalledError=te,A.RouterView=Yt,A.UseRouteInvalidError=Ye,A.asUrl=xe,A.createExternalRoute=Fn,A.createParam=ut,A.createRoute=ee,A.createRouter=bn,A.createRouterPlugin=Sn,A.isRoute=We,A.isUrl=N,A.onAfterRouteLeave=Dn,A.onAfterRouteUpdate=Mn,A.onBeforeRouteLeave=On,A.onBeforeRouteUpdate=Tn,A.path=ke,A.query=Te,A.useLink=Gt,A.useRoute=zt,A.useRouter=ye,A.withDefault=gr,Object.defineProperty(A,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(k,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("vue"),require("zod")):typeof define=="function"&&define.amd?define(["exports","vue","zod"],c):(k=typeof globalThis<"u"?globalThis:k||self,c(k["@kitbag/router"]={},k.Vue,k.zod))})(this,function(k,c,b){"use strict";var mo=Object.defineProperty;var yo=(k,c,b)=>c in k?mo(k,c,{enumerable:!0,configurable:!0,writable:!0,value:b}):k[c]=b;var F=(k,c,b)=>yo(k,typeof c!="symbol"?c+"":c,b);function Z(e){return typeof e!="string"?!1:/^(https?:\/\/|\/).*/g.test(e)}function Ve(e){return Z(e)?e:`/${e}`}class at extends Error{constructor(t){super(`Invalid Param "${t}": Router does not support multiple params by the same name. All param names must be unique.`)}}class st extends Error{constructor(t){super(`Child property on meta for ${t} conflicts with the parent meta.`)}}class z extends Error{constructor(){super("Router not installed")}}class ct extends Error{constructor(t,r){super(`useRoute called with incorrect route. Given ${t}, expected ${r}`)}}const it=Symbol();function Ee(){const e=c.inject(it);if(!e)throw new z;return e}function de(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function J(e){return typeof e=="string"&&e.length>0}function Pe(e){return{value:J(e)?e.replace(/^#*/,""):void 0}}function Rr(e,t){return Pe(`${e.value??""}${t.value??""}`)}function wr(e,t){return Er(e,t),{...e,...t}}function Er(e,t){const r=Object.keys(e).find(n=>n in t&&typeof t[n]!=typeof e[n]);if(r)throw new st(r)}function se(e){return Array.isArray(e)?e:[e]}function ut(e,t){return e.filter(r=>t===r).length}function ce(...e){const t=e.flatMap(r=>Array.isArray(r)?r:Object.keys(r).map(Pr));for(const r of t)if(ut(t,r)>1)throw new at(r)}function Pr(e){return e.startsWith("?")?e.slice(1):e}function br(e,t){return ce(e.params,t.params),{value:`${e.value}${t.value}`,params:{...e.params,...t.params}}}function Sr(e,t){return ce(e.params,t.params),{value:[e.value,t.value].filter(J).join("&"),params:{...e.params,...t.params}}}function vr(e,t){return ce(e,t),{...e,...t}}function Ar(e){return"host"in e&&!!e.host}function ft(e){return"parent"in e&&!!e.parent}function lt(e){return"component"in e&&!!e.component}function ht(e){return"props"in e&&typeof e.props=="function"}function pt(e){return"components"in e&&!!e.components}function dt(e){return"props"in e&&typeof e.props=="object"}function kr(e){return"state"in e&&!!e.state}function mt(e,t){return{...t,path:br(e.path,t.path),query:Sr(e.query,t.query),meta:wr(e.meta,t.meta),state:vr(e.state,t.state),hash:Rr(e.hash,t.hash),matches:[...e.matches,t.matched],host:e.host,depth:e.depth+1}}function je(){return typeof window<"u"&&typeof window.document<"u"}class W extends Error{}const G="[",K="]";function Ur(e){return e!==String&&e!==Boolean&&e!==Number&&e!==Date}function Lr(e){return typeof e=="function"&&Ur(e)}function be(e){return typeof e=="object"&&"get"in e&&typeof e.get=="function"&&"set"in e&&typeof e.set=="function"}function yt(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function Br(e){return be(e)&&e.defaultValue!==void 0}function Cr(e,t){return Pt(e,t)}function gt(e){return{get:(t,{invalid:r})=>{try{return $e(t,e)}catch{throw r()}},set:(t,{invalid:r})=>{try{return He(t,e)}catch{throw r()}}}}const xr=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;function ie(e,t){if(typeof t=="string"&&xr.test(t)){const r=new Date(t);return isNaN(r.getTime())?t:r}return t}function ue(e){for(const t of e)try{return t()}catch{continue}throw new Error("All functions failed")}function Se(e,t){return e instanceof b.ZodString?1:t instanceof b.ZodString?-1:0}function $e(e,t){if(t instanceof b.ZodString)return t.parse(e);if(t instanceof b.ZodBoolean)return t.parse(!!e);if(t instanceof b.ZodDate)return t.parse(new Date(e));if(t instanceof b.ZodNumber)return t.parse(Number(e));if(t instanceof b.ZodLiteral)return ue([()=>t.parse(Number(e)),()=>t.parse(!!e),()=>t.parse(e)]);if(t instanceof b.ZodObject)return t.parse(JSON.parse(e,ie));if(t instanceof b.ZodEnum)return t.parse(e);if(t instanceof b.ZodNativeEnum)return ue([()=>t.parse(Number(e)),()=>t.parse(e)]);if(t instanceof b.ZodArray||t instanceof b.ZodTuple)return t.parse(JSON.parse(e,ie));if(t instanceof b.ZodUnion){const r=Array.from(t._def.options).sort(Se).map(n=>()=>$e(e,n));return ue(r)}if(t instanceof b.ZodDiscriminatedUnion){const r=Array.from(t.options).sort(Se).map(n=>()=>$e(e,n));return ue(r)}if(t instanceof b.ZodRecord)return t.parse(JSON.parse(e,ie));if(t instanceof b.ZodMap)return t.parse(new Map(JSON.parse(e,ie)));if(t instanceof b.ZodSet)return t.parse(new Set(JSON.parse(e,ie)));if(t instanceof b.ZodIntersection)throw new Error("Intersection schemas are not supported");if(t instanceof b.ZodPromise)throw new Error("Promise schemas are not supported");if(t instanceof b.ZodFunction)throw new Error("Function schemas are not supported");return t.parse(e)}function He(e,t){if(t instanceof b.ZodString)return t.parse(e);if(t instanceof b.ZodBoolean)return t.parse(e).toString();if(t instanceof b.ZodDate)return t.parse(e).toISOString();if(t instanceof b.ZodNumber)return t.parse(Number(e)).toString();if(t instanceof b.ZodLiteral)return t.parse(e).toString();if(t instanceof b.ZodObject)return JSON.stringify(t.parse(e));if(t instanceof b.ZodEnum)return t.parse(e);if(t instanceof b.ZodNativeEnum)return t.parse(e).toString();if(t instanceof b.ZodArray||t instanceof b.ZodTuple)return JSON.stringify(t.parse(e));if(t instanceof b.ZodUnion){const r=Array.from(t._def.options).sort(Se).map(n=>()=>He(e,n));return ue(r)}if(t instanceof b.ZodDiscriminatedUnion){const r=Array.from(t.options).sort(Se).map(n=>()=>He(e,n));return ue(r)}if(t instanceof b.ZodRecord)return JSON.stringify(t.parse(e));if(t instanceof b.ZodMap){const r=t.parse(e);return JSON.stringify(Array.from(r.entries()))}if(t instanceof b.ZodSet){const r=t.parse(e);return JSON.stringify(Array.from(r.values()))}if(t instanceof b.ZodIntersection)throw new Error("Intersection schemas are not supported");if(t instanceof b.ZodPromise)throw new Error("Promise schemas are not supported");if(t instanceof b.ZodFunction)throw new Error("Function schemas are not supported");return JSON.stringify(t.parse(e))}function Nr(e,t){return e[t]??String}const j={invalid:e=>{throw new W(e)}},Rt={get:e=>e,set:(e,{invalid:t})=>{if(typeof e!="string")throw t();return e}},_e={get:(e,{invalid:t})=>{if(e==="true")return!0;if(e==="false")return!1;throw t()},set:(e,{invalid:t})=>{if(typeof e!="boolean")throw t();return e.toString()}},Oe={get:(e,{invalid:t})=>{const r=Number(e);if(isNaN(r))throw t();return r},set:(e,{invalid:t})=>{if(typeof e!="number")throw t();return e.toString()}},wt={get:(e,{invalid:t})=>{const r=new Date(e);if(isNaN(r.getTime()))throw t();return r},set:(e,{invalid:t})=>{if(typeof e!="object"||!(e instanceof Date))throw t();return e.toISOString()}},Et={get:(e,{invalid:t})=>{try{return JSON.parse(e)}catch{throw t()}},set:(e,{invalid:t})=>{try{return JSON.stringify(e)}catch{throw t()}}};function Vr(e,t){switch(typeof t){case"string":return Rt.get(e,j)===t;case"number":return Oe.get(e,j)===t;case"boolean":return _e.get(e,j)===t;default:return!1}}function ee(e,t,r=!1){if(e===void 0||!J(e)){if(Br(t))return t.defaultValue;if(r)return;throw new W}if(t===String)return Rt.get(e,j);if(t===Boolean)return _e.get(e,j);if(t===Number)return Oe.get(e,j);if(t===Date)return wt.get(e,j);if(t===JSON)return Et.get(e,j);if(Lr(t))return t(e,j);if(be(t))return t.get(e,j);if(t instanceof RegExp){if(t.test(e))return e;throw new W}if(yt(t)){if(Vr(e,t))return t;throw new W}return t instanceof b.ZodSchema?gt(t).get(e,j):e}function jr(e,t,r=!1){try{return ee(e,t,r)}catch(n){if(n instanceof W)return;throw n}}function $r(e,t,r=!1){try{return te(e,t,r)}catch(n){if(n instanceof W)return;throw n}}function te(e,t,r=!1){if(e===void 0){if(r)return"";throw new W}if(t===Boolean)return _e.set(e,j);if(t===Number)return Oe.set(e,j);if(t===Date)return wt.set(e,j);if(t===JSON)return Et.set(e,j);if(be(t))return t.set(e,j);if(yt(t)){if(t!==e)throw new W;return e.toString()}if(t instanceof b.ZodSchema)return gt(t).set(e,j);try{return e.toString()}catch{throw new W}}function Pt(e,t){return be(e)?{...e,defaultValue:t??e.defaultValue}:{get:r=>ee(r,e),set:r=>te(r,e),defaultValue:t}}function Y(){return Y=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Y.apply(null,arguments)}var H;(function(e){e.Pop="POP",e.Push="PUSH",e.Replace="REPLACE"})(H||(H={}));var fe=process.env.NODE_ENV!=="production"?function(e){return Object.freeze(e)}:function(e){return e};function re(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}var ve="beforeunload",Hr="hashchange",bt="popstate";function St(e){e===void 0&&(e={});var t=e,r=t.window,n=r===void 0?document.defaultView:r,o=n.history;function a(){var m=n.location,h=m.pathname,P=m.search,L=m.hash,C=o.state||{};return[C.idx,fe({pathname:h,search:P,hash:L,state:C.usr||null,key:C.key||"default"})]}var s=null;function f(){if(s)g.call(s),s=null;else{var m=H.Pop,h=a(),P=h[0],L=h[1];if(g.length)if(P!=null){var C=y-P;C&&(s={action:m,location:L,retry:function(){A(C*-1)}},A(C))}else process.env.NODE_ENV!=="production"&&re(!1,"You are trying to block a POP navigation to a location that was not created by the history library. The block will fail silently in production, but in general you should do all navigation with the history library (instead of using window.history.pushState directly) to avoid this situation.");else U(m)}}n.addEventListener(bt,f);var l=H.Pop,u=a(),y=u[0],S=u[1],x=le(),g=le();y==null&&(y=0,o.replaceState(Y({},o.state,{idx:y}),""));function d(m){return typeof m=="string"?m:ne(m)}function R(m,h){return h===void 0&&(h=null),fe(Y({pathname:S.pathname,hash:"",search:""},typeof m=="string"?me(m):m,{state:h,key:ke()}))}function i(m,h){return[{usr:m.state,key:m.key,idx:h},d(m)]}function p(m,h,P){return!g.length||(g.call({action:m,location:h,retry:P}),!1)}function U(m){l=m;var h=a();y=h[0],S=h[1],x.call({action:l,location:S})}function w(m,h){var P=H.Push,L=R(m,h);function C(){w(m,h)}if(p(P,L,C)){var V=i(L,y+1),$=V[0],_=V[1];try{o.pushState($,"",_)}catch{n.location.assign(_)}U(P)}}function E(m,h){var P=H.Replace,L=R(m,h);function C(){E(m,h)}if(p(P,L,C)){var V=i(L,y),$=V[0],_=V[1];o.replaceState($,"",_),U(P)}}function A(m){o.go(m)}var B={get action(){return l},get location(){return S},createHref:d,push:w,replace:E,go:A,back:function(){A(-1)},forward:function(){A(1)},listen:function(h){return x.push(h)},block:function(h){var P=g.push(h);return g.length===1&&n.addEventListener(ve,Ae),function(){P(),g.length||n.removeEventListener(ve,Ae)}}};return B}function _r(e){e===void 0&&(e={});var t=e,r=t.window,n=r===void 0?document.defaultView:r,o=n.history;function a(){var h=me(n.location.hash.substr(1)),P=h.pathname,L=P===void 0?"/":P,C=h.search,V=C===void 0?"":C,$=h.hash,_=$===void 0?"":$,D=o.state||{};return[D.idx,fe({pathname:L,search:V,hash:_,state:D.usr||null,key:D.key||"default"})]}var s=null;function f(){if(s)g.call(s),s=null;else{var h=H.Pop,P=a(),L=P[0],C=P[1];if(g.length)if(L!=null){var V=y-L;V&&(s={action:h,location:C,retry:function(){B(V*-1)}},B(V))}else process.env.NODE_ENV!=="production"&&re(!1,"You are trying to block a POP navigation to a location that was not created by the history library. The block will fail silently in production, but in general you should do all navigation with the history library (instead of using window.history.pushState directly) to avoid this situation.");else w(h)}}n.addEventListener(bt,f),n.addEventListener(Hr,function(){var h=a(),P=h[1];ne(P)!==ne(S)&&f()});var l=H.Pop,u=a(),y=u[0],S=u[1],x=le(),g=le();y==null&&(y=0,o.replaceState(Y({},o.state,{idx:y}),""));function d(){var h=document.querySelector("base"),P="";if(h&&h.getAttribute("href")){var L=n.location.href,C=L.indexOf("#");P=C===-1?L:L.slice(0,C)}return P}function R(h){return d()+"#"+(typeof h=="string"?h:ne(h))}function i(h,P){return P===void 0&&(P=null),fe(Y({pathname:S.pathname,hash:"",search:""},typeof h=="string"?me(h):h,{state:P,key:ke()}))}function p(h,P){return[{usr:h.state,key:h.key,idx:P},R(h)]}function U(h,P,L){return!g.length||(g.call({action:h,location:P,retry:L}),!1)}function w(h){l=h;var P=a();y=P[0],S=P[1],x.call({action:l,location:S})}function E(h,P){var L=H.Push,C=i(h,P);function V(){E(h,P)}if(process.env.NODE_ENV!=="production"&&re(C.pathname.charAt(0)==="/","Relative pathnames are not supported in hash history.push("+JSON.stringify(h)+")"),U(L,C,V)){var $=p(C,y+1),_=$[0],D=$[1];try{o.pushState(_,"",D)}catch{n.location.assign(D)}w(L)}}function A(h,P){var L=H.Replace,C=i(h,P);function V(){A(h,P)}if(process.env.NODE_ENV!=="production"&&re(C.pathname.charAt(0)==="/","Relative pathnames are not supported in hash history.replace("+JSON.stringify(h)+")"),U(L,C,V)){var $=p(C,y),_=$[0],D=$[1];o.replaceState(_,"",D),w(L)}}function B(h){o.go(h)}var m={get action(){return l},get location(){return S},createHref:R,push:E,replace:A,go:B,back:function(){B(-1)},forward:function(){B(1)},listen:function(P){return x.push(P)},block:function(P){var L=g.push(P);return g.length===1&&n.addEventListener(ve,Ae),function(){L(),g.length||n.removeEventListener(ve,Ae)}}};return m}function vt(e){e===void 0&&(e={});var t=e,r=t.initialEntries,n=r===void 0?["/"]:r,o=t.initialIndex,a=n.map(function(w){var E=fe(Y({pathname:"/",search:"",hash:"",state:null,key:ke()},typeof w=="string"?me(w):w));return process.env.NODE_ENV!=="production"&&re(E.pathname.charAt(0)==="/","Relative pathnames are not supported in createMemoryHistory({ initialEntries }) (invalid entry: "+JSON.stringify(w)+")"),E}),s=At(o??a.length-1,0,a.length-1),f=H.Pop,l=a[s],u=le(),y=le();function S(w){return typeof w=="string"?w:ne(w)}function x(w,E){return E===void 0&&(E=null),fe(Y({pathname:l.pathname,search:"",hash:""},typeof w=="string"?me(w):w,{state:E,key:ke()}))}function g(w,E,A){return!y.length||(y.call({action:w,location:E,retry:A}),!1)}function d(w,E){f=w,l=E,u.call({action:f,location:l})}function R(w,E){var A=H.Push,B=x(w,E);function m(){R(w,E)}process.env.NODE_ENV!=="production"&&re(l.pathname.charAt(0)==="/","Relative pathnames are not supported in memory history.push("+JSON.stringify(w)+")"),g(A,B,m)&&(s+=1,a.splice(s,a.length,B),d(A,B))}function i(w,E){var A=H.Replace,B=x(w,E);function m(){i(w,E)}process.env.NODE_ENV!=="production"&&re(l.pathname.charAt(0)==="/","Relative pathnames are not supported in memory history.replace("+JSON.stringify(w)+")"),g(A,B,m)&&(a[s]=B,d(A,B))}function p(w){var E=At(s+w,0,a.length-1),A=H.Pop,B=a[E];function m(){p(w)}g(A,B,m)&&(s=E,d(A,B))}var U={get index(){return s},get action(){return f},get location(){return l},createHref:S,push:R,replace:i,go:p,back:function(){p(-1)},forward:function(){p(1)},listen:function(E){return u.push(E)},block:function(E){return y.push(E)}};return U}function At(e,t,r){return Math.min(Math.max(e,t),r)}function Ae(e){e.preventDefault(),e.returnValue=""}function le(){var e=[];return{get length(){return e.length},push:function(r){return e.push(r),function(){e=e.filter(function(n){return n!==r})}},call:function(r){e.forEach(function(n){return n&&n(r)})}}}function ke(){return Math.random().toString(36).substr(2,8)}function ne(e){var t=e.pathname,r=t===void 0?"/":t,n=e.search,o=n===void 0?"":n,a=e.hash,s=a===void 0?"":a;return o&&o!=="?"&&(r+=o.charAt(0)==="?"?o:"?"+o),s&&s!=="#"&&(r+=s.charAt(0)==="#"?s:"#"+s),r}function me(e){var t={};if(e){var r=e.indexOf("#");r>=0&&(t.hash=e.substr(r),e=e.substr(0,r));var n=e.indexOf("?");n>=0&&(t.search=e.substr(n),e=e.substr(0,n)),e&&(t.pathname=e)}return t}const kt=Symbol();function Or(){const e=c.inject(kt);if(!e)throw new z;return e}const Ut=Symbol("isRouterRouteSymbol");function qr(e){return typeof e=="object"&&e!==null&&Ut in e}function Zr(e,t){function r(i,p,U){if(typeof i=="object"){const E={...e.params,...i};return t(e.name,E,p)}const w={...e.params,[i]:p};return t(e.name,w,U)}const n=(...i)=>{const p=new URLSearchParams(e.query);p.set(...i),r({},{query:p})},o=(...i)=>{const p=new URLSearchParams(e.query);p.append(...i),r({},{query:p})},a=(...i)=>{const p=new URLSearchParams(e.query);p.delete(...i),r({},{query:p})},{id:s,matched:f,matches:l,name:u,hash:y,href:S}=c.toRefs(e),x=c.computed({get(){return new Proxy(e.params,{set(i,p,U){return r(p,U),!0}})},set(i){r(i)}}),g=c.computed({get(){return new Proxy(e.query,{get(i,p,U){switch(p){case"append":return o;case"set":return n;case"delete":return a;default:return Reflect.get(i,p,U)}}})},set(i){r({},{query:i})}}),d=c.computed({get(){return new Proxy(e.state,{set(i,p,U){return r({},{state:{...e.state,[p]:U}}),!0}})},set(i){r({},{state:i})}});return c.reactive({id:s,matched:f,matches:l,state:d,query:g,hash:y,params:x,name:u,href:S,update:r,[Ut]:!0})}const Lt=Symbol();function Dr(e,t){const r=c.reactive({...e}),n=s=>{Object.assign(r,{[Lt]:!1,...s})},o=r,a=Zr(o,t);return{currentRoute:o,routerRoute:a,updateRoute:n}}function O(e){return!e.startsWith("http")?Tr(e):Ir(e)}function Ir(e){const{protocol:t,host:r,pathname:n,search:o,searchParams:a,hash:s}=new URL(e,e);return{protocol:t,host:r,pathname:n,search:o,searchParams:a,hash:s}}function Tr(e){const{pathname:t,search:r,searchParams:n,hash:o}=new URL(e,"https://localhost");return{pathname:t,search:r,searchParams:n,hash:o}}function Mr(e){return t=>{const{host:r}=O(t);return!(r===void 0||r===e)}}function Fr({mode:e,listener:t}){const r=Jr(e),n=(l,u)=>{if(u!=null&&u.replace){r.replace(l,u.state);return}r.push(l,u==null?void 0:u.state)},o=()=>{const l=ne(r.location);r.replace(l)};let a;return{...r,update:n,refresh:o,startListening:()=>{a==null||a(),a=r.listen(t)},stopListening:()=>{a==null||a()}}}function Jr(e="auto"){switch(e){case"auto":return je()?St():vt();case"browser":return St();case"memory":return vt();case"hash":return _r();default:const t=e;throw new Error(`Switch is not exhaustive for mode: ${t}`)}}class Bt extends Error{constructor(){super("Uncaught CallbackContextAbortError");F(this,"response");this.response={status:"ABORT"}}}class he extends Error{constructor(r){super("Uncaught CallbackContextPushError");F(this,"response");this.response={status:"PUSH",to:r}}}class Ue extends Error{constructor(r){super("Uncaught CallbackContextRejectionError");F(this,"response");this.response={status:"REJECT",type:r}}}function Ct(){return{reject:o=>{throw new Ue(o)},push:(...o)=>{throw new he(o)},replace:(o,a,s)=>{if(Z(o)){const u=a??{};throw new he([o,{...u,replace:!0}])}const f=a,l=s??{};throw new he([o,f,{...l,replace:!0}])},abort:()=>{throw new Bt}}}class oe{constructor(){F(this,"onBeforeRouteEnter",new Set);F(this,"onBeforeRouteUpdate",new Set);F(this,"onBeforeRouteLeave",new Set);F(this,"onAfterRouteEnter",new Set);F(this,"onAfterRouteUpdate",new Set);F(this,"onAfterRouteLeave",new Set)}}const ye=(e,t,r)=>{var a,s;const n=e.matches,o=(t==null?void 0:t.matches)??[];return((a=n.at(r))==null?void 0:a.id)!==((s=o.at(r))==null?void 0:s.id)},ge=(e,t,r)=>{var a,s;const n=e.matches,o=(t==null?void 0:t.matches)??[];return((a=n.at(r))==null?void 0:a.id)!==((s=o.at(r))==null?void 0:s.id)},Re=(e,t,r)=>{var n,o;return((n=e.matches.at(r))==null?void 0:n.id)===((o=t==null?void 0:t.matches.at(r))==null?void 0:o.id)};function xt(e){switch(e){case"onBeforeRouteEnter":case"onAfterRouteEnter":return ye;case"onBeforeRouteUpdate":case"onAfterRouteUpdate":return Re;case"onBeforeRouteLeave":case"onAfterRouteLeave":return ge;default:throw new Error(`Switch is not exhaustive for lifecycle: ${e}`)}}function Wr(e,t){const r=new oe;return e.matches.forEach((n,o)=>{n.onBeforeRouteEnter&&ye(e,t,o)&&se(n.onBeforeRouteEnter).forEach(a=>r.onBeforeRouteEnter.add(a)),n.onBeforeRouteUpdate&&Re(e,t,o)&&se(n.onBeforeRouteUpdate).forEach(a=>r.onBeforeRouteUpdate.add(a))}),t==null||t.matches.forEach((n,o)=>{n.onBeforeRouteLeave&&ge(e,t,o)&&se(n.onBeforeRouteLeave).forEach(a=>r.onBeforeRouteLeave.add(a))}),r}function Gr(e,t){const r=new oe;return e.matches.forEach((n,o)=>{n.onAfterRouteEnter&&ye(e,t,o)&&se(n.onAfterRouteEnter).forEach(a=>r.onAfterRouteEnter.add(a)),n.onAfterRouteUpdate&&Re(e,t,o)&&se(n.onAfterRouteUpdate).forEach(a=>r.onAfterRouteUpdate.add(a))}),t==null||t.matches.forEach((n,o)=>{n.onAfterRouteLeave&&ge(e,t,o)&&se(n.onAfterRouteLeave).forEach(a=>r.onAfterRouteLeave.add(a))}),r}function Qr(e,t,r){const n=new oe;return e.matches.forEach((o,a)=>{ye(e,t,a)&&r.onBeforeRouteEnter.forEach(s=>n.onBeforeRouteEnter.add(s)),Re(e,t,a)&&r.onBeforeRouteUpdate.forEach(s=>n.onBeforeRouteUpdate.add(s))}),t==null||t.matches.forEach((o,a)=>{ge(e,t,a)&&r.onBeforeRouteLeave.forEach(s=>n.onBeforeRouteLeave.add(s))}),n}function Kr(e,t,r){const n=new oe;return e.matches.forEach((o,a)=>{ye(e,t,a)&&r.onAfterRouteEnter.forEach(s=>n.onAfterRouteEnter.add(s)),Re(e,t,a)&&r.onAfterRouteUpdate.forEach(s=>n.onAfterRouteUpdate.add(s))}),t==null||t.matches.forEach((o,a)=>{ge(e,t,a)&&r.onAfterRouteLeave.forEach(s=>n.onAfterRouteLeave.add(s))}),n}const Nt=Symbol();function Yr(){const e={global:new oe,component:new oe},{reject:t,push:r,replace:n,abort:o}=Ct(),a=i=>(e.global.onBeforeRouteEnter.add(i),()=>e.global.onBeforeRouteEnter.delete(i)),s=i=>(e.global.onBeforeRouteUpdate.add(i),()=>e.global.onBeforeRouteUpdate.delete(i)),f=i=>(e.global.onBeforeRouteLeave.add(i),()=>e.global.onBeforeRouteLeave.delete(i)),l=i=>(e.global.onAfterRouteEnter.add(i),()=>e.global.onAfterRouteEnter.delete(i)),u=i=>(e.global.onAfterRouteUpdate.add(i),()=>e.global.onAfterRouteUpdate.delete(i)),y=i=>(e.global.onAfterRouteLeave.add(i),()=>e.global.onAfterRouteLeave.delete(i));async function S({to:i,from:p}){const{global:U,component:w}=e,E=Wr(i,p),A=Qr(i,p,U),B=[...A.onBeforeRouteEnter,...E.onBeforeRouteEnter,...A.onBeforeRouteUpdate,...E.onBeforeRouteUpdate,...w.onBeforeRouteUpdate,...A.onBeforeRouteLeave,...E.onBeforeRouteLeave,...w.onBeforeRouteLeave];try{const m=B.map(h=>h(i,{from:p,reject:t,push:r,replace:n,abort:o}));await Promise.all(m)}catch(m){if(m instanceof he||m instanceof Ue||m instanceof Bt)return m.response;throw m}return{status:"SUCCESS"}}async function x({to:i,from:p}){const{global:U,component:w}=e,E=Gr(i,p),A=Kr(i,p,U),B=[...w.onAfterRouteLeave,...E.onAfterRouteLeave,...A.onAfterRouteLeave,...w.onAfterRouteUpdate,...E.onAfterRouteUpdate,...A.onAfterRouteUpdate,...w.onAfterRouteEnter,...E.onAfterRouteEnter,...A.onAfterRouteEnter];try{const m=B.map(h=>h(i,{from:p,reject:t,push:r,replace:n}));await Promise.all(m)}catch(m){if(m instanceof he||m instanceof Ue)return m.response;throw m}return{status:"SUCCESS"}}return{runBeforeRouteHooks:S,runAfterRouteHooks:x,addComponentBeforeRouteHook:({lifecycle:i,depth:p,hook:U})=>{const w=xt(i),E=e.component[i],A=(B,m)=>{if(w(B,m.from,p))return U(B,m)};return E.add(A),()=>E.delete(A)},addComponentAfterRouteHook:({lifecycle:i,depth:p,hook:U})=>{const w=xt(i),E=e.component[i],A=(B,m)=>{if(w(B,m.from,p))return U(B,m)};return E.add(A),()=>E.delete(A)},addGlobalRouteHooks:i=>{i.onBeforeRouteEnter.forEach(p=>a(p)),i.onBeforeRouteUpdate.forEach(p=>s(p)),i.onBeforeRouteLeave.forEach(p=>f(p)),i.onAfterRouteEnter.forEach(p=>l(p)),i.onAfterRouteUpdate.forEach(p=>u(p)),i.onAfterRouteLeave.forEach(p=>y(p))},onBeforeRouteEnter:a,onBeforeRouteUpdate:s,onBeforeRouteLeave:f,onAfterRouteEnter:l,onAfterRouteUpdate:u,onAfterRouteLeave:y}}function Xr(e){return c.defineComponent(()=>()=>c.h("h1",e),{name:e,props:[]})}function qe(e){const t=new URLSearchParams(e);return{get:(...r)=>t.get(...r),getAll:(...r)=>t.getAll(...r),set:(...r)=>{t.set(...r)},append:(...r)=>{t.append(...r)},delete:(...r)=>{t.delete(...r)},toString:(...r)=>t.toString(...r),forEach:(...r)=>{t.forEach(...r)},entries:(...r)=>t.entries(...r),keys:(...r)=>t.keys(...r),values:(...r)=>t.values(...r),has:(...r)=>t.has(...r),size:t.size,sort:()=>{t.sort()},[Symbol.iterator]:()=>t[Symbol.iterator]()}}function Ze(){let e=0;return()=>(++e).toString()}const zr=Ze()();function en(e){return e===zr}const De=Ze();function tn(e){const t=a=>c.markRaw(e[a]??Xr(a)),r=a=>{const s=c.markRaw(t(a)),f={id:De(),component:s,meta:{},state:{}};return{id:f.id,matched:f,matches:[f],name:a,query:qe(""),params:{},state:{},href:"/",hash:"",[Lt]:!0}},n=a=>{if(!a){o.value=null;return}const s=t(a);o.value={type:a,component:s}},o=c.ref(null);return{setRejection:n,rejection:o,getRejectionRoute:r}}class rn extends Error{constructor(){super("initialUrl must be set if window.location is unavailable")}}function nn(e){if(e)return e;if(je())return window.location.toString();throw new rn}function Vt(e){return!!e&&typeof e=="object"}const Le=!0;function on(e,t,r){if(Vt(e)&&t in e){const n=e[t];return typeof n=="string"?ee(n,r,Le):n}return ee(void 0,r,Le)}function jt(e,t){const r={};for(const[n,o]of Object.entries(e)){const a=on(t,n,o);r[n]=a}return r}function an(e,t,r){if(Vt(e)&&t in e){const n=e[t];return te(n,r,Le)}return te(void 0,r,Le)}const $t=(e,t)=>{const r={};for(const[n,o]of Object.entries(e)){const a=an(t,n,o);r[n]=a}return r};function sn(){const e=c.reactive(new Map),t=je()?s():null,r=f=>{e.set(f,!1),t==null||t.observe(f)},n=f=>{e.delete(f),t==null||t.unobserve(f)},o=()=>{t==null||t.disconnect()},a=f=>e.get(f)??!1;function s(){return new IntersectionObserver(f=>{f.forEach(l=>{e.set(l.target,l.isIntersecting)})})}return{observe:r,unobserve:n,disconnect:o,isElementVisible:a}}const Ht=Symbol("visibilityObserver");function cn(e){const t=c.inject(Ht);if(!t)throw new z;return c.watch(e,(n,o)=>{n&&t.observe(n),o&&t.unobserve(o)},{immediate:!0}),c.onUnmounted(()=>{e.value&&t.unobserve(e.value)}),{isElementVisible:c.computed(()=>e.value?t.isElementVisible(e.value):!1)}}class un extends Error{constructor(t){super(`Route not found: "${t}"`)}}function Ie(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function fn(e,t){const r=Array.from(e.matchAll(t));if(r.length===0)return[e];let n=0;const o=r.reduce((s,f)=>{const l=Ie(e.slice(n,f.index));l.length&&s.push(l);const[u]=f;return s.push(u),n=f.index+u.length,s},[]),a=e.slice(n);return a&&o.push(a),o}function ln(e){const t=_t(e.path.value);return new RegExp(`^${t}$`,"i")}function hn(e){const t=new URLSearchParams(e.query.value);return Array.from(t.entries()).filter(([,r])=>!Me(r)).map(([r,n])=>{const o=_t(n);return new RegExp(`${Ie(r)}=${o}(&|$)`,"i")})}function _t(e){return fn(e,new RegExp(pn,"g")).map(t=>t.startsWith(G)?Ot(t):Ie(t)).join("")}function Ot(e){return[dn,mn].reduce((t,r)=>r(t),e)}const pn=`\\${G}\\??([\\w-_]+)\\${K}`,Te=`\\${G}\\?([\\w-_]+)\\${K}`,qt=`\\${G}([\\w-_]+)\\${K}`;function dn(e){return e.replace(new RegExp(Te,"g"),".*")}function Me(e){return new RegExp(Te,"g").test(e)}function mn(e){return e.replace(new RegExp(qt,"g"),".+")}function we(e){const[t]=Be(e,new RegExp(Te,"g")),[r]=Be(e,new RegExp(qt,"g"));return t??r}function Be(e,t){return Array.from(e.matchAll(t)).flatMap(([,...n])=>n.map(o=>J(o)?o:""))}function Zt(e,t,r){const n=It(t,r),[o]=Be(e,n);return o}function Dt(e,t){if(!t)return e;const{name:r,param:n,value:o}=t,a=It(e,r);return Be(e,a).reduce((f,l)=>l===void 0?f:f.replace(l,()=>te(o,n,r.startsWith("?"))),e)}function It(e,t){const r=[yn,gn,Ot].reduce((n,o)=>o(n,t),e);return new RegExp(r,"g")}function yn(e,t){if(!t.startsWith("?"))return e;const r=new RegExp(`\\${G}\\${t}\\${K}`,"g");return e.replace(r,"(.*)")}function gn(e,t){if(t.startsWith("?"))return e;const r=new RegExp(`\\${G}${t}\\${K}`,"g");return e.replace(r,"(.+)")}function Tt({protocol:e,host:t,pathname:r,search:n,searchParams:o,hash:a}){const s=new URL("https://localhost");e&&(s.protocol=e),t&&(s.host=t),r&&(s.pathname=r),o?s.search=new URLSearchParams(o).toString():n&&(s.search=n),a&&(s.hash=a);const f=s.toString().replace(/^https:\/\/localhost\/*/,"/");return Ve(f)}function Fe(...e){const t=new URLSearchParams;for(const r of e){const n=new URLSearchParams(r);for(const[o,a]of n.entries())t.append(o,a)}return t}function Rn(e,t={}){const{params:r={},query:n}=t,o=Pn(e.query,r),a=Fe(o,n),s=En(e.path,r),f=Pe(e.hash.value??t.hash).value,l=wn(e.host,r),{protocol:u,host:y}=O(l);return Tt({protocol:u,host:y,pathname:s,searchParams:a,hash:f})}function wn(e,t){const r=e.value&&!e.value.startsWith("http")?`https://${e.value}`:e.value;return Object.entries(e.params).reduce((n,[o,a])=>{const s=we(`${G}${o}${K}`);return s?Dt(n,{name:o,param:a,value:t[s]}):n},r)}function En(e,t){return Object.entries(e.params).reduce((r,[n,o])=>{const a=we(`${G}${n}${K}`);return a?Dt(r,{name:n,param:o,value:t[a]}):r},e.value)}function Pn(e,t){const r=new URLSearchParams(e.value);if(!e.value)return r;for(const[n,o]of Array.from(r.entries())){const a=we(o);if(!a)continue;const f=Me(o),l=f?`?${a}`:a,u=te(t[a],e.params[l],f),y=t[a]===void 0&&u==="";f&&y?r.delete(n,o):r.set(n,u)}return r}const bn=(e,t)=>{try{Je(e,t)}catch{return!1}return!0},Je=(e,t)=>{const{pathname:r,search:n}=O(t);return{...Sn(e.path,r),...vn(e.query,n)}};function Sn(e,t){const r={},n=decodeURIComponent(t);for(const[o,a]of Object.entries(e.params)){const s=o.startsWith("?"),f=s?o.slice(1):o,l=Zt(n,e.value,o),u=ee(l,a,s);r[f]=u}return r}function vn(e,t){const r={},n=new URLSearchParams(e.value),o=new URLSearchParams(t);for(const[a,s]of Array.from(n.entries())){const f=we(s);if(!f)continue;const u=Me(s),y=u?`?${f}`:f,S=o.get(a)??void 0,x=ee(S,e.params[y],u);r[f]=x}return r}function An(e,t={},r={}){const n=Rn(e,{params:t,query:r.query,hash:r.hash}),{search:o,hash:a}=O(n);return{id:e.id,matched:e.matched,matches:e.matches,name:e.name,query:qe(o),params:Je(e,n),state:jt(e.state,r.state),hash:a,href:n}}const kn=e=>"name"in e.matched&&!!e.matched.name,Un=(e,t)=>{const{pathname:r}=O(t);return ln(e).test(r)},Ln=(e,t)=>{const{search:r}=O(t);return hn(e).every(o=>o.test(r))},We=(e,t)=>{const{hash:r}=O(t),{value:n}=e.hash;return n===void 0||`#${n.toLowerCase()}`===r.toLowerCase()};function Bn(e){const{searchParams:t,pathname:r}=O(e),n=-1,o=1;return(a,s)=>{const f=Ft(a,t),l=Mt(a,r),u=Ft(s,t),y=Mt(s,r);return a.depth>s.depth?n:a.depth<s.depth?o:f+l>u+y?n:f+l<u+y?o:We(a,e)?n:We(s,e)?o:0}}function Mt(e,t){const r=Object.keys(e.path.params).filter(o=>o.startsWith("?")).map(o=>o),n=r.filter(o=>Zt(t,e.path.value,o)===void 0);return r.length-n.length}function Ft(e,t){const r=new URLSearchParams(t),n=new URLSearchParams(e.query.value),o=Array.from(n.keys()),a=o.filter(s=>!r.has(s));return o.length-a.length}const Cn=[kn,Un,Ln,We,bn];function xn(e,t){const r=Bn(t);return e.filter(n=>Cn.every(o=>o(n,t))).sort(r)}function Nn(e,t,r){const n=xn(e,t);if(!n.length)return;const[o]=n,{searchParams:a,hash:s}=O(t);return{id:o.id,matched:o.matched,matches:o.matches,name:o.name,query:qe(a),params:Je(o,t),state:jt(o.state,r),hash:s,href:Ve(t)}}function Jt(e,t){const r=typeof e=="string"?O(e):e,n=typeof t=="string"?O(t):t,o=r.searchParams??new URLSearchParams(r.search),a=n.searchParams??new URLSearchParams(n.search);return Tt({protocol:J(n.protocol)?n.protocol:r.protocol,host:J(n.host)?n.host:r.host,pathname:J(n.pathname)?n.pathname:r.pathname,searchParams:Fe(a,o),hash:J(n.hash)?n.hash:r.hash})}function Ge(e,t){const r=new RegExp(`\\${G}(\\??[\\w-_]+)\\${K}`,"g");return Array.from(e.matchAll(r)).reduce((o,[a,s])=>{const f=we(a);if(!f)return o;const l=Nr(t,f);return ce([f],o),o[s]=l,o},{})}function Ce(e,t){return{value:e,params:Ge(e,t)}}function Vn(e,t){return J(t)?e.map(r=>{const n=`${t}${r.path.value}`;return{...r,path:Ce(n,r.path.params)}}):e}class jn extends Error{constructor(t){super(`Invalid Name "${t}": Router does not support multiple routes with the same name. All name names must be unique.`)}}function $n(e){const t=e.map(({name:r})=>r);for(const r of t)if(ut(t,r)>1)throw new jn(r)}function Hn(e,t=[],r){const n=[...e,...t.map(o=>o.routes)].flat();return $n(n),Vn(n,r)}function _n(e={},t=[]){const r=new oe;return pe("onBeforeRouteEnter",e,t).forEach(n=>r.onBeforeRouteEnter.add(n)),pe("onBeforeRouteUpdate",e,t).forEach(n=>r.onBeforeRouteUpdate.add(n)),pe("onBeforeRouteLeave",e,t).forEach(n=>r.onBeforeRouteLeave.add(n)),pe("onAfterRouteEnter",e,t).forEach(n=>r.onAfterRouteEnter.add(n)),pe("onAfterRouteUpdate",e,t).forEach(n=>r.onAfterRouteUpdate.add(n)),pe("onAfterRouteLeave",e,t).forEach(n=>r.onAfterRouteLeave.add(n)),r}function pe(e,t,r){return[t[e],...r.map(o=>o[e])].flat().filter(o=>o!==void 0)}function Wt(e){return typeof e=="object"&&e!==null&&"then"in e}function Qe(e,t,{exact:r}={}){return qr(e)?t===void 0?!0:r?e.matched.name===t:e.matches.map(n=>n.name).includes(t):!1}function Ke(e,t){const r=Ee();function n(){if(!e)return;if(!Qe(r.route,e,t))throw new ct(e,r.route.name)}return c.watch(r.route,n,{immediate:!0,deep:!0}),r.route}function On(e,t,r){return c.defineComponent({name:"PropsWrapper",expose:[],setup(){const n=c.getCurrentInstance(),o=cr(),a=Ke();return()=>{const s=o.getProps(e.id,t,a);return s instanceof Error?"":Wt(s)?n!=null&&n.suspense?c.h(Zn,{component:r,props:s}):c.h(qn,{component:r,props:s}):c.h(r,s)}}})}const qn=c.defineComponent(e=>{const t=c.ref();return c.watch(()=>e.props,async r=>{t.value=await r},{immediate:!0,deep:!0}),()=>t.value instanceof Error?"":t.value?c.h(e.component,t.value):""},{props:["component","props"]}),Zn=c.defineComponent(async e=>{const t=c.ref();return t.value=await e.props,c.watch(()=>t.value,async r=>{t.value=await r},{deep:!0}),()=>t.value instanceof Error?"":t.value?c.h(e.component,t.value):""},{props:["component","props"]}),Gt=Symbol();function Ye(){return c.inject(Gt,0)}function Dn(){const e=c.inject(Qt);if(!e)throw new z;return e}const Xe=c.defineComponent({__name:"routerView",props:{name:{default:"default"}},setup(e){const t=Ke(),r=Or(),n=Ye(),{getRouteComponents:o}=Dn();c.provide(Gt,n+1);const a=c.computed(()=>{if(r.value)return r.value.component;const s=t.matches.at(n);return s?o(s)[e.name]:null});return(s,f)=>a.value?c.renderSlot(s.$slots,"default",c.normalizeProps(c.mergeProps({key:0},{route:c.unref(t),component:a.value,rejection:c.unref(r)})),()=>[(c.openBlock(),c.createBlock(c.resolveDynamicComponent(a.value)))]):c.createCommentVNode("",!0)}}),Qt=Symbol();function In(){const e=new Map;return{getRouteComponents:r=>{const n=e.get(r.id);if(n)return n;const o=Tn(r);return e.set(r.id,o),o}}}function Tn(e){return pt(e)?Kt(e,e.components):lt(e)?Kt(e,{default:e.component}):{default:Xe}}function Kt(e,t){return Object.fromEntries(Object.entries(t).map(([r,n])=>[r,On(e,r,n)]))}function Mn(e,t,r=[]){const n=Hn(e,r,t==null?void 0:t.base),o=Yr();o.addGlobalRouteHooks(_n(t,r));const a=Ze(),s=to(),f=In(),l=sn(),u=Fr({mode:t==null?void 0:t.historyMode,listener:({location:v})=>{const N=ne(v);S(N,{state:v.state,replace:!0})}});function y(v,N={}){return Nn(n,v,N.state)}async function S(v,N={}){const Q=a();if(u.stopListening(),L(v)){u.update(v,N);return}const I=y(v,N)??U("NotFound"),q=yr(Q),X=await o.runBeforeRouteHooks({to:I,from:q});switch(X.status){case"ABORT":return;case"PUSH":u.update(v,N),await g(...X.to);return;case"REJECT":u.update(v,N),i(X.type);break;case"SUCCESS":u.update(v,N),i(null);break;default:throw new Error(`Switch is not exhaustive for before hook response status: ${JSON.stringify(X)}`)}const rt=Q;s.setProps(I).then(T=>{if(rt===Q)switch(T.status){case"SUCCESS":break;case"PUSH":g(...T.to);break;case"REJECT":i(T.type);break;default:const nt=T;throw new Error(`Switch is not exhaustive for prop store response status: ${JSON.stringify(nt)}`)}}),B(I);const M=await o.runAfterRouteHooks({to:I,from:q});switch(M.status){case"PUSH":await g(...M.to);break;case"REJECT":i(M.type);break;case"SUCCESS":break;default:const T=M;throw new Error(`Switch is not exhaustive for after hook response status: ${JSON.stringify(T)}`)}u.startListening()}const x=(v,N={},Q={})=>{const I=n.find(q=>q.name===v);if(!I)throw new un(String(v));return An(I,N,Q)},g=(v,N,Q)=>{if(Z(v)){const M={...N},T=Jt(v,{searchParams:M.query,hash:M.hash});return S(T,M)}if(typeof v=="string"){const{replace:M,...T}={...Q},nt={...N},ot=x(v,nt,T),po=$t({...ot.matched.state},{...ot.state,...T.state});return S(ot.href,{replace:M,state:po})}const{replace:I,...q}={...N},X=$t({...v.matched.state},{...v.state,...q.state}),rt=Jt(v.href,{searchParams:q.query,hash:q.hash});return S(rt,{replace:I,state:X})},d=(v,N,Q)=>{if(Z(v)){const q={...N,replace:!0};return g(v,q)}if(typeof v=="string"){const q={...Q,replace:!0},X={...N};return g(v,X,q)}const I={...N,replace:!0};return g(v,I)},R=v=>{i(v)},{setRejection:i,rejection:p,getRejectionRoute:U}=tn({...r.reduce((v,N)=>({...v,...N.rejections}),{}),...t==null?void 0:t.rejections}),w=U("NotFound"),{currentRoute:E,routerRoute:A,updateRoute:B}=Dr(w,g),m=nn(t==null?void 0:t.initialUrl),h=u.location.state,{host:P}=O(m),L=Mr(P);let C=!1;const{promise:V,resolve:$}=Promise.withResolvers();async function _(){if(C)return V;C=!0,await S(m,{replace:!0,state:h}),u.startListening(),$()}function D(){u.stopListening()}function yr(v){return en(v)?null:{...E}}function ho(v){v.component("RouterView",Xe),v.component("RouterLink",lr),v.provide(kt,p),v.provide(Nt,o),v.provide(sr,s),v.provide(Qt,f),v.provide(Ht,l),v.provide(it,gr),_()}const gr={route:A,resolve:x,find:y,push:g,replace:d,reject:R,refresh:u.refresh,forward:u.forward,back:u.back,go:u.go,install:ho,isExternal:L,onBeforeRouteEnter:o.onBeforeRouteEnter,onBeforeRouteUpdate:o.onBeforeRouteUpdate,onBeforeRouteLeave:o.onBeforeRouteLeave,onAfterRouteEnter:o.onAfterRouteEnter,onAfterRouteUpdate:o.onAfterRouteUpdate,onAfterRouteLeave:o.onAfterRouteLeave,prefetch:t==null?void 0:t.prefetch,start:_,stop:D};return gr}function ze(e,t){return{value:e,params:Ge(e,t)}}function Fn(e){return{routes:e.routes??[],rejections:e.rejections??{},...e}}function Yt(...e){return{get:(t,{invalid:r})=>{for(const n of e){const o=jr(t,n);if(o!==void 0)return o}throw r(`Value ${t} does not satisfy any of the possible values`)},set:(t,{invalid:r})=>{for(const n of e){const o=$r(t,n);if(o!==void 0)return o}throw r(`Value ${t} does not satisfy any of the possible values`)}}}function Jn(...e){const t=Yt(...e);return{get:(r,n)=>r.split(",").map(o=>t.get(o,n)),set:(r,n)=>{if(!Array.isArray(r))throw n.invalid("Expected an array");return r.map(o=>t.set(o,n)).join(",")}}}function Wn(...e){return{get:t=>{const r=t.split(",");return e.map((n,o)=>ee(r.at(o),n))},set:(t,{invalid:r})=>{if(!Array.isArray(t))throw r("Expected a tuple");if(t.length!==e.length)throw r(`Expected tuple with ${e.length} values but received ${t.length} values`);return e.map((n,o)=>te(t.at(o),n)).join(",")}}}function Xt(e,t){return{value:e,params:Ge(e,t)}}function Gn(e){return de(e)&&typeof e.hash=="string"}function zt(e){return e===void 0?Pe():Gn(e)?e:Pe(e)}function er(e){return e===void 0?"":e}function Qn(e){return de(e)&&typeof e.value=="string"}function tr(e){return e===void 0?Ce("",{}):Qn(e)?e:Ce(e,{})}function Kn(e){return de(e)&&typeof e.value=="string"}function rr(e){return e===void 0?ze("",{}):Kn(e)?e:ze(e,{})}function ae(e,t){const r=De(),n=er(e.name),o=tr(e.path),a=rr(e.query),s=zt(e.hash),f=e.meta??{},l=kr(e)?e.state:{},u=c.markRaw({id:r,meta:{},state:{},...e,props:t}),y={id:r,matched:u,matches:[u],name:n,path:o,query:a,hash:s,meta:f,state:l,depth:1,host:Xt("",{}),prefetch:e.prefetch},S=ft(e)?mt(e.parent,y):y;return ce(S.path.params,S.query.params),S}const xe={template:"<div>This is component</div>"},et=ae({name:"parentA",path:"/parentA/[paramA]"}),nr=ae({parent:et,name:"parentA.childA",path:"/childA/[?paramB]"}),Yn=ae({parent:et,name:"parentA.childB",path:"/childB/[paramD]",component:xe}),Xn=ae({parent:nr,name:"parentA.childA.grandChildA",path:"/[paramC]",component:xe});ae({name:"parentB",path:"/parentB",component:xe}),ae({name:"parentC",path:"/",component:xe});const zn="lazy",eo={components:!0,props:!1};function Ne(e){return["eager","lazy","intent"].includes(e)}function or({routerPrefetch:e,routePrefetch:t,linkPrefetch:r},n){const o=tt(r,n),a=tt(t,n),s=tt(e,n),f=[o,a,s,eo[n],zn].reduce((l,u)=>Ne(l)?l:l===!0&&Ne(u)?u:l===!0&&!Ne(u)?l:l===void 0?u:l,void 0);return Ne(f)?f:!1}function tt(e,t){return de(e)?e[t]:e}function ar(e){try{const t=e();return Wt(t)?t.catch(r=>r):t}catch(t){return t}}const sr=Symbol();function to(){const e=c.reactive(new Map),{push:t,replace:r,reject:n}=Ct(),o=(g,d,R)=>d.matches.filter(i=>or({...R,routePrefetch:i.prefetch},"props")===g).flatMap(i=>S(i)).reduce((i,{id:p,name:U,props:w})=>{if(!w)return i;const E=y(p,U,d),A=ar(()=>w(d,{push:t,replace:r,reject:n,parent:l(d,!0)}));return i[E]=A,i},{}),a=g=>{Object.entries(g).forEach(([d,R])=>{e.set(d,R)})},s=async g=>{const d=g.matches.flatMap(S),R=[],i=[];for(const{id:p,name:U,props:w}of d){if(!w)continue;const E=y(p,U,g);if(R.push(E),!e.has(E)){const A=ar(()=>w(g,{push:t,replace:r,reject:n,parent:l(g)}));e.set(E,A)}i.push((async()=>{const A=await e.get(E);if(A instanceof Error)throw A})())}x(R);try{return await Promise.all(i),{status:"SUCCESS"}}catch(p){if(p instanceof he||p instanceof Ue)return p.response;throw p}},f=(g,d,R)=>{const i=y(g,d,R);return e.get(i)};function l(g,d=!1){const R=g.matches.at(-2);if(R)return ht(R)?{name:R.name??"",get props(){return u(R,"default",g,d)}}:dt(R)?{name:R.name??"",props:new Proxy({},{get(i,p){return typeof p!="string"?Reflect.get(i,p):u(R,p,g,d)}})}:{name:R.name??"",props:void 0}}function u(g,d,R,i=!1){const p=f(g.id,d,R);if(i&&!p){const U=g.name??"unknown",w=R.name||"unknown";console.warn(`
|
|
2
|
+
Unable to access parent props "${d}" from route "${U}" while prefetching props for route "${w}".
|
|
3
|
+
This may occur if the parent route's props were not also prefetched.
|
|
4
|
+
`)}return p}function y(g,d,R){return[g,d,R.id,JSON.stringify(R.params)].join("-")}function S(g){return ht(g)?[{id:g.id,name:"default",props:g.props}]:dt(g)?Object.entries(g.props).map(([d,R])=>({id:g.id,name:d,props:R})):[]}function x(g){for(const d of e.keys())g.includes(d)||e.delete(d)}return{getPrefetchProps:o,setPrefetchProps:a,getProps:f,setProps:s}}function cr(){const e=c.inject(sr);if(!e)throw new z;return e}const ro=c.defineAsyncComponent(()=>new Promise(e=>{e({default:{template:"foo"}})}));function ir(e){return e.name===ro.name&&"__asyncLoader"in e}function ur(e,t,r){c.watch(e,(n,o)=>{n&&n.addEventListener(t,r),o&&o.removeEventListener(t,r)},{immediate:!0}),c.onUnmounted(()=>{e.value&&e.value.removeEventListener(t,r)})}function no(e){const t=new Map,r=c.ref(),{getPrefetchProps:n,setPrefetchProps:o}=cr(),{isElementVisible:a}=cn(r),s=()=>{const u=Array.from(t.values()).reduce((y,S)=>(Object.assign(y,S),y),{});o(u)};c.watch(()=>c.toValue(e),({route:u,...y})=>{t.clear(),u&&l("eager",u,y)},{immediate:!0}),c.watch(a,u=>{const{route:y,...S}=c.toValue(e);!y||!u||l("lazy",y,S)},{immediate:!0}),ur(r,"focusin",f),ur(r,"mouseover",f);function f(){const{route:u,...y}=c.toValue(e);u&&l("intent",u,y)}function l(u,y,S){oo(u,y,S),t.has(u)||t.set(u,n(u,y,S))}return{element:r,commit:s}}function oo(e,t,r){t.matches.forEach(n=>{or({...r,routePrefetch:n.prefetch},"components")===e&&(lt(n)&&ir(n.component)&&n.component.__asyncLoader(),pt(n)&&Object.values(n.components).forEach(a=>{ir(a)&&a.__asyncLoader()}))})}function fr(e,t={},r={}){const n=Ee(),o=c.computed(()=>{const d=c.toValue(e);return typeof d!="string"?d:Z(d)?n.find(d,c.toValue(r)):n.resolve(d,c.toValue(t),c.toValue(r))}),a=c.computed(()=>{if(o.value)return o.value.href;const d=c.toValue(e);if(Z(d))return d;console.error(new Error("Failed to resolve route in RouterLink."))}),s=c.computed(()=>Qe(n.route)&&n.route.matches.some(d=>{var R;return d.id===((R=o.value)==null?void 0:R.id)})),f=c.computed(()=>{var d;return n.route.id===((d=o.value)==null?void 0:d.id)}),l=c.computed(()=>!!a.value&&n.isExternal(a.value)),u=c.computed(()=>{const d=c.toValue(e);return typeof d!="string"||Z(d)?c.toValue(t):c.toValue(r)}),{element:y,commit:S}=no(()=>({route:o.value,routerPrefetch:n.prefetch,linkPrefetch:u.value.prefetch})),x=d=>{S();const R={replace:(d==null?void 0:d.replace)??u.value.replace,query:Fe(u.value.query,d==null?void 0:d.query),hash:(d==null?void 0:d.hash)??u.value.hash,state:{...u.value.state,...d==null?void 0:d.state}},i=c.toValue(e);return Z(i)||typeof i=="object"?n.push(i,R):n.push(i,c.toValue(t),R)};return{element:y,route:o,href:a,isMatch:s,isExactMatch:f,isExternal:l,push:x,replace:d=>x({...d,replace:!0})}}const ao=["href"],lr=c.defineComponent({__name:"routerLink",props:{to:{},prefetch:{type:[Boolean,String,Object],default:void 0},query:{},hash:{},replace:{type:Boolean},state:{}},setup(e){const t=e,r=Ee(),n=c.computed(()=>x(t.to)),o=c.computed(()=>g(t.to)),a=c.computed(()=>{const{to:R,...i}=t;return i}),{element:s,isMatch:f,isExactMatch:l,isExternal:u,push:y}=fr(()=>typeof t.to=="function"?t.to(r.resolve):t.to,a),S=c.computed(()=>({"router-link--match":f.value,"router-link--exact-match":l.value}));function x(R){if(typeof R=="function"){const i=R(r.resolve);return x(i)}return Z(R)?r.find(R):R}function g(R){if(typeof R=="function"){const i=R(r.resolve);return g(i)}return Z(R)?R:R==null?void 0:R.href}function d(R){R.preventDefault(),y()}return(R,i)=>(c.openBlock(),c.createElementBlock("a",{ref_key:"element",ref:s,href:o.value,class:c.normalizeClass(["router-link",S.value]),onClick:d},[c.renderSlot(R.$slots,"default",c.normalizeProps(c.guardReactiveProps({route:n.value,isMatch:c.unref(f),isExactMatch:c.unref(l),isExternal:c.unref(u)})))],10,ao))}});function hr(){const e=c.inject(Nt);if(!e)throw new z;return e}function pr(e){return t=>{const r=Ye(),o=hr().addComponentBeforeRouteHook({lifecycle:e,hook:t,depth:r-1});return c.onUnmounted(o),o}}function dr(e){return t=>{const r=Ye(),o=hr().addComponentAfterRouteHook({lifecycle:e,hook:t,depth:r-1});return c.onUnmounted(o),o}}const so=pr("onBeforeRouteLeave"),co=pr("onBeforeRouteUpdate"),io=dr("onAfterRouteLeave"),uo=dr("onAfterRouteUpdate");function fo(e){return de(e)&&typeof e.value=="string"}function mr(e){return fo(e)?e:Xt(e,{})}function lo(e){const t=De(),r=er(e.name),n=tr(e.path),o=rr(e.query),a=zt(e.hash),s=e.meta??{},f=Ar(e)?mr(e.host):mr(""),l=c.markRaw({id:t,meta:{},state:{},...e}),u={id:t,matched:l,matches:[l],name:r,host:f,path:n,query:o,hash:a,meta:s,depth:1,state:{}},y=ft(e)?mt(e.parent,u):u;return ce(y.path.params,y.query.params,y.host.params),y}k.DuplicateParamsError=at,k.MetaPropertyConflict=st,k.RouterLink=lr,k.RouterNotInstalledError=z,k.RouterView=Xe,k.UseRouteInvalidError=ct,k.arrayOf=Jn,k.asUrl=Ve,k.createExternalRoute=lo,k.createParam=Pt,k.createRoute=ae,k.createRouter=Mn,k.createRouterPlugin=Fn,k.isRoute=Qe,k.isUrl=Z,k.onAfterRouteLeave=io,k.onAfterRouteUpdate=uo,k.onBeforeRouteLeave=so,k.onBeforeRouteUpdate=co,k.path=Ce,k.query=ze,k.tupleOf=Wn,k.unionOf=Yt,k.useLink=fr,k.useRoute=Ke,k.useRouter=Ee,k.withDefault=Cr,Object.defineProperty(k,Symbol.toStringTag,{value:"Module"})});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kitbag/router",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.17.2",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"url": "https://github.com/kitbagjs/router/issues"
|
|
7
7
|
},
|
|
@@ -43,21 +43,27 @@
|
|
|
43
43
|
"@kitbag/eslint-config": "1.0.2",
|
|
44
44
|
"@vitejs/plugin-vue": "^5.2.1",
|
|
45
45
|
"@vue/test-utils": "^2.4.6",
|
|
46
|
-
"eslint": "^9.
|
|
46
|
+
"eslint": "^9.19.0",
|
|
47
47
|
"globals": "^15.14.0",
|
|
48
|
-
"happy-dom": "^16.
|
|
48
|
+
"happy-dom": "^16.7.3",
|
|
49
49
|
"typedoc": "^0.27.6",
|
|
50
50
|
"typedoc-plugin-markdown": "^4.4.1",
|
|
51
51
|
"typedoc-vitepress-theme": "^1.1.2",
|
|
52
52
|
"typescript": "^5.7.3",
|
|
53
|
-
"vite": "^6.0.
|
|
53
|
+
"vite": "^6.0.11",
|
|
54
54
|
"vite-plugin-dts": "^4.5.0",
|
|
55
|
-
"vitepress": "^1.
|
|
55
|
+
"vitepress": "^1.6.3",
|
|
56
56
|
"vitest": "^2.1.6",
|
|
57
57
|
"vue-tsc": "^2.2.0"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
|
-
"vue": "^3.5.0"
|
|
60
|
+
"vue": "^3.5.0",
|
|
61
|
+
"zod": "^3.24.1"
|
|
62
|
+
},
|
|
63
|
+
"peerDependenciesMeta": {
|
|
64
|
+
"zod": {
|
|
65
|
+
"optional": true
|
|
66
|
+
}
|
|
61
67
|
},
|
|
62
68
|
"dependencies": {
|
|
63
69
|
"history": "^5.3.0"
|