@abtnode/ux 1.15.17 → 1.16.0-beta-b16cb035

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 (154) hide show
  1. package/lib/actions.js +111 -0
  2. package/lib/blocklet/access/config-access.js +303 -0
  3. package/lib/blocklet/access/index.js +221 -0
  4. package/lib/blocklet/actions.js +438 -0
  5. package/lib/blocklet/add-cert.js +191 -0
  6. package/lib/blocklet/agreement-app.js +30 -0
  7. package/lib/blocklet/agreement.js +72 -0
  8. package/lib/blocklet/app-avatar.js +74 -0
  9. package/lib/blocklet/audit-logs.js +197 -0
  10. package/lib/blocklet/blocklet-source.js +56 -0
  11. package/lib/blocklet/bundle-avatar.js +80 -0
  12. package/lib/blocklet/component/add.js +1063 -0
  13. package/lib/blocklet/component/configuration.js +124 -0
  14. package/lib/blocklet/component/delete.js +117 -0
  15. package/lib/blocklet/component/environment.js +289 -0
  16. package/lib/blocklet/component/expiration.js +53 -0
  17. package/lib/blocklet/component/index.js +804 -0
  18. package/lib/blocklet/component/line.js +28 -0
  19. package/lib/blocklet/component/navigation/locale-tabs.js +218 -0
  20. package/lib/blocklet/component/navigation/navigation-actions.js +120 -0
  21. package/lib/blocklet/component/navigation/navigation-dialog.js +620 -0
  22. package/lib/blocklet/component/navigation/navigation-preview.js +102 -0
  23. package/lib/blocklet/component/navigation/simple-select.js +131 -0
  24. package/lib/blocklet/component/select-store.js +153 -0
  25. package/lib/blocklet/component/setting.js +151 -0
  26. package/lib/blocklet/component/sortable-tree.js +138 -0
  27. package/lib/blocklet/component/space-gateway-selector.js +174 -0
  28. package/lib/blocklet/component/store-blocklet-list.js +205 -0
  29. package/lib/blocklet/config-navigation.js +344 -0
  30. package/lib/blocklet/configuration.js +574 -0
  31. package/lib/blocklet/disk-info.js +91 -0
  32. package/lib/blocklet/icons.js +26 -0
  33. package/lib/blocklet/install-from-url.js +347 -0
  34. package/lib/blocklet/log.js +62 -0
  35. package/lib/blocklet/migration.js +153 -0
  36. package/lib/blocklet/mode.js +35 -0
  37. package/lib/blocklet/monitor.js +186 -0
  38. package/lib/blocklet/overview.js +236 -0
  39. package/lib/blocklet/preferences/app-sk.js +131 -0
  40. package/lib/blocklet/preferences/index.js +238 -0
  41. package/lib/blocklet/preferences/wallet-type.js +107 -0
  42. package/lib/blocklet/purchase/common.js +103 -0
  43. package/lib/blocklet/purchase/component-purchase.js +253 -0
  44. package/lib/blocklet/purchase/index.js +13 -0
  45. package/lib/blocklet/router/action/add-domain-alias.js +173 -0
  46. package/lib/blocklet/router/action/add-rule.js +204 -0
  47. package/lib/blocklet/router/action/config-routing-rule.js +129 -0
  48. package/lib/blocklet/router/action/delete-domain-alias.js +107 -0
  49. package/lib/blocklet/router/action/delete-rule.js +114 -0
  50. package/lib/blocklet/router/action/update-rule.js +203 -0
  51. package/lib/blocklet/router/domain-actions.js +71 -0
  52. package/lib/blocklet/router/domain-status.js +96 -0
  53. package/lib/blocklet/router/rule-actions.js +77 -0
  54. package/lib/blocklet/router/rule-list.js +181 -0
  55. package/lib/blocklet/router/util.js +146 -0
  56. package/lib/blocklet/runtime-info.js +87 -0
  57. package/lib/blocklet/status.js +105 -0
  58. package/lib/blocklet/storage.js +322 -0
  59. package/lib/blocklet/types.js +25 -0
  60. package/lib/blocklet/util.js +213 -0
  61. package/lib/blocklet/version.js +156 -0
  62. package/lib/card-selector.js +109 -0
  63. package/lib/certificate.js +110 -0
  64. package/lib/click-to-copy.js +38 -0
  65. package/lib/confirm.js +149 -0
  66. package/lib/contexts/audit-log.js +141 -0
  67. package/lib/contexts/blocklet.js +19 -0
  68. package/lib/contexts/deleting-blocklets.js +78 -0
  69. package/lib/contexts/node.js +30 -0
  70. package/lib/contexts/session.js +20 -0
  71. package/lib/contexts/team.js +19 -0
  72. package/lib/delete-confirm.js +127 -0
  73. package/lib/did-address.js +77 -0
  74. package/lib/dot.js +18 -0
  75. package/lib/form/form-text-input.js +266 -0
  76. package/lib/form/form-wrapper.js +13 -0
  77. package/lib/form/required.js +13 -0
  78. package/lib/hooks/blocklet.js +231 -0
  79. package/lib/hooks/mobile-width.js +19 -0
  80. package/lib/hooks/url-evaluation.js +168 -0
  81. package/lib/hooks/use-app-logo.js +25 -0
  82. package/lib/hooks/use-bundle-logo.js +36 -0
  83. package/lib/hooks/use-navigation.js +355 -0
  84. package/lib/hooks/use-passport-id.js +21 -0
  85. package/lib/hooks/use-subscription.js +28 -0
  86. package/lib/icons/long-arrow.svg +5 -0
  87. package/lib/index.js +0 -3
  88. package/lib/invitation/invitation-app.js +51 -0
  89. package/lib/invitation/invitation-login.js +47 -0
  90. package/lib/invitation/invitation-passport.js +130 -0
  91. package/lib/invitation/invitation-receive.js +108 -0
  92. package/lib/invitation/invitation-success.js +82 -0
  93. package/lib/invitation/invitation-user.js +79 -0
  94. package/lib/invitation/invitation.js +80 -0
  95. package/lib/issue-passport.js +84 -84
  96. package/lib/launch-blocklet/content-layout.js +33 -0
  97. package/lib/launch-blocklet/page-header.js +38 -0
  98. package/lib/layout/addon.js +100 -0
  99. package/lib/layout/feedback.js +55 -0
  100. package/lib/locales/en.js +1221 -10
  101. package/lib/locales/index.js +3 -4
  102. package/lib/locales/zh.js +1232 -15
  103. package/lib/logs/clock.js +19 -0
  104. package/lib/logs/download.js +139 -0
  105. package/lib/logs/log-terminal.js +183 -0
  106. package/lib/lost-passport.js +191 -195
  107. package/lib/monitor/card.js +73 -0
  108. package/lib/monitor/cpu.js +109 -0
  109. package/lib/monitor/disk.js +122 -0
  110. package/lib/monitor/memory.js +144 -0
  111. package/lib/nav-logo.js +120 -0
  112. package/lib/passport-tag.js +43 -0
  113. package/lib/permission.js +70 -0
  114. package/lib/relative-time.js +61 -0
  115. package/lib/schema-form/color-input.js +105 -0
  116. package/lib/schema-form/common-prop-types.js +21 -0
  117. package/lib/schema-form/index.js +229 -0
  118. package/lib/schema-form/passport-input.js +66 -0
  119. package/lib/schema-form/text-input.js +72 -0
  120. package/lib/store/add.js +185 -0
  121. package/lib/store/delete.js +102 -0
  122. package/lib/store/item.js +84 -0
  123. package/lib/table-icons.js +42 -0
  124. package/lib/table.js +13 -0
  125. package/lib/tag.js +37 -0
  126. package/lib/team/members/actions.js +99 -0
  127. package/lib/team/members/index.js +503 -0
  128. package/lib/team/members/invitations.js +196 -0
  129. package/lib/team/members/invite-member.js +212 -0
  130. package/lib/team/members/issue-passport.js +155 -0
  131. package/lib/team/members/member.js +300 -0
  132. package/lib/team/members/passport-issuances.js +154 -0
  133. package/lib/team/members/passports.js +336 -0
  134. package/lib/team/members/toggle-user-approval.js +128 -0
  135. package/lib/team/members/transfer-node.js +262 -0
  136. package/lib/team/members/util.js +20 -0
  137. package/lib/team/passports/color.js +132 -0
  138. package/lib/team/passports/detail.js +271 -0
  139. package/lib/team/passports/index.js +233 -0
  140. package/lib/team/passports/mutate-role.js +204 -0
  141. package/lib/team/passports/trusted-issuer.js +297 -0
  142. package/lib/team/passports/trusted-issuers.js +240 -0
  143. package/lib/team/search-input.js +38 -0
  144. package/lib/team/styles/dialog.js +13 -0
  145. package/lib/team/styles/list-header.js +13 -0
  146. package/lib/toast.js +86 -0
  147. package/lib/util/api.js +21 -0
  148. package/lib/util/constants.js +10 -0
  149. package/lib/util/index.js +703 -0
  150. package/lib/util/locales.js +28 -0
  151. package/lib/util/mode.js +11 -0
  152. package/lib/who-can-access/config.js +46 -0
  153. package/lib/wrap-locale.js +12 -13
  154. package/package.json +69 -17
package/lib/actions.js ADDED
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = Actions;
7
+ var _react = require("react");
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
10
+ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
11
+ var _Menu = _interopRequireDefault(require("@mui/material/Menu"));
12
+ var _MenuItem = _interopRequireDefault(require("@mui/material/MenuItem"));
13
+ var _MoreHoriz = _interopRequireDefault(require("@mui/icons-material/MoreHoriz"));
14
+ var _ListItemIcon = _interopRequireDefault(require("@mui/material/ListItemIcon"));
15
+ var _ListItemText = _interopRequireDefault(require("@mui/material/ListItemText"));
16
+ var _jsxRuntime = require("react/jsx-runtime");
17
+ var _templateObject;
18
+ const _excluded = ["actions"],
19
+ _excluded2 = ["icon", "text", "onClick", "disabled"];
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
22
+ 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; }
23
+ 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; }
24
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
25
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
26
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
27
+ 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; }
28
+ 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; }
29
+ function Actions(_ref) {
30
+ let {
31
+ actions
32
+ } = _ref,
33
+ props = _objectWithoutProperties(_ref, _excluded);
34
+ const [anchorEl, setAnchorEl] = (0, _react.useState)(null);
35
+ const open = Boolean(anchorEl);
36
+ const onOpen = e => {
37
+ try {
38
+ e.stopPropagation();
39
+ e.preventDefault();
40
+ // eslint-disable-next-line no-empty
41
+ } catch (_unused) {}
42
+ setAnchorEl(e.currentTarget);
43
+ };
44
+ const onClose = e => {
45
+ try {
46
+ e.stopPropagation();
47
+ e.preventDefault();
48
+ // eslint-disable-next-line no-empty
49
+ } catch (_unused2) {}
50
+ setAnchorEl(null);
51
+ };
52
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Div, _objectSpread(_objectSpread({}, props), {}, {
53
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
54
+ "aria-label": "more",
55
+ "aria-controls": "actions-menu",
56
+ "aria-haspopup": "true",
57
+ "data-cy": "actions-menu-icon",
58
+ onClick: onOpen,
59
+ size: "large",
60
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_MoreHoriz.default, {})
61
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Menu.default, {
62
+ id: "actions-menu",
63
+ "data-cy": "actions-menu",
64
+ anchorEl: anchorEl,
65
+ keepMounted: true,
66
+ open: open,
67
+ onClose: onClose,
68
+ PaperProps: {},
69
+ children: actions.map((action, index) => {
70
+ if (typeof action === 'function') {
71
+ return action({
72
+ close: onClose
73
+ });
74
+ }
75
+ const {
76
+ icon,
77
+ text,
78
+ onClick: _onClick,
79
+ disabled = false
80
+ } = action,
81
+ opts = _objectWithoutProperties(action, _excluded2);
82
+ return /*#__PURE__*/(0, _react.createElement)(_MenuItem.default, _objectSpread(_objectSpread({}, opts), {}, {
83
+ disabled: disabled,
84
+ dense: true,
85
+ onClick: e => {
86
+ onClose();
87
+ _onClick(e);
88
+ }
89
+ // eslint-disable-next-line react/no-array-index-key
90
+ ,
91
+ key: index
92
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ListItemIcon.default, {
93
+ style: {
94
+ minWidth: 24,
95
+ marginRight: 8
96
+ },
97
+ children: icon
98
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ListItemText.default, {
99
+ primary: text
100
+ }));
101
+ })
102
+ })]
103
+ }));
104
+ }
105
+ Actions.propTypes = {
106
+ actions: _propTypes.default.array
107
+ };
108
+ Actions.defaultProps = {
109
+ actions: []
110
+ };
111
+ const Div = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral([""])));
@@ -0,0 +1,303 @@
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 _CircularProgress = _interopRequireDefault(require("@mui/material/CircularProgress"));
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 selected 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
+ "data-cy": "config-access-cancel",
193
+ children: t('common.cancel')
194
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
195
+ onClick: onConfirm,
196
+ color: "primary",
197
+ disabled: disabled,
198
+ variant: "contained",
199
+ autoFocus: true,
200
+ "data-cy": "config-access-confirm",
201
+ children: [loading && /*#__PURE__*/(0, _jsxRuntime.jsx)(_CircularProgress.default, {
202
+ size: 16
203
+ }), t('common.confirm')]
204
+ })]
205
+ }),
206
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
207
+ mt: 4,
208
+ mb: 3,
209
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
210
+ label: t('blocklet.config.access.description'),
211
+ select: true,
212
+ fullWidth: true,
213
+ value: whoCanAccess,
214
+ onChange: onWhoCanAccessChange,
215
+ "data-cy": "config-access-select",
216
+ SelectProps: {
217
+ renderValue: selected => {
218
+ const d = Configs.find(x => x.value === selected);
219
+ return d ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
220
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(d.icon, {
221
+ style: iconStyle
222
+ }), d.title[locale]]
223
+ }) : null;
224
+ }
225
+ },
226
+ children: Configs.map(d => {
227
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(StyledMenuItem, {
228
+ value: d.value,
229
+ sx: {
230
+ display: 'block'
231
+ },
232
+ "data-cy": "config-access-opt-".concat(d.value),
233
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
234
+ display: "flex",
235
+ alignItems: "center",
236
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(d.icon, {
237
+ style: iconStyle
238
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
239
+ children: d.title[locale]
240
+ })]
241
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
242
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
243
+ className: "tip",
244
+ children: d.description[locale]
245
+ })
246
+ })]
247
+ });
248
+ })
249
+ })
250
+ }), whoCanAccess === CONFIG_ROLE && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
251
+ mt: 4,
252
+ mb: 3,
253
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
254
+ label: t('blocklet.config.access.description'),
255
+ select: true,
256
+ fullWidth: true,
257
+ value: roles.map(x => x.name),
258
+ onChange: onRolesChange,
259
+ SelectProps: {
260
+ multiple: true,
261
+ renderValue: selected => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
262
+ sx: {
263
+ display: 'flex',
264
+ flexWrap: 'wrap',
265
+ gap: 0.5
266
+ },
267
+ children: selected.map(value => {
268
+ const role = roleList.find(x => x.name === value);
269
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.default, {
270
+ label: role.title
271
+ }, role.text);
272
+ })
273
+ })
274
+ },
275
+ children: roleList.map(_ref2 => {
276
+ let {
277
+ name,
278
+ title
279
+ } = _ref2;
280
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_MenuItem.default, {
281
+ value: name,
282
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Checkbox.default, {
283
+ checked: roles.some(x => x.name === name)
284
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ListItemText.default, {
285
+ primary: title
286
+ })]
287
+ }, name);
288
+ })
289
+ })
290
+ })]
291
+ })];
292
+ }
293
+ ConfigAccess.propTypes = {
294
+ blocklet: _propTypes.default.object.isRequired,
295
+ ancestors: _propTypes.default.array,
296
+ children: _propTypes.default.any
297
+ };
298
+ ConfigAccess.defaultProps = {
299
+ ancestors: [],
300
+ children: null
301
+ };
302
+ 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"])));
303
+ 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,221 @@
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 _bundleAvatar = _interopRequireDefault(require("../bundle-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)(_bundleAvatar.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
+ "data-cy": "btn-edit-".concat(blocklet.meta.did),
158
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_EditIcon.default, {
159
+ style: iconStyle
160
+ })
161
+ })
162
+ });
163
+ }
164
+ })]
165
+ }, "actions")]
166
+ }, "group-not-gateway-box"), /*#__PURE__*/(0, _jsxRuntime.jsx)(_line.default, {
167
+ depth: depth
168
+ }), (_blocklet$children = blocklet.children) !== null && _blocklet$children !== void 0 && _blocklet$children.length ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Collapse.default, {
169
+ in: expand,
170
+ children: blocklet.children.map(x => /*#__PURE__*/(0, _jsxRuntime.jsx)(ComponentItem, {
171
+ blocklet: x,
172
+ ancestors: [...ancestors, blocklet],
173
+ depth: depth + 1
174
+ }, "".concat(depth + 1, "-").concat(x.meta.did)))
175
+ }, "blocklet-collapse") : null];
176
+ }
177
+ ComponentItem.propTypes = {
178
+ blocklet: _propTypes.default.object.isRequired,
179
+ ancestors: _propTypes.default.array,
180
+ depth: _propTypes.default.number
181
+ };
182
+ ComponentItem.defaultProps = {
183
+ ancestors: [],
184
+ depth: 0
185
+ };
186
+ function BlockletAccess() {
187
+ const {
188
+ t
189
+ } = (0, _context.useLocaleContext)();
190
+ const {
191
+ blocklet
192
+ } = (0, _blocklet.useBlockletContext)();
193
+ const components = [...blocklet.children] || [];
194
+ if (blocklet.meta.group !== 'gateway') {
195
+ // add root blocklet to table list
196
+ components.unshift(blocklet);
197
+ }
198
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Div, {
199
+ component: "div",
200
+ children: components && components.length ? [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
201
+ mt: 2,
202
+ ml: {
203
+ xs: '-12px',
204
+ md: '-24px'
205
+ },
206
+ style: {
207
+ maxWidth: 1080
208
+ },
209
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ComponentItem, {
210
+ blocklet: blocklet
211
+ }, "0-".concat(blocklet.meta.did))
212
+ }, "top-blocklet-".concat(blocklet.meta.did))] : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
213
+ mt: 8,
214
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Empty.default, {
215
+ children: t('blocklet.component.noComponent')
216
+ })
217
+ })
218
+ });
219
+ }
220
+ BlockletAccess.propTypes = {};
221
+ 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));