101 lines
3.2 KiB
JavaScript
101 lines
3.2 KiB
JavaScript
import { Ot as nextTick, Qn as toRef, U as computed, Vn as onScopeDispose, Wn as reactive, Zt as resolveDynamicComponent } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
|
import { N as hasEvent, Q as IN_BROWSER, l as propsFactory, s as getCurrentInstance } from "./defineComponent-DB6xIcDy.js";
|
|
import { t as deepEqual } from "./deepEqual-DDqmGqyF.js";
|
|
//#region node_modules/vuetify/lib/composables/router.js
|
|
function useRoute() {
|
|
const vm = getCurrentInstance("useRoute");
|
|
return computed(() => vm?.proxy?.$route);
|
|
}
|
|
function useRouter() {
|
|
return getCurrentInstance("useRouter")?.proxy?.$router;
|
|
}
|
|
function useLink(props, attrs) {
|
|
const RouterLink = resolveDynamicComponent("RouterLink");
|
|
const isLink = toRef(() => !!(props.href || props.to));
|
|
const isClickable = computed(() => {
|
|
return isLink?.value || hasEvent(attrs, "click") || hasEvent(props, "click");
|
|
});
|
|
if (typeof RouterLink === "string" || !("useLink" in RouterLink)) {
|
|
const href = toRef(() => props.href);
|
|
return {
|
|
isLink,
|
|
isRouterLink: toRef(() => false),
|
|
isClickable,
|
|
href,
|
|
linkProps: reactive({ href }),
|
|
route: toRef(() => void 0),
|
|
navigate: toRef(() => void 0)
|
|
};
|
|
}
|
|
const routerLink = RouterLink.useLink({
|
|
to: toRef(() => props.to || ""),
|
|
replace: toRef(() => props.replace)
|
|
});
|
|
const link = computed(() => props.to ? routerLink : void 0);
|
|
const route = useRoute();
|
|
const isActive = computed(() => {
|
|
if (!link.value) return false;
|
|
if (!props.exact) return link.value.isActive?.value ?? false;
|
|
if (!route.value) return link.value.isExactActive?.value ?? false;
|
|
return link.value.isExactActive?.value && deepEqual(link.value.route.value.query, route.value.query);
|
|
});
|
|
const href = computed(() => props.to ? link.value?.route.value.href : props.href);
|
|
return {
|
|
isLink,
|
|
isRouterLink: toRef(() => !!props.to),
|
|
isClickable,
|
|
isActive,
|
|
route: toRef(() => link.value?.route.value),
|
|
navigate: toRef(() => link.value?.navigate),
|
|
href,
|
|
linkProps: reactive({
|
|
href,
|
|
"aria-current": toRef(() => isActive.value ? "page" : void 0),
|
|
"aria-disabled": toRef(() => props.disabled && isLink.value ? "true" : void 0),
|
|
tabindex: toRef(() => props.disabled && isLink.value ? "-1" : void 0)
|
|
})
|
|
};
|
|
}
|
|
var makeRouterProps = propsFactory({
|
|
href: String,
|
|
replace: Boolean,
|
|
to: [String, Object],
|
|
exact: Boolean
|
|
}, "router");
|
|
var inTransition = false;
|
|
function useBackButton(router, cb) {
|
|
let popped = false;
|
|
let removeBefore;
|
|
let removeAfter;
|
|
if (IN_BROWSER && router?.beforeEach) {
|
|
nextTick(() => {
|
|
window.addEventListener("popstate", onPopstate);
|
|
removeBefore = router.beforeEach(() => {
|
|
if (!inTransition) {
|
|
inTransition = true;
|
|
return new Promise((resolve) => {
|
|
setTimeout(() => resolve(popped ? cb() : void 0));
|
|
});
|
|
}
|
|
return popped ? cb() : void 0;
|
|
});
|
|
removeAfter = router?.afterEach(() => {
|
|
inTransition = false;
|
|
});
|
|
});
|
|
onScopeDispose(() => {
|
|
window.removeEventListener("popstate", onPopstate);
|
|
removeBefore?.();
|
|
removeAfter?.();
|
|
});
|
|
}
|
|
function onPopstate(e) {
|
|
if (e.state?.replaced) return;
|
|
popped = true;
|
|
setTimeout(() => popped = false);
|
|
}
|
|
}
|
|
//#endregion
|
|
export { useRouter as i, useBackButton as n, useLink as r, makeRouterProps as t };
|
|
|
|
//# sourceMappingURL=router-D_jP4Uwb.js.map
|