@arcblock/ux 2.7.7 → 2.7.8
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.
@@ -0,0 +1,53 @@
|
|
1
|
+
import PropTypes from 'prop-types';
|
2
|
+
import { useMemoizedFn, useAsyncEffect } from 'ahooks';
|
3
|
+
import { createContext, useContext, useState } from 'react';
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
5
|
+
const BlockletContext = /*#__PURE__*/createContext();
|
6
|
+
const {
|
7
|
+
Provider,
|
8
|
+
Consumer
|
9
|
+
} = BlockletContext;
|
10
|
+
function BlockletProvider({
|
11
|
+
children,
|
12
|
+
baseUrl
|
13
|
+
}) {
|
14
|
+
const [blockletData, setBlockletData] = useState(null);
|
15
|
+
const getBlockleData = useMemoizedFn(async () => {
|
16
|
+
if (!baseUrl || window.location.href.startsWith(baseUrl)) {
|
17
|
+
return window.blocklet;
|
18
|
+
}
|
19
|
+
const url = new URL('__blocklet__.js', baseUrl);
|
20
|
+
url.searchParams.set('type', 'json');
|
21
|
+
const res = await fetch(url.href);
|
22
|
+
const jsonData = await res.json();
|
23
|
+
return jsonData;
|
24
|
+
});
|
25
|
+
useAsyncEffect(async () => {
|
26
|
+
try {
|
27
|
+
const data = await getBlockleData();
|
28
|
+
setBlockletData(data);
|
29
|
+
} catch {
|
30
|
+
// NOTICE: 如果获取指定 blockletData 失败,则使用 window.blocklet
|
31
|
+
setBlockletData(window.blocklet);
|
32
|
+
}
|
33
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
34
|
+
}, [baseUrl]);
|
35
|
+
return /*#__PURE__*/_jsx(Provider, {
|
36
|
+
value: blockletData,
|
37
|
+
children: blockletData ? children : null
|
38
|
+
});
|
39
|
+
}
|
40
|
+
function useBlockletContext() {
|
41
|
+
const blocklet = useContext(BlockletContext);
|
42
|
+
return {
|
43
|
+
blocklet
|
44
|
+
};
|
45
|
+
}
|
46
|
+
BlockletProvider.propTypes = {
|
47
|
+
baseUrl: PropTypes.string,
|
48
|
+
children: PropTypes.any.isRequired
|
49
|
+
};
|
50
|
+
BlockletProvider.defaultProps = {
|
51
|
+
baseUrl: ''
|
52
|
+
};
|
53
|
+
export { BlockletContext, BlockletProvider, Consumer as BlockletConsumer, useBlockletContext };
|
package/es/Locale/context.js
CHANGED
@@ -75,7 +75,7 @@ function LocaleProvider({
|
|
75
75
|
useEffect(() => {
|
76
76
|
const tmpLocale = locale || getLocale(langs);
|
77
77
|
if (tmpLocale !== currentLocale) {
|
78
|
-
changeLocale(
|
78
|
+
changeLocale(tmpLocale);
|
79
79
|
}
|
80
80
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
81
81
|
}, [locale]);
|
@@ -0,0 +1,64 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.BlockletContext = exports.BlockletConsumer = void 0;
|
7
|
+
exports.BlockletProvider = BlockletProvider;
|
8
|
+
exports.useBlockletContext = useBlockletContext;
|
9
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
10
|
+
var _ahooks = require("ahooks");
|
11
|
+
var _react = require("react");
|
12
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
14
|
+
const BlockletContext = /*#__PURE__*/(0, _react.createContext)();
|
15
|
+
exports.BlockletContext = BlockletContext;
|
16
|
+
const {
|
17
|
+
Provider,
|
18
|
+
Consumer
|
19
|
+
} = BlockletContext;
|
20
|
+
exports.BlockletConsumer = Consumer;
|
21
|
+
function BlockletProvider(_ref) {
|
22
|
+
let {
|
23
|
+
children,
|
24
|
+
baseUrl
|
25
|
+
} = _ref;
|
26
|
+
const [blockletData, setBlockletData] = (0, _react.useState)(null);
|
27
|
+
const getBlockleData = (0, _ahooks.useMemoizedFn)(async () => {
|
28
|
+
if (!baseUrl || window.location.href.startsWith(baseUrl)) {
|
29
|
+
return window.blocklet;
|
30
|
+
}
|
31
|
+
const url = new URL('__blocklet__.js', baseUrl);
|
32
|
+
url.searchParams.set('type', 'json');
|
33
|
+
const res = await fetch(url.href);
|
34
|
+
const jsonData = await res.json();
|
35
|
+
return jsonData;
|
36
|
+
});
|
37
|
+
(0, _ahooks.useAsyncEffect)(async () => {
|
38
|
+
try {
|
39
|
+
const data = await getBlockleData();
|
40
|
+
setBlockletData(data);
|
41
|
+
} catch (_unused) {
|
42
|
+
// NOTICE: 如果获取指定 blockletData 失败,则使用 window.blocklet
|
43
|
+
setBlockletData(window.blocklet);
|
44
|
+
}
|
45
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
46
|
+
}, [baseUrl]);
|
47
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Provider, {
|
48
|
+
value: blockletData,
|
49
|
+
children: blockletData ? children : null
|
50
|
+
});
|
51
|
+
}
|
52
|
+
function useBlockletContext() {
|
53
|
+
const blocklet = (0, _react.useContext)(BlockletContext);
|
54
|
+
return {
|
55
|
+
blocklet
|
56
|
+
};
|
57
|
+
}
|
58
|
+
BlockletProvider.propTypes = {
|
59
|
+
baseUrl: _propTypes.default.string,
|
60
|
+
children: _propTypes.default.any.isRequired
|
61
|
+
};
|
62
|
+
BlockletProvider.defaultProps = {
|
63
|
+
baseUrl: ''
|
64
|
+
};
|
package/lib/Locale/context.js
CHANGED
@@ -102,7 +102,7 @@ function LocaleProvider(_ref) {
|
|
102
102
|
(0, _react.useEffect)(() => {
|
103
103
|
const tmpLocale = locale || getLocale(langs);
|
104
104
|
if (tmpLocale !== currentLocale) {
|
105
|
-
changeLocale(
|
105
|
+
changeLocale(tmpLocale);
|
106
106
|
}
|
107
107
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
108
108
|
}, [locale]);
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@arcblock/ux",
|
3
|
-
"version": "2.7.
|
3
|
+
"version": "2.7.8",
|
4
4
|
"description": "Common used react components for arcblock products",
|
5
5
|
"keywords": [
|
6
6
|
"react",
|
@@ -81,6 +81,10 @@
|
|
81
81
|
"import": "./es/Blocklet/index.js",
|
82
82
|
"require": "./lib/Blocklet/index.js"
|
83
83
|
},
|
84
|
+
"./lib/BlockletContext": {
|
85
|
+
"import": "./es/BlockletContext/index.js",
|
86
|
+
"require": "./lib/BlockletContext/index.js"
|
87
|
+
},
|
84
88
|
"./lib/BlockletNFT": {
|
85
89
|
"import": "./es/BlockletNFT/index.js",
|
86
90
|
"require": "./lib/BlockletNFT/index.js"
|
@@ -314,11 +318,11 @@
|
|
314
318
|
"peerDependencies": {
|
315
319
|
"react": ">=18.1.0"
|
316
320
|
},
|
317
|
-
"gitHead": "
|
321
|
+
"gitHead": "3519d637481ef3ad3b90c7fccfbaa4e8f83576bc",
|
318
322
|
"dependencies": {
|
319
323
|
"@arcblock/did-motif": "^1.1.13",
|
320
|
-
"@arcblock/icons": "^2.7.
|
321
|
-
"@arcblock/react-hooks": "^2.7.
|
324
|
+
"@arcblock/icons": "^2.7.8",
|
325
|
+
"@arcblock/react-hooks": "^2.7.8",
|
322
326
|
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
|
323
327
|
"@emotion/react": "^11.10.4",
|
324
328
|
"@emotion/styled": "^11.10.4",
|
@@ -0,0 +1,48 @@
|
|
1
|
+
import PropTypes from 'prop-types';
|
2
|
+
import { useMemoizedFn, useAsyncEffect } from 'ahooks';
|
3
|
+
import { createContext, useContext, useState } from 'react';
|
4
|
+
|
5
|
+
const BlockletContext = createContext();
|
6
|
+
|
7
|
+
const { Provider, Consumer } = BlockletContext;
|
8
|
+
|
9
|
+
function BlockletProvider({ children, baseUrl }) {
|
10
|
+
const [blockletData, setBlockletData] = useState(null);
|
11
|
+
const getBlockleData = useMemoizedFn(async () => {
|
12
|
+
if (!baseUrl || window.location.href.startsWith(baseUrl)) {
|
13
|
+
return window.blocklet;
|
14
|
+
}
|
15
|
+
|
16
|
+
const url = new URL('__blocklet__.js', baseUrl);
|
17
|
+
url.searchParams.set('type', 'json');
|
18
|
+
const res = await fetch(url.href);
|
19
|
+
const jsonData = await res.json();
|
20
|
+
return jsonData;
|
21
|
+
});
|
22
|
+
useAsyncEffect(async () => {
|
23
|
+
try {
|
24
|
+
const data = await getBlockleData();
|
25
|
+
setBlockletData(data);
|
26
|
+
} catch {
|
27
|
+
// NOTICE: 如果获取指定 blockletData 失败,则使用 window.blocklet
|
28
|
+
setBlockletData(window.blocklet);
|
29
|
+
}
|
30
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
31
|
+
}, [baseUrl]);
|
32
|
+
return <Provider value={blockletData}>{blockletData ? children : null}</Provider>;
|
33
|
+
}
|
34
|
+
|
35
|
+
function useBlockletContext() {
|
36
|
+
const blocklet = useContext(BlockletContext);
|
37
|
+
return { blocklet };
|
38
|
+
}
|
39
|
+
|
40
|
+
BlockletProvider.propTypes = {
|
41
|
+
baseUrl: PropTypes.string,
|
42
|
+
children: PropTypes.any.isRequired,
|
43
|
+
};
|
44
|
+
BlockletProvider.defaultProps = {
|
45
|
+
baseUrl: '',
|
46
|
+
};
|
47
|
+
|
48
|
+
export { BlockletContext, BlockletProvider, Consumer as BlockletConsumer, useBlockletContext };
|
package/src/Locale/context.js
CHANGED
@@ -73,7 +73,7 @@ function LocaleProvider({ children, locale, fallbackLocale, translations, langua
|
|
73
73
|
useEffect(() => {
|
74
74
|
const tmpLocale = locale || getLocale(langs);
|
75
75
|
if (tmpLocale !== currentLocale) {
|
76
|
-
changeLocale(
|
76
|
+
changeLocale(tmpLocale);
|
77
77
|
}
|
78
78
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
79
79
|
}, [locale]);
|