@elliemae/ds-utilities 2.2.0-alpha.4 → 3.0.0-next.2
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.
- package/cjs/capitalize.js +7 -35
- package/cjs/compose.js +32 -39
- package/cjs/getComponentFromProps.js +29 -47
- package/cjs/hooks/index.js +60 -68
- package/cjs/hooks/useCancellableDelayedCallback.js +18 -43
- package/cjs/hooks/useDerivedStateFromProps.js +36 -47
- package/cjs/hooks/useExecutionTimer.js +24 -43
- package/cjs/hooks/useExpandState.js +82 -69
- package/cjs/hooks/useHotkeys.js +24 -44
- package/cjs/hooks/useHoverHandlersDelay.js +18 -48
- package/cjs/hooks/useOnElementResize.js +27 -44
- package/cjs/hooks/useParentElement.js +13 -40
- package/cjs/hooks/usePrevious.js +10 -41
- package/cjs/hooks/useResizeObserver.js +25 -52
- package/cjs/hooks/useSetRef.js +11 -38
- package/cjs/hooks/useShouldRecalculate.js +14 -41
- package/cjs/hooks/useWindowScrollerList.js +33 -51
- package/cjs/hooks/useWindowSize.js +19 -49
- package/cjs/index.js +266 -145
- package/cjs/onClickHandlerForNonInteractiveElements.js +19 -46
- package/cjs/operators.js +51 -56
- package/cjs/platform.js +9 -37
- package/cjs/reactTypesUtility.js +22 -45
- package/cjs/scrollingTimer.js +15 -37
- package/cjs/system.js +30 -47
- package/cjs/timeUtils.js +24 -42
- package/cjs/utils.js +237 -101
- package/cjs/validations.js +35 -48
- package/esm/capitalize.js +3 -6
- package/esm/compose.js +29 -11
- package/esm/getComponentFromProps.js +22 -18
- package/esm/hooks/index.js +18 -40
- package/esm/hooks/useCancellableDelayedCallback.js +14 -12
- package/esm/hooks/useDerivedStateFromProps.js +31 -15
- package/esm/hooks/useExecutionTimer.js +20 -12
- package/esm/hooks/useExpandState.js +72 -36
- package/esm/hooks/useHotkeys.js +14 -11
- package/esm/hooks/useHoverHandlersDelay.js +12 -15
- package/esm/hooks/useOnElementResize.js +20 -12
- package/esm/hooks/useParentElement.js +7 -9
- package/esm/hooks/usePrevious.js +6 -10
- package/esm/hooks/useResizeObserver.js +15 -20
- package/esm/hooks/useSetRef.js +6 -8
- package/esm/hooks/useShouldRecalculate.js +11 -11
- package/esm/hooks/useWindowScrollerList.js +29 -20
- package/esm/hooks/useWindowSize.js +15 -18
- package/esm/index.js +31 -204
- package/esm/onClickHandlerForNonInteractiveElements.js +17 -17
- package/esm/operators.js +34 -27
- package/esm/platform.js +4 -8
- package/esm/reactTypesUtility.js +9 -16
- package/esm/scrollingTimer.js +11 -8
- package/esm/system.js +22 -16
- package/esm/timeUtils.js +19 -13
- package/esm/utils.js +72 -109
- package/esm/validations.js +28 -18
- package/package.json +1 -1
- package/types/compose.d.ts +1 -2
- package/types/getComponentFromProps.d.ts +1 -2
- package/types/hooks/index.d.ts +14 -14
- package/types/hooks/useCancellableDelayedCallback.d.ts +1 -2
- package/types/hooks/useDerivedStateFromProps.d.ts +1 -2
- package/types/hooks/useExecutionTimer.d.ts +1 -2
- package/types/hooks/useExpandState.d.ts +2 -3
- package/types/hooks/useHotkeys.d.ts +2 -3
- package/types/hooks/useHoverHandlersDelay.d.ts +2 -3
- package/types/hooks/usePrevious.d.ts +1 -1
- package/types/hooks/useResizeObserver.d.ts +1 -2
- package/types/hooks/useShouldRecalculate.d.ts +1 -2
- package/types/hooks/useWindowScrollerList.d.ts +2 -3
- package/types/hooks/useWindowSize.d.ts +1 -2
- package/types/index.d.ts +11 -11
- package/types/onClickHandlerForNonInteractiveElements.d.ts +7 -7
- package/types/scrollingTimer.d.ts +1 -1
- package/cjs/capitalize.js.map +0 -7
- package/cjs/compose.js.map +0 -7
- package/cjs/getComponentFromProps.js.map +0 -7
- package/cjs/hooks/index.js.map +0 -7
- package/cjs/hooks/useCancellableDelayedCallback.js.map +0 -7
- package/cjs/hooks/useDerivedStateFromProps.js.map +0 -7
- package/cjs/hooks/useExecutionTimer.js.map +0 -7
- package/cjs/hooks/useExpandState.js.map +0 -7
- package/cjs/hooks/useHotkeys.js.map +0 -7
- package/cjs/hooks/useHoverHandlersDelay.js.map +0 -7
- package/cjs/hooks/useOnElementResize.js.map +0 -7
- package/cjs/hooks/useParentElement.js.map +0 -7
- package/cjs/hooks/usePrevious.js.map +0 -7
- package/cjs/hooks/useResizeObserver.js.map +0 -7
- package/cjs/hooks/useSetRef.js.map +0 -7
- package/cjs/hooks/useShouldRecalculate.js.map +0 -7
- package/cjs/hooks/useWindowScrollerList.js.map +0 -7
- package/cjs/hooks/useWindowSize.js.map +0 -7
- package/cjs/index.js.map +0 -7
- package/cjs/onClickHandlerForNonInteractiveElements.js.map +0 -7
- package/cjs/operators.js.map +0 -7
- package/cjs/platform.js.map +0 -7
- package/cjs/reactTypesUtility.js.map +0 -7
- package/cjs/scrollingTimer.js.map +0 -7
- package/cjs/system.js.map +0 -7
- package/cjs/timeUtils.js.map +0 -7
- package/cjs/utils.js.map +0 -7
- package/cjs/validations.js.map +0 -7
- package/esm/capitalize.js.map +0 -7
- package/esm/compose.js.map +0 -7
- package/esm/getComponentFromProps.js.map +0 -7
- package/esm/hooks/index.js.map +0 -7
- package/esm/hooks/useCancellableDelayedCallback.js.map +0 -7
- package/esm/hooks/useDerivedStateFromProps.js.map +0 -7
- package/esm/hooks/useExecutionTimer.js.map +0 -7
- package/esm/hooks/useExpandState.js.map +0 -7
- package/esm/hooks/useHotkeys.js.map +0 -7
- package/esm/hooks/useHoverHandlersDelay.js.map +0 -7
- package/esm/hooks/useOnElementResize.js.map +0 -7
- package/esm/hooks/useParentElement.js.map +0 -7
- package/esm/hooks/usePrevious.js.map +0 -7
- package/esm/hooks/useResizeObserver.js.map +0 -7
- package/esm/hooks/useSetRef.js.map +0 -7
- package/esm/hooks/useShouldRecalculate.js.map +0 -7
- package/esm/hooks/useWindowScrollerList.js.map +0 -7
- package/esm/hooks/useWindowSize.js.map +0 -7
- package/esm/index.js.map +0 -7
- package/esm/onClickHandlerForNonInteractiveElements.js.map +0 -7
- package/esm/operators.js.map +0 -7
- package/esm/platform.js.map +0 -7
- package/esm/reactTypesUtility.js.map +0 -7
- package/esm/scrollingTimer.js.map +0 -7
- package/esm/system.js.map +0 -7
- package/esm/timeUtils.js.map +0 -7
- package/esm/utils.js.map +0 -7
- package/esm/validations.js.map +0 -7
|
@@ -1,16 +1,34 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
2
|
+
import { useState, useRef } from 'react';
|
|
3
|
+
import 'core-js/modules/esnext.async-iterator.filter.js';
|
|
4
|
+
import 'core-js/modules/esnext.iterator.filter.js';
|
|
5
|
+
import '@babel/runtime/helpers/esm/defineProperty';
|
|
6
|
+
import 'core-js/modules/esnext.async-iterator.reduce.js';
|
|
7
|
+
import 'core-js/modules/esnext.iterator.constructor.js';
|
|
8
|
+
import 'core-js/modules/esnext.iterator.reduce.js';
|
|
9
|
+
import 'core-js/modules/esnext.async-iterator.for-each.js';
|
|
10
|
+
import 'core-js/modules/esnext.iterator.for-each.js';
|
|
11
|
+
import { isFunction, isEqual } from 'lodash';
|
|
12
|
+
|
|
13
|
+
const defaultPropUpdateOnChange = prop => prop;
|
|
14
|
+
|
|
15
|
+
function defaultShouldUpdate(_ref) {
|
|
16
|
+
let {
|
|
17
|
+
prop,
|
|
18
|
+
prevProp,
|
|
19
|
+
stateValue
|
|
20
|
+
} = _ref;
|
|
6
21
|
return !isEqual(prop, prevProp) && !isEqual(prop, stateValue);
|
|
7
22
|
}
|
|
23
|
+
|
|
8
24
|
function setStateWithUpdate(onUpdate, setState) {
|
|
9
|
-
return
|
|
10
|
-
setState(
|
|
25
|
+
return state => {
|
|
26
|
+
setState(prevState => onUpdate(isFunction(state) ? state(prevState) : state, prevState));
|
|
11
27
|
};
|
|
12
28
|
}
|
|
13
|
-
|
|
29
|
+
|
|
30
|
+
function useDerivedStateFromProp(prop) {
|
|
31
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
14
32
|
const {
|
|
15
33
|
onUpdate = defaultPropUpdateOnChange,
|
|
16
34
|
shouldUpdate = defaultShouldUpdate,
|
|
@@ -19,6 +37,7 @@ const useDerivedStateFromProps = (prop, options = {}) => {
|
|
|
19
37
|
const [stateValue, setState] = useState(onUpdate(prop, {}));
|
|
20
38
|
const handleSetState = updateOnStateChange ? setStateWithUpdate(onUpdate, setState) : setState;
|
|
21
39
|
const prevProp = useRef(prop);
|
|
40
|
+
|
|
22
41
|
if (shouldUpdate({
|
|
23
42
|
prop,
|
|
24
43
|
prevProp: prevProp.current,
|
|
@@ -27,12 +46,9 @@ const useDerivedStateFromProps = (prop, options = {}) => {
|
|
|
27
46
|
const nextProp = onUpdate(prop, prevProp.current);
|
|
28
47
|
setState(nextProp);
|
|
29
48
|
}
|
|
49
|
+
|
|
30
50
|
prevProp.current = prop;
|
|
31
51
|
return [stateValue, handleSetState];
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export {
|
|
35
|
-
useDerivedStateFromProps_default as default,
|
|
36
|
-
useDerivedStateFromProps
|
|
37
|
-
};
|
|
38
|
-
//# sourceMappingURL=useDerivedStateFromProps.js.map
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export { useDerivedStateFromProp as default };
|
|
@@ -1,21 +1,29 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { useRef } from
|
|
3
|
-
|
|
1
|
+
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
2
|
+
import { useRef } from 'react';
|
|
3
|
+
|
|
4
|
+
function useExecutionDelay(startFn, cleanFn, delayTime) {
|
|
4
5
|
const startTimer = useRef();
|
|
5
6
|
const closeTimer = useRef();
|
|
6
|
-
|
|
7
|
+
|
|
8
|
+
const startFunction = function () {
|
|
9
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
10
|
+
args[_key] = arguments[_key];
|
|
11
|
+
}
|
|
12
|
+
|
|
7
13
|
clearTimeout(closeTimer.current);
|
|
8
14
|
startTimer.current = setTimeout(() => startFn(...args), delayTime);
|
|
9
15
|
};
|
|
10
|
-
|
|
16
|
+
|
|
17
|
+
const cleanFunction = function () {
|
|
18
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
19
|
+
args[_key2] = arguments[_key2];
|
|
20
|
+
}
|
|
21
|
+
|
|
11
22
|
clearTimeout(startTimer.current);
|
|
12
23
|
closeTimer.current = setTimeout(() => cleanFn(...args), 30);
|
|
13
24
|
};
|
|
25
|
+
|
|
14
26
|
return [startFunction, cleanFunction];
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export {
|
|
18
|
-
useExecutionTimer_default as default,
|
|
19
|
-
useExecutionTimer
|
|
20
|
-
};
|
|
21
|
-
//# sourceMappingURL=useExecutionTimer.js.map
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export { useExecutionDelay as default };
|
|
@@ -1,79 +1,119 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
1
|
+
import 'core-js/modules/esnext.async-iterator.filter.js';
|
|
2
|
+
import 'core-js/modules/esnext.iterator.filter.js';
|
|
3
|
+
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
4
|
+
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
5
|
+
import 'core-js/modules/esnext.async-iterator.for-each.js';
|
|
6
|
+
import 'core-js/modules/esnext.iterator.constructor.js';
|
|
7
|
+
import 'core-js/modules/esnext.iterator.for-each.js';
|
|
8
|
+
import { useMemo } from 'react';
|
|
9
|
+
import 'core-js/modules/esnext.async-iterator.reduce.js';
|
|
10
|
+
import 'core-js/modules/esnext.iterator.reduce.js';
|
|
11
|
+
import { isFunction } from 'lodash';
|
|
12
|
+
import useDerivedStateFromProp from './useDerivedStateFromProps.js';
|
|
13
|
+
|
|
14
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
15
|
+
|
|
16
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
17
|
+
|
|
5
18
|
const toggleStateInObject = (obj, key, value) => {
|
|
6
|
-
const nextObj = {
|
|
19
|
+
const nextObj = _objectSpread({}, obj);
|
|
20
|
+
|
|
7
21
|
if (nextObj[key]) {
|
|
8
22
|
delete nextObj[key];
|
|
9
23
|
} else {
|
|
10
24
|
nextObj[key] = value;
|
|
11
25
|
}
|
|
26
|
+
|
|
12
27
|
return nextObj;
|
|
13
28
|
};
|
|
29
|
+
|
|
14
30
|
const noop = () => null;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
31
|
+
|
|
32
|
+
function useExpandState(_ref) {
|
|
33
|
+
let {
|
|
34
|
+
items = [],
|
|
35
|
+
itemKey = 'id',
|
|
36
|
+
expanded: expandedProp = {},
|
|
37
|
+
onExpand,
|
|
38
|
+
onExpandChange = noop,
|
|
39
|
+
onExpandAll = noop,
|
|
40
|
+
onToggleExpand,
|
|
41
|
+
onCollapse
|
|
42
|
+
} = _ref;
|
|
43
|
+
const [expanded, setExpanded] = useDerivedStateFromProp(expandedProp);
|
|
26
44
|
const isExpandedAll = useMemo(() => Object.keys(expanded).length === items.length, [expanded, items]);
|
|
27
|
-
|
|
45
|
+
|
|
46
|
+
const toggleExpandAll = function () {
|
|
47
|
+
let stateData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
28
48
|
setExpanded(() => {
|
|
29
49
|
const nextState = {};
|
|
50
|
+
|
|
30
51
|
if (!isExpandedAll) {
|
|
31
|
-
items.forEach(
|
|
52
|
+
items.forEach(item => {
|
|
32
53
|
nextState[item[itemKey]] = stateData;
|
|
33
54
|
});
|
|
34
55
|
}
|
|
56
|
+
|
|
35
57
|
onExpandChange(nextState);
|
|
36
58
|
onExpandAll(nextState);
|
|
37
59
|
return nextState;
|
|
38
60
|
});
|
|
39
61
|
};
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
62
|
+
|
|
63
|
+
const expand = function (item) {
|
|
64
|
+
let stateData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
65
|
+
if (!item) return;
|
|
66
|
+
|
|
43
67
|
if (isFunction(onExpand)) {
|
|
44
68
|
onExpand(item);
|
|
45
69
|
}
|
|
46
|
-
|
|
70
|
+
|
|
71
|
+
setExpanded(prevState => {
|
|
47
72
|
const key = item[itemKey];
|
|
48
|
-
|
|
73
|
+
|
|
74
|
+
const nextState = _objectSpread(_objectSpread({}, prevState), {}, {
|
|
75
|
+
[key]: stateData
|
|
76
|
+
});
|
|
77
|
+
|
|
49
78
|
onExpandChange(nextState, item);
|
|
50
79
|
return nextState;
|
|
51
80
|
});
|
|
52
81
|
};
|
|
53
|
-
|
|
82
|
+
|
|
83
|
+
const toggleExpand = function (item) {
|
|
84
|
+
let stateData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
85
|
+
|
|
54
86
|
if (isFunction(onToggleExpand)) {
|
|
55
87
|
onToggleExpand(item);
|
|
56
88
|
}
|
|
57
|
-
|
|
89
|
+
|
|
90
|
+
setExpanded(prevState => {
|
|
58
91
|
const key = item[itemKey];
|
|
59
92
|
const nextState = toggleStateInObject(prevState, key, stateData);
|
|
60
93
|
onExpandChange(nextState, item);
|
|
61
94
|
return nextState;
|
|
62
95
|
});
|
|
63
96
|
};
|
|
64
|
-
|
|
97
|
+
|
|
98
|
+
const collapse = item => {
|
|
65
99
|
if (isFunction(onCollapse)) {
|
|
66
100
|
onCollapse(item);
|
|
67
101
|
}
|
|
68
|
-
|
|
69
|
-
|
|
102
|
+
|
|
103
|
+
setExpanded(prevState => {
|
|
104
|
+
const nextState = _objectSpread({}, prevState);
|
|
105
|
+
|
|
70
106
|
delete nextState[item[itemKey]];
|
|
71
107
|
onExpandChange(nextState, item);
|
|
72
108
|
return nextState;
|
|
73
109
|
});
|
|
74
110
|
};
|
|
111
|
+
|
|
75
112
|
return {
|
|
76
|
-
state: {
|
|
113
|
+
state: {
|
|
114
|
+
expanded,
|
|
115
|
+
isExpandedAll
|
|
116
|
+
},
|
|
77
117
|
actions: {
|
|
78
118
|
expand,
|
|
79
119
|
toggleExpandAll,
|
|
@@ -82,10 +122,6 @@ const useExpandState = ({
|
|
|
82
122
|
},
|
|
83
123
|
setExpanded
|
|
84
124
|
};
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
export {
|
|
88
|
-
useExpandState_default as default,
|
|
89
|
-
useExpandState
|
|
90
|
-
};
|
|
91
|
-
//# sourceMappingURL=useExpandState.js.map
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export { useExpandState as default };
|
package/esm/hooks/useHotkeys.js
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
import
|
|
2
|
-
import hotkeys from
|
|
3
|
-
import { useCallback, useEffect } from
|
|
4
|
-
|
|
1
|
+
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
2
|
+
import hotkeys from 'hotkeys-js';
|
|
3
|
+
import { useCallback, useEffect } from 'react';
|
|
4
|
+
|
|
5
|
+
function useHotkeys(_ref) {
|
|
6
|
+
let {
|
|
7
|
+
keys,
|
|
8
|
+
handler,
|
|
9
|
+
options = {}
|
|
10
|
+
} = _ref;
|
|
11
|
+
let deps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
5
12
|
const memoizedCallback = useCallback(handler, deps);
|
|
6
13
|
useEffect(() => {
|
|
7
14
|
hotkeys(keys, options, memoizedCallback);
|
|
8
15
|
return () => hotkeys.unbind(keys);
|
|
9
16
|
}, [memoizedCallback]);
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export {
|
|
13
|
-
useHotkeys_default as default,
|
|
14
|
-
useHotkeys
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=useHotkeys.js.map
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { useHotkeys as default };
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { useRef, useCallback } from 'react';
|
|
2
|
+
|
|
3
|
+
function useHoverHandlersDelay(_ref) {
|
|
4
|
+
let {
|
|
5
|
+
onMouseOver,
|
|
6
|
+
onMouseLeave,
|
|
7
|
+
hideDelay = 300,
|
|
8
|
+
showDelay = 300
|
|
9
|
+
} = _ref;
|
|
9
10
|
const hideTimer = useRef();
|
|
10
11
|
const showTimer = useRef();
|
|
11
12
|
const delayedHide = useCallback(() => {
|
|
@@ -20,10 +21,6 @@ const useHoverHandlersDelay = ({
|
|
|
20
21
|
onMouseOver: delayedShow,
|
|
21
22
|
onMouseLeave: delayedHide
|
|
22
23
|
};
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export {
|
|
26
|
-
useHoverHandlersDelay_default as default,
|
|
27
|
-
useHoverHandlersDelay
|
|
28
|
-
};
|
|
29
|
-
//# sourceMappingURL=useHoverHandlersDelay.js.map
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export { useHoverHandlersDelay as default };
|
|
@@ -1,17 +1,27 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { useState,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
2
|
+
import { useState, useRef, useEffect, useMemo } from 'react';
|
|
3
|
+
|
|
4
|
+
// Taken and modified from https://stackoverflow.com/a/60218754
|
|
5
|
+
|
|
6
|
+
const useOnElementResize = targetRef => {
|
|
7
|
+
var _targetRef$current, _targetRef$current2;
|
|
8
|
+
|
|
9
|
+
const [width, setWidth] = useState(targetRef.current ? (_targetRef$current = targetRef.current) === null || _targetRef$current === void 0 ? void 0 : _targetRef$current.offsetWidth : 0);
|
|
10
|
+
const [height, setHeight] = useState(targetRef.current ? (_targetRef$current2 = targetRef.current) === null || _targetRef$current2 === void 0 ? void 0 : _targetRef$current2.offsetWidth : 0);
|
|
6
11
|
const observer = useRef(null);
|
|
7
12
|
useEffect(() => {
|
|
8
13
|
function outputsize() {
|
|
9
|
-
|
|
10
|
-
|
|
14
|
+
var _targetRef$current3, _targetRef$current4;
|
|
15
|
+
|
|
16
|
+
setWidth((_targetRef$current3 = targetRef.current) === null || _targetRef$current3 === void 0 ? void 0 : _targetRef$current3.offsetWidth);
|
|
17
|
+
setHeight((_targetRef$current4 = targetRef.current) === null || _targetRef$current4 === void 0 ? void 0 : _targetRef$current4.offsetHeight);
|
|
11
18
|
}
|
|
19
|
+
|
|
12
20
|
observer.current = new ResizeObserver(outputsize).observe(targetRef.current);
|
|
13
21
|
return () => {
|
|
14
|
-
|
|
22
|
+
var _observer$current;
|
|
23
|
+
|
|
24
|
+
(_observer$current = observer.current) === null || _observer$current === void 0 ? void 0 : _observer$current.disconnect();
|
|
15
25
|
};
|
|
16
26
|
}, [targetRef]);
|
|
17
27
|
return useMemo(() => ({
|
|
@@ -19,7 +29,5 @@ const useOnElementResize = (targetRef) => {
|
|
|
19
29
|
height
|
|
20
30
|
}), [width, height]);
|
|
21
31
|
};
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=useOnElementResize.js.map
|
|
32
|
+
|
|
33
|
+
export { useOnElementResize };
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
3
|
+
|
|
4
|
+
const useParentElement = ref => {
|
|
4
5
|
const [parent, setParent] = useState(ref.current);
|
|
5
6
|
useEffect(() => {
|
|
6
|
-
if (ref.current)
|
|
7
|
-
setParent(ref.current.parentNode);
|
|
7
|
+
if (ref.current) setParent(ref.current.parentNode);
|
|
8
8
|
});
|
|
9
9
|
return parent;
|
|
10
10
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=useParentElement.js.map
|
|
11
|
+
|
|
12
|
+
export { useParentElement };
|
package/esm/hooks/usePrevious.js
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { useRef, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
function usePrevious(value) {
|
|
4
4
|
const ref = useRef();
|
|
5
5
|
useEffect(() => {
|
|
6
6
|
ref.current = value;
|
|
7
7
|
}, [value]);
|
|
8
8
|
return ref.current;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export {
|
|
12
|
-
usePrevious_default as default,
|
|
13
|
-
usePrevious
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=usePrevious.js.map
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { usePrevious as default };
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import raf from
|
|
4
|
-
import ResizeObserver from
|
|
5
|
-
|
|
1
|
+
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
3
|
+
import raf from 'raf';
|
|
4
|
+
import ResizeObserver from 'resize-observer-polyfill';
|
|
5
|
+
|
|
6
|
+
function useResizeObserver(handler, el) {
|
|
6
7
|
const [node, setRef] = useState(el);
|
|
7
|
-
const resizeObserver = new ResizeObserver(
|
|
8
|
-
if (!Array.isArray(entries))
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const entry = entries[0];
|
|
8
|
+
const resizeObserver = new ResizeObserver(entries => {
|
|
9
|
+
if (!Array.isArray(entries)) return;
|
|
10
|
+
if (!entries.length) return;
|
|
11
|
+
const entry = entries[0]; // execute on the next animation frame
|
|
12
|
+
|
|
13
13
|
raf(() => handler({
|
|
14
14
|
width: entry.target.offsetWidth,
|
|
15
15
|
height: entry.target.offsetHeight
|
|
@@ -17,15 +17,10 @@ const useResizeObserver = (handler, el) => {
|
|
|
17
17
|
});
|
|
18
18
|
const htmlEl = el || node;
|
|
19
19
|
useEffect(() => {
|
|
20
|
-
if (htmlEl)
|
|
21
|
-
resizeObserver.observe(htmlEl);
|
|
20
|
+
if (htmlEl) resizeObserver.observe(htmlEl);
|
|
22
21
|
return () => htmlEl && resizeObserver.unobserve(htmlEl);
|
|
23
22
|
}, [htmlEl]);
|
|
24
23
|
return [setRef];
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export {
|
|
28
|
-
useResizeObserver_default as default,
|
|
29
|
-
useResizeObserver
|
|
30
|
-
};
|
|
31
|
-
//# sourceMappingURL=useResizeObserver.js.map
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export { useResizeObserver as default };
|
package/esm/hooks/useSetRef.js
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
const useSetRef =
|
|
1
|
+
import { useRef, useCallback } from 'react';
|
|
2
|
+
|
|
3
|
+
const useSetRef = initial => {
|
|
4
4
|
const ref = useRef(initial);
|
|
5
|
-
const setRef = useCallback(
|
|
5
|
+
const setRef = useCallback(node => {
|
|
6
6
|
ref.current = node;
|
|
7
7
|
}, []);
|
|
8
8
|
return [ref, setRef];
|
|
9
9
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=useSetRef.js.map
|
|
10
|
+
|
|
11
|
+
export { useSetRef };
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { useRef } from 'react';
|
|
2
|
+
|
|
3
|
+
function useShouldRecalculate(bool) {
|
|
4
4
|
const prevValueRef = useRef(0);
|
|
5
|
+
|
|
5
6
|
if (!bool) {
|
|
7
|
+
// If we need to recalculate, change the value we return
|
|
6
8
|
prevValueRef.current += 1;
|
|
7
|
-
}
|
|
9
|
+
} // else we return the same value as the previous render, which won't trigger a recalculation
|
|
10
|
+
|
|
11
|
+
|
|
8
12
|
return prevValueRef.current;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export {
|
|
12
|
-
useShouldRecalculate_default as default,
|
|
13
|
-
useShouldRecalculate
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=useShouldRecalculate.js.map
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { useShouldRecalculate as default };
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
function getScrollOffset(
|
|
1
|
+
import { useRef, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
function getScrollOffset() {
|
|
4
|
+
let element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
|
5
|
+
scrollTop: 0,
|
|
6
|
+
scrollLeft: 0
|
|
7
|
+
};
|
|
4
8
|
return {
|
|
5
9
|
top: element.scrollTop,
|
|
6
10
|
left: element.scrollLeft
|
|
7
11
|
};
|
|
8
12
|
}
|
|
13
|
+
|
|
9
14
|
function getPositionOffset(listEl, scrollableEl) {
|
|
10
15
|
const scrollOffset = getScrollOffset(scrollableEl);
|
|
11
16
|
const elementRect = listEl.getBoundingClientRect();
|
|
@@ -15,40 +20,44 @@ function getPositionOffset(listEl, scrollableEl) {
|
|
|
15
20
|
left: elementRect.left + scrollOffset.top - containerRect.left
|
|
16
21
|
};
|
|
17
22
|
}
|
|
23
|
+
|
|
18
24
|
function isParent(parentNode, childNode) {
|
|
19
25
|
return childNode.parentNode === parentNode || childNode.parentNode && isParent(parentNode, childNode.parentNode);
|
|
20
26
|
}
|
|
21
|
-
|
|
27
|
+
|
|
28
|
+
function useWindowScrollerList(_ref) {
|
|
29
|
+
let {
|
|
30
|
+
listInstance,
|
|
31
|
+
outerListRef
|
|
32
|
+
} = _ref;
|
|
22
33
|
const scrollableParent = useRef();
|
|
23
34
|
const listOffset = useRef();
|
|
35
|
+
|
|
24
36
|
const getElementOffset = () => {
|
|
25
37
|
listOffset.current = getPositionOffset(outerListRef.current, scrollableParent.current);
|
|
26
38
|
};
|
|
27
|
-
|
|
39
|
+
|
|
40
|
+
const handleScroll = e => {
|
|
28
41
|
if (!scrollableParent.current) {
|
|
29
42
|
const containerTarget = e.target === document ? document.body : e.target;
|
|
30
43
|
scrollableParent.current = isParent(containerTarget, outerListRef.current) && containerTarget;
|
|
31
44
|
}
|
|
32
|
-
|
|
33
|
-
|
|
45
|
+
|
|
46
|
+
if (!scrollableParent.current) return;
|
|
34
47
|
getElementOffset();
|
|
35
48
|
const scrollOffset = getScrollOffset(scrollableParent.current);
|
|
36
49
|
const scrollTop = Math.max(0, scrollOffset.top - listOffset.current.top);
|
|
37
|
-
if (listInstance.current)
|
|
38
|
-
listInstance.current.scrollTo(scrollTop);
|
|
50
|
+
if (listInstance.current) listInstance.current.scrollTo(scrollTop);
|
|
39
51
|
};
|
|
52
|
+
|
|
40
53
|
useEffect(() => {
|
|
41
|
-
window.addEventListener(
|
|
42
|
-
window.addEventListener(
|
|
54
|
+
window.addEventListener('scroll', handleScroll, true);
|
|
55
|
+
window.addEventListener('resize', getElementOffset, true);
|
|
43
56
|
return () => {
|
|
44
|
-
window.removeEventListener(
|
|
45
|
-
window.removeEventListener(
|
|
57
|
+
window.removeEventListener('scroll', handleScroll, true);
|
|
58
|
+
window.removeEventListener('resize', getElementOffset, true);
|
|
46
59
|
};
|
|
47
60
|
}, []);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export {
|
|
51
|
-
useWindowScrollerList_default as default,
|
|
52
|
-
useWindowScrollerList
|
|
53
|
-
};
|
|
54
|
-
//# sourceMappingURL=useWindowScrollerList.js.map
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export { useWindowScrollerList as default };
|
|
@@ -1,28 +1,25 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
2
|
+
import { useState, useLayoutEffect } from 'react';
|
|
3
|
+
|
|
4
|
+
function useWindowSize() {
|
|
4
5
|
const [size, setSize] = useState([0, 0]);
|
|
5
6
|
useLayoutEffect(() => {
|
|
6
|
-
if (!window)
|
|
7
|
-
|
|
7
|
+
if (!window) return false;
|
|
8
|
+
|
|
8
9
|
function updateSize() {
|
|
9
10
|
setSize([window.innerWidth, window.innerHeight]);
|
|
10
11
|
}
|
|
11
|
-
|
|
12
|
-
window.addEventListener(
|
|
12
|
+
|
|
13
|
+
window.addEventListener('resize', updateSize);
|
|
14
|
+
window.addEventListener('orientationchange', updateSize);
|
|
13
15
|
updateSize();
|
|
14
16
|
return () => {
|
|
15
|
-
window.removeEventListener(
|
|
16
|
-
window.removeEventListener(
|
|
17
|
+
window.removeEventListener('resize', updateSize);
|
|
18
|
+
window.removeEventListener('orientationchange', updateSize);
|
|
17
19
|
};
|
|
18
20
|
}, []);
|
|
19
|
-
if (!window)
|
|
20
|
-
return false;
|
|
21
|
+
if (!window) return false;
|
|
21
22
|
return size;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export {
|
|
25
|
-
useWindowSize_default as default,
|
|
26
|
-
useWindowSize
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=useWindowSize.js.map
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export { useWindowSize as default };
|