n8n-editor-ui
Version:
Workflow Editor UI for n8n
41 lines (40 loc) • 1.36 kB
JavaScript
import { C as computed, It as ref } from "./vue.runtime.esm-bundler-tP5dCd7J.js";
import { _t as useI18n } from "./_MapCache-ficiegRb.js";
import { gr as useCanvasStore, oa as useUIStore } from "./builder.store-sBTWwxRU.js";
import { Ro as VIEWS } from "./constants-BbpucWL4.js";
function useBeforeUnload({ route }) {
const uiStore = useUIStore();
const canvasStore = useCanvasStore();
const i18n = useI18n();
const unloadTimeout = ref(null);
const isDemoRoute = computed(() => route.name === VIEWS.DEMO);
const handlers = [];
function onBeforeUnload(e) {
if (isDemoRoute.value || window.preventNodeViewBeforeUnload) return;
handlers.forEach((handler) => handler());
if (uiStore.stateIsDirty) {
e.returnValue = true;
return true;
} else {
canvasStore.startLoading(i18n.baseText("nodeView.redirecting"));
return;
}
}
function addBeforeUnloadHandler(handler) {
handlers.push(handler);
}
function addBeforeUnloadEventBindings() {
window.addEventListener("beforeunload", onBeforeUnload);
}
function removeBeforeUnloadEventBindings() {
if (unloadTimeout.value) clearTimeout(unloadTimeout.value);
window.removeEventListener("beforeunload", onBeforeUnload);
}
return {
onBeforeUnload,
addBeforeUnloadEventBindings,
removeBeforeUnloadEventBindings,
addBeforeUnloadHandler
};
}
export { useBeforeUnload as t };