@elliemae/ds-utilities 3.0.0-next.76 → 3.0.0-next.79

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.
@@ -21,6 +21,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var hooks_exports = {};
22
22
  __export(hooks_exports, {
23
23
  UseFocusTrapWithSchema: () => import_useFocusTrap.UseFocusTrapWithSchema,
24
+ UseOnBlurOutWithSchema: () => import_useOnBlurOut.UseOnBlurOutWithSchema,
25
+ UseOnFirstFocusInWithSchema: () => import_useOnFirstFocusIn.UseOnFirstFocusInWithSchema,
26
+ UseOnSpecificFocusWithSchema: () => import_useOnSpecificFocus.UseOnSpecificFocusWithSchema,
24
27
  useCallbackAfterRender: () => import_useCallbackAfterRender.useCallbackAfterRender,
25
28
  useCancellableDelayedCallback: () => import_useCancellableDelayedCallback.useCancellableDelayedCallback,
26
29
  useDerivedStateFromProps: () => import_useDerivedStateFromProps.useDerivedStateFromProps,
@@ -33,8 +36,11 @@ __export(hooks_exports, {
33
36
  useIsMobile: () => import_useIsMobile.useIsMobile,
34
37
  useIsShowingEllipsis: () => import_useIsShowingEllipsis.useIsShowingEllipsis,
35
38
  useMeasure: () => import_use_measure.default,
39
+ useOnBlurOut: () => import_useOnBlurOut.useOnBlurOut,
36
40
  useOnClickOutside: () => import_use_onclickoutside.default,
37
41
  useOnElementResize: () => import_useOnElementResize.useOnElementResize,
42
+ useOnFirstFocusIn: () => import_useOnFirstFocusIn.useOnFirstFocusIn,
43
+ useOnSpecificFocus: () => import_useOnSpecificFocus.useOnSpecificFocus,
38
44
  usePrevious: () => import_usePrevious.usePrevious,
39
45
  useResizeObserver: () => import_useResizeObserver.useResizeObserver,
40
46
  useShouldRecalculate: () => import_useShouldRecalculate.useShouldRecalculate,
@@ -45,19 +51,22 @@ var React = __toESM(require("react"));
45
51
  var import_use_measure = __toESM(require("use-measure"));
46
52
  var import_use_force_update = __toESM(require("use-force-update"));
47
53
  var import_use_onclickoutside = __toESM(require("use-onclickoutside"));
54
+ var import_useCallbackAfterRender = require("./useCallbackAfterRender");
55
+ var import_useCancellableDelayedCallback = require("./useCancellableDelayedCallback");
56
+ var import_useDerivedStateFromProps = require("./useDerivedStateFromProps");
48
57
  var import_useExecutionTimer = require("./useExecutionTimer");
49
58
  var import_useExpandState = require("./useExpandState");
59
+ var import_useFocusTrap = require("./useFocusTrap");
50
60
  var import_useHotkeys = require("./useHotkeys");
51
61
  var import_useHoverHandlersDelay = require("./useHoverHandlersDelay");
62
+ var import_useIsMobile = require("./useIsMobile");
63
+ var import_useIsShowingEllipsis = require("./useIsShowingEllipsis");
64
+ var import_useOnBlurOut = require("./useOnBlurOut");
65
+ var import_useOnElementResize = require("./useOnElementResize");
66
+ var import_useOnFirstFocusIn = require("./useOnFirstFocusIn");
67
+ var import_useOnSpecificFocus = require("./useOnSpecificFocus");
68
+ var import_usePrevious = require("./usePrevious");
52
69
  var import_useResizeObserver = require("./useResizeObserver");
53
70
  var import_useShouldRecalculate = require("./useShouldRecalculate");
54
71
  var import_useWindowScrollerList = require("./useWindowScrollerList");
55
- var import_usePrevious = require("./usePrevious");
56
- var import_useCancellableDelayedCallback = require("./useCancellableDelayedCallback");
57
- var import_useDerivedStateFromProps = require("./useDerivedStateFromProps");
58
- var import_useOnElementResize = require("./useOnElementResize");
59
- var import_useIsShowingEllipsis = require("./useIsShowingEllipsis");
60
- var import_useCallbackAfterRender = require("./useCallbackAfterRender");
61
- var import_useFocusTrap = require("./useFocusTrap");
62
- var import_useIsMobile = require("./useIsMobile");
63
72
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/index.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["export { default as useMeasure } from 'use-measure';\nexport { default as useForceUpdate } from 'use-force-update';\nexport { default as useOnClickOutside } from 'use-onclickoutside';\nexport { useExecutionTimer } from './useExecutionTimer';\nexport { useExpandState } from './useExpandState';\nexport { useHotkeys } from './useHotkeys';\nexport { useHoverHandlersDelay } from './useHoverHandlersDelay';\nexport { useResizeObserver } from './useResizeObserver';\nexport { useShouldRecalculate } from './useShouldRecalculate';\nexport { useWindowScrollerList } from './useWindowScrollerList';\nexport { usePrevious } from './usePrevious';\nexport { useCancellableDelayedCallback } from './useCancellableDelayedCallback';\nexport { useDerivedStateFromProps } from './useDerivedStateFromProps';\nexport { useOnElementResize } from './useOnElementResize';\nexport { useIsShowingEllipsis } from './useIsShowingEllipsis';\nexport { useCallbackAfterRender } from './useCallbackAfterRender';\nexport { useFocusTrap, UseFocusTrapWithSchema } from './useFocusTrap';\nexport { useIsMobile } from './useIsMobile';\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,yBAAsC;AACtC,8BAA0C;AAC1C,gCAA6C;AAC7C,+BAAkC;AAClC,4BAA+B;AAC/B,wBAA2B;AAC3B,mCAAsC;AACtC,+BAAkC;AAClC,kCAAqC;AACrC,mCAAsC;AACtC,yBAA4B;AAC5B,2CAA8C;AAC9C,sCAAyC;AACzC,gCAAmC;AACnC,kCAAqC;AACrC,oCAAuC;AACvC,0BAAqD;AACrD,yBAA4B;",
4
+ "sourcesContent": ["export { default as useMeasure } from 'use-measure';\nexport { default as useForceUpdate } from 'use-force-update';\nexport { default as useOnClickOutside } from 'use-onclickoutside';\n\nexport { useCallbackAfterRender } from './useCallbackAfterRender';\nexport { useCancellableDelayedCallback } from './useCancellableDelayedCallback';\nexport { useDerivedStateFromProps } from './useDerivedStateFromProps';\nexport { useExecutionTimer } from './useExecutionTimer';\nexport { useExpandState } from './useExpandState';\nexport { useFocusTrap, UseFocusTrapWithSchema } from './useFocusTrap';\nexport { useHotkeys } from './useHotkeys';\nexport { useHoverHandlersDelay } from './useHoverHandlersDelay';\nexport { useIsMobile } from './useIsMobile';\nexport { useIsShowingEllipsis } from './useIsShowingEllipsis';\nexport { useOnBlurOut, UseOnBlurOutWithSchema } from './useOnBlurOut';\nexport { useOnElementResize } from './useOnElementResize';\nexport { useOnFirstFocusIn, UseOnFirstFocusInWithSchema } from './useOnFirstFocusIn';\nexport { useOnSpecificFocus, UseOnSpecificFocusWithSchema } from './useOnSpecificFocus';\nexport { usePrevious } from './usePrevious';\nexport { useResizeObserver } from './useResizeObserver';\nexport { useShouldRecalculate } from './useShouldRecalculate';\nexport { useWindowScrollerList } from './useWindowScrollerList';\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,yBAAsC;AACtC,8BAA0C;AAC1C,gCAA6C;AAE7C,oCAAuC;AACvC,2CAA8C;AAC9C,sCAAyC;AACzC,+BAAkC;AAClC,4BAA+B;AAC/B,0BAAqD;AACrD,wBAA2B;AAC3B,mCAAsC;AACtC,yBAA4B;AAC5B,kCAAqC;AACrC,0BAAqD;AACrD,gCAAmC;AACnC,+BAA+D;AAC/D,gCAAiE;AACjE,yBAA4B;AAC5B,+BAAkC;AAClC,kCAAqC;AACrC,mCAAsC;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,43 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
+ var useOnBlurOut_exports = {};
22
+ __export(useOnBlurOut_exports, {
23
+ UseOnBlurOutWithSchema: () => UseOnBlurOutWithSchema,
24
+ useOnBlurOut: () => useOnBlurOut
25
+ });
26
+ module.exports = __toCommonJS(useOnBlurOut_exports);
27
+ var React = __toESM(require("react"));
28
+ var import_react = require("react");
29
+ var import_props_helpers = require("../props-helpers");
30
+ const propTypes = {
31
+ onBlur: import_props_helpers.PropTypes.func.description("The function to be invoked when focus exits the wrapping container").signature("((e: React.FocusEvent, ...args: unknown[]) => void)").isRequired
32
+ };
33
+ const useOnBlurOut = ({ onBlur }) => (0, import_react.useCallback)((e, ...args) => {
34
+ const { currentTarget } = e;
35
+ requestAnimationFrame(() => {
36
+ if (!currentTarget.contains(document.activeElement)) {
37
+ onBlur(e, ...args);
38
+ }
39
+ });
40
+ }, [onBlur]);
41
+ const UseOnBlurOutWithSchema = (0, import_props_helpers.describe)(useOnBlurOut);
42
+ UseOnBlurOutWithSchema.propTypes = propTypes;
43
+ //# sourceMappingURL=useOnBlurOut.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/useOnBlurOut.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import React, { useCallback, WeakValidationMap } from 'react';\nimport { describe, PropTypes } from '../props-helpers';\n\nconst propTypes = {\n onBlur: PropTypes.func\n .description('The function to be invoked when focus exits the wrapping container')\n .signature('((e: React.FocusEvent, ...args: unknown[]) => void)').isRequired,\n} as WeakValidationMap<unknown>;\n\ntype OnBlurCb = (e: React.FocusEvent, ...args: unknown[]) => void;\ntype UseOnBlurOut = ({ onBlur }: { onBlur: OnBlurCb }) => OnBlurCb;\nconst useOnBlurOut: UseOnBlurOut = ({ onBlur }) =>\n useCallback<OnBlurCb>(\n (e, ...args) => {\n const { currentTarget } = e;\n // Give browser time to focus the next element\n requestAnimationFrame(() => {\n // Check if the new focused element is a child of the original container\n if (!currentTarget.contains(document.activeElement)) {\n onBlur(e, ...args);\n }\n });\n },\n [onBlur],\n );\n\nconst UseOnBlurOutWithSchema = describe(useOnBlurOut);\nUseOnBlurOutWithSchema.propTypes = propTypes;\n\nexport { useOnBlurOut, UseOnBlurOutWithSchema };\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAsD;AACtD,2BAAoC;AAEpC,MAAM,YAAY;AAAA,EAChB,QAAQ,+BAAU,KACf,YAAY,oEAAoE,EAChF,UAAU,qDAAqD,EAAE;AACtE;AAIA,MAAM,eAA6B,CAAC,EAAE,aACpC,8BACE,CAAC,MAAM,SAAS;AACd,QAAM,EAAE,kBAAkB;AAE1B,wBAAsB,MAAM;AAE1B,QAAI,CAAC,cAAc,SAAS,SAAS,aAAa,GAAG;AACnD,aAAO,GAAG,GAAG,IAAI;AAAA,IACnB;AAAA,EACF,CAAC;AACH,GACA,CAAC,MAAM,CACT;AAEF,MAAM,yBAAyB,mCAAS,YAAY;AACpD,uBAAuB,YAAY;",
6
+ "names": []
7
+ }
@@ -0,0 +1,61 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
+ var useOnFirstFocusIn_exports = {};
22
+ __export(useOnFirstFocusIn_exports, {
23
+ UseOnFirstFocusInWithSchema: () => UseOnFirstFocusInWithSchema,
24
+ useOnFirstFocusIn: () => useOnFirstFocusIn
25
+ });
26
+ module.exports = __toCommonJS(useOnFirstFocusIn_exports);
27
+ var React = __toESM(require("react"));
28
+ var import_react = require("react");
29
+ var import_props_helpers = require("../props-helpers");
30
+ const propTypes = {
31
+ onFirstFocusCb: import_props_helpers.PropTypes.func.description("The function to be invoked when focus enters the wrapping container for the first time").signature("((e: React.FocusEvent, ...args: unknown[]) => void)").isRequired,
32
+ onBlurCb: import_props_helpers.PropTypes.func.description("Optional onBlur function to be invoked along the returned onBlur handler").signature("((e: React.FocusEvent, ...args: unknown[]) => void)")
33
+ };
34
+ const useOnFirstFocusIn = ({ onFirstFocus, onBlur }) => {
35
+ const mutableDidChildBlur = (0, import_react.useRef)(false);
36
+ const onFirstFocusHelper = (0, import_react.useCallback)((e, ...args) => {
37
+ const { currentTarget } = e;
38
+ requestAnimationFrame(() => {
39
+ const isChildFocus = currentTarget.contains(document.activeElement);
40
+ const isFirstFocus = isChildFocus && !mutableDidChildBlur.current;
41
+ if (isFirstFocus) {
42
+ onFirstFocus(e, ...args);
43
+ }
44
+ });
45
+ }, [onFirstFocus]);
46
+ const onBlurHelper = (0, import_react.useCallback)((e, ...args) => {
47
+ onBlur?.(e, ...args);
48
+ const { currentTarget } = e;
49
+ requestAnimationFrame(() => {
50
+ const isChildBlur = currentTarget.contains(document.activeElement);
51
+ mutableDidChildBlur.current = isChildBlur;
52
+ });
53
+ }, [onBlur]);
54
+ return (0, import_react.useMemo)(() => ({
55
+ onFirstFocus: onFirstFocusHelper,
56
+ onBlur: onBlurHelper
57
+ }), [onFirstFocusHelper, onBlurHelper]);
58
+ };
59
+ const UseOnFirstFocusInWithSchema = (0, import_props_helpers.describe)(useOnFirstFocusIn);
60
+ UseOnFirstFocusInWithSchema.propTypes = propTypes;
61
+ //# sourceMappingURL=useOnFirstFocusIn.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/useOnFirstFocusIn.ts", "../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import React, { useCallback, useMemo, useRef, WeakValidationMap } from 'react';\nimport { describe, PropTypes } from '../props-helpers';\n\nconst propTypes = {\n onFirstFocusCb: PropTypes.func\n .description('The function to be invoked when focus enters the wrapping container for the first time')\n .signature('((e: React.FocusEvent, ...args: unknown[]) => void)').isRequired,\n onBlurCb: PropTypes.func\n .description('Optional onBlur function to be invoked along the returned onBlur handler')\n .signature('((e: React.FocusEvent, ...args: unknown[]) => void)'),\n} as WeakValidationMap<unknown>;\n\ntype OnBlurCb = (e: React.FocusEvent, ...args: unknown[]) => void;\ntype OnFirstFocusCb = (e: React.FocusEvent, ...args: unknown[]) => void;\ntype UseFirstFocusIn = ({ onFirstFocus, onBlur }: { onFirstFocus: OnFirstFocusCb; onBlur: OnBlurCb }) => {\n onFirstFocus: OnFirstFocusCb;\n onBlur: OnBlurCb;\n};\n\nconst useOnFirstFocusIn: UseFirstFocusIn = ({ onFirstFocus, onBlur }) => {\n const mutableDidChildBlur = useRef(false);\n const onFirstFocusHelper = useCallback<OnFirstFocusCb>(\n (e, ...args) => {\n const { currentTarget } = e;\n // Give browser time to focus the next element\n requestAnimationFrame(() => {\n const isChildFocus = currentTarget.contains(document.activeElement);\n const isFirstFocus = isChildFocus && !mutableDidChildBlur.current;\n if (isFirstFocus) {\n onFirstFocus(e, ...args);\n }\n });\n },\n [onFirstFocus],\n );\n const onBlurHelper = useCallback<OnBlurCb>(\n (e, ...args) => {\n onBlur?.(e, ...args);\n const { currentTarget } = e;\n // Give browser time to focus the next element\n requestAnimationFrame(() => {\n const isChildBlur = currentTarget.contains(document.activeElement);\n mutableDidChildBlur.current = isChildBlur;\n });\n },\n [onBlur],\n );\n return useMemo(\n () => ({\n onFirstFocus: onFirstFocusHelper,\n onBlur: onBlurHelper,\n }),\n [onFirstFocusHelper, onBlurHelper],\n );\n};\n\nconst UseOnFirstFocusInWithSchema = describe(useOnFirstFocusIn);\nUseOnFirstFocusInWithSchema.propTypes = propTypes;\n\nexport { useOnFirstFocusIn, UseOnFirstFocusInWithSchema };\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAuE;AACvE,2BAAoC;AAEpC,MAAM,YAAY;AAAA,EAChB,gBAAgB,+BAAU,KACvB,YAAY,wFAAwF,EACpG,UAAU,qDAAqD,EAAE;AAAA,EACpE,UAAU,+BAAU,KACjB,YAAY,0EAA0E,EACtF,UAAU,qDAAqD;AACpE;AASA,MAAM,oBAAqC,CAAC,EAAE,cAAc,aAAa;AACvE,QAAM,sBAAsB,yBAAO,KAAK;AACxC,QAAM,qBAAqB,8BACzB,CAAC,MAAM,SAAS;AACd,UAAM,EAAE,kBAAkB;AAE1B,0BAAsB,MAAM;AAC1B,YAAM,eAAe,cAAc,SAAS,SAAS,aAAa;AAClE,YAAM,eAAe,gBAAgB,CAAC,oBAAoB;AAC1D,UAAI,cAAc;AAChB,qBAAa,GAAG,GAAG,IAAI;AAAA,MACzB;AAAA,IACF,CAAC;AAAA,EACH,GACA,CAAC,YAAY,CACf;AACA,QAAM,eAAe,8BACnB,CAAC,MAAM,SAAS;AACd,aAAS,GAAG,GAAG,IAAI;AACnB,UAAM,EAAE,kBAAkB;AAE1B,0BAAsB,MAAM;AAC1B,YAAM,cAAc,cAAc,SAAS,SAAS,aAAa;AACjE,0BAAoB,UAAU;AAAA,IAChC,CAAC;AAAA,EACH,GACA,CAAC,MAAM,CACT;AACA,SAAO,0BACL,MAAO;AAAA,IACL,cAAc;AAAA,IACd,QAAQ;AAAA,EACV,IACA,CAAC,oBAAoB,YAAY,CACnC;AACF;AAEA,MAAM,8BAA8B,mCAAS,iBAAiB;AAC9D,4BAA4B,YAAY;",
6
+ "names": []
7
+ }
@@ -0,0 +1,40 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
+ var useOnSpecificFocus_exports = {};
22
+ __export(useOnSpecificFocus_exports, {
23
+ UseOnSpecificFocusWithSchema: () => UseOnSpecificFocusWithSchema,
24
+ useOnSpecificFocus: () => useOnSpecificFocus
25
+ });
26
+ module.exports = __toCommonJS(useOnSpecificFocus_exports);
27
+ var React = __toESM(require("react"));
28
+ var import_react = require("react");
29
+ var import_props_helpers = require("../props-helpers");
30
+ const propTypes = {
31
+ onFocus: import_props_helpers.PropTypes.func.description("The function to be invoked when focusing specifically the element attached to (ignoring child focus events)").signature("((e: React.FocusEvent, ...args: unknown[]) => void)").isRequired
32
+ };
33
+ const useOnSpecificFocus = ({ onFocus }) => (0, import_react.useCallback)((e, ...args) => {
34
+ const { currentTarget, target } = e;
35
+ if (currentTarget === target && document.activeElement === currentTarget)
36
+ onFocus(e, ...args);
37
+ }, [onFocus]);
38
+ const UseOnSpecificFocusWithSchema = (0, import_props_helpers.describe)(useOnSpecificFocus);
39
+ UseOnSpecificFocusWithSchema.propTypes = propTypes;
40
+ //# sourceMappingURL=useOnSpecificFocus.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/useOnSpecificFocus.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import React, { useCallback, WeakValidationMap } from 'react';\nimport { describe, PropTypes } from '../props-helpers';\n\nconst propTypes = {\n onFocus: PropTypes.func\n .description(\n 'The function to be invoked when focusing specifically the element attached to (ignoring child focus events)',\n )\n .signature('((e: React.FocusEvent, ...args: unknown[]) => void)').isRequired,\n} as WeakValidationMap<unknown>;\n\ntype OnFocusCb = (e: React.FocusEvent, ...args: unknown[]) => void;\ntype UseOnBlurOut = ({ onFocus }: { onFocus: OnFocusCb }) => OnFocusCb;\nconst useOnSpecificFocus: UseOnBlurOut = ({ onFocus }) =>\n useCallback<OnFocusCb>(\n (e, ...args) => {\n const { currentTarget, target } = e;\n if (currentTarget === target && document.activeElement === currentTarget) onFocus(e, ...args);\n },\n [onFocus],\n );\nconst UseOnSpecificFocusWithSchema = describe(useOnSpecificFocus);\nUseOnSpecificFocusWithSchema.propTypes = propTypes;\n\nexport { useOnSpecificFocus, UseOnSpecificFocusWithSchema };\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAsD;AACtD,2BAAoC;AAEpC,MAAM,YAAY;AAAA,EAChB,SAAS,+BAAU,KAChB,YACC,6GACF,EACC,UAAU,qDAAqD,EAAE;AACtE;AAIA,MAAM,qBAAmC,CAAC,EAAE,cAC1C,8BACE,CAAC,MAAM,SAAS;AACd,QAAM,EAAE,eAAe,WAAW;AAClC,MAAI,kBAAkB,UAAU,SAAS,kBAAkB;AAAe,YAAQ,GAAG,GAAG,IAAI;AAC9F,GACA,CAAC,OAAO,CACV;AACF,MAAM,+BAA+B,mCAAS,kBAAkB;AAChE,6BAA6B,YAAY;",
6
+ "names": []
7
+ }
package/dist/cjs/index.js CHANGED
@@ -23,6 +23,9 @@ var src_exports = {};
23
23
  __export(src_exports, {
24
24
  DOCUMENT: () => import_platform.DOCUMENT,
25
25
  UseFocusTrapWithSchema: () => import_hooks.UseFocusTrapWithSchema,
26
+ UseOnBlurOutWithSchema: () => import_hooks.UseOnBlurOutWithSchema,
27
+ UseOnFirstFocusInWithSchema: () => import_hooks.UseOnFirstFocusInWithSchema,
28
+ UseOnSpecificFocusWithSchema: () => import_hooks.UseOnSpecificFocusWithSchema,
26
29
  WINDOW: () => import_platform.WINDOW,
27
30
  addLeadingZeros: () => import_timeUtils.addLeadingZeros,
28
31
  addOrRemove: () => import_utils.addOrRemove,
@@ -109,8 +112,11 @@ __export(src_exports, {
109
112
  useIsMobile: () => import_hooks.useIsMobile,
110
113
  useIsShowingEllipsis: () => import_hooks.useIsShowingEllipsis,
111
114
  useMeasure: () => import_hooks.useMeasure,
115
+ useOnBlurOut: () => import_hooks.useOnBlurOut,
112
116
  useOnClickOutside: () => import_hooks.useOnClickOutside,
113
117
  useOnElementResize: () => import_hooks.useOnElementResize,
118
+ useOnFirstFocusIn: () => import_hooks.useOnFirstFocusIn,
119
+ useOnSpecificFocus: () => import_hooks.useOnSpecificFocus,
114
120
  usePrevious: () => import_hooks.usePrevious,
115
121
  useResizeObserver: () => import_hooks.useResizeObserver,
116
122
  useShouldRecalculate: () => import_hooks.useShouldRecalculate,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.tsx", "../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["export { default as getComponentFromProps } from './getComponentFromProps';\nexport { default as onClickHandlerForNonInteractiveElements } from './onClickHandlerForNonInteractiveElements';\nexport { capitalize } from './capitalize';\nexport { getObjectValuesToArray, getObjectKeysToArray } from './objectUtilities';\nexport {\n checkNotEmpty,\n checkEmpty,\n greaterThan,\n validDate,\n equal,\n notEqual,\n isNull,\n isNotNull,\n isIn,\n isNotIn,\n greaterThanOrEquals,\n lessThanOrEquals,\n startsWith,\n contains,\n} from './operators';\nexport {\n cx,\n runAll,\n hashArray,\n safeCall,\n removeUndefinedProperties,\n isObject,\n curry,\n arrayMove,\n uniq,\n filter,\n uniqBy,\n groupBy,\n property,\n get,\n set,\n cloneDeep,\n debounce,\n findIndex,\n isEmpty,\n isString,\n isEqual,\n maxBy,\n meanBy,\n noop,\n omit,\n orderBy,\n pull,\n sortBy,\n sumBy,\n transform,\n isFunction,\n range,\n parseInt,\n padStart,\n isNaN,\n values,\n throttle,\n toggleInObject,\n toggleInArray,\n pick,\n pickBy,\n differenceBy,\n differenceWith,\n addOrRemove,\n isEqualWith,\n isBoolean,\n} from './utils';\nexport { setRef, mergeRefs, logger } from './system';\nexport {\n useMeasure,\n useForceUpdate,\n useOnClickOutside,\n useExecutionTimer,\n useExpandState,\n useHotkeys,\n useHoverHandlersDelay,\n useResizeObserver,\n useShouldRecalculate,\n useWindowScrollerList,\n usePrevious,\n useCancellableDelayedCallback,\n useDerivedStateFromProps,\n useOnElementResize,\n useIsShowingEllipsis,\n useCallbackAfterRender,\n useFocusTrap,\n UseFocusTrapWithSchema,\n useIsMobile,\n} from './hooks';\nexport { getVisibleTimeByFormat, addLeadingZeros } from './timeUtils';\nexport { compose } from './compose';\nexport { DOCUMENT, WINDOW } from './platform';\nexport { isDOMTypeElement } from './reactTypesUtility';\nexport { isRequired, isGreaterThan, isValidDate } from './validations';\n\n// TODO -- REMOVE WHEN READY\nexport * from './deprecated';\nexport * from './props-helpers';\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mCAAiD;AACjD,qDAAmE;AACnE,wBAA2B;AAC3B,6BAA6D;AAC7D,uBAeO;AACP,mBA+CO;AACP,oBAA0C;AAC1C,mBAoBO;AACP,uBAAwD;AACxD,qBAAwB;AACxB,sBAAiC;AACjC,+BAAiC;AACjC,yBAAuD;AAGvD,wBAAc,yBAjGd;AAkGA,wBAAc,4BAlGd;",
4
+ "sourcesContent": ["export { default as getComponentFromProps } from './getComponentFromProps';\nexport { default as onClickHandlerForNonInteractiveElements } from './onClickHandlerForNonInteractiveElements';\nexport { capitalize } from './capitalize';\nexport { getObjectValuesToArray, getObjectKeysToArray } from './objectUtilities';\nexport {\n checkNotEmpty,\n checkEmpty,\n greaterThan,\n validDate,\n equal,\n notEqual,\n isNull,\n isNotNull,\n isIn,\n isNotIn,\n greaterThanOrEquals,\n lessThanOrEquals,\n startsWith,\n contains,\n} from './operators';\nexport {\n cx,\n runAll,\n hashArray,\n safeCall,\n removeUndefinedProperties,\n isObject,\n curry,\n arrayMove,\n uniq,\n filter,\n uniqBy,\n groupBy,\n property,\n get,\n set,\n cloneDeep,\n debounce,\n findIndex,\n isEmpty,\n isString,\n isEqual,\n maxBy,\n meanBy,\n noop,\n omit,\n orderBy,\n pull,\n sortBy,\n sumBy,\n transform,\n isFunction,\n range,\n parseInt,\n padStart,\n isNaN,\n values,\n throttle,\n toggleInObject,\n toggleInArray,\n pick,\n pickBy,\n differenceBy,\n differenceWith,\n addOrRemove,\n isEqualWith,\n isBoolean,\n} from './utils';\nexport { setRef, mergeRefs, logger } from './system';\nexport {\n useMeasure,\n useForceUpdate,\n useOnClickOutside,\n useExecutionTimer,\n useExpandState,\n useHotkeys,\n useHoverHandlersDelay,\n useResizeObserver,\n useShouldRecalculate,\n useWindowScrollerList,\n usePrevious,\n useCancellableDelayedCallback,\n useDerivedStateFromProps,\n useOnElementResize,\n useIsShowingEllipsis,\n useCallbackAfterRender,\n useFocusTrap,\n UseFocusTrapWithSchema,\n useIsMobile,\n useOnBlurOut,\n UseOnBlurOutWithSchema,\n useOnFirstFocusIn,\n UseOnFirstFocusInWithSchema,\n useOnSpecificFocus,\n UseOnSpecificFocusWithSchema,\n} from './hooks';\nexport { getVisibleTimeByFormat, addLeadingZeros } from './timeUtils';\nexport { compose } from './compose';\nexport { DOCUMENT, WINDOW } from './platform';\nexport { isDOMTypeElement } from './reactTypesUtility';\nexport { isRequired, isGreaterThan, isValidDate } from './validations';\n\n// TODO -- REMOVE WHEN READY\nexport * from './deprecated';\nexport * from './props-helpers';\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mCAAiD;AACjD,qDAAmE;AACnE,wBAA2B;AAC3B,6BAA6D;AAC7D,uBAeO;AACP,mBA+CO;AACP,oBAA0C;AAC1C,mBA0BO;AACP,uBAAwD;AACxD,qBAAwB;AACxB,sBAAiC;AACjC,+BAAiC;AACjC,yBAAuD;AAGvD,wBAAc,yBAvGd;AAwGA,wBAAc,4BAxGd;",
6
6
  "names": []
7
7
  }
@@ -2,23 +2,29 @@ import * as React from "react";
2
2
  import { default as default2 } from "use-measure";
3
3
  import { default as default3 } from "use-force-update";
4
4
  import { default as default4 } from "use-onclickoutside";
5
+ import { useCallbackAfterRender } from "./useCallbackAfterRender";
6
+ import { useCancellableDelayedCallback } from "./useCancellableDelayedCallback";
7
+ import { useDerivedStateFromProps } from "./useDerivedStateFromProps";
5
8
  import { useExecutionTimer } from "./useExecutionTimer";
6
9
  import { useExpandState } from "./useExpandState";
10
+ import { useFocusTrap, UseFocusTrapWithSchema } from "./useFocusTrap";
7
11
  import { useHotkeys } from "./useHotkeys";
8
12
  import { useHoverHandlersDelay } from "./useHoverHandlersDelay";
13
+ import { useIsMobile } from "./useIsMobile";
14
+ import { useIsShowingEllipsis } from "./useIsShowingEllipsis";
15
+ import { useOnBlurOut, UseOnBlurOutWithSchema } from "./useOnBlurOut";
16
+ import { useOnElementResize } from "./useOnElementResize";
17
+ import { useOnFirstFocusIn, UseOnFirstFocusInWithSchema } from "./useOnFirstFocusIn";
18
+ import { useOnSpecificFocus, UseOnSpecificFocusWithSchema } from "./useOnSpecificFocus";
19
+ import { usePrevious } from "./usePrevious";
9
20
  import { useResizeObserver } from "./useResizeObserver";
10
21
  import { useShouldRecalculate } from "./useShouldRecalculate";
11
22
  import { useWindowScrollerList } from "./useWindowScrollerList";
12
- import { usePrevious } from "./usePrevious";
13
- import { useCancellableDelayedCallback } from "./useCancellableDelayedCallback";
14
- import { useDerivedStateFromProps } from "./useDerivedStateFromProps";
15
- import { useOnElementResize } from "./useOnElementResize";
16
- import { useIsShowingEllipsis } from "./useIsShowingEllipsis";
17
- import { useCallbackAfterRender } from "./useCallbackAfterRender";
18
- import { useFocusTrap, UseFocusTrapWithSchema } from "./useFocusTrap";
19
- import { useIsMobile } from "./useIsMobile";
20
23
  export {
21
24
  UseFocusTrapWithSchema,
25
+ UseOnBlurOutWithSchema,
26
+ UseOnFirstFocusInWithSchema,
27
+ UseOnSpecificFocusWithSchema,
22
28
  useCallbackAfterRender,
23
29
  useCancellableDelayedCallback,
24
30
  useDerivedStateFromProps,
@@ -31,8 +37,11 @@ export {
31
37
  useIsMobile,
32
38
  useIsShowingEllipsis,
33
39
  default2 as useMeasure,
40
+ useOnBlurOut,
34
41
  default4 as useOnClickOutside,
35
42
  useOnElementResize,
43
+ useOnFirstFocusIn,
44
+ useOnSpecificFocus,
36
45
  usePrevious,
37
46
  useResizeObserver,
38
47
  useShouldRecalculate,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/hooks/index.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export { default as useMeasure } from 'use-measure';\nexport { default as useForceUpdate } from 'use-force-update';\nexport { default as useOnClickOutside } from 'use-onclickoutside';\nexport { useExecutionTimer } from './useExecutionTimer';\nexport { useExpandState } from './useExpandState';\nexport { useHotkeys } from './useHotkeys';\nexport { useHoverHandlersDelay } from './useHoverHandlersDelay';\nexport { useResizeObserver } from './useResizeObserver';\nexport { useShouldRecalculate } from './useShouldRecalculate';\nexport { useWindowScrollerList } from './useWindowScrollerList';\nexport { usePrevious } from './usePrevious';\nexport { useCancellableDelayedCallback } from './useCancellableDelayedCallback';\nexport { useDerivedStateFromProps } from './useDerivedStateFromProps';\nexport { useOnElementResize } from './useOnElementResize';\nexport { useIsShowingEllipsis } from './useIsShowingEllipsis';\nexport { useCallbackAfterRender } from './useCallbackAfterRender';\nexport { useFocusTrap, UseFocusTrapWithSchema } from './useFocusTrap';\nexport { useIsMobile } from './useIsMobile';\n"],
5
- "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export { default as useMeasure } from 'use-measure';\nexport { default as useForceUpdate } from 'use-force-update';\nexport { default as useOnClickOutside } from 'use-onclickoutside';\n\nexport { useCallbackAfterRender } from './useCallbackAfterRender';\nexport { useCancellableDelayedCallback } from './useCancellableDelayedCallback';\nexport { useDerivedStateFromProps } from './useDerivedStateFromProps';\nexport { useExecutionTimer } from './useExecutionTimer';\nexport { useExpandState } from './useExpandState';\nexport { useFocusTrap, UseFocusTrapWithSchema } from './useFocusTrap';\nexport { useHotkeys } from './useHotkeys';\nexport { useHoverHandlersDelay } from './useHoverHandlersDelay';\nexport { useIsMobile } from './useIsMobile';\nexport { useIsShowingEllipsis } from './useIsShowingEllipsis';\nexport { useOnBlurOut, UseOnBlurOutWithSchema } from './useOnBlurOut';\nexport { useOnElementResize } from './useOnElementResize';\nexport { useOnFirstFocusIn, UseOnFirstFocusInWithSchema } from './useOnFirstFocusIn';\nexport { useOnSpecificFocus, UseOnSpecificFocusWithSchema } from './useOnSpecificFocus';\nexport { usePrevious } from './usePrevious';\nexport { useResizeObserver } from './useResizeObserver';\nexport { useShouldRecalculate } from './useShouldRecalculate';\nexport { useWindowScrollerList } from './useWindowScrollerList';\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,21 @@
1
+ import * as React from "react";
2
+ import { useCallback } from "react";
3
+ import { describe, PropTypes } from "../props-helpers";
4
+ const propTypes = {
5
+ onBlur: PropTypes.func.description("The function to be invoked when focus exits the wrapping container").signature("((e: React.FocusEvent, ...args: unknown[]) => void)").isRequired
6
+ };
7
+ const useOnBlurOut = ({ onBlur }) => useCallback((e, ...args) => {
8
+ const { currentTarget } = e;
9
+ requestAnimationFrame(() => {
10
+ if (!currentTarget.contains(document.activeElement)) {
11
+ onBlur(e, ...args);
12
+ }
13
+ });
14
+ }, [onBlur]);
15
+ const UseOnBlurOutWithSchema = describe(useOnBlurOut);
16
+ UseOnBlurOutWithSchema.propTypes = propTypes;
17
+ export {
18
+ UseOnBlurOutWithSchema,
19
+ useOnBlurOut
20
+ };
21
+ //# sourceMappingURL=useOnBlurOut.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/hooks/useOnBlurOut.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback, WeakValidationMap } from 'react';\nimport { describe, PropTypes } from '../props-helpers';\n\nconst propTypes = {\n onBlur: PropTypes.func\n .description('The function to be invoked when focus exits the wrapping container')\n .signature('((e: React.FocusEvent, ...args: unknown[]) => void)').isRequired,\n} as WeakValidationMap<unknown>;\n\ntype OnBlurCb = (e: React.FocusEvent, ...args: unknown[]) => void;\ntype UseOnBlurOut = ({ onBlur }: { onBlur: OnBlurCb }) => OnBlurCb;\nconst useOnBlurOut: UseOnBlurOut = ({ onBlur }) =>\n useCallback<OnBlurCb>(\n (e, ...args) => {\n const { currentTarget } = e;\n // Give browser time to focus the next element\n requestAnimationFrame(() => {\n // Check if the new focused element is a child of the original container\n if (!currentTarget.contains(document.activeElement)) {\n onBlur(e, ...args);\n }\n });\n },\n [onBlur],\n );\n\nconst UseOnBlurOutWithSchema = describe(useOnBlurOut);\nUseOnBlurOutWithSchema.propTypes = propTypes;\n\nexport { useOnBlurOut, UseOnBlurOutWithSchema };\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AAEA,MAAM,YAAY;AAAA,EAChB,QAAQ,UAAU,KACf,YAAY,oEAAoE,EAChF,UAAU,qDAAqD,EAAE;AACtE;AAIA,MAAM,eAA6B,CAAC,EAAE,aACpC,YACE,CAAC,MAAM,SAAS;AACd,QAAM,EAAE,kBAAkB;AAE1B,wBAAsB,MAAM;AAE1B,QAAI,CAAC,cAAc,SAAS,SAAS,aAAa,GAAG;AACnD,aAAO,GAAG,GAAG,IAAI;AAAA,IACnB;AAAA,EACF,CAAC;AACH,GACA,CAAC,MAAM,CACT;AAEF,MAAM,yBAAyB,SAAS,YAAY;AACpD,uBAAuB,YAAY;",
6
+ "names": []
7
+ }
@@ -0,0 +1,39 @@
1
+ import * as React from "react";
2
+ import { useCallback, useMemo, useRef } from "react";
3
+ import { describe, PropTypes } from "../props-helpers";
4
+ const propTypes = {
5
+ onFirstFocusCb: PropTypes.func.description("The function to be invoked when focus enters the wrapping container for the first time").signature("((e: React.FocusEvent, ...args: unknown[]) => void)").isRequired,
6
+ onBlurCb: PropTypes.func.description("Optional onBlur function to be invoked along the returned onBlur handler").signature("((e: React.FocusEvent, ...args: unknown[]) => void)")
7
+ };
8
+ const useOnFirstFocusIn = ({ onFirstFocus, onBlur }) => {
9
+ const mutableDidChildBlur = useRef(false);
10
+ const onFirstFocusHelper = useCallback((e, ...args) => {
11
+ const { currentTarget } = e;
12
+ requestAnimationFrame(() => {
13
+ const isChildFocus = currentTarget.contains(document.activeElement);
14
+ const isFirstFocus = isChildFocus && !mutableDidChildBlur.current;
15
+ if (isFirstFocus) {
16
+ onFirstFocus(e, ...args);
17
+ }
18
+ });
19
+ }, [onFirstFocus]);
20
+ const onBlurHelper = useCallback((e, ...args) => {
21
+ onBlur?.(e, ...args);
22
+ const { currentTarget } = e;
23
+ requestAnimationFrame(() => {
24
+ const isChildBlur = currentTarget.contains(document.activeElement);
25
+ mutableDidChildBlur.current = isChildBlur;
26
+ });
27
+ }, [onBlur]);
28
+ return useMemo(() => ({
29
+ onFirstFocus: onFirstFocusHelper,
30
+ onBlur: onBlurHelper
31
+ }), [onFirstFocusHelper, onBlurHelper]);
32
+ };
33
+ const UseOnFirstFocusInWithSchema = describe(useOnFirstFocusIn);
34
+ UseOnFirstFocusInWithSchema.propTypes = propTypes;
35
+ export {
36
+ UseOnFirstFocusInWithSchema,
37
+ useOnFirstFocusIn
38
+ };
39
+ //# sourceMappingURL=useOnFirstFocusIn.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/hooks/useOnFirstFocusIn.ts"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback, useMemo, useRef, WeakValidationMap } from 'react';\nimport { describe, PropTypes } from '../props-helpers';\n\nconst propTypes = {\n onFirstFocusCb: PropTypes.func\n .description('The function to be invoked when focus enters the wrapping container for the first time')\n .signature('((e: React.FocusEvent, ...args: unknown[]) => void)').isRequired,\n onBlurCb: PropTypes.func\n .description('Optional onBlur function to be invoked along the returned onBlur handler')\n .signature('((e: React.FocusEvent, ...args: unknown[]) => void)'),\n} as WeakValidationMap<unknown>;\n\ntype OnBlurCb = (e: React.FocusEvent, ...args: unknown[]) => void;\ntype OnFirstFocusCb = (e: React.FocusEvent, ...args: unknown[]) => void;\ntype UseFirstFocusIn = ({ onFirstFocus, onBlur }: { onFirstFocus: OnFirstFocusCb; onBlur: OnBlurCb }) => {\n onFirstFocus: OnFirstFocusCb;\n onBlur: OnBlurCb;\n};\n\nconst useOnFirstFocusIn: UseFirstFocusIn = ({ onFirstFocus, onBlur }) => {\n const mutableDidChildBlur = useRef(false);\n const onFirstFocusHelper = useCallback<OnFirstFocusCb>(\n (e, ...args) => {\n const { currentTarget } = e;\n // Give browser time to focus the next element\n requestAnimationFrame(() => {\n const isChildFocus = currentTarget.contains(document.activeElement);\n const isFirstFocus = isChildFocus && !mutableDidChildBlur.current;\n if (isFirstFocus) {\n onFirstFocus(e, ...args);\n }\n });\n },\n [onFirstFocus],\n );\n const onBlurHelper = useCallback<OnBlurCb>(\n (e, ...args) => {\n onBlur?.(e, ...args);\n const { currentTarget } = e;\n // Give browser time to focus the next element\n requestAnimationFrame(() => {\n const isChildBlur = currentTarget.contains(document.activeElement);\n mutableDidChildBlur.current = isChildBlur;\n });\n },\n [onBlur],\n );\n return useMemo(\n () => ({\n onFirstFocus: onFirstFocusHelper,\n onBlur: onBlurHelper,\n }),\n [onFirstFocusHelper, onBlurHelper],\n );\n};\n\nconst UseOnFirstFocusInWithSchema = describe(useOnFirstFocusIn);\nUseOnFirstFocusInWithSchema.propTypes = propTypes;\n\nexport { useOnFirstFocusIn, UseOnFirstFocusInWithSchema };\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AAEA,MAAM,YAAY;AAAA,EAChB,gBAAgB,UAAU,KACvB,YAAY,wFAAwF,EACpG,UAAU,qDAAqD,EAAE;AAAA,EACpE,UAAU,UAAU,KACjB,YAAY,0EAA0E,EACtF,UAAU,qDAAqD;AACpE;AASA,MAAM,oBAAqC,CAAC,EAAE,cAAc,aAAa;AACvE,QAAM,sBAAsB,OAAO,KAAK;AACxC,QAAM,qBAAqB,YACzB,CAAC,MAAM,SAAS;AACd,UAAM,EAAE,kBAAkB;AAE1B,0BAAsB,MAAM;AAC1B,YAAM,eAAe,cAAc,SAAS,SAAS,aAAa;AAClE,YAAM,eAAe,gBAAgB,CAAC,oBAAoB;AAC1D,UAAI,cAAc;AAChB,qBAAa,GAAG,GAAG,IAAI;AAAA,MACzB;AAAA,IACF,CAAC;AAAA,EACH,GACA,CAAC,YAAY,CACf;AACA,QAAM,eAAe,YACnB,CAAC,MAAM,SAAS;AACd,aAAS,GAAG,GAAG,IAAI;AACnB,UAAM,EAAE,kBAAkB;AAE1B,0BAAsB,MAAM;AAC1B,YAAM,cAAc,cAAc,SAAS,SAAS,aAAa;AACjE,0BAAoB,UAAU;AAAA,IAChC,CAAC;AAAA,EACH,GACA,CAAC,MAAM,CACT;AACA,SAAO,QACL,MAAO;AAAA,IACL,cAAc;AAAA,IACd,QAAQ;AAAA,EACV,IACA,CAAC,oBAAoB,YAAY,CACnC;AACF;AAEA,MAAM,8BAA8B,SAAS,iBAAiB;AAC9D,4BAA4B,YAAY;",
6
+ "names": []
7
+ }
@@ -0,0 +1,18 @@
1
+ import * as React from "react";
2
+ import { useCallback } from "react";
3
+ import { describe, PropTypes } from "../props-helpers";
4
+ const propTypes = {
5
+ onFocus: PropTypes.func.description("The function to be invoked when focusing specifically the element attached to (ignoring child focus events)").signature("((e: React.FocusEvent, ...args: unknown[]) => void)").isRequired
6
+ };
7
+ const useOnSpecificFocus = ({ onFocus }) => useCallback((e, ...args) => {
8
+ const { currentTarget, target } = e;
9
+ if (currentTarget === target && document.activeElement === currentTarget)
10
+ onFocus(e, ...args);
11
+ }, [onFocus]);
12
+ const UseOnSpecificFocusWithSchema = describe(useOnSpecificFocus);
13
+ UseOnSpecificFocusWithSchema.propTypes = propTypes;
14
+ export {
15
+ UseOnSpecificFocusWithSchema,
16
+ useOnSpecificFocus
17
+ };
18
+ //# sourceMappingURL=useOnSpecificFocus.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/hooks/useOnSpecificFocus.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback, WeakValidationMap } from 'react';\nimport { describe, PropTypes } from '../props-helpers';\n\nconst propTypes = {\n onFocus: PropTypes.func\n .description(\n 'The function to be invoked when focusing specifically the element attached to (ignoring child focus events)',\n )\n .signature('((e: React.FocusEvent, ...args: unknown[]) => void)').isRequired,\n} as WeakValidationMap<unknown>;\n\ntype OnFocusCb = (e: React.FocusEvent, ...args: unknown[]) => void;\ntype UseOnBlurOut = ({ onFocus }: { onFocus: OnFocusCb }) => OnFocusCb;\nconst useOnSpecificFocus: UseOnBlurOut = ({ onFocus }) =>\n useCallback<OnFocusCb>(\n (e, ...args) => {\n const { currentTarget, target } = e;\n if (currentTarget === target && document.activeElement === currentTarget) onFocus(e, ...args);\n },\n [onFocus],\n );\nconst UseOnSpecificFocusWithSchema = describe(useOnSpecificFocus);\nUseOnSpecificFocusWithSchema.propTypes = propTypes;\n\nexport { useOnSpecificFocus, UseOnSpecificFocusWithSchema };\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AAEA,MAAM,YAAY;AAAA,EAChB,SAAS,UAAU,KAChB,YACC,6GACF,EACC,UAAU,qDAAqD,EAAE;AACtE;AAIA,MAAM,qBAAmC,CAAC,EAAE,cAC1C,YACE,CAAC,MAAM,SAAS;AACd,QAAM,EAAE,eAAe,WAAW;AAClC,MAAI,kBAAkB,UAAU,SAAS,kBAAkB;AAAe,YAAQ,GAAG,GAAG,IAAI;AAC9F,GACA,CAAC,OAAO,CACV;AACF,MAAM,+BAA+B,SAAS,kBAAkB;AAChE,6BAA6B,YAAY;",
6
+ "names": []
7
+ }
package/dist/esm/index.js CHANGED
@@ -87,7 +87,13 @@ import {
87
87
  useCallbackAfterRender,
88
88
  useFocusTrap,
89
89
  UseFocusTrapWithSchema,
90
- useIsMobile
90
+ useIsMobile,
91
+ useOnBlurOut,
92
+ UseOnBlurOutWithSchema,
93
+ useOnFirstFocusIn,
94
+ UseOnFirstFocusInWithSchema,
95
+ useOnSpecificFocus,
96
+ UseOnSpecificFocusWithSchema
91
97
  } from "./hooks";
92
98
  import { getVisibleTimeByFormat, addLeadingZeros } from "./timeUtils";
93
99
  import { compose } from "./compose";
@@ -99,6 +105,9 @@ export * from "./props-helpers";
99
105
  export {
100
106
  DOCUMENT,
101
107
  UseFocusTrapWithSchema,
108
+ UseOnBlurOutWithSchema,
109
+ UseOnFirstFocusInWithSchema,
110
+ UseOnSpecificFocusWithSchema,
102
111
  WINDOW,
103
112
  addLeadingZeros,
104
113
  addOrRemove,
@@ -185,8 +194,11 @@ export {
185
194
  useIsMobile,
186
195
  useIsShowingEllipsis,
187
196
  useMeasure,
197
+ useOnBlurOut,
188
198
  useOnClickOutside,
189
199
  useOnElementResize,
200
+ useOnFirstFocusIn,
201
+ useOnSpecificFocus,
190
202
  usePrevious,
191
203
  useResizeObserver,
192
204
  useShouldRecalculate,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/index.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export { default as getComponentFromProps } from './getComponentFromProps';\nexport { default as onClickHandlerForNonInteractiveElements } from './onClickHandlerForNonInteractiveElements';\nexport { capitalize } from './capitalize';\nexport { getObjectValuesToArray, getObjectKeysToArray } from './objectUtilities';\nexport {\n checkNotEmpty,\n checkEmpty,\n greaterThan,\n validDate,\n equal,\n notEqual,\n isNull,\n isNotNull,\n isIn,\n isNotIn,\n greaterThanOrEquals,\n lessThanOrEquals,\n startsWith,\n contains,\n} from './operators';\nexport {\n cx,\n runAll,\n hashArray,\n safeCall,\n removeUndefinedProperties,\n isObject,\n curry,\n arrayMove,\n uniq,\n filter,\n uniqBy,\n groupBy,\n property,\n get,\n set,\n cloneDeep,\n debounce,\n findIndex,\n isEmpty,\n isString,\n isEqual,\n maxBy,\n meanBy,\n noop,\n omit,\n orderBy,\n pull,\n sortBy,\n sumBy,\n transform,\n isFunction,\n range,\n parseInt,\n padStart,\n isNaN,\n values,\n throttle,\n toggleInObject,\n toggleInArray,\n pick,\n pickBy,\n differenceBy,\n differenceWith,\n addOrRemove,\n isEqualWith,\n isBoolean,\n} from './utils';\nexport { setRef, mergeRefs, logger } from './system';\nexport {\n useMeasure,\n useForceUpdate,\n useOnClickOutside,\n useExecutionTimer,\n useExpandState,\n useHotkeys,\n useHoverHandlersDelay,\n useResizeObserver,\n useShouldRecalculate,\n useWindowScrollerList,\n usePrevious,\n useCancellableDelayedCallback,\n useDerivedStateFromProps,\n useOnElementResize,\n useIsShowingEllipsis,\n useCallbackAfterRender,\n useFocusTrap,\n UseFocusTrapWithSchema,\n useIsMobile,\n} from './hooks';\nexport { getVisibleTimeByFormat, addLeadingZeros } from './timeUtils';\nexport { compose } from './compose';\nexport { DOCUMENT, WINDOW } from './platform';\nexport { isDOMTypeElement } from './reactTypesUtility';\nexport { isRequired, isGreaterThan, isValidDate } from './validations';\n\n// TODO -- REMOVE WHEN READY\nexport * from './deprecated';\nexport * from './props-helpers';\n"],
5
- "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgDA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBA;AACA;AACA;AACA;AACA;AAGA;AACA;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export { default as getComponentFromProps } from './getComponentFromProps';\nexport { default as onClickHandlerForNonInteractiveElements } from './onClickHandlerForNonInteractiveElements';\nexport { capitalize } from './capitalize';\nexport { getObjectValuesToArray, getObjectKeysToArray } from './objectUtilities';\nexport {\n checkNotEmpty,\n checkEmpty,\n greaterThan,\n validDate,\n equal,\n notEqual,\n isNull,\n isNotNull,\n isIn,\n isNotIn,\n greaterThanOrEquals,\n lessThanOrEquals,\n startsWith,\n contains,\n} from './operators';\nexport {\n cx,\n runAll,\n hashArray,\n safeCall,\n removeUndefinedProperties,\n isObject,\n curry,\n arrayMove,\n uniq,\n filter,\n uniqBy,\n groupBy,\n property,\n get,\n set,\n cloneDeep,\n debounce,\n findIndex,\n isEmpty,\n isString,\n isEqual,\n maxBy,\n meanBy,\n noop,\n omit,\n orderBy,\n pull,\n sortBy,\n sumBy,\n transform,\n isFunction,\n range,\n parseInt,\n padStart,\n isNaN,\n values,\n throttle,\n toggleInObject,\n toggleInArray,\n pick,\n pickBy,\n differenceBy,\n differenceWith,\n addOrRemove,\n isEqualWith,\n isBoolean,\n} from './utils';\nexport { setRef, mergeRefs, logger } from './system';\nexport {\n useMeasure,\n useForceUpdate,\n useOnClickOutside,\n useExecutionTimer,\n useExpandState,\n useHotkeys,\n useHoverHandlersDelay,\n useResizeObserver,\n useShouldRecalculate,\n useWindowScrollerList,\n usePrevious,\n useCancellableDelayedCallback,\n useDerivedStateFromProps,\n useOnElementResize,\n useIsShowingEllipsis,\n useCallbackAfterRender,\n useFocusTrap,\n UseFocusTrapWithSchema,\n useIsMobile,\n useOnBlurOut,\n UseOnBlurOutWithSchema,\n useOnFirstFocusIn,\n UseOnFirstFocusInWithSchema,\n useOnSpecificFocus,\n UseOnSpecificFocusWithSchema,\n} from './hooks';\nexport { getVisibleTimeByFormat, addLeadingZeros } from './timeUtils';\nexport { compose } from './compose';\nexport { DOCUMENT, WINDOW } from './platform';\nexport { isDOMTypeElement } from './reactTypesUtility';\nexport { isRequired, isGreaterThan, isValidDate } from './validations';\n\n// TODO -- REMOVE WHEN READY\nexport * from './deprecated';\nexport * from './props-helpers';\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgDA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2BA;AACA;AACA;AACA;AACA;AAGA;AACA;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/ds-utilities",
3
- "version": "3.0.0-next.76",
3
+ "version": "3.0.0-next.79",
4
4
  "license": "MIT",
5
5
  "description": "ICE MT - Dimsum - Utilities",
6
6
  "files": [