@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,574 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = BlockletEnvironmentWithPermission;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _get = _interopRequireDefault(require("lodash/get"));
11
+ var _omit = _interopRequireDefault(require("lodash/omit"));
12
+ var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
13
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
14
+ var _useTheme = _interopRequireDefault(require("@mui/material/styles/useTheme"));
15
+ var _Switch = _interopRequireDefault(require("@mui/material/Switch"));
16
+ var _Divider = _interopRequireDefault(require("@mui/material/Divider"));
17
+ var _Add = _interopRequireDefault(require("@mui/icons-material/Add"));
18
+ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
19
+ var _Tooltip = _interopRequireDefault(require("@mui/material/Tooltip"));
20
+ var _context = require("@arcblock/ux/lib/Locale/context");
21
+ var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
22
+ var _Empty = _interopRequireDefault(require("@arcblock/ux/lib/Empty"));
23
+ var _LockIcon = _interopRequireDefault(require("@arcblock/icons/lib/LockIcon"));
24
+ var _constant = require("@abtnode/constant");
25
+ var _constant2 = require("@blocklet/constant");
26
+ var _util = require("@blocklet/meta/lib/util");
27
+ var _toast = _interopRequireDefault(require("../toast"));
28
+ var _schemaForm = _interopRequireDefault(require("../schema-form"));
29
+ var _formTextInput = _interopRequireDefault(require("../form/form-text-input"));
30
+ var _node = require("../contexts/node");
31
+ var _util2 = require("../util");
32
+ var _permission = require("../permission");
33
+ var _addDomainAlias = _interopRequireDefault(require("./router/action/add-domain-alias"));
34
+ var _domainStatus = _interopRequireDefault(require("./router/domain-status"));
35
+ var _domainActions = _interopRequireDefault(require("./router/domain-actions"));
36
+ var _walletType = _interopRequireDefault(require("./preferences/wallet-type"));
37
+ var _appSk = _interopRequireDefault(require("./preferences/app-sk"));
38
+ var _addCert = _interopRequireDefault(require("./add-cert"));
39
+ var _jsxRuntime = require("react/jsx-runtime");
40
+ var _templateObject;
41
+ const _excluded = ["blocklet", "onUpdate", "hasPermission"],
42
+ _excluded2 = ["value"];
43
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
44
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
45
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
46
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
47
+ 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; }
48
+ 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; }
49
+ 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; }
50
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
51
+ 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); }
52
+ 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; }
53
+ 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; }
54
+ function BlockletEnvironment(_ref) {
55
+ var _blocklet$settings;
56
+ let {
57
+ blocklet,
58
+ onUpdate,
59
+ hasPermission
60
+ } = _ref,
61
+ rest = _objectWithoutProperties(_ref, _excluded);
62
+ const node = (0, _node.useNodeContext)();
63
+ const {
64
+ t
65
+ } = (0, _react.useContext)(_context.LocaleContext);
66
+ const [cpuCores, setCpuCores] = (0, _react.useState)('');
67
+ const [loading, setLoading] = (0, _react.useState)('');
68
+ const whoCanAccess = (0, _util.getWhoCanAccess)(blocklet);
69
+ const publicToStore = blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$settings = blocklet.settings) === null || _blocklet$settings === void 0 ? void 0 : _blocklet$settings.publicToStore;
70
+ const theme = (0, _useTheme.default)();
71
+ const [editingItem, setEditingItem] = (0, _react.useState)(null);
72
+ const disabled = loading || !hasPermission;
73
+ const {
74
+ inService,
75
+ ws: {
76
+ useSubscription
77
+ }
78
+ } = node;
79
+ const {
80
+ did
81
+ } = blocklet.meta;
82
+ const {
83
+ site
84
+ } = blocklet;
85
+ const domains = (0, _util2.sortDomains)(site === null || site === void 0 ? void 0 : site.domainAliases);
86
+ const clusterMode = (0, _get.default)(blocklet.meta, 'capabilities.clusterMode', false);
87
+ useSubscription(_constant.EVENTS.NODE_RUNTIME_INFO, res => {
88
+ if (clusterMode) {
89
+ setCpuCores((0, _get.default)(res, 'cpu.physicalCores', ''));
90
+ }
91
+ });
92
+ if ((0, _util2.isInstalling)(blocklet.status)) {
93
+ return null;
94
+ }
95
+
96
+ // configurable blocklet environment
97
+ const customType = blocklet.environments.find(x => x.key === 'BLOCKLET_WALLET_TYPE');
98
+ const customDelete = blocklet.environments.find(x => x.key === 'BLOCKLET_DELETABLE');
99
+ const deletable = !customDelete || customDelete.value === 'yes';
100
+ const customUrl = blocklet.environments.find(x => x.key === 'BLOCKLET_APP_URL');
101
+ const customLogoSquare = blocklet.environments.find(x => x.key === 'BLOCKLET_APP_LOGO_SQUARE');
102
+ const customLogoRect = blocklet.environments.find(x => x.key === 'BLOCKLET_APP_LOGO_RECT');
103
+ const customLogoFavicon = blocklet.environments.find(x => x.key === 'BLOCKLET_APP_LOGO_FAVICON');
104
+ const customLogoDeprecated = blocklet.environments.find(x => x.key === 'BLOCKLET_APP_LOGO');
105
+ const configurableEnvs = [{
106
+ key: _constant2.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_NAME,
107
+ description: t('blocklet.config.name'),
108
+ value: blocklet.environments.find(x => x.key === 'BLOCKLET_APP_NAME').value
109
+ }, {
110
+ key: _constant2.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_DESCRIPTION,
111
+ description: t('blocklet.config.description'),
112
+ value: blocklet.environments.find(x => x.key === 'BLOCKLET_APP_DESCRIPTION').value
113
+ }, {
114
+ key: _constant2.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_URL,
115
+ description: t('blocklet.config.appUrl'),
116
+ value: customUrl ? customUrl.value : ''
117
+ }, {
118
+ key: _constant2.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_LOGO_SQUARE,
119
+ description: t('blocklet.config.logoSquare'),
120
+ value: customLogoSquare ? customLogoSquare.value : ''
121
+ }, {
122
+ key: _constant2.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_LOGO_RECT,
123
+ description: t('blocklet.config.logoRect'),
124
+ value: customLogoRect ? customLogoRect.value : ''
125
+ }, {
126
+ key: _constant2.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_LOGO_FAVICON,
127
+ description: t('blocklet.config.logoFavicon'),
128
+ value: customLogoFavicon ? customLogoFavicon.value : ''
129
+ }, {
130
+ key: _constant2.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_LOGO,
131
+ description: t('blocklet.config.logo'),
132
+ value: customLogoDeprecated ? customLogoDeprecated.value : ''
133
+ }];
134
+ if (clusterMode) {
135
+ const exist = blocklet.configs.find(x => x.key === _constant2.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_CLUSTER_SIZE);
136
+ const value = exist ? exist.value : cpuCores;
137
+ configurableEnvs.push({
138
+ key: _constant2.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_CLUSTER_SIZE,
139
+ description: t('blocklet.config.clusterSize'),
140
+ value,
141
+ cpuCores
142
+ });
143
+ }
144
+ const defaultValue = {};
145
+ const schemaList = configurableEnvs.map(item => {
146
+ const {
147
+ value
148
+ } = item,
149
+ props = _objectWithoutProperties(item, _excluded2);
150
+ defaultValue[item.key] = value;
151
+ return _objectSpread({}, props);
152
+ });
153
+ const onPublicToStoreChange = async e => {
154
+ if (loading) {
155
+ return;
156
+ }
157
+ setLoading(true);
158
+ try {
159
+ const {
160
+ checked
161
+ } = e.target;
162
+ const {
163
+ blocklet: data
164
+ } = await node.api.configPublicToStore({
165
+ input: {
166
+ did: blocklet.meta.did,
167
+ publicToStore: checked
168
+ }
169
+ });
170
+ onUpdate(data);
171
+ } catch (err) {
172
+ _toast.default.error(err.message);
173
+ } finally {
174
+ setLoading(false);
175
+ }
176
+ };
177
+ const onSubmitConfig = async value => {
178
+ if (value.key === _constant2.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_CLUSTER_SIZE) {
179
+ const errMessage = (0, _util2.isValidClusterSize)(value);
180
+ if (errMessage) {
181
+ _toast.default.error(errMessage);
182
+ return;
183
+ }
184
+ }
185
+ const params = [_objectSpread(_objectSpread({}, (0, _omit.default)(editingItem, ['childDid', 'componentType', 'componentProps'])), {}, {
186
+ value
187
+ })];
188
+ try {
189
+ setLoading(true);
190
+ const {
191
+ blocklet: data
192
+ } = await node.api.configBlocklet({
193
+ input: {
194
+ did: blocklet.meta.did,
195
+ configs: params
196
+ }
197
+ });
198
+ onUpdate(data);
199
+ } catch (err) {
200
+ _toast.default.error(err.message);
201
+ } finally {
202
+ setLoading(false);
203
+ }
204
+ };
205
+ const onDeletableChange = async e => {
206
+ if (loading) {
207
+ return;
208
+ }
209
+ setLoading(true);
210
+ try {
211
+ const {
212
+ checked
213
+ } = e.target;
214
+ const {
215
+ blocklet: data
216
+ } = await node.api.configBlocklet({
217
+ input: {
218
+ did: blocklet.meta.did,
219
+ configs: [{
220
+ key: _constant2.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_DELETABLE,
221
+ value: checked ? 'no' : 'yes'
222
+ }]
223
+ }
224
+ });
225
+ onUpdate(data);
226
+ } catch (err) {
227
+ _toast.default.error(err.message);
228
+ } finally {
229
+ setLoading(false);
230
+ }
231
+ };
232
+ const onWalletTypeChange = async value => {
233
+ if (loading) {
234
+ return;
235
+ }
236
+ setLoading(true);
237
+ try {
238
+ const {
239
+ blocklet: data
240
+ } = await node.api.configBlocklet({
241
+ input: {
242
+ did: blocklet.meta.did,
243
+ configs: [{
244
+ key: _constant2.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_WALLET_TYPE,
245
+ value
246
+ }]
247
+ }
248
+ });
249
+ onUpdate(data);
250
+ } catch (err) {
251
+ _toast.default.error(err.message);
252
+ } finally {
253
+ setLoading(false);
254
+ }
255
+ };
256
+ const onUpdateCors = async value => {
257
+ const oldValue = site.corsAllowedOrigins || [];
258
+ const newValue = value.split(',').map(x => x.trim()).filter(Boolean);
259
+ if ((0, _isEqual.default)(oldValue, newValue)) {
260
+ return false;
261
+ }
262
+ try {
263
+ setLoading(true);
264
+ const corsAllowedOrigins = newValue.length ? newValue : ['__none__'];
265
+ await node.api.updateRoutingSite({
266
+ input: {
267
+ id: site.id,
268
+ corsAllowedOrigins,
269
+ teamDid: blocklet.meta.did
270
+ }
271
+ });
272
+ setLoading(false);
273
+ } catch (err) {
274
+ _toast.default.error(err.message);
275
+ setLoading(false);
276
+ return false;
277
+ }
278
+ return true;
279
+ };
280
+ const onAppSkChange = async value => {
281
+ if (loading) {
282
+ return;
283
+ }
284
+ setLoading(true);
285
+ try {
286
+ const {
287
+ blocklet: data
288
+ } = await node.api.configBlocklet({
289
+ input: {
290
+ did: blocklet.meta.did,
291
+ configs: [{
292
+ key: _constant2.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_SK,
293
+ value
294
+ }]
295
+ }
296
+ });
297
+ onUpdate(data);
298
+ } catch (err) {
299
+ _toast.default.error(err.message);
300
+ } finally {
301
+ setLoading(false);
302
+ }
303
+ };
304
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Div, _objectSpread(_objectSpread({}, rest), {}, {
305
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_schemaForm.default, {
306
+ disabled: disabled,
307
+ style: {
308
+ marginTop: -24
309
+ },
310
+ loading: loading,
311
+ schema: schemaList,
312
+ defaultValue: defaultValue,
313
+ onChange: (changeValue, _ref2) => {
314
+ let {
315
+ action,
316
+ currentItem
317
+ } = _ref2;
318
+ if (action === 'edit') {
319
+ setEditingItem(currentItem);
320
+ } else if (['cancel', 'confirm'].includes(action)) {
321
+ setEditingItem(null);
322
+ }
323
+ if (action === 'confirm') {
324
+ onSubmitConfig(changeValue[currentItem.key]);
325
+ }
326
+ }
327
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
328
+ className: "config-form",
329
+ children: [whoCanAccess === 'all' && blocklet.source === 'registry' && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
330
+ className: "config-item",
331
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
332
+ className: "config-label",
333
+ children: [t('blocklet.config.access.publicToStore'), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
334
+ className: "config-desc",
335
+ children: t('blocklet.config.access.publicInstanceTip')
336
+ })]
337
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Switch.default, {
338
+ disabled: disabled,
339
+ checked: publicToStore,
340
+ defaultChecked: true,
341
+ onChange: onPublicToStoreChange
342
+ })]
343
+ }), !inService && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
344
+ className: "config-item",
345
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
346
+ className: "config-label",
347
+ children: [t('blocklet.config.deletable.name'), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
348
+ className: "config-desc",
349
+ children: deletable ? t('blocklet.config.deletable.disable') : t('blocklet.config.deletable.enable')
350
+ })]
351
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Switch.default, {
352
+ disabled: disabled,
353
+ checked: !deletable,
354
+ defaultChecked: true,
355
+ onChange: onDeletableChange
356
+ })]
357
+ })]
358
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
359
+ className: "config-form",
360
+ component: _Divider.default,
361
+ my: 3
362
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
363
+ className: "config-form",
364
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
365
+ display: "flex",
366
+ justifyContent: "space-between",
367
+ alignItems: "center",
368
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
369
+ className: "config-label",
370
+ children: t('common.domain')
371
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
372
+ display: "flex",
373
+ alignItems: "center",
374
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_addDomainAlias.default, {
375
+ id: site.id,
376
+ title: t('router.domain.add.title'),
377
+ teamDid: did,
378
+ children: _ref3 => {
379
+ let {
380
+ open
381
+ } = _ref3;
382
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
383
+ style: {
384
+ marginLeft: 16
385
+ },
386
+ variant: "contained",
387
+ color: "primary",
388
+ "data-cy": "add-domain-alias",
389
+ onClick: open,
390
+ disabled: (0, _util2.isInProgress)(blocklet.status),
391
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Add.default, {
392
+ style: {
393
+ fontSize: '1.3em',
394
+ marginRight: 4
395
+ }
396
+ }), t('common.add')]
397
+ });
398
+ }
399
+ })
400
+ })]
401
+ }), domains.map((domain, index) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
402
+ display: "flex",
403
+ alignItems: "center",
404
+ justifyContent: "space-between",
405
+ mt: index ? 0 : 1,
406
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
407
+ display: "flex",
408
+ alignItems: "center",
409
+ justifyContent: "space-between",
410
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_domainStatus.default, {
411
+ domain: domain,
412
+ filters: ['domain']
413
+ }, "".concat(domain.value, "-domain")), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
414
+ ml: 2,
415
+ mr: 0.5,
416
+ children: domain.value
417
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_domainStatus.default, {
418
+ domain: domain,
419
+ filters: ['http']
420
+ }, "".concat(domain.value, "-http")), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
421
+ style: {
422
+ marginLeft: 12
423
+ }
424
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_addCert.default, {
425
+ domain: domain.value,
426
+ domainStatus: domain.domainStatus,
427
+ did: blocklet.meta.did,
428
+ children: _ref4 => {
429
+ let {
430
+ open
431
+ } = _ref4;
432
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
433
+ size: "small",
434
+ onClick: e => open(e),
435
+ children: t('router.cert.genLetsEncryptCert.title')
436
+ });
437
+ }
438
+ })]
439
+ }), hasPermission && !domain.isProtected ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_domainActions.default, {
440
+ site: site,
441
+ domain: domain,
442
+ blocklet: blocklet
443
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
444
+ title: t('blocklet.router.domainLockTooltip'),
445
+ placement: "top",
446
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
447
+ disabled: true,
448
+ size: "large",
449
+ style: {
450
+ pointerEvents: 'auto',
451
+ // padding replace to margin, fix the tooltip position
452
+ paddingTop: 0,
453
+ paddingBottom: 0,
454
+ margin: '12px 0'
455
+ },
456
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_LockIcon.default, {
457
+ style: {
458
+ fill: theme.palette.text.disabled
459
+ }
460
+ })
461
+ })
462
+ })]
463
+ }, domain.value)), !domains.length && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
464
+ mt: 4,
465
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Empty.default, {
466
+ children: t('common.empty')
467
+ })
468
+ })]
469
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
470
+ className: "config-form",
471
+ component: _Divider.default,
472
+ my: 3
473
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
474
+ className: "config-form",
475
+ mt: 2,
476
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
477
+ className: "config-label",
478
+ mb: 0,
479
+ children: t('common.security')
480
+ })
481
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
482
+ className: "config-form",
483
+ mt: 2,
484
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
485
+ className: "config-label",
486
+ fontSize: 14,
487
+ mb: 0,
488
+ children: t('router.domainSecurity.cors.title')
489
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
490
+ mb: 1.5,
491
+ className: "config-desc",
492
+ children: t('router.domainSecurity.cors.description', {
493
+ name: 'the blocklet'
494
+ })
495
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_formTextInput.default, {
496
+ style: {
497
+ marginTop: 0
498
+ },
499
+ disabled: loading || disabled,
500
+ loading: loading,
501
+ initialValue: (site.corsAllowedOrigins || []).join(', '),
502
+ onSubmit: onUpdateCors
503
+ })]
504
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
505
+ className: "config-form",
506
+ component: _Divider.default,
507
+ my: 3
508
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
509
+ mb: 2,
510
+ className: "config-label",
511
+ fontSize: 20,
512
+ children: t('blocklet.config.dangerZone')
513
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
514
+ px: 2,
515
+ py: 1,
516
+ sx: {
517
+ border: '1px solid red',
518
+ borderRadius: 2
519
+ },
520
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
521
+ className: "config-form",
522
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
523
+ className: "config-item",
524
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
525
+ className: "config-label",
526
+ children: [t('blocklet.config.walletType.name'), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
527
+ className: "config-desc",
528
+ children: t('blocklet.config.walletType.description')
529
+ })]
530
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_walletType.default, {
531
+ value: (customType === null || customType === void 0 ? void 0 : customType.value) || 'default',
532
+ disabled: disabled,
533
+ onChange: onWalletTypeChange
534
+ })]
535
+ })
536
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
537
+ className: "config-form",
538
+ mt: 2,
539
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
540
+ className: "config-label",
541
+ fontSize: 14,
542
+ mb: 0,
543
+ children: t('blocklet.config.sk')
544
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_appSk.default, {
545
+ disabled: loading || disabled,
546
+ loading: loading,
547
+ initialValue: blocklet.environments.find(x => x.key === 'BLOCKLET_APP_SK').value,
548
+ onChange: onAppSkChange
549
+ })]
550
+ })]
551
+ })]
552
+ }));
553
+ }
554
+ const BlockletEnvironmentInDaemon = (0, _permission.withPermission)(BlockletEnvironment, 'mutate_blocklets');
555
+ const BlockletEnvironmentInService = (0, _permission.withPermission)(BlockletEnvironment, '', _util2.BlockletAdminRoles);
556
+ function BlockletEnvironmentWithPermission(props) {
557
+ const {
558
+ inService
559
+ } = (0, _node.useNodeContext)();
560
+ if (inService) {
561
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(BlockletEnvironmentInService, _objectSpread({}, props));
562
+ }
563
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(BlockletEnvironmentInDaemon, _objectSpread({}, props));
564
+ }
565
+ BlockletEnvironment.propTypes = {
566
+ blocklet: _propTypes.default.object.isRequired,
567
+ onUpdate: _propTypes.default.func,
568
+ hasPermission: _propTypes.default.bool
569
+ };
570
+ BlockletEnvironment.defaultProps = {
571
+ onUpdate: () => {},
572
+ hasPermission: false
573
+ };
574
+ const Div = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding-top: 24px;\n .config-form {\n flex-grow: 1;\n overflow-y: auto;\n ", " {\n width: 100%;\n flex-shrink: 0;\n padding: 0 24px;\n transform: translate(0, 0);\n max-height: 60vh;\n }\n }\n\n .config-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 16px 0;\n }\n\n .config-label {\n font-weight: bold;\n }\n\n .config-desc {\n font-weight: normal;\n font-size: 12px;\n color: #666;\n }\n\n .form-item {\n margin-top: 0;\n }\n"])), props => props.theme.breakpoints.down('md'));
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = BlockletDiskInfo;
7
+ var _react = require("react");
8
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _filesize = _interopRequireDefault(require("filesize"));
11
+ var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
12
+ var _Link = _interopRequireDefault(require("@mui/material/Link"));
13
+ var _InfoRow = _interopRequireDefault(require("@arcblock/ux/lib/InfoRow"));
14
+ var _context = require("@arcblock/ux/lib/Locale/context");
15
+ var _jsxRuntime = require("react/jsx-runtime");
16
+ var _templateObject;
17
+ const _excluded = ["blocklet"];
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
20
+ 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; }
21
+ 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; }
22
+ 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; }
23
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
24
+ 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); }
25
+ 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; }
26
+ 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; }
27
+ function BlockletDiskInfo(_ref) {
28
+ let {
29
+ blocklet
30
+ } = _ref,
31
+ rest = _objectWithoutProperties(_ref, _excluded);
32
+ const {
33
+ t
34
+ } = (0, _react.useContext)(_context.LocaleContext);
35
+ if (!blocklet.diskInfo) {
36
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
37
+ children: t('blocklet.diskInfo.empty')
38
+ });
39
+ }
40
+ const renderDiskInfo = (dir, size, handler) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
41
+ children: [handler ?
42
+ /*#__PURE__*/
43
+ /* eslint-disable-next-line no-script-url, jsx-a11y/anchor-is-valid */
44
+ (0, _jsxRuntime.jsx)(_Link.default, {
45
+ style: {
46
+ cursor: 'pointer'
47
+ },
48
+ onClick: handler,
49
+ underline: "hover",
50
+ children: dir
51
+ }) : dir, ' ', /*#__PURE__*/(0, _jsxRuntime.jsx)("strong", {
52
+ children: size ? (0, _filesize.default)(size) : 'empty'
53
+ })]
54
+ });
55
+ const env = blocklet.environments.reduce((acc, x) => {
56
+ acc[x.key] = x.value;
57
+ return acc;
58
+ }, {});
59
+ const rows = [{
60
+ key: 'appDir',
61
+ name: t('blocklet.diskInfo.appDir'),
62
+ value: renderDiskInfo(env.BLOCKLET_APP_DIR, blocklet.diskInfo.app)
63
+ }, {
64
+ key: 'dataDir',
65
+ name: t('blocklet.diskInfo.dataDir'),
66
+ value: renderDiskInfo(env.BLOCKLET_DATA_DIR, blocklet.diskInfo.data)
67
+ }, {
68
+ key: 'logDir',
69
+ name: t('blocklet.diskInfo.logDir'),
70
+ value: renderDiskInfo(env.BLOCKLET_LOG_DIR, blocklet.diskInfo.log)
71
+ }, {
72
+ key: 'cacheDir',
73
+ name: t('blocklet.diskInfo.cacheDir'),
74
+ value: renderDiskInfo(env.BLOCKLET_CACHE_DIR, blocklet.diskInfo.cache)
75
+ }];
76
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Div, _objectSpread(_objectSpread({
77
+ component: "div"
78
+ }, rest), {}, {
79
+ children: rows.map(row => /*#__PURE__*/(0, _jsxRuntime.jsx)(_InfoRow.default, {
80
+ valueComponent: "div",
81
+ nameWidth: 120,
82
+ name: row.name,
83
+ children: row.value
84
+ }, row.key))
85
+ }));
86
+ }
87
+ BlockletDiskInfo.propTypes = {
88
+ blocklet: _propTypes.default.object.isRequired
89
+ };
90
+ BlockletDiskInfo.defaultProps = {};
91
+ const Div = (0, _styled.default)(_Typography.default)(_templateObject || (_templateObject = _taggedTemplateLiteral([""])));