@abtnode/ux 1.16.19-beta-710018ca → 1.16.19-beta-ba354e01

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 (57) hide show
  1. package/es/blocklet/component/add-component-core.js +49 -36
  2. package/es/blocklet/component/button.js +12 -0
  3. package/es/blocklet/component/did-space/connect-to.js +355 -0
  4. package/es/blocklet/component/did-space/connected.js +42 -0
  5. package/es/blocklet/component/did-space/delete.js +104 -0
  6. package/es/blocklet/component/did-space/disconnect.js +230 -0
  7. package/es/blocklet/component/did-space/index.js +73 -0
  8. package/es/blocklet/component/did-space/item.js +233 -0
  9. package/es/blocklet/component/index.js +3 -3
  10. package/es/blocklet/component/step-actions.js +99 -0
  11. package/es/blocklet/publish/create-project.js +1 -1
  12. package/es/blocklet/publish/create-release.js +39 -20
  13. package/es/blocklet/publish/index.js +15 -2
  14. package/es/blocklet/publish/project-list.js +32 -1
  15. package/es/blocklet/publish/release-list.js +1 -0
  16. package/es/blocklet/publish/resource.js +2 -13
  17. package/es/blocklet/publish/tree.js +4 -0
  18. package/es/blocklet/resource-type.js +34 -0
  19. package/es/blocklet/storage/connect-to.js +11 -15
  20. package/es/contexts/config-space.js +160 -0
  21. package/es/hooks/use-mobile.js +17 -0
  22. package/es/hooks/use-storage-endpoint.js +23 -0
  23. package/es/images.js +48 -0
  24. package/es/locales/en.js +5 -0
  25. package/es/locales/zh.js +5 -0
  26. package/es/util/constants.js +2 -1
  27. package/es/util/index.js +5 -1
  28. package/es/util/spaces.js +66 -5
  29. package/lib/blocklet/component/add-component-core.js +59 -45
  30. package/lib/blocklet/component/button.js +23 -0
  31. package/lib/blocklet/component/did-space/connect-to.js +362 -0
  32. package/lib/blocklet/component/did-space/connected.js +49 -0
  33. package/lib/blocklet/component/did-space/delete.js +111 -0
  34. package/lib/blocklet/component/did-space/disconnect.js +241 -0
  35. package/lib/blocklet/component/did-space/index.js +82 -0
  36. package/lib/blocklet/component/did-space/item.js +197 -0
  37. package/lib/blocklet/component/index.js +3 -3
  38. package/lib/blocklet/component/step-actions.js +63 -0
  39. package/lib/blocklet/publish/create-project.js +1 -1
  40. package/lib/blocklet/publish/create-release.js +39 -19
  41. package/lib/blocklet/publish/index.js +18 -4
  42. package/lib/blocklet/publish/project-list.js +32 -1
  43. package/lib/blocklet/publish/release-list.js +1 -0
  44. package/lib/blocklet/publish/resource.js +1 -12
  45. package/lib/blocklet/publish/tree.js +45 -38
  46. package/lib/blocklet/resource-type.js +51 -0
  47. package/lib/blocklet/storage/connect-to.js +11 -15
  48. package/lib/contexts/config-space.js +169 -0
  49. package/lib/hooks/use-mobile.js +24 -0
  50. package/lib/hooks/use-storage-endpoint.js +28 -0
  51. package/lib/images.js +51 -0
  52. package/lib/locales/en.js +5 -0
  53. package/lib/locales/zh.js +5 -0
  54. package/lib/util/constants.js +4 -2
  55. package/lib/util/index.js +8 -2
  56. package/lib/util/spaces.js +69 -3
  57. package/package.json +11 -7
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ConfigSpaceContext = exports.ConfigSpaceConsumer = void 0;
7
+ exports.ConfigSpaceProvider = ConfigSpaceProvider;
8
+ exports.useConfigSpaceContext = useConfigSpaceContext;
9
+ var _react = require("react");
10
+ var _propTypes = require("prop-types");
11
+ var _lodash = require("lodash");
12
+ var _constant = require("@blocklet/constant");
13
+ var _ahooks = require("ahooks");
14
+ var _Toast = _interopRequireDefault(require("@arcblock/ux/lib/Toast"));
15
+ var _node = require("./node");
16
+ var _spaces = require("../util/spaces");
17
+ var _blocklet = require("./blocklet");
18
+ var _useStorageEndpoint = _interopRequireDefault(require("../hooks/use-storage-endpoint"));
19
+ var _jsxRuntime = require("react/jsx-runtime");
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+ /**
22
+ * @typedef {{
23
+ * did: string,
24
+ * url: string,
25
+ * name: string,
26
+ * endpoint: string,
27
+ * }} SpaceGateway
28
+ */
29
+
30
+ /**
31
+ * @typedef {{
32
+ * loading: boolean,
33
+ * spaceGateway: SpaceGateway,
34
+ * deleteSpaceGateway: (spaceGateway: SpaceGateway) => void | Promise<void>,
35
+ * updateSpaceGateway: (updateSpaceGateway: SpaceGateway) => void | Promise<void>,
36
+ * storageEndpoint: string,
37
+ * settingStorageEndpoint: (endpoint: string) => void | Promise<void>,
38
+ * hasStorageEndpoint: boolean,
39
+ * }} ConfigSpaceContextType
40
+ */
41
+
42
+ /** @type {import('react').Context<ConfigSpaceContextType>} */const ConfigSpaceContext = /*#__PURE__*/(0, _react.createContext)({});
43
+ exports.ConfigSpaceContext = ConfigSpaceContext;
44
+ const {
45
+ Provider,
46
+ Consumer
47
+ } = ConfigSpaceContext;
48
+
49
+ /**
50
+ * @description
51
+ * @param {{
52
+ * children: React.ReactNode,
53
+ * }} { children }
54
+ * @return {any}
55
+ */
56
+ exports.ConfigSpaceConsumer = Consumer;
57
+ function ConfigSpaceProvider(_ref) {
58
+ let {
59
+ children
60
+ } = _ref;
61
+ const [loading, setLoading] = (0, _react.useState)(false);
62
+ const [spaceGateway, setSpaceGateway] = (0, _react.useState)(null);
63
+ /**
64
+ * @type {{
65
+ * blocklet: import('@abtnode/client').BlockletState,
66
+ * actions: { refreshBlocklet: Function }
67
+ * }}
68
+ */
69
+ const {
70
+ blocklet,
71
+ actions: {
72
+ refreshBlocklet
73
+ }
74
+ } = (0, _blocklet.useBlockletContext)();
75
+ const {
76
+ storageEndpoint
77
+ } = (0, _useStorageEndpoint.default)();
78
+ const {
79
+ api: nodeApi
80
+ } = (0, _node.useNodeContext)();
81
+ (0, _ahooks.useAsyncEffect)(async () => {
82
+ try {
83
+ setLoading(true);
84
+ if ((0, _lodash.isEmpty)(storageEndpoint)) {
85
+ setSpaceGateway(null);
86
+ return;
87
+ }
88
+ const $spaceGateway = await (0, _spaces.getSpaceGateway)(storageEndpoint);
89
+ setSpaceGateway($spaceGateway);
90
+ } catch (error) {
91
+ console.error(error);
92
+ _Toast.default.error(error.message);
93
+ } finally {
94
+ setLoading(false);
95
+ }
96
+ }, [storageEndpoint]);
97
+
98
+ /**
99
+ * @description
100
+ * @param {SpaceGateway} spaceGateway
101
+ */
102
+ const deleteSpaceGateway = () => {
103
+ setSpaceGateway(null);
104
+ refreshBlocklet();
105
+ };
106
+
107
+ /**
108
+ * @description
109
+ * @param {SpaceGateway} x
110
+ */
111
+ const updateSpaceGateway = async x => {
112
+ setSpaceGateway(x);
113
+ // eslint-disable-next-line no-use-before-define
114
+ await settingStorageEndpoint(x.endpoint);
115
+ refreshBlocklet();
116
+ };
117
+
118
+ /**
119
+ * @description
120
+ * @param {string} endpoint
121
+ */
122
+ const settingStorageEndpoint = async endpoint => {
123
+ await nodeApi.configBlocklet({
124
+ input: {
125
+ did: [blocklet.meta.did],
126
+ configs: [{
127
+ key: _constant.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_SPACE_ENDPOINT,
128
+ value: endpoint
129
+ }]
130
+ }
131
+ });
132
+ refreshBlocklet();
133
+ };
134
+ (0, _react.useEffect)(() => {
135
+ async function syncSpaceGateway() {
136
+ if (!spaceGateway) {
137
+ return;
138
+ }
139
+ const name = await (0, _spaces.getSpaceNameByEndpoint)(spaceGateway.endpoint, spaceGateway.name);
140
+ const latestSpaceGateway = (0, _lodash.merge)(spaceGateway, {
141
+ name
142
+ });
143
+ setSpaceGateway(latestSpaceGateway);
144
+ }
145
+ syncSpaceGateway();
146
+ // eslint-disable-next-line react-hooks/exhaustive-deps
147
+ }, []);
148
+ const hasStorageEndpoint = Boolean(storageEndpoint && spaceGateway);
149
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Provider, {
150
+ value: {
151
+ loading,
152
+ spaceGateway,
153
+ deleteSpaceGateway,
154
+ updateSpaceGateway,
155
+ storageEndpoint,
156
+ settingStorageEndpoint,
157
+ hasStorageEndpoint
158
+ },
159
+ children: children
160
+ });
161
+ }
162
+ ConfigSpaceProvider.propTypes = {
163
+ children: _propTypes.node.isRequired
164
+ };
165
+ ConfigSpaceProvider.defaultProps = {};
166
+ function useConfigSpaceContext() {
167
+ const res = (0, _react.useContext)(ConfigSpaceContext);
168
+ return res;
169
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useMobile;
7
+ var _styles = require("@mui/material/styles");
8
+ var _useMediaQuery = _interopRequireDefault(require("@mui/material/useMediaQuery"));
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ /**
11
+ * @description
12
+ * @export
13
+ * @param {{ key: string | import('@mui/material').Breakpoint }} [{ key }={ key: 'md' }]
14
+ * @return {*}
15
+ */
16
+ function useMobile() {
17
+ let {
18
+ key
19
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
20
+ key: 'sm'
21
+ };
22
+ const theme = (0, _styles.useTheme)();
23
+ return (0, _useMediaQuery.default)(theme.breakpoints.down(key));
24
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useStorageEndpoint;
7
+ var _react = require("react");
8
+ var _blocklet = require("../contexts/blocklet");
9
+ var _spaces = require("../util/spaces");
10
+ /**
11
+ * @description
12
+ * @export
13
+ * @return {{
14
+ * storageEndpoint: string
15
+ * }}
16
+ */
17
+ function useStorageEndpoint() {
18
+ const [storageEndpoint, setStorageEndpoint] = (0, _react.useState)(null);
19
+ const {
20
+ blocklet
21
+ } = (0, _blocklet.useBlockletContext)();
22
+ (0, _react.useEffect)(() => {
23
+ setStorageEndpoint((0, _spaces.getDIDSpaceEndpoint)(blocklet));
24
+ }, [blocklet]);
25
+ return {
26
+ storageEndpoint
27
+ };
28
+ }
package/lib/images.js ADDED
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = Images;
7
+ var _propTypes = _interopRequireDefault(require("prop-types"));
8
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
9
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ var _templateObject;
12
+ const _excluded = ["data"];
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
15
+ 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; }
16
+ 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; }
17
+ 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; }
18
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
19
+ 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); }
20
+ 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; }
21
+ 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; }
22
+ function Images(_ref) {
23
+ let {
24
+ data
25
+ } = _ref,
26
+ props = _objectWithoutProperties(_ref, _excluded);
27
+ if (!data || !data.length) {
28
+ return null;
29
+ }
30
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(StyledBox, _objectSpread(_objectSpread({}, props), {}, {
31
+ children: data.map(item => /*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
32
+ href: item.url,
33
+ target: "_blank",
34
+ rel: "noreferrer",
35
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
36
+ src: item.url,
37
+ alt: item.alt || ''
38
+ })
39
+ }, item.url))
40
+ }));
41
+ }
42
+ Images.propTypes = {
43
+ data: _propTypes.default.arrayOf(_propTypes.default.shape({
44
+ url: _propTypes.default.string,
45
+ alt: _propTypes.default.string
46
+ }))
47
+ };
48
+ Images.defaultProps = {
49
+ data: []
50
+ };
51
+ const StyledBox = (0, _styled.default)(_Box.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n justify-content: flex-start;\n flex-wrap: wrap;\n margin-bottom: -12px;\n a {\n display: flex;\n }\n img {\n height: 128px;\n cursor: pointer;\n margin-right: 12px;\n margin-bottom: 12px;\n }\n"])));
package/lib/locales/en.js CHANGED
@@ -273,6 +273,7 @@ module.exports = {
273
273
  saveSuccess: 'Saved successfully',
274
274
  scheduleFailed: 'schedule failed',
275
275
  scheduleSuccess: 'successfully scheduled',
276
+ scope: 'Scope',
276
277
  screenshot: 'Screenshot',
277
278
  search: 'Search',
278
279
  security: 'Security',
@@ -623,6 +624,8 @@ module.exports = {
623
624
  isInProgress: 'Blocklet is in progress, please wait for it to finish'
624
625
  },
625
626
  publish: {
627
+ createResource: 'Create Resource',
628
+ addResource: 'Add Release',
626
629
  productTitle: 'Product',
627
630
  versionTitle: 'Version',
628
631
  imgTitle: 'Images',
@@ -637,6 +640,8 @@ module.exports = {
637
640
  createRelease: 'Create a new release',
638
641
  deleteReleaseTip: 'The release cannot be recovered after deletion',
639
642
  createBlockletDid: 'Create from DID Wallet',
643
+ createReleaseSuccess: 'Release created successfully',
644
+ saveDraftSuccess: 'Draft saved successfully',
640
645
  connect: {
641
646
  title: 'Create Blocklet DID',
642
647
  scan: 'Scan the QR code below to generate Blocklet DID',
package/lib/locales/zh.js CHANGED
@@ -278,6 +278,7 @@ module.exports = {
278
278
  saveSuccess: '保存成功',
279
279
  scheduleFailed: '加入任务队列失败',
280
280
  scheduleSuccess: '成功加入任务队列',
281
+ scope: '范围',
281
282
  screenshot: '截图',
282
283
  search: '搜索',
283
284
  security: '安全',
@@ -630,6 +631,8 @@ module.exports = {
630
631
  isInProgress: '应用正在进行中,请等待完成'
631
632
  },
632
633
  publish: {
634
+ createResource: '创建资源',
635
+ addResource: '添加资源',
633
636
  productTitle: 'Blocklet 详情',
634
637
  versionTitle: '版本信息',
635
638
  imgTitle: '图片资源',
@@ -644,6 +647,8 @@ module.exports = {
644
647
  createRelease: '创建新的发布',
645
648
  deleteReleaseTip: '此发布删除后不可恢复,是否继续?',
646
649
  createBlockletDid: '通过 DID 钱包创建',
650
+ createReleaseSuccess: '发布成功',
651
+ saveDraftSuccess: '保存成功',
647
652
  connect: {
648
653
  title: '创建 Blocklet DID',
649
654
  scan: '扫描下面的二维码来生成 Blocklet DID',
@@ -3,8 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.STORAGE_KEY_STORE_SERVER = exports.STORAGE_KEY_STORE_BLOCKLET = void 0;
6
+ exports.STORAGE_KEY_STORE_SERVER = exports.STORAGE_KEY_STORE_RESOURCE = exports.STORAGE_KEY_STORE_BLOCKLET = void 0;
7
7
  const STORAGE_KEY_STORE_BLOCKLET = 'blocklet-add-component-registry';
8
8
  exports.STORAGE_KEY_STORE_BLOCKLET = STORAGE_KEY_STORE_BLOCKLET;
9
9
  const STORAGE_KEY_STORE_SERVER = 'server-add-registry';
10
- exports.STORAGE_KEY_STORE_SERVER = STORAGE_KEY_STORE_SERVER;
10
+ exports.STORAGE_KEY_STORE_SERVER = STORAGE_KEY_STORE_SERVER;
11
+ const STORAGE_KEY_STORE_RESOURCE = resource => "resource-".concat(resource, "-add-registry");
12
+ exports.STORAGE_KEY_STORE_RESOURCE = STORAGE_KEY_STORE_RESOURCE;
package/lib/util/index.js CHANGED
@@ -32,7 +32,7 @@ exports.getBlockletUrls = getBlockletUrls;
32
32
  exports.getExplorerLink = getExplorerLink;
33
33
  exports.getTransferAppLink = exports.getSystemDomains = exports.getSubscriptionURL = exports.getStoreList = exports.getRenewBlockletURL = exports.getPathPrefix = exports.getLogoHash = exports.getIssuePassportLink = exports.getInviteLink = void 0;
34
34
  exports.getWebWalletUrl = getWebWalletUrl;
35
- exports.isNewStoreUrl = exports.isInstalling = exports.isDownloading = exports.isChrome = exports.isCertificateMatch = exports.isBlockletDev = void 0;
35
+ exports.isNewStoreUrl = exports.isInstalling = exports.isDownloading = exports.isChrome = exports.isCertificateMatch = exports.isBlockletDev = exports.hasRequiredSteps = void 0;
36
36
  exports.isProtectedRole = isProtectedRole;
37
37
  exports.isUrlAccessible = exports.isSafari = exports.isRunning = void 0;
38
38
  exports.isValidClusterSize = isValidClusterSize;
@@ -729,4 +729,10 @@ exports.nanoid = nanoid;
729
729
  const getSystemDomains = domains => domains.filter(x => x.isProtected);
730
730
  exports.getSystemDomains = getSystemDomains;
731
731
  const getLogoHash = logo => encodeURIComponent((logo || '').split('/').slice(-1)[0].slice(0, 7));
732
- exports.getLogoHash = getLogoHash;
732
+ exports.getLogoHash = getLogoHash;
733
+ const hasRequiredEnvironments = meta => (meta.environments || []).some(x => x.required);
734
+ const hasRequiredSteps = meta => {
735
+ var _meta$requirements, _meta$requirements$fu;
736
+ return !!((_meta$requirements = meta.requirements) !== null && _meta$requirements !== void 0 && (_meta$requirements$fu = _meta$requirements.fuels) !== null && _meta$requirements$fu !== void 0 && _meta$requirements$fu.length) || hasRequiredEnvironments(meta);
737
+ };
738
+ exports.hasRequiredSteps = hasRequiredSteps;
@@ -9,7 +9,9 @@ exports.getDIDSpaceDidFromEndpoint = getDIDSpaceDidFromEndpoint;
9
9
  exports.getDIDSpaceEndpoint = void 0;
10
10
  exports.getDIDSpaceUrlFromEndpoint = getDIDSpaceUrlFromEndpoint;
11
11
  exports.getSpaceBackupEndpoint = getSpaceBackupEndpoint;
12
+ exports.getSpaceGateway = getSpaceGateway;
12
13
  exports.getSpaceGatewayFromEndpoint = getSpaceGatewayFromEndpoint;
14
+ exports.getSpaceGatewayUrl = getSpaceGatewayUrl;
13
15
  exports.getSpaceNameByEndpoint = getSpaceNameByEndpoint;
14
16
  exports.getSpaceNftDisplayUrlFromEndpoint = getSpaceNftDisplayUrlFromEndpoint;
15
17
  exports.hasPermissionByEndpoint = hasPermissionByEndpoint;
@@ -22,6 +24,10 @@ var _api = require("./api");
22
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
25
  /* eslint-disable import/prefer-default-export */
24
26
 
27
+ /**
28
+ * @typedef {import('../contexts/config-space').SpaceGateway} SpaceGateway
29
+ */
30
+
25
31
  /**
26
32
  * @FIXME 希望之后放在 sdk 中 @jianchao
27
33
  * @description
@@ -99,7 +105,7 @@ function getSpaceBackupEndpoint(environments) {
99
105
  * @description
100
106
  * @export
101
107
  * @param {string} endpoint
102
- * @return {boolean}
108
+ * @return {string}
103
109
  */
104
110
  function getSpaceGatewayFromEndpoint(endpoint) {
105
111
  return endpoint === null || endpoint === void 0 ? void 0 : endpoint.replace(/\/api\/space\/.+/, '');
@@ -152,6 +158,11 @@ async function isValidSpaceGatewayUrl(spaceGatewayUrl) {
152
158
  * @return {Promise<string >}
153
159
  */
154
160
  async function getSpaceNameByEndpoint(endpoint) {
161
+ let {
162
+ timeout
163
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
164
+ timeout: 3000
165
+ };
155
166
  try {
156
167
  if (!(0, _isUrl.default)(endpoint)) {
157
168
  return '';
@@ -159,7 +170,7 @@ async function getSpaceNameByEndpoint(endpoint) {
159
170
  const {
160
171
  headers
161
172
  } = await _api.api.head(endpoint, {
162
- timeout: 3000
173
+ timeout
163
174
  });
164
175
  const spaceName = headers['x-space-name'];
165
176
  return spaceName ? decodeURIComponent(spaceName) : '';
@@ -190,4 +201,59 @@ const getDIDSpaceEndpoint = blocklet => {
190
201
  var _blocklet$configs, _blocklet$configs$fin;
191
202
  return (blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$configs = blocklet.configs) === null || _blocklet$configs === void 0 ? void 0 : (_blocklet$configs$fin = _blocklet$configs.find(item => item.key === _constant.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_SPACE_ENDPOINT)) === null || _blocklet$configs$fin === void 0 ? void 0 : _blocklet$configs$fin.value) || null;
192
203
  };
193
- exports.getDIDSpaceEndpoint = getDIDSpaceEndpoint;
204
+
205
+ /**
206
+ * @description
207
+ * @export
208
+ * @param {string} endpoint
209
+ * @returns {Promise<SpaceGateway>}
210
+ */
211
+ exports.getDIDSpaceEndpoint = getDIDSpaceEndpoint;
212
+ async function getSpaceGateway(endpoint) {
213
+ /** @type {SpaceGateway} */
214
+ const spaceGateway = {};
215
+ spaceGateway.did = getDIDSpaceDidFromEndpoint(endpoint);
216
+ spaceGateway.name = await getSpaceNameByEndpoint(endpoint);
217
+ spaceGateway.url = getSpaceGatewayFromEndpoint(endpoint);
218
+ spaceGateway.endpoint = endpoint;
219
+ return spaceGateway;
220
+ }
221
+
222
+ /**
223
+ * @description
224
+ * @export
225
+ * @param {string} anyUrl
226
+ * @param {{
227
+ * timeout: number,
228
+ * withSearchParams: true | false,
229
+ * }} options
230
+ * @returns {Promise<string>}
231
+ */
232
+ async function getSpaceGatewayUrl(anyUrl) {
233
+ var _blockletMeta$compone;
234
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
235
+ timeout: 30000,
236
+ withSearchParams: true
237
+ };
238
+ if (!(0, _lodash.isString)(anyUrl)) {
239
+ throw new Error("url(".concat(anyUrl, ") must be a string"));
240
+ }
241
+ const url = anyUrl.startsWith('http') ? anyUrl : "https://".concat(anyUrl);
242
+ const u = new URL(url);
243
+
244
+ /** @type {{ data: import('@blocklet/sdk').WindowBlocklet }} */
245
+ const {
246
+ data: blockletMeta
247
+ } = await _api.api.get((0, _ufo.joinURL)(u.origin, '/__blocklet__.js?type=json'), {
248
+ timeout: options.timeout
249
+ });
250
+
251
+ /** @type {string} */
252
+ const mountPoint = (_blockletMeta$compone = blockletMeta.componentMountPoints.findLast(x => x.did === 'z8iZnaYxnkMD5AKRjTKiCb8pQr1ut8UantAcf')) === null || _blockletMeta$compone === void 0 ? void 0 : _blockletMeta$compone.mountPoint;
253
+ if (!mountPoint) {
254
+ throw new Error("MountPoint(".concat(mountPoint, ") not found"));
255
+ }
256
+ const didSpacesCoreUrl = (0, _ufo.joinURL)(u.origin, mountPoint);
257
+ const spaceGatewayUrl = options.withSearchParams && u.searchParams.get('spaceDid') ? (0, _ufo.joinURL)(didSpacesCoreUrl, "?spaceDid=".concat(u.searchParams.get('spaceDid'))) : didSpacesCoreUrl;
258
+ return spaceGatewayUrl;
259
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abtnode/ux",
3
- "version": "1.16.19-beta-710018ca",
3
+ "version": "1.16.19-beta-ba354e01",
4
4
  "description": "UX components shared across abtnode packages",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -27,9 +27,9 @@
27
27
  "author": "linchen <linchen1987@foxmail.com> (http://github.com/linchen1987)",
28
28
  "license": "Apache-2.0",
29
29
  "dependencies": {
30
- "@abtnode/auth": "1.16.19-beta-710018ca",
31
- "@abtnode/constant": "1.16.19-beta-710018ca",
32
- "@abtnode/util": "1.16.19-beta-710018ca",
30
+ "@abtnode/auth": "1.16.19-beta-ba354e01",
31
+ "@abtnode/constant": "1.16.19-beta-ba354e01",
32
+ "@abtnode/util": "1.16.19-beta-ba354e01",
33
33
  "@ahooksjs/use-url-state": "^3.5.1",
34
34
  "@arcblock/did": "^1.18.95",
35
35
  "@arcblock/did-connect": "^2.8.16",
@@ -39,10 +39,10 @@
39
39
  "@arcblock/react-hooks": "^2.8.16",
40
40
  "@arcblock/terminal": "^2.8.16",
41
41
  "@arcblock/ux": "^2.8.16",
42
- "@blocklet/constant": "1.16.19-beta-710018ca",
42
+ "@blocklet/constant": "1.16.19-beta-ba354e01",
43
43
  "@blocklet/launcher-layout": "2.2.40",
44
44
  "@blocklet/list": "^0.12.53",
45
- "@blocklet/meta": "1.16.19-beta-710018ca",
45
+ "@blocklet/meta": "1.16.19-beta-ba354e01",
46
46
  "@blocklet/ui-react": "^2.8.16",
47
47
  "@blocklet/uploader": "^0.0.45",
48
48
  "@emotion/react": "^11.10.4",
@@ -100,7 +100,7 @@
100
100
  "babel-plugin-inline-react-svg": "^1.1.2",
101
101
  "glob": "^10.3.3"
102
102
  },
103
- "gitHead": "23518dd7a84664e2a015284d5867cc31540fbdb0",
103
+ "gitHead": "d685f8ca8f2fe49298aa0e94f2f15e1e7ebf761b",
104
104
  "exports": {
105
105
  ".": {
106
106
  "import": "./es/index.js",
@@ -114,6 +114,10 @@
114
114
  "import": "./es/blocklet/access/index.js",
115
115
  "require": "./lib/blocklet/access/index.js"
116
116
  },
117
+ "./lib/blocklet/component/did-space": {
118
+ "import": "./es/blocklet/component/did-space/index.js",
119
+ "require": "./lib/blocklet/component/did-space/index.js"
120
+ },
117
121
  "./lib/blocklet/component": {
118
122
  "import": "./es/blocklet/component/index.js",
119
123
  "require": "./lib/blocklet/component/index.js"