UNPKG

@esmx/router-vue

Version:

Vue integration for @esmx/router - A universal router that works seamlessly with both Vue 2.7+ and Vue 3

50 lines (49 loc) 1.36 kB
import { version } from "vue"; export const isVue2 = version.startsWith("2."); export function defineRouterProperties(target, routerGetter, routeGetter, configurable = false) { Object.defineProperties(target, { $router: { configurable, enumerable: false, get: routerGetter }, $route: { configurable, enumerable: false, get: routeGetter } }); } export function createSymbolProperty(symbol) { return { set(instance, value) { instance[symbol] = value; }, get(instance) { return symbol in instance ? instance[symbol] : void 0; } }; } export function createDependentProxy(obj, dep) { return new Proxy(obj, { get(target, prop, receiver) { dep.value; return Reflect.get(target, prop, receiver); } }); } export function isESModule(obj) { if (!obj || typeof obj !== "object") return false; const module = obj; return Boolean(module.__esModule) || module[Symbol.toStringTag] === "Module"; } export function resolveComponent(component) { if (!component) return null; if (isESModule(component)) { return component.default || component; } if (component && typeof component === "object" && !Array.isArray(component) && "default" in component && Object.keys(component).length === 1) { return component.default; } return component; }