@abtnode/ux 1.16.19-beta-7b2db880 → 1.16.19-beta-7d3ef675

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.
@@ -108,7 +108,7 @@ const StepContent = /*#__PURE__*/forwardRef(({
108
108
  component: "div",
109
109
  className: isMobile ? 'mobileStyle' : '',
110
110
  sx: {
111
- height: '100%'
111
+ height: 'calc(100% - 56px)'
112
112
  },
113
113
  children: /*#__PURE__*/_jsx(Layout, {
114
114
  locale: locale,
@@ -138,19 +138,22 @@ StepContent.propTypes = {
138
138
  StepContent.defaultProps = {
139
139
  meta: null
140
140
  };
141
- const postInstalledMessage = componentDid => {
141
+ const postInstalledMessage = (componentDid, timeout = 1000) => {
142
142
  // send event to parent window
143
- window.parent.postMessage({
144
- event: 'component.installed',
145
- componentDid
146
- }, '*');
143
+ setTimeout(() => {
144
+ window.parent.postMessage({
145
+ event: 'component.installed',
146
+ componentDid
147
+ }, '*');
148
+ }, timeout);
147
149
  };
148
150
  export default function AddComponentCore({
149
151
  onClose,
150
152
  mode,
151
153
  stores,
152
154
  resourceType,
153
- storageKey
155
+ storageKey,
156
+ inDialog
154
157
  }) {
155
158
  const {
156
159
  t,
@@ -1032,7 +1035,7 @@ export default function AddComponentCore({
1032
1035
  height: window.innerHeight
1033
1036
  } : {
1034
1037
  width: '100%',
1035
- height: mode === 'embed' ? '100vh' : '72vh'
1038
+ height: inDialog ? '72vh' : '100vh'
1036
1039
  },
1037
1040
  children: [/*#__PURE__*/_jsx(StepProvider, {
1038
1041
  steps: steps,
@@ -1092,6 +1095,7 @@ export default function AddComponentCore({
1092
1095
  AddComponentCore.propTypes = {
1093
1096
  onClose: PropTypes.func,
1094
1097
  mode: PropTypes.oneOf(['normal', 'embed']),
1098
+ inDialog: PropTypes.bool,
1095
1099
  stores: PropTypes.arrayOf(PropTypes.string),
1096
1100
  resourceType: PropTypes.string,
1097
1101
  storageKey: PropTypes.string
@@ -1101,7 +1105,8 @@ AddComponentCore.defaultProps = {
1101
1105
  mode: 'normal',
1102
1106
  stores: [],
1103
1107
  resourceType: '',
1104
- storageKey: ''
1108
+ storageKey: '',
1109
+ inDialog: true
1105
1110
  };
1106
1111
  const Wrapper = styled(Box)`
1107
1112
  .action-bar {
@@ -53,7 +53,7 @@ export default function CreateProject({
53
53
  const [blockletDid, setBlockletDid] = useState();
54
54
  const [openConnect, setOpenConnect] = useState(false);
55
55
  const {
56
- componentDid
56
+ componentDid = ''
57
57
  } = useParams();
58
58
  const handleCreateBlockletDidError = err => {
59
59
  Toast.error(err.message);
@@ -13,6 +13,7 @@ import Box from '@mui/material/Box';
13
13
  import IconButton from '@mui/material/IconButton';
14
14
  import DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';
15
15
  import InputAdornment from '@mui/material/InputAdornment';
16
+ import Spinner from '@mui/material/CircularProgress';
16
17
  import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
17
18
  import Button from '@arcblock/ux/lib/Button';
18
19
  import Toast from '@arcblock/ux/lib/Toast';
@@ -120,6 +121,7 @@ export default function CreateRelease({
120
121
  const [params, setParams] = useSetState(null);
121
122
  const [paramsErrTip, setParamsErrTip] = useState({});
122
123
  const [loading, setLoading] = useState(false);
124
+ const [createLoading, setCreateLoading] = useState(false);
123
125
  const [release, setRelease] = useState(null);
124
126
  const {
125
127
  api
@@ -218,6 +220,8 @@ export default function CreateRelease({
218
220
  _params.blockletDescription = (_params.blockletDescription || '').trim();
219
221
  _params.blockletIntroduction = (_params.blockletIntroduction || '').trim();
220
222
  _params.note = (_params.note || '').trim();
223
+ setCreateLoading(status);
224
+ setLoading(true);
221
225
  api.createRelease({
222
226
  input: {
223
227
  ..._params,
@@ -226,21 +230,24 @@ export default function CreateRelease({
226
230
  releaseId,
227
231
  status
228
232
  }
229
- }).then(() => {
233
+ }).then(res => {
234
+ setCreateLoading(false);
235
+ setLoading(false);
230
236
  if (status === 'draft') {
231
237
  Toast.success('Save draft success');
232
238
  if (mode === 'create') {
233
- navigate(`../${projectId}`, {
239
+ const id = res?.release?.id;
240
+ navigate(`../${projectId}/${id}`, {
234
241
  replace: true
235
242
  });
236
243
  }
237
244
  } else {
238
245
  Toast.success('Create Release success');
239
- navigate(`../${projectId}`, {
240
- replace: true
241
- });
246
+ getRelease();
242
247
  }
243
248
  }).catch(err => {
249
+ setCreateLoading(false);
250
+ setLoading(false);
244
251
  Toast.error(formatError(err));
245
252
  });
246
253
  };
@@ -295,19 +302,30 @@ export default function CreateRelease({
295
302
  }), /*#__PURE__*/_jsxs(Box, {
296
303
  display: "flex",
297
304
  children: [!isPublished && /*#__PURE__*/_jsxs(_Fragment, {
298
- children: [/*#__PURE__*/_jsx(Button, {
305
+ children: [/*#__PURE__*/_jsxs(Button, {
299
306
  variant: "outlined",
300
- disabled: loading,
307
+ disabled: loading || createLoading,
301
308
  onClick: () => onRelease(PROJECT.RELEASE_STATUS.draft),
302
309
  style: {
303
310
  marginRight: 12
304
311
  },
305
- children: t('blocklet.publish.saveDraft')
306
- }), /*#__PURE__*/_jsx(Button, {
312
+ children: [createLoading === PROJECT.RELEASE_STATUS.draft && /*#__PURE__*/_jsx(Spinner, {
313
+ size: 14,
314
+ sx: {
315
+ mr: 0.5
316
+ }
317
+ }), t('blocklet.publish.saveDraft')]
318
+ }), /*#__PURE__*/_jsxs(Button, {
307
319
  variant: "contained",
308
- disabled: loading,
320
+ disabled: loading || createLoading,
309
321
  onClick: () => onRelease(PROJECT.RELEASE_STATUS.published),
310
- children: t('common.release')
322
+ children: [createLoading === PROJECT.RELEASE_STATUS.published && /*#__PURE__*/_jsx(Spinner, {
323
+ size: 14,
324
+ sx: {
325
+ mr: 0.5
326
+ },
327
+ color: "inherit"
328
+ }), t('common.release')]
311
329
  })]
312
330
  }), isPublished && /*#__PURE__*/_jsx(Button, {
313
331
  variant: "contained",
@@ -1,4 +1,5 @@
1
1
  import React, { useEffect } from 'react';
2
+ import PropTypes from 'prop-types';
2
3
  import { Routes, Route, useLocation, useParams } from 'react-router-dom';
3
4
  import styled from '@emotion/styled';
4
5
  import Box from '@mui/material/Box';
@@ -9,7 +10,9 @@ import ReleasesList from './release-list';
9
10
  import CreateRelease from './create-release';
10
11
  import { jsx as _jsx } from "react/jsx-runtime";
11
12
  import { jsxs as _jsxs } from "react/jsx-runtime";
12
- export default function BlockletPublish() {
13
+ export default function BlockletPublish({
14
+ padding
15
+ }) {
13
16
  const {
14
17
  blocklet
15
18
  } = useBlockletContext();
@@ -33,7 +36,12 @@ export default function BlockletPublish() {
33
36
  if (!blocklet) {
34
37
  return null;
35
38
  }
39
+ const style = {};
40
+ if (padding) {
41
+ style.padding = padding;
42
+ }
36
43
  return /*#__PURE__*/_jsx(Main, {
44
+ style: style,
37
45
  children: /*#__PURE__*/_jsxs(Routes, {
38
46
  children: [/*#__PURE__*/_jsx(Route, {
39
47
  path: "/",
@@ -51,7 +59,12 @@ export default function BlockletPublish() {
51
59
  })
52
60
  });
53
61
  }
54
- BlockletPublish.propTypes = {};
62
+ BlockletPublish.propTypes = {
63
+ padding: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
64
+ };
65
+ BlockletPublish.defaultProps = {
66
+ padding: ''
67
+ };
55
68
  const Main = styled(Box)`
56
69
  a {
57
70
  color: ${({
@@ -16,6 +16,7 @@ import { useNodeContext } from '../../contexts/node';
16
16
  import EmptySpinner from '../../empty-spinner';
17
17
  import DidAddress from '../../did-address';
18
18
  import Confirm from '../../confirm';
19
+ import BlockletBundleAvatar from '../bundle-avatar';
19
20
  import { jsx as _jsx } from "react/jsx-runtime";
20
21
  import { jsxs as _jsxs } from "react/jsx-runtime";
21
22
  export default function ProjectList() {
@@ -144,6 +145,35 @@ export default function ProjectList() {
144
145
  }) : '';
145
146
  }
146
147
  }
148
+ }, componentDid ? null : {
149
+ label: t('common.scope'),
150
+ name: 'componentDid',
151
+ options: {
152
+ customBodyRender: value => {
153
+ const component = (blocklet.children || []).find(x => x.meta.did === value);
154
+ if (!component) {
155
+ return '';
156
+ }
157
+ return /*#__PURE__*/_jsxs(Box, {
158
+ display: "flex",
159
+ alignItems: "center",
160
+ justifyContent: "flex-start",
161
+ children: [/*#__PURE__*/_jsx(BlockletBundleAvatar, {
162
+ size: 14,
163
+ blocklet: component,
164
+ ancestors: [blocklet]
165
+ }), /*#__PURE__*/_jsx(Box, {
166
+ ml: 0.5,
167
+ sx: {
168
+ ml: 0.5,
169
+ color: 'text.primary',
170
+ fontSize: 14
171
+ },
172
+ children: component.meta.title
173
+ })]
174
+ }, value);
175
+ }
176
+ }
147
177
  }, {
148
178
  label: t('common.updatedAt'),
149
179
  name: 'updatedAt',
@@ -176,7 +206,7 @@ export default function ProjectList() {
176
206
  });
177
207
  }
178
208
  }
179
- }];
209
+ }].filter(Boolean);
180
210
  return /*#__PURE__*/_jsxs(Main, {
181
211
  children: [/*#__PURE__*/_jsx(Box, {
182
212
  sx: {
@@ -1,7 +1,6 @@
1
- import { useState, useEffect, useMemo } from 'react';
1
+ import { useState, useEffect } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import styled from '@emotion/styled';
4
- import difference from 'lodash/difference';
5
4
  import joinUrl from 'url-join';
6
5
  import Box from '@mui/material/Box';
7
6
  import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
@@ -24,12 +23,6 @@ const fillParent = (nodes, parentId) => {
24
23
  });
25
24
  return nodes;
26
25
  };
27
- const checkDiff = (a, b) => {
28
- if (a.length !== b.length) {
29
- return true;
30
- }
31
- return !!difference(a, b || []).length;
32
- };
33
26
  export default function Resource({
34
27
  app,
35
28
  component,
@@ -45,14 +38,12 @@ export default function Resource({
45
38
  } = useNodeContext();
46
39
  const [resources, setResources] = useState([]);
47
40
  const [selectedResourceIds, setSelectedResourceIds] = useState([]);
48
- const [savedResourceIds, setSavedResourceIds] = useState([]);
49
41
  const [loading, setLoading] = useState(false);
50
42
  const releaseId = release.id;
51
43
  const readonly = release.status === 'published';
52
44
  const {
53
45
  resourceExportApi = '/'
54
46
  } = component?.meta.capabilities || {};
55
- const hasDiff = useMemo(() => checkDiff(savedResourceIds, selectedResourceIds), [savedResourceIds, selectedResourceIds]);
56
47
  const urlObj = new URL(joinUrl('http://127.0.0.1', component.mountPoint, resourceExportApi || '/').replace(/\/+/g, '/'));
57
48
  urlObj.searchParams.set('projectId', projectId);
58
49
  urlObj.searchParams.set('releaseId', releaseId);
@@ -69,7 +60,6 @@ export default function Resource({
69
60
  resources: data
70
61
  }
71
62
  });
72
- setSavedResourceIds(data);
73
63
  } catch (err) {
74
64
  Toast.error(err.message);
75
65
  }
@@ -109,7 +99,6 @@ export default function Resource({
109
99
  }).then(res => {
110
100
  const list = res?.resources || [];
111
101
  setSelectedResourceIds(list);
112
- setSavedResourceIds(list);
113
102
  }).catch(err => {
114
103
  Toast.error(err.message);
115
104
  });
@@ -138,7 +127,7 @@ export default function Resource({
138
127
  className: "footer",
139
128
  children: /*#__PURE__*/_jsx(Button, {
140
129
  variant: "contained",
141
- disabled: loading || !hasDiff,
130
+ disabled: loading,
142
131
  onClick: () => onSave(),
143
132
  children: t('common.save')
144
133
  })
package/es/locales/en.js CHANGED
@@ -271,6 +271,7 @@ module.exports = {
271
271
  saveSuccess: 'Saved successfully',
272
272
  scheduleFailed: 'schedule failed',
273
273
  scheduleSuccess: 'successfully scheduled',
274
+ scope: 'Scope',
274
275
  screenshot: 'Screenshot',
275
276
  search: 'Search',
276
277
  security: 'Security',
@@ -621,6 +622,8 @@ module.exports = {
621
622
  isInProgress: 'Blocklet is in progress, please wait for it to finish'
622
623
  },
623
624
  publish: {
625
+ createResource: 'Create Resource',
626
+ addResource: 'Add Release',
624
627
  productTitle: 'Product',
625
628
  versionTitle: 'Version',
626
629
  imgTitle: 'Images',
package/es/locales/zh.js CHANGED
@@ -276,6 +276,7 @@ module.exports = {
276
276
  saveSuccess: '保存成功',
277
277
  scheduleFailed: '加入任务队列失败',
278
278
  scheduleSuccess: '成功加入任务队列',
279
+ scope: '范围',
279
280
  screenshot: '截图',
280
281
  search: '搜索',
281
282
  security: '安全',
@@ -628,6 +629,8 @@ module.exports = {
628
629
  isInProgress: '应用正在进行中,请等待完成'
629
630
  },
630
631
  publish: {
632
+ createResource: '创建资源',
633
+ addResource: '添加资源',
631
634
  productTitle: 'Blocklet 详情',
632
635
  versionTitle: '版本信息',
633
636
  imgTitle: '图片资源',
@@ -1,2 +1,3 @@
1
1
  export const STORAGE_KEY_STORE_BLOCKLET = 'blocklet-add-component-registry';
2
- export const STORAGE_KEY_STORE_SERVER = 'server-add-registry';
2
+ export const STORAGE_KEY_STORE_SERVER = 'server-add-registry';
3
+ export const STORAGE_KEY_STORE_RESOURCE = resource => `resource-${resource}-add-registry`;
@@ -127,7 +127,7 @@ const StepContent = /*#__PURE__*/(0, _react.forwardRef)((_ref2, ref) => {
127
127
  component: "div",
128
128
  className: isMobile ? 'mobileStyle' : '',
129
129
  sx: {
130
- height: '100%'
130
+ height: 'calc(100% - 56px)'
131
131
  },
132
132
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_launcherLayout.default, {
133
133
  locale: locale,
@@ -156,12 +156,15 @@ StepContent.propTypes = {
156
156
  StepContent.defaultProps = {
157
157
  meta: null
158
158
  };
159
- const postInstalledMessage = componentDid => {
159
+ const postInstalledMessage = function postInstalledMessage(componentDid) {
160
+ let timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;
160
161
  // send event to parent window
161
- window.parent.postMessage({
162
- event: 'component.installed',
163
- componentDid
164
- }, '*');
162
+ setTimeout(() => {
163
+ window.parent.postMessage({
164
+ event: 'component.installed',
165
+ componentDid
166
+ }, '*');
167
+ }, timeout);
165
168
  };
166
169
  function AddComponentCore(_ref3) {
167
170
  var _blocklet$meta2, _blocklet$meta3, _blocklet$meta4, _purchaseRef$current, _purchaseRef$current$, _purchaseRef$current2, _purchaseRef$current3;
@@ -170,7 +173,8 @@ function AddComponentCore(_ref3) {
170
173
  mode,
171
174
  stores,
172
175
  resourceType,
173
- storageKey
176
+ storageKey,
177
+ inDialog
174
178
  } = _ref3;
175
179
  const {
176
180
  t,
@@ -1039,7 +1043,7 @@ function AddComponentCore(_ref3) {
1039
1043
  height: window.innerHeight
1040
1044
  } : {
1041
1045
  width: '100%',
1042
- height: mode === 'embed' ? '100vh' : '72vh'
1046
+ height: inDialog ? '72vh' : '100vh'
1043
1047
  },
1044
1048
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_step.StepProvider, {
1045
1049
  steps: steps,
@@ -1099,6 +1103,7 @@ function AddComponentCore(_ref3) {
1099
1103
  AddComponentCore.propTypes = {
1100
1104
  onClose: _propTypes.default.func,
1101
1105
  mode: _propTypes.default.oneOf(['normal', 'embed']),
1106
+ inDialog: _propTypes.default.bool,
1102
1107
  stores: _propTypes.default.arrayOf(_propTypes.default.string),
1103
1108
  resourceType: _propTypes.default.string,
1104
1109
  storageKey: _propTypes.default.string
@@ -1108,7 +1113,8 @@ AddComponentCore.defaultProps = {
1108
1113
  mode: 'normal',
1109
1114
  stores: [],
1110
1115
  resourceType: '',
1111
- storageKey: ''
1116
+ storageKey: '',
1117
+ inDialog: true
1112
1118
  };
1113
1119
  const Wrapper = (0, _styled.default)(_Box.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .action-bar {\n display: flex;\n justify-content: flex-end;\n position: sticky;\n bottom: 0;\n padding-top: 16px;\n z-index: 100;\n width: 100%;\n background: #fff;\n border-top: 1px solid #eee;\n }\n"])));
1114
1120
  const TypographyWrapper = (0, _styled.default)(_Typography.default)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n width: 100%;\n height: 100%;\n"])));
@@ -66,7 +66,7 @@ function CreateProject(_ref) {
66
66
  const [blockletDid, setBlockletDid] = (0, _react.useState)();
67
67
  const [openConnect, setOpenConnect] = (0, _react.useState)(false);
68
68
  const {
69
- componentDid
69
+ componentDid = ''
70
70
  } = (0, _reactRouterDom.useParams)();
71
71
  const handleCreateBlockletDidError = err => {
72
72
  _Toast.default.error(err.message);
@@ -19,6 +19,7 @@ var _Box = _interopRequireDefault(require("@mui/material/Box"));
19
19
  var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
20
20
  var _DeleteOutline = _interopRequireDefault(require("@mui/icons-material/DeleteOutline"));
21
21
  var _InputAdornment = _interopRequireDefault(require("@mui/material/InputAdornment"));
22
+ var _CircularProgress = _interopRequireDefault(require("@mui/material/CircularProgress"));
22
23
  var _context = require("@arcblock/ux/lib/Locale/context");
23
24
  var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
24
25
  var _Toast = _interopRequireDefault(require("@arcblock/ux/lib/Toast"));
@@ -136,6 +137,7 @@ function CreateRelease(_ref2) {
136
137
  const [params, setParams] = (0, _useSetState.default)(null);
137
138
  const [paramsErrTip, setParamsErrTip] = (0, _react.useState)({});
138
139
  const [loading, setLoading] = (0, _react.useState)(false);
140
+ const [createLoading, setCreateLoading] = (0, _react.useState)(false);
139
141
  const [release, setRelease] = (0, _react.useState)(null);
140
142
  const {
141
143
  api
@@ -231,6 +233,8 @@ function CreateRelease(_ref2) {
231
233
  _params.blockletDescription = (_params.blockletDescription || '').trim();
232
234
  _params.blockletIntroduction = (_params.blockletIntroduction || '').trim();
233
235
  _params.note = (_params.note || '').trim();
236
+ setCreateLoading(status);
237
+ setLoading(true);
234
238
  api.createRelease({
235
239
  input: _objectSpread(_objectSpread({}, _params), {}, {
236
240
  did: blocklet.meta.did,
@@ -238,21 +242,25 @@ function CreateRelease(_ref2) {
238
242
  releaseId,
239
243
  status
240
244
  })
241
- }).then(() => {
245
+ }).then(res => {
246
+ setCreateLoading(false);
247
+ setLoading(false);
242
248
  if (status === 'draft') {
243
249
  _Toast.default.success('Save draft success');
244
250
  if (mode === 'create') {
245
- navigate("../".concat(projectId), {
251
+ var _res$release;
252
+ const id = res === null || res === void 0 ? void 0 : (_res$release = res.release) === null || _res$release === void 0 ? void 0 : _res$release.id;
253
+ navigate("../".concat(projectId, "/").concat(id), {
246
254
  replace: true
247
255
  });
248
256
  }
249
257
  } else {
250
258
  _Toast.default.success('Create Release success');
251
- navigate("../".concat(projectId), {
252
- replace: true
253
- });
259
+ getRelease();
254
260
  }
255
261
  }).catch(err => {
262
+ setCreateLoading(false);
263
+ setLoading(false);
256
264
  _Toast.default.error((0, _util.formatError)(err));
257
265
  });
258
266
  };
@@ -305,19 +313,30 @@ function CreateRelease(_ref2) {
305
313
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
306
314
  display: "flex",
307
315
  children: [!isPublished && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
308
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
316
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
309
317
  variant: "outlined",
310
- disabled: loading,
318
+ disabled: loading || createLoading,
311
319
  onClick: () => onRelease(_constant.PROJECT.RELEASE_STATUS.draft),
312
320
  style: {
313
321
  marginRight: 12
314
322
  },
315
- children: t('blocklet.publish.saveDraft')
316
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
323
+ children: [createLoading === _constant.PROJECT.RELEASE_STATUS.draft && /*#__PURE__*/(0, _jsxRuntime.jsx)(_CircularProgress.default, {
324
+ size: 14,
325
+ sx: {
326
+ mr: 0.5
327
+ }
328
+ }), t('blocklet.publish.saveDraft')]
329
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
317
330
  variant: "contained",
318
- disabled: loading,
331
+ disabled: loading || createLoading,
319
332
  onClick: () => onRelease(_constant.PROJECT.RELEASE_STATUS.published),
320
- children: t('common.release')
333
+ children: [createLoading === _constant.PROJECT.RELEASE_STATUS.published && /*#__PURE__*/(0, _jsxRuntime.jsx)(_CircularProgress.default, {
334
+ size: 14,
335
+ sx: {
336
+ mr: 0.5
337
+ },
338
+ color: "inherit"
339
+ }), t('common.release')]
321
340
  })]
322
341
  }), isPublished && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
323
342
  variant: "contained",
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = BlockletPublish;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
8
9
  var _reactRouterDom = require("react-router-dom");
9
10
  var _styled = _interopRequireDefault(require("@emotion/styled"));
10
11
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
@@ -19,7 +20,10 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
19
20
  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); }
20
21
  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; }
21
22
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
22
- function BlockletPublish() {
23
+ function BlockletPublish(_ref) {
24
+ let {
25
+ padding
26
+ } = _ref;
23
27
  const {
24
28
  blocklet
25
29
  } = (0, _blocklet.useBlockletContext)();
@@ -43,7 +47,12 @@ function BlockletPublish() {
43
47
  if (!blocklet) {
44
48
  return null;
45
49
  }
50
+ const style = {};
51
+ if (padding) {
52
+ style.padding = padding;
53
+ }
46
54
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Main, {
55
+ style: style,
47
56
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactRouterDom.Routes, {
48
57
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactRouterDom.Route, {
49
58
  path: "/",
@@ -61,10 +70,15 @@ function BlockletPublish() {
61
70
  })
62
71
  });
63
72
  }
64
- BlockletPublish.propTypes = {};
65
- const Main = (0, _styled.default)(_Box.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n a {\n color: ", ";\n }\n"])), _ref => {
73
+ BlockletPublish.propTypes = {
74
+ padding: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])
75
+ };
76
+ BlockletPublish.defaultProps = {
77
+ padding: ''
78
+ };
79
+ const Main = (0, _styled.default)(_Box.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n a {\n color: ", ";\n }\n"])), _ref2 => {
66
80
  let {
67
81
  theme
68
- } = _ref;
82
+ } = _ref2;
69
83
  return theme.palette.primary.main;
70
84
  });
@@ -21,6 +21,7 @@ var _node = require("../../contexts/node");
21
21
  var _emptySpinner = _interopRequireDefault(require("../../empty-spinner"));
22
22
  var _didAddress = _interopRequireDefault(require("../../did-address"));
23
23
  var _confirm = _interopRequireDefault(require("../../confirm"));
24
+ var _bundleAvatar = _interopRequireDefault(require("../bundle-avatar"));
24
25
  var _jsxRuntime = require("react/jsx-runtime");
25
26
  var _templateObject;
26
27
  /* eslint-disable react/no-unstable-nested-components */
@@ -154,6 +155,35 @@ function ProjectList() {
154
155
  }) : '';
155
156
  }
156
157
  }
158
+ }, componentDid ? null : {
159
+ label: t('common.scope'),
160
+ name: 'componentDid',
161
+ options: {
162
+ customBodyRender: value => {
163
+ const component = (blocklet.children || []).find(x => x.meta.did === value);
164
+ if (!component) {
165
+ return '';
166
+ }
167
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
168
+ display: "flex",
169
+ alignItems: "center",
170
+ justifyContent: "flex-start",
171
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_bundleAvatar.default, {
172
+ size: 14,
173
+ blocklet: component,
174
+ ancestors: [blocklet]
175
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
176
+ ml: 0.5,
177
+ sx: {
178
+ ml: 0.5,
179
+ color: 'text.primary',
180
+ fontSize: 14
181
+ },
182
+ children: component.meta.title
183
+ })]
184
+ }, value);
185
+ }
186
+ }
157
187
  }, {
158
188
  label: t('common.updatedAt'),
159
189
  name: 'updatedAt',
@@ -186,7 +216,7 @@ function ProjectList() {
186
216
  });
187
217
  }
188
218
  }
189
- }];
219
+ }].filter(Boolean);
190
220
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Main, {
191
221
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
192
222
  sx: {
@@ -7,7 +7,6 @@ exports.default = Resource;
7
7
  var _react = require("react");
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _styled = _interopRequireDefault(require("@emotion/styled"));
10
- var _difference = _interopRequireDefault(require("lodash/difference"));
11
10
  var _urlJoin = _interopRequireDefault(require("url-join"));
12
11
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
13
12
  var _context = require("@arcblock/ux/lib/Locale/context");
@@ -32,12 +31,6 @@ const fillParent = (nodes, parentId) => {
32
31
  });
33
32
  return nodes;
34
33
  };
35
- const checkDiff = (a, b) => {
36
- if (a.length !== b.length) {
37
- return true;
38
- }
39
- return !!(0, _difference.default)(a, b || []).length;
40
- };
41
34
  function Resource(_ref) {
42
35
  let {
43
36
  app,
@@ -54,14 +47,12 @@ function Resource(_ref) {
54
47
  } = (0, _node.useNodeContext)();
55
48
  const [resources, setResources] = (0, _react.useState)([]);
56
49
  const [selectedResourceIds, setSelectedResourceIds] = (0, _react.useState)([]);
57
- const [savedResourceIds, setSavedResourceIds] = (0, _react.useState)([]);
58
50
  const [loading, setLoading] = (0, _react.useState)(false);
59
51
  const releaseId = release.id;
60
52
  const readonly = release.status === 'published';
61
53
  const {
62
54
  resourceExportApi = '/'
63
55
  } = (component === null || component === void 0 ? void 0 : component.meta.capabilities) || {};
64
- const hasDiff = (0, _react.useMemo)(() => checkDiff(savedResourceIds, selectedResourceIds), [savedResourceIds, selectedResourceIds]);
65
56
  const urlObj = new URL((0, _urlJoin.default)('http://127.0.0.1', component.mountPoint, resourceExportApi || '/').replace(/\/+/g, '/'));
66
57
  urlObj.searchParams.set('projectId', projectId);
67
58
  urlObj.searchParams.set('releaseId', releaseId);
@@ -78,7 +69,6 @@ function Resource(_ref) {
78
69
  resources: data
79
70
  }
80
71
  });
81
- setSavedResourceIds(data);
82
72
  } catch (err) {
83
73
  _Toast.default.error(err.message);
84
74
  }
@@ -119,7 +109,6 @@ function Resource(_ref) {
119
109
  }).then(res => {
120
110
  const list = (res === null || res === void 0 ? void 0 : res.resources) || [];
121
111
  setSelectedResourceIds(list);
122
- setSavedResourceIds(list);
123
112
  }).catch(err => {
124
113
  _Toast.default.error(err.message);
125
114
  });
@@ -148,7 +137,7 @@ function Resource(_ref) {
148
137
  className: "footer",
149
138
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
150
139
  variant: "contained",
151
- disabled: loading || !hasDiff,
140
+ disabled: loading,
152
141
  onClick: () => onSave(),
153
142
  children: t('common.save')
154
143
  })
package/lib/locales/en.js CHANGED
@@ -273,6 +273,7 @@ module.exports = {
273
273
  saveSuccess: 'Saved successfully',
274
274
  scheduleFailed: 'schedule failed',
275
275
  scheduleSuccess: 'successfully scheduled',
276
+ scope: 'Scope',
276
277
  screenshot: 'Screenshot',
277
278
  search: 'Search',
278
279
  security: 'Security',
@@ -623,6 +624,8 @@ module.exports = {
623
624
  isInProgress: 'Blocklet is in progress, please wait for it to finish'
624
625
  },
625
626
  publish: {
627
+ createResource: 'Create Resource',
628
+ addResource: 'Add Release',
626
629
  productTitle: 'Product',
627
630
  versionTitle: 'Version',
628
631
  imgTitle: 'Images',
package/lib/locales/zh.js CHANGED
@@ -278,6 +278,7 @@ module.exports = {
278
278
  saveSuccess: '保存成功',
279
279
  scheduleFailed: '加入任务队列失败',
280
280
  scheduleSuccess: '成功加入任务队列',
281
+ scope: '范围',
281
282
  screenshot: '截图',
282
283
  search: '搜索',
283
284
  security: '安全',
@@ -630,6 +631,8 @@ module.exports = {
630
631
  isInProgress: '应用正在进行中,请等待完成'
631
632
  },
632
633
  publish: {
634
+ createResource: '创建资源',
635
+ addResource: '添加资源',
633
636
  productTitle: 'Blocklet 详情',
634
637
  versionTitle: '版本信息',
635
638
  imgTitle: '图片资源',
@@ -3,8 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.STORAGE_KEY_STORE_SERVER = exports.STORAGE_KEY_STORE_BLOCKLET = void 0;
6
+ exports.STORAGE_KEY_STORE_SERVER = exports.STORAGE_KEY_STORE_RESOURCE = exports.STORAGE_KEY_STORE_BLOCKLET = void 0;
7
7
  const STORAGE_KEY_STORE_BLOCKLET = 'blocklet-add-component-registry';
8
8
  exports.STORAGE_KEY_STORE_BLOCKLET = STORAGE_KEY_STORE_BLOCKLET;
9
9
  const STORAGE_KEY_STORE_SERVER = 'server-add-registry';
10
- exports.STORAGE_KEY_STORE_SERVER = STORAGE_KEY_STORE_SERVER;
10
+ exports.STORAGE_KEY_STORE_SERVER = STORAGE_KEY_STORE_SERVER;
11
+ const STORAGE_KEY_STORE_RESOURCE = resource => "resource-".concat(resource, "-add-registry");
12
+ exports.STORAGE_KEY_STORE_RESOURCE = STORAGE_KEY_STORE_RESOURCE;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abtnode/ux",
3
- "version": "1.16.19-beta-7b2db880",
3
+ "version": "1.16.19-beta-7d3ef675",
4
4
  "description": "UX components shared across abtnode packages",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -27,24 +27,24 @@
27
27
  "author": "linchen <linchen1987@foxmail.com> (http://github.com/linchen1987)",
28
28
  "license": "Apache-2.0",
29
29
  "dependencies": {
30
- "@abtnode/auth": "1.16.19-beta-7b2db880",
31
- "@abtnode/constant": "1.16.19-beta-7b2db880",
32
- "@abtnode/util": "1.16.19-beta-7b2db880",
30
+ "@abtnode/auth": "1.16.19-beta-7d3ef675",
31
+ "@abtnode/constant": "1.16.19-beta-7d3ef675",
32
+ "@abtnode/util": "1.16.19-beta-7d3ef675",
33
33
  "@ahooksjs/use-url-state": "^3.5.1",
34
34
  "@arcblock/did": "^1.18.95",
35
- "@arcblock/did-connect": "^2.8.14",
35
+ "@arcblock/did-connect": "^2.8.16",
36
36
  "@arcblock/did-motif": "^1.1.13",
37
- "@arcblock/icons": "^2.8.14",
38
- "@arcblock/nft-display": "2.8.14",
39
- "@arcblock/react-hooks": "^2.8.14",
40
- "@arcblock/terminal": "^2.8.14",
41
- "@arcblock/ux": "^2.8.14",
42
- "@blocklet/constant": "1.16.19-beta-7b2db880",
43
- "@blocklet/launcher-layout": "2.2.36",
44
- "@blocklet/list": "^0.12.52",
45
- "@blocklet/meta": "1.16.19-beta-7b2db880",
46
- "@blocklet/ui-react": "^2.8.14",
47
- "@blocklet/uploader": "^0.0.40",
37
+ "@arcblock/icons": "^2.8.16",
38
+ "@arcblock/nft-display": "2.8.16",
39
+ "@arcblock/react-hooks": "^2.8.16",
40
+ "@arcblock/terminal": "^2.8.16",
41
+ "@arcblock/ux": "^2.8.16",
42
+ "@blocklet/constant": "1.16.19-beta-7d3ef675",
43
+ "@blocklet/launcher-layout": "2.2.40",
44
+ "@blocklet/list": "^0.12.53",
45
+ "@blocklet/meta": "1.16.19-beta-7d3ef675",
46
+ "@blocklet/ui-react": "^2.8.16",
47
+ "@blocklet/uploader": "^0.0.45",
48
48
  "@emotion/react": "^11.10.4",
49
49
  "@emotion/styled": "^11.10.4",
50
50
  "@iconify/react": "^4.0.0",
@@ -100,7 +100,7 @@
100
100
  "babel-plugin-inline-react-svg": "^1.1.2",
101
101
  "glob": "^10.3.3"
102
102
  },
103
- "gitHead": "598b576b97dd7accbfa1bb509b75e423ad27e5e2",
103
+ "gitHead": "af968e7bab22e67bd42d3dc93ff3ce827b9a91fe",
104
104
  "exports": {
105
105
  ".": {
106
106
  "import": "./es/index.js",