@synerise/ds-utils 0.31.2 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/doubleClickListener/doubleClickListener.js +2 -3
  3. package/dist/focusWithArrowKeys/focusWithArrowKeys.js +0 -12
  4. package/dist/getInitials/getInitials.js +0 -3
  5. package/dist/getPopupContainer/getPopupContainer.js +0 -1
  6. package/dist/hexToRgba/hexToRgba.js +0 -1
  7. package/dist/regex/regex.js +0 -1
  8. package/dist/renderWithHighlight/renderWithHighlight.js +0 -5
  9. package/dist/selectColorByLetter/selectColorByLetter.js +0 -7
  10. package/dist/testing/index.d.ts +2 -0
  11. package/dist/testing/index.js +3 -1
  12. package/dist/testing/renderWithLocalesLoaded/renderWithLocalesLoaded.d.ts +10 -0
  13. package/dist/testing/renderWithLocalesLoaded/renderWithLocalesLoaded.js +30 -0
  14. package/dist/testing/renderWithProvider/renderWithProvider.d.ts +4 -2
  15. package/dist/testing/renderWithProvider/renderWithProvider.js +7 -19
  16. package/dist/testing/sleep.d.ts +1 -0
  17. package/dist/testing/sleep.js +8 -0
  18. package/dist/toCamelCase/toCamelCase.js +8 -4
  19. package/dist/useBreakpoint/useBreakpoint.js +7 -21
  20. package/dist/useCombinedRefs/useCombinedRefs.js +0 -4
  21. package/dist/useElementInView/useElementInView.js +4 -19
  22. package/dist/useOnClickOutside/useOnClickOutside.js +1 -7
  23. package/dist/useOverscrollBlock/useOverscrollBlock.js +0 -5
  24. package/dist/usePrevious/usePrevious.js +0 -2
  25. package/dist/useResize/useResize.js +5 -12
  26. package/dist/useResizeObserver/useResizeObserver.d.ts +1 -1
  27. package/dist/useResizeObserver/useResizeObserver.js +8 -9
  28. package/dist/useResizeToFit/useResizeToFit.js +1 -4
  29. package/dist/useSearchResults/search.utils.js +0 -1
  30. package/dist/useSearchResults/useSearchResults.js +2 -18
  31. package/dist/useTraceUpdate/index.js +3 -6
  32. package/package.json +5 -5
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [0.32.0](https://github.com/synerise/synerise-design/compare/@synerise/ds-utils@0.31.2...@synerise/ds-utils@0.32.0) (2025-01-29)
7
+
8
+
9
+ ### Features
10
+
11
+ * antd@4.24 react@18 ([d97a667](https://github.com/synerise/synerise-design/commit/d97a667b1f33aed3177e1851de3b6f60be2d46a6))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [0.31.2](https://github.com/synerise/synerise-design/compare/@synerise/ds-utils@0.31.1...@synerise/ds-utils@0.31.2) (2024-11-21)
7
18
 
8
19
 
@@ -1,10 +1,10 @@
1
- var DEFAULT_DELAY = 250; // eslint-disable-next-line @typescript-eslint/no-explicit-any
1
+ var DEFAULT_DELAY = 250;
2
2
 
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
3
4
  function doubleClickListener(onClick, onDblClick, delay) {
4
5
  if (delay === void 0) {
5
6
  delay = DEFAULT_DELAY;
6
7
  }
7
-
8
8
  var timeout;
9
9
  return function (event) {
10
10
  if (!timeout) {
@@ -19,5 +19,4 @@ function doubleClickListener(onClick, onDblClick, delay) {
19
19
  }
20
20
  };
21
21
  }
22
-
23
22
  export default doubleClickListener;
@@ -1,7 +1,6 @@
1
1
  var hasFocusableElementInside = function hasFocusableElementInside(element, query) {
2
2
  return element.querySelectorAll(query).length > 0;
3
3
  };
4
-
5
4
  var focusWithArrowKeys = function focusWithArrowKeys(keyDownEvent, focusableItemClass, fallback) {
6
5
  var selector = "." + focusableItemClass;
7
6
  var focusableElementsNodeList = document.querySelectorAll(selector);
@@ -9,11 +8,9 @@ var focusWithArrowKeys = function focusWithArrowKeys(keyDownEvent, focusableItem
9
8
  var activeElement = document.activeElement;
10
9
  var activeElementIndex = focusableElements.indexOf(activeElement);
11
10
  var isItemFocused = activeElement && activeElement.classList.contains(focusableItemClass);
12
-
13
11
  if (keyDownEvent.key === 'ArrowDown') {
14
12
  keyDownEvent.preventDefault();
15
13
  var elementToFocusOn;
16
-
17
14
  if (isItemFocused) {
18
15
  var nextSibling = activeElement.nextElementSibling;
19
16
  var hasFocusableChildren = hasFocusableElementInside(activeElement, selector);
@@ -21,38 +18,29 @@ var focusWithArrowKeys = function focusWithArrowKeys(keyDownEvent, focusableItem
21
18
  } else {
22
19
  elementToFocusOn = document.querySelector("." + focusableItemClass);
23
20
  }
24
-
25
21
  if (elementToFocusOn) {
26
22
  elementToFocusOn.focus();
27
23
  } else {
28
24
  fallback();
29
25
  }
30
-
31
26
  return;
32
27
  }
33
-
34
28
  if (keyDownEvent.key === 'ArrowUp') {
35
29
  keyDownEvent.preventDefault();
36
-
37
30
  var _elementToFocusOn;
38
-
39
31
  if (isItemFocused) {
40
32
  var prevSibling = activeElement.previousElementSibling;
41
33
  _elementToFocusOn = prevSibling !== null && !hasFocusableElementInside(prevSibling, selector) ? prevSibling : focusableElements[activeElementIndex - 1];
42
34
  }
43
-
44
35
  if (_elementToFocusOn) {
45
36
  _elementToFocusOn.focus();
46
37
  } else {
47
38
  fallback();
48
39
  }
49
-
50
40
  return;
51
41
  }
52
-
53
42
  if (keyDownEvent.key === 'Enter') {
54
43
  activeElement && activeElement.click();
55
44
  }
56
45
  };
57
-
58
46
  export default focusWithArrowKeys;
@@ -2,14 +2,11 @@ var getInitials = function getInitials(firstname, lastname) {
2
2
  if (firstname === void 0) {
3
3
  firstname = '';
4
4
  }
5
-
6
5
  if (lastname === void 0) {
7
6
  lastname = '';
8
7
  }
9
-
10
8
  var fName = typeof firstname === 'string' ? firstname : '';
11
9
  var lName = typeof lastname === 'string' ? lastname : '';
12
10
  return ("" + (fName[0] || '') + (lName[0] || '')).toUpperCase();
13
11
  };
14
-
15
12
  export default getInitials;
@@ -2,7 +2,6 @@ export function getClosest(elem, selector) {
2
2
  for (var node = elem; node && node !== document.body; node = node.parentElement) {
3
3
  if (node.matches(selector)) return node;
4
4
  }
5
-
6
5
  return null;
7
6
  }
8
7
  export function getPopupContainer(trigger) {
@@ -4,5 +4,4 @@ var hexToRgba = function hexToRgba(hex, alpha) {
4
4
  var b = parseInt(hex.substring(5, 7), 16);
5
5
  return "rgba(" + r + ", " + g + ", " + b + ", " + alpha + ")";
6
6
  };
7
-
8
7
  export default hexToRgba;
@@ -2,5 +2,4 @@
2
2
  var escapeRegEx = function escapeRegEx(s) {
3
3
  return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
4
4
  };
5
-
6
5
  export default escapeRegEx;
@@ -4,21 +4,16 @@ export var renderWithHighlight = function renderWithHighlight(name, highlight, c
4
4
  if (className === void 0) {
5
5
  className = 'string-highlight';
6
6
  }
7
-
8
7
  if (testId === void 0) {
9
8
  testId = 'string-highlight';
10
9
  }
11
-
12
10
  if (!highlight || highlight === '') {
13
11
  return name;
14
12
  }
15
-
16
13
  var index = name.toLocaleLowerCase().indexOf(highlight.toLocaleLowerCase());
17
-
18
14
  if (index === -1) {
19
15
  return name;
20
16
  }
21
-
22
17
  var escapedHighlight = escapeRegEx(highlight);
23
18
  var startOfQuery = name.toLocaleLowerCase().search(escapedHighlight.toLowerCase());
24
19
  var endOfQuery = startOfQuery + highlight.length;
@@ -1,17 +1,13 @@
1
1
  import { theme } from '@synerise/ds-core';
2
2
  import latinize from 'latinize';
3
3
  export var palette = ['blue', 'cyan', 'fern', 'green', 'orange', 'yellow', 'red', 'mars', 'pink', 'violet', 'purple'];
4
-
5
4
  function getColorByLetter() {
6
5
  var colors = {};
7
-
8
6
  for (var i = 0; i <= 25; i += 1) {
9
7
  colors[String.fromCharCode(i + 65)] = palette[i % palette.length];
10
8
  }
11
-
12
9
  return colors;
13
10
  }
14
-
15
11
  export var colorByLetter = getColorByLetter();
16
12
  export function getColor(colorString, forAvatar) {
17
13
  if (!forAvatar) return theme.palette[colorString];
@@ -20,13 +16,10 @@ export function getColor(colorString, forAvatar) {
20
16
  hue: colorString.split('-')[1]
21
17
  };
22
18
  }
23
-
24
19
  function selectColorByLetter(letter, forAvatar) {
25
20
  if (forAvatar === void 0) {
26
21
  forAvatar = false;
27
22
  }
28
-
29
23
  return typeof letter !== 'string' ? getColor('orange-500', forAvatar) : getColor((colorByLetter[latinize(letter.toUpperCase())] || 'orange') + "-500", forAvatar);
30
24
  }
31
-
32
25
  export default selectColorByLetter;
@@ -1 +1,3 @@
1
1
  export { default as renderWithProvider } from './renderWithProvider/renderWithProvider';
2
+ export { default as renderWithLocalesLoaded } from './renderWithLocalesLoaded/renderWithLocalesLoaded';
3
+ export { sleep } from './sleep';
@@ -1,2 +1,4 @@
1
1
  // eslint-disable-next-line import/prefer-default-export
2
- export { default as renderWithProvider } from './renderWithProvider/renderWithProvider';
2
+ export { default as renderWithProvider } from './renderWithProvider/renderWithProvider';
3
+ export { default as renderWithLocalesLoaded } from './renderWithLocalesLoaded/renderWithLocalesLoaded';
4
+ export { sleep } from './sleep';
@@ -0,0 +1,10 @@
1
+ import { ReactNode } from 'react';
2
+ import { RenderOptions, RenderResult } from '@testing-library/react';
3
+ import { DataFormatNotationType } from '@synerise/ds-data-format';
4
+ type Options = Omit<RenderOptions, 'queries'>;
5
+ declare const renderWithLocalesLoaded: (node: ReactNode, options?: Options, props?: {
6
+ locale?: string;
7
+ notation?: DataFormatNotationType;
8
+ timeZone?: string;
9
+ }) => Promise<RenderResult>;
10
+ export default renderWithLocalesLoaded;
@@ -0,0 +1,30 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+ import React from 'react';
3
+ import { render } from '@testing-library/react';
4
+ import { DSProvider } from '@synerise/ds-core';
5
+ import { getDataFormatConfigFromNotation } from '@synerise/ds-data-format';
6
+ import renderWithProvider from '../renderWithProvider/renderWithProvider';
7
+ import { NOOP } from '../../index';
8
+ var renderWithLocalesLoaded = function renderWithLocalesLoaded(node, options, props) {
9
+ return new Promise(function (resolve) {
10
+ var _props$locale, _props$timeZone;
11
+ var onDSLocalesLoaded = function onDSLocalesLoaded() {
12
+ return resolve(_extends({}, rendered, {
13
+ rerender: function rerender(ui, opt) {
14
+ return renderWithProvider(ui, _extends({
15
+ container: rendered.container
16
+ }, opt));
17
+ }
18
+ }));
19
+ };
20
+ var rendered = render(/*#__PURE__*/React.createElement(DSProvider, _extends({
21
+ locale: (_props$locale = props == null ? void 0 : props.locale) != null ? _props$locale : undefined,
22
+ onErrorIntl: NOOP,
23
+ onDSLocalesLoaded: onDSLocalesLoaded,
24
+ timeZone: (_props$timeZone = props == null ? void 0 : props.timeZone) != null ? _props$timeZone : undefined
25
+ }, props != null && props.notation ? {
26
+ dataFormatConfig: getDataFormatConfigFromNotation(props.notation)
27
+ } : {}), node), options);
28
+ });
29
+ };
30
+ export default renderWithLocalesLoaded;
@@ -1,9 +1,11 @@
1
- import React from 'react';
1
+ import { ReactNode } from 'react';
2
2
  import { RenderOptions, RenderResult } from '@testing-library/react';
3
3
  import { DataFormatNotationType } from '@synerise/ds-data-format';
4
4
  type Options = Omit<RenderOptions, 'queries'>;
5
- declare const renderWithProvider: (node: React.ReactElement, options?: Options, props?: {
5
+ declare const renderWithProvider: (node: ReactNode, options?: Options, props?: {
6
6
  locale?: string;
7
7
  notation?: DataFormatNotationType;
8
+ timeZone?: string;
9
+ onDSLocalesLoaded?: () => void;
8
10
  }) => RenderResult;
9
11
  export default renderWithProvider;
@@ -1,37 +1,25 @@
1
- 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; }
2
-
3
- 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; }
4
-
5
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
-
7
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
8
-
9
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
10
-
11
1
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
12
-
13
2
  import React from 'react';
14
3
  import { render } from '@testing-library/react';
15
4
  import { DSProvider } from '@synerise/ds-core';
16
5
  import { getDataFormatConfigFromNotation } from '@synerise/ds-data-format';
17
6
  import { NOOP } from '../../index';
18
-
19
7
  var renderWithProvider = function renderWithProvider(node, options, props) {
20
- var _props$locale;
21
-
22
- var rendered = render( /*#__PURE__*/React.createElement(DSProvider, _extends({
8
+ var _props$locale, _props$timeZone;
9
+ var rendered = render(/*#__PURE__*/React.createElement(DSProvider, _extends({
23
10
  locale: (_props$locale = props == null ? void 0 : props.locale) != null ? _props$locale : undefined,
24
- onErrorIntl: NOOP
11
+ onErrorIntl: NOOP,
12
+ onDSLocalesLoaded: props == null ? void 0 : props.onDSLocalesLoaded,
13
+ timeZone: (_props$timeZone = props == null ? void 0 : props.timeZone) != null ? _props$timeZone : undefined
25
14
  }, props != null && props.notation ? {
26
15
  dataFormatConfig: getDataFormatConfigFromNotation(props.notation)
27
16
  } : {}), node), options);
28
- return _objectSpread({}, rendered, {
17
+ return _extends({}, rendered, {
29
18
  rerender: function rerender(ui, opt) {
30
- return renderWithProvider(ui, _objectSpread({
19
+ return renderWithProvider(ui, _extends({
31
20
  container: rendered.container
32
21
  }, opt));
33
22
  }
34
23
  });
35
24
  };
36
-
37
25
  export default renderWithProvider;
@@ -0,0 +1 @@
1
+ export declare const sleep: (duration?: number) => Promise<unknown>;
@@ -0,0 +1,8 @@
1
+ export var sleep = function sleep(duration) {
2
+ if (duration === void 0) {
3
+ duration = 1000;
4
+ }
5
+ return new Promise(function (resolve) {
6
+ return setTimeout(resolve, duration);
7
+ });
8
+ };
@@ -1,10 +1,14 @@
1
1
  export default (function (str) {
2
- return str.toLowerCase() // Replaces any - or _ characters with a space
3
- .replace(/[-_]+/g, ' ') // Removes any non alphanumeric characters
4
- .replace(/[^\w\s]/g, '') // Uppercases the first character in each group immediately following a space
2
+ return str.toLowerCase()
3
+ // Replaces any - or _ characters with a space
4
+ .replace(/[-_]+/g, ' ')
5
+ // Removes any non alphanumeric characters
6
+ .replace(/[^\w\s]/g, '')
7
+ // Uppercases the first character in each group immediately following a space
5
8
  // (delimited by spaces)
6
9
  .replace(/ (.)/g, function ($1) {
7
10
  return $1.toUpperCase();
8
- }) // Removes spaces
11
+ })
12
+ // Removes spaces
9
13
  .replace(/ /g, '');
10
14
  });
@@ -1,13 +1,4 @@
1
- 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; }
2
-
3
- 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; }
4
-
5
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
-
7
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
8
-
9
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
10
-
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
11
2
  import React from 'react';
12
3
  var BREAKPOINTS = {
13
4
  xxl: {
@@ -41,22 +32,20 @@ var BREAKPOINTS = {
41
32
  columns: 4
42
33
  }
43
34
  };
44
-
45
35
  var useBreakpoint = function useBreakpoint() {
46
36
  var _React$useState = React.useState({
47
- width: 0,
48
- height: 0
49
- }),
50
- dimensions = _React$useState[0],
51
- setDimensions = _React$useState[1];
52
-
37
+ width: 0,
38
+ height: 0
39
+ }),
40
+ dimensions = _React$useState[0],
41
+ setDimensions = _React$useState[1];
53
42
  var updateBreakPoint = React.useMemo(function () {
54
43
  var width = dimensions.width;
55
44
  var breakpointKey = Object.keys(BREAKPOINTS).filter(function (key) {
56
45
  return BREAKPOINTS[key].min <= width && BREAKPOINTS[key].max >= width;
57
46
  })[0];
58
47
  return {
59
- breakpoint: _objectSpread({}, BREAKPOINTS[breakpointKey], {
48
+ breakpoint: _extends({}, BREAKPOINTS[breakpointKey], {
60
49
  name: breakpointKey
61
50
  }),
62
51
  dimensions: dimensions
@@ -69,11 +58,9 @@ var useBreakpoint = function useBreakpoint() {
69
58
  height: window.innerHeight
70
59
  };
71
60
  };
72
-
73
61
  var handleResize = function handleResize() {
74
62
  setDimensions(getDimensions());
75
63
  };
76
-
77
64
  setDimensions(getDimensions());
78
65
  window.addEventListener('resize', handleResize);
79
66
  return function () {
@@ -82,5 +69,4 @@ var useBreakpoint = function useBreakpoint() {
82
69
  }, [setDimensions]);
83
70
  return updateBreakPoint;
84
71
  };
85
-
86
72
  export default useBreakpoint;
@@ -1,17 +1,14 @@
1
1
  import React from 'react';
2
-
3
2
  var useCombinedRefs = function useCombinedRefs() {
4
3
  for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
5
4
  refs[_key] = arguments[_key];
6
5
  }
7
-
8
6
  var targetRef = React.useRef(null);
9
7
  React.useEffect(function () {
10
8
  refs.forEach(function (ref) {
11
9
  if (!ref) {
12
10
  return;
13
11
  }
14
-
15
12
  if (typeof ref === 'function') {
16
13
  ref(targetRef.current);
17
14
  } else {
@@ -22,5 +19,4 @@ var useCombinedRefs = function useCombinedRefs() {
22
19
  }, [refs]);
23
20
  return targetRef;
24
21
  };
25
-
26
22
  export default useCombinedRefs;
@@ -1,34 +1,20 @@
1
- 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; }
2
-
3
- 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; }
4
-
5
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
-
7
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
8
-
9
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
10
-
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
11
2
  import { useEffect, useRef, useState } from 'react';
12
-
13
3
  var useElementInView = function useElementInView(options, rootElementRef) {
14
4
  var elementRef = useRef(null);
15
-
16
5
  var _useState = useState(false),
17
- isVisible = _useState[0],
18
- setIsVisible = _useState[1];
19
-
6
+ isVisible = _useState[0],
7
+ setIsVisible = _useState[1];
20
8
  useEffect(function () {
21
9
  var intersectionObserver = new IntersectionObserver(function (_ref) {
22
10
  var entry = _ref[0];
23
11
  setIsVisible(entry.isIntersecting);
24
- }, _objectSpread({}, options, {
12
+ }, _extends({}, options, {
25
13
  root: (rootElementRef == null ? void 0 : rootElementRef.current) || null
26
14
  }));
27
-
28
15
  if (elementRef.current) {
29
16
  intersectionObserver.observe(elementRef.current);
30
17
  }
31
-
32
18
  return function () {
33
19
  intersectionObserver.disconnect();
34
20
  };
@@ -39,5 +25,4 @@ var useElementInView = function useElementInView(options, rootElementRef) {
39
25
  isVisible: isVisible
40
26
  };
41
27
  };
42
-
43
28
  export default useElementInView;
@@ -4,6 +4,7 @@ var TOUCHSTART = 'touchstart';
4
4
  var CLICK = 'click';
5
5
  var CONTEXTMENU = 'contextmenu';
6
6
  var defaultEvents = [MOUSEDOWN, TOUCHSTART];
7
+
7
8
  /**
8
9
  * Hook for listening for outside clicks.
9
10
  *
@@ -12,7 +13,6 @@ var defaultEvents = [MOUSEDOWN, TOUCHSTART];
12
13
  * @param customEventsTypes list of events to handle that are happening outside (optional, pass something else than `undefined` to overwrite default `['mousedown', 'touchstart']`)
13
14
  * @param ignoreSelectors list of selectors/classes which, in case it is found that any of parent elements of triggering element has this class, event `handler` won't be called
14
15
  */
15
-
16
16
  export var useOnClickOutside = function useOnClickOutside(ref, handler, customEventsTypes, ignoreSelectors) {
17
17
  var handlerRef = useRef(handler);
18
18
  var events = customEventsTypes || defaultEvents;
@@ -25,28 +25,22 @@ export var useOnClickOutside = function useOnClickOutside(ref, handler, customEv
25
25
  return null;
26
26
  };
27
27
  }
28
-
29
28
  var listener = function listener(event) {
30
29
  if (!ref.current || !handlerRef.current) {
31
30
  return;
32
31
  }
33
-
34
32
  if (ref.current.contains(event.target)) {
35
33
  return;
36
34
  }
37
-
38
35
  if (ignoreSelectors != null && ignoreSelectors.some(function (className) {
39
36
  var _event$target;
40
-
41
37
  return (_event$target = event.target) == null ? void 0 : _event$target.closest(className);
42
38
  })) {
43
39
  // if any of parent elements contain one of ignored classes - stop proceeding this event
44
40
  return;
45
41
  }
46
-
47
42
  handlerRef.current(event);
48
43
  };
49
-
50
44
  events.forEach(function (event) {
51
45
  document.addEventListener(event, listener);
52
46
  });
@@ -1,5 +1,4 @@
1
1
  import { useCallback, useEffect, useRef } from 'react';
2
-
3
2
  var useOverscrollBlock = function useOverscrollBlock() {
4
3
  var ref = useRef();
5
4
  var handleMouseEnter = useCallback(function () {
@@ -10,22 +9,18 @@ var useOverscrollBlock = function useOverscrollBlock() {
10
9
  }, []);
11
10
  useEffect(function () {
12
11
  var element = ref.current;
13
-
14
12
  if (element) {
15
13
  element.addEventListener('mouseenter', handleMouseEnter);
16
14
  element.addEventListener('mouseleave', handleMouseLeave);
17
15
  }
18
-
19
16
  return function () {
20
17
  if (element) {
21
18
  element.removeEventListener('mouseenter', handleMouseEnter);
22
19
  element.removeEventListener('mouseleave', handleMouseLeave);
23
20
  }
24
-
25
21
  document.body.style.removeProperty('overscroll-behavior-x');
26
22
  };
27
23
  }, [handleMouseEnter, handleMouseLeave]);
28
24
  return ref;
29
25
  };
30
-
31
26
  export default useOverscrollBlock;
@@ -1,5 +1,4 @@
1
1
  import React from 'react';
2
-
3
2
  function usePrevious(value) {
4
3
  var ref = React.useRef();
5
4
  React.useEffect(function () {
@@ -7,5 +6,4 @@ function usePrevious(value) {
7
6
  });
8
7
  return ref.current;
9
8
  }
10
-
11
9
  export default usePrevious;
@@ -1,18 +1,15 @@
1
1
  import React from 'react';
2
-
3
2
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
3
  var useResize = function useResize(componentRef, visible) {
5
4
  if (visible === void 0) {
6
5
  visible = true;
7
6
  }
8
-
9
7
  var _React$useState = React.useState({
10
- width: 0,
11
- height: 0
12
- }),
13
- dimensions = _React$useState[0],
14
- setDimensions = _React$useState[1];
15
-
8
+ width: 0,
9
+ height: 0
10
+ }),
11
+ dimensions = _React$useState[0],
12
+ setDimensions = _React$useState[1];
16
13
  React.useEffect(function () {
17
14
  var getDimensions = function getDimensions() {
18
15
  return {
@@ -20,15 +17,12 @@ var useResize = function useResize(componentRef, visible) {
20
17
  height: (componentRef == null ? void 0 : componentRef.current.offsetHeight) || 0
21
18
  };
22
19
  };
23
-
24
20
  var handleResize = function handleResize() {
25
21
  setDimensions(getDimensions());
26
22
  };
27
-
28
23
  if (componentRef != null && componentRef.current) {
29
24
  setDimensions(getDimensions());
30
25
  }
31
-
32
26
  window.addEventListener('resize', handleResize);
33
27
  return function () {
34
28
  window.removeEventListener('resize', handleResize);
@@ -36,5 +30,4 @@ var useResize = function useResize(componentRef, visible) {
36
30
  }, [componentRef, setDimensions, visible]);
37
31
  return dimensions;
38
32
  };
39
-
40
33
  export default useResize;
@@ -1,3 +1,3 @@
1
1
  import { RefObject } from 'react';
2
- declare const useResizeObserver: (elementRef: RefObject<HTMLElement | undefined>) => DOMRect;
2
+ declare const useResizeObserver: (elementRef: RefObject<HTMLElement | undefined>, resizeHandler?: ((dimensions: DOMRect) => void) | undefined) => DOMRect;
3
3
  export default useResizeObserver;
@@ -1,16 +1,16 @@
1
1
  import { useEffect, useState, useRef, useCallback } from 'react';
2
-
3
- var useResizeObserver = function useResizeObserver(elementRef) {
2
+ var useResizeObserver = function useResizeObserver(elementRef, resizeHandler) {
4
3
  var _useState = useState(new DOMRect()),
5
- dimensions = _useState[0],
6
- setDimensions = _useState[1];
7
-
4
+ dimensions = _useState[0],
5
+ setDimensions = _useState[1];
8
6
  var resizeObserver = useRef(new ResizeObserver(function (entries) {
9
7
  var contentRect = entries[0].contentRect;
10
8
  setDimensions(contentRect);
9
+ resizeHandler && resizeHandler(contentRect);
11
10
  })).current;
12
11
  var observe = useCallback(function () {
13
- elementRef.current && resizeObserver.observe(elementRef.current); // eslint-disable-next-line react-hooks/exhaustive-deps
12
+ elementRef.current && resizeObserver.observe(elementRef.current);
13
+ // eslint-disable-next-line react-hooks/exhaustive-deps
14
14
  }, [resizeObserver]);
15
15
  var disconnect = useCallback(function () {
16
16
  resizeObserver.disconnect();
@@ -19,12 +19,11 @@ var useResizeObserver = function useResizeObserver(elementRef) {
19
19
  if (elementRef.current) {
20
20
  observe();
21
21
  }
22
-
23
22
  return function () {
24
23
  resizeObserver.disconnect();
25
- }; // eslint-disable-next-line react-hooks/exhaustive-deps
24
+ };
25
+ // eslint-disable-next-line react-hooks/exhaustive-deps
26
26
  }, [resizeObserver, observe, disconnect]);
27
27
  return dimensions;
28
28
  };
29
-
30
29
  export default useResizeObserver;
@@ -1,8 +1,7 @@
1
1
  import { useEffect, useRef, useCallback } from 'react';
2
-
3
2
  var useResizeToFit = function useResizeToFit(_ref) {
4
3
  var onResize = _ref.onResize,
5
- autoObserve = _ref.autoObserve;
4
+ autoObserve = _ref.autoObserve;
6
5
  var elementRef = useRef(null);
7
6
  var resizeObserver = useRef(new ResizeObserver(function () {
8
7
  elementRef.current && onResize(elementRef.current.clientWidth);
@@ -21,7 +20,6 @@ var useResizeToFit = function useResizeToFit(_ref) {
21
20
  disconnect();
22
21
  }
23
22
  }
24
-
25
23
  return function () {
26
24
  resizeObserver.disconnect();
27
25
  };
@@ -32,5 +30,4 @@ var useResizeToFit = function useResizeToFit(_ref) {
32
30
  observe: observe
33
31
  };
34
32
  };
35
-
36
33
  export default useResizeToFit;
@@ -9,7 +9,6 @@ export var getActiveTabGroup = function getActiveTabGroup(tabIndex, groups) {
9
9
  };
10
10
  export var getGroupName = function getGroupName(groupId, groups) {
11
11
  var _groups$flatMap$find;
12
-
13
12
  return (_groups$flatMap$find = groups.flatMap(function (group) {
14
13
  return group.subGroups ? group.subGroups : group;
15
14
  }).find(function (group) {
@@ -1,19 +1,9 @@
1
- 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; }
2
-
3
- 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; }
4
-
5
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
-
7
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
8
-
9
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
10
-
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
11
2
  import { useMemo } from 'react';
12
3
  import { getActiveTabGroup, getGroupName, isItemInGroup } from './search.utils';
13
4
  export var useSearchResults = function useSearchResults(items, groups, activeTab, groupByGroupName, activeGroup, searchQuery, maxSearchResultsInGroup) {
14
5
  var showGroupedResults = useMemo(function () {
15
6
  var _getActiveTabGroup;
16
-
17
7
  return activeTab && !activeGroup ? Boolean((_getActiveTabGroup = getActiveTabGroup(activeTab, groups)) == null ? void 0 : _getActiveTabGroup.subGroups) : Boolean(activeTab === 0 && !activeGroup);
18
8
  }, [activeTab, activeGroup, groups]);
19
9
  var groupOrder = useMemo(function () {
@@ -27,34 +17,28 @@ export var useSearchResults = function useSearchResults(items, groups, activeTab
27
17
  if (!searchQuery) return [];
28
18
  var result = [];
29
19
  var itemsNumber = items.length;
30
-
31
20
  for (var i = 0; i < itemsNumber; i += 1) {
32
21
  var item = items[i];
33
22
  var itemInTab = !activeTab || isItemInGroup(item.groupId, getActiveTabGroup(activeTab, groups));
34
23
  var itemInGroup = !activeGroup || item.groupId === activeGroup.id;
35
-
36
24
  if (itemInGroup && itemInTab) {
37
25
  var _item$name, _item$subtitle;
38
-
39
26
  var searchQueryInLowerCase = searchQuery.toLowerCase();
40
27
  var isMatchingName = (_item$name = item.name) == null ? void 0 : _item$name.toLowerCase().includes(searchQueryInLowerCase);
41
28
  var isMatchingSubtitle = (_item$subtitle = item.subtitle) == null ? void 0 : _item$subtitle.toLowerCase().includes(searchQueryInLowerCase);
42
29
  var matching = !searchQuery || isMatchingName || isMatchingSubtitle;
43
-
44
30
  if (matching) {
45
- result.push(_objectSpread({
31
+ result.push(_extends({
46
32
  groupName: showGroupedResults && item.groupId ? getGroupName(item.groupId, groups) : undefined
47
33
  }, item));
48
34
  }
49
35
  }
50
36
  }
51
-
52
37
  if (groupOrder && groupOrder.length) {
53
38
  result.sort(function (a, b) {
54
39
  return a.groupId !== undefined && b.groupId !== undefined ? groupOrder.indexOf(a.groupId) - groupOrder.indexOf(b.groupId) : 0;
55
40
  });
56
41
  }
57
-
58
42
  return result;
59
43
  }, [activeGroup, activeTab, groupOrder, groups, items, searchQuery, showGroupedResults]);
60
44
  var groupedSearchResults = useMemo(function () {
@@ -1,25 +1,22 @@
1
- import { useEffect, useRef } from 'react'; // eslint-disable-next-line import/prefer-default-export
1
+ import { useEffect, useRef } from 'react';
2
2
 
3
+ // eslint-disable-next-line import/prefer-default-export
3
4
  export var useTraceUpdate = function useTraceUpdate(props) {
4
5
  var prev = useRef(props);
5
6
  useEffect(function () {
6
7
  var changedProps = Object.entries(props).reduce(function (ps, _ref) {
7
8
  var k = _ref[0],
8
- v = _ref[1];
9
-
9
+ v = _ref[1];
10
10
  if (prev.current[k] !== v) {
11
11
  // eslint-disable-next-line no-param-reassign
12
12
  ps[k] = [prev.current[k], v];
13
13
  }
14
-
15
14
  return ps;
16
15
  }, {});
17
-
18
16
  if (Object.keys(changedProps).length > 0) {
19
17
  // eslint-disable-next-line no-console
20
18
  console.log('Changed props:', changedProps);
21
19
  }
22
-
23
20
  prev.current = props;
24
21
  });
25
22
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synerise/ds-utils",
3
- "version": "0.31.2",
3
+ "version": "0.32.0",
4
4
  "description": "Utils UI Component for the Synerise Design System",
5
5
  "license": "ISC",
6
6
  "repository": "synerise/synerise-design",
@@ -33,13 +33,13 @@
33
33
  ],
34
34
  "types": "dist/index.d.ts",
35
35
  "dependencies": {
36
- "@synerise/ds-data-format": "^0.6.1",
36
+ "@synerise/ds-data-format": "^0.7.0",
37
37
  "latinize": "^0.5.0"
38
38
  },
39
39
  "peerDependencies": {
40
40
  "@synerise/ds-core": "*",
41
- "react": ">=16.9.0 <= 17.0.2",
42
- "styled-components": "5.0.1"
41
+ "react": ">=16.9.0 <= 18.3.1",
42
+ "styled-components": "^5.3.3"
43
43
  },
44
- "gitHead": "05f083c767e2cec3c2f91c9475aee89852a77d6c"
44
+ "gitHead": "fbde34e126b492edaf148e469ab96247a891d6df"
45
45
  }