@kitbag/router 0.1.1 → 0.3.0
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/README.md +16 -5
- package/dist/kitbag-router.d.ts +182 -46
- package/dist/kitbag-router.js +956 -835
- package/dist/kitbag-router.umd.cjs +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(g,f){typeof exports=="object"&&typeof module<"u"?f(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],f):(g=typeof globalThis<"u"?globalThis:g||self,f(g["@kitbag/router"]={},g.Vue))})(this,function(g,f){"use strict";var fn=Object.defineProperty;var ln=(g,f,$)=>f in g?fn(g,f,{enumerable:!0,configurable:!0,writable:!0,value:$}):g[f]=$;var N=(g,f,$)=>(ln(g,typeof f!="symbol"?f+"":f,$),$);class $ 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 Y extends Error{constructor(){super("Router not installed")}}class Pe extends Error{constructor(t,n){super(`useRoute called with incorrect route. Given ${t}, expected ${n}`)}}const ie=Symbol();function Se(){const e=f.inject(ie);if(!e)throw new Y;return e}const ue=Symbol();function X(){const e=f.inject(ue);if(!e)throw new Y;return e}function Ae(e,t){return[e,t].filter(n=>!!n).join(".")}function at(e){const t=X();function n(){if(!e)return;const r=t.route.matches.map(c=>c.name);if(!ct(r).includes(e))throw new Pe(e,t.route.key)}return f.watch(t.route,n,{immediate:!0,deep:!0}),t.route}function ct(e){return e.reduce((t,n)=>{const r=t.pop(),o=n?[Ae(r,n)]:[];return r?[...t,r,...o]:o},[])}const xe=Symbol();function fe(){return f.inject(xe,0)}class Z{constructor(){N(this,"onBeforeRouteEnter",new Set);N(this,"onBeforeRouteUpdate",new Set);N(this,"onBeforeRouteLeave",new Set);N(this,"onAfterRouteEnter",new Set);N(this,"onAfterRouteUpdate",new Set);N(this,"onAfterRouteLeave",new Set)}}class Be extends Error{}class Q extends Error{constructor(n){super("Error occurred during a router push operation.");N(this,"to");this.to=n}}class le extends Error{constructor(n){super(`Routing action rejected: ${n}`);N(this,"type");this.type=n}}function I(e){return Array.isArray(e)?e:[e]}function st(e,t){const n=new Z;return e.matches.forEach((r,o)=>{r.onBeforeRouteEnter&&he(e,t,o)&&I(r.onBeforeRouteEnter).forEach(a=>n.onBeforeRouteEnter.add(a)),r.onBeforeRouteUpdate&&de(e,t,o)&&I(r.onBeforeRouteUpdate).forEach(a=>n.onBeforeRouteUpdate.add(a))}),t.matches.forEach((r,o)=>{r.onBeforeRouteLeave&&pe(e,t,o)&&I(r.onBeforeRouteLeave).forEach(a=>n.onBeforeRouteLeave.add(a))}),n}function it(e,t){const n=new Z;return e.matches.forEach((r,o)=>{r.onAfterRouteEnter&&he(e,t,o)&&I(r.onAfterRouteEnter).forEach(a=>n.onAfterRouteEnter.add(a)),r.onAfterRouteUpdate&&de(e,t,o)&&I(r.onAfterRouteUpdate).forEach(a=>n.onAfterRouteUpdate.add(a))}),t.matches.forEach((r,o)=>{r.onAfterRouteLeave&&pe(e,t,o)&&I(r.onAfterRouteLeave).forEach(a=>n.onAfterRouteLeave.add(a))}),n}function J(e){return typeof e!="string"?!1:/^(https?:\/\/|\/).*/g.test(e)}function ut(){const e=c=>{throw new le(c)},t=(...c)=>{throw new Q(c)},n=(c,s,u)=>{if(J(c)){const w=s??{};throw new Q([c,{...w,replace:!0}])}const m=s,R=u??{};throw new Q([c,m,{...R,replace:!0}])},r=()=>{throw new Be};async function o({to:c,from:s,hooks:u}){const{global:m,component:R}=u,w=st(c,s),L=[...m.onBeforeRouteEnter,...w.onBeforeRouteEnter,...m.onBeforeRouteUpdate,...w.onBeforeRouteUpdate,...R.onBeforeRouteUpdate,...m.onBeforeRouteLeave,...w.onBeforeRouteLeave,...R.onBeforeRouteLeave];try{const p=L.map(A=>A(c,{from:s,reject:e,push:t,replace:n,abort:r}));await Promise.all(p)}catch(p){if(p instanceof Q)return{status:"PUSH",to:p.to};if(p instanceof le)return{status:"REJECT",type:p.type};if(p instanceof Be)return{status:"ABORT"};throw p}return{status:"SUCCESS"}}async function a({to:c,from:s,hooks:u}){const{global:m,component:R}=u,w=it(c,s),L=[...R.onAfterRouteLeave,...w.onAfterRouteLeave,...m.onAfterRouteLeave,...R.onAfterRouteUpdate,...w.onAfterRouteUpdate,...m.onAfterRouteUpdate,...R.onAfterRouteEnter,...w.onAfterRouteEnter,...m.onAfterRouteEnter];try{const p=L.map(A=>A(c,{from:s,reject:e,push:t,replace:n}));await Promise.all(p)}catch(p){if(p instanceof Q)return{status:"PUSH",to:p.to};if(p instanceof le)return{status:"REJECT",type:p.type};throw p}return{status:"SUCCESS"}}return{runBeforeRouteHooks:o,runAfterRouteHooks:a}}const he=(e,t,n)=>{const r=e.matches,o=(t==null?void 0:t.matches)??[];return r.length<n||r[n]!==o[n]},pe=(e,t,n)=>{const r=e.matches,o=(t==null?void 0:t.matches)??[];return r.length<n||r[n]!==o[n]},de=(e,t,n)=>e.matches[n]===(t==null?void 0:t.matches[n]);function Le(e){switch(e){case"onBeforeRouteEnter":case"onAfterRouteEnter":return he;case"onBeforeRouteUpdate":case"onAfterRouteUpdate":return de;case"onBeforeRouteLeave":case"onAfterRouteLeave":return pe;default:throw new Error(`Switch is not exhaustive for lifecycle: ${e}`)}}class ft{constructor(){N(this,"global",new Z);N(this,"component",new Z)}addBeforeRouteHook({lifecycle:t,timing:n,depth:r,hook:o}){const a=Le(t),c=this[n][t],s=(u,m)=>{if(a(u,m.from,r))return o(u,m)};return c.add(s),()=>c.delete(s)}addAfterRouteHook({lifecycle:t,timing:n,depth:r,hook:o}){const a=Le(t),c=this[n][t],s=(u,m)=>{if(a(u,m.from,r))return o(u,m)};return c.add(s),()=>c.delete(s)}}const Ue=Symbol();function lt(){const e=new ft;return{onBeforeRouteEnter:s=>e.addBeforeRouteHook({lifecycle:"onBeforeRouteEnter",hook:s,timing:"global",depth:0}),onBeforeRouteUpdate:s=>e.addBeforeRouteHook({lifecycle:"onBeforeRouteUpdate",hook:s,timing:"global",depth:0}),onBeforeRouteLeave:s=>e.addBeforeRouteHook({lifecycle:"onBeforeRouteLeave",hook:s,timing:"global",depth:0}),onAfterRouteEnter:s=>e.addAfterRouteHook({lifecycle:"onAfterRouteEnter",hook:s,timing:"global",depth:0}),onAfterRouteUpdate:s=>e.addAfterRouteHook({lifecycle:"onAfterRouteUpdate",hook:s,timing:"global",depth:0}),onAfterRouteLeave:s=>e.addAfterRouteHook({lifecycle:"onAfterRouteLeave",hook:s,timing:"global",depth:0}),hooks:e}}function je(){const e=f.inject(Ue);if(!e)throw new Y;return e}function He(e){return t=>{const n=fe(),o=je().addBeforeRouteHook({lifecycle:e,hook:t,depth:n,timing:"component"});return f.onUnmounted(o),o}}function me(e){return t=>{const n=fe(),o=je().addAfterRouteHook({lifecycle:e,hook:t,depth:n,timing:"component"});return f.onUnmounted(o),o}}const ht=He("onBeforeRouteUpdate"),pt=He("onBeforeRouteLeave"),dt=me("onAfterRouteEnter"),mt=me("onAfterRouteUpdate"),Rt=me("onAfterRouteLeave"),yt=["href"],$e=f.defineComponent({__name:"routerLink",props:{to:{type:[String,Function]},query:{},replace:{type:Boolean}},setup(e){const t=e,n=X(),r=f.computed(()=>J(t.to)?t.to:t.to(n.resolve)),o=f.computed(()=>{const{to:w,...L}=t;return L}),a=f.computed(()=>{var w;return(w=n.find(r.value,o.value))==null?void 0:w.matched}),c=f.computed(()=>!!a.value&&n.route.matches.includes(f.readonly(a.value))),s=f.computed(()=>!!a.value&&n.route.matched===a.value),u=f.computed(()=>({"router-link--match":c.value,"router-link--exact-match":s.value})),m=f.computed(()=>{const{host:w}=new URL(r.value,window.location.origin);return w!==window.location.host});function R(w){w.preventDefault(),n.push(r.value,o.value)}return(w,L)=>(f.openBlock(),f.createElementBlock("a",{href:r.value,class:f.normalizeClass(["router-link",u.value]),onClick:R},[f.renderSlot(w.$slots,"default",f.normalizeProps(f.guardReactiveProps({resolved:r.value,match:c.value,exactMatch:s.value,isExternal:m.value})))],10,yt))}}),Re=f.defineComponent({__name:"routerView",setup(e){const t=X(),n=Se(),r=fe();f.provide(xe,r+1);const o=f.computed(()=>{var c;const a=(c=t.route.matches[r])==null?void 0:c.component;return a?typeof a=="function"?f.defineAsyncComponent(a):a:null});return(a,c)=>f.unref(n)?(f.openBlock(),f.createBlock(f.resolveDynamicComponent(f.unref(n).component),{key:0})):f.renderSlot(a.$slots,"default",{key:1,route:f.unref(t).route,component:o.value},()=>[(f.openBlock(),f.createBlock(f.resolveDynamicComponent(o.value)))])}});function q(){return q=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},q.apply(this,arguments)}var U;(function(e){e.Pop="POP",e.Push="PUSH",e.Replace="REPLACE"})(U||(U={}));var W=process.env.NODE_ENV!=="production"?function(e){return Object.freeze(e)}:function(e){return e};function D(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}var ee="beforeunload",gt="hashchange",Ne="popstate";function Ce(e){e===void 0&&(e={});var t=e,n=t.window,r=n===void 0?document.defaultView:n,o=r.history;function a(){var h=r.location,i=h.pathname,l=h.search,E=h.hash,b=o.state||{};return[b.idx,W({pathname:i,search:l,hash:E,state:b.usr||null,key:b.key||"default"})]}var c=null;function s(){if(c)p.call(c),c=null;else{var h=U.Pop,i=a(),l=i[0],E=i[1];if(p.length)if(l!=null){var b=R-l;b&&(c={action:h,location:E,retry:function(){k(b*-1)}},k(b))}else process.env.NODE_ENV!=="production"&&D(!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 j(h)}}r.addEventListener(Ne,s);var u=U.Pop,m=a(),R=m[0],w=m[1],L=F(),p=F();R==null&&(R=0,o.replaceState(q({},o.state,{idx:R}),""));function A(h){return typeof h=="string"?h:M(h)}function C(h,i){return i===void 0&&(i=null),W(q({pathname:w.pathname,hash:"",search:""},typeof h=="string"?G(h):h,{state:i,key:ne()}))}function V(h,i){return[{usr:h.state,key:h.key,idx:i},A(h)]}function H(h,i,l){return!p.length||(p.call({action:h,location:i,retry:l}),!1)}function j(h){u=h;var i=a();R=i[0],w=i[1],L.call({action:u,location:w})}function d(h,i){var l=U.Push,E=C(h,i);function b(){d(h,i)}if(H(l,E,b)){var x=V(E,R+1),y=x[0],S=x[1];try{o.pushState(y,"",S)}catch{r.location.assign(S)}j(l)}}function v(h,i){var l=U.Replace,E=C(h,i);function b(){v(h,i)}if(H(l,E,b)){var x=V(E,R),y=x[0],S=x[1];o.replaceState(y,"",S),j(l)}}function k(h){o.go(h)}var P={get action(){return u},get location(){return w},createHref:A,push:d,replace:v,go:k,back:function(){k(-1)},forward:function(){k(1)},listen:function(i){return L.push(i)},block:function(i){var l=p.push(i);return p.length===1&&r.addEventListener(ee,te),function(){l(),p.length||r.removeEventListener(ee,te)}}};return P}function wt(e){e===void 0&&(e={});var t=e,n=t.window,r=n===void 0?document.defaultView:n,o=r.history;function a(){var i=G(r.location.hash.substr(1)),l=i.pathname,E=l===void 0?"/":l,b=i.search,x=b===void 0?"":b,y=i.hash,S=y===void 0?"":y,B=o.state||{};return[B.idx,W({pathname:E,search:x,hash:S,state:B.usr||null,key:B.key||"default"})]}var c=null;function s(){if(c)p.call(c),c=null;else{var i=U.Pop,l=a(),E=l[0],b=l[1];if(p.length)if(E!=null){var x=R-E;x&&(c={action:i,location:b,retry:function(){P(x*-1)}},P(x))}else process.env.NODE_ENV!=="production"&&D(!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 d(i)}}r.addEventListener(Ne,s),r.addEventListener(gt,function(){var i=a(),l=i[1];M(l)!==M(w)&&s()});var u=U.Pop,m=a(),R=m[0],w=m[1],L=F(),p=F();R==null&&(R=0,o.replaceState(q({},o.state,{idx:R}),""));function A(){var i=document.querySelector("base"),l="";if(i&&i.getAttribute("href")){var E=r.location.href,b=E.indexOf("#");l=b===-1?E:E.slice(0,b)}return l}function C(i){return A()+"#"+(typeof i=="string"?i:M(i))}function V(i,l){return l===void 0&&(l=null),W(q({pathname:w.pathname,hash:"",search:""},typeof i=="string"?G(i):i,{state:l,key:ne()}))}function H(i,l){return[{usr:i.state,key:i.key,idx:l},C(i)]}function j(i,l,E){return!p.length||(p.call({action:i,location:l,retry:E}),!1)}function d(i){u=i;var l=a();R=l[0],w=l[1],L.call({action:u,location:w})}function v(i,l){var E=U.Push,b=V(i,l);function x(){v(i,l)}if(process.env.NODE_ENV!=="production"&&D(b.pathname.charAt(0)==="/","Relative pathnames are not supported in hash history.push("+JSON.stringify(i)+")"),j(E,b,x)){var y=H(b,R+1),S=y[0],B=y[1];try{o.pushState(S,"",B)}catch{r.location.assign(B)}d(E)}}function k(i,l){var E=U.Replace,b=V(i,l);function x(){k(i,l)}if(process.env.NODE_ENV!=="production"&&D(b.pathname.charAt(0)==="/","Relative pathnames are not supported in hash history.replace("+JSON.stringify(i)+")"),j(E,b,x)){var y=H(b,R),S=y[0],B=y[1];o.replaceState(S,"",B),d(E)}}function P(i){o.go(i)}var h={get action(){return u},get location(){return w},createHref:C,push:v,replace:k,go:P,back:function(){P(-1)},forward:function(){P(1)},listen:function(l){return L.push(l)},block:function(l){var E=p.push(l);return p.length===1&&r.addEventListener(ee,te),function(){E(),p.length||r.removeEventListener(ee,te)}}};return h}function Ve(e){e===void 0&&(e={});var t=e,n=t.initialEntries,r=n===void 0?["/"]:n,o=t.initialIndex,a=r.map(function(d){var v=W(q({pathname:"/",search:"",hash:"",state:null,key:ne()},typeof d=="string"?G(d):d));return process.env.NODE_ENV!=="production"&&D(v.pathname.charAt(0)==="/","Relative pathnames are not supported in createMemoryHistory({ initialEntries }) (invalid entry: "+JSON.stringify(d)+")"),v}),c=_e(o??a.length-1,0,a.length-1),s=U.Pop,u=a[c],m=F(),R=F();function w(d){return typeof d=="string"?d:M(d)}function L(d,v){return v===void 0&&(v=null),W(q({pathname:u.pathname,search:"",hash:""},typeof d=="string"?G(d):d,{state:v,key:ne()}))}function p(d,v,k){return!R.length||(R.call({action:d,location:v,retry:k}),!1)}function A(d,v){s=d,u=v,m.call({action:s,location:u})}function C(d,v){var k=U.Push,P=L(d,v);function h(){C(d,v)}process.env.NODE_ENV!=="production"&&D(u.pathname.charAt(0)==="/","Relative pathnames are not supported in memory history.push("+JSON.stringify(d)+")"),p(k,P,h)&&(c+=1,a.splice(c,a.length,P),A(k,P))}function V(d,v){var k=U.Replace,P=L(d,v);function h(){V(d,v)}process.env.NODE_ENV!=="production"&&D(u.pathname.charAt(0)==="/","Relative pathnames are not supported in memory history.replace("+JSON.stringify(d)+")"),p(k,P,h)&&(a[c]=P,A(k,P))}function H(d){var v=_e(c+d,0,a.length-1),k=U.Pop,P=a[v];function h(){H(d)}p(k,P,h)&&(c=v,A(k,P))}var j={get index(){return c},get action(){return s},get location(){return u},createHref:w,push:C,replace:V,go:H,back:function(){H(-1)},forward:function(){H(1)},listen:function(v){return m.push(v)},block:function(v){return R.push(v)}};return j}function _e(e,t,n){return Math.min(Math.max(e,t),n)}function te(e){e.preventDefault(),e.returnValue=""}function F(){var e=[];return{get length(){return e.length},push:function(n){return e.push(n),function(){e=e.filter(function(r){return r!==n})}},call:function(n){e.forEach(function(r){return r&&r(n)})}}}function ne(){return Math.random().toString(36).substr(2,8)}function M(e){var t=e.pathname,n=t===void 0?"/":t,r=e.search,o=r===void 0?"":r,a=e.hash,c=a===void 0?"":a;return o&&o!=="?"&&(n+=o.charAt(0)==="?"?o:"?"+o),c&&c!=="#"&&(n+=c.charAt(0)==="#"?c:"#"+c),n}function G(e){var t={};if(e){var n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));var r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function vt(e,t){function n(r,o,a){if(typeof r=="object"){const s={...e.params,...r};return t(e.key,s,o)}const c={...e.params,[r]:o};return t(e.key,c,a)}return new Proxy(e,{get:(r,o,a)=>o==="update"?n:o==="params"?new Proxy(e.params,{set(c,s,u){return n(s,u),!0}}):Reflect.get(r,o,a)})}function Et(e,t){const n=f.reactive({...e}),r=c=>{Object.assign(n,{...c})},o=f.readonly(n),a=vt(o,t);return{currentRoute:o,routerRoute:a,updateRoute:r}}class re extends Error{}function bt(e){return e!==String&&e!==Boolean&&e!==Number}function qe(e){return typeof e=="function"&&bt(e)}function ye(e){return typeof e=="object"&&"get"in e&&typeof e.get=="function"&&"set"in e&&typeof e.set=="function"}function oe(e){return typeof e=="string"&&e.length>0}function kt(e,t){return e[t]??String}const Oe=Symbol();function Te(e){return Oe in e}function Pt(e){return{[Oe]:!0,get:t=>{if(oe(t))return ge(t,e)},set:t=>oe(t)?we(t,e):""}}const _={invalid:e=>{throw new re(e)}},St={get:e=>e,set:(e,{invalid:t})=>{if(typeof e!="string")throw t();return e}},De={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()}},Me={get:(e,{invalid:t})=>{const n=Number(e);if(isNaN(n))throw t();return n},set:(e,{invalid:t})=>{if(typeof e!="number")throw t();return e.toString()}};function ge(e,t){if(e===void 0){if(Te(t))return t.get(e,_);throw new re}if(t===String)return St.get(e,_);if(t===Boolean)return De.get(e,_);if(t===Number)return Me.get(e,_);if(qe(t))return t(e,_);if(ye(t))return t.get(e,_);if(t instanceof RegExp){if(t.test(e))return e;throw new re}return e}function we(e,t){if(t===Boolean)return De.set(e,_);if(t===Number)return Me.set(e,_);if(ye(t))return t.set(e,_);try{return e.toString()}catch{throw new re}}function At(e){const t=ve(e.path.toString());return new RegExp(`^${t}$`,"i")}function xt(e){const t=new URLSearchParams(e.query.toString());return Array.from(t.entries()).filter(([,n])=>!Ie(n)).map(([n,r])=>new RegExp(`${n}=${ve(r)}(&|$)`,"i"))}function ve(e){return[Bt,Lt].reduce((t,n)=>n(t),e)}const Ee=":\\?([\\w]+)(?=\\W|$)",Ke=":([\\w]+)(?=\\W|$)";function Bt(e){return e.replace(new RegExp(Ee,"g"),"[^\\/]*")}function Ie(e){return new RegExp(Ee,"g").test(e)}function Lt(e){return e.replace(new RegExp(Ke,"g"),"[^\\/]+")}function Ut(e){const[t]=ae(e,new RegExp(Ee,"g")),[n]=ae(e,new RegExp(Ke,"g"));return t??n}function ae(e,t){return Array.from(e.matchAll(t)).flatMap(([,...r])=>r.map(o=>oe(o)?o:""))}function We(e,t,n){const r=Fe(t,n),[o]=ae(e,r);return o}function jt(e,t){if(!t)return e;const{name:n,param:r,value:o}=t,a=Fe(e,n);return ae(e,a).reduce((s,u)=>u===void 0?s:s.replace(u,()=>we(o,r)),e)}function Fe(e,t){const n=[Ht,$t,ve].reduce((r,o)=>o(r,t),e);return new RegExp(n,"g")}function Ht(e,t){const n=new RegExp(`(:\\?${t})(?=\\W|$)`,"g");return e.replace(n,"([^\\/]*)")}function $t(e,t){const n=new RegExp(`(:${t})(?=\\W|$)`,"g");return e.replace(n,"([^\\/]+)")}function Qe(e,...t){return t.reduce((n,r)=>{if(!r)return n;const o=new URLSearchParams(r).toString();return Object.keys(o).length===0?n:n.includes("?")?`${n}&${o}`:`${n}?${o}`},e)}function Nt(e,t={}){const{params:n={},query:r}=t,o={...e.path.params,...e.query.params},a=e.path.toString(),c=e.query.toString(),s=Ct(a,o,n),u=Vt(c,o,n);return Qe(s,u,r)}function Ct(e,t,n){return e.length?Object.entries(t).reduce((r,[o,a])=>jt(r,{name:o,param:a,value:n[o]}),e):e}function Vt(e,t,n){if(!e.length)return{};const r=new URLSearchParams(e);return Array.from(r.entries()).reduce((o,[a,c])=>{const s=Ut(c);if(!s)return{...o,[a]:c};const u=we(n[s],t[s]);return Ie(c)&&n[s]===void 0&&u===""?o:{...o,[a]:u}},{})}function Je(e){return(t,n,r)=>{if(J(t))return Qe(t,(n??{}).query);const o=n??{},a=r??{},c=e.find(u=>u.key===t);if(!c)throw`Route not found: "${String(t)}"`;if(c.matched.disabled)throw`Route disabled: "${String(t)}"`;return Nt(c,{params:o,query:a.query})}}function z(e){return!e.startsWith("http")?qt(e):_t(e)}function _t(e){const{protocol:t,host:n,pathname:r,search:o,searchParams:a,hash:c}=new URL(e,e);return{protocol:t,host:n,pathname:r,search:o,searchParams:a,hash:c}}function qt(e){const{pathname:t,search:n,searchParams:r,hash:o}=new URL(e,"https://localhost");return{pathname:t,search:n,searchParams:r,hash:o}}function Ge(e){const t=new URLSearchParams(e);return{get:n=>t.get(n),getAll:n=>t.getAll(n)}}const Ot=(e,t)=>{try{ze(e,t)}catch{return!1}return!0},ze=(e,t)=>{const{pathname:n,search:r}=z(t);return{...Tt(e.path,n),...Dt(e.query,r)}};function Tt(e,t){const n={},r=decodeURIComponent(t);for(const[o,a]of Object.entries(e.params)){const c=We(r,e.toString(),o),s=ge(c,a);n[o]=s}return n}function Dt(e,t){const n={},r=new URLSearchParams(t);for(const[o,a]of Object.entries(e.params)){const c=r.get(o)??void 0,s=ge(c,a);n[o]=s}return n}const Mt=(e,t)=>{const{pathname:n}=z(t);return At(e).test(n)},Kt=(e,t)=>{const{search:n}=z(t);return xt(e).every(o=>o.test(n))};function It(e){const{searchParams:t,pathname:n}=z(e),r=-1,o=1;return(a,c)=>{const s=Xe(a,t),u=Ye(a,n),m=Xe(c,t),R=Ye(c,n);return s+u>m+R?r:s+u<m+R?o:a.depth>c.depth?r:a.depth<c.depth?o:0}}function Ye(e,t){const n=Object.entries(e.path.params).filter(([,o])=>Te(o)).map(([o])=>o),r=n.filter(o=>We(t,e.path.toString(),o)===void 0);return n.length-r.length}function Xe(e,t){const n=new URLSearchParams(e.query.toString()),r=Array.from(n.keys()),o=r.filter(a=>!t.has(a));return r.length-o.length}function Ze(e,t){const n=[Wt,Mt,Kt,Ot],r=It(t),o=e.filter(m=>n.every(R=>R(m,t))).sort(r);if(o.length===0)return;const[a]=o,{search:c}=z(t),s=Ge(c),u=ze(a,t);return f.readonly({matched:a.matched,matches:a.matches,key:a.key,query:s,params:u})}const Wt=e=>"name"in e.matched&&!!e.matched.name;function Ft(e){return(t,n={})=>{const o=Je(e)(t,n);return Ze(e,o)}}function et(){return typeof window<"u"&&typeof window.document<"u"}function Qt({mode:e,listener:t}){const n=Jt(e),r=(u,m)=>{if(m!=null&&m.replace)return n.replace(u);n.push(u)},o=()=>{const u=M(n.location);return n.replace(u)};let a;return{...n,update:r,refresh:o,startListening:()=>{a==null||a(),a=n.listen(t)},stopListening:()=>{a==null||a()}}}function Jt(e="auto"){switch(e){case"auto":return et()?Ce():Ve();case"browser":return Ce();case"memory":return Ve();case"hash":return wt();default:const t=e;throw new Error(`Switch is not exhaustive for mode: ${t}`)}}function Gt(e){return f.defineComponent(()=>()=>f.h("h1",e),{name:e,props:[]})}const tt=Symbol();function zt({rejections:e}){const t=c=>{const s={...e};return f.markRaw(s[c]??Gt(c))},n=c=>{const s=f.markRaw(t(c)),u={name:c,path:"",component:s,meta:{}};return f.readonly({matched:u,matches:[u],key:c,query:Ge(""),params:{},[tt]:!0})},r=c=>c[tt]===!0,o=c=>{if(!c){a.value=null;return}const s=t(c);a.value={type:c,component:s}},a=f.ref(null);return{setRejection:o,rejection:a,getRejectionRoute:n,isRejectionRoute:r}}class Yt extends Error{constructor(){super("initialUrl must be set if window.location is unavailable")}}function Xt(e){if(e)return e;if(et())return window.location.toString();throw new Yt}function Zt(e,t={}){const n=Je(e),r=Qt({mode:t.historyMode,listener:()=>{const y=M(location);p(y)}}),{runBeforeRouteHooks:o,runAfterRouteHooks:a}=ut(),{hooks:c,onBeforeRouteEnter:s,onAfterRouteUpdate:u,onBeforeRouteLeave:m,onAfterRouteEnter:R,onBeforeRouteUpdate:w,onAfterRouteLeave:L}=lt();async function p(y,{replace:S}={}){r.stopListening();const B=Ze(e,y)??v("NotFound"),O={...P},K=await o({to:B,from:O,hooks:c});switch(K.status){case"ABORT":return;case"PUSH":r.update(y,{replace:S}),await A(...K.to);return;case"REJECT":r.update(y,{replace:S}),j(K.type),i(B);break;case"SUCCESS":r.update(y,{replace:S}),j(null),i(B);break;default:throw new Error(`Switch is not exhaustive for before hook response status: ${JSON.stringify(K)}`)}const T=await a({to:B,from:O,hooks:c});switch(T.status){case"PUSH":await A(...T.to);break;case"REJECT":j(T.type);break;case"SUCCESS":break;default:const se=T;throw new Error(`Switch is not exhaustive for after hook response status: ${JSON.stringify(se)}`)}r.startListening()}const A=(y,S,B)=>{if(J(y)){const se={...S},un=n(y,se);return p(un,{replace:se.replace})}const O={...B},T=n(y,S??{},O);return p(T,{replace:O.replace})},C=(y,S,B)=>{if(J(y)){const T={...S,replace:!0};return A(y,T)}const O=S??{},K={...B,replace:!0};return A(y,O,K)},V=y=>j(y),H=Ft(e),{setRejection:j,rejection:d,getRejectionRoute:v}=zt(t),k=v("NotFound"),{currentRoute:P,routerRoute:h,updateRoute:i}=Et(k,A);r.startListening();const l=Xt(t.initialUrl),E=p(l,{replace:!0});function b(y){y.component("RouterView",Re),y.component("RouterLink",$e),y.provide(ue,x),y.provide(ie,d),y.provide(Ue,c)}const x={route:h,resolve:n,push:A,replace:C,reject:V,find:H,refresh:r.refresh,forward:r.forward,back:r.back,go:r.go,install:b,initialized:E,onBeforeRouteEnter:s,onAfterRouteUpdate:u,onBeforeRouteLeave:m,onAfterRouteEnter:R,onBeforeRouteUpdate:w,onAfterRouteLeave:L};return x}function nt(e,t){const n=/:\??([\w]+)(?=\W|$)/g;return Array.from(e.matchAll(n)).reduce((o,[a,c])=>{const s=a.startsWith(":?"),u=kt(t,c);if(c in o)throw new $(c);return o[c]=s?Pt(u):u,o},{})}function be(e,t){return{path:e,params:nt(e,t),toString:()=>e}}function ke(e,t){const n=Object.keys(e),r=Object.keys(t),o=n.find(a=>r.includes(a));return o?{key:o,hasDuplicates:!0}:{key:void 0,hasDuplicates:!1}}function en(e,t){const{hasDuplicates:n,key:r}=ke(e.params,t.params);if(n)throw new $(r);return be(`${e.path}${t.path}`,{...e.params,...t.params})}function ce(e,t){return{query:e,params:nt(e,t),toString:()=>e}}function tn(e,t){const{hasDuplicates:n,key:r}=ke(e.params,t.params);if(n)throw new $(r);const o=[e.query,t.query].filter(oe).join("&");return ce(o,{...e.params,...t.params})}function rt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nn(e){return rt(e)&&typeof e.path=="string"}function rn(e){return nn(e)?e:be(e,{})}function on(e){return rt(e)&&typeof e.query=="string"}function an(e){return e===void 0?ce("",{}):on(e)?e:ce(e,{})}function ot(e){return"children"in e}function cn(e){const t=e.reduce((n,r)=>{const o=sn({...r,component:r.component??Re});return ot(r)&&n.push(...r.children.map(a=>({...a,key:Ae(o.key,a.key),path:en(o.path,a.path),query:tn(o.query,a.query),matches:[o.matched,...a.matches],depth:a.depth+1}))),n.push(o),n},[]);return t.forEach(({path:n,query:r})=>{const{hasDuplicates:o,key:a}=ke(n.params,r.params);if(o)throw new $(a)}),t}function sn(e){const t=rn(e.path),n=an(e.query),r=f.markRaw({meta:{},...e});return{matched:r,matches:[r],key:e.name,path:t,query:n,depth:1,disabled:e.disabled??!1}}g.DuplicateParamsError=$,g.RouterLink=$e,g.RouterNotInstalledError=Y,g.RouterView=Re,g.UseRouteInvalidError=Pe,g.createRouter=Zt,g.createRoutes=cn,g.isParamGetSet=ye,g.isParamGetter=qe,g.isParentRoute=ot,g.onAfterRouteEnter=dt,g.onAfterRouteLeave=mt,g.onAfterRouteUpdate=Rt,g.onBeforeRouteLeave=ht,g.onBeforeRouteUpdate=pt,g.path=be,g.query=ce,g.routerInjectionKey=ue,g.routerRejectionKey=ie,g.useRejection=Se,g.useRoute=at,g.useRouter=X,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(d,u){typeof exports=="object"&&typeof module<"u"?u(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],u):(d=typeof globalThis<"u"?globalThis:d||self,u(d["@kitbag/router"]={},d.Vue))})(this,function(d,u){"use strict";var Ln=Object.defineProperty;var xn=(d,u,N)=>u in d?Ln(d,u,{enumerable:!0,configurable:!0,writable:!0,value:N}):d[u]=N;var C=(d,u,N)=>(xn(d,typeof u!="symbol"?u+"":u,N),N);class N extends Error{constructor(e){super(`Invalid Param "${e}": Router does not support multiple params by the same name. All param names must be unique.`)}}class tt extends Error{constructor(){super("Router not installed")}}class xt extends Error{constructor(e,n){super(`useRoute called with incorrect route. Given ${e}, expected ${n}`)}}const ft=Symbol();function et(){const t=u.inject(ft);if(!t)throw new tt;return t}class Y extends Error{}function J(t){return typeof t!="string"?!1:/^(https?:\/\/|\/).*/g.test(t)}function Ut(t,e={},n={}){const r=et(),o=u.computed(()=>u.toValue(t)),a=u.computed(()=>u.toValue(e)),c=u.computed(()=>u.toValue(n)),s=u.computed(()=>{if(J(o.value))return o.value;try{return r.resolve(o.value,a.value,c.value)}catch(y){throw y instanceof Y&&console.error(`Failed to resolve route "${o.value.toString()}" in RouterLink.`,y),y}}),f=u.computed(()=>r.find(s.value,c.value)),h=u.computed(()=>!!f.value&&r.route.matches.includes(u.readonly(f.value.matched))),g=u.computed(()=>!!f.value&&r.route.matched===f.value.matched);return{route:f,href:s,isMatch:h,isExactMatch:g,push:y=>r.push(s.value,{},{...c.value,...y}),replace:y=>r.replace(s.value,{},{...c.value,...y})}}const lt=Symbol();function Bt(){const t=u.inject(lt);if(!t)throw new tt;return t}function jt(t,e){return[t,e].filter(n=>!!n).join(".")}const nt=Symbol("isRouterRouteSymbol");function Re(t){return typeof t=="object"&&t!==null&&nt in t&&t[nt]===!0}function ye(t,e){function n(r,o,a){if(typeof r=="object"){const s={...t.params,...r};return e(t.key,s,o)}const c={...t.params,[r]:o};return e(t.key,c,a)}return new Proxy(t,{has:(r,o)=>["update","params",nt].includes(o)?!0:Reflect.has(r,o),get:(r,o,a)=>o===nt?!0:o==="update"?n:o==="params"?new Proxy(t.params,{set(c,s,f){return n(s,f),!0}}):Reflect.get(r,o,a)})}function Ht(t,e,{exact:n}={}){if(!Re(t))return!1;if(e===void 0)return!0;const r=ge(t);if(n){const o=r.at(-1);return e===o}return r.includes(e)}function ge(t){return t.matches.map(n=>n.name).reduce((n,r)=>{const o=n.pop(),a=r?[jt(o,r)]:[];return o?[...n,o,...a]:a},[])}function $t(t,{exact:e}={}){const n=et();function r(){if(!t)return;if(!Ht(n.route,t,{exact:e}))throw new xt(t,n.route.key)}return u.watch(n.route,r,{immediate:!0,deep:!0}),n.route}const Nt=Symbol();function ht(){return u.inject(Nt,0)}class rt{constructor(){C(this,"onBeforeRouteEnter",new Set);C(this,"onBeforeRouteUpdate",new Set);C(this,"onBeforeRouteLeave",new Set);C(this,"onAfterRouteEnter",new Set);C(this,"onAfterRouteUpdate",new Set);C(this,"onAfterRouteLeave",new Set)}}class Ct extends Error{}class X extends Error{constructor(n){super("Error occurred during a router push operation.");C(this,"to");this.to=n}}class pt extends Error{constructor(n){super(`Routing action rejected: ${n}`);C(this,"type");this.type=n}}function K(t){return Array.isArray(t)?t:[t]}function we(t,e){const n=new rt;return t.matches.forEach((r,o)=>{r.onBeforeRouteEnter&&dt(t,e,o)&&K(r.onBeforeRouteEnter).forEach(a=>n.onBeforeRouteEnter.add(a)),r.onBeforeRouteUpdate&&Rt(t,e,o)&&K(r.onBeforeRouteUpdate).forEach(a=>n.onBeforeRouteUpdate.add(a))}),e.matches.forEach((r,o)=>{r.onBeforeRouteLeave&&mt(t,e,o)&&K(r.onBeforeRouteLeave).forEach(a=>n.onBeforeRouteLeave.add(a))}),n}function Ee(t,e){const n=new rt;return t.matches.forEach((r,o)=>{r.onAfterRouteEnter&&dt(t,e,o)&&K(r.onAfterRouteEnter).forEach(a=>n.onAfterRouteEnter.add(a)),r.onAfterRouteUpdate&&Rt(t,e,o)&&K(r.onAfterRouteUpdate).forEach(a=>n.onAfterRouteUpdate.add(a))}),e.matches.forEach((r,o)=>{r.onAfterRouteLeave&&mt(t,e,o)&&K(r.onAfterRouteLeave).forEach(a=>n.onAfterRouteLeave.add(a))}),n}function ve(){const t=c=>{throw new pt(c)},e=(...c)=>{throw new X(c)},n=(c,s,f)=>{if(J(c)){const y=s??{};throw new X([c,{...y,replace:!0}])}const h=s,g=f??{};throw new X([c,h,{...g,replace:!0}])},r=()=>{throw new Ct};async function o({to:c,from:s,hooks:f}){const{global:h,component:g}=f,y=we(c,s),U=[...h.onBeforeRouteEnter,...y.onBeforeRouteEnter,...h.onBeforeRouteUpdate,...y.onBeforeRouteUpdate,...g.onBeforeRouteUpdate,...h.onBeforeRouteLeave,...y.onBeforeRouteLeave,...g.onBeforeRouteLeave];try{const m=U.map(A=>A(c,{from:s,reject:t,push:e,replace:n,abort:r}));await Promise.all(m)}catch(m){if(m instanceof X)return{status:"PUSH",to:m.to};if(m instanceof pt)return{status:"REJECT",type:m.type};if(m instanceof Ct)return{status:"ABORT"};throw m}return{status:"SUCCESS"}}async function a({to:c,from:s,hooks:f}){const{global:h,component:g}=f,y=Ee(c,s),U=[...g.onAfterRouteLeave,...y.onAfterRouteLeave,...h.onAfterRouteLeave,...g.onAfterRouteUpdate,...y.onAfterRouteUpdate,...h.onAfterRouteUpdate,...g.onAfterRouteEnter,...y.onAfterRouteEnter,...h.onAfterRouteEnter];try{const m=U.map(A=>A(c,{from:s,reject:t,push:e,replace:n}));await Promise.all(m)}catch(m){if(m instanceof X)return{status:"PUSH",to:m.to};if(m instanceof pt)return{status:"REJECT",type:m.type};throw m}return{status:"SUCCESS"}}return{runBeforeRouteHooks:o,runAfterRouteHooks:a}}const dt=(t,e,n)=>{const r=t.matches,o=(e==null?void 0:e.matches)??[];return r.length<n||r[n]!==o[n]},mt=(t,e,n)=>{const r=t.matches,o=(e==null?void 0:e.matches)??[];return r.length<n||r[n]!==o[n]},Rt=(t,e,n)=>t.matches[n]===(e==null?void 0:e.matches[n]);function Vt(t){switch(t){case"onBeforeRouteEnter":case"onAfterRouteEnter":return dt;case"onBeforeRouteUpdate":case"onAfterRouteUpdate":return Rt;case"onBeforeRouteLeave":case"onAfterRouteLeave":return mt;default:throw new Error(`Switch is not exhaustive for lifecycle: ${t}`)}}class be{constructor(){C(this,"global",new rt);C(this,"component",new rt)}addBeforeRouteHook({lifecycle:e,timing:n,depth:r,hook:o}){const a=Vt(e),c=this[n][e],s=(f,h)=>{if(a(f,h.from,r))return o(f,h)};return c.add(s),()=>c.delete(s)}addAfterRouteHook({lifecycle:e,timing:n,depth:r,hook:o}){const a=Vt(e),c=this[n][e],s=(f,h)=>{if(a(f,h.from,r))return o(f,h)};return c.add(s),()=>c.delete(s)}}const Ot=Symbol();function Pe(){const t=new be;return{onBeforeRouteEnter:s=>t.addBeforeRouteHook({lifecycle:"onBeforeRouteEnter",hook:s,timing:"global",depth:0}),onBeforeRouteUpdate:s=>t.addBeforeRouteHook({lifecycle:"onBeforeRouteUpdate",hook:s,timing:"global",depth:0}),onBeforeRouteLeave:s=>t.addBeforeRouteHook({lifecycle:"onBeforeRouteLeave",hook:s,timing:"global",depth:0}),onAfterRouteEnter:s=>t.addAfterRouteHook({lifecycle:"onAfterRouteEnter",hook:s,timing:"global",depth:0}),onAfterRouteUpdate:s=>t.addAfterRouteHook({lifecycle:"onAfterRouteUpdate",hook:s,timing:"global",depth:0}),onAfterRouteLeave:s=>t.addAfterRouteHook({lifecycle:"onAfterRouteLeave",hook:s,timing:"global",depth:0}),hooks:t}}function _t(){const t=u.inject(Ot);if(!t)throw new tt;return t}function qt(t){return e=>{const n=ht(),o=_t().addBeforeRouteHook({lifecycle:t,hook:e,depth:n,timing:"component"});return u.onUnmounted(o),o}}function yt(t){return e=>{const n=ht(),o=_t().addAfterRouteHook({lifecycle:t,hook:e,depth:n,timing:"component"});return u.onUnmounted(o),o}}const Se=qt("onBeforeRouteUpdate"),ke=qt("onBeforeRouteLeave"),Ae=yt("onAfterRouteEnter"),Le=yt("onAfterRouteUpdate"),xe=yt("onAfterRouteLeave"),Ue=["href"],Dt=u.defineComponent({__name:"routerLink",props:{to:{type:[String,Function]},query:{},replace:{type:Boolean}},setup(t){const e=t,n=et(),r=u.computed(()=>J(e.to)?e.to:e.to(n.resolve)),o=u.computed(()=>{const{to:y,...U}=e;return U}),{href:a,isMatch:c,isExactMatch:s}=Ut(r),f=u.computed(()=>({"router-link--match":c.value,"router-link--exact-match":s.value})),h=u.computed(()=>{const{host:y}=new URL(r.value,window.location.origin);return y!==window.location.host});function g(y){y.preventDefault(),n.push(a.value,o.value)}return(y,U)=>(u.openBlock(),u.createElementBlock("a",{href:r.value,class:u.normalizeClass(["router-link",f.value]),onClick:g},[u.renderSlot(y.$slots,"default",u.normalizeProps(u.guardReactiveProps({resolved:r.value,isMatch:u.unref(c),isExactMatch:u.unref(s),isExternal:h.value})))],10,Ue))}});function gt(t){return"children"in t}function Mt(t){return gt(t)&&!("component"in t)&&!("components"in t)}function Tt(t){return typeof t=="object"&&t!==null&&"component"in t}function It(t){return typeof t=="object"&&t!==null&&"components"in t}const wt=u.defineComponent({__name:"routerView",props:{name:{}},setup(t){const{name:e="default"}=t,n=$t(),r=Bt(),o=ht();u.provide(Nt,o+1);const a=u.computed(()=>{if(r.value)return r.value.component;const s=n.matches.at(o);if(!s)return null;const h=c(s)[e];return h?typeof h=="function"?u.defineAsyncComponent(h):h:null});function c(s){return It(s)?s.components:Tt(s)?{default:s.component}:{}}return(s,f)=>u.renderSlot(s.$slots,"default",u.normalizeProps(u.guardReactiveProps({route:u.unref(n),component:a.value,rejection:u.unref(r)})),()=>[(u.openBlock(),u.createBlock(u.resolveDynamicComponent(a.value)))])}});function Be(t,e){return u.defineComponent({name:"PropsWrapper",expose:[],async setup(){const n=await e();return()=>u.h(t,n)}})}function _(){return _=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},_.apply(this,arguments)}var B;(function(t){t.Pop="POP",t.Push="PUSH",t.Replace="REPLACE"})(B||(B={}));var Q=process.env.NODE_ENV!=="production"?function(t){return Object.freeze(t)}:function(t){return t};function M(t,e){if(!t){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}var ot="beforeunload",je="hashchange",Wt="popstate";function Ft(t){t===void 0&&(t={});var e=t,n=e.window,r=n===void 0?document.defaultView:n,o=r.history;function a(){var p=r.location,i=p.pathname,l=p.search,v=p.hash,b=o.state||{};return[b.idx,Q({pathname:i,search:l,hash:v,state:b.usr||null,key:b.key||"default"})]}var c=null;function s(){if(c)m.call(c),c=null;else{var p=B.Pop,i=a(),l=i[0],v=i[1];if(m.length)if(l!=null){var b=g-l;b&&(c={action:p,location:v,retry:function(){P(b*-1)}},P(b))}else process.env.NODE_ENV!=="production"&&M(!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 H(p)}}r.addEventListener(Wt,s);var f=B.Pop,h=a(),g=h[0],y=h[1],U=G(),m=G();g==null&&(g=0,o.replaceState(_({},o.state,{idx:g}),""));function A(p){return typeof p=="string"?p:T(p)}function V(p,i){return i===void 0&&(i=null),Q(_({pathname:y.pathname,hash:"",search:""},typeof p=="string"?Z(p):p,{state:i,key:ct()}))}function O(p,i){return[{usr:p.state,key:p.key,idx:i},A(p)]}function $(p,i,l){return!m.length||(m.call({action:p,location:i,retry:l}),!1)}function H(p){f=p;var i=a();g=i[0],y=i[1],U.call({action:f,location:y})}function R(p,i){var l=B.Push,v=V(p,i);function b(){R(p,i)}if($(l,v,b)){var L=O(v,g+1),w=L[0],k=L[1];try{o.pushState(w,"",k)}catch{r.location.assign(k)}H(l)}}function E(p,i){var l=B.Replace,v=V(p,i);function b(){E(p,i)}if($(l,v,b)){var L=O(v,g),w=L[0],k=L[1];o.replaceState(w,"",k),H(l)}}function P(p){o.go(p)}var S={get action(){return f},get location(){return y},createHref:A,push:R,replace:E,go:P,back:function(){P(-1)},forward:function(){P(1)},listen:function(i){return U.push(i)},block:function(i){var l=m.push(i);return m.length===1&&r.addEventListener(ot,at),function(){l(),m.length||r.removeEventListener(ot,at)}}};return S}function He(t){t===void 0&&(t={});var e=t,n=e.window,r=n===void 0?document.defaultView:n,o=r.history;function a(){var i=Z(r.location.hash.substr(1)),l=i.pathname,v=l===void 0?"/":l,b=i.search,L=b===void 0?"":b,w=i.hash,k=w===void 0?"":w,x=o.state||{};return[x.idx,Q({pathname:v,search:L,hash:k,state:x.usr||null,key:x.key||"default"})]}var c=null;function s(){if(c)m.call(c),c=null;else{var i=B.Pop,l=a(),v=l[0],b=l[1];if(m.length)if(v!=null){var L=g-v;L&&(c={action:i,location:b,retry:function(){S(L*-1)}},S(L))}else process.env.NODE_ENV!=="production"&&M(!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 R(i)}}r.addEventListener(Wt,s),r.addEventListener(je,function(){var i=a(),l=i[1];T(l)!==T(y)&&s()});var f=B.Pop,h=a(),g=h[0],y=h[1],U=G(),m=G();g==null&&(g=0,o.replaceState(_({},o.state,{idx:g}),""));function A(){var i=document.querySelector("base"),l="";if(i&&i.getAttribute("href")){var v=r.location.href,b=v.indexOf("#");l=b===-1?v:v.slice(0,b)}return l}function V(i){return A()+"#"+(typeof i=="string"?i:T(i))}function O(i,l){return l===void 0&&(l=null),Q(_({pathname:y.pathname,hash:"",search:""},typeof i=="string"?Z(i):i,{state:l,key:ct()}))}function $(i,l){return[{usr:i.state,key:i.key,idx:l},V(i)]}function H(i,l,v){return!m.length||(m.call({action:i,location:l,retry:v}),!1)}function R(i){f=i;var l=a();g=l[0],y=l[1],U.call({action:f,location:y})}function E(i,l){var v=B.Push,b=O(i,l);function L(){E(i,l)}if(process.env.NODE_ENV!=="production"&&M(b.pathname.charAt(0)==="/","Relative pathnames are not supported in hash history.push("+JSON.stringify(i)+")"),H(v,b,L)){var w=$(b,g+1),k=w[0],x=w[1];try{o.pushState(k,"",x)}catch{r.location.assign(x)}R(v)}}function P(i,l){var v=B.Replace,b=O(i,l);function L(){P(i,l)}if(process.env.NODE_ENV!=="production"&&M(b.pathname.charAt(0)==="/","Relative pathnames are not supported in hash history.replace("+JSON.stringify(i)+")"),H(v,b,L)){var w=$(b,g),k=w[0],x=w[1];o.replaceState(k,"",x),R(v)}}function S(i){o.go(i)}var p={get action(){return f},get location(){return y},createHref:V,push:E,replace:P,go:S,back:function(){S(-1)},forward:function(){S(1)},listen:function(l){return U.push(l)},block:function(l){var v=m.push(l);return m.length===1&&r.addEventListener(ot,at),function(){v(),m.length||r.removeEventListener(ot,at)}}};return p}function Jt(t){t===void 0&&(t={});var e=t,n=e.initialEntries,r=n===void 0?["/"]:n,o=e.initialIndex,a=r.map(function(R){var E=Q(_({pathname:"/",search:"",hash:"",state:null,key:ct()},typeof R=="string"?Z(R):R));return process.env.NODE_ENV!=="production"&&M(E.pathname.charAt(0)==="/","Relative pathnames are not supported in createMemoryHistory({ initialEntries }) (invalid entry: "+JSON.stringify(R)+")"),E}),c=Kt(o??a.length-1,0,a.length-1),s=B.Pop,f=a[c],h=G(),g=G();function y(R){return typeof R=="string"?R:T(R)}function U(R,E){return E===void 0&&(E=null),Q(_({pathname:f.pathname,search:"",hash:""},typeof R=="string"?Z(R):R,{state:E,key:ct()}))}function m(R,E,P){return!g.length||(g.call({action:R,location:E,retry:P}),!1)}function A(R,E){s=R,f=E,h.call({action:s,location:f})}function V(R,E){var P=B.Push,S=U(R,E);function p(){V(R,E)}process.env.NODE_ENV!=="production"&&M(f.pathname.charAt(0)==="/","Relative pathnames are not supported in memory history.push("+JSON.stringify(R)+")"),m(P,S,p)&&(c+=1,a.splice(c,a.length,S),A(P,S))}function O(R,E){var P=B.Replace,S=U(R,E);function p(){O(R,E)}process.env.NODE_ENV!=="production"&&M(f.pathname.charAt(0)==="/","Relative pathnames are not supported in memory history.replace("+JSON.stringify(R)+")"),m(P,S,p)&&(a[c]=S,A(P,S))}function $(R){var E=Kt(c+R,0,a.length-1),P=B.Pop,S=a[E];function p(){$(R)}m(P,S,p)&&(c=E,A(P,S))}var H={get index(){return c},get action(){return s},get location(){return f},createHref:y,push:V,replace:O,go:$,back:function(){$(-1)},forward:function(){$(1)},listen:function(E){return h.push(E)},block:function(E){return g.push(E)}};return H}function Kt(t,e,n){return Math.min(Math.max(t,e),n)}function at(t){t.preventDefault(),t.returnValue=""}function G(){var t=[];return{get length(){return t.length},push:function(n){return t.push(n),function(){t=t.filter(function(r){return r!==n})}},call:function(n){t.forEach(function(r){return r&&r(n)})}}}function ct(){return Math.random().toString(36).substr(2,8)}function T(t){var e=t.pathname,n=e===void 0?"/":e,r=t.search,o=r===void 0?"":r,a=t.hash,c=a===void 0?"":a;return o&&o!=="?"&&(n+=o.charAt(0)==="?"?o:"?"+o),c&&c!=="#"&&(n+=c.charAt(0)==="#"?c:"#"+c),n}function Z(t){var e={};if(t){var n=t.indexOf("#");n>=0&&(e.hash=t.substr(n),t=t.substr(0,n));var r=t.indexOf("?");r>=0&&(e.search=t.substr(r),t=t.substr(0,r)),t&&(e.pathname=t)}return e}function $e(t,e){const n=u.reactive({...t}),r=c=>{Object.assign(n,{...c})},o=u.readonly(n),a=ye(o,e);return{currentRoute:o,routerRoute:a,updateRoute:r}}class Ne extends Error{constructor(e){super(`Route disabled: "${e}"`)}}class Ce extends Error{constructor(e){super(`Route not found: "${e}"`)}}const I="[",z="]";function Ve(t){return t!==String&&t!==Boolean&&t!==Number&&t!==Date}function Qt(t){return typeof t=="function"&&Ve(t)}function Et(t){return typeof t=="object"&&"get"in t&&typeof t.get=="function"&&"set"in t&&typeof t.set=="function"}function vt(t){return typeof t=="string"&&t.length>0}function Oe(t,e){return t[e]??String}const Gt=Symbol();function zt(t){return Gt in t}function _e(t){return{[Gt]:!0,get:e=>{if(vt(e))return bt(e,t)},set:e=>e===void 0?"":Pt(e,t)}}const j={invalid:t=>{throw new Y(t)}},qe={get:t=>t,set:(t,{invalid:e})=>{if(typeof t!="string")throw e();return t}},Yt={get:(t,{invalid:e})=>{if(t==="true")return!0;if(t==="false")return!1;throw e()},set:(t,{invalid:e})=>{if(typeof t!="boolean")throw e();return t.toString()}},Xt={get:(t,{invalid:e})=>{const n=Number(t);if(isNaN(n))throw e();return n},set:(t,{invalid:e})=>{if(typeof t!="number")throw e();return t.toString()}},Zt={get:(t,{invalid:e})=>{const n=new Date(t);if(isNaN(n.getTime()))throw e();return n},set:(t,{invalid:e})=>{if(typeof t!="object"||!(t instanceof Date))throw e();return t.toISOString()}},te={get:(t,{invalid:e})=>{try{return JSON.parse(t)}catch{throw e()}},set:(t,{invalid:e})=>{try{return JSON.stringify(t)}catch{throw e()}}};function bt(t,e){if(t===void 0){if(zt(e))return e.get(t,j);throw new Y}if(e===String)return qe.get(t,j);if(e===Boolean)return Yt.get(t,j);if(e===Number)return Xt.get(t,j);if(e===Date)return Zt.get(t,j);if(e===JSON)return te.get(t,j);if(Qt(e))return e(t,j);if(Et(e))return e.get(t,j);if(e instanceof RegExp){if(e.test(t))return t;throw new Y}return t}function Pt(t,e){if(e===Boolean)return Yt.set(t,j);if(e===Number)return Xt.set(t,j);if(e===Date)return Zt.set(t,j);if(e===JSON)return te.set(t,j);if(Et(e))return e.set(t,j);try{return t.toString()}catch{throw new Y}}function De(t){const e=St(t.path.toString());return new RegExp(`^${e}$`,"i")}function Me(t){const e=new URLSearchParams(t.query.toString());return Array.from(e.entries()).filter(([,n])=>!ne(n)).map(([n,r])=>new RegExp(`${n}=${St(r)}(&|$)`,"i"))}function St(t){return[Te,Ie].reduce((e,n)=>n(e),t)}const kt=`\\${I}\\?([\\w-_]+)\\${z}`,ee=`\\${I}([\\w-_]+)\\${z}`;function Te(t){return t.replace(new RegExp(kt,"g"),".*")}function ne(t){return new RegExp(kt,"g").test(t)}function Ie(t){return t.replace(new RegExp(ee,"g"),".+")}function We(t){const[e]=st(t,new RegExp(kt,"g")),[n]=st(t,new RegExp(ee,"g"));return e??n}function st(t,e){return Array.from(t.matchAll(e)).flatMap(([,...r])=>r.map(o=>vt(o)?o:""))}function re(t,e,n){const r=oe(e,n),[o]=st(t,r);return o}function Fe(t,e){if(!e)return t;const{name:n,param:r,value:o}=e,a=oe(t,n);return st(t,a).reduce((s,f)=>f===void 0?s:s.replace(f,()=>Pt(o,r)),t)}function oe(t,e){const n=[Je,Ke,St].reduce((r,o)=>o(r,e),t);return new RegExp(n,"g")}function Je(t,e){const n=new RegExp(`(\\${I}\\?${e})\\${z}`,"g");return t.replace(n,"(.*)")}function Ke(t,e){const n=new RegExp(`(\\${I}${e})\\${z}`,"g");return t.replace(n,"(.+)")}function ae(t,...e){return e.reduce((n,r)=>{if(!r)return n;const o=new URLSearchParams(r).toString();return Object.keys(o).length===0?n:n.includes("?")?`${n}&${o}`:`${n}?${o}`},t)}function Qe(t,e={}){const{params:n={},query:r}=e,o={...t.path.params,...t.query.params},a=t.path.toString(),c=t.query.toString(),s=Ge(a,o,n),f=ze(c,o,n);return ae(s,f,r)}function Ge(t,e,n){return t.length?Object.entries(e).reduce((r,[o,a])=>Fe(r,{name:o,param:a,value:n[o]}),t):t}function ze(t,e,n){if(!t.length)return{};const r=new URLSearchParams(t);return Array.from(r.entries()).reduce((o,[a,c])=>{const s=We(c);if(!s)return{...o,[a]:c};const f=Pt(n[s],e[s]);return ne(c)&&n[s]===void 0&&f===""?o:{...o,[a]:f}},{})}function ce(t){return(e,n,r)=>{if(J(e))return ae(e,(n??{}).query);const o=n??{},a=r??{},c=t.find(f=>f.key===e);if(!c)throw new Ce(String(e));if(c.matched.disabled)throw new Ne(String(e));return Qe(c,{params:o,query:a.query})}}function W(t){return!t.startsWith("http")?Xe(t):Ye(t)}function Ye(t){const{protocol:e,host:n,pathname:r,search:o,searchParams:a,hash:c}=new URL(t,t);return{protocol:e,host:n,pathname:r,search:o,searchParams:a,hash:c}}function Xe(t){const{pathname:e,search:n,searchParams:r,hash:o}=new URL(t,"https://localhost");return{pathname:e,search:n,searchParams:r,hash:o}}function se(t){const e=new URLSearchParams(t);return{get:n=>e.get(n),getAll:n=>e.getAll(n)}}const Ze=(t,e)=>{try{ie(t,e)}catch{return!1}return!0},ie=(t,e)=>{const{pathname:n,search:r}=W(e);return{...tn(t.path,n),...en(t.query,r)}};function tn(t,e){const n={},r=decodeURIComponent(e);for(const[o,a]of Object.entries(t.params)){const c=re(r,t.toString(),o),s=bt(c,a);n[o]=s}return n}function en(t,e){const n={},r=new URLSearchParams(e);for(const[o,a]of Object.entries(t.params)){const c=r.get(o)??void 0,s=bt(c,a);n[o]=s}return n}const nn=t=>"name"in t.matched&&!!t.matched.name,rn=(t,e)=>{const{host:n}=W(e),{host:r}=W(t.path.toString());return n===r},on=(t,e)=>{const{pathname:n}=W(e);return De(t).test(n)},an=(t,e)=>{const{search:n}=W(e);return Me(t).every(o=>o.test(n))};function cn(t){const{searchParams:e,pathname:n}=W(t),r=-1,o=1;return(a,c)=>{const s=fe(a,e),f=ue(a,n),h=fe(c,e),g=ue(c,n);return s+f>h+g?r:s+f<h+g?o:a.depth>c.depth?r:a.depth<c.depth?o:0}}function ue(t,e){const n=Object.entries(t.path.params).filter(([,o])=>zt(o)).map(([o])=>o),r=n.filter(o=>re(e,t.path.toString(),o)===void 0);return n.length-r.length}function fe(t,e){const n=new URLSearchParams(t.query.toString()),r=Array.from(n.keys()),o=r.filter(a=>!e.has(a));return r.length-o.length}const sn=[nn,rn,on,an,Ze];function le(t,e){const n=cn(e),r=t.filter(f=>sn.every(h=>h(f,e))).sort(n);if(r.length===0)return;const[o]=r,{search:a}=W(e),c=se(a),s=ie(o,e);return u.readonly({matched:o.matched,matches:o.matches,key:o.key,query:c,params:s})}function un(t){return(e,n={})=>{const o=ce(t)(e,n);return le(t,o)}}function he(){return typeof window<"u"&&typeof window.document<"u"}function fn({mode:t,listener:e}){const n=ln(t),r=(f,h)=>{if(h!=null&&h.replace)return n.replace(f);n.push(f)},o=()=>{const f=T(n.location);return n.replace(f)};let a;return{...n,update:r,refresh:o,startListening:()=>{a==null||a(),a=n.listen(e)},stopListening:()=>{a==null||a()}}}function ln(t="auto"){switch(t){case"auto":return he()?Ft():Jt();case"browser":return Ft();case"memory":return Jt();case"hash":return He();default:const e=t;throw new Error(`Switch is not exhaustive for mode: ${e}`)}}function hn(t){return u.defineComponent(()=>()=>u.h("h1",t),{name:t,props:[]})}const pe=Symbol();function pn({rejections:t}){const e=c=>{const s={...t};return u.markRaw(s[c]??hn(c))},n=c=>{const s=u.markRaw(e(c)),f={name:c,path:"",component:s,meta:{}};return u.readonly({matched:f,matches:[f],key:c,query:se(""),params:{},[pe]:!0})},r=c=>c[pe]===!0,o=c=>{if(!c){a.value=null;return}const s=e(c);a.value={type:c,component:s}},a=u.ref(null);return{setRejection:o,rejection:a,getRejectionRoute:n,isRejectionRoute:r}}class dn extends Error{constructor(){super("initialUrl must be set if window.location is unavailable")}}function mn(t){if(t)return t;if(he())return window.location.toString();throw new dn}function Rn(t,e={}){const n=ce(t),r=fn({mode:e.historyMode,listener:()=>{const w=T(location);m(w)}}),{runBeforeRouteHooks:o,runAfterRouteHooks:a}=ve(),{hooks:c,onBeforeRouteEnter:s,onAfterRouteUpdate:f,onBeforeRouteLeave:h,onAfterRouteEnter:g,onBeforeRouteUpdate:y,onAfterRouteLeave:U}=Pe();async function m(w,{replace:k}={}){r.stopListening();const x=le(t,w)??E("NotFound"),q={...S},F=await o({to:x,from:q,hooks:c});switch(F.status){case"ABORT":return;case"PUSH":r.update(w,{replace:k}),await A(...F.to);return;case"REJECT":r.update(w,{replace:k}),H(F.type),i(x);break;case"SUCCESS":r.update(w,{replace:k}),H(null),i(x);break;default:throw new Error(`Switch is not exhaustive for before hook response status: ${JSON.stringify(F)}`)}const D=await a({to:x,from:q,hooks:c});switch(D.status){case"PUSH":await A(...D.to);break;case"REJECT":H(D.type);break;case"SUCCESS":break;default:const ut=D;throw new Error(`Switch is not exhaustive for after hook response status: ${JSON.stringify(ut)}`)}r.startListening()}const A=(w,k,x)=>{if(J(w)){const ut={...k},An=n(w,ut);return m(An,{replace:ut.replace})}const q={...x},D=n(w,k??{},q);return m(D,{replace:q.replace})},V=(w,k,x)=>{if(J(w)){const D={...k,replace:!0};return A(w,D)}const q=k??{},F={...x,replace:!0};return A(w,q,F)},O=w=>H(w),$=un(t),{setRejection:H,rejection:R,getRejectionRoute:E}=pn(e),P=E("NotFound"),{currentRoute:S,routerRoute:p,updateRoute:i}=$e(P,A);r.startListening();const l=mn(e.initialUrl),v=m(l,{replace:!0});function b(w){w.component("RouterView",wt),w.component("RouterLink",Dt),w.provide(ft,L),w.provide(lt,R),w.provide(Ot,c)}const L={route:p,resolve:n,push:A,replace:V,reject:O,find:$,refresh:r.refresh,forward:r.forward,back:r.back,go:r.go,install:b,initialized:v,onBeforeRouteEnter:s,onAfterRouteUpdate:f,onBeforeRouteLeave:h,onAfterRouteEnter:g,onBeforeRouteUpdate:y,onAfterRouteLeave:U};return L}function de(t,e){const n=new RegExp(`\\${I}\\??([\\w-_]+)\\${z}`,"g");return Array.from(t.matchAll(n)).reduce((o,[a,c])=>{const s=a.startsWith(`${I}?`),f=Oe(e,c);if(c in o)throw new N(c);return o[c]=s?_e(f):f,o},{})}function At(t,e){return{path:t,params:de(t,e),toString:()=>t}}function Lt(t,e){const n=Object.keys(t),r=Object.keys(e),o=n.find(a=>r.includes(a));return o?{key:o,hasDuplicates:!0}:{key:void 0,hasDuplicates:!1}}function yn(t,e){const{hasDuplicates:n,key:r}=Lt(t.params,e.params);if(n)throw new N(r);return At(`${t.path}${e.path}`,{...t.params,...e.params})}function it(t,e){return{query:t,params:de(t,e),toString:()=>t}}function gn(t,e){const{hasDuplicates:n,key:r}=Lt(t.params,e.params);if(n)throw new N(r);const o=[t.query,e.query].filter(vt).join("&");return it(o,{...t.params,...e.params})}function me(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function wn(t){return me(t)&&typeof t.path=="string"}function En(t){return wn(t)?t:At(t,{})}function vn(t){return me(t)&&typeof t.query=="string"}function bn(t){return t===void 0?it("",{}):vn(t)?t:it(t,{})}function Pn(t){const e=t.reduce((n,r)=>{const o=Sn(r);return gt(r)&&n.push(...r.children.map(a=>({...a,key:jt(o.key,a.key),path:yn(o.path,a.path),query:gn(o.query,a.query),matches:[o.matched,...a.matches],depth:a.depth+1}))),n.push(o),n},[]);return e.forEach(({path:n,query:r})=>{const{hasDuplicates:o,key:a}=Lt(n.params,r.params);if(o)throw new N(a)}),e}function Sn(t){const e=kn(t),n=En(t.path),r=bn(t.query),o=u.markRaw({meta:{},...e});return{matched:o,matches:[o],key:t.name,path:n,query:r,depth:1,disabled:t.disabled??!1}}function kn(t){return Mt(t)?{...t,component:wt}:t}d.DuplicateParamsError=N,d.RouterLink=Dt,d.RouterNotInstalledError=tt,d.RouterView=wt,d.UseRouteInvalidError=xt,d.component=Be,d.createRouter=Rn,d.createRoutes=Pn,d.isParamGetSet=Et,d.isParamGetter=Qt,d.isParentRoute=gt,d.isParentRouteWithoutComponent=Mt,d.isRoute=Ht,d.isRouteWithComponent=Tt,d.isRouteWithComponents=It,d.onAfterRouteEnter=Ae,d.onAfterRouteLeave=Le,d.onAfterRouteUpdate=xe,d.onBeforeRouteLeave=Se,d.onBeforeRouteUpdate=ke,d.paramEnd=z,d.paramStart=I,d.path=At,d.query=it,d.routerInjectionKey=ft,d.routerRejectionKey=lt,d.useLink=Ut,d.useRejection=Bt,d.useRoute=$t,d.useRouter=et,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
|