@abtnode/ux 1.8.36 → 1.8.38

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 (37) hide show
  1. package/lib/blocklet/access/config-access.js +299 -0
  2. package/lib/blocklet/access/index.js +220 -0
  3. package/lib/blocklet/actions.js +1 -3
  4. package/lib/blocklet/agreement-app.js +28 -0
  5. package/lib/blocklet/agreement.js +72 -0
  6. package/lib/blocklet/avatar.js +9 -18
  7. package/lib/blocklet/component/add.js +1083 -0
  8. package/lib/blocklet/component/configuration.js +1 -1
  9. package/lib/blocklet/component/environment.js +1 -1
  10. package/lib/blocklet/component/index.js +7 -9
  11. package/lib/blocklet/component/select-store.js +151 -0
  12. package/lib/blocklet/component/store-blocklet-list.js +203 -0
  13. package/lib/blocklet/configuration.js +5 -87
  14. package/lib/blocklet/install-from-url.js +362 -0
  15. package/lib/blocklet/overview.js +21 -12
  16. package/lib/blocklet/preferences/index.js +233 -0
  17. package/lib/blocklet/purchase/common.js +103 -0
  18. package/lib/blocklet/purchase/component-purchase.js +251 -0
  19. package/lib/blocklet/purchase/index.js +13 -0
  20. package/lib/blocklet/runtime-info.js +1 -0
  21. package/lib/blocklet/util.js +4 -16
  22. package/lib/blocklet/version.js +1 -1
  23. package/lib/hooks/blocklet.js +26 -10
  24. package/lib/layout/feedback.js +8 -10
  25. package/lib/locales/en.js +9 -2
  26. package/lib/locales/zh.js +9 -2
  27. package/lib/schema-form/index.js +1 -1
  28. package/lib/store/add.js +185 -0
  29. package/lib/store/delete.js +102 -0
  30. package/lib/store/item.js +84 -0
  31. package/lib/team/passports/color.js +1 -1
  32. package/lib/team/passports/detail.js +39 -31
  33. package/lib/util/api.js +21 -0
  34. package/lib/util/constants.js +10 -0
  35. package/lib/util/index.js +24 -8
  36. package/lib/who-can-access/config.js +13 -13
  37. package/package.json +11 -8
@@ -0,0 +1,299 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = ConfigAccess;
7
+ exports.getComponentWhoCanAccess = void 0;
8
+ var _react = require("react");
9
+ var _get = _interopRequireDefault(require("lodash/get"));
10
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
11
+ var _propTypes = _interopRequireDefault(require("prop-types"));
12
+ var _TextField = _interopRequireDefault(require("@mui/material/TextField"));
13
+ var _MenuItem = _interopRequireDefault(require("@mui/material/MenuItem"));
14
+ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
15
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
16
+ var _Edit = _interopRequireDefault(require("@mui/icons-material/Edit"));
17
+ var _useTheme = _interopRequireDefault(require("@mui/material/styles/useTheme"));
18
+ var _Group = _interopRequireDefault(require("@mui/icons-material/Group"));
19
+ var _Chip = _interopRequireDefault(require("@mui/material/Chip"));
20
+ var _ListItemText = _interopRequireDefault(require("@mui/material/ListItemText"));
21
+ var _Checkbox = _interopRequireDefault(require("@mui/material/Checkbox"));
22
+ var _constant = require("@blocklet/constant");
23
+ var _constant2 = require("@abtnode/constant");
24
+ var _util = require("@blocklet/meta/lib/util");
25
+ var _context = require("@arcblock/ux/lib/Locale/context");
26
+ var _Dialog = _interopRequireDefault(require("@arcblock/ux/lib/Dialog"));
27
+ var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
28
+ var _Spinner = _interopRequireDefault(require("@arcblock/ux/lib/Spinner"));
29
+ var _node = require("../../contexts/node");
30
+ var _team = require("../../contexts/team");
31
+ var _util2 = require("../../util");
32
+ var _toast = _interopRequireDefault(require("../../toast"));
33
+ var _config = _interopRequireDefault(require("../../who-can-access/config"));
34
+ var _jsxRuntime = require("react/jsx-runtime");
35
+ var _templateObject, _templateObject2;
36
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
38
+ const CONFIG_ROLE = 'roles';
39
+ const Configs = [..._config.default, {
40
+ value: CONFIG_ROLE,
41
+ icon: _Group.default,
42
+ title: {
43
+ zh: '指定通行证可访问',
44
+ en: 'Accessible to passports'
45
+ },
46
+ description: {
47
+ zh: '只有指定的通行证可以访问',
48
+ en: 'Only specified passports can access'
49
+ }
50
+ }];
51
+ const getAccess = (whoCanAccess, roleStore) => {
52
+ if (whoCanAccess && whoCanAccess.startsWith(_constant2.WHO_CAN_ACCESS_PREFIX_ROLES)) {
53
+ const roleNames = (0, _util.getRolesFromAuthConfig)({
54
+ whoCanAccess
55
+ });
56
+ const filterRoles = roleStore.filter(x => roleNames.includes(x.name));
57
+ return {
58
+ access: CONFIG_ROLE,
59
+ roles: filterRoles
60
+ };
61
+ }
62
+ return {
63
+ access: whoCanAccess,
64
+ roles: []
65
+ };
66
+ };
67
+ const getComponentWhoCanAccess = function getComponentWhoCanAccess(component, app) {
68
+ let {
69
+ roles = []
70
+ } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
71
+ const access = (component.configs || []).find(x => x.key === _constant.BLOCKLET_CONFIGURABLE_KEY.COMPONENT_ACCESS_WHO);
72
+ if (access) {
73
+ return getAccess(access.value, roles);
74
+ }
75
+ if (app && (0, _get.default)(app, 'settings.whoCanAccess') && (0, _get.default)(app, 'settings.whoCanAccess') !== _constant2.WHO_CAN_ACCESS.ALL) {
76
+ return getAccess((0, _get.default)(app, 'settings.whoCanAccess'), roles);
77
+ }
78
+ const service = (0, _util.findServiceFromMeta)(component.meta, _constant2.NODE_SERVICES.AUTH);
79
+ if ((0, _get.default)(service, 'config.whoCanAccess')) {
80
+ return getAccess(service.config.whoCanAccess, roles);
81
+ }
82
+ return {
83
+ access: _constant2.WHO_CAN_ACCESS.ALL,
84
+ roles: []
85
+ };
86
+ };
87
+ exports.getComponentWhoCanAccess = getComponentWhoCanAccess;
88
+ function ConfigAccess(_ref) {
89
+ let {
90
+ blocklet,
91
+ ancestors,
92
+ children
93
+ } = _ref;
94
+ const theme = (0, _useTheme.default)();
95
+ const [showDialog, setShowDialog] = (0, _react.useState)('');
96
+ const {
97
+ t,
98
+ locale
99
+ } = (0, _context.useLocaleContext)();
100
+ const {
101
+ api
102
+ } = (0, _node.useNodeContext)();
103
+ const {
104
+ roles: roleList
105
+ } = (0, _team.useTeamContext)();
106
+ const [loading, setLoading] = (0, _react.useState)('');
107
+ const root = ancestors[0] || blocklet;
108
+ const {
109
+ access: defaultValue,
110
+ roles: defaultRoles
111
+ } = getComponentWhoCanAccess(blocklet, root, {
112
+ roles: roleList
113
+ });
114
+ const [whoCanAccess, setWhoCanAccess] = (0, _react.useState)(defaultValue);
115
+ const [roles, setRoles] = (0, _react.useState)(defaultRoles);
116
+ const dids = [...ancestors.map(x => x.meta.did), blocklet.meta.did];
117
+ const iconStyle = {
118
+ marginRight: 4,
119
+ fontSize: 18,
120
+ verticalAlign: 'text-bottom',
121
+ color: theme.palette.text.secondary
122
+ };
123
+ const componentName = ancestors.concat(blocklet).map(x => (0, _util.getDisplayName)(x, true)).join(' / ');
124
+ if ((0, _util2.isInstalling)(blocklet.status)) {
125
+ return null;
126
+ }
127
+ if (blocklet.status === 'unknown' && (0, _util2.isInstalling)(blocklet.status)) {
128
+ return null;
129
+ }
130
+ const onClose = () => {
131
+ setShowDialog(false);
132
+ };
133
+ const onOpen = e => {
134
+ e.stopPropagation();
135
+ // eslint-disable-next-line no-unused-expressions
136
+ setShowDialog(true);
137
+ };
138
+ const onWhoCanAccessChange = e => {
139
+ const {
140
+ value
141
+ } = e.target;
142
+ setWhoCanAccess(value);
143
+ };
144
+ const onRolesChange = e => {
145
+ setRoles(roleList.filter(x => (e.target.value || []).includes(x.name)));
146
+ };
147
+ const onConfirm = async () => {
148
+ if (loading) {
149
+ return;
150
+ }
151
+ setLoading(true);
152
+ try {
153
+ let value = whoCanAccess;
154
+ if (value === CONFIG_ROLE) {
155
+ value = "".concat(_constant2.WHO_CAN_ACCESS_PREFIX_ROLES).concat(roles.map(x => x.name).join(','));
156
+ }
157
+ await api.updateWhoCanAccess({
158
+ input: {
159
+ did: dids,
160
+ whoCanAccess: value
161
+ }
162
+ });
163
+ _toast.default.success(t('blocklet.config.access.updatedTip'));
164
+ onClose();
165
+ setLoading(false);
166
+ } catch (err) {
167
+ setLoading(false);
168
+ _toast.default.error((0, _util2.formatError)(err));
169
+ }
170
+ };
171
+ const disabled = loading || whoCanAccess === CONFIG_ROLE && !roles.length;
172
+ return [typeof children === 'function' ? children({
173
+ open: onOpen
174
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
175
+ onClick: onOpen,
176
+ "data-cy": "action-config-component",
177
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Edit.default, {})
178
+ }), showDialog && /*#__PURE__*/(0, _jsxRuntime.jsxs)(StyledDialog, {
179
+ open: true,
180
+ fullWidth: true,
181
+ title: componentName,
182
+ onClose: onClose,
183
+ PaperProps: {
184
+ style: {
185
+ minHeight: 'auto'
186
+ }
187
+ },
188
+ actions: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
189
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
190
+ onClick: onClose,
191
+ color: "inherit",
192
+ children: t('common.cancel')
193
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
194
+ onClick: onConfirm,
195
+ color: "primary",
196
+ disabled: disabled,
197
+ variant: "contained",
198
+ autoFocus: true,
199
+ children: [loading && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {
200
+ size: [16, 10]
201
+ }), t('common.confirm')]
202
+ })]
203
+ }),
204
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
205
+ mt: 4,
206
+ mb: 3,
207
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
208
+ label: t('blocklet.config.access.description'),
209
+ select: true,
210
+ fullWidth: true,
211
+ value: whoCanAccess,
212
+ onChange: onWhoCanAccessChange,
213
+ SelectProps: {
214
+ renderValue: selected => {
215
+ const d = Configs.find(x => x.value === selected);
216
+ return d ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
217
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(d.icon, {
218
+ style: iconStyle
219
+ }), d.title[locale]]
220
+ }) : null;
221
+ }
222
+ },
223
+ children: Configs.map(d => {
224
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(StyledMenuItem, {
225
+ value: d.value,
226
+ sx: {
227
+ display: 'block'
228
+ },
229
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
230
+ display: "flex",
231
+ alignItems: "center",
232
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(d.icon, {
233
+ style: iconStyle
234
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
235
+ children: d.title[locale]
236
+ })]
237
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
238
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
239
+ className: "tip",
240
+ children: d.description[locale]
241
+ })
242
+ })]
243
+ });
244
+ })
245
+ })
246
+ }), whoCanAccess === CONFIG_ROLE && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
247
+ mt: 4,
248
+ mb: 3,
249
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
250
+ label: t('blocklet.config.access.description'),
251
+ select: true,
252
+ fullWidth: true,
253
+ value: roles.map(x => x.name),
254
+ onChange: onRolesChange,
255
+ SelectProps: {
256
+ multiple: true,
257
+ renderValue: selected => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
258
+ sx: {
259
+ display: 'flex',
260
+ flexWrap: 'wrap',
261
+ gap: 0.5
262
+ },
263
+ children: selected.map(value => {
264
+ const role = roleList.find(x => x.name === value);
265
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.default, {
266
+ label: role.title
267
+ }, role.text);
268
+ })
269
+ })
270
+ },
271
+ children: roleList.map(_ref2 => {
272
+ let {
273
+ name,
274
+ title
275
+ } = _ref2;
276
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_MenuItem.default, {
277
+ value: name,
278
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Checkbox.default, {
279
+ checked: roles.some(x => x.name === name)
280
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ListItemText.default, {
281
+ primary: title
282
+ })]
283
+ }, name);
284
+ })
285
+ })
286
+ })]
287
+ })];
288
+ }
289
+ ConfigAccess.propTypes = {
290
+ blocklet: _propTypes.default.object.isRequired,
291
+ ancestors: _propTypes.default.array,
292
+ children: _propTypes.default.any
293
+ };
294
+ ConfigAccess.defaultProps = {
295
+ ancestors: [],
296
+ children: null
297
+ };
298
+ const StyledDialog = (0, _styled.default)(_Dialog.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .MuiDialogContent-root {\n padding-top: 0;\n margin-top: -32px;\n }\n .MuiToolbar-root {\n padding-right: 12px;\n }\n .ux-dialog_right {\n padding-right: 20px;\n }\n"])));
299
+ const StyledMenuItem = (0, _styled.default)(_MenuItem.default)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n .tip {\n font-size: 12px;\n color: ", ";\n }\n"])), props => props.theme.palette.text.secondary);
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = BlockletAccess;
7
+ var _react = require("react");
8
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _useTheme = _interopRequireDefault(require("@mui/material/styles/useTheme"));
11
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
12
+ var _Tooltip = _interopRequireDefault(require("@mui/material/Tooltip"));
13
+ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
14
+ var _ExpandMore = _interopRequireDefault(require("@mui/icons-material/ExpandMore"));
15
+ var _ChevronRight = _interopRequireDefault(require("@mui/icons-material/ChevronRight"));
16
+ var _Collapse = _interopRequireDefault(require("@mui/material/Collapse"));
17
+ var _Launch = _interopRequireDefault(require("@mui/icons-material/Launch"));
18
+ var _EditIcon = _interopRequireDefault(require("@arcblock/icons/lib/EditIcon"));
19
+ var _util = require("@blocklet/meta/lib/util");
20
+ var _context = require("@arcblock/ux/lib/Locale/context");
21
+ var _Empty = _interopRequireDefault(require("@arcblock/ux/lib/Empty"));
22
+ var _blocklet = require("../../contexts/blocklet");
23
+ var _team = require("../../contexts/team");
24
+ var _util2 = require("../../util");
25
+ var _line = _interopRequireDefault(require("../component/line"));
26
+ var _avatar = _interopRequireDefault(require("../avatar"));
27
+ var _configAccess = _interopRequireWildcard(require("./config-access"));
28
+ var _config = _interopRequireDefault(require("../../who-can-access/config"));
29
+ var _jsxRuntime = require("react/jsx-runtime");
30
+ var _templateObject;
31
+ 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); }
32
+ 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; }
33
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
34
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
35
+ function ComponentItem(_ref) {
36
+ var _blocklet$children;
37
+ let {
38
+ blocklet,
39
+ ancestors,
40
+ depth
41
+ } = _ref;
42
+ const theme = (0, _useTheme.default)();
43
+ const {
44
+ t,
45
+ locale
46
+ } = (0, _context.useLocaleContext)();
47
+ const {
48
+ roles: roleList
49
+ } = (0, _team.useTeamContext)();
50
+ const [expand, setExpand] = (0, _react.useState)(true);
51
+ const {
52
+ recommendedDomain: domain
53
+ } = (0, _blocklet.useBlockletContext)();
54
+ const app = ancestors[0] || blocklet;
55
+ const mountPoint = "/".concat(ancestors.map(x => x.mountPoint || '/').join('/'), "/").concat(blocklet.mountPoint || '/').replace(/\/+/g, '/');
56
+ const href = (0, _util2.getBlockletUrl)({
57
+ blocklet: app,
58
+ domain: {
59
+ value: domain
60
+ },
61
+ mountPoint,
62
+ params: (0, _util2.getBlockletUrlParams)(app, locale)
63
+ });
64
+ const iconStyle = {
65
+ fill: theme.palette.text.secondary
66
+ };
67
+ const canExpand = depth > 0 && blocklet.children.length > 0;
68
+ const expandIcon = /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
69
+ size: "small",
70
+ children: expand ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ExpandMore.default, {
71
+ fontSize: "inherit"
72
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChevronRight.default, {
73
+ fontSize: "inherit"
74
+ })
75
+ });
76
+ const {
77
+ access: whoCanAccess,
78
+ roles
79
+ } = (0, _configAccess.getComponentWhoCanAccess)(blocklet, app, {
80
+ roles: roleList
81
+ });
82
+ let accessConfig;
83
+ if (whoCanAccess !== 'roles') {
84
+ accessConfig = _config.default.find(x => x.value === whoCanAccess) || _config.default[2];
85
+ } else {
86
+ const str = roles.map(x => x.title).join('/');
87
+ accessConfig = {
88
+ title: {
89
+ zh: "\u53EA\u6709 ".concat(str, " \u53EF\u4EE5\u8BBF\u95EE"),
90
+ en: "Only ".concat(str, " can access")
91
+ }
92
+ };
93
+ }
94
+ return [(depth > 0 || blocklet.meta.group !== 'gateway') && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
95
+ display: "flex",
96
+ py: 2,
97
+ className: "component-item",
98
+ justifyContent: "space-between",
99
+ alignItems: "center",
100
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
101
+ pl: Math.max((depth - 1) * 2, 0),
102
+ width: {
103
+ xs: 300,
104
+ md: 400
105
+ },
106
+ display: "flex",
107
+ alignItems: "center",
108
+ style: {
109
+ cursor: canExpand ? 'pointer' : 'cursor'
110
+ },
111
+ onClick: () => canExpand && setExpand(!expand),
112
+ children: [canExpand ? expandIcon : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
113
+ width: 28
114
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_avatar.default, {
115
+ blocklet: blocklet,
116
+ ancestors: ancestors
117
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
118
+ ml: "16px",
119
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
120
+ style: {
121
+ color: '#222',
122
+ fontSize: 18
123
+ },
124
+ children: (0, _util.getDisplayName)(blocklet, true)
125
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
126
+ display: "flex",
127
+ alignItems: "center",
128
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
129
+ color: "text.secondary",
130
+ children: accessConfig.title[locale]
131
+ })
132
+ })]
133
+ })]
134
+ }, blocklet), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
135
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
136
+ title: t('common.visit'),
137
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
138
+ target: "_blank",
139
+ href: href,
140
+ rel: "noopener noreferrer",
141
+ title: href,
142
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
143
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Launch.default, {})
144
+ })
145
+ })
146
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_configAccess.default, {
147
+ blocklet: blocklet,
148
+ ancestors: ancestors,
149
+ children: _ref2 => {
150
+ let {
151
+ open
152
+ } = _ref2;
153
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
154
+ title: t('common.edit'),
155
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
156
+ onClick: open,
157
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_EditIcon.default, {
158
+ style: iconStyle
159
+ })
160
+ })
161
+ });
162
+ }
163
+ })]
164
+ }, "actions")]
165
+ }, "group-not-gateway-box"), /*#__PURE__*/(0, _jsxRuntime.jsx)(_line.default, {
166
+ depth: depth
167
+ }), (_blocklet$children = blocklet.children) !== null && _blocklet$children !== void 0 && _blocklet$children.length ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Collapse.default, {
168
+ in: expand,
169
+ children: blocklet.children.map(x => /*#__PURE__*/(0, _jsxRuntime.jsx)(ComponentItem, {
170
+ blocklet: x,
171
+ ancestors: [...ancestors, blocklet],
172
+ depth: depth + 1
173
+ }, "".concat(depth + 1, "-").concat(x.meta.did)))
174
+ }, "blocklet-collapse") : null];
175
+ }
176
+ ComponentItem.propTypes = {
177
+ blocklet: _propTypes.default.object.isRequired,
178
+ ancestors: _propTypes.default.array,
179
+ depth: _propTypes.default.number
180
+ };
181
+ ComponentItem.defaultProps = {
182
+ ancestors: [],
183
+ depth: 0
184
+ };
185
+ function BlockletAccess() {
186
+ const {
187
+ t
188
+ } = (0, _context.useLocaleContext)();
189
+ const {
190
+ blocklet
191
+ } = (0, _blocklet.useBlockletContext)();
192
+ const components = [...blocklet.children] || [];
193
+ if (blocklet.meta.group !== 'gateway') {
194
+ // add root blocklet to table list
195
+ components.unshift(blocklet);
196
+ }
197
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Div, {
198
+ component: "div",
199
+ children: components && components.length ? [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
200
+ mt: 2,
201
+ ml: {
202
+ xs: '-12px',
203
+ md: '-24px'
204
+ },
205
+ style: {
206
+ maxWidth: 1080
207
+ },
208
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ComponentItem, {
209
+ blocklet: blocklet
210
+ }, "0-".concat(blocklet.meta.did))
211
+ }, "top-blocklet-".concat(blocklet.meta.did))] : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
212
+ mt: 8,
213
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Empty.default, {
214
+ children: t('blocklet.component.noComponent')
215
+ })
216
+ })
217
+ });
218
+ }
219
+ BlockletAccess.propTypes = {};
220
+ const Div = (0, _styled.default)(_Box.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .title {\n font-size: 1.2rem;\n font-weight: bold;\n margin-top: ", ";\n margin-bottom: ", ";\n &.first {\n margin-top: 0;\n }\n }\n"])), props => props.theme.spacing(5), props => props.theme.spacing(3));
@@ -93,9 +93,7 @@ function BlockletActions(_ref) {
93
93
  }
94
94
  if (action === 'start' && !inService && !skipSetup && !((_blocklet$settings = blocklet.settings) !== null && _blocklet$settings !== void 0 && _blocklet$settings.initialized)) {
95
95
  // 启动 blocklet 并跳转到 setup 流程界面时携带 serverUrl 查询参数
96
- const {
97
- serverUrl
98
- } = (0, _util3.getLaunchURL)(blocklet, node.info);
96
+ const serverUrl = (0, _util3.getServerUrl)(node.info);
99
97
  const url = new URL(recommendedUrl);
100
98
  url.searchParams.set('serverUrl', serverUrl);
101
99
  window.open(url.href);
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = AgreementApp;
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
9
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
10
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
+ function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure " + obj); }
12
+ function AgreementApp(_ref) {
13
+ let props = Object.assign({}, (_objectDestructuringEmpty(_ref), _ref));
14
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", _objectSpread(_objectSpread({}, props), {}, {
15
+ style: {
16
+ width: '100%'
17
+ },
18
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
19
+ children: "End User License Agreement for Application"
20
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
21
+ children: "Blocklet Server License Agreement ArcBlock, Inc. version 2020-08-28"
22
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
23
+ children: "BLOCKLET SERVER LICENSE AGREEMENT"
24
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
25
+ children: "\u6682\u65E0"
26
+ })]
27
+ }));
28
+ }
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = Agreement;
7
+ var _propTypes = _interopRequireDefault(require("prop-types"));
8
+ var _reactRouterDom = require("react-router-dom");
9
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
10
+ var _context = require("@arcblock/ux/lib/Locale/context");
11
+ var _serverEula = _interopRequireDefault(require("@blocklet/launcher-layout/lib/wizard/server-eula"));
12
+ var _wizardDesc = _interopRequireDefault(require("@blocklet/launcher-layout/lib/wizard/wizard-desc"));
13
+ var _agreementApp = _interopRequireDefault(require("./agreement-app"));
14
+ var _jsxRuntime = require("react/jsx-runtime");
15
+ var _templateObject;
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
18
+ // TODO: 加载 Blocklet 定义的 Agreement
19
+ function Agreement(_ref) {
20
+ let {
21
+ meta,
22
+ onClickNext,
23
+ handleDescEle
24
+ } = _ref;
25
+ const navigate = (0, _reactRouterDom.useNavigate)();
26
+ const {
27
+ t,
28
+ locale
29
+ } = (0, _context.useLocaleContext)();
30
+ const clickNext = onClickNext || (() => {
31
+ navigate("/launch-blocklet/install".concat(window.location.search));
32
+ });
33
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Container, {
34
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
35
+ className: "app-content",
36
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
37
+ className: "agreement",
38
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
39
+ className: "agreement-content",
40
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_wizardDesc.default, {
41
+ blockletMeta: {
42
+ data: meta
43
+ },
44
+ locale: locale,
45
+ handleDescEle: handleDescEle
46
+ })
47
+ })
48
+ })
49
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
50
+ className: "button-container",
51
+ "data-cy": "agree-all",
52
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_serverEula.default, {
53
+ onContinue: clickNext,
54
+ description: /*#__PURE__*/(0, _jsxRuntime.jsx)(_agreementApp.default, {}),
55
+ texts: {
56
+ listenName: t('launchBlocklet.license'),
57
+ buttonNext: t('launchBlocklet.next')
58
+ }
59
+ })
60
+ })]
61
+ });
62
+ }
63
+ Agreement.propTypes = {
64
+ meta: _propTypes.default.object.isRequired,
65
+ onClickNext: _propTypes.default.func,
66
+ handleDescEle: _propTypes.default.node
67
+ };
68
+ Agreement.defaultProps = {
69
+ onClickNext: null,
70
+ handleDescEle: ''
71
+ };
72
+ const Container = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: 100%;\n flex: 1;\n .app-content {\n padding: 2px 24px 24px;\n ", " {\n padding-top: 10px;\n }\n width: 100%;\n flex: 1;\n letter-spacing: normal;\n }\n .agreement {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n border: 1px solid ", ";\n border-radius: 12px;\n ", " {\n margin-top: 24px;\n }\n ", " {\n margin-top: 16px;\n }\n .agreement-content {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n font-size: 14px;\n overflow-y: auto;\n ", " {\n padding: 0 24px;\n }\n ", " {\n padding: 0 16px;\n }\n &:after {\n display: block;\n content: '';\n height: 24px;\n }\n }\n }\n .button-container {\n padding-top: 24px;\n padding-bottom: 34px;\n ", " {\n padding-right: 24px;\n margin-left: auto;\n }\n ", " {\n padding-top: 0;\n padding-bottom: 16px;\n }\n }\n"])), props => props.theme.breakpoints.down('md'), props => props.theme.palette.grey['100'], props => props.theme.breakpoints.up('md'), props => props.theme.breakpoints.down('md'), props => props.theme.breakpoints.up('md'), props => props.theme.breakpoints.down('md'), props => props.theme.breakpoints.up('md'), props => props.theme.breakpoints.down('md'));