@uxf/core 1.10.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +173 -18
  2. package/Validators/FormValidator.js +2 -1
  3. package/Validators/Validator.js +2 -1
  4. package/constants/classes.d.ts +14 -0
  5. package/constants/classes.js +18 -0
  6. package/cookie/index.js +6 -5
  7. package/hooks/_useSimulatedButton.d.ts +15 -0
  8. package/hooks/_useSimulatedButton.js +51 -0
  9. package/hooks/useAnchorProps.d.ts +8 -0
  10. package/hooks/useAnchorProps.js +79 -0
  11. package/hooks/useBodyScrollLock.d.ts +4 -1
  12. package/hooks/useBodyScrollLock.js +23 -31
  13. package/hooks/useButtonProps.d.ts +6 -0
  14. package/hooks/useButtonProps.js +91 -0
  15. package/hooks/useClickableProps.d.ts +8 -0
  16. package/hooks/useClickableProps.js +75 -0
  17. package/hooks/useFocusReturn.d.ts +1 -0
  18. package/hooks/useFocusReturn.js +38 -0
  19. package/hooks/useFocusTrap.d.ts +1 -0
  20. package/hooks/useFocusTrap.js +149 -0
  21. package/hooks/useInputFocus.d.ts +7 -0
  22. package/hooks/useInputFocus.js +44 -0
  23. package/hooks/useIsMounted.js +4 -5
  24. package/hooks/useIsomorphicLayoutEffect.js +2 -1
  25. package/hooks/useKey.d.ts +9 -2
  26. package/hooks/useKey.js +20 -20
  27. package/hooks/useMinWindowWidth.js +10 -10
  28. package/hooks/useMouseDragToScroll.d.ts +2 -0
  29. package/hooks/useMouseDragToScroll.js +67 -0
  30. package/hooks/usePagination.js +7 -3
  31. package/hooks/useRafState.d.ts +1 -1
  32. package/hooks/useRafState.js +6 -7
  33. package/hooks/useTabs.d.ts +15 -0
  34. package/hooks/useTabs.js +59 -0
  35. package/hooks/useUnmount.js +5 -4
  36. package/hooks/useUpdateEffect.d.ts +2 -1
  37. package/hooks/useUpdateEffect.js +11 -10
  38. package/hooks/useWindowScroll.js +18 -18
  39. package/hooks/useWindowSize.js +15 -15
  40. package/index.js +13 -6
  41. package/next/index.js +6 -3
  42. package/package.json +18 -18
  43. package/utils/camelCaseToDash.js +2 -1
  44. package/utils/composeRefs.d.ts +2 -1
  45. package/utils/composeRefs.js +10 -9
  46. package/utils/cx.d.ts +3 -0
  47. package/utils/cx.js +59 -0
  48. package/utils/isBrowser.js +3 -1
  49. package/utils/isServer.js +4 -2
  50. package/utils/pagination.js +15 -8
  51. package/utils/pagination.test.js +2 -2
  52. package/utils/slugify.js +2 -1
  53. package/utils/trimTrailingZeros.js +2 -1
  54. package/hooks/useKeydownToMouseClick.d.ts +0 -3
  55. package/hooks/useKeydownToMouseClick.js +0 -24
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ var __read = (this && this.__read) || function (o, n) {
25
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
26
+ if (!m) return o;
27
+ var i = m.call(o), r, ar = [], e;
28
+ try {
29
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
30
+ }
31
+ catch (error) { e = { error: error }; }
32
+ finally {
33
+ try {
34
+ if (r && !r.done && (m = i["return"])) m.call(i);
35
+ }
36
+ finally { if (e) throw e.error; }
37
+ }
38
+ return ar;
39
+ };
40
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
41
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
42
+ if (ar || !(i in from)) {
43
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
44
+ ar[i] = from[i];
45
+ }
46
+ }
47
+ return to.concat(ar || Array.prototype.slice.call(from));
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.useButtonProps = void 0;
51
+ var react_1 = require("react");
52
+ var classes_1 = require("../constants/classes");
53
+ var cx_1 = require("../utils/cx");
54
+ function useButtonProps(_a) {
55
+ var ariaBusy = _a["aria-busy"], ariaDisabled = _a["aria-disabled"], autoFocus = _a.autoFocus, analyticsCallback = _a.analyticsCallback, className = _a.className, disabled = _a.disabled, formAction = _a.formAction, formEncType = _a.formEncType, formMethod = _a.formMethod, formNoValidate = _a.formNoValidate, formTarget = _a.formTarget, loading = _a.loading, name = _a.name, onClick = _a.onClick, role = _a.role, tabIndex = _a.tabIndex, type = _a.type, value = _a.value, restProps = __rest(_a, ["aria-busy", "aria-disabled", "autoFocus", "analyticsCallback", "className", "disabled", "formAction", "formEncType", "formMethod", "formNoValidate", "formTarget", "loading", "name", "onClick", "role", "tabIndex", "type", "value"]);
56
+ var isBusy = loading ? loading : Boolean(ariaBusy);
57
+ var isDisabled = disabled ? disabled : Boolean(ariaDisabled);
58
+ var isBusyOrDisabled = isBusy || isDisabled;
59
+ var _className = [isBusy && classes_1.CLASSES.IS_BUSY, isDisabled && classes_1.CLASSES.IS_DISABLED, className];
60
+ var _onClick = (0, react_1.useCallback)(function (e) {
61
+ if (isBusyOrDisabled) {
62
+ e.preventDefault();
63
+ }
64
+ else {
65
+ if (analyticsCallback) {
66
+ analyticsCallback();
67
+ }
68
+ if (onClick) {
69
+ onClick(e);
70
+ }
71
+ }
72
+ }, [analyticsCallback, isBusyOrDisabled, onClick]);
73
+ if (onClick || type === "reset" || type === "submit") {
74
+ var submitProps = {};
75
+ if (type === "submit") {
76
+ submitProps = {
77
+ formAction: formAction,
78
+ formEncType: formEncType,
79
+ formMethod: formMethod,
80
+ formNoValidate: formNoValidate,
81
+ formTarget: formTarget,
82
+ name: name,
83
+ value: value,
84
+ };
85
+ }
86
+ return __assign(__assign({ "aria-busy": isBusy, "aria-disabled": ariaDisabled, autoFocus: autoFocus, className: cx_1.cx.apply(void 0, __spreadArray([classes_1.CLASSES.IS_HOVERABLE], __read(_className), false)), disabled: disabled, onClick: _onClick, role: role, tabIndex: isBusyOrDisabled ? -1 : tabIndex, type: type }, submitProps), restProps);
87
+ }
88
+ return __assign({ className: cx_1.cx.apply(void 0, __spreadArray([], __read(_className), false)), role: role, tabIndex: tabIndex !== null && tabIndex !== void 0 ? tabIndex : -1 }, restProps);
89
+ }
90
+ exports.useButtonProps = useButtonProps;
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlQnV0dG9uUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlQnV0dG9uUHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBNkU7QUFDN0UsZ0RBQStDO0FBQy9DLGtDQUFpQztBQU9qQyxTQUFnQixjQUFjLENBQW9ELEVBb0I3RDtJQW5CakIsSUFBZSxRQUFRLGtCQUFBLEVBQ0osWUFBWSxzQkFBQSxFQUMvQixTQUFTLGVBQUEsRUFDVCxpQkFBaUIsdUJBQUEsRUFDakIsU0FBUyxlQUFBLEVBQ1QsUUFBUSxjQUFBLEVBQ1IsVUFBVSxnQkFBQSxFQUNWLFdBQVcsaUJBQUEsRUFDWCxVQUFVLGdCQUFBLEVBQ1YsY0FBYyxvQkFBQSxFQUNkLFVBQVUsZ0JBQUEsRUFDVixPQUFPLGFBQUEsRUFDUCxJQUFJLFVBQUEsRUFDSixPQUFPLGFBQUEsRUFDUCxJQUFJLFVBQUEsRUFDSixRQUFRLGNBQUEsRUFDUixJQUFJLFVBQUEsRUFDSixLQUFLLFdBQUEsRUFDRixTQUFTLGNBbkJrRSx1T0FvQmpGLENBRGU7SUFFWixJQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELElBQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDL0QsSUFBTSxnQkFBZ0IsR0FBRyxNQUFNLElBQUksVUFBVSxDQUFDO0lBQzlDLElBQU0sVUFBVSxHQUFHLENBQUMsTUFBTSxJQUFJLGlCQUFPLENBQUMsT0FBTyxFQUFFLFVBQVUsSUFBSSxpQkFBTyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUU3RixJQUFNLFFBQVEsR0FBRyxJQUFBLG1CQUFXLEVBQ3hCLFVBQUEsQ0FBQztRQUNHLElBQUksZ0JBQWdCLEVBQUU7WUFDbEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3RCO2FBQU07WUFDSCxJQUFJLGlCQUFpQixFQUFFO2dCQUNuQixpQkFBaUIsRUFBRSxDQUFDO2FBQ3ZCO1lBQ0QsSUFBSSxPQUFPLEVBQUU7Z0JBQ1QsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2Q7U0FDSjtJQUNMLENBQUMsRUFDRCxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUNqRCxDQUFDO0lBRUYsSUFBSSxPQUFPLElBQUksSUFBSSxLQUFLLE9BQU8sSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFO1FBQ2xELElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDbkIsV0FBVyxHQUFHO2dCQUNWLFVBQVUsWUFBQTtnQkFDVixXQUFXLGFBQUE7Z0JBQ1gsVUFBVSxZQUFBO2dCQUNWLGNBQWMsZ0JBQUE7Z0JBQ2QsVUFBVSxZQUFBO2dCQUNWLElBQUksTUFBQTtnQkFDSixLQUFLLE9BQUE7YUFDUixDQUFDO1NBQ0w7UUFFRCxPQUFPLG9CQUNILFdBQVcsRUFBRSxNQUFNLEVBQ25CLGVBQWUsRUFBRSxZQUFZLEVBQzdCLFNBQVMsV0FBQSxFQUNULFNBQVMsRUFBRSxPQUFFLDhCQUFDLGlCQUFPLENBQUMsWUFBWSxVQUFLLFVBQVUsWUFDakQsUUFBUSxVQUFBLEVBQ1IsT0FBTyxFQUFFLFFBQVEsRUFDakIsSUFBSSxNQUFBLEVBQ0osUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUMxQyxJQUFJLE1BQUEsSUFDRCxXQUFXLEdBQ1gsU0FBUyxDQUNWLENBQUM7S0FDVjtJQUVELE9BQU8sV0FDSCxTQUFTLEVBQUUsT0FBRSx3Q0FBSSxVQUFVLFlBQzNCLElBQUksTUFBQSxFQUNKLFFBQVEsRUFBRSxRQUFRLGFBQVIsUUFBUSxjQUFSLFFBQVEsR0FBSSxDQUFDLENBQUMsSUFDckIsU0FBUyxDQUNWLENBQUM7QUFDWCxDQUFDO0FBN0VELHdDQTZFQyJ9
@@ -0,0 +1,8 @@
1
+ import { HTMLAttributes } from "react";
2
+ export interface UseClickableProps {
3
+ analyticsCallback?: () => void;
4
+ disabled?: boolean;
5
+ loading?: boolean;
6
+ submit?: boolean;
7
+ }
8
+ export declare function useClickableProps<T extends HTMLAttributes<HTMLElement>>({ ["aria-busy"]: ariaBusy, ["aria-disabled"]: ariaDisabled, analyticsCallback, className, disabled, loading, onClick, onKeyDown, onKeyUp, role, submit, tabIndex, ...restProps }: UseClickableProps & T): T;
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ var __read = (this && this.__read) || function (o, n) {
25
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
26
+ if (!m) return o;
27
+ var i = m.call(o), r, ar = [], e;
28
+ try {
29
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
30
+ }
31
+ catch (error) { e = { error: error }; }
32
+ finally {
33
+ try {
34
+ if (r && !r.done && (m = i["return"])) m.call(i);
35
+ }
36
+ finally { if (e) throw e.error; }
37
+ }
38
+ return ar;
39
+ };
40
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
41
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
42
+ if (ar || !(i in from)) {
43
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
44
+ ar[i] = from[i];
45
+ }
46
+ }
47
+ return to.concat(ar || Array.prototype.slice.call(from));
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.useClickableProps = void 0;
51
+ var classes_1 = require("../constants/classes");
52
+ var cx_1 = require("../utils/cx");
53
+ var _useSimulatedButton_1 = require("./_useSimulatedButton");
54
+ function useClickableProps(_a) {
55
+ var ariaBusy = _a["aria-busy"], ariaDisabled = _a["aria-disabled"], analyticsCallback = _a.analyticsCallback, className = _a.className, disabled = _a.disabled, loading = _a.loading, onClick = _a.onClick, onKeyDown = _a.onKeyDown, onKeyUp = _a.onKeyUp, role = _a.role, submit = _a.submit, tabIndex = _a.tabIndex, restProps = __rest(_a, ["aria-busy", "aria-disabled", "analyticsCallback", "className", "disabled", "loading", "onClick", "onKeyDown", "onKeyUp", "role", "submit", "tabIndex"]);
56
+ var isBusy = loading ? loading : Boolean(ariaBusy);
57
+ var isDisabled = disabled ? disabled : Boolean(ariaDisabled);
58
+ var isBusyOrDisabled = isBusy || isDisabled;
59
+ var isButton = submit || !!onClick;
60
+ var _className = [isBusy && classes_1.CLASSES.IS_BUSY, isDisabled && classes_1.CLASSES.IS_DISABLED, className];
61
+ var simulatedButton = (0, _useSimulatedButton_1._useSimulatedButton)({
62
+ analyticsCallback: analyticsCallback,
63
+ isClickable: !isBusyOrDisabled || isButton,
64
+ onClick: onClick,
65
+ onKeyDown: onKeyDown,
66
+ onKeyUp: onKeyUp,
67
+ submit: submit,
68
+ });
69
+ if (isButton) {
70
+ return __assign({ "aria-busy": isBusy, "aria-disabled": isDisabled, className: cx_1.cx.apply(void 0, __spreadArray([classes_1.CLASSES.IS_HOVERABLE], __read(_className), false)), onClick: simulatedButton.onClick, onKeyDown: simulatedButton.onKeyDown, onKeyUp: simulatedButton.onKeyUp, role: role || "button", tabIndex: isBusyOrDisabled ? -1 : tabIndex !== null && tabIndex !== void 0 ? tabIndex : 0 }, restProps);
71
+ }
72
+ return __assign({ className: cx_1.cx.apply(void 0, __spreadArray([], __read(_className), false)), role: role, tabIndex: tabIndex }, restProps);
73
+ }
74
+ exports.useClickableProps = useClickableProps;
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlQ2xpY2thYmxlUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlQ2xpY2thYmxlUHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxnREFBK0M7QUFDL0Msa0NBQWlDO0FBQ2pDLDZEQUE0RDtBQVM1RCxTQUFnQixpQkFBaUIsQ0FBd0MsRUFjakQ7SUFicEIsSUFBZSxRQUFRLGtCQUFBLEVBQ0osWUFBWSxzQkFBQSxFQUMvQixpQkFBaUIsdUJBQUEsRUFDakIsU0FBUyxlQUFBLEVBQ1QsUUFBUSxjQUFBLEVBQ1IsT0FBTyxhQUFBLEVBQ1AsT0FBTyxhQUFBLEVBQ1AsU0FBUyxlQUFBLEVBQ1QsT0FBTyxhQUFBLEVBQ1AsSUFBSSxVQUFBLEVBQ0osTUFBTSxZQUFBLEVBQ04sUUFBUSxjQUFBLEVBQ0wsU0FBUyxjQWJ5RCx3SkFjeEUsQ0FEZTtJQUVaLElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckQsSUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMvRCxJQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxVQUFVLENBQUM7SUFDOUMsSUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDckMsSUFBTSxVQUFVLEdBQUcsQ0FBQyxNQUFNLElBQUksaUJBQU8sQ0FBQyxPQUFPLEVBQUUsVUFBVSxJQUFJLGlCQUFPLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRTdGLElBQU0sZUFBZSxHQUFHLElBQUEseUNBQW1CLEVBQUM7UUFDeEMsaUJBQWlCLG1CQUFBO1FBQ2pCLFdBQVcsRUFBRSxDQUFDLGdCQUFnQixJQUFJLFFBQVE7UUFDMUMsT0FBTyxTQUFBO1FBQ1AsU0FBUyxXQUFBO1FBQ1QsT0FBTyxTQUFBO1FBQ1AsTUFBTSxRQUFBO0tBQ1QsQ0FBQyxDQUFDO0lBRUgsSUFBSSxRQUFRLEVBQUU7UUFDVixPQUFPLFdBQ0gsV0FBVyxFQUFFLE1BQU0sRUFDbkIsZUFBZSxFQUFFLFVBQVUsRUFDM0IsU0FBUyxFQUFFLE9BQUUsOEJBQUMsaUJBQU8sQ0FBQyxZQUFZLFVBQUssVUFBVSxZQUNqRCxPQUFPLEVBQUUsZUFBZSxDQUFDLE9BQU8sRUFDaEMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxTQUFTLEVBQ3BDLE9BQU8sRUFBRSxlQUFlLENBQUMsT0FBTyxFQUNoQyxJQUFJLEVBQUUsSUFBSSxJQUFJLFFBQVEsRUFDdEIsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxhQUFSLFFBQVEsY0FBUixRQUFRLEdBQUksQ0FBQyxJQUM1QyxTQUFTLENBQ1YsQ0FBQztLQUNWO0lBRUQsT0FBTyxXQUNILFNBQVMsRUFBRSxPQUFFLHdDQUFJLFVBQVUsWUFDM0IsSUFBSSxNQUFBLEVBQ0osUUFBUSxVQUFBLElBQ0wsU0FBUyxDQUNWLENBQUM7QUFDWCxDQUFDO0FBbERELDhDQWtEQyJ9
@@ -0,0 +1 @@
1
+ export declare function useFocusReturn(opened: boolean, transitionDuration?: number, shouldReturnFocus?: boolean): () => void;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useFocusReturn = void 0;
4
+ var react_1 = require("react");
5
+ var useUpdateEffect_1 = require("./useUpdateEffect");
6
+ function useFocusReturn(opened, transitionDuration, shouldReturnFocus) {
7
+ if (transitionDuration === void 0) { transitionDuration = 0; }
8
+ if (shouldReturnFocus === void 0) { shouldReturnFocus = true; }
9
+ var lastActiveElement = (0, react_1.useRef)();
10
+ var returnFocus = function () {
11
+ var node = lastActiveElement.current;
12
+ if (node && "focus" in node && typeof node.focus === "function") {
13
+ node.focus();
14
+ }
15
+ };
16
+ (0, useUpdateEffect_1.useUpdateEffect)(function () {
17
+ var timeout = -1;
18
+ var clearFocusTimeout = function (e) {
19
+ if (e.key === "Tab") {
20
+ clearTimeout(timeout);
21
+ }
22
+ };
23
+ document.addEventListener("keydown", clearFocusTimeout);
24
+ if (opened) {
25
+ lastActiveElement.current = document.activeElement;
26
+ }
27
+ else if (shouldReturnFocus) {
28
+ timeout = window.setTimeout(returnFocus, transitionDuration + 10);
29
+ }
30
+ return function () {
31
+ clearTimeout(timeout);
32
+ document.removeEventListener("keydown", clearFocusTimeout);
33
+ };
34
+ }, [opened]);
35
+ return returnFocus;
36
+ }
37
+ exports.useFocusReturn = useFocusReturn;
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlRm9jdXNSZXR1cm4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlRm9jdXNSZXR1cm4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLHFEQUFvRDtBQUVwRCxTQUFnQixjQUFjLENBQUMsTUFBZSxFQUFFLGtCQUFzQixFQUFFLGlCQUF3QjtJQUFoRCxtQ0FBQSxFQUFBLHNCQUFzQjtJQUFFLGtDQUFBLEVBQUEsd0JBQXdCO0lBQzVGLElBQU0saUJBQWlCLEdBQUcsSUFBQSxjQUFNLEdBQWUsQ0FBQztJQUNoRCxJQUFNLFdBQVcsR0FBRztRQUNoQixJQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUM7UUFDdkMsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssVUFBVSxFQUFFO1lBQzdELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNoQjtJQUNMLENBQUMsQ0FBQztJQUVGLElBQUEsaUNBQWUsRUFBQztRQUNaLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWpCLElBQU0saUJBQWlCLEdBQUcsVUFBQyxDQUFnQjtZQUN2QyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssS0FBSyxFQUFFO2dCQUNqQixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDekI7UUFDTCxDQUFDLENBQUM7UUFFRixRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFFeEQsSUFBSSxNQUFNLEVBQUU7WUFDUixpQkFBaUIsQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQTRCLENBQUM7U0FDckU7YUFBTSxJQUFJLGlCQUFpQixFQUFFO1lBQzFCLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxrQkFBa0IsR0FBRyxFQUFFLENBQUMsQ0FBQztTQUNyRTtRQUVELE9BQU87WUFDSCxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQztJQUNOLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFFYixPQUFPLFdBQVcsQ0FBQztBQUN2QixDQUFDO0FBakNELHdDQWlDQyJ9
@@ -0,0 +1 @@
1
+ export declare function useFocusTrap<T extends HTMLElement>(active?: boolean): (instance: T | null) => void;
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useFocusTrap = void 0;
4
+ var react_1 = require("react");
5
+ var useUnmount_1 = require("./useUnmount");
6
+ var TABBABLE_NODES = /input|select|textarea|button|object/;
7
+ var FOCUS_SELECTOR = "a, input, select, textarea, button, object, [tabindex]";
8
+ function hidden(element) {
9
+ return element.style.display === "none";
10
+ }
11
+ function visible(element) {
12
+ var parentElement = element;
13
+ while (parentElement) {
14
+ if (parentElement === document.body) {
15
+ break;
16
+ }
17
+ if (hidden(parentElement)) {
18
+ return false;
19
+ }
20
+ parentElement = parentElement.parentElement;
21
+ }
22
+ return true;
23
+ }
24
+ function getElementTabIndex(element) {
25
+ var tabIndex = element.getAttribute("tabindex");
26
+ if (tabIndex === null) {
27
+ return NaN;
28
+ }
29
+ return parseInt(tabIndex, 10);
30
+ }
31
+ function focusable(element) {
32
+ var nodeName = element.nodeName.toLowerCase();
33
+ var isTabIndexNotNaN = !Number.isNaN(getElementTabIndex(element));
34
+ var res = (TABBABLE_NODES.test(nodeName) && !element.disabled) ||
35
+ (element instanceof HTMLAnchorElement ? Boolean(element.href) || isTabIndexNotNaN : isTabIndexNotNaN);
36
+ return res && visible(element);
37
+ }
38
+ function tabbable(element) {
39
+ var tabIndex = getElementTabIndex(element);
40
+ var isTabIndexNaN = Number.isNaN(tabIndex);
41
+ return (isTabIndexNaN || tabIndex >= 0) && focusable(element);
42
+ }
43
+ function findTabbableDescendants(element) {
44
+ return Array.from(element.querySelectorAll(FOCUS_SELECTOR)).filter(tabbable);
45
+ }
46
+ function scopeTab(node, event) {
47
+ var _tabbable = findTabbableDescendants(node);
48
+ if (!_tabbable.length) {
49
+ event.preventDefault();
50
+ return;
51
+ }
52
+ var finalTabbable = _tabbable[event.shiftKey ? 0 : _tabbable.length - 1];
53
+ var leavingFinalTabbable = finalTabbable === document.activeElement || node === document.activeElement;
54
+ if (!leavingFinalTabbable) {
55
+ return;
56
+ }
57
+ event.preventDefault();
58
+ var target = _tabbable[event.shiftKey ? _tabbable.length - 1 : 0];
59
+ if (target) {
60
+ target.focus();
61
+ }
62
+ }
63
+ function createAriaHider(containerNode, selector) {
64
+ if (selector === void 0) { selector = "body > :not(script)"; }
65
+ var rootNodes = Array.from(document.querySelectorAll(selector)).map(function (node) {
66
+ if (node.contains(containerNode)) {
67
+ return;
68
+ }
69
+ var ariaHidden = node.getAttribute("aria-hidden");
70
+ if (ariaHidden === null || ariaHidden === "false") {
71
+ node.setAttribute("aria-hidden", "true");
72
+ }
73
+ return { node: node, ariaHidden: ariaHidden };
74
+ });
75
+ return function () {
76
+ rootNodes.forEach(function (item) {
77
+ if (!item) {
78
+ return;
79
+ }
80
+ if (item.ariaHidden === null) {
81
+ item.node.removeAttribute("aria-hidden");
82
+ }
83
+ else {
84
+ item.node.setAttribute("aria-hidden", item.ariaHidden);
85
+ }
86
+ });
87
+ };
88
+ }
89
+ function useFocusTrap(active) {
90
+ if (active === void 0) { active = true; }
91
+ var ref = (0, react_1.useRef)();
92
+ var restoreAria = (0, react_1.useRef)();
93
+ var timer = (0, react_1.useRef)();
94
+ var setRef = (0, react_1.useCallback)(function (node) {
95
+ if (!active) {
96
+ ref.current = null;
97
+ return;
98
+ }
99
+ if (restoreAria.current) {
100
+ restoreAria.current();
101
+ }
102
+ if (node) {
103
+ var processNode_1 = function (_node) {
104
+ restoreAria.current = createAriaHider(_node);
105
+ var focusElement = node.querySelector("[data-autofocus]");
106
+ if (!focusElement) {
107
+ var children = Array.from(node.querySelectorAll(FOCUS_SELECTOR));
108
+ focusElement = children.find(tabbable) || children.find(focusable) || null;
109
+ if (!focusElement && focusable(node)) {
110
+ focusElement = node;
111
+ }
112
+ }
113
+ if (focusElement) {
114
+ focusElement.focus();
115
+ }
116
+ };
117
+ // Delay processing the HTML node by a frame. This ensures focus is assigned correctly.
118
+ timer.current = window.setTimeout(function () {
119
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
120
+ if (node.ownerDocument) {
121
+ processNode_1(node);
122
+ }
123
+ });
124
+ ref.current = node;
125
+ }
126
+ else {
127
+ ref.current = null;
128
+ }
129
+ }, [active]);
130
+ (0, react_1.useEffect)(function () {
131
+ if (!active) {
132
+ return;
133
+ }
134
+ var handler = function (e) {
135
+ var node = ref.current;
136
+ if (e.key === "Tab" && node) {
137
+ scopeTab(node, e);
138
+ }
139
+ };
140
+ document.addEventListener("keydown", handler);
141
+ return function () {
142
+ document.removeEventListener("keydown", handler);
143
+ };
144
+ }, [active]);
145
+ (0, useUnmount_1.useUnmount)(function () { return clearTimeout(timer.current); });
146
+ return setRef;
147
+ }
148
+ exports.useFocusTrap = useFocusTrap;
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlRm9jdXNUcmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZUZvY3VzVHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBb0U7QUFDcEUsMkNBQTBDO0FBRTFDLElBQU0sY0FBYyxHQUFHLHFDQUFxQyxDQUFDO0FBQzdELElBQU0sY0FBYyxHQUFHLHdEQUF3RCxDQUFDO0FBRWhGLFNBQVMsTUFBTSxDQUFDLE9BQW9CO0lBQ2hDLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssTUFBTSxDQUFDO0FBQzVDLENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBQyxPQUFvQjtJQUNqQyxJQUFJLGFBQWEsR0FBdUIsT0FBTyxDQUFDO0lBQ2hELE9BQU8sYUFBYSxFQUFFO1FBQ2xCLElBQUksYUFBYSxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDakMsTUFBTTtTQUNUO1FBRUQsSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDdkIsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxhQUFhLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQztLQUMvQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLE9BQW9CO0lBQzVDLElBQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEQsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO1FBQ25CLE9BQU8sR0FBRyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLE9BQW9CO0lBQ25DLElBQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEQsSUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENB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
@@ -0,0 +1,7 @@
1
+ import { FocusEventHandler, MouseEventHandler, RefObject } from "react";
2
+ export declare function useInputFocus<T extends HTMLInputElement | HTMLTextAreaElement | HTMLElement>(focusRef: RefObject<T>, onBlur?: FocusEventHandler<T>, onFocus?: FocusEventHandler<T>): {
3
+ focused: boolean;
4
+ focus: MouseEventHandler<HTMLElement>;
5
+ onBlur: FocusEventHandler<T>;
6
+ onFocus: FocusEventHandler<T>;
7
+ };
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.useInputFocus = void 0;
20
+ var react_1 = require("react");
21
+ function useInputFocus(focusRef, onBlur, onFocus) {
22
+ var _a = __read((0, react_1.useState)(false), 2), focused = _a[0], setFocused = _a[1];
23
+ var focus = (0, react_1.useCallback)(function () {
24
+ var node = focusRef.current;
25
+ if (node) {
26
+ node.focus();
27
+ }
28
+ }, [focusRef]);
29
+ var _onFocus = (0, react_1.useCallback)(function (e) {
30
+ setFocused(true);
31
+ if (onFocus) {
32
+ onFocus(e);
33
+ }
34
+ }, [onFocus]);
35
+ var _onBlur = (0, react_1.useCallback)(function (e) {
36
+ setFocused(false);
37
+ if (onBlur) {
38
+ onBlur(e);
39
+ }
40
+ }, [onBlur]);
41
+ return { focused: focused, focus: focus, onBlur: _onBlur, onFocus: _onFocus };
42
+ }
43
+ exports.useInputFocus = useInputFocus;
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlSW5wdXRGb2N1cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VJbnB1dEZvY3VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0Y7QUFFL0YsU0FBZ0IsYUFBYSxDQUN6QixRQUFzQixFQUN0QixNQUE2QixFQUM3QixPQUE4QjtJQUV4QixJQUFBLEtBQUEsT0FBd0IsSUFBQSxnQkFBUSxFQUFVLEtBQUssQ0FBQyxJQUFBLEVBQS9DLE9BQU8sUUFBQSxFQUFFLFVBQVUsUUFBNEIsQ0FBQztJQUV2RCxJQUFNLEtBQUssR0FBRyxJQUFBLG1CQUFXLEVBQWlDO1FBQ3RELElBQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFDOUIsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDaEI7SUFDTCxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRWYsSUFBTSxRQUFRLEdBQUcsSUFBQSxtQkFBVyxFQUN4QixVQUFBLENBQUM7UUFDRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakIsSUFBSSxPQUFPLEVBQUU7WUFDVCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDZDtJQUNMLENBQUMsRUFDRCxDQUFDLE9BQU8sQ0FBQyxDQUNaLENBQUM7SUFFRixJQUFNLE9BQU8sR0FBRyxJQUFBLG1CQUFXLEVBQ3ZCLFVBQUEsQ0FBQztRQUNHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQixJQUFJLE1BQU0sRUFBRTtZQUNSLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNiO0lBQ0wsQ0FBQyxFQUNELENBQUMsTUFBTSxDQUFDLENBQ1gsQ0FBQztJQUVGLE9BQU8sRUFBRSxPQUFPLFNBQUEsRUFBRSxLQUFLLE9BQUEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQztBQUNsRSxDQUFDO0FBbkNELHNDQW1DQyJ9
@@ -16,13 +16,12 @@ var __read = (this && this.__read) || function (o, n) {
16
16
  return ar;
17
17
  };
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.useIsMounted = void 0;
19
20
  var react_1 = require("react");
20
21
  function useIsMounted() {
21
- var _a = __read(react_1.useState(false), 2), isMounted = _a[0], setIsMounted = _a[1];
22
- react_1.useEffect(function () {
23
- setIsMounted(true);
24
- }, []);
22
+ var _a = __read((0, react_1.useState)(false), 2), isMounted = _a[0], setIsMounted = _a[1];
23
+ (0, react_1.useEffect)(function () { return setIsMounted(true); }, []);
25
24
  return isMounted;
26
25
  }
27
26
  exports.useIsMounted = useIsMounted;
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlSXNNb3VudGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZUlzTW91bnRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBNEM7QUFFNUMsU0FBZ0IsWUFBWTtJQUNsQixJQUFBLHVDQUEyQyxFQUExQyxpQkFBUyxFQUFFLG9CQUErQixDQUFDO0lBRWxELGlCQUFTLENBQUM7UUFDTixZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRVAsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQztBQVJELG9DQVFDIn0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlSXNNb3VudGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZUlzTW91bnRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQTRDO0FBRTVDLFNBQWdCLFlBQVk7SUFDbEIsSUFBQSxLQUFBLE9BQTRCLElBQUEsZ0JBQVEsRUFBQyxLQUFLLENBQUMsSUFBQSxFQUExQyxTQUFTLFFBQUEsRUFBRSxZQUFZLFFBQW1CLENBQUM7SUFFbEQsSUFBQSxpQkFBUyxFQUFDLGNBQU0sT0FBQSxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQWxCLENBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFeEMsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQztBQU5ELG9DQU1DIn0=
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useIsomorphicLayoutEffect = void 0;
3
4
  var react_1 = require("react");
4
5
  var isBrowser_1 = require("../utils/isBrowser");
5
6
  exports.useIsomorphicLayoutEffect = isBrowser_1.isBrowser ? react_1.useLayoutEffect : react_1.useEffect;
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBQW1EO0FBQ25ELGdEQUErQztBQUVsQyxRQUFBLHlCQUF5QixHQUFHLHFCQUFTLENBQUMsQ0FBQyxDQUFDLHVCQUFlLENBQUMsQ0FBQyxDQUFDLGlCQUFTLENBQUMifQ==
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUFtRDtBQUNuRCxnREFBK0M7QUFFbEMsUUFBQSx5QkFBeUIsR0FBRyxxQkFBUyxDQUFDLENBQUMsQ0FBQyx1QkFBZSxDQUFDLENBQUMsQ0FBQyxpQkFBUyxDQUFDIn0=
package/hooks/useKey.d.ts CHANGED
@@ -1,3 +1,10 @@
1
1
  import { RefObject } from "react";
2
- export declare type KeyFilter = null | undefined | string | ((e: KeyboardEvent) => boolean);
3
- export declare function useKey<T extends HTMLElement>(ref: RefObject<T>, keyFilter: KeyFilter, callback: (e: KeyboardEvent) => void, type: "keydown" | "keyup" | "keypress", disabled?: boolean): void;
2
+ declare type KeyPredicate = (e: KeyboardEvent) => boolean;
3
+ export declare type KeyFilter = null | undefined | string | KeyPredicate;
4
+ export interface UseKeyOptions<T extends HTMLElement> {
5
+ disabled?: boolean;
6
+ targetRef?: RefObject<T>;
7
+ type: "keydown" | "keyup" | "keypress";
8
+ }
9
+ export declare function useKey<T extends HTMLElement>(keyFilter: KeyFilter, callback: (e: KeyboardEvent) => void, { disabled, targetRef, type }?: Partial<UseKeyOptions<T>>): void;
10
+ export {};
package/hooks/useKey.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useKey = void 0;
3
4
  var react_1 = require("react");
4
5
  var isBrowser_1 = require("../utils/isBrowser");
5
6
  var createKeyPredicate = function (keyFilter) {
@@ -7,27 +8,26 @@ var createKeyPredicate = function (keyFilter) {
7
8
  ? keyFilter
8
9
  : typeof keyFilter === "string"
9
10
  ? function (e) { return e.key === keyFilter; }
10
- : keyFilter
11
- ? function () { return true; }
12
- : function () { return false; };
11
+ : function () { return false; };
13
12
  };
14
- function useKey(ref, keyFilter, callback, type, disabled) {
15
- if (disabled === void 0) { disabled = false; }
16
- react_1.useEffect(function () {
17
- var thisNode = ref.current;
18
- if (isBrowser_1.isBrowser && thisNode && !disabled) {
19
- var predicate_1 = createKeyPredicate(keyFilter);
20
- var handler_1 = function (e) {
21
- if (predicate_1(e)) {
22
- callback(e);
23
- }
24
- };
25
- thisNode.addEventListener(type, handler_1);
26
- return function () {
27
- thisNode.removeEventListener(type, handler_1);
28
- };
13
+ function useKey(keyFilter, callback, _a) {
14
+ var _b = _a === void 0 ? {} : _a, disabled = _b.disabled, targetRef = _b.targetRef, _c = _b.type, type = _c === void 0 ? "keydown" : _c;
15
+ (0, react_1.useEffect)(function () {
16
+ if (disabled || !isBrowser_1.isBrowser) {
17
+ return;
29
18
  }
30
- }, [callback, disabled, keyFilter, ref, type]);
19
+ var thisNode = (targetRef ? targetRef.current : document);
20
+ var predicate = createKeyPredicate(keyFilter);
21
+ var handler = function (e) {
22
+ if (predicate(e)) {
23
+ callback(e);
24
+ }
25
+ };
26
+ thisNode === null || thisNode === void 0 ? void 0 : thisNode.addEventListener(type, handler);
27
+ return function () {
28
+ thisNode === null || thisNode === void 0 ? void 0 : thisNode.removeEventListener(type, handler);
29
+ };
30
+ }, [callback, disabled, keyFilter, targetRef, type]);
31
31
  }
32
32
  exports.useKey = useKey;
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlS2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZUtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtCQUE2QztBQUM3QyxnREFBK0M7QUFLL0MsSUFBTSxrQkFBa0IsR0FBRyxVQUFDLFNBQW9CO0lBQzVDLE9BQUEsT0FBTyxTQUFTLEtBQUssVUFBVTtRQUMzQixDQUFDLENBQUMsU0FBUztRQUNYLENBQUMsQ0FBQyxPQUFPLFNBQVMsS0FBSyxRQUFRO1lBQy9CLENBQUMsQ0FBQyxVQUFDLENBQWdCLElBQUssT0FBQSxDQUFDLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBbkIsQ0FBbUI7WUFDM0MsQ0FBQyxDQUFDLFNBQVM7Z0JBQ1gsQ0FBQyxDQUFDLGNBQU0sT0FBQSxJQUFJLEVBQUosQ0FBSTtnQkFDWixDQUFDLENBQUMsY0FBTSxPQUFBLEtBQUssRUFBTCxDQUFLO0FBTmpCLENBTWlCLENBQUM7QUFFdEIsU0FBZ0IsTUFBTSxDQUNsQixHQUFpQixFQUNqQixTQUFvQixFQUNwQixRQUFvQyxFQUNwQyxJQUFzQyxFQUN0QyxRQUFnQjtJQUFoQix5QkFBQSxFQUFBLGdCQUFnQjtJQUVoQixpQkFBUyxDQUFDO1FBQ04sSUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUM3QixJQUFJLHFCQUFTLElBQUksUUFBUSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3BDLElBQU0sV0FBUyxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRWhELElBQU0sU0FBTyxHQUFHLFVBQUMsQ0FBZ0I7Z0JBQzdCLElBQUksV0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNkLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDZjtZQUNMLENBQUMsQ0FBQztZQUVGLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsU0FBTyxDQUFDLENBQUM7WUFDekMsT0FBTztnQkFDSCxRQUFRLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLFNBQU8sQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQztTQUNMO0lBQ0wsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQXhCRCx3QkF3QkMifQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlS2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZUtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBNkM7QUFDN0MsZ0RBQStDO0FBSy9DLElBQU0sa0JBQWtCLEdBQUcsVUFBQyxTQUFvQjtJQUM1QyxPQUFBLE9BQU8sU0FBUyxLQUFLLFVBQVU7UUFDM0IsQ0FBQyxDQUFDLFNBQVM7UUFDWCxDQUFDLENBQUMsT0FBTyxTQUFTLEtBQUssUUFBUTtZQUMvQixDQUFDLENBQUMsVUFBQyxDQUFnQixJQUFLLE9BQUEsQ0FBQyxDQUFDLEdBQUcsS0FBSyxTQUFTLEVBQW5CLENBQW1CO1lBQzNDLENBQUMsQ0FBQyxjQUFNLE9BQUEsS0FBSyxFQUFMLENBQUs7QUFKakIsQ0FJaUIsQ0FBQztBQVF0QixTQUFnQixNQUFNLENBQ2xCLFNBQW9CLEVBQ3BCLFFBQW9DLEVBQ3BDLEVBQXlFO1FBQXpFLHFCQUF1RSxFQUFFLEtBQUEsRUFBdkUsUUFBUSxjQUFBLEVBQUUsU0FBUyxlQUFBLEVBQUUsWUFBZ0IsRUFBaEIsSUFBSSxtQkFBRyxTQUFTLEtBQUE7SUFFdkMsSUFBQSxpQkFBUyxFQUFDO1FBQ04sSUFBSSxRQUFRLElBQUksQ0FBQyxxQkFBUyxFQUFFO1lBQ3hCLE9BQU87U0FDVjtRQUNELElBQU0sUUFBUSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQXVCLENBQUM7UUFDbEYsSUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEQsSUFBTSxPQUFPLEdBQUcsVUFBQyxDQUFnQjtZQUM3QixJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDZCxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDZjtRQUNMLENBQUMsQ0FBQztRQUNGLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUMsT0FBTztZQUNILFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDekQsQ0FBQztBQXJCRCx3QkFxQkMifQ==
@@ -16,22 +16,22 @@ var __read = (this && this.__read) || function (o, n) {
16
16
  return ar;
17
17
  };
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.useMinWindowWidth = void 0;
19
20
  var react_1 = require("react");
20
21
  var isBrowser_1 = require("../utils/isBrowser");
21
22
  var useRafState_1 = require("./useRafState");
22
23
  function useMinWindowWidth(minWidth) {
23
- var _a = __read(useRafState_1.useRafState(undefined), 2), state = _a[0], setState = _a[1];
24
- react_1.useEffect(function () {
25
- if (isBrowser_1.isBrowser) {
26
- var handler_1 = function () { return setState(window.innerWidth >= minWidth); };
27
- handler_1();
28
- window.addEventListener("resize", handler_1);
29
- return function () {
30
- window.removeEventListener("resize", handler_1);
31
- };
24
+ var _a = __read((0, useRafState_1.useRafState)(), 2), state = _a[0], setState = _a[1];
25
+ (0, react_1.useEffect)(function () {
26
+ if (!isBrowser_1.isBrowser) {
27
+ return;
32
28
  }
29
+ var handler = function () { return setState(window.innerWidth >= minWidth); };
30
+ handler();
31
+ window.addEventListener("resize", handler);
32
+ return function () { return window.removeEventListener("resize", handler); };
33
33
  }, [minWidth, setState]);
34
34
  return state;
35
35
  }
36
36
  exports.useMinWindowWidth = useMinWindowWidth;
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlTWluV2luZG93V2lkdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlTWluV2luZG93V2lkdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQWtDO0FBQ2xDLGdEQUErQztBQUMvQyw2Q0FBNEM7QUFFNUMsU0FBZ0IsaUJBQWlCLENBQUMsUUFBZ0I7SUFDeEMsSUFBQSxvREFBK0QsRUFBOUQsYUFBSyxFQUFFLGdCQUF1RCxDQUFDO0lBRXRFLGlCQUFTLENBQUM7UUFDTixJQUFJLHFCQUFTLEVBQUU7WUFDWCxJQUFNLFNBQU8sR0FBRyxjQUFNLE9BQUEsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDLEVBQXZDLENBQXVDLENBQUM7WUFDOUQsU0FBTyxFQUFFLENBQUM7WUFFVixNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFNBQU8sQ0FBQyxDQUFDO1lBQzNDLE9BQU87Z0JBQ0gsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxTQUFPLENBQUMsQ0FBQztZQUNsRCxDQUFDLENBQUM7U0FDTDtJQUNMLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRXpCLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFoQkQsOENBZ0JDIn0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlTWluV2luZG93V2lkdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlTWluV2luZG93V2lkdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUFrQztBQUNsQyxnREFBK0M7QUFDL0MsNkNBQTRDO0FBRTVDLFNBQWdCLGlCQUFpQixDQUFDLFFBQWdCO0lBQ3hDLElBQUEsS0FBQSxPQUFvQixJQUFBLHlCQUFXLEdBQVcsSUFBQSxFQUF6QyxLQUFLLFFBQUEsRUFBRSxRQUFRLFFBQTBCLENBQUM7SUFFakQsSUFBQSxpQkFBUyxFQUFDO1FBQ04sSUFBSSxDQUFDLHFCQUFTLEVBQUU7WUFDWixPQUFPO1NBQ1Y7UUFFRCxJQUFNLE9BQU8sR0FBRyxjQUFNLE9BQUEsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDLEVBQXZDLENBQXVDLENBQUM7UUFFOUQsT0FBTyxFQUFFLENBQUM7UUFDVixNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLE9BQU8sY0FBTSxPQUFBLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQTdDLENBQTZDLENBQUM7SUFDL0QsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFekIsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQWhCRCw4Q0FnQkMifQ==
@@ -0,0 +1,2 @@
1
+ import { CSSProperties, RefObject } from "react";
2
+ export declare function useMouseDragToScroll<T extends HTMLElement>(containerRef: RefObject<T>): CSSProperties | undefined;