@aiszlab/relax 1.3.14 → 1.3.16

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 (41) hide show
  1. package/dist/dom/contains.cjs +4 -3
  2. package/dist/dom/contains.d.ts +1 -1
  3. package/dist/dom/contains.mjs +4 -3
  4. package/dist/hooks/use-click-away.d.ts +1 -1
  5. package/dist/hooks/use-refs.cjs +8 -23
  6. package/dist/hooks/use-refs.d.ts +2 -4
  7. package/dist/hooks/use-refs.mjs +8 -23
  8. package/dist/hooks/use-scrollable.d.ts +1 -1
  9. package/dist/index.cjs +6 -0
  10. package/dist/index.d.ts +3 -0
  11. package/dist/index.mjs +3 -0
  12. package/dist/is/is-empty.cjs +1 -1
  13. package/dist/is/is-empty.mjs +1 -1
  14. package/dist/is/is-primitive.cjs +2 -1
  15. package/dist/is/is-primitive.d.ts +4 -2
  16. package/dist/is/is-primitive.mjs +2 -1
  17. package/dist/react/index.cjs +9 -0
  18. package/dist/react/index.d.ts +4 -0
  19. package/dist/react/index.mjs +2 -0
  20. package/dist/react/is-class-component.cjs +7 -0
  21. package/dist/react/is-class-component.d.ts +1 -0
  22. package/dist/react/is-class-component.mjs +5 -0
  23. package/dist/react/mount-ref.cjs +19 -0
  24. package/dist/react/mount-ref.d.ts +3 -0
  25. package/dist/react/mount-ref.mjs +17 -0
  26. package/dist/utils/clone.cjs +33 -6
  27. package/dist/utils/clone.d.ts +1 -1
  28. package/dist/utils/clone.mjs +33 -6
  29. package/dist/utils/first.cjs +13 -0
  30. package/dist/utils/first.d.ts +1 -1
  31. package/dist/utils/first.mjs +11 -0
  32. package/dist/utils/last.cjs +13 -0
  33. package/dist/utils/last.d.ts +1 -1
  34. package/dist/utils/last.mjs +11 -0
  35. package/dist/utils/merge.cjs +53 -0
  36. package/dist/utils/merge.d.ts +7 -0
  37. package/dist/utils/merge.mjs +51 -0
  38. package/dist/utils/unique.cjs +7 -2
  39. package/dist/utils/unique.d.ts +1 -1
  40. package/dist/utils/unique.mjs +7 -2
  41. package/package.json +10 -1
@@ -1,12 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var contains = function contains(root, node) {
3
+ var contains = function contains(root) {
4
+ var node = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
4
5
  if (!root) {
5
6
  return false;
6
7
  }
7
8
  // Use native if support
8
- if (root.contains) {
9
- return root.contains(node !== null && node !== void 0 ? node : null);
9
+ if (!!root.contains) {
10
+ return root.contains(node);
10
11
  }
11
12
  // `document.contains` not support with IE11
12
13
  var _node = node;
@@ -13,4 +13,4 @@ export type Containable = {
13
13
  */
14
14
  contains?: (node: Nullable<Node>) => boolean;
15
15
  };
16
- export declare const contains: (root: Voidable<Containable>, node: Voidable<Node>) => boolean;
16
+ export declare const contains: (root: Voidable<Containable>, node?: Voidable<Node>) => boolean;
@@ -1,10 +1,11 @@
1
- var contains = function contains(root, node) {
1
+ var contains = function contains(root) {
2
+ var node = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
2
3
  if (!root) {
3
4
  return false;
4
5
  }
5
6
  // Use native if support
6
- if (root.contains) {
7
- return root.contains(node !== null && node !== void 0 ? node : null);
7
+ if (!!root.contains) {
8
+ return root.contains(node);
8
9
  }
9
10
  // `document.contains` not support with IE11
10
11
  var _node = node;
@@ -1,5 +1,5 @@
1
1
  import { type MutableRefObject } from "react";
2
- import { type Containable } from "@aiszlab/relax/dom";
2
+ import { type Containable } from "../dom";
3
3
  import type { Nullable, Arrayable } from "@aiszlab/relax/types";
4
4
  /**
5
5
  * @description
@@ -1,33 +1,18 @@
1
1
  'use strict';
2
2
 
3
- var react = require('react');
4
- var isFunction = require('../is/is-function.cjs');
3
+ var mountRef = require('../react/mount-ref.cjs');
4
+ var useEvent = require('./use-event.cjs');
5
5
 
6
- var mount = function mount(ref, trigger) {
7
- if (isFunction.isFunction(ref)) {
8
- ref(trigger);
9
- return;
10
- }
11
- // in deprecated react, class component can use string ref
12
- // but there are many problems, in relax, we just make it not work
13
- // issue for react: https://github.com/facebook/react/pull/8333#issuecomment-271648615
14
- if (typeof ref === "string") {
15
- return;
16
- }
17
- ref.current = trigger;
18
- };
19
6
  var useRefs = function useRefs() {
20
7
  for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
21
8
  refs[_key] = arguments[_key];
22
9
  }
23
- return react.useMemo(function () {
24
- return function (trigger) {
25
- refs.forEach(function (ref) {
26
- if (!ref) return;
27
- mount(ref, trigger);
28
- });
29
- };
30
- }, refs);
10
+ return useEvent.useEvent(function (reference) {
11
+ refs.forEach(function (ref) {
12
+ if (!ref) return;
13
+ mountRef.mountRef(ref, reference);
14
+ });
15
+ });
31
16
  };
32
17
 
33
18
  exports.useRefs = useRefs;
@@ -1,5 +1,3 @@
1
- import { type MutableRefObject, type RefCallback } from "react";
2
1
  import type { Nullable, Voidable } from "@aiszlab/relax/types";
3
- type Refable<T> = RefCallback<T> | MutableRefObject<T> | string;
4
- export declare const useRefs: <T>(...refs: Voidable<Refable<Nullable<T>>>[]) => (trigger: T) => void;
5
- export {};
2
+ import { type Refable } from "../react";
3
+ export declare const useRefs: <T>(...refs: Voidable<Refable<Nullable<T>>>[]) => (reference: T) => void;
@@ -1,31 +1,16 @@
1
- import { useMemo } from 'react';
2
- import { isFunction } from '../is/is-function.mjs';
1
+ import { mountRef } from '../react/mount-ref.mjs';
2
+ import { useEvent } from './use-event.mjs';
3
3
 
4
- var mount = function mount(ref, trigger) {
5
- if (isFunction(ref)) {
6
- ref(trigger);
7
- return;
8
- }
9
- // in deprecated react, class component can use string ref
10
- // but there are many problems, in relax, we just make it not work
11
- // issue for react: https://github.com/facebook/react/pull/8333#issuecomment-271648615
12
- if (typeof ref === "string") {
13
- return;
14
- }
15
- ref.current = trigger;
16
- };
17
4
  var useRefs = function useRefs() {
18
5
  for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
19
6
  refs[_key] = arguments[_key];
20
7
  }
21
- return useMemo(function () {
22
- return function (trigger) {
23
- refs.forEach(function (ref) {
24
- if (!ref) return;
25
- mount(ref, trigger);
26
- });
27
- };
28
- }, refs);
8
+ return useEvent(function (reference) {
9
+ refs.forEach(function (ref) {
10
+ if (!ref) return;
11
+ mountRef(ref, reference);
12
+ });
13
+ });
29
14
  };
30
15
 
31
16
  export { useRefs };
@@ -1,5 +1,5 @@
1
1
  import { type Key } from "react";
2
- import { type Orientation } from "@aiszlab/relax/dom";
2
+ import { type Orientation } from "../dom";
3
3
  interface UseScrollableProps {
4
4
  orientation?: Orientation;
5
5
  }
package/dist/index.cjs CHANGED
@@ -65,6 +65,9 @@ var toggle = require('./utils/toggle.cjs');
65
65
  var taggedTemplateLiterals = require('./utils/tagged-template-literals.cjs');
66
66
  var replace = require('./utils/replace.cjs');
67
67
  var clsx = require('./utils/clsx.cjs');
68
+ var first = require('./utils/first.cjs');
69
+ var last = require('./utils/last.cjs');
70
+ var merge = require('./utils/merge.cjs');
68
71
 
69
72
 
70
73
 
@@ -134,3 +137,6 @@ exports.toggle = toggle.toggle;
134
137
  exports.taggedTemplateLiterals = taggedTemplateLiterals.taggedTemplateLiterals;
135
138
  exports.replace = replace.replace;
136
139
  exports.clsx = clsx.clsx;
140
+ exports.first = first.first;
141
+ exports.last = last.last;
142
+ exports.merge = merge.merge;
package/dist/index.d.ts CHANGED
@@ -75,3 +75,6 @@ export { toggle } from "./utils/toggle";
75
75
  export { taggedTemplateLiterals } from "./utils/tagged-template-literals";
76
76
  export { replace } from "./utils/replace";
77
77
  export { clsx } from "./utils/clsx";
78
+ export { first } from "./utils/first";
79
+ export { last } from "./utils/last";
80
+ export { merge } from "./utils/merge";
package/dist/index.mjs CHANGED
@@ -63,3 +63,6 @@ export { toggle } from './utils/toggle.mjs';
63
63
  export { taggedTemplateLiterals } from './utils/tagged-template-literals.mjs';
64
64
  export { replace } from './utils/replace.mjs';
65
65
  export { clsx } from './utils/clsx.mjs';
66
+ export { first } from './utils/first.mjs';
67
+ export { last } from './utils/last.mjs';
68
+ export { merge } from './utils/merge.mjs';
@@ -21,7 +21,7 @@ var isEmpty = function isEmpty(value) {
21
21
  if (isObject.isObject(value)) {
22
22
  return Object.keys(value).length === 0;
23
23
  }
24
- return !!value;
24
+ return !value;
25
25
  };
26
26
 
27
27
  exports.isEmpty = isEmpty;
@@ -19,7 +19,7 @@ var isEmpty = function isEmpty(value) {
19
19
  if (isObject(value)) {
20
20
  return Object.keys(value).length === 0;
21
21
  }
22
- return !!value;
22
+ return !value;
23
23
  };
24
24
 
25
25
  export { isEmpty };
@@ -2,7 +2,8 @@
2
2
 
3
3
  /**
4
4
  * @description
5
- * string/number/... is primitive type
5
+ * primitive type
6
+ * string | number | symbol | boolean | null | undefined
6
7
  */
7
8
  var isPrimitive = function isPrimitive(value) {
8
9
  return value !== Object(value);
@@ -1,5 +1,7 @@
1
+ export type Primitive = string | number | symbol | boolean | null | undefined;
1
2
  /**
2
3
  * @description
3
- * string/number/... is primitive type
4
+ * primitive type
5
+ * string | number | symbol | boolean | null | undefined
4
6
  */
5
- export declare const isPrimitive: (value: unknown) => boolean;
7
+ export declare const isPrimitive: <T extends Primitive>(value: unknown) => value is T;
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @description
3
- * string/number/... is primitive type
3
+ * primitive type
4
+ * string | number | symbol | boolean | null | undefined
4
5
  */
5
6
  var isPrimitive = function isPrimitive(value) {
6
7
  return value !== Object(value);
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var mountRef = require('./mount-ref.cjs');
4
+ var isClassComponent = require('./is-class-component.cjs');
5
+
6
+
7
+
8
+ exports.mountRef = mountRef.mountRef;
9
+ exports.isClassComponent = isClassComponent.isClassComponent;
@@ -0,0 +1,4 @@
1
+ import { mountRef, type Refable } from "./mount-ref";
2
+ import { isClassComponent } from "./is-class-component";
3
+ export { mountRef, isClassComponent };
4
+ export type { Refable };
@@ -0,0 +1,2 @@
1
+ export { mountRef } from './mount-ref.mjs';
2
+ export { isClassComponent } from './is-class-component.mjs';
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var isClassComponent = function isClassComponent() {
4
+ return false;
5
+ };
6
+
7
+ exports.isClassComponent = isClassComponent;
@@ -0,0 +1 @@
1
+ export declare const isClassComponent: () => boolean;
@@ -0,0 +1,5 @@
1
+ var isClassComponent = function isClassComponent() {
2
+ return false;
3
+ };
4
+
5
+ export { isClassComponent };
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var isFunction = require('../is/is-function.cjs');
4
+
5
+ var mountRef = function mountRef(refable, reference) {
6
+ if (isFunction.isFunction(refable)) {
7
+ refable(reference);
8
+ return;
9
+ }
10
+ // in deprecated react, class component can use string ref
11
+ // but there are many problems, in relax, we just make it not work
12
+ // issue for react: https://github.com/facebook/react/pull/8333#issuecomment-271648615
13
+ if (typeof refable === "string") {
14
+ return;
15
+ }
16
+ refable.current = reference;
17
+ };
18
+
19
+ exports.mountRef = mountRef;
@@ -0,0 +1,3 @@
1
+ import type { MutableRefObject, RefCallback } from "react";
2
+ export type Refable<T> = RefCallback<T> | MutableRefObject<T> | string;
3
+ export declare const mountRef: <T>(refable: Refable<T>, reference: T) => void;
@@ -0,0 +1,17 @@
1
+ import { isFunction } from '../is/is-function.mjs';
2
+
3
+ var mountRef = function mountRef(refable, reference) {
4
+ if (isFunction(refable)) {
5
+ refable(reference);
6
+ return;
7
+ }
8
+ // in deprecated react, class component can use string ref
9
+ // but there are many problems, in relax, we just make it not work
10
+ // issue for react: https://github.com/facebook/react/pull/8333#issuecomment-271648615
11
+ if (typeof refable === "string") {
12
+ return;
13
+ }
14
+ refable.current = reference;
15
+ };
16
+
17
+ export { mountRef };
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
3
4
  var isArray = require('../is/is-array.cjs');
4
5
  var isPrimitive = require('../is/is-primitive.cjs');
5
6
 
@@ -8,12 +9,38 @@ var isPrimitive = require('../is/is-primitive.cjs');
8
9
  * in develop, there are many cases to clone a string/number/object/array
9
10
  * this util is planning to resolve it
10
11
  */
11
- var clone = function clone(value) {
12
+ var _clone = function clone(value) {
12
13
  if (isPrimitive.isPrimitive(value)) return value;
13
- if (value instanceof Map) return new Map(value);
14
- if (value instanceof Set) return new Set(value);
15
- if (isArray.isArray(value)) return Array.from(value);
16
- return Object(value);
14
+ if (value instanceof Map) {
15
+ // @ts-ignore
16
+ return new Map(Array.from(value.entries()).map(function (_ref) {
17
+ var _ref2 = _slicedToArray(_ref, 2),
18
+ _key = _ref2[0],
19
+ _value = _ref2[1];
20
+ return [_key, _clone(_value)];
21
+ }));
22
+ }
23
+ if (value instanceof Set) {
24
+ // @ts-ignore
25
+ return new Set(Array.from(value.values()).map(function (_value) {
26
+ return _clone(_value);
27
+ }));
28
+ }
29
+ if (isArray.isArray(value)) {
30
+ // @ts-ignore
31
+ return value.map(function (_value) {
32
+ return _clone(_value);
33
+ });
34
+ }
35
+ // @ts-ignore
36
+ return Object.entries(value).reduce(function (cloned, _ref3) {
37
+ var _ref4 = _slicedToArray(_ref3, 2),
38
+ _key = _ref4[0],
39
+ _value = _ref4[1];
40
+ // @ts-ignore
41
+ cloned[_key] = _clone(_value);
42
+ return cloned;
43
+ }, {});
17
44
  };
18
45
 
19
- exports.clone = clone;
46
+ exports.clone = _clone;
@@ -3,4 +3,4 @@
3
3
  * in develop, there are many cases to clone a string/number/object/array
4
4
  * this util is planning to resolve it
5
5
  */
6
- export declare const clone: (value: unknown) => any;
6
+ export declare const clone: <T>(value: T) => T;
@@ -1,3 +1,4 @@
1
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
1
2
  import { isArray } from '../is/is-array.mjs';
2
3
  import { isPrimitive } from '../is/is-primitive.mjs';
3
4
 
@@ -6,12 +7,38 @@ import { isPrimitive } from '../is/is-primitive.mjs';
6
7
  * in develop, there are many cases to clone a string/number/object/array
7
8
  * this util is planning to resolve it
8
9
  */
9
- var clone = function clone(value) {
10
+ var _clone = function clone(value) {
10
11
  if (isPrimitive(value)) return value;
11
- if (value instanceof Map) return new Map(value);
12
- if (value instanceof Set) return new Set(value);
13
- if (isArray(value)) return Array.from(value);
14
- return Object(value);
12
+ if (value instanceof Map) {
13
+ // @ts-ignore
14
+ return new Map(Array.from(value.entries()).map(function (_ref) {
15
+ var _ref2 = _slicedToArray(_ref, 2),
16
+ _key = _ref2[0],
17
+ _value = _ref2[1];
18
+ return [_key, _clone(_value)];
19
+ }));
20
+ }
21
+ if (value instanceof Set) {
22
+ // @ts-ignore
23
+ return new Set(Array.from(value.values()).map(function (_value) {
24
+ return _clone(_value);
25
+ }));
26
+ }
27
+ if (isArray(value)) {
28
+ // @ts-ignore
29
+ return value.map(function (_value) {
30
+ return _clone(_value);
31
+ });
32
+ }
33
+ // @ts-ignore
34
+ return Object.entries(value).reduce(function (cloned, _ref3) {
35
+ var _ref4 = _slicedToArray(_ref3, 2),
36
+ _key = _ref4[0],
37
+ _value = _ref4[1];
38
+ // @ts-ignore
39
+ cloned[_key] = _clone(_value);
40
+ return cloned;
41
+ }, {});
15
42
  };
16
43
 
17
- export { clone };
44
+ export { _clone as clone };
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ var toArray = require('./to-array.cjs');
4
+
5
+ /**
6
+ * @description
7
+ * first element of array
8
+ */
9
+ var first = function first(value) {
10
+ return toArray.toArray(value).at(0);
11
+ };
12
+
13
+ exports.first = first;
@@ -1,4 +1,4 @@
1
- import { type First } from "../types";
1
+ import { type First } from "@aiszlab/relax/types";
2
2
  /**
3
3
  * @description
4
4
  * first element of array
@@ -0,0 +1,11 @@
1
+ import { toArray } from './to-array.mjs';
2
+
3
+ /**
4
+ * @description
5
+ * first element of array
6
+ */
7
+ var first = function first(value) {
8
+ return toArray(value).at(0);
9
+ };
10
+
11
+ export { first };
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ var toArray = require('./to-array.cjs');
4
+
5
+ /**
6
+ * @description
7
+ * last element of array
8
+ */
9
+ var last = function last(value) {
10
+ return toArray.toArray(value).at(-1);
11
+ };
12
+
13
+ exports.last = last;
@@ -1,4 +1,4 @@
1
- import { type Last } from "../types";
1
+ import { type Last } from "@aiszlab/relax/types";
2
2
  /**
3
3
  * @description
4
4
  * last element of array
@@ -0,0 +1,11 @@
1
+ import { toArray } from './to-array.mjs';
2
+
3
+ /**
4
+ * @description
5
+ * last element of array
6
+ */
7
+ var last = function last(value) {
8
+ return toArray(value).at(-1);
9
+ };
10
+
11
+ export { last };
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
4
+ var isArray = require('../is/is-array.cjs');
5
+ var isFunction = require('../is/is-function.cjs');
6
+ var isPrimitive = require('../is/is-primitive.cjs');
7
+ var clone = require('./clone.cjs');
8
+ var unique = require('./unique.cjs');
9
+
10
+ var _merge2 = function _merge(previous, next) {
11
+ if (isPrimitive.isPrimitive(previous) || isPrimitive.isPrimitive(next) || isFunction.isFunction(previous) || isFunction.isFunction(next) || previous === next) {
12
+ return clone.clone(next);
13
+ }
14
+ var _previous = new Map(Object.entries(previous));
15
+ var _next = new Map(Object.entries(next));
16
+ var _uniqueKeys = unique.unique(_previous.keys(), _next.keys());
17
+ var merged = _uniqueKeys.reduce(function (_merged, _key) {
18
+ var _previousValue = _previous.get(_key);
19
+ var _nextValue = _next.get(_key);
20
+ if (!_next.has(_key)) {
21
+ _merged[_key] = clone.clone(_previousValue);
22
+ return _merged;
23
+ }
24
+ // deep merge child value
25
+ _merged[_key] = _merge2(_previousValue, _nextValue);
26
+ return _merged;
27
+ }, {});
28
+ // convert value type same as previous
29
+ // if `previous` is object, use merged object directly
30
+ if (!isArray.isArray(previous)) return merged;
31
+ // else `previous` is array, check next value type
32
+ // but length will be merged when next value is array
33
+ return Array.from(_objectSpread(_objectSpread({}, merged), {}, {
34
+ length: isArray.isArray(next) ? Object.keys(merged).length : previous.length
35
+ }));
36
+ };
37
+ /**
38
+ * @description
39
+ * deep merge api
40
+ * use unique values to avoid duplicate
41
+ */
42
+ var merge = function merge() {
43
+ for (var _len = arguments.length, values = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {
44
+ values[_key2] = arguments[_key2];
45
+ }
46
+ // @ts-ignore
47
+ return unique.unique(values).reduce(function (_merged, _value) {
48
+ // @ts-ignore
49
+ return _merge2(_merged, _value !== null && _value !== void 0 ? _value : {});
50
+ }, null);
51
+ };
52
+
53
+ exports.merge = merge;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @description
3
+ * deep merge api
4
+ * use unique values to avoid duplicate
5
+ */
6
+ declare const merge: <T>(values_0: T, ...values: unknown[]) => T;
7
+ export { merge };
@@ -0,0 +1,51 @@
1
+ import _objectSpread from '@babel/runtime/helpers/objectSpread2';
2
+ import { isArray } from '../is/is-array.mjs';
3
+ import { isFunction } from '../is/is-function.mjs';
4
+ import { isPrimitive } from '../is/is-primitive.mjs';
5
+ import { clone as _clone } from './clone.mjs';
6
+ import { unique } from './unique.mjs';
7
+
8
+ var _merge2 = function _merge(previous, next) {
9
+ if (isPrimitive(previous) || isPrimitive(next) || isFunction(previous) || isFunction(next) || previous === next) {
10
+ return _clone(next);
11
+ }
12
+ var _previous = new Map(Object.entries(previous));
13
+ var _next = new Map(Object.entries(next));
14
+ var _uniqueKeys = unique(_previous.keys(), _next.keys());
15
+ var merged = _uniqueKeys.reduce(function (_merged, _key) {
16
+ var _previousValue = _previous.get(_key);
17
+ var _nextValue = _next.get(_key);
18
+ if (!_next.has(_key)) {
19
+ _merged[_key] = _clone(_previousValue);
20
+ return _merged;
21
+ }
22
+ // deep merge child value
23
+ _merged[_key] = _merge2(_previousValue, _nextValue);
24
+ return _merged;
25
+ }, {});
26
+ // convert value type same as previous
27
+ // if `previous` is object, use merged object directly
28
+ if (!isArray(previous)) return merged;
29
+ // else `previous` is array, check next value type
30
+ // but length will be merged when next value is array
31
+ return Array.from(_objectSpread(_objectSpread({}, merged), {}, {
32
+ length: isArray(next) ? Object.keys(merged).length : previous.length
33
+ }));
34
+ };
35
+ /**
36
+ * @description
37
+ * deep merge api
38
+ * use unique values to avoid duplicate
39
+ */
40
+ var merge = function merge() {
41
+ for (var _len = arguments.length, values = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {
42
+ values[_key2] = arguments[_key2];
43
+ }
44
+ // @ts-ignore
45
+ return unique(values).reduce(function (_merged, _value) {
46
+ // @ts-ignore
47
+ return _merge2(_merged, _value !== null && _value !== void 0 ? _value : {});
48
+ }, null);
49
+ };
50
+
51
+ export { merge };
@@ -4,8 +4,13 @@
4
4
  * @description
5
5
  * unique
6
6
  */
7
- var unique = function unique(value) {
8
- return Array.from(new Set(value));
7
+ var unique = function unique() {
8
+ for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {
9
+ values[_key] = arguments[_key];
10
+ }
11
+ return Array.from(values.reduce(function (unionize, _value) {
12
+ return unionize.union(new Set(_value));
13
+ }, new Set()));
9
14
  };
10
15
  /**
11
16
  * @description
@@ -2,7 +2,7 @@
2
2
  * @description
3
3
  * unique
4
4
  */
5
- export declare const unique: <T = unknown>(value: Iterable<T>) => T[];
5
+ export declare const unique: <T = unknown>(...values: Array<Iterable<T>>) => T[];
6
6
  /**
7
7
  * @description
8
8
  * unique by
@@ -2,8 +2,13 @@
2
2
  * @description
3
3
  * unique
4
4
  */
5
- var unique = function unique(value) {
6
- return Array.from(new Set(value));
5
+ var unique = function unique() {
6
+ for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {
7
+ values[_key] = arguments[_key];
8
+ }
9
+ return Array.from(values.reduce(function (unionize, _value) {
10
+ return unionize.union(new Set(_value));
11
+ }, new Set()));
7
12
  };
8
13
  /**
9
14
  * @description
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiszlab/relax",
3
- "version": "1.3.14",
3
+ "version": "1.3.16",
4
4
  "description": "react utils collection",
5
5
  "exports": {
6
6
  ".": {
@@ -17,6 +17,13 @@
17
17
  "import": "./dist/dom/index.mjs",
18
18
  "default": "./dist/dom/index.mjs"
19
19
  },
20
+ "./react": {
21
+ "types": "./dist/react/index.d.ts",
22
+ "node": "./dist/react/index.cjs",
23
+ "require": "./dist/react/index.cjs",
24
+ "import": "./dist/react/index.mjs",
25
+ "default": "./dist/react/index.mjs"
26
+ },
20
27
  "./types": "./dist/types/index.d.ts"
21
28
  },
22
29
  "scripts": {
@@ -25,6 +32,7 @@
25
32
  "clean:build": "rm -rf dist",
26
33
  "prepublishOnly": "npm run clean:build && npm run build",
27
34
  "test": "jest",
35
+ "test:coverage": "jest --coverage",
28
36
  "publish:npm": "npm publish"
29
37
  },
30
38
  "dependencies": {
@@ -43,6 +51,7 @@
43
51
  "@rollup/plugin-node-resolve": "^15.2.3",
44
52
  "@rollup/plugin-typescript": "^11.1.6",
45
53
  "@testing-library/react": "^16.0.1",
54
+ "@types/babel__core": "^7.20.5",
46
55
  "@types/react": "^18.3.6",
47
56
  "@types/react-dom": "^18.3.0",
48
57
  "@types/react-is": "^18.3.0",