@abtnode/ux 1.8.35 → 1.8.37

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,102 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = DeleteStore;
7
+ var _react = require("react");
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
10
+ var _useTheme = _interopRequireDefault(require("@mui/material/styles/useTheme"));
11
+ var _context = require("@arcblock/ux/lib/Locale/context");
12
+ var _DeleteOutline = _interopRequireDefault(require("@mui/icons-material/DeleteOutline"));
13
+ var _node = require("../contexts/node");
14
+ var _toast = _interopRequireDefault(require("../toast"));
15
+ var _deleteConfirm = _interopRequireDefault(require("../delete-confirm"));
16
+ var _util = require("../util");
17
+ var _jsxRuntime = require("react/jsx-runtime");
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ function DeleteStore(_ref) {
20
+ let {
21
+ store,
22
+ teamDid,
23
+ onDelete
24
+ } = _ref;
25
+ const {
26
+ api
27
+ } = (0, _node.useNodeContext)();
28
+ const {
29
+ t
30
+ } = (0, _context.useLocaleContext)();
31
+ const [loading, setLoading] = (0, _react.useState)(false);
32
+ const [confirmSetting, setConfirmSetting] = (0, _react.useState)(null);
33
+ const theme = (0, _useTheme.default)();
34
+ const onCancel = () => {
35
+ setLoading(false);
36
+ setConfirmSetting(null);
37
+ };
38
+ const onConfirm = async () => {
39
+ try {
40
+ setLoading(true);
41
+ await api.deleteBlockletStore({
42
+ input: {
43
+ teamDid,
44
+ url: store.url
45
+ }
46
+ });
47
+ if (onDelete && typeof onDelete === 'function') {
48
+ onDelete();
49
+ }
50
+ } catch (err) {
51
+ _toast.default.error("Remove Blocklet Store Error: ".concat((0, _util.formatError)(err)));
52
+ } finally {
53
+ setLoading(false);
54
+ setConfirmSetting(null);
55
+ }
56
+ };
57
+ const setting = {
58
+ keyName: store.url,
59
+ title: t('store.blockletRegistry.deleteRegistry'),
60
+ description: t('store.blockletRegistry.deleteDesc', {
61
+ name: "<b>".concat(store.url, "</b>"),
62
+ color: theme.palette.error.main
63
+ }),
64
+ confirmPlaceholder: t('store.blockletRegistry.confirmDesc', {
65
+ name: store.url
66
+ }),
67
+ confirm: t('common.delConfirm'),
68
+ cancel: t('common.cancel'),
69
+ onConfirm,
70
+ onCancel
71
+ };
72
+ const onMenuItemClick = e => {
73
+ e.stopPropagation();
74
+ setConfirmSetting(setting);
75
+ };
76
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
77
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
78
+ disabled: loading,
79
+ onClick: onMenuItemClick,
80
+ size: "large",
81
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DeleteOutline.default, {})
82
+ }), confirmSetting && /*#__PURE__*/(0, _jsxRuntime.jsx)(_deleteConfirm.default, {
83
+ keyName: confirmSetting.keyName,
84
+ title: confirmSetting.title,
85
+ description: confirmSetting.description,
86
+ confirmPlaceholder: confirmSetting.confirmPlaceholder,
87
+ confirm: confirmSetting.confirm,
88
+ cancel: confirmSetting.cancel,
89
+ params: confirmSetting.params,
90
+ onConfirm: confirmSetting.onConfirm,
91
+ onCancel: confirmSetting.onCancel
92
+ })]
93
+ });
94
+ }
95
+ DeleteStore.propTypes = {
96
+ teamDid: _propTypes.default.string.isRequired,
97
+ store: _propTypes.default.object.isRequired,
98
+ onDelete: _propTypes.default.func
99
+ };
100
+ DeleteStore.defaultProps = {
101
+ onDelete: () => {}
102
+ };
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = StoreItem;
7
+ var _styles = require("@mui/styles");
8
+ var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
9
+ var _ListItemSecondaryAction = _interopRequireDefault(require("@mui/material/ListItemSecondaryAction"));
10
+ var _Launch = _interopRequireDefault(require("@mui/icons-material/Launch"));
11
+ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+ var _delete = _interopRequireDefault(require("./delete"));
14
+ var _jsxRuntime = require("react/jsx-runtime");
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ /* eslint-disable react/jsx-one-expression-per-line */
17
+
18
+ const useStyles = (0, _styles.makeStyles)(() => ({
19
+ buttonText: {
20
+ textTransform: 'none !important'
21
+ },
22
+ iconRoot: {
23
+ minWidth: 24
24
+ },
25
+ menuName: {
26
+ display: 'flex',
27
+ flexDirection: 'column',
28
+ marginRight: '100px',
29
+ '& span': {
30
+ overflow: 'hidden',
31
+ textOverflow: 'ellipsis',
32
+ whiteSpace: 'nowrap'
33
+ }
34
+ }
35
+ }));
36
+ function StoreItem(_ref) {
37
+ let {
38
+ teamDid,
39
+ store,
40
+ onDelete
41
+ } = _ref;
42
+ const classes = useStyles();
43
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
44
+ className: classes.menuName,
45
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
46
+ component: "span",
47
+ variant: "subtitle1",
48
+ style: {
49
+ fontWeight: '400'
50
+ },
51
+ children: store.name
52
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
53
+ className: "url",
54
+ component: "span",
55
+ variant: "inherit",
56
+ children: "".concat(store.url)
57
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_ListItemSecondaryAction.default, {
58
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
59
+ onClick: e => {
60
+ e.stopPropagation();
61
+ window.open(store.url);
62
+ },
63
+ size: "large",
64
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Launch.default, {})
65
+ }), !store.protected && /*#__PURE__*/(0, _jsxRuntime.jsx)(_delete.default, {
66
+ store: store,
67
+ onDelete: onDelete,
68
+ teamDid: teamDid
69
+ })]
70
+ })]
71
+ });
72
+ }
73
+ StoreItem.propTypes = {
74
+ teamDid: _propTypes.default.string.isRequired,
75
+ store: _propTypes.default.shape({
76
+ name: _propTypes.default.string.isRequired,
77
+ url: _propTypes.default.string.isRequired,
78
+ protected: _propTypes.default.bool
79
+ }).isRequired,
80
+ onDelete: _propTypes.default.func
81
+ };
82
+ StoreItem.defaultProps = {
83
+ onDelete: () => {}
84
+ };
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.api = void 0;
7
+ Object.defineProperty(exports, "axios", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _axios.default;
11
+ }
12
+ });
13
+ exports.default = void 0;
14
+ var _axios = _interopRequireDefault(require("axios"));
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ _axios.default.defaults.timeout = 10 * 1000; // 超时时间设为10s
17
+
18
+ const api = _axios.default.create();
19
+ exports.api = api;
20
+ var _default = api;
21
+ exports.default = _default;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.STORAGE_KEY_STORE_SERVER = exports.STORAGE_KEY_STORE_BLOCKLET = void 0;
7
+ const STORAGE_KEY_STORE_BLOCKLET = 'blocklet-add-component-registry';
8
+ exports.STORAGE_KEY_STORE_BLOCKLET = STORAGE_KEY_STORE_BLOCKLET;
9
+ const STORAGE_KEY_STORE_SERVER = 'server-add-registry';
10
+ exports.STORAGE_KEY_STORE_SERVER = STORAGE_KEY_STORE_SERVER;
package/lib/util/index.js CHANGED
@@ -30,8 +30,9 @@ exports.getEndPoint = void 0;
30
30
  exports.getExplorerLink = getExplorerLink;
31
31
  exports.getPathPrefix = exports.getIssuePassportLink = exports.getInviteLink = void 0;
32
32
  exports.getRelativeTime = getRelativeTime;
33
+ exports.getStoreList = void 0;
33
34
  exports.getWebWalletUrl = getWebWalletUrl;
34
- exports.isNewRegistryUrl = exports.isInstalling = exports.isInProgress = exports.isDownloading = exports.isChrome = exports.isCertificateMatch = exports.isBlockletDev = void 0;
35
+ exports.isNewStoreUrl = exports.isInstalling = exports.isInProgress = exports.isDownloading = exports.isChrome = exports.isCertificateMatch = exports.isBlockletDev = void 0;
35
36
  exports.isProtectedRole = isProtectedRole;
36
37
  exports.isUrlAccessible = exports.isSafari = void 0;
37
38
  exports.isValidClusterSize = isValidClusterSize;
@@ -443,7 +444,7 @@ function getWebWalletUrl(info) {
443
444
  } catch (err) {
444
445
  // Do nothing
445
446
  }
446
- return info && info.webWalletUrl ? info.webWalletUrl : '';
447
+ return info && info.webWalletUrl ? info.webWalletUrl : _constant.WEB_WALLET_URL;
447
448
  }
448
449
  function isValidClusterSize(data) {
449
450
  const {
@@ -620,15 +621,15 @@ function getRelativeTime(datetime) {
620
621
  }
621
622
 
622
623
  /**
623
- * 检查url是否 未添加到 store registryList
624
+ * 检查url是否 未添加到 store list
624
625
  * @param {string} url - 需要检查的url
625
- * @param {object[]} blockletRegistryList - 后端的store registryList, 一般是 info.blockletRegistryList
626
+ * @param {object[]} storeList - 后端的store list, 一般是 node.blockletRegistryList 或 blocklet.settings.storeList
626
627
  * @returns {Object.freeze({
627
628
  * isNew: boolean;
628
629
  * decoded: string;
629
630
  * })} - 返回判断是否是新的url和解码后的url
630
631
  */
631
- const isNewRegistryUrl = (url, blockletRegistryList) => {
632
+ const isNewStoreUrl = (url, storeList) => {
632
633
  if (typeof url === 'string') {
633
634
  let decoded = decodeURIComponent(url === null || url === void 0 ? void 0 : url.trim());
634
635
  const regex = /^https?:\/\//;
@@ -643,7 +644,7 @@ const isNewRegistryUrl = (url, blockletRegistryList) => {
643
644
  } catch (_unused2) {
644
645
  throw new Error('Invalid Blocklet Store URL');
645
646
  }
646
- if (blockletRegistryList !== null && blockletRegistryList !== void 0 && blockletRegistryList.some(item => [url, decoded].includes(item.url))) {
647
+ if (storeList !== null && storeList !== void 0 && storeList.some(item => [url, decoded].includes(item.url))) {
647
648
  return {
648
649
  isNew: false,
649
650
  decoded
@@ -659,7 +660,7 @@ const isNewRegistryUrl = (url, blockletRegistryList) => {
659
660
  decoded: ''
660
661
  };
661
662
  };
662
- exports.isNewRegistryUrl = isNewRegistryUrl;
663
+ exports.isNewStoreUrl = isNewStoreUrl;
663
664
  const isBlockletDev = blocklet => blocklet.mode === _constant2.BLOCKLET_MODES.DEVELOPMENT;
664
665
  exports.isBlockletDev = isBlockletDev;
665
666
  const APP_PREFIX = ((_window$env = window.env) === null || _window$env === void 0 ? void 0 : _window$env.groupPathPrefix) || '/';
@@ -676,4 +677,19 @@ const toSlotDomain = domain => {
676
677
  }
677
678
  return domain;
678
679
  };
679
- exports.toSlotDomain = toSlotDomain;
680
+ exports.toSlotDomain = toSlotDomain;
681
+ const getStoreList = _ref5 => {
682
+ var _blocklet$meta, _blocklet$settings;
683
+ let {
684
+ fromBlocklet,
685
+ nodeInfo,
686
+ blocklet
687
+ } = _ref5;
688
+ const teamDid = fromBlocklet ? blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta = blocklet.meta) === null || _blocklet$meta === void 0 ? void 0 : _blocklet$meta.did : nodeInfo === null || nodeInfo === void 0 ? void 0 : nodeInfo.did;
689
+ const storeList = fromBlocklet ? (blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$settings = blocklet.settings) === null || _blocklet$settings === void 0 ? void 0 : _blocklet$settings.storeList) || [] : (nodeInfo === null || nodeInfo === void 0 ? void 0 : nodeInfo.blockletRegistryList) || [];
690
+ return {
691
+ teamDid,
692
+ storeList
693
+ };
694
+ };
695
+ exports.getStoreList = getStoreList;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.8.35",
6
+ "version": "1.8.37",
7
7
  "description": "UX components shared across abtnode packages",
8
8
  "main": "lib/index.js",
9
9
  "files": [
@@ -21,17 +21,18 @@
21
21
  "author": "linchen <linchen1987@foxmail.com> (http://github.com/linchen1987)",
22
22
  "license": "MIT",
23
23
  "dependencies": {
24
- "@abtnode/auth": "1.8.35",
25
- "@abtnode/constant": "1.8.35",
26
- "@abtnode/util": "1.8.35",
24
+ "@abtnode/auth": "1.8.37",
25
+ "@abtnode/constant": "1.8.37",
26
+ "@abtnode/util": "1.8.37",
27
27
  "@arcblock/did-connect": "^2.4.52",
28
28
  "@arcblock/did-motif": "^1.1.10",
29
29
  "@arcblock/icons": "^2.4.52",
30
30
  "@arcblock/terminal": "^2.4.52",
31
31
  "@arcblock/ux": "^2.4.52",
32
- "@blocklet/constant": "1.8.35",
32
+ "@blocklet/constant": "1.8.37",
33
33
  "@blocklet/launcher-layout": "^1.9.10",
34
- "@blocklet/meta": "1.8.35",
34
+ "@blocklet/list": "^0.10.34",
35
+ "@blocklet/meta": "1.8.37",
35
36
  "@emotion/react": "^11.10.4",
36
37
  "@emotion/styled": "^11.10.4",
37
38
  "@material-table/core": "^0.2.48",
@@ -60,6 +61,8 @@
60
61
  "prop-types": "^15.8.1",
61
62
  "react": "^18.2.0",
62
63
  "react-color": "^2.19.3",
64
+ "react-error-boundary": "^3.1.4",
65
+ "react-iframe": "^1.8.5",
63
66
  "react-router-dom": "^6.4.2",
64
67
  "react-use": "^17.4.0",
65
68
  "semver": "^7.3.8",
@@ -73,5 +76,5 @@
73
76
  "@babel/preset-react": "^7.18.6",
74
77
  "babel-plugin-inline-react-svg": "^1.1.2"
75
78
  },
76
- "gitHead": "dd89e7a61dc8cff64302608ad5ab6545dd903daa"
79
+ "gitHead": "f26f451c6e2b1168b36f78269eafdf3f671236bf"
77
80
  }