@abtnode/ux 1.16.18-beta-7aa6be5a → 1.16.18-beta-bb4ebacc

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 (47) hide show
  1. package/es/blocklet/actions.js +17 -6
  2. package/es/blocklet/add-cert.js +1 -0
  3. package/es/blocklet/component/add-component-core.js +1317 -0
  4. package/es/blocklet/component/add.js +14 -1246
  5. package/es/blocklet/component/select-store.js +21 -7
  6. package/es/blocklet/component/store-blocklet-list.js +20 -6
  7. package/es/blocklet/configuration.js +28 -118
  8. package/es/blocklet/logo-uploader.js +131 -0
  9. package/es/blocklet/oauth/federated-site-list.js +1 -1
  10. package/es/blocklet/publish/create-project.js +6 -2
  11. package/es/blocklet/publish/create-release.js +5 -4
  12. package/es/blocklet/publish/index.js +26 -2
  13. package/es/blocklet/publish/project-list.js +6 -2
  14. package/es/hooks/use-navigation.js +1 -1
  15. package/es/hooks/use-passport-id.js +9 -6
  16. package/es/locales/en.js +26 -5
  17. package/es/locales/zh.js +22 -1
  18. package/es/logs/log-terminal.js +2 -1
  19. package/es/schema-form/index.js +11 -3
  20. package/es/team/members/connections.js +27 -0
  21. package/es/team/members/member.js +2 -26
  22. package/es/team/members/passport-item.js +104 -0
  23. package/es/team/members/passports.js +23 -78
  24. package/lib/blocklet/actions.js +17 -6
  25. package/lib/blocklet/add-cert.js +1 -0
  26. package/lib/blocklet/component/add-component-core.js +1131 -0
  27. package/lib/blocklet/component/add.js +18 -1058
  28. package/lib/blocklet/component/select-store.js +25 -7
  29. package/lib/blocklet/component/store-blocklet-list.js +22 -8
  30. package/lib/blocklet/configuration.js +30 -90
  31. package/lib/blocklet/logo-uploader.js +112 -0
  32. package/lib/blocklet/oauth/federated-site-list.js +1 -1
  33. package/lib/blocklet/publish/create-project.js +5 -1
  34. package/lib/blocklet/publish/create-release.js +5 -4
  35. package/lib/blocklet/publish/index.js +27 -1
  36. package/lib/blocklet/publish/project-list.js +5 -1
  37. package/lib/hooks/use-navigation.js +1 -1
  38. package/lib/hooks/use-passport-id.js +9 -7
  39. package/lib/locales/en.js +26 -5
  40. package/lib/locales/zh.js +22 -1
  41. package/lib/logs/log-terminal.js +2 -1
  42. package/lib/schema-form/index.js +9 -3
  43. package/lib/team/members/connections.js +35 -0
  44. package/lib/team/members/member.js +8 -33
  45. package/lib/team/members/passport-item.js +95 -0
  46. package/lib/team/members/passports.js +26 -54
  47. package/package.json +20 -20
@@ -15,7 +15,7 @@ var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
15
15
  var _ArrowDropDown = _interopRequireDefault(require("@mui/icons-material/ArrowDropDown"));
16
16
  var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
17
17
  var _useLocalStorage = _interopRequireDefault(require("react-use/lib/useLocalStorage"));
18
- var _constants = require("../../util/constants");
18
+ var _uniqBy = _interopRequireDefault(require("lodash/uniqBy"));
19
19
  var _node = require("../../contexts/node");
20
20
  var _blocklet = require("../../contexts/blocklet");
21
21
  var _add = _interopRequireDefault(require("../../store/add"));
@@ -25,12 +25,19 @@ var _jsxRuntime = require("react/jsx-runtime");
25
25
  var _templateObject;
26
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
27
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
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
+ 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; }
30
+ 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; }
31
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
32
+ 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); }
28
33
  function SelectStore(_ref) {
29
34
  let {
30
35
  onChange: _onChange,
31
36
  loading,
32
37
  children,
33
- extra
38
+ extra,
39
+ stores: customStores,
40
+ storageKey
34
41
  } = _ref;
35
42
  const {
36
43
  t
@@ -44,16 +51,20 @@ function SelectStore(_ref) {
44
51
  } = (0, _blocklet.useBlockletContext)();
45
52
  const [open, setOpen] = (0, _react.useState)(false);
46
53
  const storeSelectRef = (0, _react.useRef)(null);
47
- const storageKey = inService ? _constants.STORAGE_KEY_STORE_BLOCKLET : _constants.STORAGE_KEY_STORE_SERVER;
48
- const [storeUrl, setStoreUrl] = (0, _useLocalStorage.default)(storageKey);
54
+ const [storeUrlMem, setStoreUrlMem] = (0, _react.useState)();
55
+ const [storeUrlLs, setStoreUrlLs] = (0, _useLocalStorage.default)(storageKey || 'tmp');
56
+ const [storeUrl, setStoreUrl] = storageKey ? [storeUrlLs, setStoreUrlLs] : [storeUrlMem, setStoreUrlMem];
49
57
  const {
50
- storeList,
58
+ storeList: appStoreList,
51
59
  teamDid
52
60
  } = (0, _util.getStoreList)({
53
61
  fromBlocklet: inService,
54
62
  blocklet,
55
63
  nodeInfo
56
64
  });
65
+ const storeList = (0, _uniqBy.default)([...customStores.map(x => _objectSpread(_objectSpread({}, x), {}, {
66
+ protected: true
67
+ })), ...appStoreList], 'url');
57
68
  const currentRegistry = storeUrl && storeList.find(x => storeUrl === x.url) || storeList[0];
58
69
  const isServerlessMode = nodeInfo.mode === _constant.NODE_MODES.SERVERLESS;
59
70
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
@@ -143,11 +154,18 @@ SelectStore.propTypes = {
143
154
  onChange: _propTypes.default.func,
144
155
  loading: _propTypes.default.bool,
145
156
  children: _propTypes.default.any.isRequired,
146
- extra: _propTypes.default.node
157
+ extra: _propTypes.default.node,
158
+ storageKey: _propTypes.default.string,
159
+ stores: _propTypes.default.arrayOf(_propTypes.default.shape({
160
+ name: _propTypes.default.string.isRequired,
161
+ url: _propTypes.default.string.isRequired
162
+ }))
147
163
  };
148
164
  SelectStore.defaultProps = {
149
165
  onChange: () => {},
150
166
  loading: false,
151
- extra: ''
167
+ extra: '',
168
+ stores: [],
169
+ storageKey: ''
152
170
  };
153
171
  const SelectStoreTitle = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n\n span {\n font-size: 16px;\n color: ", ";\n // font-weight: bold;\n }\n"])), props => props.theme.palette.common.black);
@@ -21,7 +21,7 @@ var _Toast = _interopRequireDefault(require("@arcblock/ux/lib/Toast"));
21
21
  var _util2 = require("../../util");
22
22
  var _jsxRuntime = require("react/jsx-runtime");
23
23
  var _templateObject;
24
- const _excluded = ["handleButtonClick", "handleSearchSelect", "storeUrl", "handleBlockletRender", "extraFilter", "serverVersion"];
24
+ const _excluded = ["handleButtonClick", "handleSearchSelect", "storeUrl", "handleBlockletRender", "extraFilter", "serverVersion", "resourceType"];
25
25
  /* eslint-disable react/no-unstable-nested-components */
26
26
  /* eslint-disable react/jsx-wrap-multilines */
27
27
  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); }
@@ -153,25 +153,36 @@ function BlockletList(_ref3) {
153
153
  storeUrl,
154
154
  handleBlockletRender,
155
155
  extraFilter,
156
- serverVersion
156
+ serverVersion,
157
+ resourceType
157
158
  } = _ref3,
158
159
  rest = _objectWithoutProperties(_ref3, _excluded);
159
160
  const {
160
161
  locale
161
162
  } = (0, _context.useLocaleContext)();
163
+ const [initialized, setInitialized] = (0, _react.useState)(false);
162
164
  const [filters, setFilters] = (0, _react.useState)({});
163
165
  const handleChange = changeData => {
164
166
  setFilters(changeData);
165
167
  };
166
168
  const endpoint = storeUrl;
167
169
  (0, _react.useEffect)(() => {
168
- setFilters({});
169
- }, [endpoint]);
170
+ setFilters({
171
+ resourceType
172
+ });
173
+ }, [endpoint, resourceType]);
174
+ (0, _react.useEffect)(() => {
175
+ setInitialized(true);
176
+ setFilters({
177
+ resourceType
178
+ });
179
+ // eslint-disable-next-line react-hooks/exhaustive-deps
180
+ }, []);
170
181
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactErrorBoundary.ErrorBoundary, {
171
182
  FallbackComponent: _ErrorBoundary.ErrorFallback,
172
183
  resetKeys: [endpoint],
173
184
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", _objectSpread(_objectSpread({}, rest), {}, {
174
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_list.default, {
185
+ children: initialized && /*#__PURE__*/(0, _jsxRuntime.jsx)(_list.default, {
175
186
  blockletRender: blockletRenderProps => {
176
187
  const defaultProps = _objectSpread(_objectSpread({}, blockletRenderProps), {}, {
177
188
  handleButtonClick,
@@ -188,7 +199,8 @@ function BlockletList(_ref3) {
188
199
  onSearchSelect: handleSearchSelect,
189
200
  filters: filters,
190
201
  extraFilter: extraFilter,
191
- serverVersion: serverVersion
202
+ serverVersion: serverVersion,
203
+ fetchCategoryDelay: 500
192
204
  })
193
205
  }))
194
206
  });
@@ -199,13 +211,15 @@ BlockletList.propTypes = {
199
211
  handleSearchSelect: _propTypes.default.func,
200
212
  handleBlockletRender: _propTypes.default.func,
201
213
  extraFilter: _propTypes.default.func,
202
- serverVersion: _propTypes.default.string
214
+ serverVersion: _propTypes.default.string,
215
+ resourceType: _propTypes.default.string
203
216
  };
204
217
  BlockletList.defaultProps = {
205
218
  handleButtonClick: null,
206
219
  handleSearchSelect: null,
207
220
  handleBlockletRender: null,
208
221
  extraFilter: undefined,
209
- serverVersion: ''
222
+ serverVersion: '',
223
+ resourceType: ''
210
224
  };
211
225
  const StyledBlocklet = (0, _styled.default)(_Blocklet.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .ms-highlight {\n color: ", ";\n }\n"])), props => props.theme.palette.primary.main);
@@ -9,15 +9,12 @@ var _styled = _interopRequireDefault(require("@emotion/styled"));
9
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _get = _interopRequireDefault(require("lodash/get"));
11
11
  var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
12
- var _classnames = _interopRequireDefault(require("classnames"));
13
- var _urlJoin = _interopRequireDefault(require("url-join"));
14
12
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
15
13
  var _Switch = _interopRequireDefault(require("@mui/material/Switch"));
16
14
  var _Divider = _interopRequireDefault(require("@mui/material/Divider"));
17
15
  var _context = require("@arcblock/ux/lib/Locale/context");
18
16
  var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
19
17
  var _Loop = _interopRequireDefault(require("@mui/icons-material/Loop"));
20
- var _Avatar = _interopRequireDefault(require("@mui/material/Avatar"));
21
18
  var _constant = require("@abtnode/constant");
22
19
  var _constant2 = require("@blocklet/constant");
23
20
  var _util = require("@blocklet/meta/lib/util");
@@ -32,10 +29,13 @@ var _clearCache = _interopRequireDefault(require("../clear-cache"));
32
29
  var _appSk = _interopRequireDefault(require("./preferences/app-sk"));
33
30
  var _transferOwner = _interopRequireDefault(require("./transfer-owner"));
34
31
  var _useAppLogo = _interopRequireDefault(require("../hooks/use-app-logo"));
32
+ var _logoUploader = _interopRequireDefault(require("./logo-uploader"));
35
33
  var _jsxRuntime = require("react/jsx-runtime");
36
34
  var _templateObject;
37
35
  const _excluded = ["blocklet", "onUpdate", "hasPermission"];
38
36
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
+ 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); }
38
+ 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; }
39
39
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
40
40
  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; }
41
41
  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; }
@@ -44,18 +44,10 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typ
44
44
  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); }
45
45
  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; }
46
46
  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; }
47
- 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); }
48
- 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; }
49
47
  const languages = Object.keys(_constant2.SUPPORTED_LANGUAGES).map(x => ({
50
48
  code: x,
51
49
  name: _constant2.SUPPORTED_LANGUAGES[x].nativeName
52
50
  }));
53
-
54
- // eslint-disable-next-line import/no-unresolved
55
- const UploaderComponent = /*#__PURE__*/(0, _react.lazy)(() => Promise.resolve().then(() => _interopRequireWildcard(require('@blocklet/uploader/react'))).then(res => ({
56
- default: res.Uploader
57
- })));
58
- const uploadPrefix = '/blocklet/logo/upload';
59
51
  function BlockletEnvironment(_ref) {
60
52
  var _blocklet$settings;
61
53
  let {
@@ -82,7 +74,6 @@ function BlockletEnvironment(_ref) {
82
74
  const whoCanAccess = (0, _util.getWhoCanAccess)(blocklet);
83
75
  const publicToStore = blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$settings = blocklet.settings) === null || _blocklet$settings === void 0 ? void 0 : _blocklet$settings.publicToStore;
84
76
  const disabled = loading || !hasPermission;
85
- const uploaderLogoRef = (0, _react.useRef)(null);
86
77
  const {
87
78
  logoUrl,
88
79
  rectLogoUrl,
@@ -90,20 +81,6 @@ function BlockletEnvironment(_ref) {
90
81
  } = (0, _useAppLogo.default)({
91
82
  blocklet
92
83
  });
93
- const [apiPathProps, setApiPathProps] = (0, _react.useState)();
94
- const uploadLogoPrefix = (0, _urlJoin.default)(prefix, uploadPrefix, 'square', blocklet.meta.did);
95
- const uploadLogoRectPrefix = (0, _urlJoin.default)(prefix, uploadPrefix, 'rect', blocklet.meta.did);
96
- const uploadLogoFaviconPrefix = (0, _urlJoin.default)(prefix, uploadPrefix, 'favicon', blocklet.meta.did);
97
- const openUploader = uploaderPrefix => {
98
- if (!hasPermission) {
99
- return;
100
- }
101
- setApiPathProps({
102
- uploader: uploaderPrefix,
103
- disableMediaKitPrefix: true
104
- });
105
- uploaderLogoRef.current.open();
106
- };
107
84
  const {
108
85
  did
109
86
  } = blocklet.meta;
@@ -289,11 +266,6 @@ function BlockletEnvironment(_ref) {
289
266
  setLoading(false);
290
267
  }
291
268
  };
292
- const uploaderStyle = {
293
- '&::after': {
294
- content: "\"".concat(t('common.switch'), "\"")
295
- }
296
- };
297
269
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Div, _objectSpread(_objectSpread({}, rest), {}, {
298
270
  children: [configurableEnvs.map(item => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
299
271
  className: "config-form",
@@ -325,19 +297,15 @@ function BlockletEnvironment(_ref) {
325
297
  width: 'auto'
326
298
  },
327
299
  children: t('blocklet.config.logoSquare')
328
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
329
- className: (0, _classnames.default)('uploader-wrapper', hasPermission && 'enabled'),
330
- sx: uploaderStyle,
331
- onClick: () => openUploader(uploadLogoPrefix),
332
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Avatar.default, {
333
- sx: {
334
- height: 80,
335
- width: 80
336
- },
337
- variant: "square",
338
- alt: "Blocklet Logo",
339
- src: logoUrl
340
- })
300
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_logoUploader.default, {
301
+ did: blocklet.meta.did,
302
+ height: 80,
303
+ width: 80,
304
+ type: "square",
305
+ prefix: prefix,
306
+ url: logoUrl,
307
+ enabled: hasPermission,
308
+ headers: getSessionInHeader
341
309
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
342
310
  className: "config-label",
343
311
  fontSize: 14,
@@ -347,17 +315,14 @@ function BlockletEnvironment(_ref) {
347
315
  mb: 1.5,
348
316
  className: "config-desc",
349
317
  children: t('blocklet.config.logoRectDesc')
350
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
351
- className: (0, _classnames.default)('uploader-wrapper', hasPermission && 'enabled'),
352
- sx: uploaderStyle,
353
- onClick: () => openUploader(uploadLogoRectPrefix),
354
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
355
- alt: "Blocklet Rect Logo",
356
- src: rectLogoUrl,
357
- style: {
358
- height: '80px'
359
- }
360
- })
318
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_logoUploader.default, {
319
+ did: blocklet.meta.did,
320
+ height: 80,
321
+ type: "rect",
322
+ prefix: prefix,
323
+ url: rectLogoUrl,
324
+ enabled: hasPermission,
325
+ headers: getSessionInHeader
361
326
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
362
327
  className: "config-label",
363
328
  fontSize: 14,
@@ -367,41 +332,16 @@ function BlockletEnvironment(_ref) {
367
332
  mb: 1.5,
368
333
  className: "config-desc",
369
334
  children: t('blocklet.config.logoFaviconDesc')
335
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_logoUploader.default, {
336
+ did: blocklet.meta.did,
337
+ height: 25,
338
+ width: 25,
339
+ type: "favicon",
340
+ prefix: prefix,
341
+ url: faviconUrl,
342
+ enabled: hasPermission,
343
+ headers: getSessionInHeader
370
344
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
371
- sx: {
372
- display: 'inline-flex',
373
- cursor: hasPermission ? 'pointer' : 'default'
374
- },
375
- onClick: () => openUploader(uploadLogoFaviconPrefix),
376
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Avatar.default, {
377
- variant: "square",
378
- sx: {
379
- width: 20,
380
- height: 20
381
- },
382
- alt: "Blocklet Favicon Logo",
383
- src: faviconUrl
384
- })
385
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(UploaderComponent, {
386
- id: "\u200Buploader-logo",
387
- ref: uploaderLogoRef,
388
- popup: true,
389
- onUploadFinish: () => {
390
- uploaderLogoRef.current.close();
391
- },
392
- plugins: [],
393
- apiPathProps: apiPathProps,
394
- coreProps: {
395
- restrictions: {
396
- allowedFileTypes: ['image/*', '.jpg', '.jpeg', '.png', '.gif', '.svg'],
397
- maxFileSize: 1024 * 1024 * 10,
398
- maxNumberOfFiles: 1
399
- }
400
- },
401
- tusProps: {
402
- headers: getSessionInHeader
403
- }
404
- }, "uploader-logo"), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
405
345
  className: "config-form",
406
346
  children: whoCanAccess === 'all' && blocklet.source === 'registry' && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
407
347
  className: "config-item",
@@ -599,4 +539,4 @@ BlockletEnvironment.defaultProps = {
599
539
  onUpdate: () => {},
600
540
  hasPermission: false
601
541
  };
602
- const Div = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding-top: 24px;\n .config-form {\n flex-grow: 1;\n overflow-y: auto;\n ", " {\n width: 100%;\n flex-shrink: 0;\n padding: 0 24px;\n transform: translate(0, 0);\n }\n }\n\n .config-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 16px 0;\n }\n\n .config-label {\n font-weight: bold;\n }\n\n .config-desc {\n font-weight: normal;\n font-size: 12px;\n color: #666;\n }\n\n .form-item {\n margin-top: 0;\n }\n\n .uploader-wrapper {\n display: inline-flex;\n position: relative;\n font-size: 0px;\n &.enabled {\n cursor: pointer;\n }\n &::after {\n display: none;\n }\n &.enabled::after {\n display: block;\n opacity: 0;\n position: absolute;\n bottom: 0;\n background: rgba(0, 0, 0, 0.2);\n left: 0;\n right: 0;\n height: 2.2em;\n color: white;\n text-align: center;\n font-size: 12px;\n line-height: 2em;\n transition: opacity 0.3s ease;\n }\n &:hover::after {\n opacity: 1;\n }\n }\n"])), props => props.theme.breakpoints.down('md'));
542
+ const Div = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding-top: 24px;\n .config-form {\n flex-grow: 1;\n overflow-y: auto;\n ", " {\n width: 100%;\n flex-shrink: 0;\n padding: 0 24px;\n transform: translate(0, 0);\n }\n }\n\n .config-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 16px 0;\n }\n\n .config-label {\n font-weight: bold;\n }\n\n .config-desc {\n font-weight: normal;\n font-size: 12px;\n color: #666;\n }\n\n .form-item {\n margin-top: 0;\n }\n"])), props => props.theme.breakpoints.down('md'));
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = LogoUploader;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _urlJoin = _interopRequireDefault(require("url-join"));
10
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
11
+ var _noop = _interopRequireDefault(require("lodash/noop"));
12
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
13
+ var _classnames = _interopRequireDefault(require("classnames"));
14
+ var _context = require("@arcblock/ux/lib/Locale/context");
15
+ var _jsxRuntime = require("react/jsx-runtime");
16
+ var _templateObject;
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
19
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
+ 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; } // eslint-disable-next-line import/no-unresolved
21
+ const Uploader = /*#__PURE__*/(0, _react.lazy)(() => Promise.resolve().then(() => _interopRequireWildcard(require('@blocklet/uploader/react'))).then(res => ({
22
+ default: res.Uploader
23
+ })));
24
+ const uploadPrefix = '/blocklet/logo/upload';
25
+ function LogoUploader(_ref) {
26
+ let {
27
+ url,
28
+ height,
29
+ width,
30
+ enabled,
31
+ type,
32
+ did,
33
+ prefix,
34
+ headers,
35
+ onUploaded
36
+ } = _ref;
37
+ const {
38
+ t
39
+ } = (0, _context.useLocaleContext)();
40
+ const uploaderRef = (0, _react.useRef)(null);
41
+ const onOpen = () => {
42
+ var _uploaderRef$current;
43
+ (_uploaderRef$current = uploaderRef.current) === null || _uploaderRef$current === void 0 ? void 0 : _uploaderRef$current.open();
44
+ };
45
+ const onFinish = () => {
46
+ var _uploaderRef$current2;
47
+ onUploaded();
48
+ (_uploaderRef$current2 = uploaderRef.current) === null || _uploaderRef$current2 === void 0 ? void 0 : _uploaderRef$current2.close();
49
+ };
50
+ const uploaderStyle = {
51
+ cursor: enabled ? 'pointer' : 'default',
52
+ '&::after': {
53
+ content: "\"".concat(t('common.switch'), "\"")
54
+ }
55
+ };
56
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Div, {
57
+ id: "uploader-".concat(did, "-").concat(type),
58
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Uploader, {
59
+ ref: uploaderRef,
60
+ popup: true,
61
+ onUploadFinish: onFinish,
62
+ plugins: ['ImageEditor'],
63
+ apiPathProps: {
64
+ uploader: (0, _urlJoin.default)(prefix, uploadPrefix, type, did),
65
+ disableMediaKitPrefix: true
66
+ },
67
+ coreProps: {
68
+ restrictions: {
69
+ allowedFileTypes: ['image/*', '.jpg', '.jpeg', '.png', '.gif', '.svg'],
70
+ maxFileSize: 1024 * 1024 * 10,
71
+ maxNumberOfFiles: 1
72
+ }
73
+ },
74
+ tusProps: {
75
+ headers
76
+ }
77
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
78
+ className: (0, _classnames.default)('uploader-wrapper', enabled && 'enabled'),
79
+ sx: uploaderStyle,
80
+ onClick: onOpen,
81
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
82
+ alt: "Logo",
83
+ src: url,
84
+ style: {
85
+ height,
86
+ width
87
+ }
88
+ })
89
+ })]
90
+ }, "uploader-".concat(did, "-").concat(type));
91
+ }
92
+
93
+ // infer props for Uploader
94
+ LogoUploader.propTypes = {
95
+ url: _propTypes.default.string.isRequired,
96
+ type: _propTypes.default.oneOf(['square', 'rect', 'favicon']).isRequired,
97
+ did: _propTypes.default.string.isRequired,
98
+ prefix: _propTypes.default.string.isRequired,
99
+ headers: _propTypes.default.func,
100
+ onUploaded: _propTypes.default.func,
101
+ height: _propTypes.default.number,
102
+ width: _propTypes.default.any,
103
+ enabled: _propTypes.default.bool
104
+ };
105
+ LogoUploader.defaultProps = {
106
+ height: 80,
107
+ width: 'auto',
108
+ enabled: true,
109
+ headers: () => ({}),
110
+ onUploaded: _noop.default
111
+ };
112
+ const Div = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .uploader-wrapper {\n display: inline-flex;\n position: relative;\n font-size: 0px;\n &.enabled {\n cursor: pointer;\n }\n &::after {\n display: none;\n }\n &.enabled::after {\n display: block;\n opacity: 0;\n position: absolute;\n bottom: 0;\n background: rgba(0, 0, 0, 0.2);\n left: 0;\n right: 0;\n height: 2.2em;\n color: white;\n text-align: center;\n font-size: 12px;\n line-height: 2em;\n transition: opacity 0.3s ease;\n }\n &:hover::after {\n opacity: 1;\n }\n }\n"])));
@@ -216,7 +216,7 @@ function FederatedSiteList(_ref) {
216
216
  });
217
217
  }
218
218
  return list;
219
- }, [federatedConfig.appId, federatedSites, isMaster]);
219
+ }, [federatedConfig.appId, federatedSites, isMaster, t]);
220
220
  const tableOptions = (0, _ahooks.useCreation)(() => {
221
221
  return {
222
222
  sort: true,
@@ -65,6 +65,9 @@ function CreateProject(_ref) {
65
65
  } = (0, _node.useNodeContext)();
66
66
  const [blockletDid, setBlockletDid] = (0, _react.useState)();
67
67
  const [openConnect, setOpenConnect] = (0, _react.useState)(false);
68
+ const {
69
+ componentDid
70
+ } = (0, _reactRouterDom.useParams)();
68
71
  const handleCreateBlockletDidError = err => {
69
72
  _Toast.default.error(err.message);
70
73
  setOpenConnect(false);
@@ -94,7 +97,8 @@ function CreateProject(_ref) {
94
97
  did: blocklet.meta.did,
95
98
  blockletTitle: blockletTitle || '',
96
99
  blockletDid,
97
- type
100
+ type,
101
+ componentDid
98
102
  }
99
103
  }).then(() => {
100
104
  setLoading(false);
@@ -124,7 +124,8 @@ function CreateRelease(_ref2) {
124
124
  const navigate = (0, _reactRouterDom.useNavigate)();
125
125
  const {
126
126
  projectId,
127
- releaseId: inputReleaseId
127
+ releaseId: inputReleaseId,
128
+ componentDid
128
129
  } = (0, _reactRouterDom.useParams)();
129
130
  const {
130
131
  t
@@ -144,7 +145,7 @@ function CreateRelease(_ref2) {
144
145
  const releaseId = inputReleaseId === 'create' ? '' : inputReleaseId;
145
146
  const mode = inputReleaseId === 'create' ? 'create' : 'edit';
146
147
  const tabs = [];
147
- const resourceComponents = ((blocklet === null || blocklet === void 0 ? void 0 : blocklet.children) || []).filter(x => x.meta.capabilities.resourceExportApi);
148
+ const resourceComponents = ((blocklet === null || blocklet === void 0 ? void 0 : blocklet.children) || []).filter(x => x.meta.capabilities.resourceExportApi).filter(x => !componentDid || x.meta.did === componentDid);
148
149
  resourceComponents.forEach(item => {
149
150
  addComponentTabs({
150
151
  tabs,
@@ -580,7 +581,7 @@ function CreateRelease(_ref2) {
580
581
  });
581
582
  uploaderLogoRef.current.close();
582
583
  },
583
- plugins: [],
584
+ plugins: ['ImageEditor'],
584
585
  apiPathProps: {
585
586
  uploader: uploadLogoPrefix,
586
587
  disableMediaKitPrefix: true
@@ -605,7 +606,7 @@ function CreateRelease(_ref2) {
605
606
  });
606
607
  uploaderScreenshotRef.current.close();
607
608
  },
608
- plugins: [],
609
+ plugins: ['ImageEditor'],
609
610
  apiPathProps: {
610
611
  uploader: uploadScreenshotPrefix,
611
612
  disableMediaKitPrefix: true
@@ -4,10 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = BlockletPublish;
7
- var _react = _interopRequireDefault(require("react"));
7
+ var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactRouterDom = require("react-router-dom");
9
9
  var _styled = _interopRequireDefault(require("@emotion/styled"));
10
10
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
11
+ var _blocklet = require("../../contexts/blocklet");
11
12
  var _projectList = _interopRequireDefault(require("./project-list"));
12
13
  var _createProject = _interopRequireDefault(require("./create-project"));
13
14
  var _releaseList = _interopRequireDefault(require("./release-list"));
@@ -15,8 +16,33 @@ var _createRelease = _interopRequireDefault(require("./create-release"));
15
16
  var _jsxRuntime = require("react/jsx-runtime");
16
17
  var _templateObject;
17
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
+ 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; }
18
21
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
19
22
  function BlockletPublish() {
23
+ const {
24
+ blocklet
25
+ } = (0, _blocklet.useBlockletContext)();
26
+ const location = (0, _reactRouterDom.useLocation)();
27
+
28
+ // post message to parent window when route changed
29
+ const {
30
+ componentDid
31
+ } = (0, _reactRouterDom.useParams)();
32
+ (0, _react.useEffect)(() => {
33
+ if (componentDid && window.parent) {
34
+ const path = "".concat(location.pathname).concat(location.search);
35
+ window.parent.postMessage({
36
+ event: 'popstate',
37
+ page: 'publish',
38
+ componentDid,
39
+ path
40
+ }, '*');
41
+ }
42
+ }, [componentDid, location]);
43
+ if (!blocklet) {
44
+ return null;
45
+ }
20
46
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Main, {
21
47
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactRouterDom.Routes, {
22
48
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactRouterDom.Route, {
@@ -41,11 +41,15 @@ function ProjectList() {
41
41
  blocklet
42
42
  } = (0, _blocklet.useBlockletContext)();
43
43
  const [deleteConfirm, setDeleteConfirm] = (0, _react.useState)(null);
44
+ const {
45
+ componentDid = ''
46
+ } = (0, _reactRouterDom.useParams)();
44
47
  const [projects, setProjects] = (0, _react.useState)(null);
45
48
  const getProjects = () => {
46
49
  api.getProjects({
47
50
  input: {
48
- did: blocklet.meta.did
51
+ did: blocklet.meta.did,
52
+ componentDid
49
53
  }
50
54
  }).then(res => {
51
55
  const list = (res === null || res === void 0 ? void 0 : res.projects) || [];
@@ -40,7 +40,7 @@ const injectNavigationData = {
40
40
  from: 'tmpl'
41
41
  }],
42
42
  dashboard: [{
43
- id: '/access',
43
+ id: '/team',
44
44
  title: {
45
45
  en: 'Access',
46
46
  zh: '访问控制'
@@ -4,15 +4,17 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = usePassportId;
7
- var _useLocalStorage = _interopRequireDefault(require("react-use/lib/useLocalStorage"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
7
  function usePassportId() {
10
- const [passportId, setPassportId, clearPassportId] = (0, _useLocalStorage.default)('passportId', '');
8
+ const clearPassportId = () => {
9
+ localStorage.removeItem('passportId');
10
+ };
11
+ const setPassportId = value => {
12
+ localStorage.setItem('passportId', value);
13
+ };
11
14
  const getPassportId = () => {
12
- setTimeout(() => {
13
- clearPassportId();
14
- }, 0);
15
- return passportId || '';
15
+ const passportId = localStorage.getItem('passportId') || '';
16
+ clearPassportId();
17
+ return passportId;
16
18
  };
17
19
  return {
18
20
  getPassportId,