@elliemae/ds-utilities 2.0.0-next.9 → 2.0.0-rc.1

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 (47) hide show
  1. package/cjs/compose.js +11 -2
  2. package/cjs/getComponentFromProps.js +7 -1
  3. package/cjs/hooks/index.js +31 -26
  4. package/cjs/hooks/useCancellableDelayedCallback.js +5 -1
  5. package/cjs/hooks/useDerivedStateFromProps.js +15 -6
  6. package/cjs/hooks/useExecutionTimer.js +10 -2
  7. package/cjs/hooks/useExpandState.js +25 -13
  8. package/cjs/hooks/useHotkeys.js +7 -5
  9. package/cjs/hooks/useHoverHandlersDelay.js +7 -6
  10. package/cjs/hooks/useOnElementResize.js +37 -0
  11. package/cjs/hooks/useParentElement.js +16 -0
  12. package/cjs/hooks/useSetRef.js +15 -0
  13. package/cjs/hooks/useWindowScrollerList.js +10 -8
  14. package/cjs/index.js +234 -0
  15. package/cjs/operators.js +2 -0
  16. package/cjs/scrollingTimer.js +5 -1
  17. package/cjs/system.js +13 -2
  18. package/cjs/timeUtils.js +7 -0
  19. package/cjs/utils.js +36 -9
  20. package/cjs/validations.js +22 -17
  21. package/esm/compose.js +11 -2
  22. package/esm/getComponentFromProps.js +7 -1
  23. package/esm/hooks/index.js +11 -19
  24. package/esm/hooks/useCancellableDelayedCallback.js +5 -1
  25. package/esm/hooks/useDerivedStateFromProps.js +15 -6
  26. package/esm/hooks/useExecutionTimer.js +10 -2
  27. package/esm/hooks/useExpandState.js +25 -13
  28. package/esm/hooks/useHotkeys.js +7 -5
  29. package/esm/hooks/useHoverHandlersDelay.js +7 -6
  30. package/esm/hooks/useOnElementResize.js +33 -0
  31. package/esm/hooks/useParentElement.js +12 -0
  32. package/esm/hooks/useSetRef.js +11 -0
  33. package/esm/hooks/useWindowScrollerList.js +10 -8
  34. package/esm/index.js +26 -0
  35. package/esm/operators.js +2 -0
  36. package/esm/scrollingTimer.js +5 -1
  37. package/esm/system.js +13 -2
  38. package/esm/timeUtils.js +7 -0
  39. package/esm/utils.js +36 -8
  40. package/esm/validations.js +22 -17
  41. package/package.json +13 -1
  42. package/types/hooks/index.d.ts +11 -3
  43. package/types/hooks/useOnElementResize.d.ts +2 -0
  44. package/types/hooks/useParentElement.d.ts +1 -0
  45. package/types/hooks/useSetRef.d.ts +2 -0
  46. package/types/index.d.ts +8 -0
  47. package/types/utils.d.ts +1 -2
package/cjs/compose.js CHANGED
@@ -2,6 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ require('core-js/modules/esnext.async-iterator.reduce.js');
6
+ require('core-js/modules/esnext.iterator.constructor.js');
7
+ require('core-js/modules/esnext.iterator.reduce.js');
5
8
  require('core-js/modules/web.dom-collections.iterator.js');
6
9
 
7
10
  /**
@@ -14,7 +17,11 @@ require('core-js/modules/web.dom-collections.iterator.js');
14
17
  * from right to left. For example, compose(f, g, h) is identical to doing
15
18
  * (...args) => f(g(h(...args))).
16
19
  */
17
- function compose(...funcs) {
20
+ function compose() {
21
+ for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {
22
+ funcs[_key] = arguments[_key];
23
+ }
24
+
18
25
  if (funcs.length === 0) {
19
26
  return arg => arg;
20
27
  }
@@ -23,7 +30,9 @@ function compose(...funcs) {
23
30
  return funcs[0];
24
31
  }
25
32
 
26
- return funcs.reduce((a, b) => (...args) => a(b(...args)));
33
+ return funcs.reduce((a, b) => function () {
34
+ return a(b(...arguments));
35
+ });
27
36
  }
28
37
 
29
38
  exports.compose = compose;
@@ -2,6 +2,11 @@
2
2
 
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  require('core-js/modules/web.dom-collections.iterator.js');
5
+ require('core-js/modules/esnext.async-iterator.filter.js');
6
+ require('core-js/modules/esnext.iterator.constructor.js');
7
+ require('core-js/modules/esnext.iterator.filter.js');
8
+ require('core-js/modules/esnext.async-iterator.for-each.js');
9
+ require('core-js/modules/esnext.iterator.for-each.js');
5
10
  var React = require('react');
6
11
  var jsxRuntime = require('react/jsx-runtime');
7
12
 
@@ -13,7 +18,8 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
13
18
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
14
19
 
15
20
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
16
- function getComponentFromProps(Component, props, children = []) {
21
+ function getComponentFromProps(Component, props) {
22
+ let children = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
17
23
  if (!Component) return null;
18
24
  const componentChildren = Component.props ? Array.isArray(Component.props.children) ? Component.props.children : [Component.props.children] : null;
19
25
  return typeof Component === 'function' ? /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread(_objectSpread({}, props), {}, {
@@ -2,15 +2,24 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- require('core-js/modules/web.dom-collections.iterator.js');
6
- var React = require('react');
7
5
  var useMeasure = require('use-measure');
8
6
  var useExecutionTimer = require('./useExecutionTimer.js');
7
+ var useExpandState = require('./useExpandState.js');
8
+ var useHotkeys = require('./useHotkeys.js');
9
+ var useHoverHandlersDelay = require('./useHoverHandlersDelay.js');
10
+ var useResizeObserver = require('./useResizeObserver.js');
11
+ var useShouldRecalculate = require('./useShouldRecalculate.js');
12
+ var useWindowScrollerList = require('./useWindowScrollerList.js');
13
+ var useWindowSize = require('./useWindowSize.js');
9
14
  var useForceUpdate = require('use-force-update');
10
15
  var useOnclickoutside = require('use-onclickoutside');
11
16
  var uncontrollable = require('uncontrollable');
12
17
  var usePrevious = require('./usePrevious.js');
13
18
  var useCancellableDelayedCallback = require('./useCancellableDelayedCallback.js');
19
+ var useDerivedStateFromProps = require('./useDerivedStateFromProps.js');
20
+ var useSetRef = require('./useSetRef.js');
21
+ var useParentElement = require('./useParentElement.js');
22
+ var useOnElementResize = require('./useOnElementResize.js');
14
23
 
15
24
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
25
 
@@ -18,39 +27,35 @@ var useMeasure__default = /*#__PURE__*/_interopDefaultLegacy(useMeasure);
18
27
  var useForceUpdate__default = /*#__PURE__*/_interopDefaultLegacy(useForceUpdate);
19
28
  var useOnclickoutside__default = /*#__PURE__*/_interopDefaultLegacy(useOnclickoutside);
20
29
 
21
- function useParentElement(ref) {
22
- const [parent, setParent] = React.useState(ref.current);
23
- React.useEffect(() => {
24
- if (ref.current) setParent(ref.current.parentNode);
25
- });
26
- return parent;
27
- }
28
- function useSetRef(initial) {
29
- const ref = React.useRef(initial);
30
- const setRef = React.useCallback(node => {
31
- ref.current = node;
32
- }, []);
33
- return [ref, setRef];
34
- }
30
+
35
31
 
36
32
  Object.defineProperty(exports, 'useMeasure', {
37
- enumerable: true,
38
- get: function () { return useMeasure__default["default"]; }
33
+ enumerable: true,
34
+ get: function () { return useMeasure__default["default"]; }
39
35
  });
40
36
  exports.useExecutionTimer = useExecutionTimer;
37
+ exports.useExpandState = useExpandState;
38
+ exports.useHotkeys = useHotkeys;
39
+ exports.useHoverHandlersDelay = useHoverHandlersDelay;
40
+ exports.useResizeObserver = useResizeObserver;
41
+ exports.useShouldRecalculate = useShouldRecalculate;
42
+ exports.useWindowScrollerList = useWindowScrollerList;
43
+ exports.useWindowSize = useWindowSize;
41
44
  Object.defineProperty(exports, 'useForceUpdate', {
42
- enumerable: true,
43
- get: function () { return useForceUpdate__default["default"]; }
45
+ enumerable: true,
46
+ get: function () { return useForceUpdate__default["default"]; }
44
47
  });
45
48
  Object.defineProperty(exports, 'useOnClickOutside', {
46
- enumerable: true,
47
- get: function () { return useOnclickoutside__default["default"]; }
49
+ enumerable: true,
50
+ get: function () { return useOnclickoutside__default["default"]; }
48
51
  });
49
52
  Object.defineProperty(exports, 'useUncontrolled', {
50
- enumerable: true,
51
- get: function () { return uncontrollable.useUncontrolled; }
53
+ enumerable: true,
54
+ get: function () { return uncontrollable.useUncontrolled; }
52
55
  });
53
56
  exports.usePrevious = usePrevious;
54
57
  exports.useCancellableDelayedCallback = useCancellableDelayedCallback;
55
- exports.useParentElement = useParentElement;
56
- exports.useSetRef = useSetRef;
58
+ exports.useDerivedStateFromProps = useDerivedStateFromProps;
59
+ exports.useSetRef = useSetRef.useSetRef;
60
+ exports.useParentElement = useParentElement.useParentElement;
61
+ exports.useOnElementResize = useOnElementResize.useOnElementResize;
@@ -13,7 +13,11 @@ function useCancellableDelayedCallback(cb, delay) {
13
13
  clearTimeout(timeoutId);
14
14
  }
15
15
  }, [timeoutRef]);
16
- const delayedCb = React.useCallback((...args) => {
16
+ const delayedCb = React.useCallback(function () {
17
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
18
+ args[_key] = arguments[_key];
19
+ }
20
+
17
21
  timeoutRef.current = setTimeout(() => cb(...args), delay);
18
22
  }, [cb, delay]);
19
23
  return [delayedCb, cancel];
@@ -3,15 +3,23 @@
3
3
  require('core-js/modules/web.dom-collections.iterator.js');
4
4
  var React = require('react');
5
5
  require('@babel/runtime/helpers/defineProperty');
6
+ require('core-js/modules/esnext.async-iterator.reduce.js');
7
+ require('core-js/modules/esnext.iterator.constructor.js');
8
+ require('core-js/modules/esnext.iterator.reduce.js');
9
+ require('core-js/modules/esnext.async-iterator.for-each.js');
10
+ require('core-js/modules/esnext.iterator.for-each.js');
11
+ require('core-js/modules/esnext.async-iterator.filter.js');
12
+ require('core-js/modules/esnext.iterator.filter.js');
6
13
  var lodash = require('lodash');
7
14
 
8
15
  const defaultPropUpdateOnChange = prop => prop;
9
16
 
10
- function defaultShouldUpdate({
11
- prop,
12
- prevProp,
13
- stateValue
14
- }) {
17
+ function defaultShouldUpdate(_ref) {
18
+ let {
19
+ prop,
20
+ prevProp,
21
+ stateValue
22
+ } = _ref;
15
23
  return !lodash.isEqual(prop, prevProp) && !lodash.isEqual(prop, stateValue);
16
24
  }
17
25
 
@@ -21,7 +29,8 @@ function setStateWithUpdate(onUpdate, setState) {
21
29
  };
22
30
  }
23
31
 
24
- function useDerivedStateFromProp(prop, options = {}) {
32
+ function useDerivedStateFromProp(prop) {
33
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
25
34
  const {
26
35
  onUpdate = defaultPropUpdateOnChange,
27
36
  shouldUpdate = defaultShouldUpdate,
@@ -7,12 +7,20 @@ function useExecutionDelay(startFn, cleanFn, delayTime) {
7
7
  const startTimer = React.useRef();
8
8
  const closeTimer = React.useRef();
9
9
 
10
- const startFunction = (...args) => {
10
+ const startFunction = function () {
11
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
12
+ args[_key] = arguments[_key];
13
+ }
14
+
11
15
  clearTimeout(closeTimer.current);
12
16
  startTimer.current = setTimeout(() => startFn(...args), delayTime);
13
17
  };
14
18
 
15
- const cleanFunction = (...args) => {
19
+ const cleanFunction = function () {
20
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
21
+ args[_key2] = arguments[_key2];
22
+ }
23
+
16
24
  clearTimeout(startTimer.current);
17
25
  closeTimer.current = setTimeout(() => cleanFn(...args), 30);
18
26
  };
@@ -2,7 +2,14 @@
2
2
 
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  require('core-js/modules/web.dom-collections.iterator.js');
5
+ require('core-js/modules/esnext.async-iterator.for-each.js');
6
+ require('core-js/modules/esnext.iterator.constructor.js');
7
+ require('core-js/modules/esnext.iterator.for-each.js');
8
+ require('core-js/modules/esnext.async-iterator.filter.js');
9
+ require('core-js/modules/esnext.iterator.filter.js');
5
10
  var React = require('react');
11
+ require('core-js/modules/esnext.async-iterator.reduce.js');
12
+ require('core-js/modules/esnext.iterator.reduce.js');
6
13
  var lodash = require('lodash');
7
14
  var useDerivedStateFromProps = require('./useDerivedStateFromProps.js');
8
15
 
@@ -28,20 +35,22 @@ const toggleStateInObject = (obj, key, value) => {
28
35
 
29
36
  const noop = () => null;
30
37
 
31
- function useExpandState({
32
- items = [],
33
- itemKey = 'id',
34
- expanded: expandedProp = {},
35
- onExpand,
36
- onExpandChange = noop,
37
- onExpandAll = noop,
38
- onToggleExpand,
39
- onCollapse
40
- }) {
38
+ function useExpandState(_ref) {
39
+ let {
40
+ items = [],
41
+ itemKey = 'id',
42
+ expanded: expandedProp = {},
43
+ onExpand,
44
+ onExpandChange = noop,
45
+ onExpandAll = noop,
46
+ onToggleExpand,
47
+ onCollapse
48
+ } = _ref;
41
49
  const [expanded, setExpanded] = useDerivedStateFromProps(expandedProp);
42
50
  const isExpandedAll = React.useMemo(() => Object.keys(expanded).length === items.length, [expanded, items]);
43
51
 
44
- const toggleExpandAll = (stateData = true) => {
52
+ const toggleExpandAll = function () {
53
+ let stateData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
45
54
  setExpanded(() => {
46
55
  const nextState = {};
47
56
 
@@ -57,7 +66,8 @@ function useExpandState({
57
66
  });
58
67
  };
59
68
 
60
- const expand = (item, stateData = true) => {
69
+ const expand = function (item) {
70
+ let stateData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
61
71
  if (!item) return;
62
72
 
63
73
  if (lodash.isFunction(onExpand)) {
@@ -76,7 +86,9 @@ function useExpandState({
76
86
  });
77
87
  };
78
88
 
79
- const toggleExpand = (item, stateData = true) => {
89
+ const toggleExpand = function (item) {
90
+ let stateData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
91
+
80
92
  if (lodash.isFunction(onToggleExpand)) {
81
93
  onToggleExpand(item);
82
94
  }
@@ -8,11 +8,13 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
8
8
 
9
9
  var hotkeys__default = /*#__PURE__*/_interopDefaultLegacy(hotkeys);
10
10
 
11
- function useHotkeys({
12
- keys,
13
- handler,
14
- options = {}
15
- }, deps = []) {
11
+ function useHotkeys(_ref) {
12
+ let {
13
+ keys,
14
+ handler,
15
+ options = {}
16
+ } = _ref;
17
+ let deps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
16
18
  const memoizedCallback = React.useCallback(handler, deps);
17
19
  React.useEffect(() => {
18
20
  hotkeys__default["default"](keys, options, memoizedCallback);
@@ -2,12 +2,13 @@
2
2
 
3
3
  var React = require('react');
4
4
 
5
- function useHoverHandlersDelay({
6
- onMouseOver,
7
- onMouseLeave,
8
- hideDelay = 300,
9
- showDelay = 300
10
- }) {
5
+ function useHoverHandlersDelay(_ref) {
6
+ let {
7
+ onMouseOver,
8
+ onMouseLeave,
9
+ hideDelay = 300,
10
+ showDelay = 300
11
+ } = _ref;
11
12
  const hideTimer = React.useRef();
12
13
  const showTimer = React.useRef();
13
14
  const delayedHide = React.useCallback(() => {
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ require('core-js/modules/web.dom-collections.iterator.js');
6
+ var React = require('react');
7
+
8
+ // Taken and modified from https://stackoverflow.com/a/60218754
9
+
10
+ const useOnElementResize = targetRef => {
11
+ var _targetRef$current, _targetRef$current2;
12
+
13
+ const [width, setWidth] = React.useState(targetRef.current ? (_targetRef$current = targetRef.current) === null || _targetRef$current === void 0 ? void 0 : _targetRef$current.offsetWidth : 0);
14
+ const [height, setHeight] = React.useState(targetRef.current ? (_targetRef$current2 = targetRef.current) === null || _targetRef$current2 === void 0 ? void 0 : _targetRef$current2.offsetWidth : 0);
15
+ const observer = React.useRef(null);
16
+ React.useEffect(() => {
17
+ function outputsize() {
18
+ var _targetRef$current3, _targetRef$current4;
19
+
20
+ setWidth((_targetRef$current3 = targetRef.current) === null || _targetRef$current3 === void 0 ? void 0 : _targetRef$current3.offsetWidth);
21
+ setHeight((_targetRef$current4 = targetRef.current) === null || _targetRef$current4 === void 0 ? void 0 : _targetRef$current4.offsetHeight);
22
+ }
23
+
24
+ observer.current = new ResizeObserver(outputsize).observe(targetRef.current);
25
+ return () => {
26
+ var _observer$current;
27
+
28
+ (_observer$current = observer.current) === null || _observer$current === void 0 ? void 0 : _observer$current.disconnect();
29
+ };
30
+ }, [targetRef]);
31
+ return React.useMemo(() => ({
32
+ width,
33
+ height
34
+ }), [width, height]);
35
+ };
36
+
37
+ exports.useOnElementResize = useOnElementResize;
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ require('core-js/modules/web.dom-collections.iterator.js');
6
+ var React = require('react');
7
+
8
+ const useParentElement = ref => {
9
+ const [parent, setParent] = React.useState(ref.current);
10
+ React.useEffect(() => {
11
+ if (ref.current) setParent(ref.current.parentNode);
12
+ });
13
+ return parent;
14
+ };
15
+
16
+ exports.useParentElement = useParentElement;
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+
7
+ const useSetRef = initial => {
8
+ const ref = React.useRef(initial);
9
+ const setRef = React.useCallback(node => {
10
+ ref.current = node;
11
+ }, []);
12
+ return [ref, setRef];
13
+ };
14
+
15
+ exports.useSetRef = useSetRef;
@@ -2,10 +2,11 @@
2
2
 
3
3
  var React = require('react');
4
4
 
5
- function getScrollOffset(element = {
6
- scrollTop: 0,
7
- scrollLeft: 0
8
- }) {
5
+ function getScrollOffset() {
6
+ let element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
7
+ scrollTop: 0,
8
+ scrollLeft: 0
9
+ };
9
10
  return {
10
11
  top: element.scrollTop,
11
12
  left: element.scrollLeft
@@ -26,10 +27,11 @@ function isParent(parentNode, childNode) {
26
27
  return childNode.parentNode === parentNode || childNode.parentNode && isParent(parentNode, childNode.parentNode);
27
28
  }
28
29
 
29
- function useWindowScrollerList({
30
- listInstance,
31
- outerListRef
32
- }) {
30
+ function useWindowScrollerList(_ref) {
31
+ let {
32
+ listInstance,
33
+ outerListRef
34
+ } = _ref;
33
35
  const scrollableParent = React.useRef();
34
36
  const listOffset = React.useRef();
35
37