init commit
This commit is contained in:
75
remotion/node_modules/@remotion/studio/dist/helpers/use-keybinding.js
generated
vendored
Normal file
75
remotion/node_modules/@remotion/studio/dist/helpers/use-keybinding.js
generated
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.useKeybinding = exports.areKeyboardShortcutsDisabled = void 0;
|
||||
const react_1 = require("react");
|
||||
const keybindings_1 = require("../state/keybindings");
|
||||
const z_index_1 = require("../state/z-index");
|
||||
if (!process.env.KEYBOARD_SHORTCUTS_ENABLED) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.warn('Keyboard shortcuts disabled either due to: a) --disable-keyboard-shortcuts being passed b) Config.setKeyboardShortcutsEnabled(false) being set or c) a Remotion version mismatch.');
|
||||
}
|
||||
const areKeyboardShortcutsDisabled = () => {
|
||||
return !process.env.KEYBOARD_SHORTCUTS_ENABLED;
|
||||
};
|
||||
exports.areKeyboardShortcutsDisabled = areKeyboardShortcutsDisabled;
|
||||
const useKeybinding = () => {
|
||||
const [paneId] = (0, react_1.useState)(() => String(Math.random()));
|
||||
const context = (0, react_1.useContext)(keybindings_1.KeybindingContext);
|
||||
const { isHighestContext } = (0, z_index_1.useZIndex)();
|
||||
const registerKeybinding = (0, react_1.useCallback)((options) => {
|
||||
if (!process.env.KEYBOARD_SHORTCUTS_ENABLED) {
|
||||
return {
|
||||
unregister: () => undefined,
|
||||
};
|
||||
}
|
||||
if (!isHighestContext && !options.keepRegisteredWhenNotHighestContext) {
|
||||
return {
|
||||
unregister: () => undefined,
|
||||
};
|
||||
}
|
||||
const listener = (e) => {
|
||||
const commandKey = window.navigator.platform.startsWith('Mac')
|
||||
? e.metaKey
|
||||
: e.ctrlKey;
|
||||
// Apparently, e.key can be undefined in Edge:
|
||||
// https://github.com/remotion-dev/remotion/issues/5637
|
||||
if (!e.key) {
|
||||
return;
|
||||
}
|
||||
if (e.key.toLowerCase() === options.key.toLowerCase() &&
|
||||
options.commandCtrlKey === commandKey) {
|
||||
if (!options.triggerIfInputFieldFocused) {
|
||||
const { activeElement } = document;
|
||||
if (activeElement instanceof HTMLInputElement) {
|
||||
return;
|
||||
}
|
||||
if (activeElement instanceof HTMLTextAreaElement) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
options.callback(e);
|
||||
if (options.preventDefault) {
|
||||
e.preventDefault();
|
||||
}
|
||||
}
|
||||
};
|
||||
const toRegister = {
|
||||
registeredFromPane: paneId,
|
||||
event: options.event,
|
||||
key: options.key,
|
||||
callback: listener,
|
||||
id: String(Math.random()),
|
||||
};
|
||||
context.registerKeybinding(toRegister);
|
||||
return {
|
||||
unregister: () => context.unregisterKeybinding(toRegister),
|
||||
};
|
||||
}, [context, isHighestContext, paneId]);
|
||||
(0, react_1.useEffect)(() => {
|
||||
return () => {
|
||||
context.unregisterPane(paneId);
|
||||
};
|
||||
}, [context, paneId]);
|
||||
return (0, react_1.useMemo)(() => ({ registerKeybinding, isHighestContext }), [registerKeybinding, isHighestContext]);
|
||||
};
|
||||
exports.useKeybinding = useKeybinding;
|
||||
Reference in New Issue
Block a user