@arcblock/react-hooks 1.1.27 → 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 +1 -1
- package/lib/index.js +6 -6
- package/lib/useBrowser.js +11 -14
- package/lib/useStorage.js +1 -1
- package/package.json +4 -3
- package/src/index.js +5 -0
- package/src/useBrowser.js +46 -0
- package/src/useInterval.js +22 -0
- package/src/useStorage.js +38 -0
package/LICENSE
CHANGED
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, "
|
|
6
|
+
Object.defineProperty(exports, "useBrowser", {
|
|
7
7
|
enumerable: true,
|
|
8
8
|
get: function get() {
|
|
9
|
-
return
|
|
9
|
+
return _useBrowser.default;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
Object.defineProperty(exports, "
|
|
12
|
+
Object.defineProperty(exports, "useInterval", {
|
|
13
13
|
enumerable: true,
|
|
14
14
|
get: function get() {
|
|
15
|
-
return
|
|
15
|
+
return _useInterval.default;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
-
Object.defineProperty(exports, "
|
|
18
|
+
Object.defineProperty(exports, "useStorage", {
|
|
19
19
|
enumerable: true,
|
|
20
20
|
get: function get() {
|
|
21
|
-
return
|
|
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
|
|
16
|
-
wallet:
|
|
17
|
-
wechat:
|
|
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
|
}
|
package/lib/useStorage.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arcblock/react-hooks",
|
|
3
|
-
"version": "1.
|
|
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": "
|
|
52
|
+
"gitHead": "0cafb36ee900f1f8f90790d77d88bd23624c30fd"
|
|
52
53
|
}
|
package/src/index.js
ADDED
|
@@ -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
|
+
}
|