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