@tanstack/vue-router
Version:
Modern and scalable routing for Vue applications
53 lines (52 loc) • 1.32 kB
JavaScript
import { provideRouter } from "./routerContext.js";
import { Matches } from "./Matches.js";
import * as Vue from "vue";
//#region src/RouterProvider.tsx
var RouterContextProvider = Vue.defineComponent({
name: "RouterContextProvider",
props: { router: {
type: Object,
required: true
} },
setup(props, { attrs, slots }) {
const router = props.router;
const restAttrs = attrs;
router.update({
...router.options,
...restAttrs,
context: {
...router.options.context,
...restAttrs.context || {}
}
});
provideRouter(router);
return () => {
const childContent = slots.default?.();
if (router.options.Wrap) {
const WrapComponent = router.options.Wrap;
return Vue.h(WrapComponent, null, () => childContent);
}
if (Array.isArray(childContent) && childContent.length === 1) return childContent[0];
return childContent;
};
}
});
var RouterProvider = Vue.defineComponent({
name: "RouterProvider",
props: { router: {
type: Object,
required: true
} },
setup(props, { attrs }) {
const restAttrs = attrs;
return () => {
return Vue.h(RouterContextProvider, {
router: props.router,
...restAttrs
}, { default: () => Vue.h(Matches) });
};
}
});
//#endregion
export { RouterContextProvider, RouterProvider };
//# sourceMappingURL=RouterProvider.js.map