@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,362 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = InstallFromUrl;
7
+ var _react = require("react");
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _semver = _interopRequireDefault(require("semver"));
10
+ var _Dialog = _interopRequireDefault(require("@arcblock/ux/lib/Dialog"));
11
+ var _Spinner = _interopRequireDefault(require("@arcblock/ux/lib/Spinner"));
12
+ var _DialogContentText = _interopRequireDefault(require("@mui/material/DialogContentText"));
13
+ var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
14
+ var _TextField = _interopRequireDefault(require("@mui/material/TextField"));
15
+ var _Stepper = _interopRequireDefault(require("@mui/material/Stepper"));
16
+ var _Step = _interopRequireDefault(require("@mui/material/Step"));
17
+ var _StepLabel = _interopRequireDefault(require("@mui/material/StepLabel"));
18
+ var _InfoRow = _interopRequireDefault(require("@arcblock/ux/lib/InfoRow"));
19
+ var _context = require("@arcblock/ux/lib/Locale/context");
20
+ var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
21
+ var _Alert = _interopRequireDefault(require("@arcblock/ux/lib/Alert"));
22
+ var _Tag = _interopRequireDefault(require("@arcblock/ux/lib/Tag"));
23
+ var _util = require("@blocklet/meta/lib/util");
24
+ var _node = require("../contexts/node");
25
+ var _util2 = require("../util");
26
+ var _didAddress = _interopRequireDefault(require("../did-address"));
27
+ var _jsxRuntime = require("react/jsx-runtime");
28
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
+ 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; }
30
+ 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; }
31
+ 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; }
32
+ function InstallFromUrl(_ref) {
33
+ let {
34
+ defaultUrl,
35
+ onCancel: _onCancel,
36
+ onSuccess,
37
+ onError,
38
+ mode,
39
+ handleText
40
+ } = _ref;
41
+ const {
42
+ api
43
+ } = (0, _node.useNodeContext)();
44
+ const [loading, setLoading] = (0, _react.useState)(false);
45
+ const [error, setError] = (0, _react.useState)('');
46
+ const {
47
+ t
48
+ } = (0, _context.useLocaleContext)();
49
+ const initMeta = {
50
+ dist: {}
51
+ };
52
+ const [url, setUrl] = (0, _react.useState)(defaultUrl);
53
+ const [activeStep, setActiveStep] = (0, _react.useState)(defaultUrl ? 1 : 0);
54
+ const [meta, setMeta] = (0, _react.useState)(initMeta);
55
+ const [existingMeta, setExistingMeta] = (0, _react.useState)(null);
56
+ const [params, setParams] = (0, _react.useState)({});
57
+ const isComponentMode = mode === 'component';
58
+ // if mode is component , we need to always show the step, that means the user can return to the previous step
59
+ const alwayShowSteps = isComponentMode ? true : !defaultUrl;
60
+ const onGetMeta = async () => {
61
+ setMeta(initMeta);
62
+ setError(null);
63
+ setLoading(true);
64
+ try {
65
+ const decoded = decodeURIComponent(url.trim());
66
+ // validate
67
+ try {
68
+ new URL(decoded); // eslint-disable-line no-new
69
+ } catch (_unused) {
70
+ throw new Error('Invalid URL');
71
+ }
72
+
73
+ // request
74
+ const {
75
+ meta: newer,
76
+ inStore,
77
+ registryUrl
78
+ } = await api.getBlockletMetaFromUrl({
79
+ input: {
80
+ url: decoded
81
+ }
82
+ });
83
+
84
+ // if mode is component, never check existing blocklet
85
+ if (isComponentMode) {
86
+ setMeta(newer);
87
+ } else {
88
+ const {
89
+ blocklet: existedBlocklet
90
+ } = await api.getBlocklet({
91
+ input: {
92
+ did: newer.did,
93
+ attachRuntimeInfo: false
94
+ }
95
+ });
96
+ if (existedBlocklet && _semver.default.gte(existedBlocklet.meta.version, newer.version)) {
97
+ setExistingMeta(existedBlocklet.meta);
98
+ setMeta(newer);
99
+ } else {
100
+ setMeta(newer);
101
+ }
102
+ }
103
+ setParams({
104
+ inStore,
105
+ registryUrl,
106
+ inputUrl: url.trim()
107
+ });
108
+ } catch (err) {
109
+ console.error(err);
110
+ const errMsg = "Blocklet Install failed: ".concat((0, _util2.formatError)(err));
111
+ setError(errMsg);
112
+ onError(err);
113
+ } finally {
114
+ setLoading(false);
115
+ }
116
+ };
117
+ const _onConfirm = async () => {
118
+ if (isComponentMode) {
119
+ onSuccess(_objectSpread({
120
+ meta
121
+ }, params));
122
+ } else {
123
+ await onInstall();
124
+ }
125
+ _onCancel();
126
+ };
127
+ const onInstall = async () => {
128
+ setLoading(true);
129
+ try {
130
+ await api.installBlocklet({
131
+ input: {
132
+ url: decodeURIComponent(url.trim())
133
+ }
134
+ });
135
+ onSuccess(_objectSpread({
136
+ meta
137
+ }, params));
138
+ } catch (err) {
139
+ const errMsg = "Blocklet Install failed: ".concat((0, _util2.formatError)(err));
140
+ setError(errMsg);
141
+ } finally {
142
+ setLoading(false);
143
+ }
144
+ };
145
+ (0, _react.useEffect)(() => {
146
+ if (defaultUrl) {
147
+ onGetMeta();
148
+ }
149
+ }, [defaultUrl]); // eslint-disable-line
150
+
151
+ const rows = [{
152
+ name: t('common.name'),
153
+ value: (0, _util.getDisplayName)({
154
+ meta
155
+ }, true)
156
+ }, {
157
+ name: t('common.version'),
158
+ value: meta.version
159
+ }, {
160
+ name: t('common.did'),
161
+ value: /*#__PURE__*/(0, _jsxRuntime.jsx)(_didAddress.default, {
162
+ did: meta.did
163
+ })
164
+ }, {
165
+ name: t('common.author'),
166
+ value: (0, _util2.formatPerson)(meta.author)
167
+ }, {
168
+ name: t('blocklet.dist.downloadLink'),
169
+ value: meta.dist.tarball
170
+ }];
171
+ const getStep1Body = () => {
172
+ if (loading) {
173
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
174
+ style: {
175
+ height: 200,
176
+ width: '100%',
177
+ display: 'flex',
178
+ alignItems: 'center',
179
+ justifyContent: 'center',
180
+ flexDirection: 'column'
181
+ },
182
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {})
183
+ });
184
+ }
185
+ if (meta.did) {
186
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
187
+ style: {
188
+ paddingLeft: '10%'
189
+ },
190
+ children: [rows.map(row => {
191
+ if (row.name === t('common.did')) {
192
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_InfoRow.default, {
193
+ valueComponent: "div",
194
+ nameWidth: 120,
195
+ name: row.name,
196
+ nameFormatter: () => t('common.did'),
197
+ children: row.value
198
+ }, row.name);
199
+ }
200
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_InfoRow.default, {
201
+ valueComponent: "div",
202
+ nameWidth: 120,
203
+ name: row.name,
204
+ children: row.value
205
+ }, row.name);
206
+ }), existingMeta && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.default, {
207
+ type: "error",
208
+ variant: "icon",
209
+ style: {
210
+ margin: '15px 0 0 -16px'
211
+ },
212
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
213
+ children: [t('blocklet.fromUrl.existTipPrefix'), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tag.default, {
214
+ content: existingMeta.version,
215
+ style: {
216
+ margin: '0 5px'
217
+ }
218
+ }), t('blocklet.fromUrl.existTipSuffix')]
219
+ })
220
+ })]
221
+ });
222
+ }
223
+ return null;
224
+ };
225
+ const steps = [{
226
+ label: t('blocklet.fromUrl.step0'),
227
+ body: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
228
+ component: "div",
229
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
230
+ label: t('blocklet.fromUrl.label'),
231
+ autoComplete: "off",
232
+ variant: "outlined",
233
+ name: "url",
234
+ "data-cy": "blocklet-url-input",
235
+ fullWidth: true,
236
+ autoFocus: true,
237
+ style: {
238
+ marginBottom: 32
239
+ },
240
+ margin: "dense",
241
+ helperText: t('blocklet.fromUrl.description'),
242
+ value: url,
243
+ onChange: e => {
244
+ setError(null);
245
+ setUrl(e.target.value);
246
+ },
247
+ disabled: loading,
248
+ onKeyPress: e => {
249
+ if (e.key === 'Enter') {
250
+ e.preventDefault();
251
+ onGetMeta();
252
+ setActiveStep(1);
253
+ }
254
+ }
255
+ })
256
+ }),
257
+ cancel: t('common.cancel'),
258
+ confirm: t('common.next'),
259
+ onCancel: _onCancel,
260
+ onConfirm: () => {
261
+ onGetMeta();
262
+ setActiveStep(1);
263
+ }
264
+ }, {
265
+ label: t('blocklet.fromUrl.step1'),
266
+ body: getStep1Body(),
267
+ cancel: alwayShowSteps ? t('common.pre') : t('common.cancel'),
268
+ confirm: (handleText === null || handleText === void 0 ? void 0 : handleText.confirm) || (existingMeta ? t('common.confirm') : t('blocklet.fromUrl.confirm')),
269
+ onCancel: () => {
270
+ if (alwayShowSteps) {
271
+ setActiveStep(s => s - 1);
272
+ } else {
273
+ _onCancel();
274
+ }
275
+ },
276
+ onConfirm: () => {
277
+ if (existingMeta) {
278
+ _onCancel();
279
+ } else {
280
+ _onConfirm();
281
+ }
282
+ }
283
+ }];
284
+ const step = steps[activeStep];
285
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Dialog.default, {
286
+ title: (handleText === null || handleText === void 0 ? void 0 : handleText.title) || t('blocklet.fromUrl.title'),
287
+ fullWidth: true,
288
+ maxWidth: "md",
289
+ onClose: () => step.onCancel(),
290
+ showCloseButton: activeStep === 0,
291
+ disableEscapeKeyDown: true,
292
+ open: true,
293
+ actions: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
294
+ children: [step.cancel && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
295
+ onClick: e => {
296
+ e.stopPropagation();
297
+ setError(null);
298
+ step.onCancel();
299
+ },
300
+ color: "inherit",
301
+ children: step.cancel || t('common.cancel')
302
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
303
+ onClick: e => {
304
+ e.stopPropagation();
305
+ step.onConfirm();
306
+ },
307
+ color: "primary",
308
+ "data-cy": "install-blocklet-next-step",
309
+ disabled: loading || !url || error,
310
+ variant: "contained",
311
+ autoFocus: true,
312
+ style: {
313
+ marginLeft: 8
314
+ },
315
+ children: [loading && activeStep === 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {
316
+ size: [16, 10]
317
+ }), step.confirm]
318
+ })]
319
+ }),
320
+ children: [alwayShowSteps && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Stepper.default, {
321
+ alternativeLabel: true,
322
+ activeStep: activeStep,
323
+ children: steps.map(_ref2 => {
324
+ let {
325
+ label
326
+ } = _ref2;
327
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Step.default, {
328
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_StepLabel.default, {
329
+ children: label
330
+ })
331
+ }, label);
332
+ })
333
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogContentText.default, {
334
+ component: "div",
335
+ style: {
336
+ marginTop: 24
337
+ },
338
+ children: step.body
339
+ }), !!error && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.default, {
340
+ type: "error",
341
+ style: {
342
+ width: '100%',
343
+ marginTop: 8
344
+ },
345
+ children: error
346
+ })]
347
+ });
348
+ }
349
+ InstallFromUrl.propTypes = {
350
+ defaultUrl: _propTypes.default.string,
351
+ onCancel: _propTypes.default.func.isRequired,
352
+ onSuccess: _propTypes.default.func.isRequired,
353
+ onError: _propTypes.default.func,
354
+ mode: _propTypes.default.oneOf(['install', 'component']),
355
+ handleText: _propTypes.default.object
356
+ };
357
+ InstallFromUrl.defaultProps = {
358
+ onError: () => {},
359
+ defaultUrl: '',
360
+ mode: 'install',
361
+ handleText: {}
362
+ };
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = BlockletOverview;
7
- var _react = require("react");
8
7
  var _styled = _interopRequireDefault(require("@emotion/styled"));
9
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
9
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
@@ -18,6 +17,7 @@ var _util = require("@blocklet/meta/lib/util");
18
17
  var _context = require("@arcblock/ux/lib/Locale/context");
19
18
  var _Empty = _interopRequireDefault(require("@arcblock/ux/lib/Empty"));
20
19
  var _blocklet = require("../contexts/blocklet");
20
+ var _node = require("../contexts/node");
21
21
  var _util2 = require("../util");
22
22
  var _didAddress = _interopRequireDefault(require("../did-address"));
23
23
  var _blockletSource = _interopRequireDefault(require("./blocklet-source"));
@@ -44,7 +44,7 @@ function DomainLink(_ref) {
44
44
  } = _ref;
45
45
  const {
46
46
  t
47
- } = (0, _react.useContext)(_context.LocaleContext);
47
+ } = (0, _context.useLocaleContext)();
48
48
  const {
49
49
  href,
50
50
  accessibility
@@ -113,7 +113,11 @@ function BlockletOverview(_ref2) {
113
113
  rest = _objectWithoutProperties(_ref2, _excluded);
114
114
  const {
115
115
  t
116
- } = (0, _react.useContext)(_context.LocaleContext);
116
+ } = (0, _context.useLocaleContext)();
117
+ const {
118
+ info: nodeInfo,
119
+ inService
120
+ } = (0, _node.useNodeContext)();
117
121
  const {
118
122
  loadingRuntimeInfo
119
123
  } = (0, _blocklet.useBlockletContext)();
@@ -183,21 +187,26 @@ function BlockletOverview(_ref2) {
183
187
  did: blocklet.settings.owner.did
184
188
  }) : '--'
185
189
  }].filter(Boolean);
190
+ if (inService) {
191
+ infoRows.push({
192
+ name: t('common.serverDid'),
193
+ value: /*#__PURE__*/(0, _jsxRuntime.jsx)(_didAddress.default, {
194
+ did: nodeInfo.did
195
+ })
196
+ }, {
197
+ name: t('common.serverVersion'),
198
+ value: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tag.default, {
199
+ children: nodeInfo.version
200
+ })
201
+ });
202
+ }
186
203
  const engineRows = getEngineRows(blocklet.engine, t);
187
204
  const renderRows = rows => rows.map(row => {
188
- if (row.name === t('common.did') || row.name === t('blocklet.appId')) {
189
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_InfoRow.default, {
190
- valueComponent: "div",
191
- nameWidth: 120,
192
- name: row.name,
193
- nameFormatter: () => row.name,
194
- children: row.value
195
- }, row.name);
196
- }
197
205
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_InfoRow.default, {
198
206
  valueComponent: "div",
199
207
  nameWidth: 120,
200
208
  name: row.name,
209
+ nameFormatter: () => row.name,
201
210
  children: row.value
202
211
  }, row.name);
203
212
  });
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = BlockletPreferences;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _reactIframe = _interopRequireDefault(require("react-iframe"));
11
+ var _urlJoin = _interopRequireDefault(require("url-join"));
12
+ var _constant = require("@abtnode/constant");
13
+ var _material = require("@mui/material");
14
+ var _TuneRounded = _interopRequireDefault(require("@mui/icons-material/TuneRounded"));
15
+ var _Key = _interopRequireDefault(require("@mui/icons-material/Key"));
16
+ var _SettingsOutlined = _interopRequireDefault(require("@mui/icons-material/SettingsOutlined"));
17
+ var _ChevronRight = _interopRequireDefault(require("@mui/icons-material/ChevronRight"));
18
+ var _ExpandMore = _interopRequireDefault(require("@mui/icons-material/ExpandMore"));
19
+ var _context = require("@arcblock/ux/lib/Locale/context");
20
+ var _Tabs = _interopRequireDefault(require("@arcblock/ux/lib/Tabs"));
21
+ var _util = require("@blocklet/meta/lib/util");
22
+ var _avatar = _interopRequireDefault(require("../avatar"));
23
+ var _configuration = _interopRequireDefault(require("../configuration"));
24
+ var _index = _interopRequireDefault(require("../access/index"));
25
+ var _node = require("../../contexts/node");
26
+ var _jsxRuntime = require("react/jsx-runtime");
27
+ var _templateObject;
28
+ const _excluded = ["blocklet", "onUpdate"];
29
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
30
+ 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); }
31
+ 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; }
32
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
33
+ 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; }
34
+ 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; }
35
+ 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; }
36
+ 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; }
37
+ 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; }
38
+ const addComponentTabs = function addComponentTabs(tabs, blocklet) {
39
+ let ancestors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
40
+ let depth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
41
+ const key = [...ancestors.map(x => x.meta.did), blocklet.meta.did].join('/');
42
+ tabs.push({
43
+ label: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
44
+ pl: Math.max(1, depth - 1) * 2,
45
+ display: "flex",
46
+ alignItems: "center",
47
+ justifyContent: "flex-start",
48
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_avatar.default, {
49
+ size: 24,
50
+ blocklet: blocklet,
51
+ ancestors: ancestors
52
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
53
+ ml: "16px",
54
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
55
+ style: {
56
+ color: '#222'
57
+ },
58
+ children: (0, _util.getDisplayName)(blocklet, true)
59
+ })
60
+ })]
61
+ }, key),
62
+ value: key
63
+ });
64
+ if (blocklet.children.length > 0) {
65
+ blocklet.children.forEach(x => {
66
+ addComponentTabs(tabs, x, [...ancestors, blocklet], depth + 1);
67
+ });
68
+ }
69
+ };
70
+ function BlockletPreferences(_ref) {
71
+ let {
72
+ blocklet,
73
+ onUpdate
74
+ } = _ref,
75
+ rest = _objectWithoutProperties(_ref, _excluded);
76
+ const {
77
+ t
78
+ } = (0, _react.useContext)(_context.LocaleContext);
79
+ const {
80
+ info,
81
+ inService
82
+ } = (0, _node.useNodeContext)();
83
+ const [current, setCurrent] = (0, _react.useState)('general');
84
+ const [expandPref, setExpandPref] = (0, _react.useState)(true);
85
+ const tabs = [{
86
+ label: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
87
+ display: "flex",
88
+ alignItems: "center",
89
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_TuneRounded.default, {
90
+ sx: {
91
+ fontSize: 24
92
+ }
93
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
94
+ ml: "16px",
95
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
96
+ style: {
97
+ color: '#222'
98
+ },
99
+ children: t('common.general')
100
+ })
101
+ })]
102
+ }, "general"),
103
+ value: 'general'
104
+ }, {
105
+ label: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
106
+ display: "flex",
107
+ alignItems: "center",
108
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Key.default, {
109
+ sx: {
110
+ fontSize: 24
111
+ }
112
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
113
+ ml: "16px",
114
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
115
+ style: {
116
+ color: '#222'
117
+ },
118
+ children: t('common.access')
119
+ })
120
+ })]
121
+ }, "access"),
122
+ value: 'access'
123
+ }, {
124
+ label: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
125
+ display: "flex",
126
+ alignItems: "center",
127
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
128
+ ml: -2,
129
+ style: {
130
+ transform: 'translateY(2px)'
131
+ },
132
+ children: expandPref ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ExpandMore.default, {
133
+ fontSize: "inherit"
134
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChevronRight.default, {
135
+ fontSize: "inherit"
136
+ })
137
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_SettingsOutlined.default, {
138
+ sx: {
139
+ fontSize: 24
140
+ }
141
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
142
+ ml: "16px",
143
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
144
+ style: {
145
+ color: '#222'
146
+ },
147
+ children: t('common.preferences')
148
+ })
149
+ })]
150
+ }, "preference"),
151
+ value: 'preference'
152
+ }];
153
+ if (expandPref) {
154
+ addComponentTabs(tabs, blocklet);
155
+ }
156
+ const onTabChange = x => {
157
+ if (x === 'preference') {
158
+ setExpandPref(!expandPref);
159
+ } else {
160
+ setCurrent(x);
161
+ }
162
+ };
163
+ let content = null;
164
+ if (current === 'general') {
165
+ content = /*#__PURE__*/(0, _jsxRuntime.jsx)(_configuration.default, {
166
+ blocklet: blocklet,
167
+ onUpdate: onUpdate
168
+ });
169
+ } else if (current === 'access') {
170
+ content = /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.default, {});
171
+ } else {
172
+ // eslint-disable-next-line no-nested-ternary
173
+ const pathPrefix = inService ? _constant.WELLKNOWN_SERVICE_PATH_PREFIX : process.env.NODE_ENV === 'production' ? info.routing.adminPath : '';
174
+ const searchParams = new URLSearchParams();
175
+ if (!inService) {
176
+ searchParams.set('authKey', '__sst');
177
+ }
178
+ searchParams.set('schemaKey', (0, _urlJoin.default)(window.location.origin, pathPrefix, "/api/preferences?id=".concat(encodeURIComponent(current))));
179
+ content = /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIframe.default, {
180
+ url: "".concat((0, _urlJoin.default)(window.location.origin, pathPrefix, '/hosted/form-collector/'), "?").concat(searchParams.toString()),
181
+ width: "100%",
182
+ height: "100%",
183
+ frameBorder: 0,
184
+ styles: {
185
+ border: 0
186
+ }
187
+ });
188
+ }
189
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Div, _objectSpread(_objectSpread({}, rest), {}, {
190
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Grid, {
191
+ container: true,
192
+ spacing: 4,
193
+ columns: 24,
194
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Grid, {
195
+ item: true,
196
+ sm: 7,
197
+ md: 5,
198
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tabs.default, {
199
+ tabs: tabs,
200
+ current: current,
201
+ orientation: "vertical",
202
+ onChange: onTabChange,
203
+ sx: {
204
+ borderRight: 1,
205
+ height: '100%',
206
+ borderColor: 'divider'
207
+ }
208
+ })
209
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Grid, {
210
+ item: true,
211
+ sm: 17,
212
+ md: 19,
213
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
214
+ style: {
215
+ minHeight: '66vh',
216
+ height: '100%',
217
+ position: 'relative',
218
+ overflow: 'hidden'
219
+ },
220
+ children: content
221
+ })
222
+ })]
223
+ })
224
+ }));
225
+ }
226
+ BlockletPreferences.propTypes = {
227
+ blocklet: _propTypes.default.object.isRequired,
228
+ onUpdate: _propTypes.default.func
229
+ };
230
+ BlockletPreferences.defaultProps = {
231
+ onUpdate: () => {}
232
+ };
233
+ const Div = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .MuiTab-root {\n text-align: left;\n align-items: flex-start;\n font-weight: normal;\n }\n .Mui-selected {\n font-weight: bold;\n }\n"])));