@nextcloud/vue
Version:
Nextcloud vue components
55 lines (54 loc) • 1.77 kB
JavaScript
;
var _a, _b, _c;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const core = require("@vueuse/core");
const disableKeyboardShortcuts = (_c = (_b = (_a = window.OCP) == null ? void 0 : _a.Accessibility) == null ? void 0 : _b.disableKeyboardShortcuts) == null ? void 0 : _c.call(_b);
const isMac = /mac|ipad|iphone|darwin/i.test(navigator.userAgent);
function shouldIgnoreEvent(event) {
var _a2;
if (event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement || event.target instanceof HTMLSelectElement || ((_a2 = event.target) == null ? void 0 : _a2.isContentEditable)) {
return true;
}
return document.getElementsByClassName("modal-mask").length !== 0;
}
const eventHandler = (callback, options) => (event) => {
const ctrlKeyPressed = isMac ? event.metaKey : event.ctrlKey;
if (ctrlKeyPressed !== Boolean(options.ctrl)) {
return;
} else if (!!options.alt !== event.altKey) {
return;
} else if (!!options.shift !== event.shiftKey) {
return;
} else if (shouldIgnoreEvent(event)) {
return;
}
if (options.prevent) {
event.preventDefault();
}
if (options.stop) {
event.stopPropagation();
}
callback(event);
};
function useHotKey(key, callback = () => {
}, options = {}) {
if (disableKeyboardShortcuts) {
return () => {
};
}
const stopKeyDown = core.onKeyStroke(key, eventHandler(callback, options), {
eventName: "keydown",
dedupe: true,
passive: !options.prevent
});
const stopKeyUp = options.push ? core.onKeyStroke(key, eventHandler(callback, options), {
eventName: "keyup",
passive: !options.prevent
}) : () => {
};
return () => {
stopKeyDown();
stopKeyUp();
};
}
exports.useHotKey = useHotKey;