just-hotkeys
Version:
A declarative keyboard shortcut manager for JavaScript and TypeScript - framework agnostic with React support
61 lines (60 loc) • 1.45 kB
JavaScript
import { useRef as d, useMemo as f, useEffect as l } from "react";
import { createShortcuts as S } from "./index.js";
function g(r, e) {
const u = d(null), a = f(
() => e,
[
e == null ? void 0 : e.target,
e == null ? void 0 : e.preventDefault,
e == null ? void 0 : e.stopPropagation,
e == null ? void 0 : e.enableInInputs
]
);
l(() => (u.current = S(r, a), () => {
var m;
(m = u.current) == null || m.destroy(), u.current = null;
}), [r, a]);
}
function I(r) {
const e = d(null), u = f(
() => r,
[
r == null ? void 0 : r.target,
r == null ? void 0 : r.preventDefault,
r == null ? void 0 : r.stopPropagation,
r == null ? void 0 : r.enableInInputs
]
);
return l(() => (e.current = S({}, u), () => {
var t;
(t = e.current) == null || t.destroy(), e.current = null;
}), [u]), {
addShortcuts: (t) => {
var c;
(c = e.current) == null || c.add(t);
},
removeShortcuts: (t) => {
var c;
(c = e.current) == null || c.remove(t);
},
getActiveShortcuts: () => {
var t;
return ((t = e.current) == null ? void 0 : t.getActiveShortcuts()) || [];
}
};
}
function A(r, e, u) {
g(e ? r : {}, u);
}
function R(r, e, u) {
g(r, {
...u,
target: e.current || void 0
});
}
export {
A as useConditionalShortcuts,
R as useScopedShortcuts,
I as useShortcutManager,
g as useShortcuts
};