@real-router/vue 0.15.2 → 0.15.4

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.
Files changed (39) hide show
  1. package/dist/cjs/index.js +1 -1
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/esm/index.mjs +1 -1
  4. package/dist/esm/index.mjs.map +1 -1
  5. package/package.json +7 -8
  6. package/src/RouterProvider.ts +0 -162
  7. package/src/components/Await.ts +0 -47
  8. package/src/components/ClientOnly.ts +0 -16
  9. package/src/components/HttpStatusCode.ts +0 -74
  10. package/src/components/HttpStatusProvider.ts +0 -22
  11. package/src/components/Link.ts +0 -226
  12. package/src/components/RouteView/RouteView.ts +0 -233
  13. package/src/components/RouteView/components.ts +0 -53
  14. package/src/components/RouteView/helpers.ts +0 -207
  15. package/src/components/RouteView/index.ts +0 -8
  16. package/src/components/RouteView/types.ts +0 -20
  17. package/src/components/RouterErrorBoundary.ts +0 -61
  18. package/src/components/ServerOnly.ts +0 -16
  19. package/src/components/Streamed.ts +0 -31
  20. package/src/composables/useDeferred.ts +0 -37
  21. package/src/composables/useIsActiveRoute.ts +0 -61
  22. package/src/composables/useNavigator.ts +0 -15
  23. package/src/composables/useRoute.ts +0 -34
  24. package/src/composables/useRouteEnter.ts +0 -120
  25. package/src/composables/useRouteExit.ts +0 -116
  26. package/src/composables/useRouteNode.ts +0 -31
  27. package/src/composables/useRouteUtils.ts +0 -12
  28. package/src/composables/useRouter.ts +0 -15
  29. package/src/composables/useRouterTransition.ts +0 -14
  30. package/src/constants.ts +0 -9
  31. package/src/context.ts +0 -13
  32. package/src/createRouterPlugin.ts +0 -31
  33. package/src/directives/vLink.ts +0 -208
  34. package/src/index.ts +0 -64
  35. package/src/setupRouteProvision.ts +0 -42
  36. package/src/ssr.ts +0 -39
  37. package/src/types.ts +0 -40
  38. package/src/useRefFromSource.ts +0 -16
  39. package/src/utils/createHttpStatusSink.ts +0 -31
@@ -1,2 +1,2 @@
1
- import{a as e,i as t,r as n,t as r}from"./useRoute-BBfRYSpV.mjs";import{Fragment as i,KeepAlive as a,Suspense as o,computed as s,defineComponent as c,h as l,inject as u,isVNode as d,markRaw as f,onScopeDispose as p,provide as m,shallowRef as h,watch as g}from"vue";import{UNKNOWN_ROUTE as _,getNavigator as v}from"@real-router/core";import{getRouteUtils as y,startsWithSegment as ee}from"@real-router/route-utils";import{canonicalJson as te,createActiveRouteSource as ne,createDismissableError as re,createRouteNodeSource as ie,createRouteSource as ae,getTransitionSource as b}from"@real-router/sources";import{getPluginApi as oe}from"@real-router/core/api";function x(){return null}const S=c({name:`RouteView.Match`,props:{segment:{type:String,required:!0},exact:{type:Boolean,default:!1},fallback:{type:[Object,Function],default:void 0},keepAlive:{type:Boolean,default:!1}},render:x}),C=c({name:`RouteView.Self`,props:{fallback:{type:[Object,Function],default:void 0}},render:x}),w=c({name:`RouteView.NotFound`,render:x}),se=new Set([S,C,w]),ce=new Set([!0,``,`keep-alive`]);function le(e,t,n){return n?e===t:ee(e,t)}function T(e){return ce.has(e)}function E(e){if(Array.isArray(e)){let t=[];for(let n of e)Array.isArray(n)?t.push(...E(n)):d(n)&&t.push(n);return t}return d(e)?[e]:[]}function D(e,t){let n=E(e);for(let e of n)se.has(e.type)?t.push(e):e.type===i&&D(e.children,t)}function ue(e,t){return e.type===w?(t.notFoundChildren=e.children,!0):e.type===C?(t.selfVNode===null&&(t.selfVNode=e,t.selfFallback=e.props?.fallback),!0):!1}function de(e,t,n){let r=e.props,i=r?.segment??``,a=r?.exact??!1;return{isActive:le(t,n?`${n}.${i}`:i,a),fallback:r?.fallback}}function fe(e,t,n,r,i){if(r.selfVNode!==null&&t===n)return e.push(r.selfVNode),r.selfFallback;if(t===_&&r.notFoundChildren!==null){let t=i.filter(e=>e.type===w).at(-1);t&&e.push(t)}}function pe(e,t,n){let r={selfVNode:null,selfFallback:void 0,notFoundChildren:null},i=!1,a,o=!1,s=[];for(let c of e){if(!o&&c.type===S){let e=c.props;T(e?.keepAlive)&&(o=!0)}if(ue(c,r)||i)continue;let e=de(c,t,n);e.isActive&&(i=!0,a=e.fallback,s.push(c))}return i||(a=fe(s,t,n,r,e)),{rendered:s,activeMatchFound:i,fallback:a,hasPerMatchKA:o}}function O(e){let t=h(e.getSnapshot());return p(e.subscribe(()=>{t.value=e.getSnapshot()})),t}const k=()=>{let t=u(e);if(!t)throw Error(`useRouter must be used within a RouterProvider`);return t};function A(e){let t=k(),n=O(ie(t,e));return{navigator:v(t),route:s(()=>n.value.route),previousRoute:s(()=>n.value.previousRoute)}}function j(e){return e.children?.default?.()??null}function M(e,t){let n=e.get(t);if(n)return n;let r=f(c({name:`KeepAlive-${t}`,setup(e,t){return()=>t.slots.default?.()}}));return e.set(t,r),r}function N(e,t){if(t===void 0)return e;let n=typeof t==`function`?t():t;return l(o,{},{default:()=>e,fallback:()=>n})}let P=null;function me(){return P??=f(c({name:`KeepAlive-placeholder`,render(){return null}})),P}function he(e,t,n){let r=e.props?.segment??`__not-found__`,i=M(t,r),o=j(e)??[];return N(l(a,null,{default:()=>l(i,{key:r},{default:()=>o})}),n)}function ge(e,t,n){let r=e.props;if(T(r?.keepAlive)&&e.type===S){let n=r?.segment??`__not-found__`,o=M(t,n),s=j(e)??[];return l(i,[l(a,null,{default:()=>l(o,{key:n},{default:()=>s})})])}let o=j(e);return o?l(i,[l(a,null,{default:()=>l(me())}),N(l(i,o),n)]):null}const _e=c({name:`RouteView`,props:{nodeName:{type:String,required:!0},keepAlive:{type:Boolean,default:!1}},setup(e,{slots:t}){let n=A(e.nodeName),r=new Map;return()=>{let a=n.route.value;if(!a)return null;let o=t.default?.(),s=[];D(o,s);let{rendered:c,fallback:u,hasPerMatchKA:d}=pe(s,a.name,e.nodeName);if(c.length===0)return null;let f=c[0];if(e.keepAlive)return he(f,r,u);if(f.type!==S&&f.type!==C&&f.type!==w)return null;if(d)return ge(f,r,u);let p=j(f);return p?N(l(i,p),u):null}}}),F=Object.assign(_e,{Match:S,Self:C,NotFound:w}),I=Object.freeze({}),ve=Object.freeze({}),L=`data-real-router-announcer`,ye=Object.freeze({destroy:()=>{}});function be(e,t){if(typeof document>`u`)return ye;let n=t?.prefix??`Navigated to `,r=t?.getAnnouncementText,i=!0,a=!1,o=!1,s=``,c=null,l,u=xe(),d=(e,t)=>{s=e,clearTimeout(l),u.textContent=e,l=setTimeout(()=>{u.textContent=``,s=``},7e3),we(t)},f=setTimeout(()=>{if(a=!0,c!==null&&!o){let e=c;c=null,d(e,document.querySelector(`h1`))}},100),p=e.subscribe(({route:e})=>{if(i){i=!1;return}requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(o)return;let t=document.querySelector(`h1`),i=Ce(e,n,r,t);if(!(!i||i===s)){if(!a){c=i;return}d(i,t)}})})});return{destroy(){o=!0,p(),clearTimeout(l),clearTimeout(f),Se()}}}function xe(){let e=document.querySelector(`[${L}]`);if(e)return e;let t=document.createElement(`div`);return t.setAttribute(`style`,`position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0`),t.setAttribute(`aria-live`,`assertive`),t.setAttribute(`aria-atomic`,`true`),t.setAttribute(L,``),(document.body??document.documentElement).prepend(t),t}function Se(){document.querySelector(`[${L}]`)?.remove()}function Ce(e,t,n,r){if(n)try{let t=n(e);if(t)return t}catch(e){console.error(`[real-router] getAnnouncementText threw; falling back to default resolution.`,e)}let i=(r?.textContent??``).trim(),a=e.name.startsWith(`@@`)?``:e.name;return`${t}${i||document.title||a||globalThis.location.pathname}`}function we(e){e&&(e.hasAttribute(`tabindex`)||e.setAttribute(`tabindex`,`-1`),e.focus({preventScroll:!0}))}const R=Object.freeze({destroy:()=>{}});function Te(e,t){if(globalThis.window===void 0)return R;let n=t?.mode??`restore`;if(n===`native`)return R;let r=t?.anchorScrolling??!0,i=t?.scrollContainer,a=t?.behavior??`auto`,o=t?.storageKey??`real-router:scroll`,s,c=()=>{if(s!==void 0)return s;try{let e=sessionStorage.getItem(o);s=e?JSON.parse(e):{}}catch{s={}}return s},l=(e,t)=>{try{let n=c();if(n[e]===t)return;n[e]=t,sessionStorage.setItem(o,JSON.stringify(n))}catch{}},u=history.scrollRestoration;try{history.scrollRestoration=`manual`}catch{}let d=()=>{let e=i?.();return e?e.scrollTop:globalThis.scrollY},f=e=>{let t=i?.();t?t.scrollTo({top:e,left:0,behavior:a}):globalThis.scrollTo({top:e,left:0,behavior:a})},p=e=>{if(!i){globalThis.scrollTo({top:e,left:0,behavior:a});return}let t=0,n=()=>{if(h)return;let r=i();if(r){if(r.scrollTo({top:e,left:0,behavior:a}),a!==`smooth`&&Math.abs(r.scrollTop-e)<=1)return}else globalThis.scrollTo({top:e,left:0,behavior:a});t>=10||(t+=1,requestAnimationFrame(n))};n()},m=e=>{let t=e.context?.url?.hash;if(t!==void 0){if(r&&t.length>0){let e=document.getElementById(t);if(e){e.scrollIntoView({behavior:a});return}}f(0);return}let n=globalThis.location.hash;if(r&&n.length>1){let e;try{e=decodeURIComponent(n.slice(1))}catch{e=n.slice(1)}let t=document.getElementById(e);if(t){t.scrollIntoView({behavior:a});return}}f(0)},h=!1,g=!1,_=e=>{try{return Ee(e)}catch{return g||(g=!0,console.error(`[real-router] scroll-restore: route "${e.name}" has params that cannot be canonicalized (e.g. BigInt or cyclic structure). Scroll position will not be captured or restored for this route.`)),null}},v=e.subscribe(({route:e,previousRoute:t})=>{let r=e.context.navigation;if(t){let e=_(t);e!==null&&l(e,d())}requestAnimationFrame(()=>{if(!h){if(n===`top`){m(e);return}if(e.transition.reload||r?.navigationType===`reload`){let t=_(e);p(t===null?0:c()[t]??0);return}if(r?.direction===`back`||r?.navigationType===`traverse`){let t=_(e);p(t===null?0:c()[t]??0);return}e.transition.replace||r?.navigationType===`replace`||m(e)}})}),y=()=>{let t=e.getState();if(t){let e=_(t);e!==null&&l(e,d())}};return globalThis.addEventListener(`pagehide`,y),{destroy:()=>{if(!h){h=!0,v(),globalThis.removeEventListener(`pagehide`,y);try{history.scrollRestoration=u}catch{}}}}}const z=new WeakMap;function Ee(e){let t=z.get(e);if(t!==void 0)return t;let n=`${e.name}:${De(e.params)}`;return z.set(e,n),n}function De(e){return JSON.stringify(e,Oe)}function Oe(e,t){if(typeof t==`function`)return`<fn>`;if(typeof t==`symbol`)return`<sym>`;if(typeof t==`object`&&t&&!Array.isArray(t)){let e=Object.create(null),n=Object.keys(t).sort((e,t)=>e.localeCompare(t));for(let r of n)e[r]=t[r];return e}return t}const B=Object.freeze({destroy:()=>{}}),V=e=>e.context?.url,ke=e=>{let t=null,n=1/0,r=null,i=-1/0;for(let a of e){if(!a.isIntersecting)continue;let e=a.rootBounds?.top??0,o=a.boundingClientRect.top-e;o>=0?o<n&&(t=a,n=o):o>i&&(r=a,i=o)}return t??r},Ae=(e,t)=>{let n=null,r=e=>{let n=e.context;n&&n.url===void 0&&(console.warn(`[real-router] scroll-spy: state.context.url is not claimed. Spy requires browser-plugin or navigation-plugin. Disabling.`),t())},i=e.getState();if(i)r(i);else{let t=!1;n=e.subscribe(({route:e})=>{t||(t=!0,r(e),n?.(),n=null)})}return{destroy(){n?.(),n=null}}},je=e=>{let t=!1,n=null,r=null,i=null,a=()=>{n!==null&&(clearTimeout(n),n=null),i&&(r??globalThis).removeEventListener(`scrollend`,i),i=null,r=null,t=!1};return{get active(){return t},start(){a(),t=!0;let o=()=>{a()};i=o,r=e(),(r??globalThis).addEventListener(`scrollend`,o,{once:!0}),n=setTimeout(o,500)},destroy(){a()}}},Me=(e,t)=>{let n=null,r=null;return{schedule(){n===null&&(n=requestAnimationFrame(()=>{n=null,r!==null&&clearTimeout(r),r=setTimeout(()=>{r=null,e()},t)}))},destroy(){n!==null&&(cancelAnimationFrame(n),n=null),r!==null&&(clearTimeout(r),r=null)}}},Ne=(e,t,n,r,i,a)=>{let o=new Set,s=new Map,c=!1,l=null,u=new IntersectionObserver(e=>{if(!a()){for(let t of e)s.set(t.target,t);r()}},{root:n(),rootMargin:t,threshold:0}),d=()=>{let t=n()??document,r;try{r=t.querySelectorAll(e)}catch{i();return}let a=new Set;for(let e of r){let t=e.id;t&&!c&&(a.has(t)&&(c=!0,console.warn(`[real-router] scroll-spy: duplicate id "${t}" observed. Selection picks the topmost visible match deterministically.`)),a.add(t)),!o.has(e)&&(u.observe(e),o.add(e))}},f=()=>{for(let e of o)e.isConnected||(u.unobserve(e),o.delete(e),s.delete(e));d()};d();let p=n()??document.body,m=new MutationObserver(()=>{l!==null&&clearTimeout(l),l=setTimeout(()=>{l=null,f()},250)});return m.observe(p,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`id`]}),{pending:s,destroy(){u.disconnect(),m.disconnect(),l!==null&&(clearTimeout(l),l=null),o.clear(),s.clear()}}};function H(e,t){if(typeof document>`u`||typeof IntersectionObserver>`u`)return B;let{selector:n}=t;if(!n)return B;let r=t.rootMargin??`-20% 0px -60% 0px`,i=t.scrollContainer,a=()=>i?.()??null,o=!1,s=!1,c=!1,l=()=>s||o,u=null,d=b(e),f=Ae(e,()=>{s=!0}),p=je(a),m=Me(()=>{u?.()},150),h=Ne(n,r,a,()=>{m.schedule()},()=>{s||(s=!0,console.warn(`[real-router] scroll-spy: invalid selector "${n}". Disabling.`))},l);u=()=>{if(o||s){h.pending.clear();return}if(d.getSnapshot().isTransitioning||p.active||h.pending.size===0)return;let t=ke(h.pending.values());if(h.pending.clear(),!t)return;let n=t.target.id;if(!n)return;let r=e.getState();if(!r||n===(V(r)?.hash??``))return;let i={hash:n,replace:!0,force:!0,hashChange:!0};c=!0,e.navigate(r.name,r.params,i).catch(()=>{}).finally(()=>{c=!1})};let g=e.subscribe(({route:e})=>{c||V(e)?.hashChanged&&p.start()});return{destroy(){o||(o=!0,g(),h.destroy(),m.destroy(),p.destroy(),f.destroy())}}}const Pe=Object.freeze({destroy:()=>{}});function Fe(e){if(typeof document>`u`||typeof document.startViewTransition!=`function`)return Pe;let t=null,n=null,r=!1,i=()=>{t?.(),t=null},a=e.subscribeLeave(({signal:e})=>{if(!e.aborted)return r=!1,i(),new Promise(a=>{let o=new Promise(e=>{t=e});e.addEventListener(`abort`,()=>{r||(i(),n?.skipTransition?.(),a())},{once:!0});try{n=document.startViewTransition(()=>(a(),o))}catch{i(),a()}})}),o=e.subscribe(()=>{let e=t;r=!0,t=null,e===null?n=null:setTimeout(()=>{e(),n=null},0)});return{destroy:()=>{a(),o(),n?.skipTransition?.(),n=null,i()}}}function U(e){return e.button===0&&!e.metaKey&&!e.altKey&&!e.ctrlKey&&!e.shiftKey}const Ie=/%[\dA-Fa-f]{2}/;function Le(e){if(Ie.test(e))try{return encodeURI(decodeURIComponent(e)).replaceAll(`#`,`%23`)}catch{}return encodeURI(e).replaceAll(`#`,`%23`)}function Re(e,t,n,r){try{let i=r?.hash,a;i!==void 0&&(a=i.startsWith(`#`)?i.slice(1):i);let o=e.buildUrl;if(o){let e=o(t,n,a===void 0?void 0:{hash:a});if(typeof e==`string`&&e.length>0)return e}let s=e.buildPath(t,n);if(typeof s!=`string`||s.length===0){console.error(`[real-router] Route "${t}" yielded an empty path. The element will render without an href attribute.`);return}return a?`${s}#${Le(a)}`:s}catch{console.error(`[real-router] Route "${t}" is not defined. The element will render without an href attribute.`);return}}function ze(e,t,n,r,i){let a={...i};r!==void 0&&(a.hash=r);let o=e.getState();if(o?.name===t&&Ue(o.params,n)){let e=o.context?.url?.hash??``;e!==(r??e)&&(a.force=!0,a.hashChange=!0)}return e.navigate(t,n,a)}const Be=/\s/,Ve=/\S+/g;function W(e){return e?Be.test(e)?e.match(Ve)??[]:[e]:[]}function He(e,t,n){if(e&&t){let e=W(t);if(e.length===0)return n??void 0;if(!n)return e.join(` `);let r=W(n),i=new Set(r);for(let t of e)i.has(t)||(i.add(t),r.push(t));return r.join(` `)}return n??void 0}function Ue(e,t){if(Object.is(e,t))return!0;if(!e||!t)return!1;let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;let r=e,i=t;for(let e of n)if(!Object.prototype.hasOwnProperty.call(t,e)||!Object.is(r[e],i[e]))return!1;return!0}function We(e){if(!e)return;let t=e.tagName;t===`A`||t===`BUTTON`||(e.hasAttribute(`role`)||e.setAttribute(`role`,`link`),e.hasAttribute(`tabindex`)||e.setAttribute(`tabindex`,`0`))}function Ge(e,t){if(typeof e==`function`){e(t);return}if(Array.isArray(e)){let n=e;for(let e of n)if(typeof e==`function`&&(e(t),t.defaultPrevented))return}}const Ke=c({name:`Link`,inheritAttrs:!1,props:{routeName:{type:String,required:!0},routeParams:{type:Object,default:()=>I},routeOptions:{type:Object,default:()=>ve},class:{type:String,default:void 0},activeClassName:{type:String,default:`active`},activeStrict:{type:Boolean,default:!1},ignoreQueryParams:{type:Boolean,default:!0},target:{type:String,default:void 0},hash:{type:String,default:void 0}},setup(e,{slots:t,attrs:n}){let r=k(),i=h(!1);g(()=>[e.routeName,te(e.routeParams),e.activeStrict,e.ignoreQueryParams,e.hash],([t,n,a,o,s],c,l)=>{let u=e.routeParams,d=ne(r,t,u,s===void 0?{strict:a,ignoreQueryParams:o}:{strict:a,ignoreQueryParams:o,hash:s});i.value=d.getSnapshot(),l(d.subscribe(()=>{i.value=d.getSnapshot()}))},{immediate:!0,flush:`sync`});let a=s(()=>Re(r,e.routeName,e.routeParams,e.hash===void 0?void 0:{hash:e.hash})),o=s(()=>He(i.value,e.activeClassName,e.class)),c=t=>{n.onClick!==void 0&&n.onClick!==null&&(Ge(n.onClick,t),t.defaultPrevented)||!U(t)||e.target===`_blank`||(t.preventDefault(),ze(r,e.routeName,e.routeParams,e.hash,e.routeOptions).catch(()=>{}))};return()=>{let r={...n};return delete r.onClick,l(`a`,{...r,href:a.value,class:o.value,target:e.target,onClick:c},t.default?.())}}}),qe=c({name:`RouterErrorBoundary`,props:{fallback:{type:Function,required:!0},onError:{type:Function,default:void 0}},setup(e,{slots:t}){let n=O(re(k()));return g(()=>n.value.version,()=>{n.value.error&&e.onError?.(n.value.error,n.value.toRoute,n.value.fromRoute)},{immediate:!0}),()=>{let r=t.default?.()??[],a=n.value.error?e.fallback(n.value.error,n.value.resetError):null;return l(i,null,[...r,a])}}}),G=[];function K(e){return G.push(e),()=>{let t=G.lastIndexOf(e);t!==-1&&G.splice(t,1)}}function q(){let e=G.at(-1);if(!e)throw Error(`v-link directive requires a RouterProvider ancestor. Make sure RouterProvider is mounted.`);return e}const J=new WeakMap;function Y(e){return e==null?(console.error(`[real-router] v-link directive received null/undefined value. The element will not be wired for navigation.`),!1):typeof e.name==`string`?!0:(console.error("[real-router] v-link directive value is missing a string `name` field. The element will not be wired for navigation."),!1)}function Je(e,t){return n=>{U(n)&&(n.preventDefault(),e.navigate(t.name,t.params??{},t.options??{}).catch(()=>{}))}}function Ye(e,t,n){return r=>{r.key===`Enter`&&!(n instanceof HTMLButtonElement)&&e.navigate(t.name,t.params??{},t.options??{}).catch(()=>{})}}function X(e,t,n){let r=Je(t,n),i=Ye(t,n,e);e.addEventListener(`click`,r),e.addEventListener(`keydown`,i),J.set(e,{click:r,keydown:i})}function Z(e){let t=J.get(e);t&&(e.removeEventListener(`click`,t.click),e.removeEventListener(`keydown`,t.keydown),J.delete(e))}const Xe={mounted(e,t){let n=q();We(e),e.style.cursor=`pointer`,Y(t.value)&&X(e,n,t.value)},updated(e,t){if(t.value===t.oldValue)return;let n=q();Z(e),Y(t.value)&&X(e,n,t.value)},beforeUnmount(e){Z(e)}},Ze=()=>{let e=u(n);if(!e)throw Error(`useNavigator must be used within a RouterProvider`);return e},Qe=()=>y(oe(k()).getTree());function $e(){return O(b(k()))}function et(e,t){let n=k(),r=t?.skipSameRoute??!0;p(n.subscribeLeave(({route:t,nextRoute:n,signal:i})=>{if(!(r&&t.name===n.name)&&!i.aborted)return e({route:t,nextRoute:n,signal:i})}))}function tt(e,t){let{route:n,previousRoute:i}=r(),a=t?.skipSameRoute??!0,o=null;g(n,t=>{let n=i.value;t.transition.from&&(a&&t.transition.from===t.name||o===t||!n||(o=t,e({route:t,previousRoute:n})))})}function Q(e){let t=v(e),n=ae(e),r=n.getSnapshot(),i=h(r.route),a=h(r.previousRoute);return{navigator:t,route:i,previousRoute:a,unsubscribe:n.subscribe(()=>{let e=n.getSnapshot();i.value=e.route,a.value=e.previousRoute})}}function nt(r){return{install(i){let a=K(r),{navigator:o,route:s,previousRoute:c,unsubscribe:l}=Q(r);`onUnmount`in i&&i.onUnmount(()=>{a(),l()}),i.provide(e,r),i.provide(n,o),i.provide(t,{navigator:o,route:s,previousRoute:c})}}}function $(e,t){g(e,(e,n,r)=>{let i=t(e);i&&r(()=>{i.destroy()})},{immediate:!0})}const rt=c({name:`RouterProvider`,props:{router:{type:Object,required:!0},announceNavigation:{type:Boolean,default:!1},scrollRestoration:{type:Object},scrollSpy:{type:Object},viewTransitions:{type:Boolean,default:!1}},setup(r,{slots:i}){$(()=>[r.router,r.announceNavigation],([e,t])=>t?be(e):void 0),$(()=>[r.router,r.scrollRestoration!==void 0,r.scrollRestoration?.mode,r.scrollRestoration?.anchorScrolling,r.scrollRestoration?.behavior,r.scrollRestoration?.storageKey],([e,t,n,i,a,o])=>{if(t)return Te(e,{mode:n,anchorScrolling:i,behavior:a,storageKey:o,scrollContainer:r.scrollRestoration?.scrollContainer})}),$(()=>[r.router,r.scrollSpy!==void 0&&r.scrollSpy.selector!==``,r.scrollSpy?.selector,r.scrollSpy?.rootMargin],([e,t,n,i])=>{if(!(!t||!n))return H(e,{selector:n,rootMargin:i,scrollContainer:r.scrollSpy?.scrollContainer})}),$(()=>[r.router,r.viewTransitions],([e,t])=>t?Fe(e):void 0);let a=K(r.router),{navigator:o,route:s,previousRoute:c,unsubscribe:l}=Q(r.router);return p(()=>{a(),l()}),m(e,r.router),m(n,o),m(t,{navigator:o,route:s,previousRoute:c}),()=>i.default?.()}});export{Ke as Link,n as NavigatorKey,t as RouteKey,F as RouteView,qe as RouterErrorBoundary,e as RouterKey,rt as RouterProvider,nt as createRouterPlugin,Ze as useNavigator,r as useRoute,tt as useRouteEnter,et as useRouteExit,A as useRouteNode,Qe as useRouteUtils,k as useRouter,$e as useRouterTransition,Xe as vLink};
1
+ import{a as e,i as t,r as n,t as r}from"./useRoute-BBfRYSpV.mjs";import{Fragment as i,KeepAlive as a,Suspense as o,computed as s,defineComponent as c,h as l,inject as u,isVNode as d,markRaw as f,onScopeDispose as p,provide as m,shallowRef as h,watch as g}from"vue";import{UNKNOWN_ROUTE as _,getNavigator as v}from"@real-router/core";import{getRouteUtils as y,startsWithSegment as ee}from"@real-router/route-utils";import{canonicalJson as te,createActiveRouteSource as ne,createDismissableError as re,createRouteNodeSource as ie,createRouteSource as ae,getTransitionSource as b}from"@real-router/sources";import{getPluginApi as oe}from"@real-router/core/api";function x(){return null}const S=c({name:`RouteView.Match`,props:{segment:{type:String,required:!0},exact:{type:Boolean,default:!1},fallback:{type:[Object,Function],default:void 0},keepAlive:{type:Boolean,default:!1}},render:x}),C=c({name:`RouteView.Self`,props:{fallback:{type:[Object,Function],default:void 0}},render:x}),w=c({name:`RouteView.NotFound`,render:x}),se=new Set([S,C,w]),ce=new Set([!0,``,`keep-alive`]);function le(e,t,n){return n?e===t:ee(e,t)}function T(e){return ce.has(e)}function E(e){if(Array.isArray(e)){let t=[];for(let n of e)Array.isArray(n)?t.push(...E(n)):d(n)&&t.push(n);return t}return d(e)?[e]:[]}function D(e,t){let n=E(e);for(let e of n)se.has(e.type)?t.push(e):e.type===i&&D(e.children,t)}function ue(e,t){return e.type===w?(t.notFoundChildren=e.children,!0):e.type===C?(t.selfVNode===null&&(t.selfVNode=e,t.selfFallback=e.props?.fallback),!0):!1}function de(e,t,n){let r=e.props,i=r?.segment??``,a=r?.exact??!1;return{isActive:le(t,n?`${n}.${i}`:i,a),fallback:r?.fallback}}function fe(e,t,n,r,i){if(r.selfVNode!==null&&t===n)return e.push(r.selfVNode),r.selfFallback;if(t===_&&r.notFoundChildren!==null){let t=i.filter(e=>e.type===w).at(-1);t&&e.push(t)}}function pe(e,t,n){let r={selfVNode:null,selfFallback:void 0,notFoundChildren:null},i=!1,a,o=!1,s=[];for(let c of e){if(!o&&c.type===S){let e=c.props;T(e?.keepAlive)&&(o=!0)}if(ue(c,r)||i)continue;let e=de(c,t,n);e.isActive&&(i=!0,a=e.fallback,s.push(c))}return i||(a=fe(s,t,n,r,e)),{rendered:s,activeMatchFound:i,fallback:a,hasPerMatchKA:o}}function O(e){let t=h(e.getSnapshot());return p(e.subscribe(()=>{t.value=e.getSnapshot()})),t}const k=()=>{let t=u(e);if(!t)throw Error(`useRouter must be used within a RouterProvider`);return t};function A(e){let t=k(),n=O(ie(t,e));return{navigator:v(t),route:s(()=>n.value.route),previousRoute:s(()=>n.value.previousRoute)}}function j(e){return e.children?.default?.()??null}function M(e,t){let n=e.get(t);if(n)return n;let r=f(c({name:`KeepAlive-${t}`,setup(e,t){return()=>t.slots.default?.()}}));return e.set(t,r),r}function N(e,t){if(t===void 0)return e;let n=typeof t==`function`?t():t;return l(o,{},{default:()=>e,fallback:()=>n})}let P=null;function me(){return P??=f(c({name:`KeepAlive-placeholder`,render(){return null}})),P}function he(e,t,n){let r=e.props?.segment??`__not-found__`,i=M(t,r),o=j(e)??[];return N(l(a,null,{default:()=>l(i,{key:r},{default:()=>o})}),n)}function ge(e,t,n){let r=e.props;if(T(r?.keepAlive)&&e.type===S){let n=r?.segment??`__not-found__`,o=M(t,n),s=j(e)??[];return l(i,[l(a,null,{default:()=>l(o,{key:n},{default:()=>s})})])}let o=j(e);return o?l(i,[l(a,null,{default:()=>l(me())}),N(l(i,o),n)]):null}const _e=c({name:`RouteView`,props:{nodeName:{type:String,required:!0},keepAlive:{type:Boolean,default:!1}},setup(e,{slots:t}){let n=A(e.nodeName),r=new Map;return()=>{let a=n.route.value;if(!a)return null;let o=t.default?.(),s=[];D(o,s);let{rendered:c,fallback:u,hasPerMatchKA:d}=pe(s,a.name,e.nodeName);if(c.length===0)return null;let f=c[0];if(e.keepAlive)return he(f,r,u);if(f.type!==S&&f.type!==C&&f.type!==w)return null;if(d)return ge(f,r,u);let p=j(f);return p?N(l(i,p),u):null}}}),F=Object.assign(_e,{Match:S,Self:C,NotFound:w}),I=Object.freeze({}),ve=Object.freeze({}),L=`data-real-router-announcer`,ye=Object.freeze({destroy:()=>{}});function be(e,t){if(typeof document>`u`)return ye;let n=t?.prefix??`Navigated to `,r=t?.getAnnouncementText,i=!0,a=!1,o=!1,s=``,c=null,l,u=xe(),d=(e,t)=>{s=e,clearTimeout(l),u.textContent=e,l=setTimeout(()=>{u.textContent=``,s=``},7e3),we(t)},f=setTimeout(()=>{if(a=!0,c!==null&&!o){let e=c;c=null,d(e,document.querySelector(`h1`))}},100),p=e.subscribe(({route:e})=>{if(i){i=!1;return}requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(o)return;let t=document.querySelector(`h1`),i=Ce(e,n,r,t);if(!(!i||i===s)){if(!a){c=i;return}d(i,t)}})})});return{destroy(){o=!0,p(),clearTimeout(l),clearTimeout(f),Se()}}}function xe(){let e=document.querySelector(`[${L}]`);if(e)return e;let t=document.createElement(`div`);return t.setAttribute(`style`,`position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0`),t.setAttribute(`aria-live`,`assertive`),t.setAttribute(`aria-atomic`,`true`),t.setAttribute(L,``),(document.body??document.documentElement).prepend(t),t}function Se(){document.querySelector(`[${L}]`)?.remove()}function Ce(e,t,n,r){if(n)try{let t=n(e);if(t)return t}catch(e){console.error(`[real-router] getAnnouncementText threw; falling back to default resolution.`,e)}let i=(r?.textContent??``).trim(),a=e.name.startsWith(`@@`)?``:e.name;return`${t}${i||document.title||a||globalThis.location.pathname}`}function we(e){e&&(e.hasAttribute(`tabindex`)||e.setAttribute(`tabindex`,`-1`),e.focus({preventScroll:!0}))}const R=Object.freeze({destroy:()=>{}});function Te(e,t){if(globalThis.window===void 0)return R;let n=t?.mode??`restore`;if(n===`native`)return R;let r=t?.anchorScrolling??!0,i=t?.scrollContainer,a=t?.behavior??`auto`,o=t?.storageKey??`real-router:scroll`,s,c=()=>{if(s!==void 0)return s;try{let e=sessionStorage.getItem(o);s=e?JSON.parse(e):{}}catch{s={}}return s},l=(e,t)=>{try{let n=c();if(n[e]===t)return;n[e]=t,sessionStorage.setItem(o,JSON.stringify(n))}catch{}},u=history.scrollRestoration;try{history.scrollRestoration=`manual`}catch{}let d=()=>{let e=i?.();return e?e.scrollTop:globalThis.scrollY},f=e=>{let t=i?.();t?t.scrollTo({top:e,left:0,behavior:a}):globalThis.scrollTo({top:e,left:0,behavior:a})},p=e=>{if(!i){globalThis.scrollTo({top:e,left:0,behavior:a});return}let t=0,n=()=>{if(h)return;let r=i();if(r){if(r.scrollTo({top:e,left:0,behavior:a}),a!==`smooth`&&Math.abs(r.scrollTop-e)<=1)return}else globalThis.scrollTo({top:e,left:0,behavior:a});t>=10||(t+=1,requestAnimationFrame(n))};n()},m=e=>{let t=e.context?.url?.hash;if(t!==void 0){if(r&&t.length>0){let e=document.getElementById(t);if(e){e.scrollIntoView({behavior:a});return}}f(0);return}let n=globalThis.location.hash;if(r&&n.length>1){let e;try{e=decodeURIComponent(n.slice(1))}catch{e=n.slice(1)}let t=document.getElementById(e);if(t){t.scrollIntoView({behavior:a});return}}f(0)},h=!1,g=!1,_=e=>{try{return Ee(e)}catch{return g||(g=!0,console.error(`[real-router] scroll-restore: route "${e.name}" has params that cannot be canonicalized (e.g. BigInt or cyclic structure). Scroll position will not be captured or restored for this route.`)),null}},v=e.subscribe(({route:e,previousRoute:t})=>{let r=e.context.navigation;if(t){let e=_(t);e!==null&&l(e,d())}requestAnimationFrame(()=>{if(!h){if(n===`top`){m(e);return}if(e.transition.reload||r?.navigationType===`reload`){let t=_(e);p(t===null?0:c()[t]??0);return}if(r?.direction===`back`||r?.navigationType===`traverse`){let t=_(e);p(t===null?0:c()[t]??0);return}e.transition.replace||r?.navigationType===`replace`||m(e)}})}),y=()=>{let t=e.getState();if(t){let e=_(t);e!==null&&l(e,d())}};return globalThis.addEventListener(`pagehide`,y),{destroy:()=>{if(!h){h=!0,v(),globalThis.removeEventListener(`pagehide`,y);try{history.scrollRestoration=u}catch{}}}}}const z=new WeakMap;function Ee(e){let t=z.get(e);if(t!==void 0)return t;let n=`${e.name}:${De(e.params)}`;return z.set(e,n),n}function De(e){return JSON.stringify(e,Oe)}function Oe(e,t){if(typeof t==`function`)return`<fn>`;if(typeof t==`symbol`)return`<sym>`;if(typeof t==`object`&&t&&!Array.isArray(t)){let e=Object.create(null),n=Object.keys(t).sort((e,t)=>e.localeCompare(t));for(let r of n)e[r]=t[r];return e}return t}const B=Object.freeze({destroy:()=>{}}),V=e=>e.context?.url,ke=e=>{let t=null,n=1/0,r=null,i=-1/0;for(let a of e){if(!a.isIntersecting)continue;let e=a.rootBounds?.top??0,o=a.boundingClientRect.top-e;o>=0?o<n&&(t=a,n=o):o>i&&(r=a,i=o)}return t??r},Ae=(e,t)=>{let n=null,r=e=>{let n=e.context;n&&n.url===void 0&&(console.warn(`[real-router] scroll-spy: state.context.url is not claimed. Spy requires browser-plugin or navigation-plugin. Disabling.`),t())},i=e.getState();if(i)r(i);else{let t=!1;n=e.subscribe(({route:e})=>{t||(t=!0,r(e),n?.(),n=null)})}return{destroy(){n?.(),n=null}}},je=e=>{let t=!1,n=null,r=null,i=null,a=()=>{n!==null&&(clearTimeout(n),n=null),i&&(r??globalThis).removeEventListener(`scrollend`,i),i=null,r=null,t=!1};return{get active(){return t},start(){a(),t=!0;let o=()=>{a()};i=o,r=e(),(r??globalThis).addEventListener(`scrollend`,o,{once:!0}),n=setTimeout(o,500)},destroy(){a()}}},Me=(e,t)=>{let n=null,r=null;return{schedule(){n===null&&(n=requestAnimationFrame(()=>{n=null,r!==null&&clearTimeout(r),r=setTimeout(()=>{r=null,e()},t)}))},destroy(){n!==null&&(cancelAnimationFrame(n),n=null),r!==null&&(clearTimeout(r),r=null)}}},Ne=(e,t,n,r,i,a)=>{let o=new Set,s=new Map,c=!1,l=null,u=new IntersectionObserver(e=>{if(!a()){for(let t of e)s.set(t.target,t);r()}},{root:n(),rootMargin:t,threshold:0}),d=()=>{let t=n()??document,r;try{r=t.querySelectorAll(e)}catch{i();return}let a=new Set;for(let e of r){let t=e.id;t&&!c&&(a.has(t)&&(c=!0,console.warn(`[real-router] scroll-spy: duplicate id "${t}" observed. Selection picks the topmost visible match deterministically.`)),a.add(t)),!o.has(e)&&(u.observe(e),o.add(e))}},f=()=>{for(let e of o)e.isConnected||(u.unobserve(e),o.delete(e),s.delete(e));d()};d();let p=n()??document.body,m=new MutationObserver(()=>{l!==null&&clearTimeout(l),l=setTimeout(()=>{l=null,f()},250)});return m.observe(p,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`id`]}),{pending:s,destroy(){u.disconnect(),m.disconnect(),l!==null&&(clearTimeout(l),l=null),o.clear(),s.clear()}}};function H(e,t){if(typeof document>`u`||typeof IntersectionObserver>`u`)return B;let{selector:n}=t;if(!n)return B;let r=t.rootMargin??`-20% 0px -60% 0px`,i=t.scrollContainer,a=()=>i?.()??null,o=!1,s=!1,c=!1,l=()=>s||o,u=null,d=b(e),f=Ae(e,()=>{s=!0}),p=je(a),m=Me(()=>{u?.()},150),h=Ne(n,r,a,()=>{m.schedule()},()=>{s||(s=!0,console.warn(`[real-router] scroll-spy: invalid selector "${n}". Disabling.`))},l);u=()=>{if(o||s){h.pending.clear();return}if(d.getSnapshot().isTransitioning||p.active||h.pending.size===0)return;let t=ke(h.pending.values());if(h.pending.clear(),!t)return;let n=t.target.id;if(!n)return;let r=e.getState();if(!r||n===(V(r)?.hash??``))return;let i={hash:n,replace:!0,force:!0,hashChange:!0};c=!0,e.navigate(r.name,r.params,i).catch(()=>{}).finally(()=>{c=!1})};let g=e.subscribe(({route:e})=>{c||V(e)?.hashChanged&&p.start()});return{destroy(){o||(o=!0,g(),h.destroy(),m.destroy(),p.destroy(),f.destroy())}}}const Pe=Object.freeze({destroy:()=>{}});function Fe(e){if(typeof document>`u`||typeof document.startViewTransition!=`function`)return Pe;let t=null,n=null,r=!1,i=()=>{t?.(),t=null},a=e.subscribeLeave(({signal:e})=>{if(!e.aborted)return r=!1,i(),new Promise(a=>{let o=new Promise(e=>{t=e});e.addEventListener(`abort`,()=>{r||(i(),n?.skipTransition?.(),a())},{once:!0});try{n=document.startViewTransition(()=>(a(),o))}catch{i(),a()}})}),o=e.subscribe(()=>{let e=t;r=!0,t=null,e===null?n=null:setTimeout(()=>{e(),n=null},0)});return{destroy:()=>{a(),o(),n?.skipTransition?.(),n=null,i()}}}function U(e){return e.button===0&&!e.metaKey&&!e.altKey&&!e.ctrlKey&&!e.shiftKey}const Ie=/%[\dA-Fa-f]{2}/;function Le(e){if(Ie.test(e))try{return encodeURI(decodeURIComponent(e)).replaceAll(`#`,`%23`)}catch{}return encodeURI(e).replaceAll(`#`,`%23`)}function Re(e,t,n,r){try{let i=r?.hash,a;i!==void 0&&(a=i.startsWith(`#`)?i.slice(1):i);let o=e.buildUrl;if(o){let e=o(t,n,a===void 0?void 0:{hash:a});if(typeof e==`string`&&e.length>0)return e}let s=e.buildPath(t,n);if(typeof s!=`string`||s.length===0){console.error(`[real-router] Route "${t}" yielded an empty path. The element will render without an href attribute.`);return}return a?`${s}#${Le(a)}`:s}catch{console.error(`[real-router] Route "${t}" is not defined. The element will render without an href attribute.`);return}}function ze(e,t,n,r,i){let a={...i};r!==void 0&&(a.hash=r);let o=e.getState();if(o?.name===t&&Ue(o.params,n)){let e=o.context?.url?.hash??``;e!==(r??e)&&(a.force=!0,a.hashChange=!0)}return e.navigate(t,n,a)}const Be=/\s/,Ve=/\S+/g;function W(e){return Be.test(e)?e.match(Ve)??[]:[e]}function He(e,t,n){if(e&&t){let e=W(t);if(e.length===0)return n??void 0;if(!n)return e.join(` `);let r=W(n),i=new Set(r);for(let t of e)i.has(t)||(i.add(t),r.push(t));return r.join(` `)}return n??void 0}function Ue(e,t){if(Object.is(e,t))return!0;if(!e||!t)return!1;let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;let r=e,i=t;for(let e of n)if(!Object.prototype.hasOwnProperty.call(t,e)||!Object.is(r[e],i[e]))return!1;return!0}function We(e){if(!e)return;let t=e.tagName;t===`A`||t===`BUTTON`||(e.hasAttribute(`role`)||e.setAttribute(`role`,`link`),e.hasAttribute(`tabindex`)||e.setAttribute(`tabindex`,`0`))}function Ge(e,t){if(typeof e==`function`){e(t);return}if(Array.isArray(e)){let n=e;for(let e of n)if(typeof e==`function`&&(e(t),t.defaultPrevented))return}}const Ke=c({name:`Link`,inheritAttrs:!1,props:{routeName:{type:String,required:!0},routeParams:{type:Object,default:()=>I},routeOptions:{type:Object,default:()=>ve},class:{type:String,default:void 0},activeClassName:{type:String,default:`active`},activeStrict:{type:Boolean,default:!1},ignoreQueryParams:{type:Boolean,default:!0},target:{type:String,default:void 0},hash:{type:String,default:void 0}},setup(e,{slots:t,attrs:n}){let r=k(),i=h(!1);g(()=>[e.routeName,te(e.routeParams),e.activeStrict,e.ignoreQueryParams,e.hash],([t,n,a,o,s],c,l)=>{let u=e.routeParams,d=ne(r,t,u,s===void 0?{strict:a,ignoreQueryParams:o}:{strict:a,ignoreQueryParams:o,hash:s});i.value=d.getSnapshot(),l(d.subscribe(()=>{i.value=d.getSnapshot()}))},{immediate:!0,flush:`sync`});let a=s(()=>Re(r,e.routeName,e.routeParams,e.hash===void 0?void 0:{hash:e.hash})),o=s(()=>He(i.value,e.activeClassName,e.class)),c=t=>{n.onClick!==void 0&&n.onClick!==null&&(Ge(n.onClick,t),t.defaultPrevented)||!U(t)||e.target===`_blank`||(t.preventDefault(),ze(r,e.routeName,e.routeParams,e.hash,e.routeOptions).catch(()=>{}))};return()=>{let r={...n};return delete r.onClick,l(`a`,{...r,href:a.value,class:o.value,target:e.target,onClick:c},t.default?.())}}}),qe=c({name:`RouterErrorBoundary`,props:{fallback:{type:Function,required:!0},onError:{type:Function,default:void 0}},setup(e,{slots:t}){let n=O(re(k()));return g(()=>n.value.version,()=>{n.value.error&&e.onError?.(n.value.error,n.value.toRoute,n.value.fromRoute)},{immediate:!0}),()=>{let r=t.default?.()??[],a=n.value.error?e.fallback(n.value.error,n.value.resetError):null;return l(i,null,[...r,a])}}}),G=[];function K(e){return G.push(e),()=>{let t=G.lastIndexOf(e);t!==-1&&G.splice(t,1)}}function q(){let e=G.at(-1);if(!e)throw Error(`v-link directive requires a RouterProvider ancestor. Make sure RouterProvider is mounted.`);return e}const J=new WeakMap;function Y(e){return e==null?(console.error(`[real-router] v-link directive received null/undefined value. The element will not be wired for navigation.`),!1):typeof e.name==`string`?!0:(console.error("[real-router] v-link directive value is missing a string `name` field. The element will not be wired for navigation."),!1)}function Je(e,t){return n=>{U(n)&&(n.preventDefault(),e.navigate(t.name,t.params??{},t.options??{}).catch(()=>{}))}}function Ye(e,t,n){return r=>{r.key===`Enter`&&!(n instanceof HTMLButtonElement)&&e.navigate(t.name,t.params??{},t.options??{}).catch(()=>{})}}function X(e,t,n){let r=Je(t,n),i=Ye(t,n,e);e.addEventListener(`click`,r),e.addEventListener(`keydown`,i),J.set(e,{click:r,keydown:i})}function Z(e){let t=J.get(e);t&&(e.removeEventListener(`click`,t.click),e.removeEventListener(`keydown`,t.keydown),J.delete(e))}const Xe={mounted(e,t){let n=q();We(e),e.style.cursor=`pointer`,Y(t.value)&&X(e,n,t.value)},updated(e,t){if(t.value===t.oldValue)return;let n=q();Z(e),Y(t.value)&&X(e,n,t.value)},beforeUnmount(e){Z(e)}},Ze=()=>{let e=u(n);if(!e)throw Error(`useNavigator must be used within a RouterProvider`);return e},Qe=()=>y(oe(k()).getTree());function $e(){return O(b(k()))}function et(e,t){let n=k(),r=t?.skipSameRoute??!0;p(n.subscribeLeave(({route:t,nextRoute:n,signal:i})=>{if(!(r&&t.name===n.name)&&!i.aborted)return e({route:t,nextRoute:n,signal:i})}))}function tt(e,t){let{route:n,previousRoute:i}=r(),a=t?.skipSameRoute??!0,o=null;g(n,t=>{let n=i.value;t.transition.from&&(a&&t.transition.from===t.name||o===t||!n||(o=t,e({route:t,previousRoute:n})))})}function Q(e){let t=v(e),n=ae(e),r=n.getSnapshot(),i=h(r.route),a=h(r.previousRoute);return{navigator:t,route:i,previousRoute:a,unsubscribe:n.subscribe(()=>{let e=n.getSnapshot();i.value=e.route,a.value=e.previousRoute})}}function nt(r){return{install(i){let a=K(r),{navigator:o,route:s,previousRoute:c,unsubscribe:l}=Q(r);`onUnmount`in i&&i.onUnmount(()=>{a(),l()}),i.provide(e,r),i.provide(n,o),i.provide(t,{navigator:o,route:s,previousRoute:c})}}}function $(e,t){g(e,(e,n,r)=>{let i=t(e);i&&r(()=>{i.destroy()})},{immediate:!0})}const rt=c({name:`RouterProvider`,props:{router:{type:Object,required:!0},announceNavigation:{type:Boolean,default:!1},scrollRestoration:{type:Object},scrollSpy:{type:Object},viewTransitions:{type:Boolean,default:!1}},setup(r,{slots:i}){$(()=>[r.router,r.announceNavigation],([e,t])=>t?be(e):void 0),$(()=>[r.router,r.scrollRestoration!==void 0,r.scrollRestoration?.mode,r.scrollRestoration?.anchorScrolling,r.scrollRestoration?.behavior,r.scrollRestoration?.storageKey],([e,t,n,i,a,o])=>{if(t)return Te(e,{mode:n,anchorScrolling:i,behavior:a,storageKey:o,scrollContainer:r.scrollRestoration?.scrollContainer})}),$(()=>[r.router,r.scrollSpy!==void 0&&r.scrollSpy.selector!==``,r.scrollSpy?.selector,r.scrollSpy?.rootMargin],([e,t,n,i])=>{if(!(!t||!n))return H(e,{selector:n,rootMargin:i,scrollContainer:r.scrollSpy?.scrollContainer})}),$(()=>[r.router,r.viewTransitions],([e,t])=>t?Fe(e):void 0);let a=K(r.router),{navigator:o,route:s,previousRoute:c,unsubscribe:l}=Q(r.router);return p(()=>{a(),l()}),m(e,r.router),m(n,o),m(t,{navigator:o,route:s,previousRoute:c}),()=>i.default?.()}});export{Ke as Link,n as NavigatorKey,t as RouteKey,F as RouteView,qe as RouterErrorBoundary,e as RouterKey,rt as RouterProvider,nt as createRouterPlugin,Ze as useNavigator,r as useRoute,tt as useRouteEnter,et as useRouteExit,A as useRouteNode,Qe as useRouteUtils,k as useRouter,$e as useRouterTransition,Xe as vLink};
2
2
  //# sourceMappingURL=index.mjs.map