@abtnode/ux 1.8.25 → 1.8.27

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 (62) hide show
  1. package/lib/actions.js +137 -0
  2. package/lib/blocklet/actions.js +501 -0
  3. package/lib/blocklet/audit-logs.js +226 -0
  4. package/lib/blocklet/avatar.js +123 -0
  5. package/lib/blocklet/blocklet-source.js +69 -0
  6. package/lib/blocklet/component/configuration.js +150 -0
  7. package/lib/blocklet/component/delete.js +138 -0
  8. package/lib/blocklet/component/environment.js +334 -0
  9. package/lib/blocklet/component/index.js +837 -0
  10. package/lib/blocklet/component/setting.js +174 -0
  11. package/lib/blocklet/configuration.js +531 -0
  12. package/lib/blocklet/disk-info.js +115 -0
  13. package/lib/blocklet/icons.js +36 -0
  14. package/lib/blocklet/log.js +70 -0
  15. package/lib/blocklet/mode.js +47 -0
  16. package/lib/blocklet/overview.js +218 -0
  17. package/lib/blocklet/runtime-info.js +111 -0
  18. package/lib/blocklet/status.js +125 -0
  19. package/lib/blocklet/util.js +141 -0
  20. package/lib/blocklet/version.js +216 -0
  21. package/lib/click-to-copy.js +51 -0
  22. package/lib/confirm.js +175 -0
  23. package/lib/contexts/audit-log.js +155 -0
  24. package/lib/contexts/deleting-blocklets.js +91 -0
  25. package/lib/contexts/node.js +34 -0
  26. package/lib/contexts/session.js +22 -0
  27. package/lib/contexts/team.js +22 -0
  28. package/lib/did-address.js +95 -0
  29. package/lib/dot.js +25 -0
  30. package/lib/hooks/mobile-width.js +24 -0
  31. package/lib/icons/long-arrow.svg +5 -0
  32. package/lib/locales/en.js +1046 -38
  33. package/lib/locales/zh.js +1049 -36
  34. package/lib/logs/clock.js +25 -0
  35. package/lib/logs/log-terminal.js +198 -0
  36. package/lib/passport-tag.js +58 -0
  37. package/lib/permission.js +84 -0
  38. package/lib/relative-time.js +74 -0
  39. package/lib/table-icons.js +59 -0
  40. package/lib/table.js +19 -0
  41. package/lib/tag.js +48 -0
  42. package/lib/team/members/actions.js +115 -0
  43. package/lib/team/members/index.js +544 -0
  44. package/lib/team/members/invitations.js +229 -0
  45. package/lib/team/members/invite-member.js +241 -0
  46. package/lib/team/members/issue-passport.js +178 -0
  47. package/lib/team/members/member.js +336 -0
  48. package/lib/team/members/passport-issuances.js +181 -0
  49. package/lib/team/members/passports.js +377 -0
  50. package/lib/team/members/toggle-user-approval.js +154 -0
  51. package/lib/team/members/transfer-node.js +295 -0
  52. package/lib/team/members/util.js +27 -0
  53. package/lib/team/passports/detail.js +304 -0
  54. package/lib/team/passports/index.js +256 -0
  55. package/lib/team/passports/mutate-role.js +230 -0
  56. package/lib/team/passports/trusted-issuer.js +339 -0
  57. package/lib/team/passports/trusted-issuers.js +284 -0
  58. package/lib/team/search-input.js +51 -0
  59. package/lib/team/styles/dialog.js +19 -0
  60. package/lib/team/styles/list-header.js +19 -0
  61. package/lib/util/index.js +642 -6
  62. package/package.json +32 -9
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = WrappedAuditLogs;
7
+
8
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
9
+
10
+ var _reactRouterDom = require("react-router-dom");
11
+
12
+ var _reactMarkdownPreview = _interopRequireDefault(require("@uiw/react-markdown-preview"));
13
+
14
+ var _Avatar = _interopRequireDefault(require("@arcblock/did-connect/lib/Avatar"));
15
+
16
+ var _Spinner = _interopRequireDefault(require("@arcblock/ux/lib/Spinner"));
17
+
18
+ var _Empty = _interopRequireDefault(require("@arcblock/ux/lib/Empty"));
19
+
20
+ var _context = require("@arcblock/ux/lib/Locale/context");
21
+
22
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
23
+
24
+ var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
25
+
26
+ var _Pagination = _interopRequireDefault(require("@mui/lab/Pagination"));
27
+
28
+ var _MenuItem = _interopRequireDefault(require("@mui/material/MenuItem"));
29
+
30
+ var _Select = _interopRequireDefault(require("@mui/material/Select"));
31
+
32
+ var _InputLabel = _interopRequireDefault(require("@mui/material/InputLabel"));
33
+
34
+ var _FormControl = _interopRequireDefault(require("@mui/material/FormControl"));
35
+
36
+ var _auditLog = require("../contexts/audit-log");
37
+
38
+ var _node = require("../contexts/node");
39
+
40
+ var _relativeTime = _interopRequireDefault(require("../relative-time"));
41
+
42
+ var _jsxRuntime = require("react/jsx-runtime");
43
+
44
+ var _templateObject;
45
+
46
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
47
+
48
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
49
+
50
+ const getUserLink = _ref => {
51
+ let {
52
+ log,
53
+ info,
54
+ inService
55
+ } = _ref;
56
+
57
+ if (inService) {
58
+ // TODO
59
+ return "/members?did=".concat(log.actor.did);
60
+ }
61
+
62
+ if (log.scope === info.did) {
63
+ return "/team/members?did=".concat(log.actor.did);
64
+ }
65
+
66
+ return "/blocklets/".concat(log.scope, "/members?did=").concat(log.actor.did);
67
+ };
68
+
69
+ function AuditLog(_ref2) {
70
+ var _log$env$os, _log$env$browser;
71
+
72
+ let {
73
+ log
74
+ } = _ref2;
75
+ const {
76
+ inService,
77
+ info
78
+ } = (0, _node.useNodeContext)();
79
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
80
+ className: "log-entry",
81
+ "data-cy": "log-entry",
82
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
83
+ className: "log-author",
84
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Avatar.default, {
85
+ did: log.actor.did,
86
+ size: 36,
87
+ shape: "circle"
88
+ })
89
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
90
+ className: "log-body",
91
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
92
+ className: "log-header",
93
+ color: "textSecondary",
94
+ component: "p",
95
+ gutterBottom: true,
96
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactRouterDom.Link, {
97
+ to: getUserLink({
98
+ log,
99
+ inService,
100
+ info
101
+ }),
102
+ target: "_blank",
103
+ children: [log.actor.fullName, log.actor.role ? "(".concat(log.actor.role, ")") : '']
104
+ }), ' ', "- ", log.action]
105
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
106
+ className: "log-content",
107
+ color: "textPrimary",
108
+ component: "div",
109
+ "data-color-mode": "light",
110
+ gutterBottom: true,
111
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactMarkdownPreview.default, {
112
+ source: log.content,
113
+ linkTarget: "_blank"
114
+ })
115
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
116
+ className: "log-meta",
117
+ variant: "body2",
118
+ children: [!!log.ip && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
119
+ component: "span",
120
+ color: "textSecondary",
121
+ children: "IP: ".concat(log.ip)
122
+ }), !!((_log$env$os = log.env.os) !== null && _log$env$os !== void 0 && _log$env$os.name) && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
123
+ component: "span",
124
+ color: "textSecondary",
125
+ children: [log.env.os.name, "(", log.env.os.version, ")"]
126
+ }), !!((_log$env$browser = log.env.browser) !== null && _log$env$browser !== void 0 && _log$env$browser.name) && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
127
+ component: "span",
128
+ color: "textSecondary",
129
+ children: [log.env.browser.name, "(", log.env.browser.version, ")"]
130
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
131
+ component: "span",
132
+ color: "textSecondary",
133
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_relativeTime.default, {
134
+ value: log.createdAt
135
+ })
136
+ })]
137
+ })]
138
+ })]
139
+ });
140
+ }
141
+
142
+ function AuditLogs() {
143
+ const {
144
+ t
145
+ } = (0, _context.useLocaleContext)();
146
+ const {
147
+ data,
148
+ loading,
149
+ paging,
150
+ filter,
151
+ categories,
152
+ setCategory,
153
+ fetch
154
+ } = (0, _auditLog.useAuditLogContext)();
155
+
156
+ if (loading) {
157
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
158
+ style: {
159
+ textAlign: 'center',
160
+ marginTop: '50px'
161
+ },
162
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {})
163
+ });
164
+ }
165
+
166
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Div, {
167
+ "data-cy": "audit-logs",
168
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
169
+ className: "log-controls",
170
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_FormControl.default, {
171
+ style: {
172
+ width: '240px'
173
+ },
174
+ variant: "outlined",
175
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_InputLabel.default, {
176
+ children: t('common.filter')
177
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Select.default, {
178
+ "data-cy": "filter-by-category-trigger",
179
+ value: filter.category,
180
+ onChange: e => setCategory(e.target.value),
181
+ fullWidth: true,
182
+ label: t('common.category'),
183
+ disabled: loading,
184
+ children: categories.map(x => /*#__PURE__*/(0, _jsxRuntime.jsx)(_MenuItem.default, {
185
+ value: x.value,
186
+ "data-cy": "filter-by-category-".concat(x.value),
187
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
188
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
189
+ children: x.label
190
+ })
191
+ })
192
+ }, x.label))
193
+ })]
194
+ })
195
+ }), data.length === 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Empty.default, {
196
+ children: t('common.empty')
197
+ }), data.length > 0 && data.map(x => /*#__PURE__*/(0, _jsxRuntime.jsx)(AuditLog, {
198
+ log: x
199
+ }, x.id)), paging.pageCount > 1 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pagination.default, {
200
+ page: paging.page,
201
+ count: paging.pageCount,
202
+ onChange: (e, page) => fetch({
203
+ page
204
+ }),
205
+ showFirstButton: true,
206
+ showLastButton: true
207
+ })]
208
+ });
209
+ }
210
+
211
+ function WrappedAuditLogs(_ref3) {
212
+ let {
213
+ scope
214
+ } = _ref3;
215
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_auditLog.AuditLogProvider, {
216
+ scope: scope,
217
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(AuditLogs, {})
218
+ });
219
+ }
220
+
221
+ const Div = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .log-controls {\n display: flex;\n justify-content: space-between;\n }\n .log-entry {\n display: flex;\n margin: 16px 0;\n\n .log-author {\n margin-right: 8px;\n }\n\n .log-body {\n flex: 1;\n\n a {\n color: ", ";\n }\n\n .log-header {\n }\n\n .log-content {\n p {\n margin-bottom: 4px;\n }\n ul,\n ol {\n padding-left: 2rem;\n }\n li {\n list-style-type: disc;\n }\n }\n\n .log-meta {\n margin-top: 4px;\n\n span {\n font-size: 0.8rem;\n display: inline-block;\n margin-right: 8px;\n padding-right: 8px;\n border-right: 1px solid #ccc;\n\n &:last-of-type {\n border-right: none;\n }\n }\n }\n }\n }\n"])), _ref4 => {
222
+ let {
223
+ theme
224
+ } = _ref4;
225
+ return theme.palette.primary.main;
226
+ });
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = BlockletAvatar;
7
+
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+
10
+ var _urlJoin = _interopRequireDefault(require("url-join"));
11
+
12
+ var _Avatar = _interopRequireDefault(require("@mui/material/Avatar"));
13
+
14
+ var _Avatar2 = _interopRequireDefault(require("@arcblock/did-connect/lib/Avatar"));
15
+
16
+ var _constant = require("@abtnode/constant");
17
+
18
+ var _node = require("../contexts/node");
19
+
20
+ var _util = require("../util");
21
+
22
+ var _jsxRuntime = require("react/jsx-runtime");
23
+
24
+ const _excluded = ["blocklet", "style", "size", "ancestors"];
25
+
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
+
28
+ 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; }
29
+
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
+
32
+ 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; }
33
+
34
+ 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; }
35
+
36
+ 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; }
37
+
38
+ const getDeployedFrom = (blocklet, node) => {
39
+ let {
40
+ deployedFrom
41
+ } = blocklet || {};
42
+
43
+ if (!deployedFrom && blocklet.source === 'registry') {
44
+ deployedFrom = node.info.blockletRegistry;
45
+ }
46
+
47
+ return deployedFrom;
48
+ };
49
+
50
+ function BlockletAvatar(_ref) {
51
+ var _blocklet$meta;
52
+
53
+ let {
54
+ blocklet,
55
+ style,
56
+ size,
57
+ ancestors
58
+ } = _ref,
59
+ rest = _objectWithoutProperties(_ref, _excluded);
60
+
61
+ const node = (0, _node.useNodeContext)();
62
+ const {
63
+ inService
64
+ } = node;
65
+ let logoUrl = inService ? (0, _urlJoin.default)(_util.APP_PREFIX, _constant.WELLKNOWN_SERVICE_PATH_PREFIX, "/blocklet/logo?version=".concat(blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta = blocklet.meta) === null || _blocklet$meta === void 0 ? void 0 : _blocklet$meta.version)) : (0, _urlJoin.default)(node.prefix, 'blocklet.png');
66
+ const {
67
+ variant
68
+ } = rest;
69
+
70
+ if (!inService) {
71
+ const deployedFrom = getDeployedFrom(blocklet, node);
72
+
73
+ if (blocklet.source === 'registry' && blocklet.meta.logo) {
74
+ logoUrl = (0, _urlJoin.default)(deployedFrom, (0, _util.formatRegistryLogoPath)(blocklet.meta.bundleDid, blocklet.meta.logo));
75
+ } else {
76
+ const prefix = window.env.apiPrefix || '/';
77
+ logoUrl = (0, _urlJoin.default)(prefix, "/blocklet/logo".concat(ancestors.map(x => "/".concat(x.meta.did)).join(''), "/").concat(blocklet.meta.did));
78
+ }
79
+ }
80
+
81
+ const setFallBackUrl = inService ? () => {} : ev => {
82
+ ev.target.src = "".concat(node.prefix, "/blocklet.png");
83
+ };
84
+ let imgEle = /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
85
+ src: logoUrl,
86
+ onError: setFallBackUrl,
87
+ alt: blocklet.meta.name,
88
+ style: {
89
+ width: size
90
+ }
91
+ });
92
+
93
+ if (!blocklet.meta.logo) {
94
+ imgEle = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Avatar2.default, {
95
+ did: blocklet.meta.did || '',
96
+ responsive: true
97
+ });
98
+ }
99
+
100
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Avatar.default, _objectSpread(_objectSpread({
101
+ variant: variant || 'square',
102
+ style: Object.assign({
103
+ backgroundColor: 'transparent',
104
+ width: size,
105
+ height: size,
106
+ borderRadius: 10
107
+ }, style)
108
+ }, rest), {}, {
109
+ children: imgEle
110
+ }));
111
+ }
112
+
113
+ BlockletAvatar.propTypes = {
114
+ blocklet: _propTypes.default.object.isRequired,
115
+ style: _propTypes.default.object,
116
+ size: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
117
+ ancestors: _propTypes.default.array
118
+ };
119
+ BlockletAvatar.defaultProps = {
120
+ style: {},
121
+ size: 40,
122
+ ancestors: []
123
+ };
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = BlockletSource;
7
+
8
+ var _react = require("react");
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _urlJoin = _interopRequireDefault(require("url-join"));
13
+
14
+ var _toUpper = _interopRequireDefault(require("lodash/toUpper"));
15
+
16
+ var _Tag = _interopRequireDefault(require("@arcblock/ux/lib/Tag"));
17
+
18
+ var _context = require("@arcblock/ux/lib/Locale/context");
19
+
20
+ var _Link = _interopRequireDefault(require("@mui/material/Link"));
21
+
22
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
23
+
24
+ var _jsxRuntime = require("react/jsx-runtime");
25
+
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
+
28
+ function BlockletSource(_ref) {
29
+ var _blocklet$meta;
30
+
31
+ let {
32
+ sourceInfo,
33
+ blocklet
34
+ } = _ref;
35
+ const {
36
+ t
37
+ } = (0, _react.useContext)(_context.LocaleContext);
38
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
39
+ display: "flex",
40
+ alignItems: "center",
41
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Tag.default, {
42
+ type: "success",
43
+ children: (0, _toUpper.default)(sourceInfo.source)
44
+ }, "source"), sourceInfo.source === 'registry' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Link.default, {
45
+ href: (0, _urlJoin.default)(sourceInfo.deployedFrom, 'blocklets', (blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta = blocklet.meta) === null || _blocklet$meta === void 0 ? void 0 : _blocklet$meta.bundleDid) || ''),
46
+ target: "_blank",
47
+ className: "page-link",
48
+ underline: "hover",
49
+ style: {
50
+ display: 'flex',
51
+ alignItems: 'center',
52
+ marginLeft: 8
53
+ },
54
+ children: t('blocklet.overview.viewInStore')
55
+ })]
56
+ });
57
+ }
58
+
59
+ BlockletSource.propTypes = {
60
+ sourceInfo: _propTypes.default.shape({
61
+ source: _propTypes.default.string,
62
+ deployedFrom: _propTypes.default.string
63
+ }),
64
+ blocklet: _propTypes.default.object
65
+ };
66
+ BlockletSource.defaultProps = {
67
+ sourceInfo: {},
68
+ blocklet: {}
69
+ };
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = ComponentConfiguration;
7
+
8
+ var _react = require("react");
9
+
10
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
15
+
16
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
17
+
18
+ var _Edit = _interopRequireDefault(require("@mui/icons-material/Edit"));
19
+
20
+ var _util = require("@blocklet/meta/lib/util");
21
+
22
+ var _context = require("@arcblock/ux/lib/Locale/context");
23
+
24
+ var _Dialog = _interopRequireDefault(require("@arcblock/ux/lib/Dialog"));
25
+
26
+ var _Tabs = _interopRequireDefault(require("@arcblock/ux/lib/Tabs"));
27
+
28
+ var _util2 = require("../../util");
29
+
30
+ var _environment = _interopRequireDefault(require("./environment"));
31
+
32
+ var _setting = _interopRequireDefault(require("./setting"));
33
+
34
+ var _jsxRuntime = require("react/jsx-runtime");
35
+
36
+ var _templateObject;
37
+
38
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
39
+
40
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
41
+
42
+ function ComponentConfiguration(_ref) {
43
+ let {
44
+ blocklet,
45
+ ancestors,
46
+ children
47
+ } = _ref;
48
+ const [showDialog, setShowDialog] = (0, _react.useState)('');
49
+ const {
50
+ t
51
+ } = (0, _react.useContext)(_context.LocaleContext);
52
+ const isRoot = !ancestors.map(x => x.meta.did)[0];
53
+ const isDynamic = blocklet.dynamic;
54
+ const [tab, setTab] = (0, _react.useState)('settings');
55
+ const name = ancestors.concat(blocklet).map(x => (0, _util.getDisplayName)(x, true)).join(' / ');
56
+
57
+ if ((0, _util2.isInstalling)(blocklet.status)) {
58
+ return null;
59
+ }
60
+
61
+ if (blocklet.status === 'unknown' && (0, _util2.isInstalling)(blocklet.status)) {
62
+ return null;
63
+ }
64
+
65
+ const onClose = () => {
66
+ setShowDialog(false);
67
+ };
68
+
69
+ const onOpen = e => {
70
+ e.stopPropagation(); // eslint-disable-next-line no-unused-expressions
71
+
72
+ setShowDialog(true);
73
+ };
74
+
75
+ const tabConfigs = {
76
+ settings: {
77
+ label: t('blocklet.component.setting'),
78
+ value: 'settings',
79
+ component: /*#__PURE__*/(0, _jsxRuntime.jsx)(_setting.default, {
80
+ blocklet: blocklet,
81
+ ancestors: ancestors
82
+ })
83
+ },
84
+ environments: {
85
+ label: t('common.environment'),
86
+ value: 'environments',
87
+ component: /*#__PURE__*/(0, _jsxRuntime.jsx)(_environment.default, {
88
+ blocklet: blocklet,
89
+ ancestors: ancestors
90
+ })
91
+ }
92
+ };
93
+ const tabs = Object.values(tabConfigs).map(_ref2 => {
94
+ let {
95
+ label,
96
+ value
97
+ } = _ref2;
98
+ return {
99
+ label,
100
+ value
101
+ };
102
+ });
103
+
104
+ const onTabChange = newTab => {
105
+ setTab(newTab);
106
+ };
107
+
108
+ const tabConfig = tabConfigs[tab] || tabConfigs.settings;
109
+ return [typeof children === 'function' ? children({
110
+ open: onOpen
111
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
112
+ onClick: onOpen,
113
+ "data-cy": "action-config-component",
114
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Edit.default, {})
115
+ }), showDialog && /*#__PURE__*/(0, _jsxRuntime.jsx)(StyledDialog, {
116
+ open: true,
117
+ fullWidth: true,
118
+ maxWidth: "md",
119
+ title: name,
120
+ onClose: onClose,
121
+ PaperProps: {
122
+ style: {
123
+ minHeight: 'auto'
124
+ }
125
+ },
126
+ children: isRoot || !isDynamic ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_environment.default, {
127
+ blocklet: blocklet,
128
+ ancestors: ancestors
129
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
130
+ mt: 1,
131
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Tabs.default, {
132
+ tabs: tabs,
133
+ current: tab,
134
+ onChange: onTabChange,
135
+ scrollButtons: "auto"
136
+ }), tabConfig.component]
137
+ })
138
+ })];
139
+ }
140
+
141
+ ComponentConfiguration.propTypes = {
142
+ blocklet: _propTypes.default.object.isRequired,
143
+ ancestors: _propTypes.default.array,
144
+ children: _propTypes.default.any
145
+ };
146
+ ComponentConfiguration.defaultProps = {
147
+ ancestors: [],
148
+ children: null
149
+ };
150
+ 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"])));