@rc-component/util 1.0.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 (159) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +303 -0
  3. package/es/Children/toArray.d.ts +5 -0
  4. package/es/Children/toArray.js +19 -0
  5. package/es/Dom/canUseDom.d.ts +1 -0
  6. package/es/Dom/canUseDom.js +3 -0
  7. package/es/Dom/contains.d.ts +1 -0
  8. package/es/Dom/contains.js +20 -0
  9. package/es/Dom/dynamicCSS.d.ts +25 -0
  10. package/es/Dom/dynamicCSS.js +153 -0
  11. package/es/Dom/findDOMNode.d.ts +12 -0
  12. package/es/Dom/findDOMNode.js +36 -0
  13. package/es/Dom/focus.d.ts +8 -0
  14. package/es/Dom/focus.js +87 -0
  15. package/es/Dom/isVisible.d.ts +2 -0
  16. package/es/Dom/isVisible.js +27 -0
  17. package/es/Dom/scrollLocker.d.ts +12 -0
  18. package/es/Dom/scrollLocker.js +135 -0
  19. package/es/Dom/shadow.d.ts +8 -0
  20. package/es/Dom/shadow.js +18 -0
  21. package/es/Dom/styleChecker.d.ts +2 -0
  22. package/es/Dom/styleChecker.js +26 -0
  23. package/es/KeyCode.d.ts +436 -0
  24. package/es/KeyCode.js +538 -0
  25. package/es/Portal.d.ts +9 -0
  26. package/es/Portal.js +44 -0
  27. package/es/PortalWrapper.d.ts +51 -0
  28. package/es/PortalWrapper.js +217 -0
  29. package/es/React/isFragment.d.ts +4 -0
  30. package/es/React/isFragment.js +18 -0
  31. package/es/React/render.d.ts +13 -0
  32. package/es/React/render.js +114 -0
  33. package/es/composeProps.d.ts +2 -0
  34. package/es/composeProps.js +24 -0
  35. package/es/getScrollBarSize.d.ts +7 -0
  36. package/es/getScrollBarSize.js +76 -0
  37. package/es/hooks/useEffect.d.ts +2 -0
  38. package/es/hooks/useEffect.js +14 -0
  39. package/es/hooks/useEvent.d.ts +2 -0
  40. package/es/hooks/useEvent.js +16 -0
  41. package/es/hooks/useId.d.ts +4 -0
  42. package/es/hooks/useId.js +69 -0
  43. package/es/hooks/useLayoutEffect.d.ts +4 -0
  44. package/es/hooks/useLayoutEffect.js +30 -0
  45. package/es/hooks/useMemo.d.ts +1 -0
  46. package/es/hooks/useMemo.js +9 -0
  47. package/es/hooks/useMergedState.d.ts +12 -0
  48. package/es/hooks/useMergedState.js +68 -0
  49. package/es/hooks/useMobile.d.ts +6 -0
  50. package/es/hooks/useMobile.js +25 -0
  51. package/es/hooks/useState.d.ts +14 -0
  52. package/es/hooks/useState.js +32 -0
  53. package/es/hooks/useSyncState.d.ts +9 -0
  54. package/es/hooks/useSyncState.js +29 -0
  55. package/es/index.d.ts +6 -0
  56. package/es/index.js +6 -0
  57. package/es/isEqual.d.ts +9 -0
  58. package/es/isEqual.js +55 -0
  59. package/es/isMobile.d.ts +2 -0
  60. package/es/isMobile.js +7 -0
  61. package/es/omit.d.ts +1 -0
  62. package/es/omit.js +9 -0
  63. package/es/pickAttrs.d.ts +11 -0
  64. package/es/pickAttrs.js +51 -0
  65. package/es/proxyObject.d.ts +4 -0
  66. package/es/proxyObject.js +19 -0
  67. package/es/raf.d.ts +6 -0
  68. package/es/raf.js +54 -0
  69. package/es/ref.d.ts +19 -0
  70. package/es/ref.js +89 -0
  71. package/es/setStyle.d.ts +12 -0
  72. package/es/setStyle.js +26 -0
  73. package/es/test/domHook.d.ts +8 -0
  74. package/es/test/domHook.js +64 -0
  75. package/es/utils/get.d.ts +1 -0
  76. package/es/utils/get.js +10 -0
  77. package/es/utils/set.d.ts +6 -0
  78. package/es/utils/set.js +93 -0
  79. package/es/warning.d.ts +32 -0
  80. package/es/warning.js +68 -0
  81. package/lib/Children/toArray.d.ts +5 -0
  82. package/lib/Children/toArray.js +26 -0
  83. package/lib/Dom/canUseDom.d.ts +1 -0
  84. package/lib/Dom/canUseDom.js +9 -0
  85. package/lib/Dom/contains.d.ts +1 -0
  86. package/lib/Dom/contains.js +26 -0
  87. package/lib/Dom/dynamicCSS.d.ts +25 -0
  88. package/lib/Dom/dynamicCSS.js +163 -0
  89. package/lib/Dom/findDOMNode.d.ts +12 -0
  90. package/lib/Dom/findDOMNode.js +45 -0
  91. package/lib/Dom/focus.d.ts +8 -0
  92. package/lib/Dom/focus.js +98 -0
  93. package/lib/Dom/isVisible.d.ts +2 -0
  94. package/lib/Dom/isVisible.js +33 -0
  95. package/lib/Dom/scrollLocker.d.ts +12 -0
  96. package/lib/Dom/scrollLocker.js +141 -0
  97. package/lib/Dom/shadow.d.ts +8 -0
  98. package/lib/Dom/shadow.js +25 -0
  99. package/lib/Dom/styleChecker.d.ts +2 -0
  100. package/lib/Dom/styleChecker.js +33 -0
  101. package/lib/KeyCode.d.ts +436 -0
  102. package/lib/KeyCode.js +544 -0
  103. package/lib/Portal.d.ts +9 -0
  104. package/lib/Portal.js +51 -0
  105. package/lib/PortalWrapper.d.ts +51 -0
  106. package/lib/PortalWrapper.js +226 -0
  107. package/lib/React/isFragment.d.ts +4 -0
  108. package/lib/React/isFragment.js +24 -0
  109. package/lib/React/render.d.ts +13 -0
  110. package/lib/React/render.js +125 -0
  111. package/lib/composeProps.d.ts +2 -0
  112. package/lib/composeProps.js +30 -0
  113. package/lib/getScrollBarSize.d.ts +7 -0
  114. package/lib/getScrollBarSize.js +84 -0
  115. package/lib/hooks/useEffect.d.ts +2 -0
  116. package/lib/hooks/useEffect.js +22 -0
  117. package/lib/hooks/useEvent.d.ts +2 -0
  118. package/lib/hooks/useEvent.js +26 -0
  119. package/lib/hooks/useId.d.ts +4 -0
  120. package/lib/hooks/useId.js +78 -0
  121. package/lib/hooks/useLayoutEffect.d.ts +4 -0
  122. package/lib/hooks/useLayoutEffect.js +39 -0
  123. package/lib/hooks/useMemo.d.ts +1 -0
  124. package/lib/hooks/useMemo.js +18 -0
  125. package/lib/hooks/useMergedState.d.ts +12 -0
  126. package/lib/hooks/useMergedState.js +75 -0
  127. package/lib/hooks/useMobile.d.ts +6 -0
  128. package/lib/hooks/useMobile.js +31 -0
  129. package/lib/hooks/useState.d.ts +14 -0
  130. package/lib/hooks/useState.js +41 -0
  131. package/lib/hooks/useSyncState.d.ts +9 -0
  132. package/lib/hooks/useSyncState.js +39 -0
  133. package/lib/index.d.ts +6 -0
  134. package/lib/index.js +60 -0
  135. package/lib/isEqual.d.ts +9 -0
  136. package/lib/isEqual.js +61 -0
  137. package/lib/isMobile.d.ts +2 -0
  138. package/lib/isMobile.js +13 -0
  139. package/lib/omit.d.ts +1 -0
  140. package/lib/omit.js +15 -0
  141. package/lib/pickAttrs.d.ts +11 -0
  142. package/lib/pickAttrs.js +57 -0
  143. package/lib/proxyObject.d.ts +4 -0
  144. package/lib/proxyObject.js +25 -0
  145. package/lib/raf.d.ts +6 -0
  146. package/lib/raf.js +60 -0
  147. package/lib/ref.d.ts +19 -0
  148. package/lib/ref.js +96 -0
  149. package/lib/setStyle.d.ts +12 -0
  150. package/lib/setStyle.js +32 -0
  151. package/lib/test/domHook.d.ts +8 -0
  152. package/lib/test/domHook.js +71 -0
  153. package/lib/utils/get.d.ts +1 -0
  154. package/lib/utils/get.js +16 -0
  155. package/lib/utils/set.d.ts +6 -0
  156. package/lib/utils/set.js +101 -0
  157. package/lib/warning.d.ts +32 -0
  158. package/lib/warning.js +81 -0
  159. package/package.json +76 -0
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ exports.resetUuid = resetUuid;
8
+ var React = _interopRequireWildcard(require("react"));
9
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
10
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
12
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
13
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
14
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
15
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
16
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
17
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
18
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
20
+ 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; }
21
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
22
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
23
+ function getUseId() {
24
+ // We need fully clone React function here to avoid webpack warning React 17 do not export `useId`
25
+ var fullClone = _objectSpread({}, React);
26
+ return fullClone.useId;
27
+ }
28
+ var uuid = 0;
29
+
30
+ /** @private Note only worked in develop env. Not work in production. */
31
+ function resetUuid() {
32
+ if (process.env.NODE_ENV !== 'production') {
33
+ uuid = 0;
34
+ }
35
+ }
36
+ var useOriginId = getUseId();
37
+ var _default = exports.default = useOriginId ?
38
+ // Use React `useId`
39
+ function useId(id) {
40
+ var reactId = useOriginId();
41
+
42
+ // Developer passed id is single source of truth
43
+ if (id) {
44
+ return id;
45
+ }
46
+
47
+ // Test env always return mock id
48
+ if (process.env.NODE_ENV === 'test') {
49
+ return 'test-id';
50
+ }
51
+ return reactId;
52
+ } :
53
+ // Use compatible of `useId`
54
+ function useCompatId(id) {
55
+ // Inner id for accessibility usage. Only work in client side
56
+ var _React$useState = React.useState('ssr-id'),
57
+ _React$useState2 = _slicedToArray(_React$useState, 2),
58
+ innerId = _React$useState2[0],
59
+ setInnerId = _React$useState2[1];
60
+ React.useEffect(function () {
61
+ var nextId = uuid;
62
+ uuid += 1;
63
+ setInnerId("rc_unique_".concat(nextId));
64
+ }, []);
65
+
66
+ // Developer passed id is single source of truth
67
+ if (id) {
68
+ return id;
69
+ }
70
+
71
+ // Test env always return mock id
72
+ if (process.env.NODE_ENV === 'test') {
73
+ return 'test-id';
74
+ }
75
+
76
+ // Return react native id or inner id
77
+ return innerId;
78
+ };
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ declare const useLayoutEffect: (callback: (mount: boolean) => void | VoidFunction, deps?: React.DependencyList) => void;
3
+ export declare const useLayoutUpdateEffect: typeof React.useEffect;
4
+ export default useLayoutEffect;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useLayoutUpdateEffect = exports.default = void 0;
8
+ var React = _interopRequireWildcard(require("react"));
9
+ var _canUseDom = _interopRequireDefault(require("../Dom/canUseDom"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
12
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
+ /**
14
+ * Wrap `React.useLayoutEffect` which will not throw warning message in test env
15
+ */
16
+ var useInternalLayoutEffect = process.env.NODE_ENV !== 'test' && (0, _canUseDom.default)() ? React.useLayoutEffect : React.useEffect;
17
+ var useLayoutEffect = function useLayoutEffect(callback, deps) {
18
+ var firstMountRef = React.useRef(true);
19
+ useInternalLayoutEffect(function () {
20
+ return callback(firstMountRef.current);
21
+ }, deps);
22
+
23
+ // We tell react that first mount has passed
24
+ useInternalLayoutEffect(function () {
25
+ firstMountRef.current = false;
26
+ return function () {
27
+ firstMountRef.current = true;
28
+ };
29
+ }, []);
30
+ };
31
+ var useLayoutUpdateEffect = exports.useLayoutUpdateEffect = function useLayoutUpdateEffect(callback, deps) {
32
+ useLayoutEffect(function (firstMount) {
33
+ if (!firstMount) {
34
+ return callback();
35
+ }
36
+ // eslint-disable-next-line react-hooks/exhaustive-deps
37
+ }, deps);
38
+ };
39
+ var _default = exports.default = useLayoutEffect;
@@ -0,0 +1 @@
1
+ export default function useMemo<Value, Condition = any[]>(getValue: () => Value, condition: Condition, shouldUpdate: (prev: Condition, next: Condition) => boolean): Value;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = useMemo;
8
+ var React = _interopRequireWildcard(require("react"));
9
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
10
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
+ function useMemo(getValue, condition, shouldUpdate) {
12
+ var cacheRef = React.useRef({});
13
+ if (!('value' in cacheRef.current) || shouldUpdate(cacheRef.current.condition, condition)) {
14
+ cacheRef.current.value = getValue();
15
+ cacheRef.current.condition = condition;
16
+ }
17
+ return cacheRef.current.value;
18
+ }
@@ -0,0 +1,12 @@
1
+ type Updater<T> = (updater: T | ((origin: T) => T), ignoreDestroy?: boolean) => void;
2
+ /**
3
+ * Similar to `useState` but will use props value if provided.
4
+ * Note that internal use rc-util `useState` hook.
5
+ */
6
+ export default function useMergedState<T, R = T>(defaultStateValue: T | (() => T), option?: {
7
+ defaultValue?: T | (() => T);
8
+ value?: T;
9
+ onChange?: (value: T, prevValue: T) => void;
10
+ postState?: (value: T) => T;
11
+ }): [R, Updater<T>];
12
+ export {};
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useMergedState;
7
+ var _useEvent = _interopRequireDefault(require("./useEvent"));
8
+ var _useLayoutEffect = require("./useLayoutEffect");
9
+ var _useState5 = _interopRequireDefault(require("./useState"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
12
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
13
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
14
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
15
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
16
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
17
+ /** We only think `undefined` is empty */
18
+ function hasValue(value) {
19
+ return value !== undefined;
20
+ }
21
+
22
+ /**
23
+ * Similar to `useState` but will use props value if provided.
24
+ * Note that internal use rc-util `useState` hook.
25
+ */
26
+ function useMergedState(defaultStateValue, option) {
27
+ var _ref = option || {},
28
+ defaultValue = _ref.defaultValue,
29
+ value = _ref.value,
30
+ onChange = _ref.onChange,
31
+ postState = _ref.postState;
32
+
33
+ // ======================= Init =======================
34
+ var _useState = (0, _useState5.default)(function () {
35
+ if (hasValue(value)) {
36
+ return value;
37
+ } else if (hasValue(defaultValue)) {
38
+ return typeof defaultValue === 'function' ? defaultValue() : defaultValue;
39
+ } else {
40
+ return typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue;
41
+ }
42
+ }),
43
+ _useState2 = _slicedToArray(_useState, 2),
44
+ innerValue = _useState2[0],
45
+ setInnerValue = _useState2[1];
46
+ var mergedValue = value !== undefined ? value : innerValue;
47
+ var postMergedValue = postState ? postState(mergedValue) : mergedValue;
48
+
49
+ // ====================== Change ======================
50
+ var onChangeFn = (0, _useEvent.default)(onChange);
51
+ var _useState3 = (0, _useState5.default)([mergedValue]),
52
+ _useState4 = _slicedToArray(_useState3, 2),
53
+ prevValue = _useState4[0],
54
+ setPrevValue = _useState4[1];
55
+ (0, _useLayoutEffect.useLayoutUpdateEffect)(function () {
56
+ var prev = prevValue[0];
57
+ if (innerValue !== prev) {
58
+ onChangeFn(innerValue, prev);
59
+ }
60
+ }, [prevValue]);
61
+
62
+ // Sync value back to `undefined` when it from control to un-control
63
+ (0, _useLayoutEffect.useLayoutUpdateEffect)(function () {
64
+ if (!hasValue(value)) {
65
+ setInnerValue(value);
66
+ }
67
+ }, [value]);
68
+
69
+ // ====================== Update ======================
70
+ var triggerChange = (0, _useEvent.default)(function (updater, ignoreDestroy) {
71
+ setInnerValue(updater, ignoreDestroy);
72
+ setPrevValue([mergedValue], ignoreDestroy);
73
+ });
74
+ return [postMergedValue, triggerChange];
75
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Hook to detect if the user is on a mobile device
3
+ * Notice that this hook will only detect the device type in effect, so it will always be false in server side
4
+ */
5
+ declare const useMobile: () => boolean;
6
+ export default useMobile;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ var _isMobile = _interopRequireDefault(require("../isMobile"));
9
+ var _useLayoutEffect = _interopRequireDefault(require("./useLayoutEffect"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
12
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
13
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
14
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
15
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
16
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
17
+ /**
18
+ * Hook to detect if the user is on a mobile device
19
+ * Notice that this hook will only detect the device type in effect, so it will always be false in server side
20
+ */
21
+ var useMobile = function useMobile() {
22
+ var _useState = (0, _react.useState)(false),
23
+ _useState2 = _slicedToArray(_useState, 2),
24
+ mobile = _useState2[0],
25
+ setMobile = _useState2[1];
26
+ (0, _useLayoutEffect.default)(function () {
27
+ setMobile((0, _isMobile.default)());
28
+ }, []);
29
+ return mobile;
30
+ };
31
+ var _default = exports.default = useMobile;
@@ -0,0 +1,14 @@
1
+ type Updater<T> = T | ((prevValue: T) => T);
2
+ export type SetState<T> = (nextValue: Updater<T>,
3
+ /**
4
+ * Will not update state when destroyed.
5
+ * Developer should make sure this is safe to ignore.
6
+ */
7
+ ignoreDestroy?: boolean) => void;
8
+ /**
9
+ * Same as React.useState but `setState` accept `ignoreDestroy` param to not to setState after destroyed.
10
+ * We do not make this auto is to avoid real memory leak.
11
+ * Developer should confirm it's safe to ignore themselves.
12
+ */
13
+ export default function useSafeState<T>(defaultValue?: T | (() => T)): [T, SetState<T>];
14
+ export {};
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = useSafeState;
8
+ var React = _interopRequireWildcard(require("react"));
9
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
10
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
12
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
13
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
14
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
15
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
16
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
17
+ /**
18
+ * Same as React.useState but `setState` accept `ignoreDestroy` param to not to setState after destroyed.
19
+ * We do not make this auto is to avoid real memory leak.
20
+ * Developer should confirm it's safe to ignore themselves.
21
+ */
22
+ function useSafeState(defaultValue) {
23
+ var destroyRef = React.useRef(false);
24
+ var _React$useState = React.useState(defaultValue),
25
+ _React$useState2 = _slicedToArray(_React$useState, 2),
26
+ value = _React$useState2[0],
27
+ setValue = _React$useState2[1];
28
+ React.useEffect(function () {
29
+ destroyRef.current = false;
30
+ return function () {
31
+ destroyRef.current = true;
32
+ };
33
+ }, []);
34
+ function safeSetState(updater, ignoreDestroy) {
35
+ if (ignoreDestroy && destroyRef.current) {
36
+ return;
37
+ }
38
+ setValue(updater);
39
+ }
40
+ return [value, safeSetState];
41
+ }
@@ -0,0 +1,9 @@
1
+ type Updater<T> = T | ((prevValue: T) => T);
2
+ export type SetState<T> = (nextValue: Updater<T>) => void;
3
+ /**
4
+ * Same as React.useState but will always get latest state.
5
+ * This is useful when React merge multiple state updates into one.
6
+ * e.g. onTransitionEnd trigger multiple event at once will be merged state update in React.
7
+ */
8
+ export default function useSyncState<T>(defaultValue?: T): [get: () => T, set: SetState<T>];
9
+ export {};
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = useSyncState;
8
+ var React = _interopRequireWildcard(require("react"));
9
+ var _useEvent = _interopRequireDefault(require("./useEvent"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
12
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
14
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
15
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
16
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
17
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
18
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
19
+ /**
20
+ * Same as React.useState but will always get latest state.
21
+ * This is useful when React merge multiple state updates into one.
22
+ * e.g. onTransitionEnd trigger multiple event at once will be merged state update in React.
23
+ */
24
+ function useSyncState(defaultValue) {
25
+ var _React$useReducer = React.useReducer(function (x) {
26
+ return x + 1;
27
+ }, 0),
28
+ _React$useReducer2 = _slicedToArray(_React$useReducer, 2),
29
+ forceUpdate = _React$useReducer2[1];
30
+ var currentValueRef = React.useRef(defaultValue);
31
+ var getValue = (0, _useEvent.default)(function () {
32
+ return currentValueRef.current;
33
+ });
34
+ var setValue = (0, _useEvent.default)(function (updater) {
35
+ currentValueRef.current = typeof updater === 'function' ? updater(currentValueRef.current) : updater;
36
+ forceUpdate();
37
+ });
38
+ return [getValue, setValue];
39
+ }
package/lib/index.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export { default as useEvent } from './hooks/useEvent';
2
+ export { default as useMergedState } from './hooks/useMergedState';
3
+ export { supportNodeRef, supportRef, useComposeRef } from './ref';
4
+ export { default as get } from './utils/get';
5
+ export { default as set } from './utils/set';
6
+ export { default as warning } from './warning';
package/lib/index.js ADDED
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "get", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _get.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "set", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _set.default;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "supportNodeRef", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _ref.supportNodeRef;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "supportRef", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _ref.supportRef;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "useComposeRef", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _ref.useComposeRef;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "useEvent", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _useEvent.default;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "useMergedState", {
43
+ enumerable: true,
44
+ get: function get() {
45
+ return _useMergedState.default;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "warning", {
49
+ enumerable: true,
50
+ get: function get() {
51
+ return _warning.default;
52
+ }
53
+ });
54
+ var _useEvent = _interopRequireDefault(require("./hooks/useEvent"));
55
+ var _useMergedState = _interopRequireDefault(require("./hooks/useMergedState"));
56
+ var _ref = require("./ref");
57
+ var _get = _interopRequireDefault(require("./utils/get"));
58
+ var _set = _interopRequireDefault(require("./utils/set"));
59
+ var _warning = _interopRequireDefault(require("./warning"));
60
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Deeply compares two object literals.
3
+ * @param obj1 object 1
4
+ * @param obj2 object 2
5
+ * @param shallow shallow compare
6
+ * @returns
7
+ */
8
+ declare function isEqual(obj1: any, obj2: any, shallow?: boolean): boolean;
9
+ export default isEqual;
package/lib/isEqual.js ADDED
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _warning = _interopRequireDefault(require("./warning"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
10
+ /**
11
+ * Deeply compares two object literals.
12
+ * @param obj1 object 1
13
+ * @param obj2 object 2
14
+ * @param shallow shallow compare
15
+ * @returns
16
+ */
17
+ function isEqual(obj1, obj2) {
18
+ var shallow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
19
+ // https://github.com/mapbox/mapbox-gl-js/pull/5979/files#diff-fde7145050c47cc3a306856efd5f9c3016e86e859de9afbd02c879be5067e58f
20
+ var refSet = new Set();
21
+ function deepEqual(a, b) {
22
+ var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
23
+ var circular = refSet.has(a);
24
+ (0, _warning.default)(!circular, 'Warning: There may be circular references');
25
+ if (circular) {
26
+ return false;
27
+ }
28
+ if (a === b) {
29
+ return true;
30
+ }
31
+ if (shallow && level > 1) {
32
+ return false;
33
+ }
34
+ refSet.add(a);
35
+ var newLevel = level + 1;
36
+ if (Array.isArray(a)) {
37
+ if (!Array.isArray(b) || a.length !== b.length) {
38
+ return false;
39
+ }
40
+ for (var i = 0; i < a.length; i++) {
41
+ if (!deepEqual(a[i], b[i], newLevel)) {
42
+ return false;
43
+ }
44
+ }
45
+ return true;
46
+ }
47
+ if (a && b && _typeof(a) === 'object' && _typeof(b) === 'object') {
48
+ var keys = Object.keys(a);
49
+ if (keys.length !== Object.keys(b).length) {
50
+ return false;
51
+ }
52
+ return keys.every(function (key) {
53
+ return deepEqual(a[key], b[key], newLevel);
54
+ });
55
+ }
56
+ // other
57
+ return false;
58
+ }
59
+ return deepEqual(obj1, obj2);
60
+ }
61
+ var _default = exports.default = isEqual;
@@ -0,0 +1,2 @@
1
+ declare const _default: () => boolean;
2
+ export default _default;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _default = exports.default = function _default() {
8
+ if (typeof navigator === 'undefined' || typeof window === 'undefined') {
9
+ return false;
10
+ }
11
+ var agent = navigator.userAgent || navigator.vendor || window.opera;
12
+ return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent === null || agent === void 0 ? void 0 : agent.substr(0, 4));
13
+ };
package/lib/omit.d.ts ADDED
@@ -0,0 +1 @@
1
+ export default function omit<T extends object, K extends keyof T>(obj: T, fields: K[] | readonly K[]): Omit<T, K>;
package/lib/omit.js ADDED
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = omit;
7
+ function omit(obj, fields) {
8
+ var clone = Object.assign({}, obj);
9
+ if (Array.isArray(fields)) {
10
+ fields.forEach(function (key) {
11
+ delete clone[key];
12
+ });
13
+ }
14
+ return clone;
15
+ }
@@ -0,0 +1,11 @@
1
+ export interface PickConfig {
2
+ aria?: boolean;
3
+ data?: boolean;
4
+ attr?: boolean;
5
+ }
6
+ /**
7
+ * Picker props from exist props with filter
8
+ * @param props Passed props
9
+ * @param ariaOnly boolean | { aria?: boolean; data?: boolean; attr?: boolean; } filter config
10
+ */
11
+ export default function pickAttrs(props: object, ariaOnly?: boolean | PickConfig): {};