@kitbag/router 0.20.6 → 0.20.7

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 (203) hide show
  1. package/dist/components/echo.d.ts +6 -0
  2. package/dist/components/helloWorld.d.ts +2 -0
  3. package/dist/components/rejection.d.ts +2 -0
  4. package/dist/components/routerLink.browser.spec.d.ts +1 -0
  5. package/dist/components/routerLink.d.ts +36 -0
  6. package/dist/components/routerView.browser.spec.d.ts +1 -0
  7. package/dist/components/routerView.d.ts +20 -0
  8. package/dist/components/routerView.spec.d.ts +1 -0
  9. package/dist/compositions/useComponentsStore.d.ts +5 -0
  10. package/dist/compositions/useEventListener.d.ts +2 -0
  11. package/dist/compositions/useLink.d.ts +16 -0
  12. package/dist/compositions/usePrefetching.d.ts +14 -0
  13. package/dist/compositions/usePropStore.d.ts +7 -0
  14. package/dist/compositions/useQueryValue.browser.spec.d.ts +1 -0
  15. package/dist/compositions/useQueryValue.d.ts +15 -0
  16. package/dist/compositions/useRejection.d.ts +7 -0
  17. package/dist/compositions/useRoute.browser.spec.d.ts +1 -0
  18. package/dist/compositions/useRoute.d.ts +16 -0
  19. package/dist/compositions/useRouter.d.ts +3 -0
  20. package/dist/compositions/useRouterDepth.d.ts +8 -0
  21. package/dist/compositions/useRouterHooks.d.ts +4 -0
  22. package/dist/compositions/useVisibilityObserver.d.ts +8 -0
  23. package/dist/errors/callbackContextAbortError.d.ts +5 -0
  24. package/dist/errors/callbackContextPushError.d.ts +5 -0
  25. package/dist/errors/callbackContextRejectionError.d.ts +6 -0
  26. package/dist/errors/duplicateNamesError.d.ts +11 -0
  27. package/dist/errors/duplicateParamsError.d.ts +13 -0
  28. package/dist/errors/initialRouteMissingError.d.ts +3 -0
  29. package/dist/errors/invalidRouteParamValueError.d.ts +2 -0
  30. package/dist/errors/metaPropertyConflict.d.ts +8 -0
  31. package/dist/errors/routeNotFoundError.d.ts +6 -0
  32. package/dist/errors/routerNotInstalledError.d.ts +7 -0
  33. package/dist/errors/useRouteInvalidError.d.ts +13 -0
  34. package/dist/guards/routes.d.ts +46 -0
  35. package/dist/guards/routes.spec-d.d.ts +1 -0
  36. package/dist/keys.d.ts +3 -0
  37. package/dist/kitbag-router.d.ts +2 -1433
  38. package/dist/kitbag-router.js +1751 -1675
  39. package/dist/kitbag-router.umd.cjs +3 -3
  40. package/dist/main.d.ts +302 -0
  41. package/dist/models/RouteHooks.d.ts +9 -0
  42. package/dist/models/RouterRouteHooks.d.ts +10 -0
  43. package/dist/services/arrayOf.d.ts +7 -0
  44. package/dist/services/arrayOf.spec.d.ts +1 -0
  45. package/dist/services/combineHash.d.ts +4 -0
  46. package/dist/services/combineHash.spec.d.ts +1 -0
  47. package/dist/services/combineMeta.d.ts +2 -0
  48. package/dist/services/combineMeta.spec.d.ts +1 -0
  49. package/dist/services/combinePath.d.ts +12 -0
  50. package/dist/services/combinePath.spec-d.d.ts +1 -0
  51. package/dist/services/combinePath.spec.d.ts +1 -0
  52. package/dist/services/combineQuery.d.ts +13 -0
  53. package/dist/services/combineQuery.spec.d.ts +1 -0
  54. package/dist/services/combineState.d.ts +3 -0
  55. package/dist/services/combineState.spec.d.ts +1 -0
  56. package/dist/services/component.browser.spec.d.ts +1 -0
  57. package/dist/services/component.d.ts +12 -0
  58. package/dist/services/createCallbackContext.d.ts +38 -0
  59. package/dist/services/createComponentHooks.d.ts +11 -0
  60. package/dist/services/createComponentsStore.d.ts +7 -0
  61. package/dist/services/createCurrentRoute.d.ts +13 -0
  62. package/dist/services/createExternalRoute.d.ts +3 -0
  63. package/dist/services/createExternalRoute.spec.d.ts +1 -0
  64. package/dist/services/createIsExternal.d.ts +1 -0
  65. package/dist/services/createIsExternal.spec.d.ts +1 -0
  66. package/dist/services/createParam.d.ts +6 -0
  67. package/dist/services/createPropStore.d.ts +13 -0
  68. package/dist/services/createResolvedRoute.d.ts +4 -0
  69. package/dist/services/createResolvedRouteForUrl.browser.spec.d.ts +1 -0
  70. package/dist/services/createResolvedRouteForUrl.d.ts +3 -0
  71. package/dist/services/createResolvedRouteQuery.d.ts +5 -0
  72. package/dist/services/createRoute.d.ts +4 -0
  73. package/dist/services/createRoute.spec-d.d.ts +1 -0
  74. package/dist/services/createRoute.spec.d.ts +1 -0
  75. package/dist/services/createRouteId.d.ts +1 -0
  76. package/dist/services/createRouter.browser.spec.d.ts +1 -0
  77. package/dist/services/createRouter.d.ts +28 -0
  78. package/dist/services/createRouter.spec-d.d.ts +1 -0
  79. package/dist/services/createRouter.spec.d.ts +1 -0
  80. package/dist/services/createRouterAssets.d.ts +118 -0
  81. package/dist/services/createRouterHistory.browser.spec.d.ts +1 -0
  82. package/dist/services/createRouterHistory.d.ts +20 -0
  83. package/dist/services/createRouterHooks.d.ts +20 -0
  84. package/dist/services/createRouterKeyStore.d.ts +3 -0
  85. package/dist/services/createRouterPlugin.browser.spec.d.ts +1 -0
  86. package/dist/services/createRouterPlugin.d.ts +4 -0
  87. package/dist/services/createRouterReject.d.ts +16 -0
  88. package/dist/services/createRouterRoute.d.ts +7 -0
  89. package/dist/services/createRouterRoute.spec.d.ts +1 -0
  90. package/dist/services/createUniqueIdSequence.d.ts +2 -0
  91. package/dist/services/createVisibilityObserver.d.ts +7 -0
  92. package/dist/services/createVueAppStore.d.ts +8 -0
  93. package/dist/services/getGlobalHooksForRouter.d.ts +4 -0
  94. package/dist/services/getGlobalRouteHooks.d.ts +5 -0
  95. package/dist/services/getInitialUrl.browser.spec.d.ts +1 -0
  96. package/dist/services/getInitialUrl.d.ts +1 -0
  97. package/dist/services/getInitialUrl.spec.d.ts +1 -0
  98. package/dist/services/getMatchesForUrl.d.ts +2 -0
  99. package/dist/services/getMatchesForUrl.spec.d.ts +1 -0
  100. package/dist/services/getParamsForString.d.ts +2 -0
  101. package/dist/services/getRouteHooks.d.ts +4 -0
  102. package/dist/services/getRouteHooks.spec.d.ts +1 -0
  103. package/dist/services/getRoutesForRouter.d.ts +9 -0
  104. package/dist/services/getRoutesForRouter.spec.d.ts +1 -0
  105. package/dist/services/hooks.browser.spec.d.ts +1 -0
  106. package/dist/services/hooks.d.ts +8 -0
  107. package/dist/services/hooks.spec.d.ts +1 -0
  108. package/dist/services/insertBaseRoute.d.ts +2 -0
  109. package/dist/services/insertBaseRoute.spec.d.ts +1 -0
  110. package/dist/services/paramValidation.d.ts +4 -0
  111. package/dist/services/paramValidation.spec.d.ts +1 -0
  112. package/dist/services/params.d.ts +7 -0
  113. package/dist/services/params.spec.d.ts +1 -0
  114. package/dist/services/paramsFinder.d.ts +3 -0
  115. package/dist/services/paramsFinder.spec.d.ts +1 -0
  116. package/dist/services/routeMatchRules.d.ts +5 -0
  117. package/dist/services/routeMatchRules.spec.d.ts +1 -0
  118. package/dist/services/routeMatchScore.d.ts +7 -0
  119. package/dist/services/routeMatchScore.spec.d.ts +1 -0
  120. package/dist/services/routeRegex.d.ts +18 -0
  121. package/dist/services/routeRegex.spec.d.ts +1 -0
  122. package/dist/services/state.d.ts +9 -0
  123. package/dist/services/state.spec.d.ts +1 -0
  124. package/dist/services/tupleOf.d.ts +10 -0
  125. package/dist/services/tupleOf.spec.d.ts +1 -0
  126. package/dist/services/unionOf.d.ts +3 -0
  127. package/dist/services/unionOf.spec.d.ts +1 -0
  128. package/dist/services/urlAssembly.d.ts +10 -0
  129. package/dist/services/urlAssembly.spec.d.ts +1 -0
  130. package/dist/services/urlCombine.d.ts +2 -0
  131. package/dist/services/urlCombine.spec.d.ts +1 -0
  132. package/dist/services/urlCreator.d.ts +2 -0
  133. package/dist/services/urlCreator.spec.d.ts +1 -0
  134. package/dist/services/urlParser.d.ts +2 -0
  135. package/dist/services/urlParser.spec.d.ts +1 -0
  136. package/dist/services/valibot.d.ts +7 -0
  137. package/dist/services/valibot.spec-d.d.ts +1 -0
  138. package/dist/services/valibot.spec.d.ts +1 -0
  139. package/dist/services/withDefault.d.ts +5 -0
  140. package/dist/services/withParams.d.ts +15 -0
  141. package/dist/services/withParams.spec-d.d.ts +1 -0
  142. package/dist/services/withParams.spec.d.ts +1 -0
  143. package/dist/services/zod.d.ts +11 -0
  144. package/dist/services/zod.spec-d.d.ts +1 -0
  145. package/dist/services/zod.spec.d.ts +1 -0
  146. package/dist/tests/hooks.spec.d.ts +1 -0
  147. package/dist/tests/routeProps.browser.spec.d.ts +1 -0
  148. package/dist/tests/routeProps.spec.d.ts +1 -0
  149. package/dist/types/createRouteOptions.d.ts +120 -0
  150. package/dist/types/hooks.d.ts +111 -0
  151. package/dist/types/meta.d.ts +2 -0
  152. package/dist/types/name.d.ts +2 -0
  153. package/dist/types/paramTypes.d.ts +14 -0
  154. package/dist/types/params.d.ts +71 -0
  155. package/dist/types/prefetch.d.ts +27 -0
  156. package/dist/types/props.d.ts +23 -0
  157. package/dist/types/querySource.d.ts +1 -0
  158. package/dist/types/register.d.ts +57 -0
  159. package/dist/types/register.spec.d.ts +1 -0
  160. package/dist/types/resolved.d.ts +47 -0
  161. package/dist/types/resolved.spec-d.d.ts +1 -0
  162. package/dist/types/route.d.ts +76 -0
  163. package/dist/types/route.spec-d.d.ts +1 -0
  164. package/dist/types/routeMatchRule.d.ts +2 -0
  165. package/dist/types/routeUpdate.d.ts +9 -0
  166. package/dist/types/routeWithParams.d.ts +5 -0
  167. package/dist/types/routeWithParams.spec-d.d.ts +1 -0
  168. package/dist/types/router.d.ts +185 -0
  169. package/dist/types/routerLink.d.ts +16 -0
  170. package/dist/types/routerPlugin.d.ts +18 -0
  171. package/dist/types/routerPush.d.ts +33 -0
  172. package/dist/types/routerReject.d.ts +3 -0
  173. package/dist/types/routerReplace.d.ts +20 -0
  174. package/dist/types/routerResolve.d.ts +15 -0
  175. package/dist/types/routerRoute.d.ts +16 -0
  176. package/dist/types/routesMap.d.ts +9 -0
  177. package/dist/types/routesMap.spec-ts.d.ts +1 -0
  178. package/dist/types/state.d.ts +18 -0
  179. package/dist/types/url.d.ts +23 -0
  180. package/dist/types/useLink.d.ts +51 -0
  181. package/dist/types/utilities.d.ts +22 -0
  182. package/dist/utilities/array.d.ts +2 -0
  183. package/dist/utilities/checkDuplicateKeys.d.ts +1 -0
  184. package/dist/utilities/checkDuplicateKeys.spec.d.ts +1 -0
  185. package/dist/utilities/checkDuplicateNames.d.ts +2 -0
  186. package/dist/utilities/checkDuplicateNames.spec.d.ts +1 -0
  187. package/dist/utilities/components.d.ts +6 -0
  188. package/dist/utilities/components.spec.d.ts +1 -0
  189. package/dist/utilities/guards.d.ts +5 -0
  190. package/dist/utilities/guards.spec.d.ts +1 -0
  191. package/dist/utilities/index.d.ts +6 -0
  192. package/dist/utilities/isBrowser.browser.spec.d.ts +1 -0
  193. package/dist/utilities/isBrowser.d.ts +1 -0
  194. package/dist/utilities/isBrowser.spec.d.ts +1 -0
  195. package/dist/utilities/makeOptional.d.ts +9 -0
  196. package/dist/utilities/prefetch.d.ts +4 -0
  197. package/dist/utilities/prefetch.spec.d.ts +1 -0
  198. package/dist/utilities/promises.d.ts +1 -0
  199. package/dist/utilities/props.d.ts +6 -0
  200. package/dist/utilities/testHelpers.d.ts +144 -0
  201. package/dist/utilities/urlSearchParams.d.ts +2 -0
  202. package/dist/utilities/urlSearchParams.spec.d.ts +1 -0
  203. package/package.json +11 -11
@@ -1,4 +1,4 @@
1
- (function(A,i){typeof exports=="object"&&typeof module<"u"?i(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],i):(A=typeof globalThis<"u"?globalThis:A||self,i(A["@kitbag/router"]={},A.Vue))})(this,function(A,i){"use strict";var No=Object.defineProperty;var Vo=(A,i,Z)=>i in A?No(A,i,{enumerable:!0,configurable:!0,writable:!0,value:Z}):A[i]=Z;var G=(A,i,Z)=>Vo(A,typeof i!="symbol"?i+"":i,Z);function Z(t){return typeof t!="string"?!1:/^(https?:\/\/|\/).*/g.test(t)}function _t(t){return Z(t)?t:`/${t}`}class pe 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 he extends Error{constructor(e){super(`Child property on meta for ${e} conflicts with the parent meta.`)}}class tt extends Error{constructor(){super("Router not installed")}}class ye extends Error{constructor(e,r){super(`useRoute called with incorrect route. Given ${e}, expected ${r}`)}}const me=Symbol();function Rt(){const t=i.inject(me);if(!t)throw new tt;return t}function it(t){return Array.isArray(t)?t:[t]}function ge(t,e){return t.filter(r=>e===r).length}function ct(...t){const e=t.flatMap(r=>Array.isArray(r)?r:Object.keys(r));for(const r of e)if(ge(e,r)>1)throw new pe(r)}class Q extends Error{}const wt="[",At="]";function kr(t){return t!==String&&t!==Boolean&&t!==Number&&t!==Date}function Ur(t){return typeof t=="function"&&kr(t)}function vt(t){return typeof t=="object"&&"get"in t&&typeof t.get=="function"&&"set"in t&&typeof t.set=="function"}function Re(t){return typeof t=="string"||typeof t=="number"||typeof t=="boolean"}function we(t,e){return vt(t)?{...t,defaultValue:e??t.defaultValue}:{get:r=>et(r,t),set:r=>z(r,t),defaultValue:e}}function Lr(t){return vt(t)&&t.defaultValue!==void 0}function Nr(t,e){return we(t,e)}function Vr(t){return t!==void 0}function ut(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function F(t){return typeof t=="string"&&t.length>0}let E=null;async function Cr(){const{ZodSchema:t,ZodString:e,ZodBoolean:r,ZodDate:n,ZodNumber:o,ZodLiteral:a,ZodObject:s,ZodEnum:p,ZodNativeEnum:y,ZodArray:f,ZodTuple:g,ZodUnion:w,ZodDiscriminatedUnion:C,ZodRecord:v,ZodMap:B,ZodSet:b,ZodIntersection:c,ZodPromise:l,ZodFunction:u}=await import("zod");return{ZodSchema:t,ZodString:e,ZodBoolean:r,ZodDate:n,ZodNumber:o,ZodLiteral:a,ZodObject:s,ZodEnum:p,ZodNativeEnum:y,ZodArray:f,ZodTuple:g,ZodUnion:w,ZodDiscriminatedUnion:C,ZodRecord:v,ZodMap:B,ZodSet:b,ZodIntersection:c,ZodPromise:l,ZodFunction:u}}function Br(t){return Object.values(t).some(e=>Object.values(e.host.params).some(r=>qt(r))||Object.values(e.path.params).some(r=>qt(r))||Object.values(e.query.params).some(r=>qt(r)))}function qt(t){return ut(t)&&"parse"in t&&typeof t.parse=="function"&&"~standard"in t&&ut(t["~standard"])&&"vendor"in t["~standard"]&&t["~standard"].vendor==="zod"}async function xr(){try{E=await Cr()}catch{throw new Error("Failed to initialize Zod")}}function Ee(t){return E?t instanceof E.ZodSchema:!1}function be(t){return{get:(e,{invalid:r})=>{try{return Ht(e,t)}catch{throw r()}},set:(e,{invalid:r})=>{try{return It(e,t)}catch{throw r()}}}}const jr=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;function ft(t,e){if(typeof e=="string"&&jr.test(e)){const r=new Date(e);return isNaN(r.getTime())?e:r}return e}function lt(t){for(const e of t)try{return e()}catch{continue}throw new Error("All functions failed")}function kt(t,e){return E!=null&&E.ZodString&&t instanceof E.ZodString?1:E!=null&&E.ZodString&&e instanceof E.ZodString?-1:0}function Ht(t,e){if(!E)throw new Error("Zod is not initialized");if(e instanceof E.ZodString)return e.parse(t);if(e instanceof E.ZodBoolean)return e.parse(!!t);if(e instanceof E.ZodDate)return e.parse(new Date(t));if(e instanceof E.ZodNumber)return e.parse(Number(t));if(e instanceof E.ZodLiteral)return lt([()=>e.parse(Number(t)),()=>e.parse(!!t),()=>e.parse(t)]);if(e instanceof E.ZodObject)return e.parse(JSON.parse(t,ft));if(e instanceof E.ZodEnum)return e.parse(t);if(e instanceof E.ZodNativeEnum)return lt([()=>e.parse(Number(t)),()=>e.parse(t)]);if(e instanceof E.ZodArray||e instanceof E.ZodTuple)return e.parse(JSON.parse(t,ft));if(e instanceof E.ZodUnion){const r=Array.from(e._def.options).sort(kt).map(n=>()=>Ht(t,n));return lt(r)}if(e instanceof E.ZodDiscriminatedUnion){const r=Array.from(e.options).sort(kt).map(n=>()=>Ht(t,n));return lt(r)}if(e instanceof E.ZodRecord)return e.parse(JSON.parse(t,ft));if(e instanceof E.ZodMap)return e.parse(new Map(JSON.parse(t,ft)));if(e instanceof E.ZodSet)return e.parse(new Set(JSON.parse(t,ft)));if(e instanceof E.ZodIntersection)throw new Error("Intersection schemas are not supported");if(e instanceof E.ZodPromise)throw new Error("Promise schemas are not supported");if(e instanceof E.ZodFunction)throw new Error("Function schemas are not supported");return e.parse(t)}function It(t,e){if(!E)throw new Error("Zod is not initialized");if(e instanceof E.ZodString)return e.parse(t);if(e instanceof E.ZodBoolean)return e.parse(t).toString();if(e instanceof E.ZodDate)return e.parse(t).toISOString();if(e instanceof E.ZodNumber)return e.parse(Number(t)).toString();if(e instanceof E.ZodLiteral)return e.parse(t).toString();if(e instanceof E.ZodObject)return JSON.stringify(e.parse(t));if(e instanceof E.ZodEnum)return e.parse(t);if(e instanceof E.ZodNativeEnum)return e.parse(t).toString();if(e instanceof E.ZodArray||e instanceof E.ZodTuple)return JSON.stringify(e.parse(t));if(e instanceof E.ZodUnion){const r=Array.from(e._def.options).sort(kt).map(n=>()=>It(t,n));return lt(r)}if(e instanceof E.ZodDiscriminatedUnion){const r=Array.from(e.options).sort(kt).map(n=>()=>It(t,n));return lt(r)}if(e instanceof E.ZodRecord)return JSON.stringify(e.parse(t));if(e instanceof E.ZodMap){const r=e.parse(t);return JSON.stringify(Array.from(r.entries()))}if(e instanceof E.ZodSet){const r=e.parse(t);return JSON.stringify(Array.from(r.values()))}if(e instanceof E.ZodIntersection)throw new Error("Intersection schemas are not supported");if(e instanceof E.ZodPromise)throw new Error("Promise schemas are not supported");if(e instanceof E.ZodFunction)throw new Error("Function schemas are not supported");return JSON.stringify(e.parse(t))}function Dt(t){return typeof t=="object"&&t!==null&&"then"in t}function N(t,e){const r=t["~standard"].validate(e);if(Dt(r))throw new Error("Promise schemas are not supported");if(r.issues)throw new Error("Validation failed");return r.value}function Or(t){return ut(t)&&"type"in t&&typeof t.type=="string"&&"~standard"in t&&ut(t["~standard"])&&"vendor"in t["~standard"]&&t["~standard"].vendor==="valibot"}function Se(t){return Or(t)}function Pe(t){return{get:(e,{invalid:r})=>{try{return Jt(e,t)}catch{throw r()}},set:(e,{invalid:r})=>{try{return Tt(e,t)}catch{throw r()}}}}const Zr=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;function dt(t,e){if(typeof e=="string"&&Zr.test(e)){const r=new Date(e);return isNaN(r.getTime())?e:r}return e}function pt(t){for(const e of t)try{return e()}catch{continue}throw new Error("All functions failed")}function Ut(t,e){return t.type==="string"?1:e.type==="string"?-1:0}function Jt(t,e){if(e.type==="boolean")return N(e,!!t);if(e.type==="date")return N(e,new Date(t));if(e.type==="number")return N(e,Number(t));if(e.type==="literal")return pt([()=>N(e,Number(t)),()=>N(e,!!t),()=>N(e,t)]);if(e.type==="object")return N(e,JSON.parse(t,dt));if(e.type==="enum")return pt([()=>N(e,Number(t)),()=>N(e,!!t),()=>N(e,t)]);if(e.type==="array"||e.type==="tuple")return N(e,JSON.parse(t,dt));if(e.type==="union"&&"options"in e){const r=e.options.sort(Ut).map(n=>()=>Jt(t,n));return pt(r)}if(e.type==="variant"&&"options"in e){const r=e.options.sort(Ut).map(n=>()=>Jt(t,n));return pt(r)}if(e.type==="record")return N(e,JSON.parse(t,dt));if(e.type==="map")return N(e,new Map(JSON.parse(t,dt)));if(e.type==="set")return N(e,new Set(JSON.parse(t,dt)));if(e.type==="intersection")throw new Error("Intersection schemas are not supported");if(e.type==="promise")throw new Error("Promise schemas are not supported");if(e.type==="function")throw new Error("Function schemas are not supported");return N(e,t)}function Tt(t,e){if(e.type==="string"||e.type==="boolean")return N(e,t).toString();if(e.type==="date")return N(e,t).toISOString();if(e.type==="number")return N(e,Number(t)).toString();if(e.type==="literal")return N(e,t).toString();if(e.type==="object")return JSON.stringify(N(e,t));if(e.type==="enum"||e.type==="nativeEnum")return N(e,t).toString();if(e.type==="array"||e.type==="tuple")return JSON.stringify(N(e,t));if(e.type==="union"&&"options"in e){const r=e.options.sort(Ut).map(n=>()=>Tt(t,n));return pt(r)}if(e.type==="variant"&&"options"in e){const r=e.options.sort(Ut).map(n=>()=>Tt(t,n));return pt(r)}if(e.type==="record")return JSON.stringify(N(e,t));if(e.type==="map"){const r=N(e,t);return JSON.stringify(Array.from(r.entries()))}if(e.type==="set"){const r=N(e,t);return JSON.stringify(Array.from(r.values()))}if(e.type==="intersection")throw new Error("Intersection schemas are not supported");if(e.type==="promise")throw new Error("Promise schemas are not supported");if(e.type==="function")throw new Error("Function schemas are not supported");return JSON.stringify(N(e,t))}function $r(t,e){return t[e]??String}const j={invalid:t=>{throw new Q(t)}},Ae={get:t=>t,set:(t,{invalid:e})=>{if(typeof t!="string")throw e();return t}},Ft={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()}},Mt={get:(t,{invalid:e})=>{const r=Number(t);if(isNaN(r))throw e();return r},set:(t,{invalid:e})=>{if(typeof t!="number")throw e();return t.toString()}},ve={get:(t,{invalid:e})=>{const r=new Date(t);if(isNaN(r.getTime()))throw e();return r},set:(t,{invalid:e})=>{if(typeof t!="object"||!(t instanceof Date))throw e();return t.toISOString()}},ke={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 _r(t,e){switch(typeof e){case"string":return Ae.get(t,j)===e;case"number":return Mt.get(t,j)===e;case"boolean":return Ft.get(t,j)===e;default:return!1}}function et(t,e,r=!1){if(t===void 0||!F(t)){if(Lr(e))return e.defaultValue;if(r)return;throw new Q}if(e===String)return Ae.get(t,j);if(e===Boolean)return Ft.get(t,j);if(e===Number)return Mt.get(t,j);if(e===Date)return ve.get(t,j);if(e===JSON)return ke.get(t,j);if(Ur(e))return e(t,j);if(vt(e))return e.get(t,j);if(e instanceof RegExp){if(e.test(t))return t;throw new Q}if(Re(e)){if(_r(t,e))return e;throw new Q}return Ee(e)?be(e).get(t,j):Se(e)?Pe(e).get(t,j):t}function Wt(t,e,r=!1){try{return et(t,e,r)}catch(n){if(n instanceof Q)return;throw n}}function qr(t,e,r=!1){try{return z(t,e,r)}catch(n){if(n instanceof Q)return;throw n}}function z(t,e,r=!1){if(t===void 0){if(r)return"";throw new Q}if(e===Boolean)return Ft.set(t,j);if(e===Number)return Mt.set(t,j);if(e===Date)return ve.set(t,j);if(e===JSON)return ke.set(t,j);if(vt(e))return e.set(t,j);if(Re(e)){if(e!==t)throw new Q;return t.toString()}if(Ee(e))return be(e).set(t,j);if(Se(e))return Pe(e).set(t,j);try{return t.toString()}catch{throw new Q}}function Gt(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Hr(t,e){const r=Array.from(t.matchAll(e));if(r.length===0)return[t];let n=0;const o=r.reduce((s,p)=>{const y=Gt(t.slice(n,p.index));y.length&&s.push(y);const[f]=p;return s.push(f),n=p.index+f.length,s},[]),a=t.slice(n);return a&&o.push(a),o}function Ir(t){const e=Ue(t.path.value);return new RegExp(`^${e}$`,"i")}function Dr(t){const e=new URLSearchParams(t.query.value);return Array.from(e.entries()).filter(([,r])=>!zt(r)).map(([r,n])=>{const o=Ue(n);return new RegExp(`${Gt(r)}=${o}(&|$)`,"i")})}function Ue(t){return Hr(t,new RegExp(Lt,"g")).map(e=>e.startsWith(wt)?Le(e):Gt(e)).join("")}function Le(t){return t.replace(new RegExp(Lt,"g"),Fr)}function Jr(t,e){const r=Ne(e);return t.replace(r,Mr)}function Qt(t,e){return Wr(e).test(t.value)}function zt(t){return new RegExp(Tr,"g").test(t)}const Lt=`\\${wt}\\??([\\w-_]+)\\${At}`,Tr=`\\${wt}\\?([\\w-_]+)\\${At}`,Fr=".*",Mr="(.*)";function Kt(t){const[e]=Ve(t,new RegExp(Lt,"g"));return e}function Ne(t){return new RegExp(`\\${wt}\\??${t}\\${At}`,"g")}function Wr(t){return new RegExp(`\\${wt}\\?${t}\\${At}`,"g")}function Ve(t,e){return Array.from(t.matchAll(e)).flatMap(([,...n])=>n.map(o=>F(o)?o:""))}function Gr(t="",e={}){return F(t)?Array.from(t.matchAll(new RegExp(Lt,"g"))).reduce((n,[o,a])=>{const s=Kt(o);if(!s)return n;const p=$r(e,s);return ct([s],n),n[a]=p,n},{}):{}}function Qr(t){return ut(t)&&typeof t.value=="string"}function rt(t){return t===void 0?M():Qr(t)?t:M(t,{})}function M(t,e){return{value:t??"",params:Gr(t,e)}}function Ce(t,e){ct(t.params,e.params);const r=`${t.value}${e.value}`;return M(r,{...t.params,...e.params})}function zr(t,e){return Ce(t,e)}function Kr(t,e){return Yr(t,e),{...t,...e}}function Yr(t,e){const r=Object.keys(t).find(n=>n in e&&typeof e[n]!=typeof t[n]);if(r)throw new he(r)}function Xr(t,e){ct(t.params,e.params);const r=[t.value,e.value].filter(F).join("&");return M(r,{...t.params,...e.params})}function tn(t,e){return ct(t,e),{...t,...e}}function Be(t){return"parent"in t&&!!t.parent}function xe(t){return"component"in t&&!!t.component}function je(t){return"props"in t&&typeof t.props=="function"}function Oe(t){return"components"in t&&!!t.components}function Ze(t){return"props"in t&&typeof t.props=="object"}function $e(t,e){return{...e,path:Ce(t.path,e.path),query:Xr(t.query,e.query),meta:Kr(t.meta,e.meta),state:tn(t.state,e.state),hash:zr(t.hash,e.hash),matches:[...t.matches,e.matched],host:t.host,depth:t.depth+1}}function Yt(){return typeof window<"u"&&typeof window.document<"u"}function Xt(t){const e=new URLSearchParams(t);return{get:(...r)=>e.get(...r),getAll:(...r)=>e.getAll(...r),set:(...r)=>{e.set(...r)},append:(...r)=>{e.append(...r)},delete:(...r)=>{e.delete(...r)},toString:(...r)=>e.toString(...r),forEach:(...r)=>{e.forEach(...r)},entries:(...r)=>e.entries(...r),keys:(...r)=>e.keys(...r),values:(...r)=>e.values(...r),has:(...r)=>e.has(...r),size:e.size,sort:()=>{e.sort()},[Symbol.iterator]:()=>e[Symbol.iterator]()}}function te(){let t=0;return()=>(++t).toString()}const en=te()();function rn(t){return t===en}const ee=te();function _e(t){return t===void 0?"":t}function nt(t,e){const r=ee(),n=_e(t.name),o=rt(t.path),a=rt(t.query),s=rt(t.hash),p=t.meta??{},y=t.state??{},f=i.markRaw({id:r,meta:p,state:y,...t,props:e}),g={id:r,matched:f,matches:[f],name:n,path:o,query:a,hash:s,meta:p,state:y,depth:1,host:M(),prefetch:t.prefetch},w=Be(t)?$e(t.parent,g):g;return ct(w.path.params,w.query.params,w.hash.params),w}const Nt={template:"<div>This is component</div>"},re=nt({name:"parentA",path:"/parentA/[paramA]"}),qe=nt({parent:re,name:"parentA.childA",path:"/childA/[?paramB]"}),nn=nt({parent:re,name:"parentA.childB",path:"/childB/[paramD]",component:Nt}),on=nt({parent:qe,name:"parentA.childA.grandChildA",path:"/[paramC]",component:Nt});nt({name:"parentB",path:"/parentB",component:Nt}),nt({name:"parentC",path:"/",component:Nt});const an="lazy",sn={components:!0,props:!1};function Vt(t){return["eager","lazy","intent"].includes(t)}function He({routerPrefetch:t,routePrefetch:e,linkPrefetch:r},n){const o=ne(r,n),a=ne(e,n),s=ne(t,n),p=[o,a,s,sn[n],an].reduce((y,f)=>Vt(y)?y:y===!0&&Vt(f)?f:y===!0&&!Vt(f)?y:y===void 0?f:y,void 0);return Vt(p)?p:!1}function ne(t,e){return ut(t)?t[e]:t}class Ie extends Error{constructor(){super("Uncaught CallbackContextAbortError");G(this,"response");this.response={status:"ABORT"}}}class ht extends Error{constructor(r){super("Uncaught CallbackContextPushError");G(this,"response");this.response={status:"PUSH",to:r}}}class Ct extends Error{constructor(r){super("Uncaught CallbackContextRejectionError");G(this,"response");this.response={status:"REJECT",type:r}}}function De(){return{reject:o=>{throw new Ct(o)},push:(...o)=>{throw new ht(o)},replace:(o,a,s)=>{if(Z(o)){const f=a??{};throw new ht([o,{...f,replace:!0}])}const p=a,y=s??{};throw new ht([o,p,{...y,replace:!0}])},abort:()=>{throw new Ie}}}function Je(t){try{const e=t();return Dt(e)?e.catch(r=>r):e}catch(e){return e}}function Te(){let t=null;function e(n){t=n}function r(n){return t?t.runWithContext(n):n()}return{setVueApp:e,runWithContext:r}}const Fe=Symbol();function cn(){const{setVueApp:t,runWithContext:e}=Te(),r=i.reactive(new Map),{push:n,replace:o,reject:a}=De(),s=(b,c,l)=>c.matches.filter(u=>He({...l,routePrefetch:u.prefetch},"props")===b).flatMap(u=>v(u)).reduce((u,{id:d,name:S,props:U})=>{if(!U)return u;const k=C(d,S,c),R=e(()=>Je(()=>U(c,{push:n,replace:o,reject:a,parent:g(c,!0)})));return u[k]=R,u},{}),p=b=>{Object.entries(b).forEach(([c,l])=>{r.set(c,l)})},y=async b=>{const c=b.matches.flatMap(v),l=[],u=[];for(const{id:d,name:S,props:U}of c){if(!U)continue;const k=C(d,S,b);if(l.push(k),!r.has(k)){const R=e(()=>Je(()=>U(b,{push:n,replace:o,reject:a,parent:g(b)})));r.set(k,R)}u.push((async()=>{const R=await r.get(k);if(R instanceof Error)throw R})())}B(l);try{return await Promise.all(u),{status:"SUCCESS"}}catch(d){if(d instanceof ht||d instanceof Ct)return d.response;throw d}},f=(b,c,l)=>{const u=C(b,c,l);return r.get(u)};function g(b,c=!1){const l=b.matches.at(-2);if(l)return je(l)?{name:l.name??"",get props(){return w(l,"default",b,c)}}:Ze(l)?{name:l.name??"",props:new Proxy({},{get(u,d){return typeof d!="string"?Reflect.get(u,d):w(l,d,b,c)}})}:{name:l.name??"",props:void 0}}function w(b,c,l,u=!1){const d=f(b.id,c,l);if(u&&!d){const S=b.name??"unknown",U=l.name||"unknown";console.warn(`
2
- Unable to access parent props "${c}" from route "${S}" while prefetching props for route "${U}".
1
+ (function(L,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],l):(L=typeof globalThis<"u"?globalThis:L||self,l(L["@kitbag/router"]={},L.Vue))})(this,function(L,l){"use strict";class Ee extends Error{constructor(e){super(`Invalid Param "${e}": Router does not support multiple params by the same name. All param names must be unique.`)}}function st(t){return Array.isArray(t)?t:[t]}function be(t,e){return t.filter(n=>e===n).length}function it(...t){const e=t.flatMap(n=>Array.isArray(n)?n:Object.keys(n));for(const n of e)if(be(e,n)>1)throw new Ee(n)}class z extends Error{}const Rt="[",At="]";function Vn(t){return t!==String&&t!==Boolean&&t!==Number&&t!==Date}function Nn(t){return typeof t=="function"&&Vn(t)}function kt(t){return typeof t=="object"&&"get"in t&&typeof t.get=="function"&&"set"in t&&typeof t.set=="function"}function Se(t){return typeof t=="string"||typeof t=="number"||typeof t=="boolean"}function Pe(t,e){return kt(t)?{...t,defaultValue:e??t.defaultValue}:{get:n=>tt(n,t),set:n=>Y(n,t),defaultValue:e}}function Cn(t){return kt(t)&&t.defaultValue!==void 0}function Bn(t,e){return Pe(t,e)}function On(t){return t!==void 0}function ct(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function D(t){return typeof t=="string"&&t.length>0}let A=null;async function xn(){const{ZodSchema:t,ZodString:e,ZodBoolean:n,ZodDate:r,ZodNumber:o,ZodLiteral:a,ZodObject:s,ZodEnum:c,ZodNativeEnum:f,ZodArray:d,ZodTuple:R,ZodUnion:h,ZodDiscriminatedUnion:k,ZodRecord:S,ZodMap:B,ZodSet:g,ZodIntersection:U,ZodPromise:m,ZodFunction:w}=await import("zod");return{ZodSchema:t,ZodString:e,ZodBoolean:n,ZodDate:r,ZodNumber:o,ZodLiteral:a,ZodObject:s,ZodEnum:c,ZodNativeEnum:f,ZodArray:d,ZodTuple:R,ZodUnion:h,ZodDiscriminatedUnion:k,ZodRecord:S,ZodMap:B,ZodSet:g,ZodIntersection:U,ZodPromise:m,ZodFunction:w}}function jn(t){return Object.values(t).some(e=>Object.values(e.host.params).some(n=>$t(n))||Object.values(e.path.params).some(n=>$t(n))||Object.values(e.query.params).some(n=>$t(n)))}function $t(t){return ct(t)&&"parse"in t&&typeof t.parse=="function"&&"~standard"in t&&ct(t["~standard"])&&"vendor"in t["~standard"]&&t["~standard"].vendor==="zod"}async function Zn(){try{A=await xn()}catch{throw new Error("Failed to initialize Zod")}}function ve(t){return A?t instanceof A.ZodSchema:!1}function Ae(t){return{get:(e,{invalid:n})=>{try{return qt(e,t)}catch{throw n()}},set:(e,{invalid:n})=>{try{return It(e,t)}catch{throw n()}}}}const Hn=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;function ut(t,e){if(typeof e=="string"&&Hn.test(e)){const n=new Date(e);return isNaN(n.getTime())?e:n}return e}function ft(t){for(const e of t)try{return e()}catch{continue}throw new Error("All functions failed")}function Ut(t,e){return A?.ZodString&&t instanceof A.ZodString?1:A?.ZodString&&e instanceof A.ZodString?-1:0}function qt(t,e){if(!A)throw new Error("Zod is not initialized");if(e instanceof A.ZodString)return e.parse(t);if(e instanceof A.ZodBoolean)return e.parse(!!t);if(e instanceof A.ZodDate)return e.parse(new Date(t));if(e instanceof A.ZodNumber)return e.parse(Number(t));if(e instanceof A.ZodLiteral)return ft([()=>e.parse(Number(t)),()=>e.parse(!!t),()=>e.parse(t)]);if(e instanceof A.ZodObject)return e.parse(JSON.parse(t,ut));if(e instanceof A.ZodEnum)return e.parse(t);if(e instanceof A.ZodNativeEnum)return ft([()=>e.parse(Number(t)),()=>e.parse(t)]);if(e instanceof A.ZodArray||e instanceof A.ZodTuple)return e.parse(JSON.parse(t,ut));if(e instanceof A.ZodUnion){const n=Array.from(e._def.options).sort(Ut).map(r=>()=>qt(t,r));return ft(n)}if(e instanceof A.ZodDiscriminatedUnion){const n=Array.from(e.options).sort(Ut).map(r=>()=>qt(t,r));return ft(n)}if(e instanceof A.ZodRecord)return e.parse(JSON.parse(t,ut));if(e instanceof A.ZodMap)return e.parse(new Map(JSON.parse(t,ut)));if(e instanceof A.ZodSet)return e.parse(new Set(JSON.parse(t,ut)));if(e instanceof A.ZodIntersection)throw new Error("Intersection schemas are not supported");if(e instanceof A.ZodPromise)throw new Error("Promise schemas are not supported");if(e instanceof A.ZodFunction)throw new Error("Function schemas are not supported");return e.parse(t)}function It(t,e){if(!A)throw new Error("Zod is not initialized");if(e instanceof A.ZodString)return e.parse(t);if(e instanceof A.ZodBoolean)return e.parse(t).toString();if(e instanceof A.ZodDate)return e.parse(t).toISOString();if(e instanceof A.ZodNumber)return e.parse(Number(t)).toString();if(e instanceof A.ZodLiteral)return e.parse(t).toString();if(e instanceof A.ZodObject)return JSON.stringify(e.parse(t));if(e instanceof A.ZodEnum)return e.parse(t);if(e instanceof A.ZodNativeEnum)return e.parse(t).toString();if(e instanceof A.ZodArray||e instanceof A.ZodTuple)return JSON.stringify(e.parse(t));if(e instanceof A.ZodUnion){const n=Array.from(e._def.options).sort(Ut).map(r=>()=>It(t,r));return ft(n)}if(e instanceof A.ZodDiscriminatedUnion){const n=Array.from(e.options).sort(Ut).map(r=>()=>It(t,r));return ft(n)}if(e instanceof A.ZodRecord)return JSON.stringify(e.parse(t));if(e instanceof A.ZodMap){const n=e.parse(t);return JSON.stringify(Array.from(n.entries()))}if(e instanceof A.ZodSet){const n=e.parse(t);return JSON.stringify(Array.from(n.values()))}if(e instanceof A.ZodIntersection)throw new Error("Intersection schemas are not supported");if(e instanceof A.ZodPromise)throw new Error("Promise schemas are not supported");if(e instanceof A.ZodFunction)throw new Error("Function schemas are not supported");return JSON.stringify(e.parse(t))}function Dt(t){return typeof t=="object"&&t!==null&&"then"in t}function C(t,e){const n=t["~standard"].validate(e);if(Dt(n))throw new Error("Promise schemas are not supported");if(n.issues)throw new Error("Validation failed");return n.value}function $n(t){return ct(t)&&"type"in t&&typeof t.type=="string"&&"~standard"in t&&ct(t["~standard"])&&"vendor"in t["~standard"]&&t["~standard"].vendor==="valibot"}function ke(t){return $n(t)}function Ue(t){return{get:(e,{invalid:n})=>{try{return _t(e,t)}catch{throw n()}},set:(e,{invalid:n})=>{try{return Jt(e,t)}catch{throw n()}}}}const qn=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;function lt(t,e){if(typeof e=="string"&&qn.test(e)){const n=new Date(e);return isNaN(n.getTime())?e:n}return e}function pt(t){for(const e of t)try{return e()}catch{continue}throw new Error("All functions failed")}function Lt(t,e){return t.type==="string"?1:e.type==="string"?-1:0}function _t(t,e){if(e.type==="boolean")return C(e,!!t);if(e.type==="date")return C(e,new Date(t));if(e.type==="number")return C(e,Number(t));if(e.type==="literal")return pt([()=>C(e,Number(t)),()=>C(e,!!t),()=>C(e,t)]);if(e.type==="object")return C(e,JSON.parse(t,lt));if(e.type==="enum")return pt([()=>C(e,Number(t)),()=>C(e,!!t),()=>C(e,t)]);if(e.type==="array"||e.type==="tuple")return C(e,JSON.parse(t,lt));if(e.type==="union"&&"options"in e){const n=e.options.sort(Lt).map(r=>()=>_t(t,r));return pt(n)}if(e.type==="variant"&&"options"in e){const n=e.options.sort(Lt).map(r=>()=>_t(t,r));return pt(n)}if(e.type==="record")return C(e,JSON.parse(t,lt));if(e.type==="map")return C(e,new Map(JSON.parse(t,lt)));if(e.type==="set")return C(e,new Set(JSON.parse(t,lt)));if(e.type==="intersection")throw new Error("Intersection schemas are not supported");if(e.type==="promise")throw new Error("Promise schemas are not supported");if(e.type==="function")throw new Error("Function schemas are not supported");return C(e,t)}function Jt(t,e){if(e.type==="string"||e.type==="boolean")return C(e,t).toString();if(e.type==="date")return C(e,t).toISOString();if(e.type==="number")return C(e,Number(t)).toString();if(e.type==="literal")return C(e,t).toString();if(e.type==="object")return JSON.stringify(C(e,t));if(e.type==="enum"||e.type==="nativeEnum")return C(e,t).toString();if(e.type==="array"||e.type==="tuple")return JSON.stringify(C(e,t));if(e.type==="union"&&"options"in e){const n=e.options.sort(Lt).map(r=>()=>Jt(t,r));return pt(n)}if(e.type==="variant"&&"options"in e){const n=e.options.sort(Lt).map(r=>()=>Jt(t,r));return pt(n)}if(e.type==="record")return JSON.stringify(C(e,t));if(e.type==="map"){const n=C(e,t);return JSON.stringify(Array.from(n.entries()))}if(e.type==="set"){const n=C(e,t);return JSON.stringify(Array.from(n.values()))}if(e.type==="intersection")throw new Error("Intersection schemas are not supported");if(e.type==="promise")throw new Error("Promise schemas are not supported");if(e.type==="function")throw new Error("Function schemas are not supported");return JSON.stringify(C(e,t))}function In(t,e){return t[e]??String}const x={invalid:t=>{throw new z(t)}},Le={get:t=>t,set:(t,{invalid:e})=>{if(typeof t!="string")throw e();return t}},Tt={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()}},Mt={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()}},Ve={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()}},Ne={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 Dn(t,e){switch(typeof e){case"string":return Le.get(t,x)===e;case"number":return Mt.get(t,x)===e;case"boolean":return Tt.get(t,x)===e;default:return!1}}function tt(t,e,n=!1){if(t===void 0||!D(t)){if(Cn(e))return e.defaultValue;if(n)return;throw new z}if(e===String)return Le.get(t,x);if(e===Boolean)return Tt.get(t,x);if(e===Number)return Mt.get(t,x);if(e===Date)return Ve.get(t,x);if(e===JSON)return Ne.get(t,x);if(Nn(e))return e(t,x);if(kt(e))return e.get(t,x);if(e instanceof RegExp){if(e.test(t))return t;throw new z}if(Se(e)){if(Dn(t,e))return e;throw new z}return ve(e)?Ae(e).get(t,x):ke(e)?Ue(e).get(t,x):t}function Ft(t,e,n=!1){try{return tt(t,e,n)}catch(r){if(r instanceof z)return;throw r}}function _n(t,e,n=!1){try{return Y(t,e,n)}catch(r){if(r instanceof z)return;throw r}}function Y(t,e,n=!1){if(t===void 0){if(n)return"";throw new z}if(e===Boolean)return Tt.set(t,x);if(e===Number)return Mt.set(t,x);if(e===Date)return Ve.set(t,x);if(e===JSON)return Ne.set(t,x);if(kt(e))return e.set(t,x);if(Se(e)){if(e!==t)throw new z;return t.toString()}if(ve(e))return Ae(e).set(t,x);if(ke(e))return Ue(e).set(t,x);try{return t.toString()}catch{throw new z}}function Wt(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Jn(t,e){const n=Array.from(t.matchAll(e));if(n.length===0)return[t];let r=0;const o=n.reduce((s,c)=>{const f=Wt(t.slice(r,c.index));f.length&&s.push(f);const[d]=c;return s.push(d),r=c.index+d.length,s},[]),a=t.slice(r);return a&&o.push(a),o}function Tn(t){const e=Ce(t.path.value);return new RegExp(`^${e}$`,"i")}function Mn(t){const e=new URLSearchParams(t.query.value);return Array.from(e.entries()).filter(([,n])=>!Qt(n)).map(([n,r])=>{const o=Ce(r);return new RegExp(`${Wt(n)}=${o}(&|$)`,"i")})}function Ce(t){return Jn(t,new RegExp(Vt,"g")).map(e=>e.startsWith(Rt)?Be(e):Wt(e)).join("")}function Be(t){return t.replace(new RegExp(Vt,"g"),Gn)}function Fn(t,e){const n=Oe(e);return t.replace(n,Qn)}function Gt(t,e){return zn(e).test(t.value)}function Qt(t){return new RegExp(Wn,"g").test(t)}const Vt=`\\${Rt}\\??([\\w-_]+)\\${At}`,Wn=`\\${Rt}\\?([\\w-_]+)\\${At}`,Gn=".*",Qn="(.*)";function zt(t){const[e]=xe(t,new RegExp(Vt,"g"));return e}function Oe(t){return new RegExp(`\\${Rt}\\??${t}\\${At}`,"g")}function zn(t){return new RegExp(`\\${Rt}\\?${t}\\${At}`,"g")}function xe(t,e){return Array.from(t.matchAll(e)).flatMap(([,...r])=>r.map(o=>D(o)?o:""))}function Yn(t="",e={}){return D(t)?Array.from(t.matchAll(new RegExp(Vt,"g"))).reduce((r,[o,a])=>{const s=zt(o);if(!s)return r;const c=In(e,s);return it([s],r),r[a]=c,r},{}):{}}function Kn(t){return ct(t)&&typeof t.value=="string"}function et(t){return t===void 0?G():Kn(t)?t:G(t,{})}function G(t,e){return{value:t??"",params:Yn(t,e)}}function je(t,e){it(t.params,e.params);const n=`${t.value}${e.value}`;return G(n,{...t.params,...e.params})}function Xn(t,e){return je(t,e)}class Ze extends Error{constructor(e){super(`Child property on meta for ${e} conflicts with the parent meta.`)}}function tr(t,e){return er(t,e),{...t,...e}}function er(t,e){const n=Object.keys(t).find(r=>r in e&&typeof e[r]!=typeof t[r]);if(n)throw new Ze(n)}function nr(t,e){it(t.params,e.params);const n=[t.value,e.value].filter(D).join("&");return G(n,{...t.params,...e.params})}function rr(t,e){return it(t,e),{...t,...e}}function Yt(t){return"parent"in t&&!!t.parent}function Kt(t){return"component"in t&&!!t.component}function Xt(t){return"props"in t&&typeof t.props=="function"}function te(t){return"components"in t&&!!t.components}function ee(t){return"props"in t&&typeof t.props=="object"}function ne(t,e){return{...e,path:je(t.path,e.path),query:nr(t.query,e.query),meta:tr(t.meta,e.meta),state:rr(t.state,e.state),hash:Xn(t.hash,e.hash),matches:[...t.matches,e.matched],host:t.host,depth:t.depth+1}}function _(t){return typeof t!="string"?!1:/^(https?:\/\/|\/).*/g.test(t)}function re(t){return _(t)?t:`/${t}`}class nt extends Error{constructor(){super("Router not installed")}}class He extends Error{constructor(e,n){super(`useRoute called with incorrect route. Given ${e}, expected ${n}`)}}function oe(){let t=0;return()=>(++t).toString()}const or=oe()();function ar(t){return t===or}const ae=oe();function $e(t){return t===void 0?"":t}function rt(t,e){const n=ae(),r=$e(t.name),o=et(t.path),a=et(t.query),s=et(t.hash),c=t.meta??{},f=t.state??{},d=l.markRaw({id:n,meta:c,state:f,...t,props:e}),R={id:n,matched:d,matches:[d],name:r,path:o,query:a,hash:s,meta:c,state:f,depth:1,host:G(),prefetch:t.prefetch},h=Yt(t)?ne(t.parent,R):R;return it(h.path.params,h.query.params,h.hash.params),h}function sr(t){const e=ae(),n=$e(t.name),r=et(t.path),o=et(t.query),a=et(t.hash),s=t.meta??{},c=et(t.host),f=l.markRaw({id:e,meta:{},state:{},...t}),d={id:e,matched:f,matches:[f],name:n,host:c,path:r,query:o,hash:a,meta:s,depth:1,state:{}},R=Yt(t)?ne(t.parent,d):d;return it(R.path.params,R.query.params,R.host.params,R.hash.params),R}function gt(){const t=new Map;return e=>{const n=t.get(e);if(!n){const r=Symbol();return t.set(e,r),r}return n}}const ir=gt();function se(t){const e=ir(t);return({increment:n=!1}={})=>{const r=l.inject(e,0);return n&&l.provide(e,r+1),r}}class qe extends Error{response;constructor(){super("Uncaught CallbackContextAbortError"),this.response={status:"ABORT"}}}class dt extends Error{response;constructor(e){super("Uncaught CallbackContextPushError"),this.response={status:"PUSH",to:e}}}class Nt extends Error{response;constructor(e){super("Uncaught CallbackContextRejectionError"),this.response={status:"REJECT",type:e}}}function Ie(){return{reject:o=>{throw new Nt(o)},push:(...o)=>{throw new dt(o)},replace:(o,a,s)=>{if(_(o)){const d=a??{};throw new dt([o,{...d,replace:!0}])}const c=a,f=s??{};throw new dt([o,c,{...f,replace:!0}])},abort:()=>{throw new qe}}}const wt=(t,e,n)=>{const r=t.matches,o=e?.matches??[];return r.at(n)?.id!==o.at(n)?.id},Et=(t,e,n)=>{const r=t.matches,o=e?.matches??[];return r.at(n)?.id!==o.at(n)?.id},bt=(t,e,n)=>t.matches.at(n)?.id===e?.matches.at(n)?.id;function De(t){switch(t){case"onBeforeRouteEnter":case"onAfterRouteEnter":return wt;case"onBeforeRouteUpdate":case"onAfterRouteUpdate":return bt;case"onBeforeRouteLeave":case"onAfterRouteLeave":return Et;default:throw new Error(`Switch is not exhaustive for lifecycle: ${t}`)}}class _e{onBeforeRouteEnter=new Set;onBeforeRouteUpdate=new Set;onBeforeRouteLeave=new Set;onAfterRouteEnter=new Set;onAfterRouteUpdate=new Set;onAfterRouteLeave=new Set}function cr(t,e){const n=new _e;return t.matches.forEach((r,o)=>{r.onBeforeRouteEnter&&wt(t,e,o)&&st(r.onBeforeRouteEnter).forEach(a=>n.onBeforeRouteEnter.add(a)),r.onBeforeRouteUpdate&&bt(t,e,o)&&st(r.onBeforeRouteUpdate).forEach(a=>n.onBeforeRouteUpdate.add(a))}),e?.matches.forEach((r,o)=>{r.onBeforeRouteLeave&&Et(t,e,o)&&st(r.onBeforeRouteLeave).forEach(a=>n.onBeforeRouteLeave.add(a))}),n}function ur(t,e){const n=new _e;return t.matches.forEach((r,o)=>{r.onAfterRouteEnter&&wt(t,e,o)&&st(r.onAfterRouteEnter).forEach(a=>n.onAfterRouteEnter.add(a)),r.onAfterRouteUpdate&&bt(t,e,o)&&st(r.onAfterRouteUpdate).forEach(a=>n.onAfterRouteUpdate.add(a))}),e?.matches.forEach((r,o)=>{r.onAfterRouteLeave&&Et(t,e,o)&&st(r.onAfterRouteLeave).forEach(a=>n.onAfterRouteLeave.add(a))}),n}class St{onBeforeRouteEnter=new Set;onBeforeRouteUpdate=new Set;onBeforeRouteLeave=new Set;onAfterRouteEnter=new Set;onAfterRouteUpdate=new Set;onAfterRouteLeave=new Set}function fr(t,e,n){const r=new St;return t.matches.forEach((o,a)=>{wt(t,e,a)&&n.onBeforeRouteEnter.forEach(s=>r.onBeforeRouteEnter.add(s)),bt(t,e,a)&&n.onBeforeRouteUpdate.forEach(s=>r.onBeforeRouteUpdate.add(s))}),e?.matches.forEach((o,a)=>{Et(t,e,a)&&n.onBeforeRouteLeave.forEach(s=>r.onBeforeRouteLeave.add(s))}),r}function lr(t,e,n){const r=new St;return t.matches.forEach((o,a)=>{wt(t,e,a)&&n.onAfterRouteEnter.forEach(s=>r.onAfterRouteEnter.add(s)),bt(t,e,a)&&n.onAfterRouteUpdate.forEach(s=>r.onAfterRouteUpdate.add(s))}),e?.matches.forEach((o,a)=>{Et(t,e,a)&&n.onAfterRouteLeave.forEach(s=>r.onAfterRouteLeave.add(s))}),r}function Je(){let t=null;function e(r){t=r}function n(r){return t?t.runWithContext(r):r()}return{setVueApp:e,runWithContext:n}}const Te=gt();function pr(t){const{setVueApp:e,runWithContext:n}=Je(),r={global:new St,component:new St},{reject:o,push:a,replace:s,abort:c}=Ie(),f=i=>(r.global.onBeforeRouteEnter.add(i),()=>r.global.onBeforeRouteEnter.delete(i)),d=i=>(r.global.onBeforeRouteUpdate.add(i),()=>r.global.onBeforeRouteUpdate.delete(i)),R=i=>(r.global.onBeforeRouteLeave.add(i),()=>r.global.onBeforeRouteLeave.delete(i)),h=i=>(r.global.onAfterRouteEnter.add(i),()=>r.global.onAfterRouteEnter.delete(i)),k=i=>(r.global.onAfterRouteUpdate.add(i),()=>r.global.onAfterRouteUpdate.delete(i)),S=i=>(r.global.onAfterRouteLeave.add(i),()=>r.global.onAfterRouteLeave.delete(i));async function B({to:i,from:u}){const{global:P,component:V}=r,y=cr(i,u),p=fr(i,u,P),E=[...p.onBeforeRouteEnter,...y.onBeforeRouteEnter,...p.onBeforeRouteUpdate,...y.onBeforeRouteUpdate,...V.onBeforeRouteUpdate,...p.onBeforeRouteLeave,...y.onBeforeRouteLeave,...V.onBeforeRouteLeave];try{const b=E.map(N=>n(()=>N(i,{from:u,reject:o,push:a,replace:s,abort:c})));await Promise.all(b)}catch(b){if(b instanceof dt||b instanceof Nt||b instanceof qe)return b.response;throw b}return{status:"SUCCESS"}}async function g({to:i,from:u}){const{global:P,component:V}=r,y=ur(i,u),p=lr(i,u,P),E=[...V.onAfterRouteLeave,...y.onAfterRouteLeave,...p.onAfterRouteLeave,...V.onAfterRouteUpdate,...y.onAfterRouteUpdate,...p.onAfterRouteUpdate,...V.onAfterRouteEnter,...y.onAfterRouteEnter,...p.onAfterRouteEnter];try{const b=E.map(N=>n(()=>N(i,{from:u,reject:o,push:a,replace:s})));await Promise.all(b)}catch(b){if(b instanceof dt||b instanceof Nt)return b.response;throw b}return{status:"SUCCESS"}}return{runBeforeRouteHooks:B,runAfterRouteHooks:g,addComponentBeforeRouteHook:({lifecycle:i,depth:u,hook:P})=>{const V=De(i),y=r.component[i],p=(E,b)=>{if(V(E,b.from,u))return P(E,b)};return y.add(p),()=>y.delete(p)},addComponentAfterRouteHook:({lifecycle:i,depth:u,hook:P})=>{const V=De(i),y=r.component[i],p=(E,b)=>{if(V(E,b.from,u))return P(E,b)};return y.add(p),()=>y.delete(p)},addGlobalRouteHooks:i=>{i.onBeforeRouteEnter.forEach(u=>f(u)),i.onBeforeRouteUpdate.forEach(u=>d(u)),i.onBeforeRouteLeave.forEach(u=>R(u)),i.onAfterRouteEnter.forEach(u=>h(u)),i.onAfterRouteUpdate.forEach(u=>k(u)),i.onAfterRouteLeave.forEach(u=>S(u))},onBeforeRouteEnter:f,onBeforeRouteUpdate:d,onBeforeRouteLeave:R,onAfterRouteEnter:h,onAfterRouteUpdate:k,onAfterRouteLeave:S,setVueApp:e}}function Me(t){const e=Te(t);return()=>{const n=l.inject(e);if(!n)throw new nt;return n}}function Fe(t,e){const n=se(t),r=Me(t);return o=>{const a=n(),c=r().addComponentBeforeRouteHook({lifecycle:e,hook:o,depth:a-1});return l.onUnmounted(c),c}}function We(t,e){const n=se(t),r=Me(t);return o=>{const a=n(),c=r().addComponentAfterRouteHook({lifecycle:e,hook:o,depth:a-1});return l.onUnmounted(c),c}}function dr(t){const e=Fe(t,"onBeforeRouteLeave"),n=Fe(t,"onBeforeRouteUpdate"),r=We(t,"onAfterRouteLeave"),o=We(t,"onAfterRouteUpdate");return{onBeforeRouteLeave:e,onBeforeRouteUpdate:n,onAfterRouteLeave:r,onAfterRouteUpdate:o}}const Ge=gt();function hr(t){const e=Ge(t);return()=>{const n=l.inject(e);if(!n)throw new nt;return n}}const Qe=gt();function mr(t){const e=Qe(t);return()=>{const n=l.inject(e);if(!n)throw new nt;return n}}function Pt(t){return()=>{const e=l.inject(t);if(!e)throw new nt;return e}}const ze=Symbol("isRouterRouteSymbol");function yr(t,e){return typeof e=="object"&&e!==null&&ze in e&&t in e}function Rr(t,e,n){function r(m,w,i){if(typeof m=="object"){const P={...e.params,...m};return n(e.name,P,w)}const u={...e.params,[m]:w};return n(e.name,u,i)}const o=(...m)=>{const w=new URLSearchParams(e.query);w.set(...m),r({},{query:w})},a=(...m)=>{const w=new URLSearchParams(e.query);w.append(...m),r({},{query:w})},s=(...m)=>{const w=new URLSearchParams(e.query);w.delete(...m),r({},{query:w})},{id:c,matched:f,matches:d,name:R,hash:h,href:k}=l.toRefs(e),S=l.computed({get(){return new Proxy(e.params,{set(m,w,i){return r(w,i),!0}})},set(m){r(m)}}),B=l.computed({get(){return new Proxy(e.query,{get(m,w,i){switch(w){case"append":return a;case"set":return o;case"delete":return s;default:return Reflect.get(m,w,i)}}})},set(m){r({},{query:m})}}),g=l.computed({get(){return new Proxy(e.state,{set(m,w,i){return r({},{state:{...e.state,[w]:i}}),!0}})},set(m){r({},{state:m})}});return l.reactive({id:c,matched:f,matches:d,state:g,query:B,hash:h,params:S,name:R,href:k,update:r,[ze]:!0,[t]:!0})}function ie(t){return(e,n,{exact:r}={})=>yr(t,e)?n===void 0?!0:r?e.matched.name===n:e.matches.map(o=>o.name).includes(n):!1}function Ct(t){const e=Pt(t),n=ie(t);return(r,o)=>{const a=e();function s(){if(!r)return;if(!n(a.route,r,o))throw new He(r,a.route.name)}return l.watch(a.route,s,{immediate:!0,deep:!0}),a.route}}function ce(t){const e=Ct(t),n=Pt(t),r=mr(t),o=se(t),a=hr(t);return l.defineComponent((s,c)=>{const f=e(),d=n(),R=r(),h=o({increment:!0});l.onServerPrefetch(async()=>{await d.start()});const{getRouteComponents:k}=a(),S=l.computed(()=>{if(!d.started.value)return null;if(R.value)return R.value.component;const B=f.matches.at(h);if(!B)return null;const g=k(B),U=s.name??"default";return g[U]});return()=>c.slots.default?c.slots.default({route:f,component:S,rejection:R.value}):S.value?l.h(S.value):null},{name:"RouterView",props:["name"]})}const Ye=gt();function Ke(t){const e=Ye(t);return()=>{const n=l.inject(e);if(!n)throw new nt;return n}}const gr="lazy",wr={components:!0,props:!1};function Bt(t){return["eager","lazy","intent"].includes(t)}function Xe({routerPrefetch:t,routePrefetch:e,linkPrefetch:n},r){const o=ue(n,r),a=ue(e,r),s=ue(t,r),c=[o,a,s,wr[r],gr].reduce((f,d)=>Bt(f)?f:f===!0&&Bt(d)?d:f===!0&&!Bt(d)?f:f===void 0?d:f,void 0);return Bt(c)?c:!1}function ue(t,e){return ct(t)?t[e]:t}const Er=l.defineAsyncComponent(()=>new Promise(t=>{t({default:{template:"foo"}})}));function tn(t){return t.name===Er.name&&"__asyncLoader"in t}const en=Symbol("visibilityObserver");function br(t){const e=l.inject(en);if(!e)throw new nt;return l.watch(t,(r,o)=>{r&&e.observe(r),o&&e.unobserve(o)},{immediate:!0}),l.onUnmounted(()=>{t.value&&e.unobserve(t.value)}),{isElementVisible:l.computed(()=>t.value?e.isElementVisible(t.value):!1)}}function nn(t,e,n){l.watch(t,(r,o)=>{r&&r.addEventListener(e,n),o&&o.removeEventListener(e,n)},{immediate:!0}),l.onUnmounted(()=>{t.value&&t.value.removeEventListener(e,n)})}function Sr(t){const e=Ke(t);return n=>{const r=new Map,o=l.ref(),{getPrefetchProps:a,setPrefetchProps:s}=e(),{isElementVisible:c}=br(o),f=()=>{const h=Array.from(r.values()).reduce((k,S)=>(Object.assign(k,S),k),{});s(h)};l.watch(()=>l.toValue(n),({route:h,...k})=>{r.clear(),h&&R("eager",h,k)},{immediate:!0}),l.watch(c,h=>{const{route:k,...S}=l.toValue(n);!k||!h||R("lazy",k,S)},{immediate:!0}),nn(o,"focusin",d),nn(o,"mouseover",d);function d(){const{route:h,...k}=l.toValue(n);h&&R("intent",h,k)}function R(h,k,S){Pr(h,k,S),r.has(h)||r.set(h,a(h,k,S))}return{element:o,commit:f}}}function Pr(t,e,n){e.matches.forEach(r=>{Xe({...n,routePrefetch:r.prefetch},"components")===t&&(Kt(r)&&tn(r.component)&&r.component.__asyncLoader(),te(r)&&Object.values(r.components).forEach(a=>{tn(a)&&a.__asyncLoader()}))})}function fe(...t){const e=new URLSearchParams;for(const n of t){const r=new URLSearchParams(n);for(const[o,a]of r.entries())e.append(o,a)}return e}function rn(t){const e=Pt(t),n=Sr(t),r=ie(t);return(o,a={},s={})=>{const c=e(),f=l.computed(()=>{const u=l.toValue(o);return typeof u!="string"?u:_(u)?c.find(u,l.toValue(s)):c.resolve(u,l.toValue(a),l.toValue(s))}),d=l.computed(()=>{if(f.value)return f.value.href;const u=l.toValue(o);if(_(u))return u;console.error(new Error("Failed to resolve route in RouterLink."))}),R=l.computed(()=>r(c.route)&&c.route.matches.some(u=>u.id===f.value?.id)),h=l.computed(()=>c.route.id===f.value?.id),k=l.computed(()=>r(c.route)&&On(f.value)&&c.route.href.startsWith(f.value.href)),S=l.computed(()=>c.route.href===f.value?.href),B=l.computed(()=>!!d.value&&c.isExternal(d.value)),g=l.computed(()=>{const u=l.toValue(o);return typeof u!="string"||_(u)?l.toValue(a):l.toValue(s)}),{element:U,commit:m}=n(()=>({route:f.value,routerPrefetch:c.prefetch,linkPrefetch:g.value.prefetch})),w=u=>{m();const P={replace:u?.replace??g.value.replace,query:fe(g.value.query,u?.query),hash:u?.hash??g.value.hash,state:{...g.value.state,...u?.state}},V=l.toValue(o);return _(V)||typeof V=="object"?c.push(V,P):c.push(V,l.toValue(a),P)};return{element:U,route:f,href:d,isMatch:R,isExactMatch:h,isActive:k,isExactActive:S,isExternal:B,push:w,replace:u=>w({...u,replace:!0})}}}function on(t){const e=Pt(t),n=rn(t);return l.defineComponent((r,o)=>{const a=e(),s=l.computed(()=>m(r.to)),c=l.computed(()=>w(r.to)),f=l.computed(()=>{const{to:u,...P}=r;return P}),{element:d,isMatch:R,isExactMatch:h,isActive:k,isExactActive:S,isExternal:B,push:g}=n(()=>typeof r.to=="function"?r.to(a.resolve):r.to,f),U=l.computed(()=>({"router-link--match":R.value,"router-link--exact-match":h.value,"router-link--active":k.value,"router-link--exact-active":S.value}));function m(u){if(typeof u=="function"){const P=u(a.resolve);return m(P)}return _(u)?a.find(u):u}function w(u){if(typeof u=="function"){const P=u(a.resolve);return w(P)}return _(u)?u:u?.href}function i(u){u.preventDefault(),g()}return()=>l.h("a",{href:c.value,class:["router-link",U.value],ref:d,onClick:i},o.slots.default?.({route:s.value,isMatch:R.value,isExactMatch:h.value,isActive:k.value,isExactActive:S.value,isExternal:B.value}))},{name:"RouterLink",props:["to","prefetch","query","hash","replace","state"]})}function vr(t){const e=Ct(t);return(n,r=String)=>{const o=e(),a=l.computed({get(){const c=o.query.get(l.toValue(n));return c===null?null:Ft(c,r)},set(c){o.query.set(l.toValue(n),Y(c,r))}}),s=l.computed({get(){return o.query.getAll(l.toValue(n)).map(f=>Ft(f,r)).filter(f=>f!==null)},set(c){const f=new URLSearchParams(o.query);f.delete(l.toValue(n)),c.forEach(d=>{f.append(l.toValue(n),Y(d,r))}),o.query=f}});return{value:a,values:s,remove:()=>{o.query.delete(l.toValue(n))}}}}function an(t){const e=typeof t=="object"?t.key:t,{onBeforeRouteLeave:n,onBeforeRouteUpdate:r,onAfterRouteLeave:o,onAfterRouteUpdate:a}=dr(e),s=ie(e),c=ce(e),f=on(e),d=Ct(e),R=Pt(e),h=vr(e),k=rn(e);return{onBeforeRouteLeave:n,onBeforeRouteUpdate:r,onAfterRouteLeave:o,onAfterRouteUpdate:a,isRoute:s,RouterView:c,RouterLink:f,useRoute:d,useRouter:R,useQueryValue:h,useLink:k}}function Ar(t){return{routes:t.routes??[],rejections:t.rejections??{},...t}}function sn(t){return{get:(e,{invalid:n})=>{for(const r of t){const o=Ft(e,r);if(o!==void 0)return o}throw n(`Value ${e} does not satisfy any of the possible values`)},set:(e,{invalid:n})=>{for(const r of t){const o=_n(e,r);if(o!==void 0)return o}throw n(`Value ${e} does not satisfy any of the possible values`)}}}const kr={separator:","};function Ur(t,e={}){const{separator:n}={...kr,...e},r=sn(t);return{get:(o,a)=>o.split(n).map(s=>r.get(s,a)),set:(o,a)=>{if(!Array.isArray(o))throw a.invalid("Expected an array");return o.map(s=>r.set(s,a)).join(n)}}}const Lr={separator:","};function Vr(t,e={}){const{separator:n}={...Lr,...e};return{get:r=>{const o=r.split(n);return t.map((a,s)=>tt(o.at(s),a))},set:(r,{invalid:o})=>{if(!Array.isArray(r))throw o("Expected a tuple");if(r.length!==t.length)throw o(`Expected tuple with ${t.length} values but received ${r.length} values`);return t.map((a,s)=>Y(r.at(s),a)).join(n)}}}function K(){return K=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)({}).hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},K.apply(null,arguments)}var H;(function(t){t.Pop="POP",t.Push="PUSH",t.Replace="REPLACE"})(H||(H={}));var ht=process.env.NODE_ENV!=="production"?function(t){return Object.freeze(t)}:function(t){return t};function ot(t,e){if(!t){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}var Ot="beforeunload",Nr="hashchange",cn="popstate";function un(t){t===void 0&&(t={});var e=t,n=e.window,r=n===void 0?document.defaultView:n,o=r.history;function a(){var y=r.location,p=y.pathname,E=y.search,b=y.hash,N=o.state||{};return[N.idx,ht({pathname:p,search:E,hash:b,state:N.usr||null,key:N.key||"default"})]}var s=null;function c(){if(s)S.call(s),s=null;else{var y=H.Pop,p=a(),E=p[0],b=p[1];if(S.length)if(E!=null){var N=R-E;N&&(s={action:y,location:b,retry:function(){P(N*-1)}},P(N))}else process.env.NODE_ENV!=="production"&&ot(!1,"You are trying to block a POP navigation to a location that was not created by the history library. The block will fail silently in production, but in general you should do all navigation with the history library (instead of using window.history.pushState directly) to avoid this situation.");else w(y)}}r.addEventListener(cn,c);var f=H.Pop,d=a(),R=d[0],h=d[1],k=mt(),S=mt();R==null&&(R=0,o.replaceState(K({},o.state,{idx:R}),""));function B(y){return typeof y=="string"?y:at(y)}function g(y,p){return p===void 0&&(p=null),ht(K({pathname:h.pathname,hash:"",search:""},typeof y=="string"?vt(y):y,{state:p,key:jt()}))}function U(y,p){return[{usr:y.state,key:y.key,idx:p},B(y)]}function m(y,p,E){return!S.length||(S.call({action:y,location:p,retry:E}),!1)}function w(y){f=y;var p=a();R=p[0],h=p[1],k.call({action:f,location:h})}function i(y,p){var E=H.Push,b=g(y,p);function N(){i(y,p)}if(m(E,b,N)){var j=U(b,R+1),Z=j[0],$=j[1];try{o.pushState(Z,"",$)}catch{r.location.assign($)}w(E)}}function u(y,p){var E=H.Replace,b=g(y,p);function N(){u(y,p)}if(m(E,b,N)){var j=U(b,R),Z=j[0],$=j[1];o.replaceState(Z,"",$),w(E)}}function P(y){o.go(y)}var V={get action(){return f},get location(){return h},createHref:B,push:i,replace:u,go:P,back:function(){P(-1)},forward:function(){P(1)},listen:function(p){return k.push(p)},block:function(p){var E=S.push(p);return S.length===1&&r.addEventListener(Ot,xt),function(){E(),S.length||r.removeEventListener(Ot,xt)}}};return V}function Cr(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=vt(r.location.hash.substr(1)),E=p.pathname,b=E===void 0?"/":E,N=p.search,j=N===void 0?"":N,Z=p.hash,$=Z===void 0?"":Z,T=o.state||{};return[T.idx,ht({pathname:b,search:j,hash:$,state:T.usr||null,key:T.key||"default"})]}var s=null;function c(){if(s)S.call(s),s=null;else{var p=H.Pop,E=a(),b=E[0],N=E[1];if(S.length)if(b!=null){var j=R-b;j&&(s={action:p,location:N,retry:function(){V(j*-1)}},V(j))}else process.env.NODE_ENV!=="production"&&ot(!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 i(p)}}r.addEventListener(cn,c),r.addEventListener(Nr,function(){var p=a(),E=p[1];at(E)!==at(h)&&c()});var f=H.Pop,d=a(),R=d[0],h=d[1],k=mt(),S=mt();R==null&&(R=0,o.replaceState(K({},o.state,{idx:R}),""));function B(){var p=document.querySelector("base"),E="";if(p&&p.getAttribute("href")){var b=r.location.href,N=b.indexOf("#");E=N===-1?b:b.slice(0,N)}return E}function g(p){return B()+"#"+(typeof p=="string"?p:at(p))}function U(p,E){return E===void 0&&(E=null),ht(K({pathname:h.pathname,hash:"",search:""},typeof p=="string"?vt(p):p,{state:E,key:jt()}))}function m(p,E){return[{usr:p.state,key:p.key,idx:E},g(p)]}function w(p,E,b){return!S.length||(S.call({action:p,location:E,retry:b}),!1)}function i(p){f=p;var E=a();R=E[0],h=E[1],k.call({action:f,location:h})}function u(p,E){var b=H.Push,N=U(p,E);function j(){u(p,E)}if(process.env.NODE_ENV!=="production"&&ot(N.pathname.charAt(0)==="/","Relative pathnames are not supported in hash history.push("+JSON.stringify(p)+")"),w(b,N,j)){var Z=m(N,R+1),$=Z[0],T=Z[1];try{o.pushState($,"",T)}catch{r.location.assign(T)}i(b)}}function P(p,E){var b=H.Replace,N=U(p,E);function j(){P(p,E)}if(process.env.NODE_ENV!=="production"&&ot(N.pathname.charAt(0)==="/","Relative pathnames are not supported in hash history.replace("+JSON.stringify(p)+")"),w(b,N,j)){var Z=m(N,R),$=Z[0],T=Z[1];o.replaceState($,"",T),i(b)}}function V(p){o.go(p)}var y={get action(){return f},get location(){return h},createHref:g,push:u,replace:P,go:V,back:function(){V(-1)},forward:function(){V(1)},listen:function(E){return k.push(E)},block:function(E){var b=S.push(E);return S.length===1&&r.addEventListener(Ot,xt),function(){b(),S.length||r.removeEventListener(Ot,xt)}}};return y}function fn(t){t===void 0&&(t={});var e=t,n=e.initialEntries,r=n===void 0?["/"]:n,o=e.initialIndex,a=r.map(function(i){var u=ht(K({pathname:"/",search:"",hash:"",state:null,key:jt()},typeof i=="string"?vt(i):i));return process.env.NODE_ENV!=="production"&&ot(u.pathname.charAt(0)==="/","Relative pathnames are not supported in createMemoryHistory({ initialEntries }) (invalid entry: "+JSON.stringify(i)+")"),u}),s=ln(o??a.length-1,0,a.length-1),c=H.Pop,f=a[s],d=mt(),R=mt();function h(i){return typeof i=="string"?i:at(i)}function k(i,u){return u===void 0&&(u=null),ht(K({pathname:f.pathname,search:"",hash:""},typeof i=="string"?vt(i):i,{state:u,key:jt()}))}function S(i,u,P){return!R.length||(R.call({action:i,location:u,retry:P}),!1)}function B(i,u){c=i,f=u,d.call({action:c,location:f})}function g(i,u){var P=H.Push,V=k(i,u);function y(){g(i,u)}process.env.NODE_ENV!=="production"&&ot(f.pathname.charAt(0)==="/","Relative pathnames are not supported in memory history.push("+JSON.stringify(i)+")"),S(P,V,y)&&(s+=1,a.splice(s,a.length,V),B(P,V))}function U(i,u){var P=H.Replace,V=k(i,u);function y(){U(i,u)}process.env.NODE_ENV!=="production"&&ot(f.pathname.charAt(0)==="/","Relative pathnames are not supported in memory history.replace("+JSON.stringify(i)+")"),S(P,V,y)&&(a[s]=V,B(P,V))}function m(i){var u=ln(s+i,0,a.length-1),P=H.Pop,V=a[u];function y(){m(i)}S(P,V,y)&&(s=u,B(P,V))}var w={get index(){return s},get action(){return c},get location(){return f},createHref:h,push:g,replace:U,go:m,back:function(){m(-1)},forward:function(){m(1)},listen:function(u){return d.push(u)},block:function(u){return R.push(u)}};return w}function ln(t,e,n){return Math.min(Math.max(t,e),n)}function xt(t){t.preventDefault(),t.returnValue=""}function mt(){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 jt(){return Math.random().toString(36).substr(2,8)}function at(t){var e=t.pathname,n=e===void 0?"/":e,r=t.search,o=r===void 0?"":r,a=t.hash,s=a===void 0?"":a;return o&&o!=="?"&&(n+=o.charAt(0)==="?"?o:"?"+o),s&&s!=="#"&&(n+=s.charAt(0)==="#"?s:"#"+s),n}function vt(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 Br(t,e,n){const r=l.reactive({...e}),o=c=>{Object.assign(r,{...c})},a=r,s=Rr(t,a,n);return{currentRoute:a,routerRoute:s,updateRoute:o}}function q(t){return!t.startsWith("http")?xr(t):Or(t)}function Or(t){const{protocol:e,host:n,pathname:r,search:o,searchParams:a,hash:s}=new URL(t,t);return{protocol:e,host:n,pathname:r,search:o,searchParams:a,hash:s}}function xr(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 jr(t){return e=>{const{host:n}=q(e);return!(n===void 0||n===t)}}function pn(t){try{const e=t();return Dt(e)?e.catch(n=>n):e}catch(e){return e}}function Zr(){const{setVueApp:t,runWithContext:e}=Je(),n=l.reactive(new Map),{push:r,replace:o,reject:a}=Ie(),s=(g,U,m)=>U.matches.filter(w=>Xe({...m,routePrefetch:w.prefetch},"props")===g).flatMap(w=>S(w)).reduce((w,{id:i,name:u,props:P})=>{if(!P)return w;const V=k(i,u,U),y=e(()=>pn(()=>P(U,{push:r,replace:o,reject:a,parent:R(U,!0)})));return w[V]=y,w},{}),c=g=>{Object.entries(g).forEach(([U,m])=>{n.set(U,m)})},f=async g=>{const U=g.matches.flatMap(S),m=[],w=[];for(const{id:i,name:u,props:P}of U){if(!P)continue;const V=k(i,u,g);if(m.push(V),!n.has(V)){const y=e(()=>pn(()=>P(g,{push:r,replace:o,reject:a,parent:R(g)})));n.set(V,y)}w.push((async()=>{const y=await n.get(V);if(y instanceof Error)throw y})())}B(m);try{return await Promise.all(w),{status:"SUCCESS"}}catch(i){if(i instanceof dt||i instanceof Nt)return i.response;throw i}},d=(g,U,m)=>{const w=k(g,U,m);return n.get(w)};function R(g,U=!1){const m=g.matches.at(-2);if(m)return Xt(m)?{name:m.name??"",get props(){return h(m,"default",g,U)}}:ee(m)?{name:m.name??"",props:new Proxy({},{get(w,i){return typeof i!="string"?Reflect.get(w,i):h(m,i,g,U)}})}:{name:m.name??"",props:void 0}}function h(g,U,m,w=!1){const i=d(g.id,U,m);if(w&&!i){const u=g.name??"unknown",P=m.name||"unknown";console.warn(`
2
+ Unable to access parent props "${U}" from route "${u}" while prefetching props for route "${P}".
3
3
  This may occur if the parent route's props were not also prefetched.
4
- `)}return d}function C(b,c,l){return[b,c,l.id,JSON.stringify(l.params)].join("-")}function v(b){return je(b)?[{id:b.id,name:"default",props:b.props}]:Ze(b)?Object.entries(b.props).map(([c,l])=>({id:b.id,name:c,props:l})):[]}function B(b){for(const c of r.keys())b.includes(c)||r.delete(c)}return{getPrefetchProps:s,setPrefetchProps:p,getProps:f,setProps:y,setVueApp:t}}function Me(){const t=i.inject(Fe);if(!t)throw new tt;return t}const un=i.defineAsyncComponent(()=>new Promise(t=>{t({default:{template:"foo"}})}));function We(t){return t.name===un.name&&"__asyncLoader"in t}const Ge=Symbol("visibilityObserver");function fn(t){const e=i.inject(Ge);if(!e)throw new tt;return i.watch(t,(n,o)=>{n&&e.observe(n),o&&e.unobserve(o)},{immediate:!0}),i.onUnmounted(()=>{t.value&&e.unobserve(t.value)}),{isElementVisible:i.computed(()=>t.value?e.isElementVisible(t.value):!1)}}function Qe(t,e,r){i.watch(t,(n,o)=>{n&&n.addEventListener(e,r),o&&o.removeEventListener(e,r)},{immediate:!0}),i.onUnmounted(()=>{t.value&&t.value.removeEventListener(e,r)})}function ln(t){const e=new Map,r=i.ref(),{getPrefetchProps:n,setPrefetchProps:o}=Me(),{isElementVisible:a}=fn(r),s=()=>{const f=Array.from(e.values()).reduce((g,w)=>(Object.assign(g,w),g),{});o(f)};i.watch(()=>i.toValue(t),({route:f,...g})=>{e.clear(),f&&y("eager",f,g)},{immediate:!0}),i.watch(a,f=>{const{route:g,...w}=i.toValue(t);!g||!f||y("lazy",g,w)},{immediate:!0}),Qe(r,"focusin",p),Qe(r,"mouseover",p);function p(){const{route:f,...g}=i.toValue(t);f&&y("intent",f,g)}function y(f,g,w){dn(f,g,w),e.has(f)||e.set(f,n(f,g,w))}return{element:r,commit:s}}function dn(t,e,r){e.matches.forEach(n=>{He({...r,routePrefetch:n.prefetch},"components")===t&&(xe(n)&&We(n.component)&&n.component.__asyncLoader(),Oe(n)&&Object.values(n.components).forEach(a=>{We(a)&&a.__asyncLoader()}))})}const ze=Symbol("isRouterRouteSymbol");function pn(t){return typeof t=="object"&&t!==null&&ze in t}function hn(t,e){function r(c,l,u){if(typeof c=="object"){const S={...t.params,...c};return e(t.name,S,l)}const d={...t.params,[c]:l};return e(t.name,d,u)}const n=(...c)=>{const l=new URLSearchParams(t.query);l.set(...c),r({},{query:l})},o=(...c)=>{const l=new URLSearchParams(t.query);l.append(...c),r({},{query:l})},a=(...c)=>{const l=new URLSearchParams(t.query);l.delete(...c),r({},{query:l})},{id:s,matched:p,matches:y,name:f,hash:g,href:w}=i.toRefs(t),C=i.computed({get(){return new Proxy(t.params,{set(c,l,u){return r(l,u),!0}})},set(c){r(c)}}),v=i.computed({get(){return new Proxy(t.query,{get(c,l,u){switch(l){case"append":return o;case"set":return n;case"delete":return a;default:return Reflect.get(c,l,u)}}})},set(c){r({},{query:c})}}),B=i.computed({get(){return new Proxy(t.state,{set(c,l,u){return r({},{state:{...t.state,[l]:u}}),!0}})},set(c){r({},{state:c})}});return i.reactive({id:s,matched:p,matches:y,state:B,query:v,hash:g,params:C,name:f,href:w,update:r,[ze]:!0})}function Bt(t,e,{exact:r}={}){return pn(t)?e===void 0?!0:r?t.matched.name===e:t.matches.map(n=>n.name).includes(e):!1}function oe(...t){const e=new URLSearchParams;for(const r of t){const n=new URLSearchParams(r);for(const[o,a]of n.entries())e.append(o,a)}return e}function Ke(t,e={},r={}){const n=Rt(),o=i.computed(()=>{const c=i.toValue(t);return typeof c!="string"?c:Z(c)?n.find(c,i.toValue(r)):n.resolve(c,i.toValue(e),i.toValue(r))}),a=i.computed(()=>{if(o.value)return o.value.href;const c=i.toValue(t);if(Z(c))return c;console.error(new Error("Failed to resolve route in RouterLink."))}),s=i.computed(()=>Bt(n.route)&&n.route.matches.some(c=>{var l;return c.id===((l=o.value)==null?void 0:l.id)})),p=i.computed(()=>{var c;return n.route.id===((c=o.value)==null?void 0:c.id)}),y=i.computed(()=>Bt(n.route)&&Vr(o.value)&&n.route.href.startsWith(o.value.href)),f=i.computed(()=>{var c;return n.route.href===((c=o.value)==null?void 0:c.href)}),g=i.computed(()=>!!a.value&&n.isExternal(a.value)),w=i.computed(()=>{const c=i.toValue(t);return typeof c!="string"||Z(c)?i.toValue(e):i.toValue(r)}),{element:C,commit:v}=ln(()=>({route:o.value,routerPrefetch:n.prefetch,linkPrefetch:w.value.prefetch})),B=c=>{v();const l={replace:(c==null?void 0:c.replace)??w.value.replace,query:oe(w.value.query,c==null?void 0:c.query),hash:(c==null?void 0:c.hash)??w.value.hash,state:{...w.value.state,...c==null?void 0:c.state}},u=i.toValue(t);return Z(u)||typeof u=="object"?n.push(u,l):n.push(u,i.toValue(e),l)};return{element:C,route:o,href:a,isMatch:s,isExactMatch:p,isActive:y,isExactActive:f,isExternal:g,push:B,replace:c=>B({...c,replace:!0})}}const yn=["href"],mn={name:"RouterLink"},Ye=i.defineComponent({...mn,props:{to:{},prefetch:{type:[Boolean,String,Object],default:void 0},query:{},hash:{},replace:{type:Boolean},state:{}},setup(t){const e=t,r=Rt(),n=i.computed(()=>B(e.to)),o=i.computed(()=>b(e.to)),a=i.computed(()=>{const{to:l,...u}=e;return u}),{element:s,isMatch:p,isExactMatch:y,isActive:f,isExactActive:g,isExternal:w,push:C}=Ke(()=>typeof e.to=="function"?e.to(r.resolve):e.to,a),v=i.computed(()=>({"router-link--match":p.value,"router-link--exact-match":y.value,"router-link--active":f.value,"router-link--exact-active":g.value}));function B(l){if(typeof l=="function"){const u=l(r.resolve);return B(u)}return Z(l)?r.find(l):l}function b(l){if(typeof l=="function"){const u=l(r.resolve);return b(u)}return Z(l)?l:l==null?void 0:l.href}function c(l){l.preventDefault(),C()}return(l,u)=>(i.openBlock(),i.createElementBlock("a",{ref_key:"element",ref:s,href:o.value,class:i.normalizeClass(["router-link",v.value]),onClick:c},[i.renderSlot(l.$slots,"default",i.normalizeProps(i.guardReactiveProps({route:n.value,isMatch:i.unref(p),isExactMatch:i.unref(y),isActive:i.unref(f),isExactActive:i.unref(g),isExternal:i.unref(w)})))],10,yn))}}),Xe=Symbol();function gn(){const t=i.inject(Xe);if(!t)throw new tt;return t}function xt(t,e){const r=Rt();function n(){if(!t)return;if(!Bt(r.route,t,e))throw new ye(t,r.route.name)}return i.watch(r.route,n,{immediate:!0,deep:!0}),r.route}const tr=Symbol();function ae(){return i.inject(tr,0)}function Rn(t,e,r){return i.defineComponent({name:"PropsWrapper",expose:[],setup(){const n=i.getCurrentInstance(),o=Me(),a=xt();return()=>{const s=o.getProps(t.id,e,a);return s instanceof Error?"":Dt(s)?n!=null&&n.suspense?i.h(En,{component:r,props:s}):i.h(wn,{component:r,props:s}):i.h(r,s)}}})}const wn=i.defineComponent(t=>{const e=i.ref();return i.watch(()=>t.props,async r=>{e.value=await r},{immediate:!0,deep:!0}),()=>e.value instanceof Error?"":e.value?i.h(t.component,e.value):""},{props:["component","props"]}),En=i.defineComponent(async t=>{const e=i.ref();return e.value=await t.props,i.watch(()=>e.value,async r=>{e.value=await r},{deep:!0}),()=>e.value instanceof Error?"":e.value?i.h(t.component,e.value):""},{props:["component","props"]}),er=Symbol();function bn(){const t=new Map;return{getRouteComponents:r=>{const n=t.get(r.id);if(n)return n;const o=Sn(r);return t.set(r.id,o),o}}}function Sn(t){return Oe(t)?rr(t,t.components):xe(t)?rr(t,{default:t.component}):{default:se}}function rr(t,e){return Object.fromEntries(Object.entries(e).map(([r,n])=>[r,Rn(t,r,n)]))}function Pn(){const t=i.inject(er);if(!t)throw new tt;return t}const An={name:"RouterView"},se=i.defineComponent({...An,props:{name:{default:"default"}},setup(t){const e=xt(),r=Rt(),n=gn(),o=ae();i.onServerPrefetch(async()=>{await r.start()});const{getRouteComponents:a}=Pn();i.provide(tr,o+1);const s=i.computed(()=>{if(!r.started.value)return null;if(n.value)return n.value.component;const p=e.matches.at(o);return p?a(p)[t.name]:null});return(p,y)=>s.value?i.renderSlot(p.$slots,"default",i.normalizeProps(i.mergeProps({key:0},{route:i.unref(e),component:s.value,rejection:i.unref(n)})),()=>[(i.openBlock(),i.createBlock(i.resolveDynamicComponent(s.value)))]):i.createCommentVNode("",!0)}});function vn(t,e=String){const r=xt(),n=i.computed({get(){const a=r.query.get(i.toValue(t));return a===null?null:Wt(a,e)},set(a){r.query.set(i.toValue(t),z(a,e))}}),o=i.computed({get(){return r.query.getAll(i.toValue(t)).map(s=>Wt(s,e)).filter(s=>s!==null)},set(a){const s=new URLSearchParams(r.query);s.delete(i.toValue(t)),a.forEach(p=>{s.append(i.toValue(t),z(p,e))}),r.query=s}});return{value:n,values:o,remove:()=>{r.query.delete(i.toValue(t))}}}class ot{constructor(){G(this,"onBeforeRouteEnter",new Set);G(this,"onBeforeRouteUpdate",new Set);G(this,"onBeforeRouteLeave",new Set);G(this,"onAfterRouteEnter",new Set);G(this,"onAfterRouteUpdate",new Set);G(this,"onAfterRouteLeave",new Set)}}const Et=(t,e,r)=>{var a,s;const n=t.matches,o=(e==null?void 0:e.matches)??[];return((a=n.at(r))==null?void 0:a.id)!==((s=o.at(r))==null?void 0:s.id)},bt=(t,e,r)=>{var a,s;const n=t.matches,o=(e==null?void 0:e.matches)??[];return((a=n.at(r))==null?void 0:a.id)!==((s=o.at(r))==null?void 0:s.id)},St=(t,e,r)=>{var n,o;return((n=t.matches.at(r))==null?void 0:n.id)===((o=e==null?void 0:e.matches.at(r))==null?void 0:o.id)};function nr(t){switch(t){case"onBeforeRouteEnter":case"onAfterRouteEnter":return Et;case"onBeforeRouteUpdate":case"onAfterRouteUpdate":return St;case"onBeforeRouteLeave":case"onAfterRouteLeave":return bt;default:throw new Error(`Switch is not exhaustive for lifecycle: ${t}`)}}function kn(t,e){const r=new ot;return t.matches.forEach((n,o)=>{n.onBeforeRouteEnter&&Et(t,e,o)&&it(n.onBeforeRouteEnter).forEach(a=>r.onBeforeRouteEnter.add(a)),n.onBeforeRouteUpdate&&St(t,e,o)&&it(n.onBeforeRouteUpdate).forEach(a=>r.onBeforeRouteUpdate.add(a))}),e==null||e.matches.forEach((n,o)=>{n.onBeforeRouteLeave&&bt(t,e,o)&&it(n.onBeforeRouteLeave).forEach(a=>r.onBeforeRouteLeave.add(a))}),r}function Un(t,e){const r=new ot;return t.matches.forEach((n,o)=>{n.onAfterRouteEnter&&Et(t,e,o)&&it(n.onAfterRouteEnter).forEach(a=>r.onAfterRouteEnter.add(a)),n.onAfterRouteUpdate&&St(t,e,o)&&it(n.onAfterRouteUpdate).forEach(a=>r.onAfterRouteUpdate.add(a))}),e==null||e.matches.forEach((n,o)=>{n.onAfterRouteLeave&&bt(t,e,o)&&it(n.onAfterRouteLeave).forEach(a=>r.onAfterRouteLeave.add(a))}),r}function Ln(t,e,r){const n=new ot;return t.matches.forEach((o,a)=>{Et(t,e,a)&&r.onBeforeRouteEnter.forEach(s=>n.onBeforeRouteEnter.add(s)),St(t,e,a)&&r.onBeforeRouteUpdate.forEach(s=>n.onBeforeRouteUpdate.add(s))}),e==null||e.matches.forEach((o,a)=>{bt(t,e,a)&&r.onBeforeRouteLeave.forEach(s=>n.onBeforeRouteLeave.add(s))}),n}function Nn(t,e,r){const n=new ot;return t.matches.forEach((o,a)=>{Et(t,e,a)&&r.onAfterRouteEnter.forEach(s=>n.onAfterRouteEnter.add(s)),St(t,e,a)&&r.onAfterRouteUpdate.forEach(s=>n.onAfterRouteUpdate.add(s))}),e==null||e.matches.forEach((o,a)=>{bt(t,e,a)&&r.onAfterRouteLeave.forEach(s=>n.onAfterRouteLeave.add(s))}),n}const or=Symbol();function Vn(){const{setVueApp:t,runWithContext:e}=Te(),r={global:new ot,component:new ot},{reject:n,push:o,replace:a,abort:s}=De(),p=u=>(r.global.onBeforeRouteEnter.add(u),()=>r.global.onBeforeRouteEnter.delete(u)),y=u=>(r.global.onBeforeRouteUpdate.add(u),()=>r.global.onBeforeRouteUpdate.delete(u)),f=u=>(r.global.onBeforeRouteLeave.add(u),()=>r.global.onBeforeRouteLeave.delete(u)),g=u=>(r.global.onAfterRouteEnter.add(u),()=>r.global.onAfterRouteEnter.delete(u)),w=u=>(r.global.onAfterRouteUpdate.add(u),()=>r.global.onAfterRouteUpdate.delete(u)),C=u=>(r.global.onAfterRouteLeave.add(u),()=>r.global.onAfterRouteLeave.delete(u));async function v({to:u,from:d}){const{global:S,component:U}=r,k=kn(u,d),R=Ln(u,d,S),h=[...R.onBeforeRouteEnter,...k.onBeforeRouteEnter,...R.onBeforeRouteUpdate,...k.onBeforeRouteUpdate,...U.onBeforeRouteUpdate,...R.onBeforeRouteLeave,...k.onBeforeRouteLeave,...U.onBeforeRouteLeave];try{const m=h.map(L=>e(()=>L(u,{from:d,reject:n,push:o,replace:a,abort:s})));await Promise.all(m)}catch(m){if(m instanceof ht||m instanceof Ct||m instanceof Ie)return m.response;throw m}return{status:"SUCCESS"}}async function B({to:u,from:d}){const{global:S,component:U}=r,k=Un(u,d),R=Nn(u,d,S),h=[...U.onAfterRouteLeave,...k.onAfterRouteLeave,...R.onAfterRouteLeave,...U.onAfterRouteUpdate,...k.onAfterRouteUpdate,...R.onAfterRouteUpdate,...U.onAfterRouteEnter,...k.onAfterRouteEnter,...R.onAfterRouteEnter];try{const m=h.map(L=>e(()=>L(u,{from:d,reject:n,push:o,replace:a})));await Promise.all(m)}catch(m){if(m instanceof ht||m instanceof Ct)return m.response;throw m}return{status:"SUCCESS"}}return{runBeforeRouteHooks:v,runAfterRouteHooks:B,addComponentBeforeRouteHook:({lifecycle:u,depth:d,hook:S})=>{const U=nr(u),k=r.component[u],R=(h,m)=>{if(U(h,m.from,d))return S(h,m)};return k.add(R),()=>k.delete(R)},addComponentAfterRouteHook:({lifecycle:u,depth:d,hook:S})=>{const U=nr(u),k=r.component[u],R=(h,m)=>{if(U(h,m.from,d))return S(h,m)};return k.add(R),()=>k.delete(R)},addGlobalRouteHooks:u=>{u.onBeforeRouteEnter.forEach(d=>p(d)),u.onBeforeRouteUpdate.forEach(d=>y(d)),u.onBeforeRouteLeave.forEach(d=>f(d)),u.onAfterRouteEnter.forEach(d=>g(d)),u.onAfterRouteUpdate.forEach(d=>w(d)),u.onAfterRouteLeave.forEach(d=>C(d))},onBeforeRouteEnter:p,onBeforeRouteUpdate:y,onBeforeRouteLeave:f,onAfterRouteEnter:g,onAfterRouteUpdate:w,onAfterRouteLeave:C,setVueApp:t}}function ar(){const t=i.inject(or);if(!t)throw new tt;return t}function sr(t){return e=>{const r=ae(),o=ar().addComponentBeforeRouteHook({lifecycle:t,hook:e,depth:r-1});return i.onUnmounted(o),o}}function ir(t){return e=>{const r=ae(),o=ar().addComponentAfterRouteHook({lifecycle:t,hook:e,depth:r-1});return i.onUnmounted(o),o}}const Cn=sr("onBeforeRouteLeave"),Bn=sr("onBeforeRouteUpdate"),xn=ir("onAfterRouteLeave"),jn=ir("onAfterRouteUpdate");function Y(){return Y=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)({}).hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},Y.apply(null,arguments)}var _;(function(t){t.Pop="POP",t.Push="PUSH",t.Replace="REPLACE"})(_||(_={}));var yt=process.env.NODE_ENV!=="production"?function(t){return Object.freeze(t)}:function(t){return t};function at(t,e){if(!t){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}var jt="beforeunload",On="hashchange",cr="popstate";function ur(t){t===void 0&&(t={});var e=t,r=e.window,n=r===void 0?document.defaultView:r,o=n.history;function a(){var R=n.location,h=R.pathname,m=R.search,L=R.hash,V=o.state||{};return[V.idx,yt({pathname:h,search:m,hash:L,state:V.usr||null,key:V.key||"default"})]}var s=null;function p(){if(s)v.call(s),s=null;else{var R=_.Pop,h=a(),m=h[0],L=h[1];if(v.length)if(m!=null){var V=g-m;V&&(s={action:R,location:L,retry:function(){U(V*-1)}},U(V))}else process.env.NODE_ENV!=="production"&&at(!1,"You are trying to block a POP navigation to a location that was not created by the history library. The block will fail silently in production, but in general you should do all navigation with the history library (instead of using window.history.pushState directly) to avoid this situation.");else u(R)}}n.addEventListener(cr,p);var y=_.Pop,f=a(),g=f[0],w=f[1],C=mt(),v=mt();g==null&&(g=0,o.replaceState(Y({},o.state,{idx:g}),""));function B(R){return typeof R=="string"?R:st(R)}function b(R,h){return h===void 0&&(h=null),yt(Y({pathname:w.pathname,hash:"",search:""},typeof R=="string"?Pt(R):R,{state:h,key:Zt()}))}function c(R,h){return[{usr:R.state,key:R.key,idx:h},B(R)]}function l(R,h,m){return!v.length||(v.call({action:R,location:h,retry:m}),!1)}function u(R){y=R;var h=a();g=h[0],w=h[1],C.call({action:y,location:w})}function d(R,h){var m=_.Push,L=b(R,h);function V(){d(R,h)}if(l(m,L,V)){var O=c(L,g+1),$=O[0],H=O[1];try{o.pushState($,"",H)}catch{n.location.assign(H)}u(m)}}function S(R,h){var m=_.Replace,L=b(R,h);function V(){S(R,h)}if(l(m,L,V)){var O=c(L,g),$=O[0],H=O[1];o.replaceState($,"",H),u(m)}}function U(R){o.go(R)}var k={get action(){return y},get location(){return w},createHref:B,push:d,replace:S,go:U,back:function(){U(-1)},forward:function(){U(1)},listen:function(h){return C.push(h)},block:function(h){var m=v.push(h);return v.length===1&&n.addEventListener(jt,Ot),function(){m(),v.length||n.removeEventListener(jt,Ot)}}};return k}function Zn(t){t===void 0&&(t={});var e=t,r=e.window,n=r===void 0?document.defaultView:r,o=n.history;function a(){var h=Pt(n.location.hash.substr(1)),m=h.pathname,L=m===void 0?"/":m,V=h.search,O=V===void 0?"":V,$=h.hash,H=$===void 0?"":$,I=o.state||{};return[I.idx,yt({pathname:L,search:O,hash:H,state:I.usr||null,key:I.key||"default"})]}var s=null;function p(){if(s)v.call(s),s=null;else{var h=_.Pop,m=a(),L=m[0],V=m[1];if(v.length)if(L!=null){var O=g-L;O&&(s={action:h,location:V,retry:function(){k(O*-1)}},k(O))}else process.env.NODE_ENV!=="production"&&at(!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(h)}}n.addEventListener(cr,p),n.addEventListener(On,function(){var h=a(),m=h[1];st(m)!==st(w)&&p()});var y=_.Pop,f=a(),g=f[0],w=f[1],C=mt(),v=mt();g==null&&(g=0,o.replaceState(Y({},o.state,{idx:g}),""));function B(){var h=document.querySelector("base"),m="";if(h&&h.getAttribute("href")){var L=n.location.href,V=L.indexOf("#");m=V===-1?L:L.slice(0,V)}return m}function b(h){return B()+"#"+(typeof h=="string"?h:st(h))}function c(h,m){return m===void 0&&(m=null),yt(Y({pathname:w.pathname,hash:"",search:""},typeof h=="string"?Pt(h):h,{state:m,key:Zt()}))}function l(h,m){return[{usr:h.state,key:h.key,idx:m},b(h)]}function u(h,m,L){return!v.length||(v.call({action:h,location:m,retry:L}),!1)}function d(h){y=h;var m=a();g=m[0],w=m[1],C.call({action:y,location:w})}function S(h,m){var L=_.Push,V=c(h,m);function O(){S(h,m)}if(process.env.NODE_ENV!=="production"&&at(V.pathname.charAt(0)==="/","Relative pathnames are not supported in hash history.push("+JSON.stringify(h)+")"),u(L,V,O)){var $=l(V,g+1),H=$[0],I=$[1];try{o.pushState(H,"",I)}catch{n.location.assign(I)}d(L)}}function U(h,m){var L=_.Replace,V=c(h,m);function O(){U(h,m)}if(process.env.NODE_ENV!=="production"&&at(V.pathname.charAt(0)==="/","Relative pathnames are not supported in hash history.replace("+JSON.stringify(h)+")"),u(L,V,O)){var $=l(V,g),H=$[0],I=$[1];o.replaceState(H,"",I),d(L)}}function k(h){o.go(h)}var R={get action(){return y},get location(){return w},createHref:b,push:S,replace:U,go:k,back:function(){k(-1)},forward:function(){k(1)},listen:function(m){return C.push(m)},block:function(m){var L=v.push(m);return v.length===1&&n.addEventListener(jt,Ot),function(){L(),v.length||n.removeEventListener(jt,Ot)}}};return R}function fr(t){t===void 0&&(t={});var e=t,r=e.initialEntries,n=r===void 0?["/"]:r,o=e.initialIndex,a=n.map(function(d){var S=yt(Y({pathname:"/",search:"",hash:"",state:null,key:Zt()},typeof d=="string"?Pt(d):d));return process.env.NODE_ENV!=="production"&&at(S.pathname.charAt(0)==="/","Relative pathnames are not supported in createMemoryHistory({ initialEntries }) (invalid entry: "+JSON.stringify(d)+")"),S}),s=lr(o??a.length-1,0,a.length-1),p=_.Pop,y=a[s],f=mt(),g=mt();function w(d){return typeof d=="string"?d:st(d)}function C(d,S){return S===void 0&&(S=null),yt(Y({pathname:y.pathname,search:"",hash:""},typeof d=="string"?Pt(d):d,{state:S,key:Zt()}))}function v(d,S,U){return!g.length||(g.call({action:d,location:S,retry:U}),!1)}function B(d,S){p=d,y=S,f.call({action:p,location:y})}function b(d,S){var U=_.Push,k=C(d,S);function R(){b(d,S)}process.env.NODE_ENV!=="production"&&at(y.pathname.charAt(0)==="/","Relative pathnames are not supported in memory history.push("+JSON.stringify(d)+")"),v(U,k,R)&&(s+=1,a.splice(s,a.length,k),B(U,k))}function c(d,S){var U=_.Replace,k=C(d,S);function R(){c(d,S)}process.env.NODE_ENV!=="production"&&at(y.pathname.charAt(0)==="/","Relative pathnames are not supported in memory history.replace("+JSON.stringify(d)+")"),v(U,k,R)&&(a[s]=k,B(U,k))}function l(d){var S=lr(s+d,0,a.length-1),U=_.Pop,k=a[S];function R(){l(d)}v(U,k,R)&&(s=S,B(U,k))}var u={get index(){return s},get action(){return p},get location(){return y},createHref:w,push:b,replace:c,go:l,back:function(){l(-1)},forward:function(){l(1)},listen:function(S){return f.push(S)},block:function(S){return g.push(S)}};return u}function lr(t,e,r){return Math.min(Math.max(t,e),r)}function Ot(t){t.preventDefault(),t.returnValue=""}function mt(){var t=[];return{get length(){return t.length},push:function(r){return t.push(r),function(){t=t.filter(function(n){return n!==r})}},call:function(r){t.forEach(function(n){return n&&n(r)})}}}function Zt(){return Math.random().toString(36).substr(2,8)}function st(t){var e=t.pathname,r=e===void 0?"/":e,n=t.search,o=n===void 0?"":n,a=t.hash,s=a===void 0?"":a;return o&&o!=="?"&&(r+=o.charAt(0)==="?"?o:"?"+o),s&&s!=="#"&&(r+=s.charAt(0)==="#"?s:"#"+s),r}function Pt(t){var e={};if(t){var r=t.indexOf("#");r>=0&&(e.hash=t.substr(r),t=t.substr(0,r));var n=t.indexOf("?");n>=0&&(e.search=t.substr(n),t=t.substr(0,n)),t&&(e.pathname=t)}return e}const dr=Symbol();function $n(t,e){const r=i.reactive({...t}),n=s=>{Object.assign(r,{[dr]:!1,...s})},o=r,a=hn(o,e);return{currentRoute:o,routerRoute:a,updateRoute:n}}function q(t){return!t.startsWith("http")?qn(t):_n(t)}function _n(t){const{protocol:e,host:r,pathname:n,search:o,searchParams:a,hash:s}=new URL(t,t);return{protocol:e,host:r,pathname:n,search:o,searchParams:a,hash:s}}function qn(t){const{pathname:e,search:r,searchParams:n,hash:o}=new URL(t,"https://localhost");return{pathname:e,search:r,searchParams:n,hash:o}}function Hn(t){return e=>{const{host:r}=q(e);return!(r===void 0||r===t)}}function In({mode:t,listener:e}){const r=Dn(t),n=(y,f)=>{if(f!=null&&f.replace){r.replace(y,f.state);return}r.push(y,f==null?void 0:f.state)},o=()=>{const y=st(r.location);r.replace(y)};let a;return{...r,update:n,refresh:o,startListening:()=>{a==null||a(),a=r.listen(e)},stopListening:()=>{a==null||a()}}}function Dn(t="auto"){switch(t){case"auto":return Yt()?ur():fr();case"browser":return ur();case"memory":return fr();case"hash":return Zn();default:const e=t;throw new Error(`Switch is not exhaustive for mode: ${e}`)}}function Jn(t){return i.defineComponent(()=>()=>i.h("h1",t),{name:t,props:[]})}function Tn(t){const e=a=>i.markRaw(t[a]??Jn(a)),r=a=>{const s=i.markRaw(e(a)),p={id:ee(),component:s,meta:{},state:{}};return{id:p.id,matched:p,matches:[p],name:a,query:Xt(""),params:{},state:{},href:"/",hash:"",[dr]:!0}},n=a=>{if(!a){o.value=null;return}const s=e(a);o.value={type:a,component:s}},o=i.ref(null);return{setRejection:n,rejection:o,getRejectionRoute:r}}class Fn extends Error{constructor(){super("initialUrl must be set if window.location is unavailable")}}function Mn(t){if(t)return t;if(Yt())return window.location.toString();throw new Fn}function pr(t){return!!t&&typeof t=="object"}const $t=!0;function Wn(t,e,r){if(pr(t)&&e in t){const n=t[e];return typeof n=="string"?et(n,r,$t):n}return et(void 0,r,$t)}function hr(t,e){const r={};for(const[n,o]of Object.entries(t)){const a=Wn(e,n,o);r[n]=a}return r}function Gn(t,e,r){if(pr(t)&&e in t){const n=t[e];return z(n,r,$t)}return z(void 0,r,$t)}const yr=(t,e)=>{const r={};for(const[n,o]of Object.entries(t)){const a=Gn(e,n,o);r[n]=a}return r};function Qn(){const t=i.reactive(new Map),e=Yt()?s():null,r=p=>{t.set(p,!1),e==null||e.observe(p)},n=p=>{t.delete(p),e==null||e.unobserve(p)},o=()=>{e==null||e.disconnect()},a=p=>t.get(p)??!1;function s(){return new IntersectionObserver(p=>{p.forEach(y=>{t.set(y.target,y.isIntersecting)})})}return{observe:r,unobserve:n,disconnect:o,isElementVisible:a}}class zn extends Error{constructor(e){super(`Route not found: "${e}"`)}}function mr(t,e,r){const n=Jr(e.value,r),o=Le(n),[a]=Ve(t,new RegExp(o,"g"));return a}function gr(t,e,r,n){const o=Qt(e,r),a=z(n,e.params[r],o);return t.replace(Ne(r),a)}function Rr({protocol:t,host:e,pathname:r,search:n,searchParams:o,hash:a}){const s=new URL("https://localhost");t&&(s.protocol=t),e&&(s.host=e),r&&(s.pathname=r),o?s.search=new URLSearchParams(o).toString():n&&(s.search=n),a&&(s.hash=a);const p=s.toString().replace(/^https:\/\/localhost\/*/,"/");return _t(p)}function Kn(t,e={}){const{params:r={},query:n}=e,o=Xn(t.query,r),a=oe(o,n),s=wr(t.path,r),p=t.hash.value?wr(t.hash,r):e.hash,y=Yn(t.host,r),{protocol:f,host:g}=q(y);return Rr({protocol:f,host:g,pathname:s,searchParams:a,hash:p})}function Yn(t,e){const r=t.value&&!t.value.startsWith("http")?`https://${t.value}`:t.value;return Object.keys(t.params).reduce((n,o)=>gr(n,t,o,e[o]),r)}function wr(t,e){return Object.keys(t.params).reduce((r,n)=>gr(r,t,n,e[n]),t.value)}function Xn(t,e){const r=new URLSearchParams(t.value);if(!t.value)return r;for(const[n,o]of Array.from(r.entries())){const a=Kt(o);if(!a)continue;const p=zt(o),y=z(e[a],t.params[a],p),f=e[a]===void 0&&y==="";p&&f?r.delete(n,o):r.set(n,y)}return r}const to=(t,e)=>{try{ie(t,e)}catch{return!1}return!0},ie=(t,e)=>{const{protocol:r,host:n,pathname:o,search:a,hash:s}=q(e);return{...ce(t.host,`${r}//${n}`),...ce(t.path,o),...eo(t.query,a),...ce(t.hash,s)}};function ce(t,e){const r={},n=decodeURIComponent(e);for(const[o,a]of Object.entries(t.params)){const s=mr(n,t,o),p=Qt(t,o),y=et(s,a,p);r[o]=y}return r}function eo(t,e){const r={},n=new URLSearchParams(t.value),o=new URLSearchParams(e);for(const[a,s]of Array.from(n.entries())){const p=Kt(s);if(!p)continue;const f=zt(s),g=o.get(a)??void 0,w=et(g,t.params[p],f);r[p]=w}return r}function ro(t,e={},r={}){const n=Kn(t,{params:e,query:r.query,hash:r.hash}),{search:o,hash:a}=q(n);return{id:t.id,matched:t.matched,matches:t.matches,name:t.name,query:Xt(o),params:ie(t,n),state:hr(t.state,r.state),hash:a,href:n}}const no=t=>"name"in t.matched&&!!t.matched.name,oo=(t,e)=>{const{pathname:r}=q(e);return Ir(t).test(r)},ao=(t,e)=>{const{search:r}=q(e);return Dr(t).every(o=>o.test(r))},ue=(t,e)=>{const{hash:r}=q(e),{value:n}=t.hash;return F(n)?`#${n.replace(/^#*/,"")}`.toLowerCase()===r.toLowerCase():!0};function so(t){const{searchParams:e,pathname:r}=q(t),n=-1,o=1;return(a,s)=>{const p=br(a,e),y=Er(a,r),f=br(s,e),g=Er(s,r);return a.depth>s.depth?n:a.depth<s.depth?o:p+y>f+g?n:p+y<f+g?o:ue(a,t)?n:ue(s,t)?o:0}}function Er(t,e){const r=Object.keys(t.path.params).filter(o=>Qt(t.path,o)).map(o=>o),n=r.filter(o=>mr(e,t.path,o)===void 0);return r.length-n.length}function br(t,e){const r=new URLSearchParams(e),n=new URLSearchParams(t.query.value),o=Array.from(n.keys()),a=o.filter(s=>!r.has(s));return o.length-a.length}const io=[no,oo,ao,ue,to];function co(t,e){const r=so(e);return t.filter(n=>io.every(o=>o(n,e))).sort(r)}function uo(t,e,r){const n=co(t,e);if(!n.length)return;const[o]=n,{searchParams:a,hash:s}=q(e);return{id:o.id,matched:o.matched,matches:o.matches,name:o.name,query:Xt(a),params:ie(o,e),state:hr(o.state,r),hash:s,href:_t(e)}}function Sr(t,e){const r=typeof t=="string"?q(t):t,n=typeof e=="string"?q(e):e,o=r.searchParams??new URLSearchParams(r.search),a=n.searchParams??new URLSearchParams(n.search);return Rr({protocol:F(n.protocol)?n.protocol:r.protocol,host:F(n.host)?n.host:r.host,pathname:F(n.pathname)?n.pathname:r.pathname,searchParams:oe(a,o),hash:F(n.hash)?n.hash:r.hash})}function fo(t,e){return F(e)?t.map(r=>{const n=`${e}${r.path.value}`;return{...r,path:M(n,r.path.params)}}):t}class lo extends Error{constructor(e){super(`Invalid Name "${e}": Router does not support multiple routes with the same name. All name names must be unique.`)}}function po(t){const e=t.map(({name:r})=>r);for(const r of e)if(ge(e,r)>1)throw new lo(r)}function ho(t,e=[],r){const n=[...t,...e.map(o=>o.routes)].flat();return po(n),fo(n,r)}function yo(t={},e=[]){const r=new ot;return gt("onBeforeRouteEnter",t,e).forEach(n=>r.onBeforeRouteEnter.add(n)),gt("onBeforeRouteUpdate",t,e).forEach(n=>r.onBeforeRouteUpdate.add(n)),gt("onBeforeRouteLeave",t,e).forEach(n=>r.onBeforeRouteLeave.add(n)),gt("onAfterRouteEnter",t,e).forEach(n=>r.onAfterRouteEnter.add(n)),gt("onAfterRouteUpdate",t,e).forEach(n=>r.onAfterRouteUpdate.add(n)),gt("onAfterRouteLeave",t,e).forEach(n=>r.onAfterRouteLeave.add(n)),r}function gt(t,e,r){return[e[t],...r.map(o=>o[t])].flat().filter(o=>o!==void 0)}function mo(t,e,r=[]){const n=ho(t,r,e==null?void 0:e.base),o=Vn();o.addGlobalRouteHooks(yo(e,r));const a=te(),s=cn(),p=bn(),y=Qn(),f=In({mode:e==null?void 0:e.historyMode,listener:({location:P})=>{const x=st(P);w(x,{state:P.state,replace:!0})}});function g(P,x={}){return uo(n,P,x.state)}async function w(P,x={}){const K=a();if(f.stopListening(),L(P)){f.update(P,x);return}const J=g(P,x)??u("NotFound"),D=ko(K),X=await o.runBeforeRouteHooks({to:J,from:D});switch(X.status){case"ABORT":return;case"PUSH":f.update(P,x),await v(...X.to);return;case"REJECT":f.update(P,x),c(X.type);break;case"SUCCESS":f.update(P,x),c(null);break;default:throw new Error(`Switch is not exhaustive for before hook response status: ${JSON.stringify(X)}`)}const fe=K;s.setProps(J).then(T=>{if(fe===K)switch(T.status){case"SUCCESS":break;case"PUSH":v(...T.to);break;case"REJECT":c(T.type);break;default:const le=T;throw new Error(`Switch is not exhaustive for prop store response status: ${JSON.stringify(le)}`)}}),k(J);const W=await o.runAfterRouteHooks({to:J,from:D});switch(W.status){case"PUSH":await v(...W.to);break;case"REJECT":c(W.type);break;case"SUCCESS":break;default:const T=W;throw new Error(`Switch is not exhaustive for after hook response status: ${JSON.stringify(T)}`)}f.startListening()}const C=(P,x={},K={})=>{const J=n.find(D=>D.name===P);if(!J)throw new zn(String(P));return ro(J,x,K)},v=(P,x,K)=>{if(Z(P)){const W={...x},T=Sr(P,{searchParams:W.query,hash:W.hash});return w(T,W)}if(typeof P=="string"){const{replace:W,...T}={...K},le={...x},de=C(P,le,T),Lo=yr({...de.matched.state},{...de.state,...T.state});return w(de.href,{replace:W,state:Lo})}const{replace:J,...D}={...x},X=yr({...P.matched.state},{...P.state,...D.state}),fe=Sr(P.href,{searchParams:D.query,hash:D.hash});return w(fe,{replace:J,state:X})},B=(P,x,K)=>{if(Z(P)){const D={...x,replace:!0};return v(P,D)}if(typeof P=="string"){const D={...K,replace:!0},X={...x};return v(P,X,D)}const J={...x,replace:!0};return v(P,J)},b=P=>{c(P)},{setRejection:c,rejection:l,getRejectionRoute:u}=Tn({...r.reduce((P,x)=>({...P,...x.rejections}),{}),...e==null?void 0:e.rejections}),d=u("NotFound"),{currentRoute:S,routerRoute:U,updateRoute:k}=$n(d,v),R=Mn(e==null?void 0:e.initialUrl),h=f.location.state,{host:m}=q(R),L=Hn(m);let V=!1;const O=i.ref(!1),{promise:$,resolve:H}=Promise.withResolvers();async function I(){if(V)return $;V=!0,Br(n)&&await xr(),await w(R,{replace:!0,state:h}),f.startListening(),H(),O.value=!0}function Ar(){f.stopListening()}function ko(P){return rn(P)?null:{...S}}function Uo(P){o.setVueApp(P),s.setVueApp(P),P.component("RouterView",se),P.component("RouterLink",Ye),P.provide(Xe,l),P.provide(or,o),P.provide(Fe,s),P.provide(er,p),P.provide(Ge,y),P.provide(me,vr),I()}const vr={route:U,resolve:C,find:g,push:v,replace:B,reject:b,refresh:f.refresh,forward:f.forward,back:f.back,go:f.go,install:Uo,isExternal:L,onBeforeRouteEnter:o.onBeforeRouteEnter,onBeforeRouteUpdate:o.onBeforeRouteUpdate,onBeforeRouteLeave:o.onBeforeRouteLeave,onAfterRouteEnter:o.onAfterRouteEnter,onAfterRouteUpdate:o.onAfterRouteUpdate,onAfterRouteLeave:o.onAfterRouteLeave,prefetch:e==null?void 0:e.prefetch,start:I,started:O,stop:Ar};return vr}function go(t){return{routes:t.routes??[],rejections:t.rejections??{},...t}}function Pr(t){return{get:(e,{invalid:r})=>{for(const n of t){const o=Wt(e,n);if(o!==void 0)return o}throw r(`Value ${e} does not satisfy any of the possible values`)},set:(e,{invalid:r})=>{for(const n of t){const o=qr(e,n);if(o!==void 0)return o}throw r(`Value ${e} does not satisfy any of the possible values`)}}}const Ro={separator:","};function wo(t,e={}){const{separator:r}={...Ro,...e},n=Pr(t);return{get:(o,a)=>o.split(r).map(s=>n.get(s,a)),set:(o,a)=>{if(!Array.isArray(o))throw a.invalid("Expected an array");return o.map(s=>n.set(s,a)).join(r)}}}const Eo={separator:","};function bo(t,e={}){const{separator:r}={...Eo,...e};return{get:n=>{const o=n.split(r);return t.map((a,s)=>et(o.at(s),a))},set:(n,{invalid:o})=>{if(!Array.isArray(n))throw o("Expected a tuple");if(n.length!==t.length)throw o(`Expected tuple with ${t.length} values but received ${n.length} values`);return t.map((a,s)=>z(n.at(s),a)).join(r)}}}const So=M,Po=M,Ao=M;function vo(t){const e=ee(),r=_e(t.name),n=rt(t.path),o=rt(t.query),a=rt(t.hash),s=t.meta??{},p=rt(t.host),y=i.markRaw({id:e,meta:{},state:{},...t}),f={id:e,matched:y,matches:[y],name:r,host:p,path:n,query:o,hash:a,meta:s,depth:1,state:{}},g=Be(t)?$e(t.parent,f):f;return ct(g.path.params,g.query.params,g.host.params,g.hash.params),g}A.DuplicateParamsError=pe,A.MetaPropertyConflict=he,A.RouterLink=Ye,A.RouterNotInstalledError=tt,A.RouterView=se,A.UseRouteInvalidError=ye,A.arrayOf=wo,A.asUrl=_t,A.createExternalRoute=vo,A.createParam=we,A.createRoute=nt,A.createRouter=mo,A.createRouterPlugin=go,A.host=Po,A.isRoute=Bt,A.isUrl=Z,A.onAfterRouteLeave=xn,A.onAfterRouteUpdate=jn,A.onBeforeRouteLeave=Cn,A.onBeforeRouteUpdate=Bn,A.path=So,A.query=Ao,A.tupleOf=bo,A.unionOf=Pr,A.useLink=Ke,A.useQueryValue=vn,A.useRoute=xt,A.useRouter=Rt,A.withDefault=Nr,A.withParams=M,Object.defineProperty(A,Symbol.toStringTag,{value:"Module"})});
4
+ `)}return i}function k(g,U,m){return[g,U,m.id,JSON.stringify(m.params)].join("-")}function S(g){return Xt(g)?[{id:g.id,name:"default",props:g.props}]:ee(g)?Object.entries(g.props).map(([U,m])=>({id:g.id,name:U,props:m})):[]}function B(g){for(const U of n.keys())g.includes(U)||n.delete(U)}return{getPrefetchProps:s,setPrefetchProps:c,getProps:d,setProps:f,setVueApp:t}}function le(){return typeof window<"u"&&typeof window.document<"u"}function Hr({mode:t,listener:e}){const n=$r(t),r=(f,d)=>{if(d?.replace){n.replace(f,d.state);return}n.push(f,d?.state)},o=()=>{const f=at(n.location);n.replace(f)};let a;return{...n,update:r,refresh:o,startListening:()=>{a?.(),a=n.listen(e)},stopListening:()=>{a?.()}}}function $r(t="auto"){switch(t){case"auto":return le()?un():fn();case"browser":return un();case"memory":return fn();case"hash":return Cr();default:const e=t;throw new Error(`Switch is not exhaustive for mode: ${e}`)}}function qr(t){return l.defineComponent(()=>()=>l.h("h1",t),{name:t,props:[]})}function pe(t){const e=new URLSearchParams(t);return{get:(...n)=>e.get(...n),getAll:(...n)=>e.getAll(...n),set:(...n)=>{e.set(...n)},append:(...n)=>{e.append(...n)},delete:(...n)=>{e.delete(...n)},toString:(...n)=>e.toString(...n),forEach:(...n)=>{e.forEach(...n)},entries:(...n)=>e.entries(...n),keys:(...n)=>e.keys(...n),values:(...n)=>e.values(...n),has:(...n)=>e.has(...n),size:e.size,sort:()=>{e.sort()},[Symbol.iterator]:()=>e[Symbol.iterator]()}}function Ir(t){const e=a=>l.markRaw(t[a]??qr(a)),n=a=>{const s=l.markRaw(e(a)),c={id:ae(),component:s,meta:{},state:{}};return{id:c.id,matched:c,matches:[c],name:a,query:pe(""),params:{},state:{},href:"/",hash:""}},r=a=>{if(!a){o.value=null;return}const s=e(a);o.value={type:a,component:s}},o=l.ref(null);return{setRejection:r,rejection:o,getRejectionRoute:n}}class Dr extends Error{constructor(){super("initialUrl must be set if window.location is unavailable")}}function _r(t){if(t)return t;if(le())return window.location.toString();throw new Dr}function dn(t){return!!t&&typeof t=="object"}const Zt=!0;function Jr(t,e,n){if(dn(t)&&e in t){const r=t[e];return typeof r=="string"?tt(r,n,Zt):r}return tt(void 0,n,Zt)}function hn(t,e){const n={};for(const[r,o]of Object.entries(t)){const a=Jr(e,r,o);n[r]=a}return n}function Tr(t,e,n){if(dn(t)&&e in t){const r=t[e];return Y(r,n,Zt)}return Y(void 0,n,Zt)}const mn=(t,e)=>{const n={};for(const[r,o]of Object.entries(t)){const a=Tr(e,r,o);n[r]=a}return n};function Mr(){const t=l.reactive(new Map),e=le()?s():null,n=c=>{t.set(c,!1),e?.observe(c)},r=c=>{t.delete(c),e?.unobserve(c)},o=()=>{e?.disconnect()},a=c=>t.get(c)??!1;function s(){return new IntersectionObserver(c=>{c.forEach(f=>{t.set(f.target,f.isIntersecting)})})}return{observe:n,unobserve:r,disconnect:o,isElementVisible:a}}class Fr extends Error{constructor(e){super(`Route not found: "${e}"`)}}function yn(t,e,n){const r=Fn(e.value,n),o=Be(r),[a]=xe(t,new RegExp(o,"g"));return a}function Rn(t,e,n,r){const o=Gt(e,n),a=Y(r,e.params[n],o);return t.replace(Oe(n),a)}function gn({protocol:t,host:e,pathname:n,search:r,searchParams:o,hash:a}){const s=new URL("https://localhost");t&&(s.protocol=t),e&&(s.host=e),n&&(s.pathname=n),o?s.search=new URLSearchParams(o).toString():r&&(s.search=r),a&&(s.hash=a);const c=s.toString().replace(/^https:\/\/localhost\/*/,"/");return re(c)}function Wr(t,e={}){const{params:n={},query:r}=e,o=Qr(t.query,n),a=fe(o,r),s=wn(t.path,n),c=t.hash.value?wn(t.hash,n):e.hash,f=Gr(t.host,n),{protocol:d,host:R}=q(f);return gn({protocol:d,host:R,pathname:s,searchParams:a,hash:c})}function Gr(t,e){const n=t.value&&!t.value.startsWith("http")?`https://${t.value}`:t.value;return Object.keys(t.params).reduce((r,o)=>Rn(r,t,o,e[o]),n)}function wn(t,e){return Object.keys(t.params).reduce((n,r)=>Rn(n,t,r,e[r]),t.value)}function Qr(t,e){const n=new URLSearchParams(t.value);if(!t.value)return n;for(const[r,o]of Array.from(n.entries())){const a=zt(o);if(!a)continue;const c=Qt(o),f=Y(e[a],t.params[a],c),d=e[a]===void 0&&f==="";c&&d?n.delete(r,o):n.set(r,f)}return n}const zr=(t,e)=>{try{de(t,e)}catch{return!1}return!0},de=(t,e)=>{const{protocol:n,host:r,pathname:o,search:a,hash:s}=q(e);return{...he(t.host,`${n}//${r}`),...he(t.path,o),...Yr(t.query,a),...he(t.hash,s)}};function he(t,e){const n={},r=decodeURIComponent(e);for(const[o,a]of Object.entries(t.params)){const s=yn(r,t,o),c=Gt(t,o),f=tt(s,a,c);n[o]=f}return n}function Yr(t,e){const n={},r=new URLSearchParams(t.value),o=new URLSearchParams(e);for(const[a,s]of Array.from(r.entries())){const c=zt(s);if(!c)continue;const d=Qt(s),R=o.get(a)??void 0,h=tt(R,t.params[c],d);n[c]=h}return n}function Kr(t,e={},n={}){const r=Wr(t,{params:e,query:n.query,hash:n.hash}),{search:o,hash:a}=q(r);return{id:t.id,matched:t.matched,matches:t.matches,name:t.name,query:pe(o),params:de(t,r),state:hn(t.state,n.state),hash:a,href:r}}const Ht={template:"<div>This is component</div>"},me=rt({name:"parentA",path:"/parentA/[paramA]"}),En=rt({parent:me,name:"parentA.childA",path:"/childA/[?paramB]"}),Xr=rt({parent:me,name:"parentA.childB",path:"/childB/[paramD]",component:Ht}),to=rt({parent:En,name:"parentA.childA.grandChildA",path:"/[paramC]",component:Ht});rt({name:"parentB",path:"/parentB",component:Ht}),rt({name:"parentC",path:"/",component:Ht});const eo=t=>"name"in t.matched&&!!t.matched.name,no=(t,e)=>{const{pathname:n}=q(e);return Tn(t).test(n)},ro=(t,e)=>{const{search:n}=q(e);return Mn(t).every(o=>o.test(n))},ye=(t,e)=>{const{hash:n}=q(e),{value:r}=t.hash;return D(r)?`#${r.replace(/^#*/,"")}`.toLowerCase()===n.toLowerCase():!0};function oo(t){const{searchParams:e,pathname:n}=q(t),r=-1,o=1;return(a,s)=>{const c=Sn(a,e),f=bn(a,n),d=Sn(s,e),R=bn(s,n);return a.depth>s.depth?r:a.depth<s.depth?o:c+f>d+R?r:c+f<d+R?o:ye(a,t)?r:ye(s,t)?o:0}}function bn(t,e){const n=Object.keys(t.path.params).filter(o=>Gt(t.path,o)).map(o=>o),r=n.filter(o=>yn(e,t.path,o)===void 0);return n.length-r.length}function Sn(t,e){const n=new URLSearchParams(e),r=new URLSearchParams(t.query.value),o=Array.from(r.keys()),a=o.filter(s=>!n.has(s));return o.length-a.length}const ao=[eo,no,ro,ye,zr];function so(t,e){const n=oo(e);return t.filter(r=>ao.every(o=>o(r,e))).sort(n)}function io(t,e,n){const r=so(t,e);if(!r.length)return;const[o]=r,{searchParams:a,hash:s}=q(e);return{id:o.id,matched:o.matched,matches:o.matches,name:o.name,query:pe(a),params:de(o,e),state:hn(o.state,n),hash:s,href:re(e)}}function Pn(t,e){const n=typeof t=="string"?q(t):t,r=typeof e=="string"?q(e):e,o=n.searchParams??new URLSearchParams(n.search),a=r.searchParams??new URLSearchParams(r.search);return gn({protocol:D(r.protocol)?r.protocol:n.protocol,host:D(r.host)?r.host:n.host,pathname:D(r.pathname)?r.pathname:n.pathname,searchParams:fe(a,o),hash:D(r.hash)?r.hash:n.hash})}function co(t,e){return D(e)?t.map(n=>{const r=`${e}${n.path.value}`;return{...n,path:G(r,n.path.params)}}):t}class uo extends Error{constructor(e){super(`Invalid Name "${e}": Router does not support multiple routes with the same name. All name names must be unique.`)}}function fo(t){const e=t.map(({name:n})=>n);for(const n of e)if(be(e,n)>1)throw new uo(n)}function lo(t,e=[],n){const r=[...t,...e.map(o=>o.routes)].flat().filter(o=>D(o.name));return fo(r),co(r,n)}function po(t={},e=[]){const n=new St;return yt("onBeforeRouteEnter",t,e).forEach(r=>n.onBeforeRouteEnter.add(r)),yt("onBeforeRouteUpdate",t,e).forEach(r=>n.onBeforeRouteUpdate.add(r)),yt("onBeforeRouteLeave",t,e).forEach(r=>n.onBeforeRouteLeave.add(r)),yt("onAfterRouteEnter",t,e).forEach(r=>n.onAfterRouteEnter.add(r)),yt("onAfterRouteUpdate",t,e).forEach(r=>n.onAfterRouteUpdate.add(r)),yt("onAfterRouteLeave",t,e).forEach(r=>n.onAfterRouteLeave.add(r)),n}function yt(t,e,n){return[e[t],...n.map(o=>o[t])].flat().filter(o=>o!==void 0)}function ho(t,{match:e,name:n,component:r}){const o=Ke(t),a=Ct(t);return l.defineComponent({name:"PropsWrapper",expose:[],setup(){const s=l.getCurrentInstance(),c=o(),f=a();return()=>{const d=c.getProps(e.id,n,f);return d instanceof Error?"":Dt(d)?s?.suspense?l.h(yo,{component:r,props:d}):l.h(mo,{component:r,props:d}):l.h(r,d)}}})}const mo=l.defineComponent(t=>{const e=l.ref();return l.watch(()=>t.props,async n=>{e.value=await n},{immediate:!0,deep:!0}),()=>e.value instanceof Error?"":e.value?l.h(t.component,e.value):""},{props:["component","props"]}),yo=l.defineComponent(async t=>{const e=l.ref();return e.value=await t.props,l.watch(()=>e.value,async n=>{e.value=await n},{deep:!0}),()=>e.value instanceof Error?"":e.value?l.h(t.component,e.value):""},{props:["component","props"]});function Ro(t){const e=new Map;return{getRouteComponents:r=>{const o=e.get(r.id);if(o)return o;const a=go(t,r);return e.set(r.id,a),a}}}function go(t,e){const n=ce(t);return te(e)?vn(t,e,e.components):Kt(e)?vn(t,e,{default:e.component}):{default:n}}function vn(t,e,n){return Object.fromEntries(Object.entries(n).map(([r,o])=>[r,ho(t,{match:e,name:r,component:o})]))}const An=Symbol();function wo(t,e,n=[]){const o=e?.isGlobalRouter??!0?An:Symbol(),a=lo(t,n,e?.base),s=pr();s.addGlobalRouteHooks(po(e,n));const c=oe(),f=Zr(),d=Ro(o),R=Mr(),h=Hr({mode:e?.historyMode,listener:({location:v})=>{const O=at(v);S(O,{state:v.state,replace:!0})}});function k(v,O={}){return io(a,v,O.state)}async function S(v,O={}){const M=c();if(h.stopListening(),j(v)){h.update(v,O);return}const F=k(v,O)??u("NotFound"),I=jo(M),X=await s.runBeforeRouteHooks({to:F,from:I});switch(X.status){case"ABORT":return;case"PUSH":h.update(v,O),await g(...X.to);return;case"REJECT":h.update(v,O),w(X.type);break;case"SUCCESS":h.update(v,O),w(null);break;default:throw new Error(`Switch is not exhaustive for before hook response status: ${JSON.stringify(X)}`)}const Re=M;f.setProps(F).then(W=>{if(Re===M)switch(W.status){case"SUCCESS":break;case"PUSH":g(...W.to);break;case"REJECT":w(W.type);break;default:const ge=W;throw new Error(`Switch is not exhaustive for prop store response status: ${JSON.stringify(ge)}`)}}),p(F);const Q=await s.runAfterRouteHooks({to:F,from:I});switch(Q.status){case"PUSH":await g(...Q.to);break;case"REJECT":w(Q.type);break;case"SUCCESS":break;default:const W=Q;throw new Error(`Switch is not exhaustive for after hook response status: ${JSON.stringify(W)}`)}h.startListening()}const B=(v,O={},M={})=>{const F=a.find(I=>I.name===v);if(!F)throw new Fr(v);return Kr(F,O,M)},g=(v,O,M)=>{if(_(v)){const Q={...O},W=Pn(v,{searchParams:Q.query,hash:Q.hash});return S(W,Q)}if(typeof v=="string"){const{replace:Q,...W}={...M},ge={...O},we=B(v,ge,W),Ho=mn({...we.matched.state},{...we.state,...W.state});return S(we.href,{replace:Q,state:Ho})}const{replace:F,...I}={...O},X=mn({...v.matched.state},{...v.state,...I.state}),Re=Pn(v.href,{searchParams:I.query,hash:I.hash});return S(Re,{replace:F,state:X})},U=(v,O,M)=>{if(_(v)){const I={...O,replace:!0};return g(v,I)}if(typeof v=="string"){const I={...M,replace:!0},X={...O};return g(v,X,I)}const F={...O,replace:!0};return g(v,F)},m=v=>{w(v)},{setRejection:w,rejection:i,getRejectionRoute:u}=Ir({...n.reduce((v,O)=>({...v,...O.rejections}),{}),...e?.rejections}),P=u("NotFound"),{currentRoute:V,routerRoute:y,updateRoute:p}=Br(o,P,g),E=_r(e?.initialUrl),b=h.location.state,{host:N}=q(E),j=jr(N);let Z=!1;const $=l.ref(!1),{promise:T,resolve:kn}=Promise.withResolvers();async function Un(){if(Z)return T;Z=!0,jn(a)&&await Zn(),await S(E,{replace:!0,state:b}),h.startListening(),kn(),$.value=!0}function xo(){h.stopListening()}function jo(v){return ar(v)?null:{...V}}function Zo(v){s.setVueApp(v),f.setVueApp(v);const O=ce(o),M=on(o);v.component("RouterView",O),v.component("RouterLink",M),v.provide(Qe(o),i),v.provide(Te(o),s),v.provide(Ye(o),f),v.provide(Ge(o),d),v.provide(en,R),v.provide(o,Ln),Un()}const Ln={route:y,resolve:B,find:k,push:g,replace:U,reject:m,refresh:h.refresh,forward:h.forward,back:h.back,go:h.go,install:Zo,isExternal:j,onBeforeRouteEnter:s.onBeforeRouteEnter,onBeforeRouteUpdate:s.onBeforeRouteUpdate,onBeforeRouteLeave:s.onBeforeRouteLeave,onAfterRouteEnter:s.onAfterRouteEnter,onAfterRouteUpdate:s.onAfterRouteUpdate,onAfterRouteLeave:s.onAfterRouteLeave,prefetch:e?.prefetch,start:Un,started:$,stop:xo,key:o};return Ln}const Eo=G,bo=G,So=G,J=an(An),Po=J.onBeforeRouteLeave,vo=J.onBeforeRouteUpdate,Ao=J.onAfterRouteLeave,ko=J.onAfterRouteUpdate,Uo=J.isRoute,Lo=J.RouterView,Vo=J.RouterLink,No=J.useRoute,Co=J.useRouter,Bo=J.useQueryValue,Oo=J.useLink;L.DuplicateParamsError=Ee,L.MetaPropertyConflict=Ze,L.RouterLink=Vo,L.RouterNotInstalledError=nt,L.RouterView=Lo,L.UseRouteInvalidError=He,L.arrayOf=Ur,L.asUrl=re,L.combineRoutes=ne,L.createExternalRoute=sr,L.createParam=Pe,L.createRoute=rt,L.createRouter=wo,L.createRouterAssets=an,L.createRouterPlugin=Ar,L.host=bo,L.isRoute=Uo,L.isUrl=_,L.isWithComponent=Kt,L.isWithComponentProps=Xt,L.isWithComponentPropsRecord=ee,L.isWithComponents=te,L.isWithParent=Yt,L.onAfterRouteLeave=Ao,L.onAfterRouteUpdate=ko,L.onBeforeRouteLeave=Po,L.onBeforeRouteUpdate=vo,L.path=Eo,L.query=So,L.tupleOf=Vr,L.unionOf=sn,L.useLink=Oo,L.useQueryValue=Bo,L.useRoute=No,L.useRouter=Co,L.withDefault=Bn,L.withParams=G,Object.defineProperty(L,Symbol.toStringTag,{value:"Module"})});
package/dist/main.d.ts ADDED
@@ -0,0 +1,302 @@
1
+ import { withParams } from './services/withParams';
2
+ export * from './types/createRouteOptions';
3
+ export * from './types/hooks';
4
+ export * from './types/paramTypes';
5
+ export * from './types/prefetch';
6
+ export * from './types/props';
7
+ export * from './types/querySource';
8
+ export * from './types/register';
9
+ export * from './types/resolved';
10
+ export * from './types/route';
11
+ export * from './types/router';
12
+ export * from './types/routerLink';
13
+ export * from './types/routerPlugin';
14
+ export * from './types/routerPush';
15
+ export * from './types/routerPush';
16
+ export * from './types/routerReject';
17
+ export * from './types/routerReplace';
18
+ export * from './types/routerReplace';
19
+ export * from './types/routerResolve';
20
+ export * from './types/routerResolve';
21
+ export * from './types/routerRoute';
22
+ export * from './types/url';
23
+ export * from './types/useLink';
24
+ export { DuplicateParamsError } from './errors/duplicateParamsError';
25
+ export { MetaPropertyConflict } from './errors/metaPropertyConflict';
26
+ export { RouterNotInstalledError } from './errors/routerNotInstalledError';
27
+ export { UseRouteInvalidError } from './errors/useRouteInvalidError';
28
+ export { createRoute } from './services/createRoute';
29
+ export { createExternalRoute } from './services/createExternalRoute';
30
+ export { createRouterAssets } from './services/createRouterAssets';
31
+ export { withParams } from './services/withParams';
32
+ export { withDefault } from './services/withDefault';
33
+ export { createRouterPlugin } from './services/createRouterPlugin';
34
+ export { unionOf } from './services/unionOf';
35
+ export { arrayOf } from './services/arrayOf';
36
+ export { tupleOf } from './services/tupleOf';
37
+ export { createParam } from './services/createParam';
38
+ export { createRouter } from './services/createRouter';
39
+ /**
40
+ * @deprecated use `withParams` instead
41
+ * @hidden we don't want to expose this in the api docs
42
+ */
43
+ export declare const path: typeof withParams;
44
+ /**
45
+ * @deprecated use `withParams` instead
46
+ * @hidden we don't want to expose this in the api docs
47
+ */
48
+ export declare const host: typeof withParams;
49
+ /**
50
+ * @deprecated use `withParams` instead
51
+ * @hidden we don't want to expose this in the api docs
52
+ */
53
+ export declare const query: typeof withParams;
54
+ /**
55
+ * Registers a hook that is called before a route is left. Must be called from setup.
56
+ * This is useful for performing actions or cleanups before navigating away from a route component.
57
+ *
58
+ * @param BeforeRouteHook - The hook callback function
59
+ * @returns {RouteHookRemove} A function that removes the added hook.
60
+ * @group Hooks
61
+ */
62
+ export declare const onBeforeRouteLeave: import('./main').AddRouterBeforeRouteHook<any>;
63
+ /**
64
+ * Registers a hook that is called before a route is updated. Must be called from setup.
65
+ * This is particularly useful for handling changes in route parameters or query while staying within the same component.
66
+ *
67
+ * @param BeforeRouteHook - The hook callback function
68
+ * @returns {RouteHookRemove} A function that removes the added hook.
69
+ * @group Hooks
70
+ */
71
+ export declare const onBeforeRouteUpdate: import('./main').AddRouterBeforeRouteHook<any>;
72
+ /**
73
+ * Registers a hook that is called after a route has been left. Must be called during setup.
74
+ * This can be used for cleanup actions after the component is no longer active, ensuring proper resource management.
75
+ *
76
+ * @param AfterRouteHook - The hook callback function
77
+ * @returns {RouteHookRemove} A function that removes the added hook.
78
+ * @group Hooks
79
+ */
80
+ export declare const onAfterRouteLeave: import('./main').AddRouterAfterRouteHook<any>;
81
+ /**
82
+ * Registers a hook that is called after a route has been updated. Must be called during setup.
83
+ * This is ideal for responding to updates within the same route, such as parameter changes, without full component reloads.
84
+ *
85
+ * @param AfterRouteHook - The hook callback function
86
+ * @returns {RouteHookRemove} A function that removes the added hook.
87
+ * @group Hooks
88
+ */
89
+ export declare const onAfterRouteUpdate: import('./main').AddRouterAfterRouteHook<any>;
90
+ /**
91
+ * A guard to verify if a route or unknown value matches a given route name.
92
+ *
93
+ * @param routeName - The name of the route to check against the current route.
94
+ * @returns True if the current route matches the given route name, false otherwise.
95
+ * @group Type Guards
96
+ */
97
+ export declare const isRoute: {
98
+ (route: unknown): route is import('./main').RouterRoute;
99
+ <TRoute extends import('./main').RouterRoute<Readonly<{
100
+ id: any;
101
+ matched: any;
102
+ matches: any;
103
+ name: any;
104
+ query: URLSearchParams;
105
+ hash: string;
106
+ params: {
107
+ [x: string]: unknown;
108
+ [x: number]: unknown;
109
+ [x: symbol]: unknown;
110
+ };
111
+ state: import('./types/state').ExtractRouteStateParamsAsOptional<any>;
112
+ href: import('./main').Url;
113
+ }>>, TRouteName extends any>(route: TRoute, routeName: TRouteName, options: import('./guards/routes').IsRouteOptions & {
114
+ exact: true;
115
+ }): route is TRoute & {
116
+ name: TRouteName;
117
+ };
118
+ <TRoute extends import('./main').RouterRoute<Readonly<{
119
+ id: any;
120
+ matched: any;
121
+ matches: any;
122
+ name: any;
123
+ query: URLSearchParams;
124
+ hash: string;
125
+ params: {
126
+ [x: string]: unknown;
127
+ [x: number]: unknown;
128
+ [x: symbol]: unknown;
129
+ };
130
+ state: import('./types/state').ExtractRouteStateParamsAsOptional<any>;
131
+ href: import('./main').Url;
132
+ }>>, TRouteName extends TRoute["name"]>(route: TRoute, routeName: TRouteName, options?: import('./guards/routes').IsRouteOptions): route is TRoute extends import('./main').RouterRoute ? TRouteName extends TRoute["matches"][number]["name"] ? TRoute : never : never;
133
+ (route: unknown, routeName?: string, options?: import('./guards/routes').IsRouteOptions): boolean;
134
+ };
135
+ /**
136
+ * A component to render the current route's component.
137
+ *
138
+ * @param props - The props to pass to the router view component.
139
+ * @returns The router view component.
140
+ * @group Components
141
+ */
142
+ export declare const RouterView: import('vue').DefineSetupFnComponent<import('./components/routerView').RouterViewProps, import('vue').EmitsOptions, import('vue').SlotsType<{
143
+ default?: (props: {
144
+ route: import('./main').RouterRoute;
145
+ component: import('vue').Component;
146
+ rejection: import('vue').UnwrapRef<import('./services/createRouterReject').RouterRejection>;
147
+ }) => import('vue').VNode;
148
+ }>, import('./components/routerView').RouterViewProps & ({
149
+ [x: `on${Capitalize<string>}`]: ((...args: any[]) => any) | undefined;
150
+ } | {
151
+ [x: `on${Capitalize<string>}`]: ((...args: never) => any) | undefined;
152
+ }), import('vue').PublicProps>;
153
+ /**
154
+ * A component to render a link to a route or any url.
155
+ *
156
+ * @param props - The props to pass to the router link component.
157
+ * @returns The router link component.
158
+ * @group Components
159
+ */
160
+ export declare const RouterLink: import('vue').DefineSetupFnComponent<import('./main').RouterLinkProps<import('./main').Router>, import('vue').EmitsOptions, import('vue').SlotsType<{
161
+ default?: (props: {
162
+ route: import('./main').ResolvedRoute | undefined;
163
+ isMatch: boolean;
164
+ isExactMatch: boolean;
165
+ isActive: boolean;
166
+ isExactActive: boolean;
167
+ isExternal: boolean;
168
+ }) => import('vue').VNode[];
169
+ }>, import('./main').RouterPushOptions & ({
170
+ to: import('./main').Url | Readonly<{
171
+ id: string;
172
+ matched: import('./main').CreatedRouteOptions;
173
+ matches: import('./main').CreatedRouteOptions[];
174
+ name: string;
175
+ query: URLSearchParams;
176
+ hash: string;
177
+ params: {
178
+ [x: string]: unknown;
179
+ };
180
+ state: import('./types/state').ExtractRouteStateParamsAsOptional<Record<string, import('./main').Param>>;
181
+ href: import('./main').Url;
182
+ }> | import('./main').ToCallback<import('./main').Router>;
183
+ prefetch?: import('./main').PrefetchConfig;
184
+ } & ({
185
+ [x: `on${Capitalize<string>}`]: ((...args: any[]) => any) | undefined;
186
+ } | {
187
+ [x: `on${Capitalize<string>}`]: ((...args: never) => any) | undefined;
188
+ })), import('vue').PublicProps>;
189
+ /**
190
+ * A composition to access the current route or verify a specific route name within a Vue component.
191
+ * This function provides two overloads:
192
+ * 1. When called without arguments, it returns the current route from the router without types.
193
+ * 2. When called with a route name, it checks if the current active route includes the specified route name.
194
+ *
195
+ * The function also sets up a reactive watcher on the route object from the router to continually check the validity of the route name
196
+ * if provided, throwing an error if the validation fails at any point during the component's lifecycle.
197
+ *
198
+ * @template TRouteName - A string type that should match route name of the registered router, ensuring the route name exists.
199
+ * @param routeName - Optional. The name of the route to validate against the current active routes.
200
+ * @returns The current router route. If a route name is provided, it validates the route name first.
201
+ * @throws {UseRouteInvalidError} Throws an error if the provided route name is not valid or does not match the current route.
202
+ * @group Compositions
203
+ */
204
+ export declare const useRoute: {
205
+ (): import('./main').RouterRoute<Readonly<{
206
+ id: any;
207
+ matched: any;
208
+ matches: any;
209
+ name: any;
210
+ query: URLSearchParams;
211
+ hash: string;
212
+ params: {
213
+ [x: string]: unknown;
214
+ [x: number]: unknown;
215
+ [x: symbol]: unknown;
216
+ };
217
+ state: import('./types/state').ExtractRouteStateParamsAsOptional<any>;
218
+ href: import('./main').Url;
219
+ }>>;
220
+ <TRouteName extends any>(routeName: TRouteName, options: import('./guards/routes').IsRouteOptions & {
221
+ exact: true;
222
+ }): import('./main').RouterRoute<Readonly<{
223
+ id: any;
224
+ matched: any;
225
+ matches: any;
226
+ name: any;
227
+ query: URLSearchParams;
228
+ hash: string;
229
+ params: {
230
+ [x: string]: unknown;
231
+ [x: number]: unknown;
232
+ [x: symbol]: unknown;
233
+ };
234
+ state: import('./types/state').ExtractRouteStateParamsAsOptional<any>;
235
+ href: import('./main').Url;
236
+ }>> & {
237
+ name: TRouteName;
238
+ };
239
+ <TRouteName extends any>(routeName: TRouteName, options?: import('./guards/routes').IsRouteOptions): import('./main').RouterRoute<Readonly<{
240
+ id: any;
241
+ matched: any;
242
+ matches: any;
243
+ name: any;
244
+ query: URLSearchParams;
245
+ hash: string;
246
+ params: {
247
+ [x: string]: unknown;
248
+ [x: number]: unknown;
249
+ [x: symbol]: unknown;
250
+ };
251
+ state: import('./types/state').ExtractRouteStateParamsAsOptional<any>;
252
+ href: import('./main').Url;
253
+ }>> & {
254
+ name: `${TRouteName}${string}`;
255
+ };
256
+ };
257
+ /**
258
+ * A composition to access the installed router instance within a Vue component.
259
+ *
260
+ * @returns The installed router instance.
261
+ * @throws {RouterNotInstalledError} Throws an error if the router has not been installed,
262
+ * ensuring the component does not operate without routing functionality.
263
+ * @group Compositions
264
+ */
265
+ export declare const useRouter: () => import('./main').Router;
266
+ /**
267
+ * A composition to access a specific query value from the current route.
268
+ *
269
+ * @returns The query value from the router.
270
+ * @group Compositions
271
+ */
272
+ export declare const useQueryValue: {
273
+ (key: import('vue').MaybeRefOrGetter<string>): import('./compositions/useQueryValue').UseQueryValue<string>;
274
+ <TParam extends import('./main').Param>(key: import('vue').MaybeRefOrGetter<string>, param: TParam): import('./compositions/useQueryValue').UseQueryValue<import('./types/params').ExtractParamType<TParam>>;
275
+ };
276
+ /**
277
+ * A composition to export much of the functionality that drives RouterLink component.
278
+ * Also exports some useful context about routes relationship to current URL and convenience methods
279
+ * for navigating.
280
+ *
281
+ * @param source - The name of the route or a valid URL.
282
+ * @param params - If providing route name, this argument will expect corresponding params.
283
+ * @param options - {@link RouterResolveOptions} Same options as router resolve.
284
+ * @returns {UseLink} Reactive context values for as well as navigation methods.
285
+ * @group Compositions
286
+ */
287
+ export declare const useLink: {
288
+ <TRouteKey extends any>(name: import('vue').MaybeRefOrGetter<TRouteKey>, params?: import('vue').MaybeRefOrGetter<Record<string, unknown> | {
289
+ [x: string]: unknown;
290
+ [x: number]: unknown;
291
+ [x: symbol]: unknown;
292
+ }> | undefined, options?: import('vue').MaybeRefOrGetter<import('./main').UseLinkOptions> | undefined): import('./main').UseLink;
293
+ (url: import('vue').MaybeRefOrGetter<import('./main').Url>, options?: import('vue').MaybeRefOrGetter<import('./main').UseLinkOptions>): import('./main').UseLink;
294
+ (resolvedRoute: import('vue').MaybeRefOrGetter<import('./main').ResolvedRoute | undefined>, options?: import('vue').MaybeRefOrGetter<import('./main').UseLinkOptions>): import('./main').UseLink;
295
+ (source: import('vue').MaybeRefOrGetter<string | import('./main').ResolvedRoute | undefined>, paramsOrOptions?: import('vue').MaybeRefOrGetter<Record<PropertyKey, unknown> | import('./main').UseLinkOptions>, maybeOptions?: import('vue').MaybeRefOrGetter<import('./main').UseLinkOptions>): import('./main').UseLink;
296
+ };
297
+ declare module 'vue' {
298
+ interface GlobalComponents {
299
+ RouterView: typeof RouterView;
300
+ RouterLink: typeof RouterLink;
301
+ }
302
+ }
@@ -0,0 +1,9 @@
1
+ import { AfterRouteHook, BeforeRouteHook } from '../types/hooks';
2
+ export declare class RouteHooks {
3
+ onBeforeRouteEnter: Set<BeforeRouteHook>;
4
+ onBeforeRouteUpdate: Set<BeforeRouteHook>;
5
+ onBeforeRouteLeave: Set<BeforeRouteHook>;
6
+ onAfterRouteEnter: Set<AfterRouteHook>;
7
+ onAfterRouteUpdate: Set<AfterRouteHook>;
8
+ onAfterRouteLeave: Set<AfterRouteHook>;
9
+ }
@@ -0,0 +1,10 @@
1
+ import { Routes } from '../types/route';
2
+ import { RouterAfterRouteHook, RouterBeforeRouteHook } from '../types/router';
3
+ export declare class RouterRouteHooks<TRoutes extends Routes = Routes> {
4
+ onBeforeRouteEnter: Set<RouterBeforeRouteHook<TRoutes>>;
5
+ onBeforeRouteUpdate: Set<RouterBeforeRouteHook<TRoutes>>;
6
+ onBeforeRouteLeave: Set<RouterBeforeRouteHook<TRoutes>>;
7
+ onAfterRouteEnter: Set<RouterAfterRouteHook<TRoutes>>;
8
+ onAfterRouteUpdate: Set<RouterAfterRouteHook<TRoutes>>;
9
+ onAfterRouteLeave: Set<RouterAfterRouteHook<TRoutes>>;
10
+ }
@@ -0,0 +1,7 @@
1
+ import { Param, ParamGetSet } from '../types/paramTypes';
2
+ import { ExtractParamType } from '../types/params';
3
+ type ArrayOfOptions = {
4
+ separator?: string;
5
+ };
6
+ export declare function arrayOf<const T extends Param[]>(params: T, options?: ArrayOfOptions): ParamGetSet<ExtractParamType<T[number]>[]>;
7
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ import { WithParams } from './withParams';
2
+ import { CombinePath } from './combinePath';
3
+ export type CombineHash<TParent extends WithParams, TChild extends WithParams> = CombinePath<TParent, TChild>;
4
+ export declare function combineHash<TParentHash extends WithParams, TChildHash extends WithParams>(parentHash: TParentHash, childHash: TChildHash): CombineHash<TParentHash, TChildHash>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export type CombineMeta<TParent extends Record<string, unknown>, TChild extends Record<string, unknown>> = TParent & TChild;
2
+ export declare function combineMeta<TParentMeta extends Record<string, unknown>, TChildMeta extends Record<string, unknown>>(parentMeta: TParentMeta, childMeta: TChildMeta): CombineMeta<TParentMeta, TChildMeta>;
@@ -0,0 +1 @@
1
+ export {};