@abtnode/ux 1.15.17 → 1.16.0-beta-8ee536d7

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 (154) hide show
  1. package/lib/actions.js +111 -0
  2. package/lib/blocklet/access/config-access.js +303 -0
  3. package/lib/blocklet/access/index.js +221 -0
  4. package/lib/blocklet/actions.js +438 -0
  5. package/lib/blocklet/add-cert.js +191 -0
  6. package/lib/blocklet/agreement-app.js +30 -0
  7. package/lib/blocklet/agreement.js +72 -0
  8. package/lib/blocklet/app-avatar.js +74 -0
  9. package/lib/blocklet/audit-logs.js +197 -0
  10. package/lib/blocklet/blocklet-source.js +56 -0
  11. package/lib/blocklet/bundle-avatar.js +80 -0
  12. package/lib/blocklet/component/add.js +1063 -0
  13. package/lib/blocklet/component/configuration.js +124 -0
  14. package/lib/blocklet/component/delete.js +117 -0
  15. package/lib/blocklet/component/environment.js +289 -0
  16. package/lib/blocklet/component/expiration.js +53 -0
  17. package/lib/blocklet/component/index.js +804 -0
  18. package/lib/blocklet/component/line.js +28 -0
  19. package/lib/blocklet/component/navigation/locale-tabs.js +218 -0
  20. package/lib/blocklet/component/navigation/navigation-actions.js +120 -0
  21. package/lib/blocklet/component/navigation/navigation-dialog.js +620 -0
  22. package/lib/blocklet/component/navigation/navigation-preview.js +102 -0
  23. package/lib/blocklet/component/navigation/simple-select.js +131 -0
  24. package/lib/blocklet/component/select-store.js +153 -0
  25. package/lib/blocklet/component/setting.js +151 -0
  26. package/lib/blocklet/component/sortable-tree.js +138 -0
  27. package/lib/blocklet/component/space-gateway-selector.js +174 -0
  28. package/lib/blocklet/component/store-blocklet-list.js +205 -0
  29. package/lib/blocklet/config-navigation.js +344 -0
  30. package/lib/blocklet/configuration.js +574 -0
  31. package/lib/blocklet/disk-info.js +91 -0
  32. package/lib/blocklet/icons.js +26 -0
  33. package/lib/blocklet/install-from-url.js +347 -0
  34. package/lib/blocklet/log.js +62 -0
  35. package/lib/blocklet/migration.js +153 -0
  36. package/lib/blocklet/mode.js +35 -0
  37. package/lib/blocklet/monitor.js +186 -0
  38. package/lib/blocklet/overview.js +236 -0
  39. package/lib/blocklet/preferences/app-sk.js +131 -0
  40. package/lib/blocklet/preferences/index.js +238 -0
  41. package/lib/blocklet/preferences/wallet-type.js +107 -0
  42. package/lib/blocklet/purchase/common.js +103 -0
  43. package/lib/blocklet/purchase/component-purchase.js +253 -0
  44. package/lib/blocklet/purchase/index.js +13 -0
  45. package/lib/blocklet/router/action/add-domain-alias.js +173 -0
  46. package/lib/blocklet/router/action/add-rule.js +204 -0
  47. package/lib/blocklet/router/action/config-routing-rule.js +129 -0
  48. package/lib/blocklet/router/action/delete-domain-alias.js +107 -0
  49. package/lib/blocklet/router/action/delete-rule.js +114 -0
  50. package/lib/blocklet/router/action/update-rule.js +203 -0
  51. package/lib/blocklet/router/domain-actions.js +71 -0
  52. package/lib/blocklet/router/domain-status.js +96 -0
  53. package/lib/blocklet/router/rule-actions.js +77 -0
  54. package/lib/blocklet/router/rule-list.js +181 -0
  55. package/lib/blocklet/router/util.js +146 -0
  56. package/lib/blocklet/runtime-info.js +87 -0
  57. package/lib/blocklet/status.js +105 -0
  58. package/lib/blocklet/storage.js +322 -0
  59. package/lib/blocklet/types.js +25 -0
  60. package/lib/blocklet/util.js +233 -0
  61. package/lib/blocklet/version.js +156 -0
  62. package/lib/card-selector.js +109 -0
  63. package/lib/certificate.js +110 -0
  64. package/lib/click-to-copy.js +38 -0
  65. package/lib/confirm.js +149 -0
  66. package/lib/contexts/audit-log.js +141 -0
  67. package/lib/contexts/blocklet.js +19 -0
  68. package/lib/contexts/deleting-blocklets.js +78 -0
  69. package/lib/contexts/node.js +30 -0
  70. package/lib/contexts/session.js +20 -0
  71. package/lib/contexts/team.js +19 -0
  72. package/lib/delete-confirm.js +127 -0
  73. package/lib/did-address.js +77 -0
  74. package/lib/dot.js +18 -0
  75. package/lib/form/form-text-input.js +266 -0
  76. package/lib/form/form-wrapper.js +13 -0
  77. package/lib/form/required.js +13 -0
  78. package/lib/hooks/blocklet.js +231 -0
  79. package/lib/hooks/mobile-width.js +19 -0
  80. package/lib/hooks/url-evaluation.js +168 -0
  81. package/lib/hooks/use-app-logo.js +25 -0
  82. package/lib/hooks/use-bundle-logo.js +36 -0
  83. package/lib/hooks/use-navigation.js +355 -0
  84. package/lib/hooks/use-passport-id.js +21 -0
  85. package/lib/hooks/use-subscription.js +28 -0
  86. package/lib/icons/long-arrow.svg +5 -0
  87. package/lib/index.js +0 -3
  88. package/lib/invitation/invitation-app.js +51 -0
  89. package/lib/invitation/invitation-login.js +47 -0
  90. package/lib/invitation/invitation-passport.js +130 -0
  91. package/lib/invitation/invitation-receive.js +108 -0
  92. package/lib/invitation/invitation-success.js +82 -0
  93. package/lib/invitation/invitation-user.js +79 -0
  94. package/lib/invitation/invitation.js +80 -0
  95. package/lib/issue-passport.js +84 -84
  96. package/lib/launch-blocklet/content-layout.js +33 -0
  97. package/lib/launch-blocklet/page-header.js +38 -0
  98. package/lib/layout/addon.js +100 -0
  99. package/lib/layout/feedback.js +55 -0
  100. package/lib/locales/en.js +1221 -10
  101. package/lib/locales/index.js +3 -4
  102. package/lib/locales/zh.js +1232 -15
  103. package/lib/logs/clock.js +19 -0
  104. package/lib/logs/download.js +139 -0
  105. package/lib/logs/log-terminal.js +183 -0
  106. package/lib/lost-passport.js +207 -192
  107. package/lib/monitor/card.js +73 -0
  108. package/lib/monitor/cpu.js +109 -0
  109. package/lib/monitor/disk.js +122 -0
  110. package/lib/monitor/memory.js +144 -0
  111. package/lib/nav-logo.js +120 -0
  112. package/lib/passport-tag.js +43 -0
  113. package/lib/permission.js +70 -0
  114. package/lib/relative-time.js +61 -0
  115. package/lib/schema-form/color-input.js +105 -0
  116. package/lib/schema-form/common-prop-types.js +21 -0
  117. package/lib/schema-form/index.js +229 -0
  118. package/lib/schema-form/passport-input.js +66 -0
  119. package/lib/schema-form/text-input.js +72 -0
  120. package/lib/store/add.js +185 -0
  121. package/lib/store/delete.js +102 -0
  122. package/lib/store/item.js +84 -0
  123. package/lib/table-icons.js +42 -0
  124. package/lib/table.js +13 -0
  125. package/lib/tag.js +37 -0
  126. package/lib/team/members/actions.js +99 -0
  127. package/lib/team/members/index.js +503 -0
  128. package/lib/team/members/invitations.js +196 -0
  129. package/lib/team/members/invite-member.js +212 -0
  130. package/lib/team/members/issue-passport.js +155 -0
  131. package/lib/team/members/member.js +300 -0
  132. package/lib/team/members/passport-issuances.js +154 -0
  133. package/lib/team/members/passports.js +336 -0
  134. package/lib/team/members/toggle-user-approval.js +128 -0
  135. package/lib/team/members/transfer-node.js +262 -0
  136. package/lib/team/members/util.js +20 -0
  137. package/lib/team/passports/color.js +132 -0
  138. package/lib/team/passports/detail.js +271 -0
  139. package/lib/team/passports/index.js +233 -0
  140. package/lib/team/passports/mutate-role.js +204 -0
  141. package/lib/team/passports/trusted-issuer.js +297 -0
  142. package/lib/team/passports/trusted-issuers.js +240 -0
  143. package/lib/team/search-input.js +38 -0
  144. package/lib/team/styles/dialog.js +13 -0
  145. package/lib/team/styles/list-header.js +13 -0
  146. package/lib/toast.js +86 -0
  147. package/lib/util/api.js +21 -0
  148. package/lib/util/constants.js +10 -0
  149. package/lib/util/index.js +703 -0
  150. package/lib/util/locales.js +28 -0
  151. package/lib/util/mode.js +11 -0
  152. package/lib/who-can-access/config.js +46 -0
  153. package/lib/wrap-locale.js +12 -13
  154. package/package.json +71 -17
@@ -0,0 +1,438 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = BlockletActions;
7
+ var _react = require("react");
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
10
+ var _reactRouterDom = require("react-router-dom");
11
+ var _useLocalStorage = _interopRequireDefault(require("react-use/lib/useLocalStorage"));
12
+ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
13
+ var _Menu = _interopRequireDefault(require("@mui/material/Menu"));
14
+ var _Divider = _interopRequireDefault(require("@mui/material/Divider"));
15
+ var _ButtonGroup = _interopRequireDefault(require("@mui/material/ButtonGroup"));
16
+ var _CircularProgress = _interopRequireDefault(require("@mui/material/CircularProgress"));
17
+ var _MenuItem = _interopRequireDefault(require("@mui/material/MenuItem"));
18
+ var _MoreVert = _interopRequireDefault(require("@mui/icons-material/MoreVert"));
19
+ var _ListItemIcon = _interopRequireDefault(require("@mui/material/ListItemIcon"));
20
+ var _ListItemText = _interopRequireDefault(require("@mui/material/ListItemText"));
21
+ var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
22
+ var _Radio = _interopRequireDefault(require("@mui/material/Radio"));
23
+ var _RadioGroup = _interopRequireDefault(require("@mui/material/RadioGroup"));
24
+ var _FormControlLabel = _interopRequireDefault(require("@mui/material/FormControlLabel"));
25
+ var _Alert = _interopRequireDefault(require("@mui/material/Alert"));
26
+ var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
27
+ var _util = require("@blocklet/meta/lib/util");
28
+ var _context = require("@arcblock/ux/lib/Locale/context");
29
+ var _constant = require("@blocklet/constant");
30
+ var _constant2 = require("@abtnode/constant");
31
+ var _toast = _interopRequireDefault(require("../toast"));
32
+ var _util2 = require("../util");
33
+ var _util3 = require("./util");
34
+ var _node = require("../contexts/node");
35
+ var _confirm = _interopRequireDefault(require("../confirm"));
36
+ var _icons = _interopRequireDefault(require("./icons"));
37
+ var _jsxRuntime = require("react/jsx-runtime");
38
+ var _templateObject;
39
+ const _excluded = ["blocklet", "onStart", "onComplete", "variant", "hasPermission", "useBlockletUrlEvaluation"];
40
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
41
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
42
+ 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; }
43
+ 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; }
44
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
45
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
46
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
47
+ 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; }
48
+ 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; }
49
+ function BlockletActions(_ref) {
50
+ let {
51
+ blocklet,
52
+ onStart,
53
+ onComplete,
54
+ variant,
55
+ hasPermission,
56
+ useBlockletUrlEvaluation
57
+ } = _ref,
58
+ rest = _objectWithoutProperties(_ref, _excluded);
59
+ const navigate = (0, _reactRouterDom.useNavigate)();
60
+ const node = (0, _node.useNodeContext)();
61
+ const [anchorEl, setAnchorEl] = (0, _react.useState)(null);
62
+ const [currentAction, setCurrentAction] = (0, _react.useState)(null);
63
+ const [loading, setLoading] = (0, _react.useState)(false);
64
+ const [confirmSetting, setConfirmSetting] = (0, _react.useState)(null);
65
+ const {
66
+ t
67
+ } = (0, _react.useContext)(_context.LocaleContext);
68
+ const [skipSetup] = (0, _useLocalStorage.default)('skip-blocklet-setup', false);
69
+ const {
70
+ loading: recommendedUrlLoading,
71
+ recommendedUrl
72
+ } = useBlockletUrlEvaluation(blocklet);
73
+ const inProgress = (0, _util2.isInProgress)(blocklet.status);
74
+ const {
75
+ inService
76
+ } = node;
77
+ const createHandler = function createHandler(action, fn) {
78
+ let requireUserConfirm = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
79
+ return async () => {
80
+ const onConfirm = async params => {
81
+ onStart({
82
+ action,
83
+ blocklet
84
+ });
85
+ setLoading(true);
86
+ setCurrentAction(action);
87
+ setConfirmSetting(null);
88
+ let isRemoved = false;
89
+ try {
90
+ var _blocklet$settings;
91
+ const input = {
92
+ did: blocklet.meta.did
93
+ };
94
+ if (action === 'remove') {
95
+ input.keepData = params.removeType === 'keepData';
96
+ }
97
+ if (action === 'start' && !inService && !skipSetup && !((_blocklet$settings = blocklet.settings) !== null && _blocklet$settings !== void 0 && _blocklet$settings.initialized)) {
98
+ // 启动 blocklet 并跳转到 setup 流程界面时携带 serverUrl 查询参数
99
+ const serverUrl = (0, _util3.getServerUrl)(node.info);
100
+ const url = new URL(recommendedUrl);
101
+ url.searchParams.set('serverUrl', serverUrl);
102
+ window.open(url.href);
103
+ onComplete({
104
+ action,
105
+ blocklet
106
+ });
107
+ return;
108
+ }
109
+ await fn({
110
+ input
111
+ });
112
+ if (action === 'remove') {
113
+ isRemoved = true; // Deleted send request and succeeded
114
+ } else {
115
+ await (0, _util2.sleep)(1000); // just avoid user feeling so fast
116
+ }
117
+
118
+ if (action === 'reload') {
119
+ _toast.default.success(t('blocklet.reloadSuccess'));
120
+ }
121
+ onComplete({
122
+ action,
123
+ blocklet
124
+ });
125
+ } catch (err) {
126
+ const errMsg = "Blocklet ".concat(action, " failed: ").concat((0, _util2.formatError)(err));
127
+ onComplete({
128
+ action,
129
+ blocklet,
130
+ error: new Error(errMsg)
131
+ });
132
+ } finally {
133
+ if (!isRemoved) {
134
+ setLoading(false);
135
+ }
136
+ }
137
+ };
138
+ const onCancel = () => {
139
+ setLoading(false);
140
+ setConfirmSetting(null);
141
+ };
142
+ const name = (0, _util.getDisplayName)(blocklet, true);
143
+ const removeSetting = blocklet.source === (0, _constant.fromBlockletSource)(_constant.BlockletSource.custom) ? {
144
+ description: () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
145
+ component: "div",
146
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
147
+ gutterBottom: true,
148
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("b", {
149
+ children: t('blocklet.action.forceRemoveDescription')
150
+ })
151
+ })
152
+ }),
153
+ params: {
154
+ removeType: 'complete'
155
+ }
156
+ } : {
157
+ description: (params, setParams) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
158
+ component: "div",
159
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
160
+ gutterBottom: true,
161
+ children: t('blocklet.action.removeDescription')
162
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_RadioGroup.default, {
163
+ name: "removeType",
164
+ value: params.removeType,
165
+ onChange: e => setParams(_objectSpread(_objectSpread({}, params), {}, {
166
+ removeType: e.target.value
167
+ })),
168
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_FormControlLabel.default, {
169
+ value: "keepData",
170
+ control: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Radio.default, {}),
171
+ label: t('blocklet.action.removeKeepData')
172
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_FormControlLabel.default, {
173
+ value: "complete",
174
+ control: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Radio.default, {}),
175
+ label: t('blocklet.action.removeComplete')
176
+ })]
177
+ })]
178
+ }),
179
+ params: {
180
+ removeType: 'keepData'
181
+ }
182
+ };
183
+ const confirmSettings = {
184
+ stop: {
185
+ title: "".concat(t('common.stop'), " ").concat(name),
186
+ description: t('blocklet.action.stopDescription'),
187
+ confirm: t('blocklet.action.confirmStop'),
188
+ cancel: t('common.cancel'),
189
+ onConfirm,
190
+ onCancel
191
+ },
192
+ restart: {
193
+ title: "".concat(t('common.restart'), " ").concat(name),
194
+ description: t('blocklet.action.restartDescription'),
195
+ confirm: t('blocklet.action.confirmRestart'),
196
+ cancel: t('common.cancel'),
197
+ onConfirm,
198
+ onCancel
199
+ },
200
+ remove: _objectSpread({
201
+ title: "".concat(t('common.remove'), " ").concat(name),
202
+ confirm: t('blocklet.action.confirmRemove'),
203
+ cancel: t('common.cancel'),
204
+ onConfirm,
205
+ onCancel
206
+ }, removeSetting),
207
+ cancelDownload: {
208
+ title: "".concat(t('common.cancel')),
209
+ description: t('blocklet.action.cancelDownloadDescription', {
210
+ name
211
+ }),
212
+ confirm: t('common.confirm'),
213
+ cancel: t('common.cancel'),
214
+ onConfirm,
215
+ onCancel
216
+ }
217
+ };
218
+ if (requireUserConfirm) {
219
+ setConfirmSetting(confirmSettings[action]);
220
+ } else {
221
+ await onConfirm();
222
+ }
223
+ };
224
+ };
225
+ const open = Boolean(anchorEl);
226
+ const onOpen = e => {
227
+ try {
228
+ e.stopPropagation();
229
+ e.preventDefault();
230
+ // eslint-disable-next-line no-empty
231
+ } catch (_unused) {}
232
+ setAnchorEl(e.currentTarget);
233
+ };
234
+ const onClose = e => {
235
+ try {
236
+ e.stopPropagation();
237
+ e.preventDefault();
238
+ // eslint-disable-next-line no-empty
239
+ } catch (_unused2) {}
240
+ setAnchorEl(null);
241
+ };
242
+ const onAction = async (action, e) => {
243
+ try {
244
+ e.stopPropagation();
245
+ e.preventDefault();
246
+ // eslint-disable-next-line no-empty
247
+ } catch (_unused3) {}
248
+ setAnchorEl(null);
249
+ if (typeof action.handler === 'function') {
250
+ try {
251
+ setLoading(true);
252
+ setCurrentAction(action.action);
253
+ await action.handler();
254
+ } catch (err) {
255
+ // eslint-disable-next-line no-console
256
+ console.error("Blocklet ".concat(action.name, " failed: "), err);
257
+ } finally {
258
+ setLoading(false);
259
+ }
260
+ }
261
+ };
262
+ const removeAction = !inService && (0, _util.isDeletableBlocklet)(blocklet) && blocklet.structVersion === _constant2.APP_STRUCT_VERSION ? {
263
+ action: 'remove',
264
+ icon: _icons.default.Remove,
265
+ name: t('common.remove'),
266
+ handler: createHandler('remove', node.api.deleteBlocklet, true),
267
+ disabled: inProgress
268
+ } : null;
269
+ const cancelDownloadAction = !inService ? {
270
+ action: 'remove',
271
+ icon: _icons.default.Remove,
272
+ name: t('common.cancel'),
273
+ handler: createHandler('cancelDownload', node.api.cancelDownloadBlocklet, true)
274
+ } : null;
275
+ const missingRequiredConfigs = (0, _util.getAppMissingConfigs)(blocklet);
276
+ const actions = [{
277
+ action: 'start',
278
+ icon: _icons.default.Start,
279
+ name: t('common.start'),
280
+ handler: createHandler('start', node.api.startBlocklet),
281
+ disabled: !(0, _util.hasRunnableComponent)(blocklet) || blocklet.status === 'running' || blocklet.status === 'corrupted' || missingRequiredConfigs.length > 0 || (0, _util2.isDownloading)(blocklet.status) || blocklet.mode === _constant.BLOCKLET_MODES.DEVELOPMENT || recommendedUrlLoading || inProgress
282
+ }, {
283
+ action: 'stop',
284
+ icon: _icons.default.Stop,
285
+ name: t('common.stop'),
286
+ handler: createHandler('stop', node.api.stopBlocklet, true),
287
+ disabled: !['running', 'starting'].includes(blocklet.status) || blocklet.mode === _constant.BLOCKLET_MODES.DEVELOPMENT
288
+ }, {
289
+ action: 'restart',
290
+ icon: _icons.default.Restart,
291
+ name: t('common.restart'),
292
+ handler: createHandler('restart', node.api.restartBlocklet, true),
293
+ disabled: blocklet.status !== 'running' || blocklet.mode === _constant.BLOCKLET_MODES.DEVELOPMENT
294
+ }, {
295
+ action: 'reload',
296
+ icon: _icons.default.Reload,
297
+ name: t('common.reload'),
298
+ handler: createHandler('reload', node.api.reloadBlocklet),
299
+ disabled: blocklet.status !== 'running' || blocklet.mode === _constant.BLOCKLET_MODES.DEVELOPMENT
300
+ }, (0, _util2.isDownloading)(blocklet.status) ? cancelDownloadAction : removeAction, {
301
+ separator: true
302
+ }, {
303
+ onlyInMenu: true,
304
+ action: 'config',
305
+ icon: _icons.default.Config,
306
+ name: t('common.config'),
307
+ handler: () => {
308
+ navigate("/blocklets/".concat(blocklet.meta.did, "/configuration"));
309
+ },
310
+ disabled: (0, _util2.isDownloading)(blocklet.status)
311
+ }, {
312
+ onlyInMenu: true,
313
+ action: 'team',
314
+ icon: _icons.default.Group,
315
+ name: t('common.manageTeam'),
316
+ handler: () => {
317
+ navigate("/blocklets/".concat(blocklet.meta.did, "/members"));
318
+ },
319
+ disabled: (0, _util2.isDownloading)(blocklet.status)
320
+ }, {
321
+ onlyInMenu: true,
322
+ action: 'log',
323
+ icon: _icons.default.Log,
324
+ name: t('common.log'),
325
+ handler: () => {
326
+ navigate("/logs/blocklet-".concat(blocklet.meta.did));
327
+ },
328
+ disabled: (0, _util2.isDownloading)(blocklet.status)
329
+ }].filter(Boolean);
330
+ if (variant === 'menu') {
331
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Div, {
332
+ "data-cy": "blocklet-actions",
333
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
334
+ "aria-label": "more",
335
+ "aria-controls": "actions-menu",
336
+ "aria-haspopup": "true",
337
+ "data-cy": "trigger-blocklet-actions",
338
+ "actions-blocklet-did": blocklet.meta.did,
339
+ onClick: onOpen,
340
+ size: "small",
341
+ disabled: !hasPermission || !(0, _util2.isDownloading)(blocklet.status) && loading,
342
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_MoreVert.default, {})
343
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Menu.default, {
344
+ id: "actions-menu",
345
+ anchorEl: anchorEl,
346
+ keepMounted: true,
347
+ open: open,
348
+ onClose: onClose,
349
+ PaperProps: {},
350
+ children: [missingRequiredConfigs.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Alert.default, {
351
+ style: {
352
+ maxWidth: '400px'
353
+ },
354
+ severity: "error",
355
+ children: [t('blocklet.config.missingRequired'), /*#__PURE__*/(0, _jsxRuntime.jsx)("br", {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactRouterDom.Link, {
356
+ to: "/blocklets/".concat(blocklet.meta.did, "/components"),
357
+ children: t('blocklet.config.gotoFix')
358
+ })]
359
+ }), actions.map((action, i) => {
360
+ if (action.separator) {
361
+ // eslint-disable-next-line react/no-array-index-key
362
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Divider.default, {}, "separator-".concat(i));
363
+ }
364
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_MenuItem.default, {
365
+ dense: true,
366
+ onClick: e => onAction(action, e),
367
+ disabled: action.disabled,
368
+ "data-cy": "".concat(action.action, "-blocklet"),
369
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ListItemIcon.default, {
370
+ style: {
371
+ minWidth: 24
372
+ },
373
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(action.icon, {
374
+ fontSize: "small"
375
+ })
376
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ListItemText.default, {
377
+ primary: action.name
378
+ })]
379
+ }, action.name);
380
+ })]
381
+ }), confirmSetting && /*#__PURE__*/(0, _jsxRuntime.jsx)(_confirm.default, {
382
+ title: confirmSetting.title,
383
+ description: confirmSetting.description,
384
+ confirm: confirmSetting.confirm,
385
+ cancel: confirmSetting.cancel,
386
+ params: confirmSetting.params,
387
+ onConfirm: confirmSetting.onConfirm,
388
+ onCancel: confirmSetting.onCancel
389
+ })]
390
+ });
391
+ }
392
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Div, _objectSpread(_objectSpread({
393
+ "data-cy": "blocklet-actions"
394
+ }, rest), {}, {
395
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ButtonGroup.default, {
396
+ children: actions.filter(x => !x.separator && !x.onlyInMenu).map(action => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
397
+ title: action.name,
398
+ "data-cy": "".concat(action.action, "-blocklet"),
399
+ onClick: () => onAction(action),
400
+ disabled: Boolean(action.disabled) || loading,
401
+ children: [currentAction === action.action && loading && inProgress ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_CircularProgress.default, {
402
+ size: 16
403
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(action.icon, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
404
+ className: "blocklet-action-text",
405
+ children: action.name
406
+ })]
407
+ }, action.name))
408
+ }), confirmSetting && /*#__PURE__*/(0, _jsxRuntime.jsx)(_confirm.default, {
409
+ title: confirmSetting.title,
410
+ description: confirmSetting.description,
411
+ confirm: confirmSetting.confirm,
412
+ cancel: confirmSetting.cancel,
413
+ params: confirmSetting.params,
414
+ onConfirm: confirmSetting.onConfirm,
415
+ onCancel: confirmSetting.onCancel
416
+ })]
417
+ }));
418
+ }
419
+ BlockletActions.propTypes = {
420
+ blocklet: _propTypes.default.object.isRequired,
421
+ onStart: _propTypes.default.func.isRequired,
422
+ onComplete: _propTypes.default.func.isRequired,
423
+ variant: _propTypes.default.oneOf(['menu', 'group']),
424
+ hasPermission: _propTypes.default.bool,
425
+ useBlockletUrlEvaluation: _propTypes.default.func
426
+ };
427
+ BlockletActions.defaultProps = {
428
+ variant: 'menu',
429
+ hasPermission: false,
430
+ useBlockletUrlEvaluation: () => {
431
+ var _window, _window$location;
432
+ return {
433
+ loading: false,
434
+ recommendedUrl: (_window = window) === null || _window === void 0 ? void 0 : (_window$location = _window.location) === null || _window$location === void 0 ? void 0 : _window$location.href
435
+ };
436
+ }
437
+ };
438
+ const Div = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n\n @media (max-width: ", "px) {\n .MuiButton-root {\n padding: 4px;\n font-size: 10px;\n }\n }\n"])), props => props.theme.breakpoints.values.sm);
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = AddCert;
7
+ var _react = require("react");
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _useAsyncRetry = _interopRequireDefault(require("react-use/lib/useAsyncRetry"));
10
+ var _Tooltip = _interopRequireDefault(require("@mui/material/Tooltip"));
11
+ var _CircularProgress = _interopRequireDefault(require("@mui/material/CircularProgress"));
12
+ var _Alert = _interopRequireDefault(require("@arcblock/ux/lib/Alert"));
13
+ var _context = require("@arcblock/ux/lib/Locale/context");
14
+ var _constant = require("@blocklet/constant");
15
+ var _toast = _interopRequireDefault(require("../toast"));
16
+ var _confirm = _interopRequireDefault(require("../confirm"));
17
+ var _node = require("../contexts/node");
18
+ var _blocklet = require("../contexts/blocklet");
19
+ var _util = require("../util");
20
+ var _jsxRuntime = require("react/jsx-runtime");
21
+ const _excluded = ["domain", "domainStatus"];
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+ 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; }
24
+ 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; }
25
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
26
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
27
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
28
+ 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; }
29
+ 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; }
30
+ const isCertInProgress = status => ['waiting', 'creating', 'renewaling'].includes(status);
31
+ function Add(props) {
32
+ var _certState$value2;
33
+ const {
34
+ t
35
+ } = (0, _context.useLocaleContext)();
36
+ const [loading, setLoading] = (0, _react.useState)(false);
37
+ const [confirmSetting, setConfirmSetting] = (0, _react.useState)(null);
38
+ const {
39
+ domain,
40
+ onAdd,
41
+ children,
42
+ did
43
+ } = props;
44
+ const {
45
+ api,
46
+ ws: {
47
+ useSubscription
48
+ }
49
+ } = (0, _node.useNodeContext)();
50
+ const [issuing, setIssuing] = (0, _react.useState)(false);
51
+ const {
52
+ actions: {
53
+ refreshDomainStatus
54
+ }
55
+ } = (0, _blocklet.useBlockletContext)();
56
+ const certState = (0, _useAsyncRetry.default)(async () => {
57
+ const {
58
+ cert
59
+ } = await api.findCertificateByDomain({
60
+ input: {
61
+ domain,
62
+ did
63
+ }
64
+ });
65
+ return cert;
66
+ });
67
+ const handleIssueComplete = (cert, type) => {
68
+ if (cert.domain === domain) {
69
+ setIssuing(false);
70
+ if (type === 'success') {
71
+ _toast.default.success("The ".concat(cert.domain, " certificate is issued successfully"));
72
+ } else if (type === 'error') {
73
+ _toast.default.error("Failed to issue certificate for ".concat(cert.domain));
74
+ }
75
+ }
76
+ };
77
+ (0, _react.useEffect)(() => {
78
+ var _certState$value;
79
+ if (!certState.loading && isCertInProgress((_certState$value = certState.value) === null || _certState$value === void 0 ? void 0 : _certState$value.status)) {
80
+ setIssuing(true);
81
+ }
82
+ }, [certState]);
83
+ useSubscription(_constant.BlockletEvents.certError, cert => handleIssueComplete(cert, 'error'));
84
+ useSubscription(_constant.BlockletEvents.certIssued, cert => {
85
+ certState.retry();
86
+ refreshDomainStatus(cert.domain);
87
+ handleIssueComplete(cert, 'success');
88
+ });
89
+ if (certState.loading) {
90
+ return ''; // 如果正在加载证书的状态,则不渲染任何元素
91
+ }
92
+
93
+ if (((_certState$value2 = certState.value) === null || _certState$value2 === void 0 ? void 0 : _certState$value2.status) === 'normal') {
94
+ return ''; // 如果证书已经生成,则不渲染任何元素
95
+ }
96
+
97
+ const onCancel = () => {
98
+ setLoading(false);
99
+ setConfirmSetting(null);
100
+ };
101
+ const onConfirm = async () => {
102
+ setLoading(true);
103
+ try {
104
+ await api.issueLetsEncryptCert({
105
+ input: {
106
+ domain,
107
+ did
108
+ }
109
+ });
110
+ onAdd();
111
+ setIssuing(true);
112
+ } catch (error) {
113
+ console.error(error);
114
+ setIssuing(false);
115
+ } finally {
116
+ setLoading(false);
117
+ setConfirmSetting(null);
118
+ }
119
+ };
120
+ const setting = {
121
+ title: t('router.cert.genLetsEncryptCert.title'),
122
+ description: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
123
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.default, {
124
+ type: "success",
125
+ children: t('router.cert.genLetsEncryptCert.dnsTip')
126
+ }), t('router.cert.genLetsEncryptCert.description')]
127
+ }),
128
+ confirm: t('common.confirm'),
129
+ onConfirm,
130
+ onCancel
131
+ };
132
+ const onClick = e => {
133
+ e.stopPropagation();
134
+ setConfirmSetting(setting);
135
+ };
136
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
137
+ children: [issuing ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
138
+ title: t('router.cert.issuing'),
139
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_CircularProgress.default, {
140
+ size: 12
141
+ })
142
+ }) : children({
143
+ loading,
144
+ open: onClick
145
+ }), confirmSetting && /*#__PURE__*/(0, _jsxRuntime.jsx)(_confirm.default, {
146
+ color: "primary",
147
+ title: confirmSetting.title,
148
+ description: confirmSetting.description,
149
+ confirm: confirmSetting.confirm,
150
+ params: confirmSetting.params,
151
+ onConfirm: confirmSetting.onConfirm,
152
+ onCancel: confirmSetting.onCancel
153
+ })]
154
+ });
155
+ }
156
+ Add.propTypes = {
157
+ domain: _propTypes.default.string.isRequired,
158
+ did: _propTypes.default.string.isRequired,
159
+ onAdd: _propTypes.default.func,
160
+ children: _propTypes.default.any
161
+ };
162
+ Add.defaultProps = {
163
+ onAdd: () => {},
164
+ children: null
165
+ };
166
+ function AddCert(props) {
167
+ const {
168
+ domain,
169
+ domainStatus
170
+ } = props,
171
+ others = _objectWithoutProperties(props, _excluded);
172
+ if (!(0, _util.shouldCheckDomainStatus)(domain) || domainStatus !== null && domainStatus !== void 0 && domainStatus.isHttps) {
173
+ return '';
174
+ }
175
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Add, _objectSpread({}, _objectSpread({
176
+ domain
177
+ }, others)));
178
+ }
179
+ AddCert.propTypes = {
180
+ domain: _propTypes.default.string.isRequired,
181
+ domainStatus: _propTypes.default.shape({
182
+ isHttps: _propTypes.default.bool
183
+ }).isRequired,
184
+ did: _propTypes.default.string.isRequired,
185
+ onAdd: _propTypes.default.func,
186
+ children: _propTypes.default.any
187
+ };
188
+ AddCert.defaultProps = {
189
+ onAdd: () => {},
190
+ children: null
191
+ };
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = AgreementApp;
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ 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; }
9
+ 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; }
10
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
12
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
13
+ function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure " + obj); }
14
+ function AgreementApp(_ref) {
15
+ let props = Object.assign({}, (_objectDestructuringEmpty(_ref), _ref));
16
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", _objectSpread(_objectSpread({}, props), {}, {
17
+ style: {
18
+ width: '100%'
19
+ },
20
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
21
+ children: "End User License Agreement for Application"
22
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
23
+ children: "Blocklet Server License Agreement ArcBlock, Inc. version 2020-08-28"
24
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
25
+ children: "BLOCKLET SERVER LICENSE AGREEMENT"
26
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
27
+ children: "\u6682\u65E0"
28
+ })]
29
+ }));
30
+ }