@arcblock/react-hooks 0.78.25 → 1.6.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2018-2019 ArcBlock
1
+ Copyright 2018-2022 ArcBlock
2
2
 
3
3
  Licensed under the Apache License, Version 2.0 (the "License");
4
4
  you may not use this file except in compliance with the License.
package/lib/index.js CHANGED
@@ -3,22 +3,22 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "useInterval", {
6
+ Object.defineProperty(exports, "useBrowser", {
7
7
  enumerable: true,
8
8
  get: function get() {
9
- return _useInterval.default;
9
+ return _useBrowser.default;
10
10
  }
11
11
  });
12
- Object.defineProperty(exports, "useStorage", {
12
+ Object.defineProperty(exports, "useInterval", {
13
13
  enumerable: true,
14
14
  get: function get() {
15
- return _useStorage.default;
15
+ return _useInterval.default;
16
16
  }
17
17
  });
18
- Object.defineProperty(exports, "useBrowser", {
18
+ Object.defineProperty(exports, "useStorage", {
19
19
  enumerable: true,
20
20
  get: function get() {
21
- return _useBrowser.default;
21
+ return _useStorage.default;
22
22
  }
23
23
  });
24
24
 
package/lib/useBrowser.js CHANGED
@@ -11,11 +11,17 @@ var _ismobilejs = _interopRequireDefault(require("ismobilejs"));
11
11
 
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
13
 
14
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
+
16
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
+
18
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
+
14
20
  function useBrowser() {
15
- const [browser, setBrowser] = (0, _react.useState)({
16
- wallet: false,
17
- wechat: false,
18
- mobile: {
21
+ const [browser] = (0, _react.useState)({
22
+ wallet: navigator.userAgent.indexOf('ABTWallet') > -1,
23
+ wechat: /MicroMessenger/i.test(navigator.userAgent),
24
+ mobile: _objectSpread({
19
25
  apple: {
20
26
  phone: false,
21
27
  ipod: false,
@@ -48,16 +54,7 @@ function useBrowser() {
48
54
  phone: false,
49
55
  tablet: false,
50
56
  any: false
51
- }
57
+ }, (0, _ismobilejs.default)(navigator.userAgent))
52
58
  });
53
- (0, _react.useEffect)(() => {
54
- const isWallet = navigator.userAgent.indexOf('ABTWallet') > -1;
55
- const isWechat = /MicroMessenger/i.test(navigator.userAgent);
56
- setBrowser({
57
- wallet: isWallet,
58
- wechat: isWechat,
59
- mobile: (0, _ismobilejs.default)(navigator.userAgent)
60
- });
61
- }, []);
62
59
  return browser;
63
60
  }
@@ -7,14 +7,13 @@ exports.default = useInterval;
7
7
 
8
8
  var _react = require("react");
9
9
 
10
- /* eslint react-hooks/rules-of-hooks:"off" */
10
+ /* eslint-disable consistent-return */
11
11
  function useInterval(callback, delay) {
12
12
  const savedCallback = (0, _react.useRef)(); // Remember the latest callback.
13
13
 
14
14
  (0, _react.useEffect)(() => {
15
15
  savedCallback.current = callback;
16
16
  }, [callback]); // Set up the interval.
17
- // eslint-disable-next-line
18
17
 
19
18
  (0, _react.useEffect)(() => {
20
19
  function tick() {
package/lib/useStorage.js CHANGED
@@ -9,7 +9,6 @@ var _react = require("react");
9
9
 
10
10
  var _eventTargetShim = require("event-target-shim");
11
11
 
12
- /* eslint-disable no-underscore-dangle */
13
12
  const evtTarget = new _eventTargetShim.EventTarget();
14
13
 
15
14
  function useStorage(storage, keyPrefix) {
@@ -33,7 +32,7 @@ function useStorage(storage, keyPrefix) {
33
32
  }
34
33
 
35
34
  (0, _react.useEffect)(() => {
36
- const listener = (_ref) => {
35
+ const listener = _ref => {
37
36
  let {
38
37
  detail
39
38
  } = _ref;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcblock/react-hooks",
3
- "version": "0.78.25",
3
+ "version": "1.6.59",
4
4
  "description": "React hooks used by arcblock products",
5
5
  "keywords": [
6
6
  "react",
@@ -12,7 +12,8 @@
12
12
  "license": "Apache-2.0",
13
13
  "main": "lib/index.js",
14
14
  "files": [
15
- "lib"
15
+ "lib",
16
+ "src"
16
17
  ],
17
18
  "repository": {
18
19
  "type": "git",
@@ -48,5 +49,5 @@
48
49
  "eslint-plugin-react-hooks": "^4.2.0",
49
50
  "jest": "^24.1.0"
50
51
  },
51
- "gitHead": "ab75b1a03c6021b4cdeafc4f98100345854eabd9"
52
+ "gitHead": "0cafb36ee900f1f8f90790d77d88bd23624c30fd"
52
53
  }
package/src/index.js ADDED
@@ -0,0 +1,5 @@
1
+ import useInterval from './useInterval';
2
+ import useStorage from './useStorage';
3
+ import useBrowser from './useBrowser';
4
+
5
+ export { useInterval, useStorage, useBrowser };
@@ -0,0 +1,46 @@
1
+ import { useState } from 'react';
2
+ import isMobile from 'ismobilejs';
3
+
4
+ export default function useBrowser() {
5
+ const [browser] = useState({
6
+ wallet: navigator.userAgent.indexOf('ABTWallet') > -1,
7
+ wechat: /MicroMessenger/i.test(navigator.userAgent),
8
+ mobile: {
9
+ apple: {
10
+ phone: false,
11
+ ipod: false,
12
+ tablet: false,
13
+ device: false,
14
+ },
15
+ amazon: {
16
+ phone: false,
17
+ tablet: false,
18
+ device: false,
19
+ },
20
+ android: {
21
+ phone: false,
22
+ tablet: false,
23
+ device: false,
24
+ },
25
+ windows: {
26
+ phone: false,
27
+ tablet: false,
28
+ device: false,
29
+ },
30
+ other: {
31
+ blackberry: false,
32
+ blackberry10: false,
33
+ opera: false,
34
+ firefox: false,
35
+ chrome: false,
36
+ device: false,
37
+ },
38
+ phone: false,
39
+ tablet: false,
40
+ any: false,
41
+ ...isMobile(navigator.userAgent),
42
+ },
43
+ });
44
+
45
+ return browser;
46
+ }
@@ -0,0 +1,22 @@
1
+ /* eslint-disable consistent-return */
2
+ import { useEffect, useRef } from 'react';
3
+
4
+ export default function useInterval(callback, delay) {
5
+ const savedCallback = useRef();
6
+
7
+ // Remember the latest callback.
8
+ useEffect(() => {
9
+ savedCallback.current = callback;
10
+ }, [callback]);
11
+
12
+ // Set up the interval.
13
+ useEffect(() => {
14
+ function tick() {
15
+ savedCallback.current();
16
+ }
17
+ if (delay !== null) {
18
+ const id = setInterval(tick, delay);
19
+ return () => clearInterval(id);
20
+ }
21
+ }, [delay]);
22
+ }
@@ -0,0 +1,38 @@
1
+ import { useState, useEffect } from 'react';
2
+ import { EventTarget } from 'event-target-shim';
3
+
4
+ const evtTarget = new EventTarget();
5
+ export default function useStorage(storage, keyPrefix) {
6
+ return (key, defaultValue) => {
7
+ const storeKey = `${keyPrefix}.${key}`;
8
+ const raw = storage.getItem(storeKey);
9
+ const [value, setValue] = useState(raw ? JSON.parse(raw) : defaultValue);
10
+
11
+ const updater = updatedValue => {
12
+ setValue(updatedValue);
13
+ storage.setItem(storeKey, JSON.stringify(updatedValue));
14
+ evtTarget.dispatchEvent(new CustomEvent('storage_change', { detail: { key } }));
15
+ };
16
+
17
+ if (defaultValue != null && !raw) {
18
+ updater(defaultValue);
19
+ }
20
+
21
+ useEffect(() => {
22
+ const listener = ({ detail }) => {
23
+ if (detail.key === key) {
24
+ const _raw = storage.getItem(storeKey);
25
+
26
+ if (_raw !== raw) {
27
+ setValue(JSON.parse(_raw));
28
+ }
29
+ }
30
+ };
31
+
32
+ evtTarget.addEventListener('storage_change', listener);
33
+ return () => evtTarget.removeEventListener('storage_change', listener);
34
+ });
35
+
36
+ return [value, updater];
37
+ };
38
+ }