@abtnode/ux 1.16.25-next-b726d470 → 1.16.25

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 (67) hide show
  1. package/es/blocklet/actions.js +11 -1
  2. package/es/blocklet/component/add-component-core.js +5 -0
  3. package/es/blocklet/component/component-cell.js +2 -1
  4. package/es/blocklet/icons.js +3 -1
  5. package/es/blocklet/overview.js +13 -7
  6. package/es/blocklet/publish/create-release.js +150 -43
  7. package/es/blocklet/publish/index.js +0 -4
  8. package/es/blocklet/publish/project-list.js +133 -29
  9. package/es/blocklet/publish/release-list.js +18 -4
  10. package/es/blocklet/publish/resource.js +35 -32
  11. package/es/blocklet/router/rule-list.js +2 -1
  12. package/es/locales/ar.js +13 -8
  13. package/es/locales/de.js +13 -8
  14. package/es/locales/en.js +12 -7
  15. package/es/locales/es.js +13 -8
  16. package/es/locales/fr.js +13 -8
  17. package/es/locales/hi.js +13 -8
  18. package/es/locales/i18n.db +0 -0
  19. package/es/locales/id.js +13 -8
  20. package/es/locales/ja.js +13 -8
  21. package/es/locales/ko.js +13 -8
  22. package/es/locales/pt.js +13 -8
  23. package/es/locales/ru.js +13 -8
  24. package/es/locales/th.js +13 -8
  25. package/es/locales/vi.js +13 -8
  26. package/es/locales/zh-tw.js +13 -8
  27. package/es/locales/zh.js +17 -12
  28. package/es/subscription/blocklet.js +3 -0
  29. package/es/subscription/server.js +11 -5
  30. package/es/team/members/connections.js +2 -1
  31. package/es/team/members/member.js +2 -1
  32. package/es/util/index.js +0 -4
  33. package/lib/blocklet/actions.js +14 -2
  34. package/lib/blocklet/component/add-component-core.js +1 -1
  35. package/lib/blocklet/component/component-cell.js +2 -1
  36. package/lib/blocklet/icons.js +3 -1
  37. package/lib/blocklet/overview.js +13 -7
  38. package/lib/blocklet/publish/create-release.js +154 -43
  39. package/lib/blocklet/publish/index.js +0 -4
  40. package/lib/blocklet/publish/project-list.js +133 -29
  41. package/lib/blocklet/publish/release-list.js +18 -4
  42. package/lib/blocklet/publish/resource.js +34 -31
  43. package/lib/blocklet/router/rule-list.js +2 -1
  44. package/lib/locales/ar.js +13 -8
  45. package/lib/locales/de.js +13 -8
  46. package/lib/locales/en.js +12 -7
  47. package/lib/locales/es.js +13 -8
  48. package/lib/locales/fr.js +13 -8
  49. package/lib/locales/hi.js +13 -8
  50. package/lib/locales/i18n.db +0 -0
  51. package/lib/locales/id.js +13 -8
  52. package/lib/locales/ja.js +13 -8
  53. package/lib/locales/ko.js +13 -8
  54. package/lib/locales/pt.js +13 -8
  55. package/lib/locales/ru.js +13 -8
  56. package/lib/locales/th.js +13 -8
  57. package/lib/locales/vi.js +13 -8
  58. package/lib/locales/zh-tw.js +13 -8
  59. package/lib/locales/zh.js +17 -12
  60. package/lib/subscription/blocklet.js +3 -0
  61. package/lib/subscription/server.js +10 -4
  62. package/lib/team/members/connections.js +2 -1
  63. package/lib/team/members/member.js +2 -1
  64. package/lib/util/index.js +0 -5
  65. package/package.json +16 -16
  66. package/es/blocklet/publish/create-project.js +0 -205
  67. package/lib/blocklet/publish/create-project.js +0 -215
@@ -35,7 +35,8 @@ var _confirm = _interopRequireDefault(require("../confirm"));
35
35
  var _icons = _interopRequireDefault(require("./icons"));
36
36
  var _jsxRuntime = require("react/jsx-runtime");
37
37
  var _templateObject;
38
- const _excluded = ["blocklet", "onStart", "onComplete", "variant", "hasPermission", "useBlockletUrlEvaluation"];
38
+ const _excluded = ["blocklet", "onStart", "onComplete", "variant", "hasPermission", "useBlockletUrlEvaluation"],
39
+ _excluded2 = ["sx"];
39
40
  /* eslint-disable react/no-unstable-nested-components */
40
41
  /* eslint-disable operator-linebreak */
41
42
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -318,7 +319,18 @@ function BlockletActions(_ref) {
318
319
  } : null;
319
320
  const cancelDownloadAction = {
320
321
  action: 'remove',
321
- icon: _icons.default.Remove,
322
+ icon: _ref3 => {
323
+ let {
324
+ sx
325
+ } = _ref3,
326
+ restProps = _objectWithoutProperties(_ref3, _excluded2);
327
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.default.Cancel, _objectSpread({
328
+ sx: _objectSpread(_objectSpread({}, sx), {}, {
329
+ paddingRight: '2px',
330
+ zoom: 0.95
331
+ })
332
+ }, restProps));
333
+ },
322
334
  name: t('common.cancel'),
323
335
  handler: createHandler('cancelDownload', node.api.cancelDownloadBlocklet, true)
324
336
  };
@@ -1179,7 +1179,7 @@ const ContentWrapper = (0, _styled.default)(_Box.default)(_templateObject4 || (_
1179
1179
  if (className === 'mobileStyle') {
1180
1180
  return "\n & > div{\n height: 100%;\n }\n .root-header {\n .app-name-content {\n display: none;\n }\n }\n\n\n\n // content-panel\n .root-header + div{\n padding-top: 0;\n position: relative;\n & > div {\n padding-top: 0;\n }\n }\n\n header + div {\n padding-top: 0;\n }\n\n header {\n .header-title {\n margin-left: 0;\n }\n\n .header-title-name {\n max-width: 100% !important;\n }\n }\n ";
1181
1181
  }
1182
- return "\n position: relative;\n .root-header {\n z-index: auto !important;\n position: fixed !important;\n }\n & > div {\n height: 100%;\n width: 100%;\n max-width: 100%;\n & > div {\n max-height: unset !important;\n max-width: 100%;\n & > div {\n // left-panel\n &:first-child {\n padding: 0;\n width: 25%;\n min-width: 240px;\n & > div:first-child {\n display: none;\n }\n // step\n & > div:last-child {\n // margin-top: 32px;\n margin-top: 0;\n }\n }\n // right-panel\n &:last-child {\n padding-top: 0;\n padding-right: 0px;\n overflow-y: hidden;\n .app-content {\n padding: 0 0 24px 0;\n }\n .button-container {\n padding-right: 0;\n }\n }\n }\n }\n }\n\n ";
1182
+ return "\n position: relative;\n .ll-container { // \u901A\u8FC7 Launcher Layout \u7EC4\u4EF6\u7EA6\u5B9A\u7684 .ll-container class \u81EA\u5B9A\u4E49 Layout \u6837\u5F0F\n width: 100%;\n height: 100%;\n }\n\n .root-header {\n z-index: auto !important;\n position: fixed !important;\n }\n & > div {\n height: 100%;\n width: 100%;\n max-width: 100%;\n & > div {\n max-height: unset !important;\n max-width: 100%;\n & > div {\n // left-panel\n &:first-child {\n padding: 0;\n width: 25%;\n min-width: 240px;\n & > div:first-child {\n display: none;\n }\n // step\n & > div:last-child {\n // margin-top: 32px;\n margin-top: 0;\n }\n }\n // right-panel\n &:last-child {\n padding-top: 0;\n padding-right: 0px;\n overflow-y: hidden;\n .app-content {\n padding: 0 0 24px 0;\n }\n .button-container {\n padding-right: 0;\n }\n }\n }\n }\n }\n\n ";
1183
1183
  }, props => isMobileContent(props), props => isMobileContent(props));
1184
1184
  const PageHeaderWrapper = (0, _styled.default)(_pageHeader.default)(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n margin-bottom: 24px;\n"])));
1185
1185
  const StoreBlockletItemWrapper = _styled.default.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n position: relative;\n\n .choose-blocklet {\n background-color: rgb(236, 251, 253);\n border-color: rgb(236, 251, 253);\n border-radius: 8px;\n }\n\n .check-container {\n position: absolute;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: flex-end;\n align-items: flex-end;\n width: 30px;\n height: 30px;\n border-radius: 0 0 8px 0;\n color: ", ";\n overflow: hidden;\n transition: all ease 0.3s;\n &:after {\n position: absolute;\n z-index: 0;\n display: block;\n width: 0;\n height: 0;\n border-top: transparent solid 15px;\n border-left: transparent solid 15px;\n border-bottom: ", " solid 15px;\n border-right: ", " solid 15px;\n transition: all ease 0.1s;\n content: '';\n }\n\n .check-icon {\n position: relative;\n z-index: 2;\n margin: 0 1px 1px 0;\n font-size: 16px;\n transition: all ease 0.2s;\n }\n }\n"])), props => props.theme.palette.common.white, props => props.theme.palette.primary.main, props => props.theme.palette.primary.main);
@@ -211,7 +211,8 @@ function ComponentCell(_ref) {
211
211
  }, {
212
212
  name: t('common.did'),
213
213
  value: /*#__PURE__*/(0, _jsxRuntime.jsx)(_didAddress.default, {
214
- did: componentInfo.meta.did
214
+ did: componentInfo.meta.did,
215
+ showQrcode: true
215
216
  })
216
217
  }, {
217
218
  name: t('common.author'),
@@ -12,6 +12,7 @@ var _Autorenew = _interopRequireDefault(require("@mui/icons-material/Autorenew")
12
12
  var _Settings = _interopRequireDefault(require("@mui/icons-material/Settings"));
13
13
  var _Receipt = _interopRequireDefault(require("@mui/icons-material/Receipt"));
14
14
  var _Group = _interopRequireDefault(require("@mui/icons-material/Group"));
15
+ var _NotInterested = _interopRequireDefault(require("@mui/icons-material/NotInterested"));
15
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
17
  var _default = exports.default = {
17
18
  Start: _PlayArrow.default,
@@ -21,5 +22,6 @@ var _default = exports.default = {
21
22
  Remove: _Delete.default,
22
23
  Config: _Settings.default,
23
24
  Log: _Receipt.default,
24
- Group: _Group.default
25
+ Group: _Group.default,
26
+ Cancel: _NotInterested.default
25
27
  };
@@ -54,18 +54,21 @@ function BlockletOverview() {
54
54
  const infoRows = [appDid ? {
55
55
  name: t('blocklet.appId'),
56
56
  value: /*#__PURE__*/(0, _jsxRuntime.jsx)(_didAddress.default, {
57
- did: appDid
57
+ did: appDid,
58
+ showQrcode: true
58
59
  })
59
60
  } : null, appPid ? {
60
61
  name: t('blocklet.appPid'),
61
62
  value: /*#__PURE__*/(0, _jsxRuntime.jsx)(_didAddress.default, {
62
- did: appPid
63
+ did: appPid,
64
+ showQrcode: true
63
65
  })
64
66
  } : null, (migratedFrom === null || migratedFrom === void 0 ? void 0 : migratedFrom.length) > 1 ? {
65
67
  name: t('blocklet.alsoKnownAs'),
66
68
  value: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
67
69
  children: [(showAllDIDs ? migratedFrom.slice(1) : migratedFrom.slice(1, 2)).map(x => /*#__PURE__*/(0, _jsxRuntime.jsx)(_didAddress.default, {
68
- did: x.appDid
70
+ did: x.appDid,
71
+ showQrcode: true
69
72
  })), migratedFrom.length > 2 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
70
73
  style: {
71
74
  marginLeft: '18px'
@@ -90,7 +93,8 @@ function BlockletOverview() {
90
93
  value: /*#__PURE__*/(0, _jsxRuntime.jsx)(_didAddress.default, {
91
94
  external: true,
92
95
  href: (0, _util2.getExplorerLink)(blocklet === null || blocklet === void 0 || (_blocklet$controller = blocklet.controller) === null || _blocklet$controller === void 0 ? void 0 : _blocklet$controller.chainHost, blocklet === null || blocklet === void 0 || (_blocklet$controller2 = blocklet.controller) === null || _blocklet$controller2 === void 0 ? void 0 : _blocklet$controller2.nftId, 'asset'),
93
- did: blocklet === null || blocklet === void 0 || (_blocklet$controller3 = blocklet.controller) === null || _blocklet$controller3 === void 0 ? void 0 : _blocklet$controller3.nftId
96
+ did: blocklet === null || blocklet === void 0 || (_blocklet$controller3 = blocklet.controller) === null || _blocklet$controller3 === void 0 ? void 0 : _blocklet$controller3.nftId,
97
+ showQrcode: true
94
98
  })
95
99
  } : null, {
96
100
  name: t('blocklet.installedAt'),
@@ -101,8 +105,9 @@ function BlockletOverview() {
101
105
  }, {
102
106
  name: t('common.owner'),
103
107
  value: (_blocklet$settings = blocklet.settings) !== null && _blocklet$settings !== void 0 && _blocklet$settings.owner ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_didAddress.default, {
104
- did: blocklet.settings.owner.did
105
- }) : '--'
108
+ did: blocklet.settings.owner.did,
109
+ showQrcode: true
110
+ }) : '-'
106
111
  }, {
107
112
  name: t('blocklet.config.walletType.name'),
108
113
  value: WalletType[chainType || 'arcblock'] || chainType
@@ -114,7 +119,8 @@ function BlockletOverview() {
114
119
  infoRows.push({
115
120
  name: t('common.serverDid'),
116
121
  value: /*#__PURE__*/(0, _jsxRuntime.jsx)(_didAddress.default, {
117
- did: nodeInfo.did
122
+ did: nodeInfo.did,
123
+ showQrcode: true
118
124
  })
119
125
  }, {
120
126
  name: t('common.serverVersion'),
@@ -21,6 +21,7 @@ var _DeleteOutline = _interopRequireDefault(require("@mui/icons-material/DeleteO
21
21
  var _InputAdornment = _interopRequireDefault(require("@mui/material/InputAdornment"));
22
22
  var _CircularProgress = _interopRequireDefault(require("@mui/material/CircularProgress"));
23
23
  var _Dialog = _interopRequireDefault(require("@mui/material/Dialog"));
24
+ var _Connect = _interopRequireDefault(require("@arcblock/did-connect/lib/Connect"));
24
25
  var _context = require("@arcblock/ux/lib/Locale/context");
25
26
  var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
26
27
  var _Toast = _interopRequireDefault(require("@arcblock/ux/lib/Toast"));
@@ -30,6 +31,7 @@ var _Alert = _interopRequireDefault(require("@arcblock/ux/lib/Alert"));
30
31
  var _constant = require("@blocklet/constant");
31
32
  var _constant2 = require("@abtnode/constant");
32
33
  var _bundleAvatar = _interopRequireDefault(require("../bundle-avatar"));
34
+ var _session = require("../../contexts/session");
33
35
  var _node = require("../../contexts/node");
34
36
  var _blocklet = require("../../contexts/blocklet");
35
37
  var _emptySpinner = _interopRequireDefault(require("../../empty-spinner"));
@@ -126,8 +128,8 @@ const pickParams = (release, app) => {
126
128
  if (!params.blockletComponents) {
127
129
  params.blockletComponents = (app.children || []).map(x => ({
128
130
  did: x.meta.did,
129
- included: true,
130
- required: true
131
+ included: false,
132
+ required: false
131
133
  }));
132
134
  } else {
133
135
  params.blockletComponents = params.blockletComponents.map(x => _objectSpread(_objectSpread({}, x), {}, {
@@ -143,11 +145,15 @@ function CreateRelease(_ref2) {
143
145
  const {
144
146
  projectId,
145
147
  releaseId: inputReleaseId,
146
- componentDid
148
+ componentDid = ''
147
149
  } = (0, _reactRouterDom.useParams)();
148
150
  const {
149
- t
151
+ t,
152
+ locale
150
153
  } = (0, _context.useLocaleContext)();
154
+ const {
155
+ api: sessionApi
156
+ } = (0, _session.useSessionContext)();
151
157
  const {
152
158
  blocklet
153
159
  } = (0, _blocklet.useBlockletContext)();
@@ -161,10 +167,14 @@ function CreateRelease(_ref2) {
161
167
  } = (0, _node.useNodeContext)();
162
168
  const uploaderLogoRef = (0, _react.useRef)(null);
163
169
  const uploaderScreenshotRef = (0, _react.useRef)(null);
164
- const [projectType, setProjectType] = (0, _react.useState)();
165
170
  const [installResourceTip, setInstallResourceTip] = (0, _react.useState)();
171
+ const [openConnect, setOpenConnect] = (0, _react.useState)(false);
166
172
  const releaseId = inputReleaseId === 'create' ? '' : inputReleaseId;
167
173
  const mode = inputReleaseId === 'create' ? 'create' : 'edit';
174
+ const projectType = (0, _react.useMemo)(() => {
175
+ var _params$blockletCompo;
176
+ return params !== null && params !== void 0 && (_params$blockletCompo = params.blockletComponents) !== null && _params$blockletCompo !== void 0 && _params$blockletCompo.some(x => x.included) ? 'pack' : 'resource';
177
+ }, [params === null || params === void 0 ? void 0 : params.blockletComponents]);
168
178
  const tabs = [];
169
179
  const resourceComponents = ((blocklet === null || blocklet === void 0 ? void 0 : blocklet.children) || []).filter(x => {
170
180
  var _x$meta$resource;
@@ -181,10 +191,11 @@ function CreateRelease(_ref2) {
181
191
  const [tab, setTab] = (0, _react.useState)((_tabs$ = tabs[0]) === null || _tabs$ === void 0 ? void 0 : _tabs$.value);
182
192
  const isPublished = (release === null || release === void 0 ? void 0 : release.status) === 'published';
183
193
  const readOnly = isPublished;
184
- const getProject = function getProject() {
185
- let {
186
- typeOnly
187
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
194
+ const getProject = () => {
195
+ if (!projectId) {
196
+ _Toast.default.error(t('blocklet.publish.errorTip.noDid'));
197
+ return;
198
+ }
188
199
  api.getProject({
189
200
  input: {
190
201
  did: blocklet.meta.did,
@@ -193,17 +204,16 @@ function CreateRelease(_ref2) {
193
204
  }).then(res => {
194
205
  setLoading(false);
195
206
  const data = res.project || {};
196
- if (typeOnly) {
197
- setProjectType(data.type);
198
- return;
199
- }
200
207
  if (!data.blockletVersion) {
201
208
  data.blockletVersion = '1.0.0';
202
209
  } else if (_semver.default.valid(data.blockletVersion)) {
203
210
  data.blockletVersion = _semver.default.inc(data.blockletVersion, 'patch');
204
211
  }
205
- setParams(pickParams(data, blocklet));
206
- setProjectType(data.type);
212
+ const theParams = pickParams(data, blocklet);
213
+ if (theParams.blockletTitle === projectId.slice(0, 8)) {
214
+ theParams.blockletTitle = '';
215
+ }
216
+ setParams(theParams);
207
217
  }).catch(err => {
208
218
  setLoading(false);
209
219
  _Toast.default.error((0, _util.formatError)(err));
@@ -232,19 +242,18 @@ function CreateRelease(_ref2) {
232
242
  return;
233
243
  }
234
244
  getRelease();
235
- getProject({
236
- typeOnly: true
237
- });
245
+ // getProject({ typeOnly: true });
238
246
  }
239
247
  if (mode === 'create') {
240
248
  getProject();
241
249
  }
242
250
  // eslint-disable-next-line react-hooks/exhaustive-deps
243
251
  }, [mode, releaseId]);
244
- (0, _react.useEffect)(() => {
245
- getData();
246
- }, [getData]);
247
252
  const onRelease = status => {
253
+ if (!projectId) {
254
+ _Toast.default.error(t('blocklet.publish.errorTip.noDid'));
255
+ return;
256
+ }
248
257
  const errors = validateParams(params, status, t);
249
258
  if (errors) {
250
259
  _Toast.default.error(errors.map(x => x.message).join('; '));
@@ -266,11 +275,7 @@ function CreateRelease(_ref2) {
266
275
  _params.blockletDescription = (_params.blockletDescription || '').trim();
267
276
  _params.blockletIntroduction = (_params.blockletIntroduction || '').trim();
268
277
  _params.note = (_params.note || '').trim();
269
- if (projectType === 'pack') {
270
- _params.blockletComponents = (_params.blockletComponents || []).filter(x => x.included).map(x => (0, _pick.default)(x, ['did', 'required'])).map(JSON.stringify);
271
- } else {
272
- delete _params.blockletComponents;
273
- }
278
+ _params.blockletComponents = (_params.blockletComponents || []).filter(x => x.included).map(x => (0, _pick.default)(x, ['did', 'required'])).map(JSON.stringify);
274
279
  setCreateLoading(status);
275
280
  setLoading(true);
276
281
  api.createRelease({
@@ -309,12 +314,98 @@ function CreateRelease(_ref2) {
309
314
  }
310
315
  });
311
316
  };
317
+ const handleDidConnectShow = e => {
318
+ e.preventDefault();
319
+ e.stopPropagation();
320
+ if (!params.blockletTitle) {
321
+ setParamsErrTip({
322
+ blockletTitle: t('blocklet.publish.errorTip.noTitle')
323
+ });
324
+ _Toast.default.error(t('blocklet.publish.errorTip.noTitle'));
325
+ return;
326
+ }
327
+ if (projectId === '0') {
328
+ setOpenConnect(true);
329
+ }
330
+ };
331
+ const handleDidConnectClose = () => {
332
+ setOpenConnect(false);
333
+ };
334
+ const handleChangeSelectedComponents = data => {
335
+ setParams({
336
+ blockletComponents: data
337
+ });
338
+ };
339
+ const handleCreateBlockletDidError = err => {
340
+ _Toast.default.error(err.message);
341
+ setOpenConnect(false);
342
+ };
343
+ const handleCreate = nextProjectDid => {
344
+ var _params$blockletCompo2;
345
+ if (!nextProjectDid) {
346
+ _Toast.default.error(t('blocklet.publish.errorTip.noDid'));
347
+ return;
348
+ }
349
+ setLoading(true);
350
+ api.createProject({
351
+ input: {
352
+ did: blocklet.meta.did,
353
+ blockletTitle: params.blockletTitle || nextProjectDid.slice(0, 9),
354
+ blockletDid: nextProjectDid,
355
+ type: ((_params$blockletCompo2 = params.blockletComponents) === null || _params$blockletCompo2 === void 0 ? void 0 : _params$blockletCompo2.length) > 0 ? 'pack' : 'resource',
356
+ componentDid
357
+ }
358
+ }).then(() => {
359
+ setLoading(false);
360
+ navigate("/.well-known/service/admin/publish/".concat(nextProjectDid, "/create"), {
361
+ replace: true
362
+ });
363
+ }).catch(err => {
364
+ setLoading(false);
365
+ _Toast.default.error(err.message);
366
+ });
367
+ };
368
+ const handleCreateBlockletDidSuccess = result => {
369
+ var _result$blockletWalle;
370
+ const did = result === null || result === void 0 || (_result$blockletWalle = result.blockletWallet) === null || _result$blockletWalle === void 0 ? void 0 : _result$blockletWalle.address;
371
+ if (!did) {
372
+ _Toast.default.error('Empty Blocklet DID');
373
+ } else {
374
+ handleCreate(did);
375
+ }
376
+ setOpenConnect(false);
377
+ };
378
+ (0, _react.useEffect)(() => {
379
+ getData();
380
+ }, [getData]);
312
381
  if (!params && loading) {
313
382
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_emptySpinner.default, {});
314
383
  }
315
384
  if (!params) {
316
385
  return null;
317
386
  }
387
+ const connect = openConnect ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Connect.default, {
388
+ open: true,
389
+ popup: true,
390
+ onClose: handleDidConnectClose,
391
+ action: "gen-blocklet-key-pair",
392
+ locale: locale,
393
+ checkFn: sessionApi.get,
394
+ saveConnect: false,
395
+ forceConnected: false,
396
+ checkTimeout: 5 * 60 * 1000,
397
+ onSuccess: handleCreateBlockletDidSuccess,
398
+ onError: handleCreateBlockletDidError,
399
+ extraParams: {
400
+ did: blocklet.meta.did
401
+ },
402
+ messages: {
403
+ title: t('blocklet.publish.connect.title'),
404
+ scan: t('blocklet.publish.connect.scan'),
405
+ confirm: t('blocklet.publish.connect.confirm'),
406
+ success: t('blocklet.publish.connect.success')
407
+ }
408
+ }) : null;
318
409
  const uploadLogoPrefix = "".concat(_constant2.WELLKNOWN_SERVICE_PATH_PREFIX, "/api/project/").concat(blocklet.meta.did, "/").concat(projectId, "/logo/upload");
319
410
  const uploadScreenshotPrefix = "".concat(_constant2.WELLKNOWN_SERVICE_PATH_PREFIX, "/api/project/").concat(blocklet.meta.did, "/").concat(projectId, "/screenshot/upload");
320
411
  const logoUrl = params !== null && params !== void 0 && params.blockletLogo ? "".concat(uploadLogoPrefix, "/").concat(params.blockletLogo) : "".concat(_constant2.WELLKNOWN_SERVICE_PATH_PREFIX, "/static/images/logo.png");
@@ -374,7 +465,7 @@ function CreateRelease(_ref2) {
374
465
  marginRight: 8
375
466
  },
376
467
  onClick: () => setInstallResourceTip(blockletMetaUrl),
377
- children: t('common.install')
468
+ children: t('blocklet.publish.copyInstallUrl')
378
469
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dialog.default, {
379
470
  fullWidth: true,
380
471
  maxWidth: "sm",
@@ -414,7 +505,7 @@ function CreateRelease(_ref2) {
414
505
  }
415
506
  }
416
507
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Main, _objectSpread(_objectSpread({}, rest), {}, {
417
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
508
+ children: [connect, /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
418
509
  className: "sticky-header",
419
510
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Breadcrumbs.default, {
420
511
  className: "breadcrumbs",
@@ -468,14 +559,8 @@ function CreateRelease(_ref2) {
468
559
  })]
469
560
  })]
470
561
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
471
- children: [projectType === 'pack' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.default, {
472
- type: "info",
473
- style: {
474
- width: '100%'
475
- },
476
- children: t('blocklet.publish.packTip')
477
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
478
- pt: 3
562
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
563
+ pt: 5
479
564
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
480
565
  display: "flex",
481
566
  className: "section",
@@ -509,6 +594,30 @@ function CreateRelease(_ref2) {
509
594
  },
510
595
  error: !!paramsErrTip.blockletTitle,
511
596
  helperText: paramsErrTip.blockletTitle || ''
597
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
598
+ required: true,
599
+ label: "Blocklet DID",
600
+ fullWidth: true,
601
+ readonly: true,
602
+ disabled: projectId !== '0',
603
+ autoComplete: "off",
604
+ variant: "outlined",
605
+ onClick: handleDidConnectShow,
606
+ InputProps: {
607
+ 'data-cy': 'export-blocklet-did',
608
+ endAdornment: projectId === '0' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputAdornment.default, {
609
+ position: "end",
610
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
611
+ onClick: handleDidConnectShow,
612
+ children: t('common.create')
613
+ })
614
+ })
615
+ },
616
+ helperText: "",
617
+ value: projectId === '0' ? '' : projectId,
618
+ sx: {
619
+ mt: 3
620
+ }
512
621
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
513
622
  label: "Blocklet ".concat(t('common.description')),
514
623
  placeholder: "Blocklet ".concat(t('common.description')),
@@ -795,7 +904,7 @@ function CreateRelease(_ref2) {
795
904
  children: resourceContent
796
905
  })]
797
906
  })]
798
- }), projectType === 'pack' && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
907
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
799
908
  display: "flex",
800
909
  mt: 3,
801
910
  className: "section full-width",
@@ -812,14 +921,16 @@ function CreateRelease(_ref2) {
812
921
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_selectComponents.default, {
813
922
  disabled: loading || readOnly,
814
923
  app: blocklet,
815
- value: params.blockletComponents,
816
- onChange: data => {
817
- setParams({
818
- blockletComponents: data
819
- });
820
- }
924
+ value: params.blockletComponents || [],
925
+ onChange: handleChangeSelectedComponents
821
926
  })
822
927
  })]
928
+ }), projectType === 'pack' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.default, {
929
+ type: "info",
930
+ style: {
931
+ width: '100%'
932
+ },
933
+ children: t('blocklet.publish.packTip')
823
934
  })]
824
935
  })]
825
936
  }));
@@ -11,7 +11,6 @@ var _styled = _interopRequireDefault(require("@emotion/styled"));
11
11
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
12
12
  var _blocklet = require("../../contexts/blocklet");
13
13
  var _projectList = _interopRequireDefault(require("./project-list"));
14
- var _createProject = _interopRequireDefault(require("./create-project"));
15
14
  var _releaseList = _interopRequireDefault(require("./release-list"));
16
15
  var _createRelease = _interopRequireDefault(require("./create-release"));
17
16
  var _jsxRuntime = require("react/jsx-runtime");
@@ -57,9 +56,6 @@ function BlockletPublish(_ref) {
57
56
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactRouterDom.Route, {
58
57
  path: "/",
59
58
  element: /*#__PURE__*/(0, _jsxRuntime.jsx)(_projectList.default, {})
60
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactRouterDom.Route, {
61
- path: "/create",
62
- element: /*#__PURE__*/(0, _jsxRuntime.jsx)(_createProject.default, {})
63
59
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactRouterDom.Route, {
64
60
  path: "/:projectId",
65
61
  element: /*#__PURE__*/(0, _jsxRuntime.jsx)(_releaseList.default, {})