@virtualstate/navigation
Version:
Native JavaScript [navigation](https://developer.mozilla.org/en-US/docs/Web/API/Navigation_API) implementation
33 lines • 1.23 kB
JavaScript
import { getNavigation } from "../get-navigation.js";
import { createNavigationPromise } from "./create-promise.js";
import { isPromise, ok } from "../is.js";
export * from "./events.js";
export * from "./create-promise.js";
export function intercept(options, navigation = getNavigation()) {
return createNavigationPromise("navigate", navigation, options?.handler ? onNavigateWithHandler : onNavigateDirectIntercept);
function onNavigateDirectIntercept(event) {
event.intercept(options);
}
function onNavigateWithHandler(event) {
ok(options?.handler, "Expected options.handler");
const { handler, ...rest } = options;
return new Promise((resolve, reject) => {
event.intercept({
...rest,
async handler() {
try {
const result = handler();
if (isPromise(result)) {
await result;
}
resolve();
}
catch (error) {
reject(error);
}
}
});
});
}
}
//# sourceMappingURL=index.js.map