@abtnode/ux 1.8.26 → 1.8.28

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 (88) hide show
  1. package/lib/actions.js +109 -0
  2. package/lib/blocklet/actions.js +437 -0
  3. package/lib/blocklet/audit-logs.js +194 -0
  4. package/lib/blocklet/avatar.js +96 -0
  5. package/lib/blocklet/blocklet-source.js +56 -0
  6. package/lib/blocklet/component/configuration.js +124 -0
  7. package/lib/blocklet/component/delete.js +115 -0
  8. package/lib/blocklet/component/environment.js +277 -0
  9. package/lib/blocklet/component/index.js +742 -0
  10. package/lib/blocklet/component/setting.js +135 -0
  11. package/lib/blocklet/configuration.js +463 -0
  12. package/lib/blocklet/disk-info.js +89 -0
  13. package/lib/blocklet/icons.js +26 -0
  14. package/lib/blocklet/log.js +55 -0
  15. package/lib/blocklet/mode.js +33 -0
  16. package/lib/blocklet/overview.js +184 -0
  17. package/lib/blocklet/runtime-info.js +85 -0
  18. package/lib/blocklet/status.js +103 -0
  19. package/lib/blocklet/util.js +119 -0
  20. package/lib/blocklet/version.js +178 -0
  21. package/lib/card-selector.js +9 -22
  22. package/lib/click-to-copy.js +36 -0
  23. package/lib/confirm.js +149 -0
  24. package/lib/contexts/audit-log.js +141 -0
  25. package/lib/contexts/deleting-blocklets.js +78 -0
  26. package/lib/contexts/node.js +28 -0
  27. package/lib/contexts/session.js +20 -0
  28. package/lib/contexts/team.js +19 -0
  29. package/lib/did-address.js +75 -0
  30. package/lib/dot.js +18 -0
  31. package/lib/form/form-text-input.js +12 -38
  32. package/lib/form/form-wrapper.js +0 -7
  33. package/lib/form/required.js +0 -6
  34. package/lib/hooks/mobile-width.js +19 -0
  35. package/lib/hooks/use-passport-id.js +0 -5
  36. package/lib/icons/long-arrow.svg +5 -0
  37. package/lib/index.js +0 -3
  38. package/lib/invitation/invitation-app.js +3 -21
  39. package/lib/invitation/invitation-passport.js +2 -16
  40. package/lib/invitation/invitation-receive.js +2 -19
  41. package/lib/invitation/invitation-user.js +0 -16
  42. package/lib/invitation/invitation.js +0 -23
  43. package/lib/issue-passport.js +2 -31
  44. package/lib/launch-blocklet/content-layout.js +3 -19
  45. package/lib/launch-blocklet/page-header.js +0 -9
  46. package/lib/layout/addon.js +0 -24
  47. package/lib/locales/en.js +1046 -38
  48. package/lib/locales/index.js +0 -3
  49. package/lib/locales/zh.js +1049 -36
  50. package/lib/logs/clock.js +19 -0
  51. package/lib/logs/log-terminal.js +172 -0
  52. package/lib/lost-passport.js +6 -51
  53. package/lib/nav-logo.js +12 -33
  54. package/lib/passport-tag.js +41 -0
  55. package/lib/permission.js +68 -0
  56. package/lib/relative-time.js +61 -0
  57. package/lib/schema-form/color-input.js +2 -15
  58. package/lib/schema-form/common-prop-types.js +0 -3
  59. package/lib/schema-form/index.js +8 -45
  60. package/lib/schema-form/passport-input.js +6 -24
  61. package/lib/schema-form/text-input.js +9 -26
  62. package/lib/table-icons.js +42 -0
  63. package/lib/table.js +13 -0
  64. package/lib/tag.js +35 -0
  65. package/lib/team/members/actions.js +99 -0
  66. package/lib/team/members/index.js +476 -0
  67. package/lib/team/members/invitations.js +196 -0
  68. package/lib/team/members/invite-member.js +212 -0
  69. package/lib/team/members/issue-passport.js +155 -0
  70. package/lib/team/members/member.js +294 -0
  71. package/lib/team/members/passport-issuances.js +154 -0
  72. package/lib/team/members/passports.js +329 -0
  73. package/lib/team/members/toggle-user-approval.js +128 -0
  74. package/lib/team/members/transfer-node.js +262 -0
  75. package/lib/team/members/util.js +20 -0
  76. package/lib/team/passports/detail.js +261 -0
  77. package/lib/team/passports/index.js +220 -0
  78. package/lib/team/passports/mutate-role.js +204 -0
  79. package/lib/team/passports/trusted-issuer.js +295 -0
  80. package/lib/team/passports/trusted-issuers.js +238 -0
  81. package/lib/team/search-input.js +36 -0
  82. package/lib/team/styles/dialog.js +13 -0
  83. package/lib/team/styles/list-header.js +13 -0
  84. package/lib/toast.js +4 -19
  85. package/lib/util/index.js +504 -38
  86. package/lib/who-can-access/config.js +0 -6
  87. package/lib/wrap-locale.js +0 -7
  88. package/package.json +43 -20
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = BlockletVersion;
7
+ var _react = require("react");
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _semver = _interopRequireDefault(require("semver"));
10
+ var _notistack = require("notistack");
11
+ var _Spinner = _interopRequireDefault(require("@arcblock/ux/lib/Spinner"));
12
+ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
13
+ var _ArrowUpward = _interopRequireDefault(require("@mui/icons-material/ArrowUpward"));
14
+ var _Tooltip = _interopRequireDefault(require("@mui/material/Tooltip"));
15
+ var _Toast = _interopRequireDefault(require("@arcblock/ux/lib/Toast"));
16
+ var _context = require("@arcblock/ux/lib/Locale/context");
17
+ var _constant = require("@blocklet/constant");
18
+ var _util = require("@blocklet/meta/lib/util");
19
+ var _tag = _interopRequireDefault(require("../tag"));
20
+ var _confirm = _interopRequireDefault(require("../confirm"));
21
+ var _node = require("../contexts/node");
22
+ var _util2 = require("../util");
23
+ var _permission = require("../permission");
24
+ var _jsxRuntime = require("react/jsx-runtime");
25
+ const _excluded = ["blocklet", "checkUpgrade", "hasPermission"];
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
+ 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; }
28
+ 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; }
29
+ 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; }
30
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
31
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
32
+ function Version(_ref) {
33
+ let {
34
+ blocklet,
35
+ checkUpgrade,
36
+ hasPermission
37
+ } = _ref,
38
+ rest = _objectWithoutProperties(_ref, _excluded);
39
+ const {
40
+ api
41
+ } = (0, _node.useNodeContext)();
42
+ const {
43
+ t
44
+ } = (0, _react.useContext)(_context.LocaleContext);
45
+ const [loading, setLoading] = (0, _react.useState)(false);
46
+ const [error, setError] = (0, _react.useState)('');
47
+ const [newVersionBlocklet, setNewVersionBlocklet] = (0, _react.useState)(null);
48
+ const [confirmSetting, setConfirmSetting] = (0, _react.useState)(null);
49
+ const {
50
+ enqueueSnackbar
51
+ } = (0, _notistack.useSnackbar)();
52
+ (0, _react.useEffect)(() => {
53
+ setNewVersionBlocklet(null);
54
+ if (checkUpgrade && blocklet.mode !== _constant.BLOCKLET_MODES.DEVELOPMENT) {
55
+ api.getLatestBlockletVersion({
56
+ input: {
57
+ did: blocklet.meta.did,
58
+ version: blocklet.meta.version
59
+ }
60
+ }).then(_ref2 => {
61
+ let {
62
+ data
63
+ } = _ref2;
64
+ if (data) {
65
+ const {
66
+ version,
67
+ registryUrl
68
+ } = data;
69
+ if (version && _semver.default.gt(version, blocklet.meta.version)) {
70
+ setNewVersionBlocklet({
71
+ version,
72
+ registryUrl
73
+ });
74
+ }
75
+ }
76
+ })
77
+ // eslint-disable-next-line max-len
78
+ .catch(err => console.error("Failed to fetch latest version: ".concat(blocklet.meta.name, ", error: ").concat((0, _util2.formatError)(err)))); // prettier-ignore
79
+ }
80
+ }, [blocklet, checkUpgrade]); // eslint-disable-line
81
+
82
+ const onCancel = () => {
83
+ setLoading(false);
84
+ setConfirmSetting(null);
85
+ };
86
+ const onConfirm = async () => {
87
+ setLoading(true);
88
+ try {
89
+ const input = {
90
+ did: blocklet.meta.did,
91
+ version: newVersionBlocklet.version,
92
+ registryUrl: newVersionBlocklet.registryUrl || ''
93
+ };
94
+ await (0, _util2.sleep)(2000);
95
+ await api.upgradeBlocklet({
96
+ input
97
+ });
98
+ } catch (err) {
99
+ enqueueSnackbar("Blocklet upgrade failed: ".concat((0, _util2.formatError)(err)), {
100
+ autoHideDuration: 5000,
101
+ variant: 'error'
102
+ });
103
+ } finally {
104
+ setLoading(false);
105
+ setConfirmSetting(null);
106
+ }
107
+ };
108
+ const setting = {
109
+ title: "".concat(t('common.upgrade'), " ").concat(t('common.blocklet'), " ").concat((0, _util.getDisplayName)(blocklet)),
110
+ description: t('blocklet.action.upgradeDescription'),
111
+ confirm: t('blocklet.action.confirmUpgrade'),
112
+ cancel: t('common.cancel'),
113
+ onConfirm,
114
+ onCancel
115
+ };
116
+ if (hasPermission && newVersionBlocklet && !(0, _util2.isInProgress)(blocklet.status)) {
117
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
118
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_tag.default, _objectSpread(_objectSpread({}, rest), {}, {
119
+ children: blocklet.meta.version
120
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
121
+ title: t('common.updateAvailable', {
122
+ version: newVersionBlocklet.version
123
+ }),
124
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
125
+ size: "small",
126
+ style: {
127
+ marginLeft: 8
128
+ },
129
+ disabled: loading,
130
+ onClick: () => setConfirmSetting(setting),
131
+ children: loading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {
132
+ size: [16, 10]
133
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_ArrowUpward.default, {
134
+ style: {
135
+ fontSize: 16,
136
+ color: 'red'
137
+ }
138
+ })
139
+ })
140
+ }), !!error && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toast.default, {
141
+ variant: "error",
142
+ message: error,
143
+ onClose: () => setError('')
144
+ }), confirmSetting && /*#__PURE__*/(0, _jsxRuntime.jsx)(_confirm.default, {
145
+ title: confirmSetting.title,
146
+ description: confirmSetting.description,
147
+ confirm: confirmSetting.confirm,
148
+ cancel: confirmSetting.cancel,
149
+ params: confirmSetting.params,
150
+ onConfirm: confirmSetting.onConfirm,
151
+ onCancel: confirmSetting.onCancel
152
+ })]
153
+ });
154
+ }
155
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_tag.default, _objectSpread(_objectSpread({}, rest), {}, {
156
+ children: blocklet.meta.version
157
+ }));
158
+ }
159
+ Version.propTypes = {
160
+ blocklet: _propTypes.default.object.isRequired,
161
+ checkUpgrade: _propTypes.default.bool,
162
+ hasPermission: _propTypes.default.bool
163
+ };
164
+ Version.defaultProps = {
165
+ checkUpgrade: true,
166
+ hasPermission: false
167
+ };
168
+ const BlockletVersionInDaemon = (0, _permission.withPermission)(Version, 'mutate_blocklet');
169
+ const BlockletVersionInService = (0, _permission.withPermission)(Version, '', _util2.BlockletAdminRoles);
170
+ function BlockletVersion(props) {
171
+ const {
172
+ inService
173
+ } = (0, _node.useNodeContext)();
174
+ if (inService) {
175
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(BlockletVersionInService, _objectSpread({}, props));
176
+ }
177
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(BlockletVersionInDaemon, _objectSpread({}, props));
178
+ }
@@ -4,21 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = CardSelector;
7
-
8
7
  var _react = require("react");
9
-
10
8
  var _styled = _interopRequireDefault(require("@emotion/styled"));
11
-
12
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
-
14
10
  var _jsxRuntime = require("react/jsx-runtime");
15
-
16
11
  var _templateObject;
17
-
18
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
13
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
21
-
22
14
  function CardSelector(_ref) {
23
15
  let {
24
16
  list,
@@ -30,40 +22,36 @@ function CardSelector(_ref) {
30
22
  } = _ref;
31
23
  const [selectedId, setSelectedId] = (0, _react.useState)(0);
32
24
  const [translateX, setTranslateX] = (0, _react.useState)(0);
33
- const outterCon = (0, _react.useRef)(null); // 选择卡片
25
+ const outterCon = (0, _react.useRef)(null);
34
26
 
27
+ // 选择卡片
35
28
  const selectedItem = i => {
36
29
  if (i < 0 || i > list.length - 1) {
37
30
  return;
38
31
  }
32
+ setSelectedId(i);
39
33
 
40
- setSelectedId(i); // 外部容器大小
41
-
34
+ // 外部容器大小
42
35
  const outerWidth = outterCon.current.clientWidth;
43
36
  setTranslateX(i * (width + cardSpace) - (outerWidth - width) / 2 + cardSpace * 0.5);
44
37
  onSelect(i);
45
38
  };
46
-
47
39
  (0, _react.useEffect)(() => {
48
40
  selectedItem(defaultIndex);
49
-
50
41
  const func = e => e.preventDefault();
51
-
52
42
  outterCon.current.addEventListener('touchmove', func, {
53
43
  passive: false
54
- }); // eslint-disable-next-line react-hooks/exhaustive-deps
44
+ });
45
+ // eslint-disable-next-line react-hooks/exhaustive-deps
55
46
  }, []);
56
47
  let startX;
57
-
58
48
  const touchstart = e => {
59
49
  const point = e.touches[0];
60
50
  startX = point.clientX;
61
51
  };
62
-
63
52
  const touchend = e => {
64
53
  const point = e.changedTouches[0];
65
54
  const diffX = startX - point.clientX;
66
-
67
55
  if (Math.abs(diffX) > 60) {
68
56
  if (diffX > 0) {
69
57
  selectedItem(selectedId + 1);
@@ -72,7 +60,6 @@ function CardSelector(_ref) {
72
60
  }
73
61
  }
74
62
  };
75
-
76
63
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Contianer, {
77
64
  ref: outterCon,
78
65
  onTouchStart: touchstart,
@@ -89,8 +76,10 @@ function CardSelector(_ref) {
89
76
  width,
90
77
  height,
91
78
  margin: cardSpace / 2
92
- } // eslint-disable-next-line react/no-array-index-key
79
+ }
80
+ // eslint-disable-next-line react/no-array-index-key
93
81
  ,
82
+
94
83
  onClick: () => selectedItem(i),
95
84
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
96
85
  src: e.src,
@@ -101,9 +90,7 @@ function CardSelector(_ref) {
101
90
  })
102
91
  });
103
92
  }
104
-
105
93
  const Contianer = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n overflow: hidden;\n mask-image: linear-gradient(to left, transparent, black 3%, black 97%, transparent);\n overflow: hidden;\n .card-container {\n display: flex;\n white-space: nowrap;\n width: max-content;\n transition: all ease 0.3s;\n }\n .card-item {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n cursor: pointer;\n img {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n outline: #526ded solid 0;\n transition: all ease 0.2s;\n box-shadow: rgba(0, 0, 0, 0.2) 0 0 10px;\n }\n &.selected {\n cursor: default;\n img {\n outline: #526ded solid 5px;\n }\n }\n }\n"])));
106
-
107
94
  CardSelector.propTypes = {
108
95
  list: _propTypes.default.array,
109
96
  width: _propTypes.default.number,
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = ClickToCopy;
7
+ var _react = require("react");
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _ClickToCopy = _interopRequireDefault(require("@arcblock/ux/lib/ClickToCopy"));
10
+ var _context = require("@arcblock/ux/lib/Locale/context");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ const _excluded = ["children"];
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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
+ 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; }
16
+ 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; }
17
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
18
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
19
+ function ClickToCopy(_ref) {
20
+ let {
21
+ children
22
+ } = _ref,
23
+ rest = _objectWithoutProperties(_ref, _excluded);
24
+ const {
25
+ t
26
+ } = (0, _react.useContext)(_context.LocaleContext);
27
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ClickToCopy.default, _objectSpread(_objectSpread({
28
+ tip: t('common.copyTip'),
29
+ copiedTip: t('common.copiedTip')
30
+ }, rest), {}, {
31
+ children: children
32
+ }));
33
+ }
34
+ ClickToCopy.propTypes = {
35
+ children: _propTypes.default.any.isRequired
36
+ };
package/lib/confirm.js ADDED
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = ConfirmDialog;
7
+ var _react = require("react");
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
10
+ var _Dialog = _interopRequireDefault(require("@mui/material/Dialog"));
11
+ var _Spinner = _interopRequireDefault(require("@arcblock/ux/lib/Spinner"));
12
+ var _DialogActions = _interopRequireDefault(require("@mui/material/DialogActions"));
13
+ var _DialogContent = _interopRequireDefault(require("@mui/material/DialogContent"));
14
+ var _DialogContentText = _interopRequireDefault(require("@mui/material/DialogContentText"));
15
+ var _DialogTitle = _interopRequireDefault(require("@mui/material/DialogTitle"));
16
+ var _Alert = _interopRequireDefault(require("@mui/material/Alert"));
17
+ var _useTheme = _interopRequireDefault(require("@mui/material/styles/useTheme"));
18
+ var _useMediaQuery = _interopRequireDefault(require("@mui/material/useMediaQuery"));
19
+ var _context = require("@arcblock/ux/lib/Locale/context");
20
+ var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
21
+ var _util = require("./util");
22
+ var _mobileWidth = _interopRequireDefault(require("./hooks/mobile-width"));
23
+ var _jsxRuntime = require("react/jsx-runtime");
24
+ var _templateObject;
25
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
27
+ function ConfirmDialog(_ref) {
28
+ let {
29
+ title,
30
+ description,
31
+ showCancel,
32
+ cancel,
33
+ confirm,
34
+ color,
35
+ params: initialParams,
36
+ onCancel,
37
+ onConfirm
38
+ } = _ref;
39
+ const [params, setParams] = (0, _react.useState)(initialParams);
40
+ const [open, setOpen] = (0, _react.useState)(true);
41
+ const [loading, setLoading] = (0, _react.useState)(false);
42
+ const [error, setError] = (0, _react.useState)('');
43
+ const {
44
+ t: changeLocale
45
+ } = (0, _context.useLocaleContext)();
46
+ const theme = (0, _useTheme.default)();
47
+ const onCallback = async cb => {
48
+ if (typeof cb === 'function') {
49
+ setLoading(true);
50
+ try {
51
+ await cb(params);
52
+ setOpen(false);
53
+ } catch (err) {
54
+ setError((0, _util.formatError)(err));
55
+ console.error(err);
56
+ } finally {
57
+ setLoading(false);
58
+ }
59
+ } else {
60
+ setOpen(false);
61
+ }
62
+ };
63
+ const t = typeof title === 'function' ? title() : title;
64
+ const d = typeof description === 'function' ? description(params, setParams, setError) : description;
65
+ const isBreakpointsDownSm = (0, _useMediaQuery.default)(theme.breakpoints.down('md'));
66
+ const handleClick = e => {
67
+ e.stopPropagation();
68
+ };
69
+ const {
70
+ minWidth
71
+ } = (0, _mobileWidth.default)();
72
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(StyledDialog, {
73
+ onClick: handleClick,
74
+ fullScreen: isBreakpointsDownSm,
75
+ open: open,
76
+ style: {
77
+ minWidth
78
+ },
79
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogTitle.default, {
80
+ children: t
81
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_DialogContent.default, {
82
+ style: {
83
+ minWidth
84
+ },
85
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogContentText.default, {
86
+ component: "div",
87
+ children: d
88
+ }), !!error && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.default, {
89
+ severity: "error",
90
+ style: {
91
+ width: '100%',
92
+ marginTop: 8
93
+ },
94
+ children: error
95
+ })]
96
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_DialogActions.default, {
97
+ className: "delete-actions",
98
+ style: {
99
+ padding: '8px 24px 24px'
100
+ },
101
+ children: [showCancel && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
102
+ onClick: e => {
103
+ e.stopPropagation();
104
+ onCallback(onCancel);
105
+ },
106
+ color: "inherit",
107
+ "data-cy": "cancel-confirm-dialog",
108
+ children: cancel || changeLocale('common.cancel')
109
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
110
+ onClick: e => {
111
+ e.stopPropagation();
112
+ onCallback(onConfirm);
113
+ },
114
+ color: color
115
+ // eslint-disable-next-line no-underscore-dangle
116
+ ,
117
+ disabled: params.__disableConfirm || loading,
118
+ variant: "contained",
119
+ "data-cy": "submit-confirm-dialog",
120
+ autoFocus: true,
121
+ children: [loading && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {
122
+ size: [16, 10]
123
+ }), confirm]
124
+ })]
125
+ })]
126
+ });
127
+ }
128
+ ConfirmDialog.propTypes = {
129
+ title: _propTypes.default.any.isRequired,
130
+ description: _propTypes.default.any.isRequired,
131
+ // can be a function that renders different content based on params
132
+ showCancel: _propTypes.default.bool,
133
+ cancel: _propTypes.default.string,
134
+ color: _propTypes.default.string,
135
+ confirm: _propTypes.default.string,
136
+ params: _propTypes.default.object,
137
+ // This object holds states managed in the dialog
138
+ onCancel: _propTypes.default.func,
139
+ onConfirm: _propTypes.default.func.isRequired
140
+ };
141
+ ConfirmDialog.defaultProps = {
142
+ onCancel: () => {},
143
+ showCancel: true,
144
+ cancel: '',
145
+ confirm: 'Confirm',
146
+ color: 'error',
147
+ params: {}
148
+ };
149
+ const StyledDialog = (0, _styled.default)(_Dialog.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .delete-actions .Mui-disabled {\n color: rgba(0, 0, 0, 0.26) !important;\n box-shadow: none;\n background-color: rgba(0, 0, 0, 0.12) !important;\n }\n"])));
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AuditLogContext = exports.AuditLogConsumer = void 0;
7
+ exports.AuditLogProvider = AuditLogProvider;
8
+ exports.useAuditLogContext = useAuditLogContext;
9
+ var _react = require("react");
10
+ var _useLocalStorage = _interopRequireDefault(require("react-use/lib/useLocalStorage"));
11
+ var _toast = _interopRequireDefault(require("../toast"));
12
+ var _node = require("./node");
13
+ var _jsxRuntime = require("react/jsx-runtime");
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ const AuditLogContext = /*#__PURE__*/(0, _react.createContext)({});
16
+ exports.AuditLogContext = AuditLogContext;
17
+ const {
18
+ Provider,
19
+ Consumer
20
+ } = AuditLogContext;
21
+
22
+ // eslint-disable-next-line react/prop-types
23
+ exports.AuditLogConsumer = Consumer;
24
+ function AuditLogProvider(_ref) {
25
+ let {
26
+ children,
27
+ scope = ''
28
+ } = _ref;
29
+ const {
30
+ api: client
31
+ } = (0, _node.useNodeContext)();
32
+ const [auditLogs, setAuditLogs] = (0, _react.useState)([]);
33
+ const [paging, setPaging] = (0, _react.useState)({
34
+ total: 0,
35
+ pageSize: 20,
36
+ pageCount: 0,
37
+ page: 1
38
+ });
39
+ const [loading, setLoading] = (0, _react.useState)(false);
40
+ const [category, setCategory] = (0, _useLocalStorage.default)("audit-log-category-".concat(scope), 'all');
41
+ const fetchLogs = async function fetchLogs() {
42
+ let {
43
+ page = 1,
44
+ silent = true
45
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
46
+ if (loading) {
47
+ return;
48
+ }
49
+ if (!silent) {
50
+ setLoading(true);
51
+ }
52
+ try {
53
+ // eslint-disable-next-line no-shadow
54
+ const res = await client.getAuditLogs({
55
+ input: {
56
+ paging: {
57
+ page
58
+ },
59
+ category: category === 'all' ? '' : category,
60
+ scope
61
+ }
62
+ });
63
+ setAuditLogs(res.list);
64
+ setPaging(res.paging);
65
+ setLoading(false);
66
+ } catch (err) {
67
+ _toast.default.error(err.message);
68
+ setLoading(false);
69
+ }
70
+ };
71
+ (0, _react.useEffect)(() => {
72
+ fetchLogs({
73
+ page: 1,
74
+ silent: false
75
+ });
76
+ }, []); // eslint-disable-line
77
+
78
+ (0, _react.useEffect)(() => {
79
+ fetchLogs({
80
+ page: 1,
81
+ silent: false
82
+ });
83
+ }, [category]); // eslint-disable-line
84
+
85
+ const value = {
86
+ loading,
87
+ fetch: fetchLogs,
88
+ filter: {
89
+ category,
90
+ scope
91
+ },
92
+ categories: [{
93
+ value: 'all',
94
+ label: 'All',
95
+ description: ''
96
+ }, {
97
+ value: 'blocklet',
98
+ label: 'Blocklet Management',
99
+ description: ''
100
+ }, {
101
+ value: 'server',
102
+ label: 'Server Management',
103
+ description: ''
104
+ }, {
105
+ value: 'team',
106
+ label: 'Team Management',
107
+ description: ''
108
+ }, {
109
+ value: 'security',
110
+ label: 'Security',
111
+ description: ''
112
+ }, {
113
+ value: 'certificates',
114
+ label: 'Certificate Management',
115
+ description: ''
116
+ }, {
117
+ value: 'integrations',
118
+ label: 'Integration Management',
119
+ description: ''
120
+ }, {
121
+ value: 'gateway',
122
+ label: 'Gateway',
123
+ description: ''
124
+ }],
125
+ setCategory,
126
+ data: auditLogs,
127
+ paging
128
+ };
129
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Provider, {
130
+ value: {
131
+ auditLogs: value
132
+ },
133
+ children: children
134
+ });
135
+ }
136
+ function useAuditLogContext() {
137
+ const {
138
+ auditLogs
139
+ } = (0, _react.useContext)(AuditLogContext);
140
+ return auditLogs;
141
+ }
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DeletingBlockletProvider = DeletingBlockletProvider;
7
+ exports.useDeletingBlockletContext = useDeletingBlockletContext;
8
+ var _react = require("react");
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _xorWith = _interopRequireDefault(require("lodash/xorWith"));
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ const DeletingBlockletContext = /*#__PURE__*/(0, _react.createContext)({});
14
+ function DeletingBlockletProvider(_ref) {
15
+ let {
16
+ children,
17
+ type
18
+ } = _ref;
19
+ const [deletingBlocklets, setDeletingBlocklets] = (0, _react.useState)([]);
20
+ const deletingBlockletsDid = (0, _react.useRef)([]); // use in onActionComplete
21
+
22
+ /**
23
+ * 添加删除中的 blocklet did
24
+ * @param {String} did 删除中的did
25
+ */
26
+ const addDeletingDid = did => {
27
+ if (!deletingBlockletsDid.current.includes(did)) {
28
+ const reDeleteings = [...deletingBlockletsDid.current, did];
29
+ setDeletingBlocklets(reDeleteings);
30
+ deletingBlockletsDid.current = reDeleteings;
31
+ }
32
+ };
33
+
34
+ /**
35
+ * 去除删除中的 blocklet did
36
+ * @param {String} did 删除中的did
37
+ */
38
+ const removeDeletingDid = did => {
39
+ if (deletingBlockletsDid.current.includes(did)) {
40
+ const reDeleteings = deletingBlockletsDid.current.filter(d => {
41
+ return d !== did;
42
+ });
43
+ setDeletingBlocklets(reDeleteings);
44
+ deletingBlockletsDid.current = reDeleteings;
45
+ }
46
+ };
47
+
48
+ /**
49
+ * 将不在的 blocklet id 移出 deleting 数组
50
+ * @param {Array} existDids 已存在的 blocklet did 数组集
51
+ */
52
+ const matchDeletingDid = existDids => {
53
+ const inDeleting = deletingBlocklets.filter(did => existDids.find(e => e === did));
54
+ const needMoveoutDeleting = (0, _xorWith.default)(inDeleting, deletingBlocklets);
55
+ needMoveoutDeleting.forEach(did => removeDeletingDid(did));
56
+ };
57
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(DeletingBlockletContext.Provider, {
58
+ // eslint-disable-next-line react/jsx-no-constructed-context-values
59
+ value: {
60
+ type,
61
+ deletingBlocklets,
62
+ addDeletingDid,
63
+ removeDeletingDid,
64
+ matchDeletingDid
65
+ },
66
+ children: children
67
+ });
68
+ }
69
+ DeletingBlockletProvider.propTypes = {
70
+ type: _propTypes.default.string,
71
+ children: _propTypes.default.node.isRequired
72
+ };
73
+ DeletingBlockletProvider.defaultProps = {
74
+ type: 'blocklets'
75
+ };
76
+ function useDeletingBlockletContext() {
77
+ return (0, _react.useContext)(DeletingBlockletContext);
78
+ }