@real-router/vue 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/RouteView/components.ts","../../src/components/RouteView/helpers.ts","../../src/useRefFromSource.ts","../../src/context.ts","../../src/composables/useRouter.ts","../../src/composables/useRouteNode.ts","../../src/components/RouteView/RouteView.ts","../../src/composables/useIsActiveRoute.ts","../../src/constants.ts","../../src/components/Link.ts","../../src/directives/vLink.ts","../../src/composables/useNavigator.ts","../../src/composables/useRouteUtils.ts","../../src/composables/useRoute.ts","../../src/composables/useRouterTransition.ts","../../src/createRouterPlugin.ts","../../src/RouterProvider.ts"],"names":["defineComponent","startsWithSegment","isVNode","Fragment","UNKNOWN_ROUTE","shallowRef","onScopeDispose","inject","createRouteNodeSource","getNavigator","watch","markRaw","Suspense","h","KeepAlive","createActiveRouteSource","computed","buildHref","buildActiveClassName","shouldNavigate","applyLinkA11y","getRouteUtils","getPluginApi","createTransitionSource","createRouteSource","onMounted","createRouteAnnouncer","onUnmounted","provide"],"mappings":"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","file":"index.js","sourcesContent":["import { defineComponent } from \"vue\";\n\nimport type { PropType, VNode } from \"vue\";\n\nfunction renderNull() {\n return null;\n}\n\nexport const Match = defineComponent({\n name: \"RouteView.Match\",\n props: {\n segment: {\n type: String as PropType<string>,\n required: true,\n },\n exact: {\n type: Boolean,\n default: false,\n },\n fallback: {\n type: [Object, Function] as PropType<VNode | (() => VNode)>,\n default: undefined,\n },\n },\n render: renderNull,\n});\n\nexport const NotFound = defineComponent({\n name: \"RouteView.NotFound\",\n render: renderNull,\n});\n","import { UNKNOWN_ROUTE } from \"@real-router/core\";\nimport { startsWithSegment } from \"@real-router/route-utils\";\nimport { Fragment, isVNode } from \"vue\";\n\nimport { Match, NotFound } from \"./components\";\n\nimport type { VNode } from \"vue\";\n\ntype FallbackType = VNode | (() => VNode) | undefined;\n\nfunction isSegmentMatch(\n routeName: string,\n fullSegmentName: string,\n exact: boolean,\n): boolean {\n if (exact) {\n return routeName === fullSegmentName;\n }\n\n return startsWithSegment(routeName, fullSegmentName);\n}\n\nfunction normalizeChildren(children: unknown): VNode[] {\n if (Array.isArray(children)) {\n const result: VNode[] = [];\n\n for (const child of children) {\n if (Array.isArray(child)) {\n result.push(...normalizeChildren(child));\n } else if (isVNode(child)) {\n result.push(child);\n }\n }\n\n return result;\n }\n\n if (isVNode(children)) {\n return [children];\n }\n\n return [];\n}\n\nexport function collectElements(children: unknown, result: VNode[]): void {\n const vnodes = normalizeChildren(children);\n\n for (const child of vnodes) {\n if (child.type === Match || child.type === NotFound) {\n result.push(child);\n } else if (child.type === Fragment) {\n collectElements(child.children, result);\n }\n }\n}\n\nexport function buildRenderList(\n elements: VNode[],\n routeName: string,\n nodeName: string,\n): {\n rendered: VNode[];\n activeMatchFound: boolean;\n fallback?: FallbackType;\n} {\n let notFoundChildren: unknown = null;\n let activeMatchFound = false;\n let fallback: FallbackType = undefined;\n const rendered: VNode[] = [];\n\n for (const child of elements) {\n if (child.type === NotFound) {\n notFoundChildren = child.children;\n continue;\n }\n\n const props = child.props as {\n segment: string;\n exact?: boolean;\n fallback?: FallbackType;\n } | null;\n const segment = props?.segment ?? \"\";\n const exact = props?.exact ?? false;\n const fullSegmentName = nodeName ? `${nodeName}.${segment}` : segment;\n const isActive =\n !activeMatchFound && isSegmentMatch(routeName, fullSegmentName, exact);\n\n if (isActive) {\n activeMatchFound = true;\n fallback = props?.fallback;\n rendered.push(child);\n }\n }\n\n if (\n !activeMatchFound &&\n routeName === UNKNOWN_ROUTE &&\n notFoundChildren !== null\n ) {\n const nfElements = elements.filter((e) => e.type === NotFound);\n /* v8 ignore next 3 */\n const lastNf = nfElements.at(-1);\n\n if (lastNf) {\n rendered.push(lastNf);\n }\n }\n\n return { rendered, activeMatchFound, fallback };\n}\n","import { shallowRef, onScopeDispose } from \"vue\";\n\nimport type { RouterSource } from \"@real-router/sources\";\nimport type { ShallowRef } from \"vue\";\n\nexport function useRefFromSource<T>(source: RouterSource<T>): ShallowRef<T> {\n const ref = shallowRef(source.getSnapshot());\n\n const unsub = source.subscribe(() => {\n ref.value = source.getSnapshot();\n });\n\n onScopeDispose(unsub);\n\n return ref;\n}\n","import type { RouteContext as RouteContextType } from \"./types\";\nimport type { Router, Navigator } from \"@real-router/core\";\nimport type { InjectionKey } from \"vue\";\n\nexport const RouterKey: InjectionKey<Router> = Symbol(\"RouterKey\");\n\nexport const NavigatorKey: InjectionKey<Navigator> = Symbol(\"NavigatorKey\");\n\nexport const RouteKey: InjectionKey<RouteContextType> = Symbol(\"RouteKey\");\n","import { inject } from \"vue\";\n\nimport { RouterKey } from \"../context\";\n\nimport type { Router } from \"@real-router/core\";\n\nexport const useRouter = (): Router => {\n const router = inject(RouterKey);\n\n if (!router) {\n throw new Error(\"useRouter must be used within a RouterProvider\");\n }\n\n return router;\n};\n","import { getNavigator } from \"@real-router/core\";\nimport { createRouteNodeSource } from \"@real-router/sources\";\nimport { shallowRef, watch } from \"vue\";\n\nimport { useRefFromSource } from \"../useRefFromSource\";\nimport { useRouter } from \"./useRouter\";\n\nimport type { RouteContext } from \"../types\";\nimport type { State } from \"@real-router/core\";\n\nexport function useRouteNode(nodeName: string): RouteContext {\n const router = useRouter();\n\n const source = createRouteNodeSource(router, nodeName);\n const snapshot = useRefFromSource(source);\n\n const navigator = getNavigator(router);\n\n const route = shallowRef<State | undefined>(snapshot.value.route);\n const previousRoute = shallowRef<State | undefined>(\n snapshot.value.previousRoute,\n );\n\n watch(\n snapshot,\n (newSnapshot) => {\n route.value = newSnapshot.route;\n previousRoute.value = newSnapshot.previousRoute;\n },\n { flush: \"sync\" },\n );\n\n return {\n navigator,\n route,\n previousRoute,\n };\n}\n","import {\n Fragment,\n defineComponent,\n h,\n KeepAlive,\n markRaw,\n Suspense,\n} from \"vue\";\n\nimport { Match, NotFound } from \"./components\";\nimport { buildRenderList, collectElements } from \"./helpers\";\nimport { useRouteNode } from \"../../composables/useRouteNode\";\n\nimport type { Component, VNode } from \"vue\";\n\ntype SlotChildren = Record<string, (() => VNode[]) | undefined> | null;\n\nfunction getSlotContent(vnode: VNode): VNode[] | null {\n const slots = vnode.children as SlotChildren;\n\n return slots?.default?.() ?? null;\n}\n\nfunction getOrCreateWrapper(\n cache: Map<string, Component>,\n segment: string,\n): Component {\n const existing = cache.get(segment);\n\n if (existing) {\n return existing;\n }\n\n const wrapper = markRaw(\n defineComponent({\n name: `KeepAlive-${segment}`,\n setup(_wrapperProps, wrapperCtx) {\n return () => wrapperCtx.slots.default?.();\n },\n }),\n );\n\n cache.set(segment, wrapper);\n\n return wrapper;\n}\n\nfunction wrapWithSuspense(content: VNode, fallback: unknown): VNode {\n if (fallback === undefined) {\n return content;\n }\n\n const fallbackContent =\n typeof fallback === \"function\" ? (fallback as () => VNode)() : fallback;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n const suspenseComponent = Suspense as any;\n\n return h(\n suspenseComponent,\n {},\n {\n default: () => content,\n fallback: () => fallbackContent,\n },\n );\n}\n\nconst RouteViewComponent = defineComponent({\n name: \"RouteView\",\n props: {\n nodeName: {\n type: String,\n required: true,\n },\n keepAlive: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { slots }) {\n const routeContext = useRouteNode(props.nodeName);\n\n const wrapperCache = new Map<string, Component>();\n\n return (): VNode | null => {\n const route = routeContext.route.value;\n\n if (!route) {\n return null;\n }\n\n const elements: VNode[] = [];\n\n collectElements(slots.default?.(), elements);\n\n const { rendered, fallback } = buildRenderList(\n elements,\n route.name,\n props.nodeName,\n );\n\n if (rendered.length === 0) {\n return null;\n }\n\n const activeChild = rendered[0];\n\n if (!props.keepAlive) {\n if (activeChild.type === Match || activeChild.type === NotFound) {\n const content = getSlotContent(activeChild);\n\n if (!content) {\n return null;\n }\n\n const fragment = h(Fragment, content);\n\n return wrapWithSuspense(fragment, fallback);\n }\n\n /* v8 ignore start */\n return null;\n /* v8 ignore stop */\n }\n\n const activeProps = activeChild.props as {\n segment?: string;\n } | null;\n const segment = activeProps?.segment ?? \"__not-found__\";\n\n const WrapperComponent = getOrCreateWrapper(wrapperCache, segment);\n /* v8 ignore next */\n const slotContent = getSlotContent(activeChild) ?? [];\n\n const keepAliveContent = h(KeepAlive, null, {\n default: () =>\n h(WrapperComponent, { key: segment }, { default: () => slotContent }),\n });\n\n return wrapWithSuspense(keepAliveContent, fallback);\n };\n },\n});\n\nexport const RouteView = Object.assign(RouteViewComponent, { Match, NotFound });\n\nexport type {\n RouteViewProps,\n MatchProps as RouteViewMatchProps,\n NotFoundProps as RouteViewNotFoundProps,\n} from \"./types\";\n","import { createActiveRouteSource } from \"@real-router/sources\";\n\nimport { useRefFromSource } from \"../useRefFromSource\";\nimport { useRouter } from \"./useRouter\";\n\nimport type { Params } from \"@real-router/core\";\nimport type { ShallowRef } from \"vue\";\n\nexport function useIsActiveRoute(\n routeName: string,\n params?: Params,\n strict = false,\n ignoreQueryParams = true,\n): ShallowRef<boolean> {\n const router = useRouter();\n\n const source = createActiveRouteSource(router, routeName, params, {\n strict,\n ignoreQueryParams,\n });\n\n return useRefFromSource(source);\n}\n","/**\n * Stable empty object for default params\n */\nexport const EMPTY_PARAMS = Object.freeze({});\n\n/**\n * Stable empty options object\n */\nexport const EMPTY_OPTIONS = Object.freeze({});\n","import { shouldNavigate, buildHref, buildActiveClassName } from \"dom-utils\";\nimport { defineComponent, h, computed } from \"vue\";\n\nimport { useIsActiveRoute } from \"../composables/useIsActiveRoute\";\nimport { useRouter } from \"../composables/useRouter\";\nimport { EMPTY_PARAMS, EMPTY_OPTIONS } from \"../constants\";\n\nimport type { Params, NavigationOptions } from \"@real-router/core\";\nimport type { PropType } from \"vue\";\n\nexport const Link = defineComponent({\n name: \"Link\",\n props: {\n routeName: {\n type: String,\n required: true,\n },\n routeParams: {\n type: Object as PropType<Params>,\n default: () => EMPTY_PARAMS,\n },\n routeOptions: {\n type: Object as PropType<NavigationOptions>,\n default: () => EMPTY_OPTIONS,\n },\n class: {\n type: String,\n default: undefined,\n },\n activeClassName: {\n type: String,\n default: \"active\",\n },\n activeStrict: {\n type: Boolean,\n default: false,\n },\n ignoreQueryParams: {\n type: Boolean,\n default: true,\n },\n target: {\n type: String,\n default: undefined,\n },\n },\n setup(props, { slots, attrs }) {\n const router = useRouter();\n\n const isActive = useIsActiveRoute(\n props.routeName,\n props.routeParams,\n props.activeStrict,\n props.ignoreQueryParams,\n );\n\n const href = computed(() =>\n buildHref(router, props.routeName, props.routeParams),\n );\n\n const finalClassName = computed(() =>\n buildActiveClassName(isActive.value, props.activeClassName, props.class),\n );\n\n const handleClick = (evt: MouseEvent) => {\n if (attrs.onClick && typeof attrs.onClick === \"function\") {\n (attrs.onClick as (evt: MouseEvent) => void)(evt);\n\n if (evt.defaultPrevented) {\n return;\n }\n }\n\n if (!shouldNavigate(evt) || props.target === \"_blank\") {\n return;\n }\n\n evt.preventDefault();\n router\n .navigate(props.routeName, props.routeParams, props.routeOptions)\n .catch(() => {});\n };\n\n return () =>\n h(\n \"a\",\n {\n ...attrs,\n href: href.value,\n class: finalClassName.value,\n target: props.target,\n onClick: handleClick,\n },\n slots.default?.(),\n );\n },\n});\n","import { shouldNavigate, applyLinkA11y } from \"dom-utils\";\n\nimport type { Router, NavigationOptions, Params } from \"@real-router/core\";\nimport type { Directive } from \"vue\";\n\nexport interface LinkDirectiveValue {\n name: string;\n params?: Params;\n options?: NavigationOptions;\n}\n\nlet _router: Router | null = null;\n\nexport function setDirectiveRouter(router: Router): void {\n _router = router;\n}\n\nexport function getDirectiveRouter(): Router {\n if (!_router) {\n /* v8 ignore next 3 -- @preserve Defensive: router always initialized by RouterProvider */\n throw new Error(\n \"v-link directive requires a RouterProvider ancestor. Make sure RouterProvider is mounted.\",\n );\n }\n\n return _router;\n}\n\nconst clickHandlers = new WeakMap<HTMLElement, (evt: MouseEvent) => void>();\nconst keydownHandlers = new WeakMap<\n HTMLElement,\n (evt: KeyboardEvent) => void\n>();\n\nfunction createClickHandler(\n router: Router,\n value: LinkDirectiveValue,\n): (evt: MouseEvent) => void {\n return (evt: MouseEvent) => {\n if (!shouldNavigate(evt)) {\n return;\n }\n\n evt.preventDefault();\n router\n .navigate(value.name, value.params ?? {}, value.options ?? {})\n .catch(() => {});\n };\n}\n\nfunction createKeydownHandler(\n router: Router,\n value: LinkDirectiveValue,\n el: HTMLElement,\n): (evt: KeyboardEvent) => void {\n return (evt: KeyboardEvent) => {\n if (evt.key === \"Enter\" && !(el instanceof HTMLButtonElement)) {\n router\n .navigate(value.name, value.params ?? {}, value.options ?? {})\n .catch(() => {});\n }\n };\n}\n\nfunction attachHandlers(\n el: HTMLElement,\n router: Router,\n value: LinkDirectiveValue,\n): void {\n const handleClick = createClickHandler(router, value);\n const handleKeyDown = createKeydownHandler(router, value, el);\n\n el.addEventListener(\"click\", handleClick);\n el.addEventListener(\"keydown\", handleKeyDown);\n\n clickHandlers.set(el, handleClick);\n keydownHandlers.set(el, handleKeyDown);\n}\n\nfunction detachHandlers(el: HTMLElement): void {\n const clickHandler = clickHandlers.get(el);\n const keydownHandler = keydownHandlers.get(el);\n\n if (clickHandler) {\n el.removeEventListener(\"click\", clickHandler);\n }\n if (keydownHandler) {\n el.removeEventListener(\"keydown\", keydownHandler);\n }\n\n clickHandlers.delete(el);\n keydownHandlers.delete(el);\n}\n\nexport const vLink: Directive<HTMLElement, LinkDirectiveValue> = {\n mounted(el, binding) {\n const router = getDirectiveRouter();\n\n applyLinkA11y(el);\n\n el.style.cursor = \"pointer\";\n\n attachHandlers(el, router, binding.value);\n },\n\n updated(el, binding) {\n const router = getDirectiveRouter();\n\n detachHandlers(el);\n attachHandlers(el, router, binding.value);\n },\n\n beforeUnmount(el) {\n detachHandlers(el);\n },\n};\n","import { inject } from \"vue\";\n\nimport { NavigatorKey } from \"../context\";\n\nimport type { Navigator } from \"@real-router/core\";\n\nexport const useNavigator = (): Navigator => {\n const navigator = inject(NavigatorKey);\n\n if (!navigator) {\n throw new Error(\"useNavigator must be used within a RouterProvider\");\n }\n\n return navigator;\n};\n","import { getPluginApi } from \"@real-router/core/api\";\nimport { getRouteUtils } from \"@real-router/route-utils\";\n\nimport { useRouter } from \"./useRouter\";\n\nimport type { RouteUtils } from \"@real-router/route-utils\";\n\nexport const useRouteUtils = (): RouteUtils => {\n const router = useRouter();\n\n return getRouteUtils(getPluginApi(router).getTree());\n};\n","import { inject } from \"vue\";\n\nimport { RouteKey } from \"../context\";\n\nimport type { RouteContext } from \"../types\";\n\nexport const useRoute = (): RouteContext => {\n const routeContext = inject(RouteKey);\n\n if (!routeContext) {\n throw new Error(\"useRoute must be used within a RouterProvider\");\n }\n\n return routeContext;\n};\n","import { createTransitionSource } from \"@real-router/sources\";\n\nimport { useRefFromSource } from \"../useRefFromSource\";\nimport { useRouter } from \"./useRouter\";\n\nimport type { RouterTransitionSnapshot } from \"@real-router/sources\";\nimport type { ShallowRef } from \"vue\";\n\nexport function useRouterTransition(): ShallowRef<RouterTransitionSnapshot> {\n const router = useRouter();\n\n const source = createTransitionSource(router);\n\n return useRefFromSource(source);\n}\n","import { getNavigator } from \"@real-router/core\";\nimport { createRouteSource } from \"@real-router/sources\";\nimport { shallowRef } from \"vue\";\n\nimport { NavigatorKey, RouteKey, RouterKey } from \"./context\";\nimport { setDirectiveRouter } from \"./directives/vLink\";\n\nimport type { Router } from \"@real-router/core\";\nimport type { Plugin } from \"vue\";\n\n// eslint-disable-next-line sonarjs/function-return-type -- Plugin<[]> return type is consistent\nexport function createRouterPlugin(router: Router): Plugin<[]> {\n return {\n install(app): void {\n const navigator = getNavigator(router);\n\n setDirectiveRouter(router);\n\n const source = createRouteSource(router);\n const initialSnapshot = source.getSnapshot();\n\n const route = shallowRef(initialSnapshot.route);\n const previousRoute = shallowRef(initialSnapshot.previousRoute);\n\n source.subscribe(() => {\n const snapshot = source.getSnapshot();\n\n route.value = snapshot.route;\n previousRoute.value = snapshot.previousRoute;\n });\n\n app.provide(RouterKey, router);\n app.provide(NavigatorKey, navigator);\n app.provide(RouteKey, { navigator, route, previousRoute });\n },\n };\n}\n","import { getNavigator } from \"@real-router/core\";\nimport { createRouteSource } from \"@real-router/sources\";\nimport { createRouteAnnouncer } from \"dom-utils\";\nimport {\n defineComponent,\n onMounted,\n onUnmounted,\n provide,\n shallowRef,\n onScopeDispose,\n} from \"vue\";\n\nimport { NavigatorKey, RouteKey, RouterKey } from \"./context\";\nimport { setDirectiveRouter } from \"./directives/vLink\";\n\nimport type { Router } from \"@real-router/core\";\nimport type { PropType } from \"vue\";\n\nexport const RouterProvider = defineComponent({\n name: \"RouterProvider\",\n props: {\n router: {\n type: Object as PropType<Router>,\n required: true,\n },\n announceNavigation: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { slots }) {\n onMounted(() => {\n if (!props.announceNavigation) {\n return;\n }\n\n const announcer = createRouteAnnouncer(props.router);\n\n onUnmounted(() => {\n announcer.destroy();\n });\n });\n\n const navigator = getNavigator(props.router);\n\n setDirectiveRouter(props.router);\n\n const source = createRouteSource(props.router);\n const initialSnapshot = source.getSnapshot();\n\n const route = shallowRef(initialSnapshot.route);\n const previousRoute = shallowRef(initialSnapshot.previousRoute);\n\n const unsub = source.subscribe(() => {\n const snapshot = source.getSnapshot();\n\n route.value = snapshot.route;\n previousRoute.value = snapshot.previousRoute;\n });\n\n onScopeDispose(unsub);\n\n provide(RouterKey, props.router);\n provide(NavigatorKey, navigator);\n provide(RouteKey, { navigator, route, previousRoute });\n\n return () => slots.default?.();\n },\n});\n"]}
@@ -0,0 +1 @@
1
+ {"inputs":{"../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js":{"bytes":569,"imports":[],"format":"esm"},"src/components/RouteView/components.ts":{"bytes":597,"imports":[{"path":"vue","kind":"import-statement","external":true},{"path":"/Users/olegivanov/WebstormProjects/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/components/RouteView/helpers.ts":{"bytes":2595,"imports":[{"path":"@real-router/core","kind":"import-statement","external":true},{"path":"@real-router/route-utils","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"src/components/RouteView/components.ts","kind":"import-statement","original":"./components"},{"path":"/Users/olegivanov/WebstormProjects/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/useRefFromSource.ts":{"bytes":404,"imports":[{"path":"vue","kind":"import-statement","external":true},{"path":"/Users/olegivanov/WebstormProjects/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/context.ts":{"bytes":390,"imports":[{"path":"/Users/olegivanov/WebstormProjects/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/composables/useRouter.ts":{"bytes":313,"imports":[{"path":"vue","kind":"import-statement","external":true},{"path":"src/context.ts","kind":"import-statement","original":"../context"},{"path":"/Users/olegivanov/WebstormProjects/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/composables/useRouteNode.ts":{"bytes":991,"imports":[{"path":"@real-router/core","kind":"import-statement","external":true},{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"src/useRefFromSource.ts","kind":"import-statement","original":"../useRefFromSource"},{"path":"src/composables/useRouter.ts","kind":"import-statement","original":"./useRouter"},{"path":"/Users/olegivanov/WebstormProjects/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/components/RouteView/RouteView.ts":{"bytes":3491,"imports":[{"path":"vue","kind":"import-statement","external":true},{"path":"src/components/RouteView/components.ts","kind":"import-statement","original":"./components"},{"path":"src/components/RouteView/helpers.ts","kind":"import-statement","original":"./helpers"},{"path":"src/composables/useRouteNode.ts","kind":"import-statement","original":"../../composables/useRouteNode"},{"path":"/Users/olegivanov/WebstormProjects/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/components/RouteView/index.ts":{"bytes":145,"imports":[{"path":"src/components/RouteView/RouteView.ts","kind":"import-statement","original":"./RouteView"},{"path":"/Users/olegivanov/WebstormProjects/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/composables/useIsActiveRoute.ts":{"bytes":577,"imports":[{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"src/useRefFromSource.ts","kind":"import-statement","original":"../useRefFromSource"},{"path":"src/composables/useRouter.ts","kind":"import-statement","original":"./useRouter"},{"path":"/Users/olegivanov/WebstormProjects/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/constants.ts":{"bytes":185,"imports":[{"path":"/Users/olegivanov/WebstormProjects/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/components/Link.ts":{"bytes":2312,"imports":[{"path":"dom-utils","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"src/composables/useIsActiveRoute.ts","kind":"import-statement","original":"../composables/useIsActiveRoute"},{"path":"src/composables/useRouter.ts","kind":"import-statement","original":"../composables/useRouter"},{"path":"src/constants.ts","kind":"import-statement","original":"../constants"},{"path":"/Users/olegivanov/WebstormProjects/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/directives/vLink.ts":{"bytes":2781,"imports":[{"path":"dom-utils","kind":"import-statement","external":true},{"path":"/Users/olegivanov/WebstormProjects/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/composables/useNavigator.ts":{"bytes":340,"imports":[{"path":"vue","kind":"import-statement","external":true},{"path":"src/context.ts","kind":"import-statement","original":"../context"},{"path":"/Users/olegivanov/WebstormProjects/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/composables/useRouteUtils.ts":{"bytes":355,"imports":[{"path":"@real-router/core/api","kind":"import-statement","external":true},{"path":"@real-router/route-utils","kind":"import-statement","external":true},{"path":"src/composables/useRouter.ts","kind":"import-statement","original":"./useRouter"},{"path":"/Users/olegivanov/WebstormProjects/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/composables/useRoute.ts":{"bytes":330,"imports":[{"path":"vue","kind":"import-statement","external":true},{"path":"src/context.ts","kind":"import-statement","original":"../context"},{"path":"/Users/olegivanov/WebstormProjects/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/composables/useRouterTransition.ts":{"bytes":468,"imports":[{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"src/useRefFromSource.ts","kind":"import-statement","original":"../useRefFromSource"},{"path":"src/composables/useRouter.ts","kind":"import-statement","original":"./useRouter"},{"path":"/Users/olegivanov/WebstormProjects/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/createRouterPlugin.ts":{"bytes":1201,"imports":[{"path":"@real-router/core","kind":"import-statement","external":true},{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"src/context.ts","kind":"import-statement","original":"./context"},{"path":"src/directives/vLink.ts","kind":"import-statement","original":"./directives/vLink"},{"path":"/Users/olegivanov/WebstormProjects/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/RouterProvider.ts":{"bytes":1690,"imports":[{"path":"@real-router/core","kind":"import-statement","external":true},{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"dom-utils","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"src/context.ts","kind":"import-statement","original":"./context"},{"path":"src/directives/vLink.ts","kind":"import-statement","original":"./directives/vLink"},{"path":"/Users/olegivanov/WebstormProjects/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":1096,"imports":[{"path":"src/components/RouteView/index.ts","kind":"import-statement","original":"./components/RouteView"},{"path":"src/components/Link.ts","kind":"import-statement","original":"./components/Link"},{"path":"src/directives/vLink.ts","kind":"import-statement","original":"./directives/vLink"},{"path":"src/composables/useRouter.ts","kind":"import-statement","original":"./composables/useRouter"},{"path":"src/composables/useNavigator.ts","kind":"import-statement","original":"./composables/useNavigator"},{"path":"src/composables/useRouteUtils.ts","kind":"import-statement","original":"./composables/useRouteUtils"},{"path":"src/composables/useRoute.ts","kind":"import-statement","original":"./composables/useRoute"},{"path":"src/composables/useRouteNode.ts","kind":"import-statement","original":"./composables/useRouteNode"},{"path":"src/composables/useRouterTransition.ts","kind":"import-statement","original":"./composables/useRouterTransition"},{"path":"src/createRouterPlugin.ts","kind":"import-statement","original":"./createRouterPlugin"},{"path":"src/RouterProvider.ts","kind":"import-statement","original":"./RouterProvider"},{"path":"src/context.ts","kind":"import-statement","original":"./context"},{"path":"/Users/olegivanov/WebstormProjects/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.8_tsx@4.19.4_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/cjs/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":30914},"dist/cjs/index.js":{"imports":[{"path":"vue","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"@real-router/core","kind":"import-statement","external":true},{"path":"@real-router/route-utils","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"@real-router/core","kind":"import-statement","external":true},{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"dom-utils","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"dom-utils","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"@real-router/core/api","kind":"import-statement","external":true},{"path":"@real-router/route-utils","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"@real-router/core","kind":"import-statement","external":true},{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"@real-router/core","kind":"import-statement","external":true},{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"dom-utils","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true}],"exports":["Link","NavigatorKey","RouteKey","RouteView","RouterKey","RouterProvider","createRouterPlugin","useNavigator","useRoute","useRouteNode","useRouteUtils","useRouter","useRouterTransition","vLink"],"entryPoint":"src/index.ts","inputs":{"src/components/RouteView/RouteView.ts":{"bytesInOutput":2634},"src/components/RouteView/components.ts":{"bytesInOutput":467},"src/components/RouteView/helpers.ts":{"bytesInOutput":2036},"src/composables/useRouteNode.ts":{"bytesInOutput":739},"src/useRefFromSource.ts":{"bytesInOutput":260},"src/composables/useRouter.ts":{"bytesInOutput":202},"src/context.ts":{"bytesInOutput":163},"src/components/RouteView/index.ts":{"bytesInOutput":0},"src/index.ts":{"bytesInOutput":0},"src/components/Link.ts":{"bytesInOutput":1883},"src/composables/useIsActiveRoute.ts":{"bytesInOutput":330},"src/constants.ts":{"bytesInOutput":77},"src/directives/vLink.ts":{"bytesInOutput":2032},"src/composables/useNavigator.ts":{"bytesInOutput":232},"src/composables/useRouteUtils.ts":{"bytesInOutput":229},"src/composables/useRoute.ts":{"bytesInOutput":229},"src/composables/useRouterTransition.ts":{"bytesInOutput":212},"src/createRouterPlugin.ts":{"bytesInOutput":892},"src/RouterProvider.ts":{"bytesInOutput":1535}},"bytes":15160}}}
@@ -0,0 +1,244 @@
1
+ import * as vue from 'vue';
2
+ import { VNode, PropType, Directive, ShallowRef, Plugin, InjectionKey } from 'vue';
3
+ import { Params, NavigationOptions, Router, Navigator, State } from '@real-router/core';
4
+ export { Navigator } from '@real-router/core';
5
+ import { RouteUtils } from '@real-router/route-utils';
6
+ import { RouterTransitionSnapshot } from '@real-router/sources';
7
+ export { RouterTransitionSnapshot } from '@real-router/sources';
8
+
9
+ interface RouteViewProps {
10
+ readonly nodeName: string;
11
+ readonly keepAlive?: boolean;
12
+ }
13
+ interface MatchProps {
14
+ readonly segment: string;
15
+ readonly exact?: boolean;
16
+ readonly fallback?: VNode | (() => VNode);
17
+ }
18
+ type NotFoundProps = Record<string, never>;
19
+
20
+ declare const RouteView: {
21
+ new (...args: any[]): vue.CreateComponentPublicInstanceWithMixins<Readonly<vue.ExtractPropTypes<{
22
+ nodeName: {
23
+ type: StringConstructor;
24
+ required: true;
25
+ };
26
+ keepAlive: {
27
+ type: BooleanConstructor;
28
+ default: boolean;
29
+ };
30
+ }>> & Readonly<{}>, () => VNode | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, vue.PublicProps, {
31
+ keepAlive: boolean;
32
+ }, true, {}, {}, vue.GlobalComponents, vue.GlobalDirectives, string, {}, any, vue.ComponentProvideOptions, {
33
+ P: {};
34
+ B: {};
35
+ D: {};
36
+ C: {};
37
+ M: {};
38
+ Defaults: {};
39
+ }, Readonly<vue.ExtractPropTypes<{
40
+ nodeName: {
41
+ type: StringConstructor;
42
+ required: true;
43
+ };
44
+ keepAlive: {
45
+ type: BooleanConstructor;
46
+ default: boolean;
47
+ };
48
+ }>> & Readonly<{}>, () => VNode | null, {}, {}, {}, {
49
+ keepAlive: boolean;
50
+ }>;
51
+ __isFragment?: never;
52
+ __isTeleport?: never;
53
+ __isSuspense?: never;
54
+ } & vue.ComponentOptionsBase<Readonly<vue.ExtractPropTypes<{
55
+ nodeName: {
56
+ type: StringConstructor;
57
+ required: true;
58
+ };
59
+ keepAlive: {
60
+ type: BooleanConstructor;
61
+ default: boolean;
62
+ };
63
+ }>> & Readonly<{}>, () => VNode | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, {
64
+ keepAlive: boolean;
65
+ }, {}, string, {}, vue.GlobalComponents, vue.GlobalDirectives, string, vue.ComponentProvideOptions> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
66
+ Match: vue.DefineComponent<vue.ExtractPropTypes<{
67
+ segment: {
68
+ type: vue.PropType<string>;
69
+ required: true;
70
+ };
71
+ exact: {
72
+ type: BooleanConstructor;
73
+ default: boolean;
74
+ };
75
+ fallback: {
76
+ type: vue.PropType<VNode | (() => VNode)>;
77
+ default: undefined;
78
+ };
79
+ }>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
80
+ segment: {
81
+ type: vue.PropType<string>;
82
+ required: true;
83
+ };
84
+ exact: {
85
+ type: BooleanConstructor;
86
+ default: boolean;
87
+ };
88
+ fallback: {
89
+ type: vue.PropType<VNode | (() => VNode)>;
90
+ default: undefined;
91
+ };
92
+ }>> & Readonly<{}>, {
93
+ exact: boolean;
94
+ fallback: VNode<vue.RendererNode, vue.RendererElement, {
95
+ [key: string]: any;
96
+ }> | (() => VNode);
97
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
98
+ NotFound: vue.DefineComponent<{}, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
99
+ };
100
+
101
+ declare const Link: vue.DefineComponent<vue.ExtractPropTypes<{
102
+ routeName: {
103
+ type: StringConstructor;
104
+ required: true;
105
+ };
106
+ routeParams: {
107
+ type: PropType<Params>;
108
+ default: () => Readonly<{}>;
109
+ };
110
+ routeOptions: {
111
+ type: PropType<NavigationOptions>;
112
+ default: () => Readonly<{}>;
113
+ };
114
+ class: {
115
+ type: StringConstructor;
116
+ default: undefined;
117
+ };
118
+ activeClassName: {
119
+ type: StringConstructor;
120
+ default: string;
121
+ };
122
+ activeStrict: {
123
+ type: BooleanConstructor;
124
+ default: boolean;
125
+ };
126
+ ignoreQueryParams: {
127
+ type: BooleanConstructor;
128
+ default: boolean;
129
+ };
130
+ target: {
131
+ type: StringConstructor;
132
+ default: undefined;
133
+ };
134
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
135
+ [key: string]: any;
136
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
137
+ routeName: {
138
+ type: StringConstructor;
139
+ required: true;
140
+ };
141
+ routeParams: {
142
+ type: PropType<Params>;
143
+ default: () => Readonly<{}>;
144
+ };
145
+ routeOptions: {
146
+ type: PropType<NavigationOptions>;
147
+ default: () => Readonly<{}>;
148
+ };
149
+ class: {
150
+ type: StringConstructor;
151
+ default: undefined;
152
+ };
153
+ activeClassName: {
154
+ type: StringConstructor;
155
+ default: string;
156
+ };
157
+ activeStrict: {
158
+ type: BooleanConstructor;
159
+ default: boolean;
160
+ };
161
+ ignoreQueryParams: {
162
+ type: BooleanConstructor;
163
+ default: boolean;
164
+ };
165
+ target: {
166
+ type: StringConstructor;
167
+ default: undefined;
168
+ };
169
+ }>> & Readonly<{}>, {
170
+ class: string;
171
+ ignoreQueryParams: boolean;
172
+ routeParams: Params;
173
+ routeOptions: NavigationOptions;
174
+ activeClassName: string;
175
+ activeStrict: boolean;
176
+ target: string;
177
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
178
+
179
+ interface LinkDirectiveValue {
180
+ name: string;
181
+ params?: Params;
182
+ options?: NavigationOptions;
183
+ }
184
+ declare const vLink: Directive<HTMLElement, LinkDirectiveValue>;
185
+
186
+ declare const useRouter: () => Router;
187
+
188
+ declare const useNavigator: () => Navigator;
189
+
190
+ declare const useRouteUtils: () => RouteUtils;
191
+
192
+ interface RouteContext {
193
+ navigator: Navigator;
194
+ route: ShallowRef<State | undefined>;
195
+ previousRoute: ShallowRef<State | undefined>;
196
+ }
197
+ interface LinkProps<P extends Params = Params> {
198
+ routeName: string;
199
+ routeParams?: P;
200
+ routeOptions?: NavigationOptions;
201
+ class?: string;
202
+ activeClassName?: string;
203
+ activeStrict?: boolean;
204
+ ignoreQueryParams?: boolean;
205
+ target?: string;
206
+ }
207
+
208
+ declare const useRoute: () => RouteContext;
209
+
210
+ declare function useRouteNode(nodeName: string): RouteContext;
211
+
212
+ declare function useRouterTransition(): ShallowRef<RouterTransitionSnapshot>;
213
+
214
+ declare function createRouterPlugin(router: Router): Plugin<[]>;
215
+
216
+ declare const RouterProvider: vue.DefineComponent<vue.ExtractPropTypes<{
217
+ router: {
218
+ type: PropType<Router>;
219
+ required: true;
220
+ };
221
+ announceNavigation: {
222
+ type: BooleanConstructor;
223
+ default: boolean;
224
+ };
225
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
226
+ [key: string]: any;
227
+ }>[] | undefined, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
228
+ router: {
229
+ type: PropType<Router>;
230
+ required: true;
231
+ };
232
+ announceNavigation: {
233
+ type: BooleanConstructor;
234
+ default: boolean;
235
+ };
236
+ }>> & Readonly<{}>, {
237
+ announceNavigation: boolean;
238
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
239
+
240
+ declare const RouterKey: InjectionKey<Router>;
241
+ declare const NavigatorKey: InjectionKey<Navigator>;
242
+ declare const RouteKey: InjectionKey<RouteContext>;
243
+
244
+ export { Link, type LinkDirectiveValue, type LinkProps, NavigatorKey, RouteKey, RouteView, type MatchProps as RouteViewMatchProps, type NotFoundProps as RouteViewNotFoundProps, type RouteViewProps, RouterKey, RouterProvider, createRouterPlugin, useNavigator, useRoute, useRouteNode, useRouteUtils, useRouter, useRouterTransition, vLink };
@@ -0,0 +1 @@
1
+ import{defineComponent as e,h as t,Fragment as r,KeepAlive as o,computed as n,onMounted as u,onUnmounted as a,shallowRef as i,onScopeDispose as s,provide as c,watch as l,Suspense as p,markRaw as f,inject as v,isVNode as d}from"vue";import{getNavigator as m,UNKNOWN_ROUTE as y}from"@real-router/core";import{startsWithSegment as g,getRouteUtils as h}from"@real-router/route-utils";import{createRouteSource as b,createRouteNodeSource as k,createActiveRouteSource as R,createTransitionSource as w}from"@real-router/sources";import{buildHref as S,buildActiveClassName as N,createRouteAnnouncer as P,shouldNavigate as E,applyLinkA11y as O}from"dom-utils";import{getPluginApi as M}from"@real-router/core/api";function j(){return null}var A=e({name:"RouteView.Match",props:{segment:{type:String,required:!0},exact:{type:Boolean,default:!1},fallback:{type:[Object,Function],default:void 0}},render:j}),B=e({name:"RouteView.NotFound",render:j});function C(e,t,r){return r?e===t:g(e,t)}function L(e){if(Array.isArray(e)){const t=[];for(const r of e)Array.isArray(r)?t.push(...L(r)):d(r)&&t.push(r);return t}return d(e)?[e]:[]}function q(e,t){const o=L(e);for(const e of o)e.type===A||e.type===B?t.push(e):e.type===r&&q(e.children,t)}function _(e){const t=i(e.getSnapshot()),r=e.subscribe(()=>{t.value=e.getSnapshot()});return s(r),t}var F=Symbol("RouterKey"),K=Symbol("NavigatorKey"),x=Symbol("RouteKey"),Q=()=>{const e=v(F);if(!e)throw new Error("useRouter must be used within a RouterProvider");return e};function V(e){const t=Q(),r=_(k(t,e)),o=m(t),n=i(r.value.route),u=i(r.value.previousRoute);return l(r,e=>{n.value=e.route,u.value=e.previousRoute},{flush:"sync"}),{navigator:o,route:n,previousRoute:u}}function $(e){const t=e.children;return t?.default?.()??null}function z(e,r){if(void 0===r)return e;const o="function"==typeof r?r():r;return t(p,{},{default:()=>e,fallback:()=>o})}var D=e({name:"RouteView",props:{nodeName:{type:String,required:!0},keepAlive:{type:Boolean,default:!1}},setup(n,{slots:u}){const a=V(n.nodeName),i=new Map;return()=>{const s=a.route.value;if(!s)return null;const c=[];q(u.default?.(),c);const{rendered:l,fallback:p}=function(e,t,r){let o,n=null,u=!1;const a=[];for(const i of e){if(i.type===B){n=i.children;continue}const e=i.props,s=e?.segment??"";!u&&C(t,r?`${r}.${s}`:s,e?.exact??!1)&&(u=!0,o=e?.fallback,a.push(i))}if(!u&&t===y&&null!==n){const t=e.filter(e=>e.type===B).at(-1);t&&a.push(t)}return{rendered:a,activeMatchFound:u,fallback:o}}(c,s.name,n.nodeName);if(0===l.length)return null;const v=l[0];if(!n.keepAlive){if(v.type===A||v.type===B){const e=$(v);return e?z(t(r,e),p):null}return null}const d=v.props,m=d?.segment??"__not-found__",g=function(t,r){const o=t.get(r);if(o)return o;const n=f(e({name:`KeepAlive-${r}`,setup:(e,t)=>()=>t.slots.default?.()}));return t.set(r,n),n}(i,m),h=$(v)??[];return z(t(o,null,{default:()=>t(g,{key:m},{default:()=>h})}),p)}}}),T=Object.assign(D,{Match:A,NotFound:B}),W=Object.freeze({}),H=Object.freeze({}),U=e({name:"Link",props:{routeName:{type:String,required:!0},routeParams:{type:Object,default:()=>W},routeOptions:{type:Object,default:()=>H},class:{type:String,default:void 0},activeClassName:{type:String,default:"active"},activeStrict:{type:Boolean,default:!1},ignoreQueryParams:{type:Boolean,default:!0},target:{type:String,default:void 0}},setup(e,{slots:r,attrs:o}){const u=Q(),a=function(e,t,r=!1,o=!0){const n=Q();return _(R(n,e,t,{strict:r,ignoreQueryParams:o}))}(e.routeName,e.routeParams,e.activeStrict,e.ignoreQueryParams),i=n(()=>S(u,e.routeName,e.routeParams)),s=n(()=>N(a.value,e.activeClassName,e.class)),c=t=>{o.onClick&&"function"==typeof o.onClick&&(o.onClick(t),t.defaultPrevented)||E(t)&&"_blank"!==e.target&&(t.preventDefault(),u.navigate(e.routeName,e.routeParams,e.routeOptions).catch(()=>{}))};return()=>t("a",{...o,href:i.value,class:s.value,target:e.target,onClick:c},r.default?.())}}),G=null;function I(e){G=e}function J(){if(!G)throw new Error("v-link directive requires a RouterProvider ancestor. Make sure RouterProvider is mounted.");return G}var X=new WeakMap,Y=new WeakMap;function Z(e,t,r){const o=function(e,t){return r=>{E(r)&&(r.preventDefault(),e.navigate(t.name,t.params??{},t.options??{}).catch(()=>{}))}}(t,r),n=function(e,t,r){return o=>{"Enter"!==o.key||r instanceof HTMLButtonElement||e.navigate(t.name,t.params??{},t.options??{}).catch(()=>{})}}(t,r,e);e.addEventListener("click",o),e.addEventListener("keydown",n),X.set(e,o),Y.set(e,n)}function ee(e){const t=X.get(e),r=Y.get(e);t&&e.removeEventListener("click",t),r&&e.removeEventListener("keydown",r),X.delete(e),Y.delete(e)}var te={mounted(e,t){const r=J();O(e),e.style.cursor="pointer",Z(e,r,t.value)},updated(e,t){const r=J();ee(e),Z(e,r,t.value)},beforeUnmount(e){ee(e)}},re=()=>{const e=v(K);if(!e)throw new Error("useNavigator must be used within a RouterProvider");return e},oe=()=>{const e=Q();return h(M(e).getTree())},ne=()=>{const e=v(x);if(!e)throw new Error("useRoute must be used within a RouterProvider");return e};function ue(){const e=Q();return _(w(e))}function ae(e){return{install(t){const r=m(e);I(e);const o=b(e),n=o.getSnapshot(),u=i(n.route),a=i(n.previousRoute);o.subscribe(()=>{const e=o.getSnapshot();u.value=e.route,a.value=e.previousRoute}),t.provide(F,e),t.provide(K,r),t.provide(x,{navigator:r,route:u,previousRoute:a})}}}var ie=e({name:"RouterProvider",props:{router:{type:Object,required:!0},announceNavigation:{type:Boolean,default:!1}},setup(e,{slots:t}){u(()=>{if(!e.announceNavigation)return;const t=P(e.router);a(()=>{t.destroy()})});const r=m(e.router);I(e.router);const o=b(e.router),n=o.getSnapshot(),l=i(n.route),p=i(n.previousRoute),f=o.subscribe(()=>{const e=o.getSnapshot();l.value=e.route,p.value=e.previousRoute});return s(f),c(F,e.router),c(K,r),c(x,{navigator:r,route:l,previousRoute:p}),()=>t.default?.()}});export{U as Link,K as NavigatorKey,x as RouteKey,T as RouteView,F as RouterKey,ie as RouterProvider,ae as createRouterPlugin,re as useNavigator,ne as useRoute,V as useRouteNode,oe as useRouteUtils,Q as useRouter,ue as useRouterTransition,te as vLink};//# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/RouteView/components.ts","../../src/components/RouteView/helpers.ts","../../src/useRefFromSource.ts","../../src/context.ts","../../src/composables/useRouter.ts","../../src/composables/useRouteNode.ts","../../src/components/RouteView/RouteView.ts","../../src/composables/useIsActiveRoute.ts","../../src/constants.ts","../../src/components/Link.ts","../../src/directives/vLink.ts","../../src/composables/useNavigator.ts","../../src/composables/useRouteUtils.ts","../../src/composables/useRoute.ts","../../src/composables/useRouterTransition.ts","../../src/createRouterPlugin.ts","../../src/RouterProvider.ts"],"names":["shallowRef","defineComponent","Fragment","h","shouldNavigate","inject","getNavigator","createRouteSource","onScopeDispose"],"mappings":"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","file":"index.mjs","sourcesContent":["import { defineComponent } from \"vue\";\n\nimport type { PropType, VNode } from \"vue\";\n\nfunction renderNull() {\n return null;\n}\n\nexport const Match = defineComponent({\n name: \"RouteView.Match\",\n props: {\n segment: {\n type: String as PropType<string>,\n required: true,\n },\n exact: {\n type: Boolean,\n default: false,\n },\n fallback: {\n type: [Object, Function] as PropType<VNode | (() => VNode)>,\n default: undefined,\n },\n },\n render: renderNull,\n});\n\nexport const NotFound = defineComponent({\n name: \"RouteView.NotFound\",\n render: renderNull,\n});\n","import { UNKNOWN_ROUTE } from \"@real-router/core\";\nimport { startsWithSegment } from \"@real-router/route-utils\";\nimport { Fragment, isVNode } from \"vue\";\n\nimport { Match, NotFound } from \"./components\";\n\nimport type { VNode } from \"vue\";\n\ntype FallbackType = VNode | (() => VNode) | undefined;\n\nfunction isSegmentMatch(\n routeName: string,\n fullSegmentName: string,\n exact: boolean,\n): boolean {\n if (exact) {\n return routeName === fullSegmentName;\n }\n\n return startsWithSegment(routeName, fullSegmentName);\n}\n\nfunction normalizeChildren(children: unknown): VNode[] {\n if (Array.isArray(children)) {\n const result: VNode[] = [];\n\n for (const child of children) {\n if (Array.isArray(child)) {\n result.push(...normalizeChildren(child));\n } else if (isVNode(child)) {\n result.push(child);\n }\n }\n\n return result;\n }\n\n if (isVNode(children)) {\n return [children];\n }\n\n return [];\n}\n\nexport function collectElements(children: unknown, result: VNode[]): void {\n const vnodes = normalizeChildren(children);\n\n for (const child of vnodes) {\n if (child.type === Match || child.type === NotFound) {\n result.push(child);\n } else if (child.type === Fragment) {\n collectElements(child.children, result);\n }\n }\n}\n\nexport function buildRenderList(\n elements: VNode[],\n routeName: string,\n nodeName: string,\n): {\n rendered: VNode[];\n activeMatchFound: boolean;\n fallback?: FallbackType;\n} {\n let notFoundChildren: unknown = null;\n let activeMatchFound = false;\n let fallback: FallbackType = undefined;\n const rendered: VNode[] = [];\n\n for (const child of elements) {\n if (child.type === NotFound) {\n notFoundChildren = child.children;\n continue;\n }\n\n const props = child.props as {\n segment: string;\n exact?: boolean;\n fallback?: FallbackType;\n } | null;\n const segment = props?.segment ?? \"\";\n const exact = props?.exact ?? false;\n const fullSegmentName = nodeName ? `${nodeName}.${segment}` : segment;\n const isActive =\n !activeMatchFound && isSegmentMatch(routeName, fullSegmentName, exact);\n\n if (isActive) {\n activeMatchFound = true;\n fallback = props?.fallback;\n rendered.push(child);\n }\n }\n\n if (\n !activeMatchFound &&\n routeName === UNKNOWN_ROUTE &&\n notFoundChildren !== null\n ) {\n const nfElements = elements.filter((e) => e.type === NotFound);\n /* v8 ignore next 3 */\n const lastNf = nfElements.at(-1);\n\n if (lastNf) {\n rendered.push(lastNf);\n }\n }\n\n return { rendered, activeMatchFound, fallback };\n}\n","import { shallowRef, onScopeDispose } from \"vue\";\n\nimport type { RouterSource } from \"@real-router/sources\";\nimport type { ShallowRef } from \"vue\";\n\nexport function useRefFromSource<T>(source: RouterSource<T>): ShallowRef<T> {\n const ref = shallowRef(source.getSnapshot());\n\n const unsub = source.subscribe(() => {\n ref.value = source.getSnapshot();\n });\n\n onScopeDispose(unsub);\n\n return ref;\n}\n","import type { RouteContext as RouteContextType } from \"./types\";\nimport type { Router, Navigator } from \"@real-router/core\";\nimport type { InjectionKey } from \"vue\";\n\nexport const RouterKey: InjectionKey<Router> = Symbol(\"RouterKey\");\n\nexport const NavigatorKey: InjectionKey<Navigator> = Symbol(\"NavigatorKey\");\n\nexport const RouteKey: InjectionKey<RouteContextType> = Symbol(\"RouteKey\");\n","import { inject } from \"vue\";\n\nimport { RouterKey } from \"../context\";\n\nimport type { Router } from \"@real-router/core\";\n\nexport const useRouter = (): Router => {\n const router = inject(RouterKey);\n\n if (!router) {\n throw new Error(\"useRouter must be used within a RouterProvider\");\n }\n\n return router;\n};\n","import { getNavigator } from \"@real-router/core\";\nimport { createRouteNodeSource } from \"@real-router/sources\";\nimport { shallowRef, watch } from \"vue\";\n\nimport { useRefFromSource } from \"../useRefFromSource\";\nimport { useRouter } from \"./useRouter\";\n\nimport type { RouteContext } from \"../types\";\nimport type { State } from \"@real-router/core\";\n\nexport function useRouteNode(nodeName: string): RouteContext {\n const router = useRouter();\n\n const source = createRouteNodeSource(router, nodeName);\n const snapshot = useRefFromSource(source);\n\n const navigator = getNavigator(router);\n\n const route = shallowRef<State | undefined>(snapshot.value.route);\n const previousRoute = shallowRef<State | undefined>(\n snapshot.value.previousRoute,\n );\n\n watch(\n snapshot,\n (newSnapshot) => {\n route.value = newSnapshot.route;\n previousRoute.value = newSnapshot.previousRoute;\n },\n { flush: \"sync\" },\n );\n\n return {\n navigator,\n route,\n previousRoute,\n };\n}\n","import {\n Fragment,\n defineComponent,\n h,\n KeepAlive,\n markRaw,\n Suspense,\n} from \"vue\";\n\nimport { Match, NotFound } from \"./components\";\nimport { buildRenderList, collectElements } from \"./helpers\";\nimport { useRouteNode } from \"../../composables/useRouteNode\";\n\nimport type { Component, VNode } from \"vue\";\n\ntype SlotChildren = Record<string, (() => VNode[]) | undefined> | null;\n\nfunction getSlotContent(vnode: VNode): VNode[] | null {\n const slots = vnode.children as SlotChildren;\n\n return slots?.default?.() ?? null;\n}\n\nfunction getOrCreateWrapper(\n cache: Map<string, Component>,\n segment: string,\n): Component {\n const existing = cache.get(segment);\n\n if (existing) {\n return existing;\n }\n\n const wrapper = markRaw(\n defineComponent({\n name: `KeepAlive-${segment}`,\n setup(_wrapperProps, wrapperCtx) {\n return () => wrapperCtx.slots.default?.();\n },\n }),\n );\n\n cache.set(segment, wrapper);\n\n return wrapper;\n}\n\nfunction wrapWithSuspense(content: VNode, fallback: unknown): VNode {\n if (fallback === undefined) {\n return content;\n }\n\n const fallbackContent =\n typeof fallback === \"function\" ? (fallback as () => VNode)() : fallback;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n const suspenseComponent = Suspense as any;\n\n return h(\n suspenseComponent,\n {},\n {\n default: () => content,\n fallback: () => fallbackContent,\n },\n );\n}\n\nconst RouteViewComponent = defineComponent({\n name: \"RouteView\",\n props: {\n nodeName: {\n type: String,\n required: true,\n },\n keepAlive: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { slots }) {\n const routeContext = useRouteNode(props.nodeName);\n\n const wrapperCache = new Map<string, Component>();\n\n return (): VNode | null => {\n const route = routeContext.route.value;\n\n if (!route) {\n return null;\n }\n\n const elements: VNode[] = [];\n\n collectElements(slots.default?.(), elements);\n\n const { rendered, fallback } = buildRenderList(\n elements,\n route.name,\n props.nodeName,\n );\n\n if (rendered.length === 0) {\n return null;\n }\n\n const activeChild = rendered[0];\n\n if (!props.keepAlive) {\n if (activeChild.type === Match || activeChild.type === NotFound) {\n const content = getSlotContent(activeChild);\n\n if (!content) {\n return null;\n }\n\n const fragment = h(Fragment, content);\n\n return wrapWithSuspense(fragment, fallback);\n }\n\n /* v8 ignore start */\n return null;\n /* v8 ignore stop */\n }\n\n const activeProps = activeChild.props as {\n segment?: string;\n } | null;\n const segment = activeProps?.segment ?? \"__not-found__\";\n\n const WrapperComponent = getOrCreateWrapper(wrapperCache, segment);\n /* v8 ignore next */\n const slotContent = getSlotContent(activeChild) ?? [];\n\n const keepAliveContent = h(KeepAlive, null, {\n default: () =>\n h(WrapperComponent, { key: segment }, { default: () => slotContent }),\n });\n\n return wrapWithSuspense(keepAliveContent, fallback);\n };\n },\n});\n\nexport const RouteView = Object.assign(RouteViewComponent, { Match, NotFound });\n\nexport type {\n RouteViewProps,\n MatchProps as RouteViewMatchProps,\n NotFoundProps as RouteViewNotFoundProps,\n} from \"./types\";\n","import { createActiveRouteSource } from \"@real-router/sources\";\n\nimport { useRefFromSource } from \"../useRefFromSource\";\nimport { useRouter } from \"./useRouter\";\n\nimport type { Params } from \"@real-router/core\";\nimport type { ShallowRef } from \"vue\";\n\nexport function useIsActiveRoute(\n routeName: string,\n params?: Params,\n strict = false,\n ignoreQueryParams = true,\n): ShallowRef<boolean> {\n const router = useRouter();\n\n const source = createActiveRouteSource(router, routeName, params, {\n strict,\n ignoreQueryParams,\n });\n\n return useRefFromSource(source);\n}\n","/**\n * Stable empty object for default params\n */\nexport const EMPTY_PARAMS = Object.freeze({});\n\n/**\n * Stable empty options object\n */\nexport const EMPTY_OPTIONS = Object.freeze({});\n","import { shouldNavigate, buildHref, buildActiveClassName } from \"dom-utils\";\nimport { defineComponent, h, computed } from \"vue\";\n\nimport { useIsActiveRoute } from \"../composables/useIsActiveRoute\";\nimport { useRouter } from \"../composables/useRouter\";\nimport { EMPTY_PARAMS, EMPTY_OPTIONS } from \"../constants\";\n\nimport type { Params, NavigationOptions } from \"@real-router/core\";\nimport type { PropType } from \"vue\";\n\nexport const Link = defineComponent({\n name: \"Link\",\n props: {\n routeName: {\n type: String,\n required: true,\n },\n routeParams: {\n type: Object as PropType<Params>,\n default: () => EMPTY_PARAMS,\n },\n routeOptions: {\n type: Object as PropType<NavigationOptions>,\n default: () => EMPTY_OPTIONS,\n },\n class: {\n type: String,\n default: undefined,\n },\n activeClassName: {\n type: String,\n default: \"active\",\n },\n activeStrict: {\n type: Boolean,\n default: false,\n },\n ignoreQueryParams: {\n type: Boolean,\n default: true,\n },\n target: {\n type: String,\n default: undefined,\n },\n },\n setup(props, { slots, attrs }) {\n const router = useRouter();\n\n const isActive = useIsActiveRoute(\n props.routeName,\n props.routeParams,\n props.activeStrict,\n props.ignoreQueryParams,\n );\n\n const href = computed(() =>\n buildHref(router, props.routeName, props.routeParams),\n );\n\n const finalClassName = computed(() =>\n buildActiveClassName(isActive.value, props.activeClassName, props.class),\n );\n\n const handleClick = (evt: MouseEvent) => {\n if (attrs.onClick && typeof attrs.onClick === \"function\") {\n (attrs.onClick as (evt: MouseEvent) => void)(evt);\n\n if (evt.defaultPrevented) {\n return;\n }\n }\n\n if (!shouldNavigate(evt) || props.target === \"_blank\") {\n return;\n }\n\n evt.preventDefault();\n router\n .navigate(props.routeName, props.routeParams, props.routeOptions)\n .catch(() => {});\n };\n\n return () =>\n h(\n \"a\",\n {\n ...attrs,\n href: href.value,\n class: finalClassName.value,\n target: props.target,\n onClick: handleClick,\n },\n slots.default?.(),\n );\n },\n});\n","import { shouldNavigate, applyLinkA11y } from \"dom-utils\";\n\nimport type { Router, NavigationOptions, Params } from \"@real-router/core\";\nimport type { Directive } from \"vue\";\n\nexport interface LinkDirectiveValue {\n name: string;\n params?: Params;\n options?: NavigationOptions;\n}\n\nlet _router: Router | null = null;\n\nexport function setDirectiveRouter(router: Router): void {\n _router = router;\n}\n\nexport function getDirectiveRouter(): Router {\n if (!_router) {\n /* v8 ignore next 3 -- @preserve Defensive: router always initialized by RouterProvider */\n throw new Error(\n \"v-link directive requires a RouterProvider ancestor. Make sure RouterProvider is mounted.\",\n );\n }\n\n return _router;\n}\n\nconst clickHandlers = new WeakMap<HTMLElement, (evt: MouseEvent) => void>();\nconst keydownHandlers = new WeakMap<\n HTMLElement,\n (evt: KeyboardEvent) => void\n>();\n\nfunction createClickHandler(\n router: Router,\n value: LinkDirectiveValue,\n): (evt: MouseEvent) => void {\n return (evt: MouseEvent) => {\n if (!shouldNavigate(evt)) {\n return;\n }\n\n evt.preventDefault();\n router\n .navigate(value.name, value.params ?? {}, value.options ?? {})\n .catch(() => {});\n };\n}\n\nfunction createKeydownHandler(\n router: Router,\n value: LinkDirectiveValue,\n el: HTMLElement,\n): (evt: KeyboardEvent) => void {\n return (evt: KeyboardEvent) => {\n if (evt.key === \"Enter\" && !(el instanceof HTMLButtonElement)) {\n router\n .navigate(value.name, value.params ?? {}, value.options ?? {})\n .catch(() => {});\n }\n };\n}\n\nfunction attachHandlers(\n el: HTMLElement,\n router: Router,\n value: LinkDirectiveValue,\n): void {\n const handleClick = createClickHandler(router, value);\n const handleKeyDown = createKeydownHandler(router, value, el);\n\n el.addEventListener(\"click\", handleClick);\n el.addEventListener(\"keydown\", handleKeyDown);\n\n clickHandlers.set(el, handleClick);\n keydownHandlers.set(el, handleKeyDown);\n}\n\nfunction detachHandlers(el: HTMLElement): void {\n const clickHandler = clickHandlers.get(el);\n const keydownHandler = keydownHandlers.get(el);\n\n if (clickHandler) {\n el.removeEventListener(\"click\", clickHandler);\n }\n if (keydownHandler) {\n el.removeEventListener(\"keydown\", keydownHandler);\n }\n\n clickHandlers.delete(el);\n keydownHandlers.delete(el);\n}\n\nexport const vLink: Directive<HTMLElement, LinkDirectiveValue> = {\n mounted(el, binding) {\n const router = getDirectiveRouter();\n\n applyLinkA11y(el);\n\n el.style.cursor = \"pointer\";\n\n attachHandlers(el, router, binding.value);\n },\n\n updated(el, binding) {\n const router = getDirectiveRouter();\n\n detachHandlers(el);\n attachHandlers(el, router, binding.value);\n },\n\n beforeUnmount(el) {\n detachHandlers(el);\n },\n};\n","import { inject } from \"vue\";\n\nimport { NavigatorKey } from \"../context\";\n\nimport type { Navigator } from \"@real-router/core\";\n\nexport const useNavigator = (): Navigator => {\n const navigator = inject(NavigatorKey);\n\n if (!navigator) {\n throw new Error(\"useNavigator must be used within a RouterProvider\");\n }\n\n return navigator;\n};\n","import { getPluginApi } from \"@real-router/core/api\";\nimport { getRouteUtils } from \"@real-router/route-utils\";\n\nimport { useRouter } from \"./useRouter\";\n\nimport type { RouteUtils } from \"@real-router/route-utils\";\n\nexport const useRouteUtils = (): RouteUtils => {\n const router = useRouter();\n\n return getRouteUtils(getPluginApi(router).getTree());\n};\n","import { inject } from \"vue\";\n\nimport { RouteKey } from \"../context\";\n\nimport type { RouteContext } from \"../types\";\n\nexport const useRoute = (): RouteContext => {\n const routeContext = inject(RouteKey);\n\n if (!routeContext) {\n throw new Error(\"useRoute must be used within a RouterProvider\");\n }\n\n return routeContext;\n};\n","import { createTransitionSource } from \"@real-router/sources\";\n\nimport { useRefFromSource } from \"../useRefFromSource\";\nimport { useRouter } from \"./useRouter\";\n\nimport type { RouterTransitionSnapshot } from \"@real-router/sources\";\nimport type { ShallowRef } from \"vue\";\n\nexport function useRouterTransition(): ShallowRef<RouterTransitionSnapshot> {\n const router = useRouter();\n\n const source = createTransitionSource(router);\n\n return useRefFromSource(source);\n}\n","import { getNavigator } from \"@real-router/core\";\nimport { createRouteSource } from \"@real-router/sources\";\nimport { shallowRef } from \"vue\";\n\nimport { NavigatorKey, RouteKey, RouterKey } from \"./context\";\nimport { setDirectiveRouter } from \"./directives/vLink\";\n\nimport type { Router } from \"@real-router/core\";\nimport type { Plugin } from \"vue\";\n\n// eslint-disable-next-line sonarjs/function-return-type -- Plugin<[]> return type is consistent\nexport function createRouterPlugin(router: Router): Plugin<[]> {\n return {\n install(app): void {\n const navigator = getNavigator(router);\n\n setDirectiveRouter(router);\n\n const source = createRouteSource(router);\n const initialSnapshot = source.getSnapshot();\n\n const route = shallowRef(initialSnapshot.route);\n const previousRoute = shallowRef(initialSnapshot.previousRoute);\n\n source.subscribe(() => {\n const snapshot = source.getSnapshot();\n\n route.value = snapshot.route;\n previousRoute.value = snapshot.previousRoute;\n });\n\n app.provide(RouterKey, router);\n app.provide(NavigatorKey, navigator);\n app.provide(RouteKey, { navigator, route, previousRoute });\n },\n };\n}\n","import { getNavigator } from \"@real-router/core\";\nimport { createRouteSource } from \"@real-router/sources\";\nimport { createRouteAnnouncer } from \"dom-utils\";\nimport {\n defineComponent,\n onMounted,\n onUnmounted,\n provide,\n shallowRef,\n onScopeDispose,\n} from \"vue\";\n\nimport { NavigatorKey, RouteKey, RouterKey } from \"./context\";\nimport { setDirectiveRouter } from \"./directives/vLink\";\n\nimport type { Router } from \"@real-router/core\";\nimport type { PropType } from \"vue\";\n\nexport const RouterProvider = defineComponent({\n name: \"RouterProvider\",\n props: {\n router: {\n type: Object as PropType<Router>,\n required: true,\n },\n announceNavigation: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { slots }) {\n onMounted(() => {\n if (!props.announceNavigation) {\n return;\n }\n\n const announcer = createRouteAnnouncer(props.router);\n\n onUnmounted(() => {\n announcer.destroy();\n });\n });\n\n const navigator = getNavigator(props.router);\n\n setDirectiveRouter(props.router);\n\n const source = createRouteSource(props.router);\n const initialSnapshot = source.getSnapshot();\n\n const route = shallowRef(initialSnapshot.route);\n const previousRoute = shallowRef(initialSnapshot.previousRoute);\n\n const unsub = source.subscribe(() => {\n const snapshot = source.getSnapshot();\n\n route.value = snapshot.route;\n previousRoute.value = snapshot.previousRoute;\n });\n\n onScopeDispose(unsub);\n\n provide(RouterKey, props.router);\n provide(NavigatorKey, navigator);\n provide(RouteKey, { navigator, route, previousRoute });\n\n return () => slots.default?.();\n },\n});\n"]}
@@ -0,0 +1 @@
1
+ {"inputs":{"src/components/RouteView/components.ts":{"bytes":597,"imports":[{"path":"vue","kind":"import-statement","external":true}],"format":"esm"},"src/components/RouteView/helpers.ts":{"bytes":2595,"imports":[{"path":"@real-router/core","kind":"import-statement","external":true},{"path":"@real-router/route-utils","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"src/components/RouteView/components.ts","kind":"import-statement","original":"./components"}],"format":"esm"},"src/useRefFromSource.ts":{"bytes":404,"imports":[{"path":"vue","kind":"import-statement","external":true}],"format":"esm"},"src/context.ts":{"bytes":390,"imports":[],"format":"esm"},"src/composables/useRouter.ts":{"bytes":313,"imports":[{"path":"vue","kind":"import-statement","external":true},{"path":"src/context.ts","kind":"import-statement","original":"../context"}],"format":"esm"},"src/composables/useRouteNode.ts":{"bytes":991,"imports":[{"path":"@real-router/core","kind":"import-statement","external":true},{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"src/useRefFromSource.ts","kind":"import-statement","original":"../useRefFromSource"},{"path":"src/composables/useRouter.ts","kind":"import-statement","original":"./useRouter"}],"format":"esm"},"src/components/RouteView/RouteView.ts":{"bytes":3491,"imports":[{"path":"vue","kind":"import-statement","external":true},{"path":"src/components/RouteView/components.ts","kind":"import-statement","original":"./components"},{"path":"src/components/RouteView/helpers.ts","kind":"import-statement","original":"./helpers"},{"path":"src/composables/useRouteNode.ts","kind":"import-statement","original":"../../composables/useRouteNode"}],"format":"esm"},"src/components/RouteView/index.ts":{"bytes":145,"imports":[{"path":"src/components/RouteView/RouteView.ts","kind":"import-statement","original":"./RouteView"}],"format":"esm"},"src/composables/useIsActiveRoute.ts":{"bytes":577,"imports":[{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"src/useRefFromSource.ts","kind":"import-statement","original":"../useRefFromSource"},{"path":"src/composables/useRouter.ts","kind":"import-statement","original":"./useRouter"}],"format":"esm"},"src/constants.ts":{"bytes":185,"imports":[],"format":"esm"},"src/components/Link.ts":{"bytes":2312,"imports":[{"path":"dom-utils","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"src/composables/useIsActiveRoute.ts","kind":"import-statement","original":"../composables/useIsActiveRoute"},{"path":"src/composables/useRouter.ts","kind":"import-statement","original":"../composables/useRouter"},{"path":"src/constants.ts","kind":"import-statement","original":"../constants"}],"format":"esm"},"src/directives/vLink.ts":{"bytes":2781,"imports":[{"path":"dom-utils","kind":"import-statement","external":true}],"format":"esm"},"src/composables/useNavigator.ts":{"bytes":340,"imports":[{"path":"vue","kind":"import-statement","external":true},{"path":"src/context.ts","kind":"import-statement","original":"../context"}],"format":"esm"},"src/composables/useRouteUtils.ts":{"bytes":355,"imports":[{"path":"@real-router/core/api","kind":"import-statement","external":true},{"path":"@real-router/route-utils","kind":"import-statement","external":true},{"path":"src/composables/useRouter.ts","kind":"import-statement","original":"./useRouter"}],"format":"esm"},"src/composables/useRoute.ts":{"bytes":330,"imports":[{"path":"vue","kind":"import-statement","external":true},{"path":"src/context.ts","kind":"import-statement","original":"../context"}],"format":"esm"},"src/composables/useRouterTransition.ts":{"bytes":468,"imports":[{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"src/useRefFromSource.ts","kind":"import-statement","original":"../useRefFromSource"},{"path":"src/composables/useRouter.ts","kind":"import-statement","original":"./useRouter"}],"format":"esm"},"src/createRouterPlugin.ts":{"bytes":1201,"imports":[{"path":"@real-router/core","kind":"import-statement","external":true},{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"src/context.ts","kind":"import-statement","original":"./context"},{"path":"src/directives/vLink.ts","kind":"import-statement","original":"./directives/vLink"}],"format":"esm"},"src/RouterProvider.ts":{"bytes":1690,"imports":[{"path":"@real-router/core","kind":"import-statement","external":true},{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"dom-utils","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"src/context.ts","kind":"import-statement","original":"./context"},{"path":"src/directives/vLink.ts","kind":"import-statement","original":"./directives/vLink"}],"format":"esm"},"src/index.ts":{"bytes":1096,"imports":[{"path":"src/components/RouteView/index.ts","kind":"import-statement","original":"./components/RouteView"},{"path":"src/components/Link.ts","kind":"import-statement","original":"./components/Link"},{"path":"src/directives/vLink.ts","kind":"import-statement","original":"./directives/vLink"},{"path":"src/composables/useRouter.ts","kind":"import-statement","original":"./composables/useRouter"},{"path":"src/composables/useNavigator.ts","kind":"import-statement","original":"./composables/useNavigator"},{"path":"src/composables/useRouteUtils.ts","kind":"import-statement","original":"./composables/useRouteUtils"},{"path":"src/composables/useRoute.ts","kind":"import-statement","original":"./composables/useRoute"},{"path":"src/composables/useRouteNode.ts","kind":"import-statement","original":"./composables/useRouteNode"},{"path":"src/composables/useRouterTransition.ts","kind":"import-statement","original":"./composables/useRouterTransition"},{"path":"src/createRouterPlugin.ts","kind":"import-statement","original":"./createRouterPlugin"},{"path":"src/RouterProvider.ts","kind":"import-statement","original":"./RouterProvider"},{"path":"src/context.ts","kind":"import-statement","original":"./context"}],"format":"esm"}},"outputs":{"dist/esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":30914},"dist/esm/index.mjs":{"imports":[{"path":"vue","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"@real-router/core","kind":"import-statement","external":true},{"path":"@real-router/route-utils","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"@real-router/core","kind":"import-statement","external":true},{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"dom-utils","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"dom-utils","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"@real-router/core/api","kind":"import-statement","external":true},{"path":"@real-router/route-utils","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"@real-router/core","kind":"import-statement","external":true},{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true},{"path":"@real-router/core","kind":"import-statement","external":true},{"path":"@real-router/sources","kind":"import-statement","external":true},{"path":"dom-utils","kind":"import-statement","external":true},{"path":"vue","kind":"import-statement","external":true}],"exports":["Link","NavigatorKey","RouteKey","RouteView","RouterKey","RouterProvider","createRouterPlugin","useNavigator","useRoute","useRouteNode","useRouteUtils","useRouter","useRouterTransition","vLink"],"entryPoint":"src/index.ts","inputs":{"src/components/RouteView/RouteView.ts":{"bytesInOutput":2634},"src/components/RouteView/components.ts":{"bytesInOutput":467},"src/components/RouteView/helpers.ts":{"bytesInOutput":2036},"src/composables/useRouteNode.ts":{"bytesInOutput":739},"src/useRefFromSource.ts":{"bytesInOutput":260},"src/composables/useRouter.ts":{"bytesInOutput":202},"src/context.ts":{"bytesInOutput":163},"src/components/RouteView/index.ts":{"bytesInOutput":0},"src/index.ts":{"bytesInOutput":0},"src/components/Link.ts":{"bytesInOutput":1883},"src/composables/useIsActiveRoute.ts":{"bytesInOutput":330},"src/constants.ts":{"bytesInOutput":77},"src/directives/vLink.ts":{"bytesInOutput":2032},"src/composables/useNavigator.ts":{"bytesInOutput":232},"src/composables/useRouteUtils.ts":{"bytesInOutput":229},"src/composables/useRoute.ts":{"bytesInOutput":229},"src/composables/useRouterTransition.ts":{"bytesInOutput":212},"src/createRouterPlugin.ts":{"bytesInOutput":892},"src/RouterProvider.ts":{"bytesInOutput":1535}},"bytes":15160}}}
package/package.json ADDED
@@ -0,0 +1,76 @@
1
+ {
2
+ "name": "@real-router/vue",
3
+ "version": "0.0.1",
4
+ "type": "commonjs",
5
+ "description": "Vue 3 integration for Real-Router",
6
+ "main": "./dist/cjs/index.js",
7
+ "module": "./dist/esm/index.mjs",
8
+ "types": "./dist/esm/index.d.mts",
9
+ "exports": {
10
+ ".": {
11
+ "development": "./src/index.ts",
12
+ "types": {
13
+ "import": "./dist/esm/index.d.mts",
14
+ "require": "./dist/cjs/index.d.ts"
15
+ },
16
+ "import": "./dist/esm/index.mjs",
17
+ "require": "./dist/cjs/index.js"
18
+ }
19
+ },
20
+ "files": [
21
+ "dist",
22
+ "src"
23
+ ],
24
+ "homepage": "https://github.com/greydragon888/real-router",
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "git+https://github.com/greydragon888/real-router.git"
28
+ },
29
+ "bugs": {
30
+ "url": "https://github.com/greydragon888/real-router/issues"
31
+ },
32
+ "scripts": {
33
+ "build": "tsup",
34
+ "test": "vitest",
35
+ "test:stress": "vitest run --config vitest.config.stress.mts",
36
+ "type-check": "tsc --noEmit",
37
+ "lint": "eslint --cache src/ tests/ --fix --max-warnings 0",
38
+ "lint:package": "publint",
39
+ "lint:types": "attw --pack ."
40
+ },
41
+ "keywords": [
42
+ "router",
43
+ "html5",
44
+ "history",
45
+ "tree",
46
+ "vue",
47
+ "vue3",
48
+ "composition-api",
49
+ "composables",
50
+ "reactive",
51
+ "components",
52
+ "real-router"
53
+ ],
54
+ "author": {
55
+ "name": "Oleg Ivanov",
56
+ "email": "greydragon888@gmail.com",
57
+ "url": "https://github.com/greydragon888"
58
+ },
59
+ "license": "MIT",
60
+ "sideEffects": false,
61
+ "dependencies": {
62
+ "@real-router/core": "workspace:^",
63
+ "@real-router/route-utils": "workspace:^",
64
+ "@real-router/sources": "workspace:^",
65
+ "dom-utils": "workspace:^"
66
+ },
67
+ "devDependencies": {
68
+ "@real-router/browser-plugin": "workspace:^",
69
+ "@testing-library/jest-dom": "6.9.1",
70
+ "@vue/test-utils": "2.4.6",
71
+ "vue": "3.5.13"
72
+ },
73
+ "peerDependencies": {
74
+ "vue": ">=3.3.0"
75
+ }
76
+ }