@abtnode/ux 1.16.27-beta-595ed831 → 1.16.27-beta-74c4e335

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.
@@ -1,4 +1,4 @@
1
- import { useState, useEffect, lazy, useRef, useCallback, useMemo } from 'react';
1
+ import { useState, useEffect, lazy, useRef, useCallback, useMemo, Suspense } from 'react';
2
2
  import { Link, useNavigate, useParams } from 'react-router-dom';
3
3
  import styled from '@emotion/styled';
4
4
  import PropTypes from 'prop-types';
@@ -553,6 +553,7 @@ export default function CreateRelease({
553
553
  app: blocklet,
554
554
  readOnly: readOnly,
555
555
  component: resourceItem,
556
+ componentDid: componentDid,
556
557
  initUrl: initUrl,
557
558
  projectId: projectId === UNOWNED_DID ? '' : projectId,
558
559
  releaseUsedLast: releaseUsedLast,
@@ -974,55 +975,61 @@ export default function CreateRelease({
974
975
  })]
975
976
  })]
976
977
  })]
977
- }), /*#__PURE__*/_jsx(UploaderComponent, {
978
- ref: uploaderLogoRef,
979
- popup: true,
980
- onUploadFinish: result => {
981
- setParams({
982
- blockletLogo: result.data.filename
983
- });
984
- setInitLogoUrl('');
985
- uploaderLogoRef.current.close();
986
- },
987
- plugins: ['ImageEditor'],
988
- installerProps: {
989
- disabled: true
990
- },
991
- apiPathProps: {
992
- uploader: uploadLogoPrefix,
993
- disableMediaKitPrefix: true
994
- },
995
- coreProps: {
996
- restrictions: {
997
- allowedFileTypes,
998
- maxFileSize,
999
- maxNumberOfFiles: 1
978
+ }), /*#__PURE__*/_jsx(Suspense, {
979
+ fallback: /*#__PURE__*/_jsx(EmptySpinner, {}),
980
+ children: /*#__PURE__*/_jsx(UploaderComponent, {
981
+ ref: uploaderLogoRef,
982
+ popup: true,
983
+ onUploadFinish: result => {
984
+ setParams({
985
+ blockletLogo: result.data.filename
986
+ });
987
+ setInitLogoUrl('');
988
+ uploaderLogoRef.current.close();
989
+ },
990
+ plugins: ['ImageEditor'],
991
+ installerProps: {
992
+ disabled: true
993
+ },
994
+ apiPathProps: {
995
+ uploader: uploadLogoPrefix,
996
+ disableMediaKitPrefix: true
997
+ },
998
+ coreProps: {
999
+ restrictions: {
1000
+ allowedFileTypes,
1001
+ maxFileSize,
1002
+ maxNumberOfFiles: 1
1003
+ }
1000
1004
  }
1001
- }
1002
- }, "uploader-logo"), /*#__PURE__*/_jsx(UploaderComponent, {
1003
- ref: uploaderScreenshotRef,
1004
- popup: true,
1005
- onUploadFinish: result => {
1006
- const blockletScreenshots = params.blockletScreenshots || [];
1007
- blockletScreenshots.push(result.data?.filename);
1008
- setParams({
1009
- blockletScreenshots
1010
- });
1011
- uploaderScreenshotRef.current.close();
1012
- },
1013
- plugins: ['ImageEditor'],
1014
- apiPathProps: {
1015
- uploader: uploadScreenshotPrefix,
1016
- disableMediaKitPrefix: true
1017
- },
1018
- coreProps: {
1019
- restrictions: {
1020
- allowedFileTypes,
1021
- maxFileSize,
1022
- maxNumberOfFiles: 5 - screenshotUrls.length
1005
+ }, "uploader-logo")
1006
+ }), /*#__PURE__*/_jsx(Suspense, {
1007
+ fallback: /*#__PURE__*/_jsx(EmptySpinner, {}),
1008
+ children: /*#__PURE__*/_jsx(UploaderComponent, {
1009
+ ref: uploaderScreenshotRef,
1010
+ popup: true,
1011
+ onUploadFinish: result => {
1012
+ const blockletScreenshots = params.blockletScreenshots || [];
1013
+ blockletScreenshots.push(result.data?.filename);
1014
+ setParams({
1015
+ blockletScreenshots
1016
+ });
1017
+ uploaderScreenshotRef.current.close();
1018
+ },
1019
+ plugins: ['ImageEditor'],
1020
+ apiPathProps: {
1021
+ uploader: uploadScreenshotPrefix,
1022
+ disableMediaKitPrefix: true
1023
+ },
1024
+ coreProps: {
1025
+ restrictions: {
1026
+ allowedFileTypes,
1027
+ maxFileSize,
1028
+ maxNumberOfFiles: 5 - screenshotUrls.length
1029
+ }
1023
1030
  }
1024
- }
1025
- }, "uploader-screenshot")]
1031
+ }, "uploader-screenshot")
1032
+ })]
1026
1033
  }), /*#__PURE__*/_jsxs(Box, {
1027
1034
  display: "flex",
1028
1035
  mt: 3,
@@ -8,6 +8,7 @@ import Box from '@mui/material/Box';
8
8
  import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
9
9
  import Toast from '@arcblock/ux/lib/Toast';
10
10
  import pAll from 'p-all';
11
+ import hasStartEngine from '@blocklet/meta/lib/has-start-engine';
11
12
  import Tree from './tree';
12
13
  import { useNodeContext } from '../../contexts/node';
13
14
  import { axios } from '../../util/api';
@@ -95,6 +96,7 @@ export default function Resource({
95
96
  error,
96
97
  saveSelectedEventsRef,
97
98
  readOnly,
99
+ componentDid,
98
100
  initialResources = {},
99
101
  setResourceComponentsMap,
100
102
  initUrl
@@ -148,18 +150,20 @@ export default function Resource({
148
150
  if (releaseId && projectId && !loadedDataRef.current) {
149
151
  pAll(app.children.map(child => {
150
152
  return async () => {
151
- if (!child) {
153
+ // If it is under a certain tenant, only the data of the current tenant is requested
154
+ if (componentDid && componentDid !== child.meta.did) {
155
+ return;
156
+ }
157
+ // If the component does not have a mount point or does not start the engine, the resource is not requested
158
+ if (!child?.mountPoint || !hasStartEngine(child?.meta)) {
152
159
  return;
153
160
  }
154
- let tree;
155
161
  try {
156
- if (child.mountPoint) {
157
- const res = await axios.get(parseUrl(child, projectId, releaseId, locale, initUrl));
158
- tree = fillParent(res?.data?.resources || []);
159
- setResources({
160
- [child?.meta.did]: tree
161
- });
162
- }
162
+ const resTree = await axios.get(parseUrl(child, projectId, releaseId, locale, initUrl));
163
+ const tree = fillParent(resTree?.data?.resources || []);
164
+ setResources({
165
+ [child?.meta.did]: tree
166
+ });
163
167
  const res = await api.getSelectedResources({
164
168
  input: {
165
169
  did: app.meta.did,
@@ -197,7 +201,7 @@ export default function Resource({
197
201
  if (initialResources && Object.keys(initialResources).length) {
198
202
  app.children.forEach(child => {
199
203
  const list = initialResources[child.meta.did];
200
- if (list) {
204
+ if (list?.length) {
201
205
  setSelectedResourceIds({
202
206
  [child.meta.did]: list
203
207
  });
@@ -252,7 +256,8 @@ Resource.propTypes = {
252
256
  }),
253
257
  initialResources: PropTypes.object,
254
258
  initUrl: PropTypes.object,
255
- setResourceComponentsMap: PropTypes.func
259
+ setResourceComponentsMap: PropTypes.func,
260
+ componentDid: PropTypes.string
256
261
  };
257
262
  Resource.defaultProps = {
258
263
  error: '',
@@ -262,7 +267,8 @@ Resource.defaultProps = {
262
267
  },
263
268
  initUrl: null,
264
269
  initialResources: {},
265
- setResourceComponentsMap: () => {}
270
+ setResourceComponentsMap: () => {},
271
+ componentDid: ''
266
272
  };
267
273
  const Container = styled(Box)`
268
274
  border: 1px solid #ccc;
@@ -112,48 +112,55 @@ export default function Tree({
112
112
  event.stopPropagation();
113
113
  };
114
114
  const hadChildren = data.some(node => node.children?.length > 0);
115
- const renderTree = node => /*#__PURE__*/_jsx(TreeItem, {
116
- nodeId: node.id,
117
- label: /*#__PURE__*/_jsx(FormControlLabel, {
118
- onClick: stopExpand,
119
- control: /*#__PURE__*/_jsx(Checkbox, {
120
- size: "small",
121
- checked: selectedNodes.indexOf(node.id) !== -1,
122
- tabIndex: -1,
123
- disableRipple: true,
124
- onClick: event => handleNodeSelect(event, node.id),
125
- disabled: disabled
126
- }),
127
- label: /*#__PURE__*/_jsxs(Box, {
128
- className: "content",
129
- children: [/*#__PURE__*/_jsxs(Box, {
130
- display: "flex",
131
- alignItems: "center",
132
- children: [node.icon && /*#__PURE__*/_jsx(ResourceIcon, {
133
- icon: node.icon
134
- }), /*#__PURE__*/_jsx(Box, {
135
- className: "name",
136
- children: node.name
137
- }), node.url && /*#__PURE__*/_jsx("a", {
138
- href: node.url,
139
- target: "_blank",
140
- rel: "noreferrer",
141
- className: "link",
142
- children: /*#__PURE__*/_jsx(OpenInNewIcon, {
143
- className: "link-icon"
144
- })
115
+ const renderTree = node => {
116
+ const checked = selectedNodes.indexOf(node.id) !== -1;
117
+ const hasChildren = Array.isArray(node.children);
118
+ const allChild = getAllChild(node.id);
119
+ const indeterminate = hasChildren && !checked && selectedNodes.some(id => allChild.includes(id));
120
+ return /*#__PURE__*/_jsx(TreeItem, {
121
+ nodeId: node.id,
122
+ label: /*#__PURE__*/_jsx(FormControlLabel, {
123
+ onClick: stopExpand,
124
+ control: /*#__PURE__*/_jsx(Checkbox, {
125
+ size: "small",
126
+ checked: checked,
127
+ indeterminate: indeterminate,
128
+ tabIndex: -1,
129
+ disableRipple: true,
130
+ onClick: event => handleNodeSelect(event, node.id),
131
+ disabled: disabled
132
+ }),
133
+ label: /*#__PURE__*/_jsxs(Box, {
134
+ className: "content",
135
+ children: [/*#__PURE__*/_jsxs(Box, {
136
+ display: "flex",
137
+ alignItems: "center",
138
+ children: [node.icon && /*#__PURE__*/_jsx(ResourceIcon, {
139
+ icon: node.icon
140
+ }), /*#__PURE__*/_jsx(Box, {
141
+ className: "name",
142
+ children: node.name
143
+ }), node.url && /*#__PURE__*/_jsx("a", {
144
+ href: node.url,
145
+ target: "_blank",
146
+ rel: "noreferrer",
147
+ className: "link",
148
+ children: /*#__PURE__*/_jsx(OpenInNewIcon, {
149
+ className: "link-icon"
150
+ })
151
+ })]
152
+ }), !!node.description && /*#__PURE__*/_jsx(Box, {
153
+ className: "description",
154
+ children: node.description
155
+ }), !!node.images?.length && /*#__PURE__*/_jsx(Images, {
156
+ className: "images",
157
+ data: node.images
145
158
  })]
146
- }), !!node.description && /*#__PURE__*/_jsx(Box, {
147
- className: "description",
148
- children: node.description
149
- }), !!node.images?.length && /*#__PURE__*/_jsx(Images, {
150
- className: "images",
151
- data: node.images
152
- })]
153
- })
154
- }),
155
- children: Array.isArray(node.children) ? node.children.map(renderTree) : null
156
- }, node.id);
159
+ })
160
+ }),
161
+ children: hasChildren ? node.children.map(renderTree) : null
162
+ }, node.id);
163
+ };
157
164
  return /*#__PURE__*/_jsx(StyledTreeView, {
158
165
  className: classnames(!hadChildren && 'no-children'),
159
166
  multiSelect: true,
@@ -141,6 +141,8 @@ function AddDomainAliasComponent({
141
141
  params: state.confirmSetting.params,
142
142
  onConfirm: state.confirmSetting.onConfirm,
143
143
  onCancel: state.confirmSetting.onCancel,
144
+ showConfirm: false,
145
+ showCancel: true,
144
146
  displayError: false,
145
147
  color: "primary",
146
148
  loading: state.loading,
@@ -1,28 +1,30 @@
1
1
  import { getDidDomainServiceURL } from '@abtnode/util/lib/did-domain';
2
2
  import Connect from '@arcblock/did-connect/lib/Connect';
3
- import Button from '@arcblock/ux/lib/Button';
4
3
  import Center from '@arcblock/ux/lib/Center';
5
4
  import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
6
5
  import Toast from '@arcblock/ux/lib/Toast';
6
+ import useMobile from '@blocklet/ui-react/lib/hooks/use-mobile';
7
7
  import IconInfo from '@mui/icons-material/InfoOutlined';
8
8
  import OpenInNewIcon from '@mui/icons-material/OpenInNew';
9
+ import LoadingButton from '@mui/lab/LoadingButton';
9
10
  import Box from '@mui/material/Box';
11
+ import CircularProgress from '@mui/material/CircularProgress';
10
12
  import Link from '@mui/material/Link';
11
13
  import TextField from '@mui/material/TextField';
14
+ import Typography from '@mui/material/Typography';
12
15
  import useTheme from '@mui/material/styles/useTheme';
13
16
  import noop from 'lodash/noop';
14
17
  import trim from 'lodash/trim';
15
18
  import PropTypes from 'prop-types';
16
- import useSetState from 'react-use/lib/useSetState';
17
19
  import useAsync from 'react-use/lib/useAsync';
18
- import { CircularProgress } from '@mui/material';
20
+ import useSetState from 'react-use/lib/useSetState';
19
21
  import { useDomainContext } from '../../contexts/domain';
20
22
  import { useNodeContext } from '../../contexts/node';
21
23
  import { sleep, validateDomain } from '../../util';
22
24
  import { axios } from '../../util/api';
23
25
  import DNSTip from './dns-tip';
24
26
  import { parseDomainFromURL } from './util';
25
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
27
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
26
28
  export default function AddDomain({
27
29
  siteId,
28
30
  teamDid,
@@ -47,7 +49,11 @@ export default function AddDomain({
47
49
  } = useNodeContext();
48
50
  const domainContext = useDomainContext();
49
51
  const theme = useTheme();
52
+ const isMobile = useMobile({
53
+ key: 'sm'
54
+ });
50
55
  const [state, setState] = useSetState({
56
+ loading: false,
51
57
  domain: defaultCustomDomain,
52
58
  error: null,
53
59
  type: info?.nftDomainUrl ? 'nftDomain' : 'inputDomain',
@@ -73,6 +79,7 @@ export default function AddDomain({
73
79
  })
74
80
  });
75
81
  }
82
+ const nftDomainService = nftDomainURLState.value;
76
83
  const handleAuthSuccess = async ({
77
84
  domain,
78
85
  nftDid,
@@ -93,7 +100,6 @@ export default function AddDomain({
93
100
  });
94
101
  await sleep(2000);
95
102
  setState({
96
- confirmSetting: null,
97
103
  showNFTDomainAuth: false,
98
104
  type: 'nftDomain'
99
105
  });
@@ -111,14 +117,85 @@ export default function AddDomain({
111
117
  });
112
118
  }
113
119
  };
120
+ const handleAdd = async () => {
121
+ try {
122
+ setState({
123
+ loading: true
124
+ });
125
+ const domain = parseDomainFromURL(state.domain);
126
+ if (info.nftDomainUrl && nftDomainService) {
127
+ const result = await api.isDidDomain({
128
+ input: {
129
+ domain
130
+ }
131
+ });
132
+ if (result.value === true) {
133
+ setState({
134
+ showNFTDomainAuth: true
135
+ });
136
+ return;
137
+ }
138
+ }
139
+ await api.addDomainAlias({
140
+ input: {
141
+ id: siteId,
142
+ domainAlias: domain,
143
+ teamDid
144
+ }
145
+ });
146
+ await sleep(2000);
147
+ setState({
148
+ loading: false
149
+ });
150
+ onSuccess({
151
+ domain,
152
+ type: state.type
153
+ });
154
+ } catch (error) {
155
+ domainContext.setError(error.message);
156
+ setState({
157
+ loading: false
158
+ });
159
+ }
160
+ };
114
161
  const error = domainContext.error || state.error; // TODO: state error 可能不需要了
115
162
 
116
- const nftDomainService = nftDomainURLState.value;
117
163
  const domainTypes = {
118
164
  inputDomain: {
119
165
  name: t('router.domainAlias.inputDomain'),
120
- component: /*#__PURE__*/_jsxs(_Fragment, {
121
- children: [/*#__PURE__*/_jsx(TextField, {
166
+ component: /*#__PURE__*/_jsxs(Box, {
167
+ sx: {
168
+ display: 'flex',
169
+ flexDirection: 'column',
170
+ gap: '8px'
171
+ },
172
+ children: [info.nftDomainUrl && nftDomainService && /*#__PURE__*/_jsxs(Box, {
173
+ sx: {
174
+ maxWidth: '640px',
175
+ color: theme.palette.text.primary
176
+ },
177
+ children: [/*#__PURE__*/_jsx(Typography, {
178
+ children: t('router.domainAlias.addDomainNFT.tips')
179
+ }), /*#__PURE__*/_jsxs(Typography, {
180
+ component: "div",
181
+ children: [t('router.domainAlias.addDomainNFT.buyTip'), /*#__PURE__*/_jsxs(Link, {
182
+ href: nftDomainService.base,
183
+ sx: {
184
+ display: 'inline-flex',
185
+ alignItems: 'center'
186
+ },
187
+ target: "_blank",
188
+ children: [/*#__PURE__*/_jsx("i", {
189
+ children: t('router.domainAlias.addDomainNFT.buy')
190
+ }), /*#__PURE__*/_jsx(OpenInNewIcon, {
191
+ fontSize: "small"
192
+ })]
193
+ })]
194
+ })]
195
+ }), /*#__PURE__*/_jsx(TextField, {
196
+ sx: {
197
+ display: 'block'
198
+ },
122
199
  label: t('router.domainAlias.add.domainDescription'),
123
200
  helperText: state.type === 'inputDomain' && error || t('router.domainAlias.add.helperText'),
124
201
  inputProps: {
@@ -154,6 +231,20 @@ export default function AddDomain({
154
231
  domainContext.setError(null);
155
232
  }
156
233
  }
234
+ }), /*#__PURE__*/_jsx(Box, {
235
+ sx: {
236
+ width: '100%',
237
+ display: 'flex',
238
+ justifyContent: 'flex-end'
239
+ },
240
+ children: /*#__PURE__*/_jsx(LoadingButton, {
241
+ "data-cy": "confirm-add-domain",
242
+ fullWidth: isMobile,
243
+ variant: "contained",
244
+ loading: state.loading,
245
+ onClick: handleAdd,
246
+ children: t('common.add')
247
+ })
157
248
  }), /*#__PURE__*/_jsxs(Box, {
158
249
  sx: {
159
250
  cursor: 'pointer',
@@ -161,7 +252,6 @@ export default function AddDomain({
161
252
  display: 'flex',
162
253
  alignItems: 'center',
163
254
  gap: '4px',
164
- marginTop: '8px',
165
255
  lineHeight: 1,
166
256
  color: theme.palette.primary.main
167
257
  },
@@ -181,73 +271,6 @@ export default function AddDomain({
181
271
  })
182
272
  }
183
273
  };
184
- if (info?.nftDomainUrl && nftDomainService) {
185
- domainTypes.nftDomain = {
186
- name: t('router.domainAlias.nftDomain'),
187
- component: /*#__PURE__*/_jsxs(_Fragment, {
188
- children: [/*#__PURE__*/_jsxs(Box, {
189
- sx: {
190
- maxWidth: '640px',
191
- color: 'text.secondary',
192
- fontSize: '14px'
193
- },
194
- children: [/*#__PURE__*/_jsx("div", {
195
- children: t('router.domainAlias.addDomainNFT.tips')
196
- }), /*#__PURE__*/_jsxs("div", {
197
- children: [t('router.domainAlias.addDomainNFT.buyTip'), /*#__PURE__*/_jsxs(Link, {
198
- href: nftDomainService.base,
199
- sx: {
200
- fontSize: '14px',
201
- display: 'inline-flex',
202
- alignItems: 'center'
203
- },
204
- target: "_blank",
205
- children: [/*#__PURE__*/_jsx("i", {
206
- children: t('router.domainAlias.addDomainNFT.buy')
207
- }), /*#__PURE__*/_jsx(OpenInNewIcon, {
208
- fontSize: "small"
209
- })]
210
- })]
211
- })]
212
- }), /*#__PURE__*/_jsx(Button, {
213
- sx: {
214
- marginTop: '8px'
215
- },
216
- disabled: disabled,
217
- onClick: () => setState({
218
- showNFTDomainAuth: true
219
- }),
220
- variant: "contained",
221
- children: t('router.domainAlias.addDomainNFT.showNFT')
222
- }), /*#__PURE__*/_jsx(Connect, {
223
- open: state.showNFTDomainAuth,
224
- popup: true,
225
- useSocket: false,
226
- action: "authorize",
227
- baseUrl: nftDomainService.api,
228
- checkFn: axios.create({
229
- baseURL: nftDomainService.api
230
- }).get,
231
- extraParams: {
232
- delegatee: appId,
233
- delegateePk: appPk
234
- },
235
- onSuccess: handleAuthSuccess,
236
- onClose: () => setState({
237
- showNFTDomainAuth: false
238
- }),
239
- checkTimeout: 60 * 5000,
240
- showDownload: false,
241
- messages: {
242
- title: t('router.domainAlias.addDomainNFT.connect.title'),
243
- scan: t('router.domainAlias.addDomainNFT.connect.scan'),
244
- confirm: t('router.domainAlias.addDomainNFT.connect.confirm'),
245
- success: t('router.domainAlias.addDomainNFT.connect.success')
246
- }
247
- })]
248
- })
249
- };
250
- }
251
274
  const inputDomainTypes = Object.keys(domainTypes);
252
275
  inputDomainTypes.sort(x => {
253
276
  // 优先展示 nft domain
@@ -258,14 +281,14 @@ export default function AddDomain({
258
281
  });
259
282
  return /*#__PURE__*/_jsx(Box, {
260
283
  ...props,
261
- children: /*#__PURE__*/_jsx(Box, {
284
+ children: /*#__PURE__*/_jsxs(Box, {
262
285
  sx: {
263
286
  display: 'flex',
264
287
  flexDirection: 'column',
265
288
  justifyContent: 'flex-start',
266
289
  gap: '1em'
267
290
  },
268
- children: inputDomainTypes.map((type, index) => /*#__PURE__*/_jsxs(Box, {
291
+ children: [inputDomainTypes.map((type, index) => /*#__PURE__*/_jsxs(Box, {
269
292
  children: [inputDomainTypes.length > 1 && /*#__PURE__*/_jsx(Box, {
270
293
  sx: {
271
294
  fontWeight: 700,
@@ -278,7 +301,34 @@ export default function AddDomain({
278
301
  },
279
302
  children: domainTypes[type]?.component
280
303
  })]
281
- }, type))
304
+ }, type)), /*#__PURE__*/_jsx(Connect, {
305
+ open: state.showNFTDomainAuth,
306
+ popup: true,
307
+ useSocket: false,
308
+ action: "authorize",
309
+ baseUrl: nftDomainService.api,
310
+ checkFn: axios.create({
311
+ baseURL: nftDomainService.api
312
+ }).get,
313
+ extraParams: {
314
+ delegatee: appId,
315
+ delegateePk: appPk,
316
+ domain: state.domain
317
+ },
318
+ onSuccess: handleAuthSuccess,
319
+ onClose: () => setState({
320
+ showNFTDomainAuth: false,
321
+ loading: false
322
+ }),
323
+ checkTimeout: 60 * 5000,
324
+ showDownload: false,
325
+ messages: {
326
+ title: t('router.domainAlias.addDomainNFT.connect.title'),
327
+ scan: t('router.domainAlias.addDomainNFT.connect.scan'),
328
+ confirm: t('router.domainAlias.addDomainNFT.connect.confirm'),
329
+ success: t('router.domainAlias.addDomainNFT.connect.success')
330
+ }
331
+ })]
282
332
  })
283
333
  });
284
334
  }
package/lib/confirm.js CHANGED
@@ -19,6 +19,7 @@ export default function ConfirmDialog({
19
19
  title,
20
20
  description,
21
21
  showCancel,
22
+ showConfirm,
22
23
  cancel,
23
24
  confirm,
24
25
  color,
@@ -104,7 +105,7 @@ export default function ConfirmDialog({
104
105
  color: "inherit",
105
106
  "data-cy": "cancel-confirm-dialog",
106
107
  children: cancel || changeLocale('common.cancel')
107
- }), /*#__PURE__*/_jsxs(Button, {
108
+ }), showConfirm && /*#__PURE__*/_jsxs(Button, {
108
109
  onClick: e => {
109
110
  e.stopPropagation();
110
111
  onCallback(onConfirm);
@@ -131,6 +132,7 @@ ConfirmDialog.propTypes = {
131
132
  description: PropTypes.any.isRequired,
132
133
  // can be a function that renders different content based on params
133
134
  showCancel: PropTypes.bool,
135
+ showConfirm: PropTypes.bool,
134
136
  cancel: PropTypes.string,
135
137
  color: PropTypes.string,
136
138
  confirm: PropTypes.string,
@@ -146,6 +148,7 @@ ConfirmDialog.defaultProps = {
146
148
  children: undefined,
147
149
  onCancel: () => {},
148
150
  showCancel: true,
151
+ showConfirm: true,
149
152
  cancel: '',
150
153
  confirm: 'Confirm',
151
154
  color: 'error',
package/lib/locales/ar.js CHANGED
@@ -1048,14 +1048,14 @@ export default {
1048
1048
  },
1049
1049
  addDomainNFT: {
1050
1050
  showNFT: 'ضبط النطاق تلقائيًا',
1051
- tips: 'سيقوم نطاق DID بحل اسم النطاق تلقائيًا، ولا حاجة لتكوينه يدويًا، وسيقوم التطبيق بتحديث سجل القرار لاسم النطاق تلقائيًا عند الحاجة.',
1051
+ tips: 'يمكنك إدخال نطاق تم شراؤه من DID Domain. في حالة اكتشاف نطاق DID، يجب عليك تقديم نطاق DID NFT للاستمرار.',
1052
1052
  connect: {
1053
1053
  title: 'يرجى عرض مجال NFT الخاص بك',
1054
1054
  scan: 'يرجى مسح الرمز الاستجابة السريعة التالي باستخدام محفظة DID الخاصة بك للسماح لـ blocklet باستخدام نطاقك.',
1055
1055
  confirm: 'يرجى التأكيد على محفظتك المعرّفة',
1056
1056
  success: 'تم التفويض بنجاح'
1057
1057
  },
1058
- buyTip: 'إذا كان لديك نطاق DID Domain NFT بعد ،',
1058
+ buyTip: 'سيقوم تطبيق DID Domain بإجراء حل اسم النطاق تلقائيًا، ولا داعي لتكوينه يدويًا، كما سيقوم التطبيق بتحديث سجل الحل الخاص باسم النطاق تلقائيًا عند الحاجة. في حال لم يكن لديك تطبيق DID Domain NFT حتى الآن،',
1059
1059
  buy: 'اشترِه الآن!'
1060
1060
  },
1061
1061
  delete: {
package/lib/locales/de.js CHANGED
@@ -1048,14 +1048,14 @@ export default {
1048
1048
  },
1049
1049
  addDomainNFT: {
1050
1050
  showNFT: 'Konfiguriere die Domain automatisch',
1051
- tips: 'DID-Domain löst den Domainnamen automatisch auf, es ist keine manuelle Konfiguration erforderlich, und die Anwendung aktualisiert den Auflösungsdatensatz des Domainnamens automatisch, wenn nötig.',
1051
+ tips: 'Sie können eine über DID Domain erworbene Domäne eingeben. Wenn eine DID Domain erkannt wird, müssen Sie die DID Domain NFT vorlegen, um fortzufahren.',
1052
1052
  connect: {
1053
1053
  title: 'Bitte zeigen Sie Ihr Domain-NFT',
1054
1054
  scan: 'Scannen Sie den folgenden QR-Code mit Ihrer DID Wallet, um blocklet zu autorisieren, Ihre Domain zu verwenden.',
1055
1055
  confirm: 'Bitte bestätigen Sie in Ihrem DID Wallet',
1056
1056
  success: 'Autorisierung erfolgreich'
1057
1057
  },
1058
- buyTip: 'Wenn Sie noch keine DID-Domain-NFT haben,',
1058
+ buyTip: 'DID Domain übernimmt die Auflösung des Domänennamens automatisch. Sie müssen ihn nicht manuell konfigurieren, und die Anwendung aktualisiert den Auflösungsdatensatz des Domänennamens bei Bedarf automatisch. Wenn Sie noch keine DID Domain NFT haben,',
1059
1059
  buy: 'Jetzt kaufen!'
1060
1060
  },
1061
1061
  delete: {
package/lib/locales/en.js CHANGED
@@ -1039,14 +1039,14 @@ export default {
1039
1039
  },
1040
1040
  addDomainNFT: {
1041
1041
  showNFT: 'Configure domain automatically',
1042
- tips: 'DID Domain will do the domain name resolution automatically, no need to configure it manually, and the application will update the resolution record of the domain name automatically when needed.',
1042
+ tips: 'You can enter a domain purchased from DID Domain. If a DID Domain is detected, you must present the DID Domain NFT to continue.',
1043
1043
  connect: {
1044
1044
  title: 'Please show your Domain NFT',
1045
1045
  scan: 'Scan following QR code with DID Wallet to authorize to blocklet to use your domain',
1046
1046
  confirm: 'Confirm on your DID Wallet',
1047
1047
  success: 'Authorization Successfully'
1048
1048
  },
1049
- buyTip: "If your don't have DID Domain NFT yet, ",
1049
+ buyTip: "DID Domain will do the domain name resolution automatically, no need to configure it manually, and the application will update the resolution record of the domain name automatically when needed. If your don't have DID Domain NFT yet, ",
1050
1050
  buy: 'buy it now!'
1051
1051
  },
1052
1052
  delete: {
package/lib/locales/es.js CHANGED
@@ -1048,14 +1048,14 @@ export default {
1048
1048
  },
1049
1049
  addDomainNFT: {
1050
1050
  showNFT: 'Configurar dominio automáticamente',
1051
- tips: 'El dominio DID realizará la resolución del nombre de dominio automáticamente, no es necesario configurarlo manualmente, y la aplicación actualizará automáticamente el registro de resolución del nombre de dominio cuando sea necesario.',
1051
+ tips: 'Puedes ingresar a un dominio comprado del DID Domain. Si se detecta un DID Domain, debes presentar el NFT DID Domain para continuar.',
1052
1052
  connect: {
1053
1053
  title: 'Por favor muestra tu NFT de dominio',
1054
1054
  scan: 'Escanee el siguiente código QR con DID Wallet para autorizar a Blocklet a usar su dominio',
1055
1055
  confirm: 'Confirma en tu billetera de DID',
1056
1056
  success: 'Autorización Exitosa'
1057
1057
  },
1058
- buyTip: 'Si aún no tienes un Dominio NFT DID, ',
1058
+ buyTip: 'El dominio DID hará la resolución del nombre del dominio automáticamente, sin necesidad de configurarlo manualmente, y la aplicación actualizará el registro de resolución del nombre de dominio automáticamente cuando sea necesario. Si todavía no tienes NFT de dominio DID,',
1059
1059
  buy: '¡Cómpralo ahora!'
1060
1060
  },
1061
1061
  delete: {
package/lib/locales/fr.js CHANGED
@@ -1048,14 +1048,14 @@ export default {
1048
1048
  },
1049
1049
  addDomainNFT: {
1050
1050
  showNFT: 'Configurer le domaine automatiquement',
1051
- tips: "Le domaine DID effectuera automatiquement la résolution du nom de domaine, il n'est pas nécessaire de le configurer manuellement, et l'application mettra à jour automatiquement l'enregistrement de résolution du nom de domaine lorsque nécessaire.",
1051
+ tips: 'Vous pouvez saisir un domaine acheté auprès de DID Domain. Si un domaine DID est détecté, vous devez présenter le domaine DID NFT pour continuer.',
1052
1052
  connect: {
1053
1053
  title: 'Veuillez montrer votre Domaine NFT',
1054
1054
  scan: 'Veuillez numériser le code QR suivant avec votre DID Wallet pour autoriser le blocklet à utiliser votre domaine.',
1055
1055
  confirm: 'Veuillez confirmer sur votre portefeuille DID',
1056
1056
  success: 'Autorisation réussie'
1057
1057
  },
1058
- buyTip: "Si vous n'avez pas encore de DID Domain NFT,",
1058
+ buyTip: "DID Domain effectuera la résolution du nom de domaine automatiquement, pas besoin de le configurer manuellement, et l'application mettra à jour l'enregistrement de résolution du nom de domaine automatiquement en cas de besoin. Si vous n'avez pas encore de NFT DID Domain,",
1059
1059
  buy: 'Achetez-le maintenant !'
1060
1060
  },
1061
1061
  delete: {
package/lib/locales/hi.js CHANGED
@@ -1048,14 +1048,14 @@ export default {
1048
1048
  },
1049
1049
  addDomainNFT: {
1050
1050
  showNFT: 'डोमेन को स्वचालित रूप से समाकृत करें',
1051
- tips: 'DID डोमेन स्वचालित रूप से डोमेन नाम का समाधान करेगा, कोई योग्यता की आवश्यकता नहीं है, और जब जरूरत होती है तो एप्लिकेशन डोमेन नाम के समाधान रिकॉर्ड को स्वचालित रूप से अपडेट करेगा।',
1051
+ tips: 'आप DID Domain से खरीदी गई डोमेन दर्ज कर सकते हैं। यदि कोई DID डोमेन पहचाना जाता है, तो आपको जारी रखने के लिए DID डोमेन NFT प्रस्तुत करना होगा।',
1052
1052
  connect: {
1053
1053
  title: 'कृपया अपने डोमेन NFT दिखाएं',
1054
1054
  scan: 'अपने डोमेन का उपयोग करने के लिए ब्लॉकलेट को अधिकृत करने के लिए DID वॉलेट के साथ निम्नलिखित QR कोड स्कैन करें।',
1055
1055
  confirm: 'अपने डीआईडी वॉलेट पर पुष्टि करें',
1056
1056
  success: 'प्राधिकरण सफलतापूर्वक'
1057
1057
  },
1058
- buyTip: 'यदि आपके पास अभी तक DID डोमेन NFT नहीं है,',
1058
+ buyTip: 'DID डोमेन डोमेन नाम रिज़ॉल्यूशन अपने आप करेगा, इसे मैन्युअली कॉन्फ़िगर करने की कोई ज़रूरत नहीं है, और एप्लीकेशन ज़रूरत पड़ने पर डोमेन नाम का रिज़ॉल्यूशन रिकॉर्ड खुद ही अपडेट कर देगा। यदि आपके पास अभी तक DID डोमेन NFT नहीं है,',
1059
1059
  buy: 'अभी खरीदें!'
1060
1060
  },
1061
1061
  delete: {
Binary file
package/lib/locales/id.js CHANGED
@@ -1048,14 +1048,14 @@ export default {
1048
1048
  },
1049
1049
  addDomainNFT: {
1050
1050
  showNFT: 'Konfigurasi domain secara otomatis',
1051
- tips: 'DID Domain akan melakukan resolusi nama domain secara otomatis, tidak perlu mengonfigurasinya secara manual, dan aplikasi akan memperbarui catatan resolusi nama domain secara otomatis ketika diperlukan.',
1051
+ tips: 'Anda dapat memasukkan domain yang dibeli dari DID Domain. Jika DID Domain terdeteksi, Anda harus menunjukkan NFT DID Domain untuk melanjutkan.',
1052
1052
  connect: {
1053
1053
  title: 'Tolong tunjukkan NFT Domain Anda',
1054
1054
  scan: 'Pindai kode QR berikut menggunakan Dompet DID untuk mengizinkan Blocklet menggunakan domain Anda',
1055
1055
  confirm: 'Konfirmasi di Dompet Anda DID',
1056
1056
  success: 'Otorisasi Berhasil'
1057
1057
  },
1058
- buyTip: 'Jika Anda belum memiliki NFT Domain DID',
1058
+ buyTip: 'DID Domain akan melakukan resolusi nama domain secara otomatis, tidak perlu dikonfigurasikan secara manual, dan aplikasi akan memperbarui catatan resolusi nama domain secara otomatis saat diperlukan. Jika Anda belum memiliki NFT DID Domain,',
1059
1059
  buy: 'Beli sekarang!'
1060
1060
  },
1061
1061
  delete: {
package/lib/locales/ja.js CHANGED
@@ -1048,14 +1048,14 @@ export default {
1048
1048
  },
1049
1049
  addDomainNFT: {
1050
1050
  showNFT: 'ドメインを自動的に設定する',
1051
- tips: 'DIDドメインはドメイン名の解決を自動的に行います。手動で設定する必要はありません。必要な時にアプリケーションはドメイン名の解決レコードを自動的に更新します。',
1051
+ tips: 'DID ドメインから購入されたドメインを入力できます。DID ドメインが検出された場合は、DID ドメイン NFT を提示して続行する必要があります。',
1052
1052
  connect: {
1053
1053
  title: 'ドメインのNFTを表示してください',
1054
1054
  scan: 'DIDウォレットで次のQRコードをスキャンして、ブロックレットがあなたのドメインを使用することを許可してください',
1055
1055
  confirm: 'あなたのDIDウォレットで確認してください',
1056
1056
  success: '認証が成功しました'
1057
1057
  },
1058
- buyTip: 'まだDIDドメインNFTを持っていない場合、',
1058
+ buyTip: 'DIDドメインは自動的にドメイン名解決を行い、手動で設定する必要はなく、必要に応じてアプリケーションは自動的にドメイン名の解決レコードを更新します。DIDドメインNFTをまだお持ちでない場合は、',
1059
1059
  buy: '今すぐ購入!'
1060
1060
  },
1061
1061
  delete: {
package/lib/locales/ko.js CHANGED
@@ -1048,14 +1048,14 @@ export default {
1048
1048
  },
1049
1049
  addDomainNFT: {
1050
1050
  showNFT: '도메인 자동으로 구성하기',
1051
- tips: 'DID 도메인은 도메인 이름 해결을 자동으로 수행하며 수동으로 구성할 필요가 없으며, 필요할 응용 프로그램이 자동으로 도메인 이름의 해결 레코드를 업데이트합니다.',
1051
+ tips: 'DID 도메인에서 구매한 도메인을 입력할 있습니다. DID 도메인이 감지되면 계속 진행하려면 DID 도메인 NFT를 제시해야 합니다.',
1052
1052
  connect: {
1053
1053
  title: '도메인 NFT를 보여주세요',
1054
1054
  scan: 'DID 지갑을 사용하여 다음 QR 코드를 스캔하여 블록렛이 도메인을 사용할 수 있도록 인증하세요',
1055
1055
  confirm: 'DID 지갑에서 확인하세요',
1056
1056
  success: '인증 성공'
1057
1057
  },
1058
- buyTip: '아직 DID 도메인 NFT 가지고 있지 않다면,',
1058
+ buyTip: 'DID 도메인은 자동으로 도메인 이름 확인을 실행합니다. 수동으로 구성할 필요가 없으며, 애플리케이션은 필요 시 자동으로 도메인 이름 확인 레코드를 업데이트합니다. DID 도메인 NFT 아직 없는 경우',
1059
1059
  buy: '지금 구매하세요!'
1060
1060
  },
1061
1061
  delete: {
package/lib/locales/pt.js CHANGED
@@ -1048,14 +1048,14 @@ export default {
1048
1048
  },
1049
1049
  addDomainNFT: {
1050
1050
  showNFT: 'Configure o domínio automaticamente',
1051
- tips: 'O DID Domain fará a resolução do nome de domínio automaticamente, não sendo necessário configurá-lo manualmente, e o aplicativo atualizará automaticamente o registro de resolução do nome de domínio quando necessário.',
1051
+ tips: 'Você pode inserir um domínio comprado do DID Domain. Se for detectado um DID Domain, você precisará apresentar o NFT do DID Domain para prosseguir.',
1052
1052
  connect: {
1053
1053
  title: 'Por favor, mostre o seu NFT de Domínio',
1054
1054
  scan: 'Escaneie o código QR a seguir com a Carteira DID para autorizar o Blocklet a usar seu domínio',
1055
1055
  confirm: 'Confirme em sua Carteira DID',
1056
1056
  success: 'Autorização Concluída com Sucesso'
1057
1057
  },
1058
- buyTip: 'Se você ainda não tem um NFT de domínio DID',
1058
+ buyTip: 'O DID Domain faz a resolução de nome de domínio automaticamente, não precisa de ser configurado manualmente e a aplicação atualizará o registro de resolução do nome de domínio automaticamente quando for preciso. Se ainda não tem DID Domain NFT,',
1059
1059
  buy: 'Compre agora!'
1060
1060
  },
1061
1061
  delete: {
package/lib/locales/ru.js CHANGED
@@ -1048,14 +1048,14 @@ export default {
1048
1048
  },
1049
1049
  addDomainNFT: {
1050
1050
  showNFT: 'Настройте домен автоматически',
1051
- tips: 'DID-домен автоматически разрешит доменное имя, не требуется ручная настройка, и приложение автоматически обновит запись разрешения доменного имени при необходимости.',
1051
+ tips: 'Вы можете ввести домен, приобретенный у DID Domain. Если обнаружен DID-домен, вы должны предъявить DID-домен NFT, чтобы продолжить.',
1052
1052
  connect: {
1053
1053
  title: 'Пожалуйста, покажите вашу Доменную NFT',
1054
1054
  scan: 'Для авторизации blocklet для использования вашего домена отсканируйте следующий QR-код с помощью DID Wallet.',
1055
1055
  confirm: 'Подтвердите в своем кошельке DID',
1056
1056
  success: 'Успешная авторизация'
1057
1057
  },
1058
- buyTip: 'Если у вас еще нет DID Domain NFT, ',
1058
+ buyTip: 'DID Domain выполнит разрешение доменного имени автоматически. Вам не нужно настраивать его вручную, и приложение обновит запись разрешения доменного имени автоматически, когда это необходимо. Если у вас еще нет DID Domain NFT, ',
1059
1059
  buy: 'Купите сейчас!'
1060
1060
  },
1061
1061
  delete: {
package/lib/locales/th.js CHANGED
@@ -1048,14 +1048,14 @@ export default {
1048
1048
  },
1049
1049
  addDomainNFT: {
1050
1050
  showNFT: 'กำหนดค่าโดเมนอัตโนมัติ',
1051
- tips: 'โดเมน DID จะดำเนินการตีความชื่อโดเมนโดยอัตโนมัติ ไม่จำเป็นต้องกำหนดค่าด้วยตนเอง และแอปพลิเคชันจะอัปเดตบันทึกการตีความชื่อโดเมนโดยอัตโนมัติเมื่อจำเป็น',
1051
+ tips: 'คุณสามารถป้อนโดเมนที่ซื้อจาก DID Domain ได้ หากตรวจพบ DID Domain คุณต้องนำเสนอ NFT ของ DID Domain เพื่อดำเนินการต่อ',
1052
1052
  connect: {
1053
1053
  title: 'กรุณาแสดง NFT โดเมนของคุณ',
1054
1054
  scan: 'สแกนรหัส QR ต่อไปนี้ด้วยกระเป๋าเงินดิจิตอลเพื่อให้ Blocklet เข้าถึงโดเมนของคุณ',
1055
1055
  confirm: 'ยืนยันในกระเป๋าเงินของคุณ DID',
1056
1056
  success: 'อนุญาตสำเร็จ'
1057
1057
  },
1058
- buyTip: 'หากคุณยังไม่มี DID Domain NFT',
1058
+ buyTip: 'DID Domain จะทำการแก้ไขชื่อโดเมนโดยอัตโนมัติ ไม่ต้องกำหนดค่าด้วยตนเอง และแอปพลิเคชันจะอัปเดตระเบียนการแก้ไขชื่อโดเมนโดยอัตโนมัติเมื่อจำเป็น หากคุณยังไม่มี DID Domain NFT',
1059
1059
  buy: 'ซื้อเดี๋ยวนี้!'
1060
1060
  },
1061
1061
  delete: {
package/lib/locales/vi.js CHANGED
@@ -1048,14 +1048,14 @@ export default {
1048
1048
  },
1049
1049
  addDomainNFT: {
1050
1050
  showNFT: 'Cấu hình tên miền tự động',
1051
- tips: 'DID Domain sẽ tự động thực hiện việc giải quyết tên miền, không cần thiết phải cấu hình thủ công ứng dụng sẽ tự động cập nhật bản ghi giải quyết tên miền khi cần thiết.',
1051
+ tips: 'Bạn có thể nhập một miền được mua từ DID Domain. Nếu phát hiện miền DID Domain, bạn phải trình bày NFT DID Domain để tiếp tục.',
1052
1052
  connect: {
1053
1053
  title: 'Xin vui lòng hiển thị NFT Domain của bạn',
1054
1054
  scan: 'Quét mã QR sau bằng Ví DID để ủy quyền cho Blocklet sử dụng miền của bạn',
1055
1055
  confirm: 'Xác nhận trên Ví DID của bạn',
1056
1056
  success: 'Xác nhận thành công'
1057
1057
  },
1058
- buyTip: 'Nếu bạn chưa có DID Domain NFT',
1058
+ buyTip: 'DID Domain sẽ thực hiện phân giải tên miền tự động, không cần phải cấu hình thủ công và ứng dụng sẽ tự động cập nhật bản ghi phân giải của tên miền khi cần thiết. Nếu bạn chưa có DID Domain NFT,',
1059
1059
  buy: 'Mua ngay!'
1060
1060
  },
1061
1061
  delete: {
@@ -1048,14 +1048,14 @@ export default {
1048
1048
  },
1049
1049
  addDomainNFT: {
1050
1050
  showNFT: '自動配置網域',
1051
- tips: 'DID域名將自動執行域名解析,無需手動配置,當需要時應用程式將自動更新域名的解析記錄。',
1051
+ tips: '您可以輸入從 DID Domain 購買的網域。如果檢測到 DID Domain,您必須出示 DID Domain NFT 才能繼續。',
1052
1052
  connect: {
1053
1053
  title: '請展示你的域名 NFT',
1054
1054
  scan: '使用DID錢包掃描以下QR碼以授權Blocklet使用您的域名',
1055
1055
  confirm: '在您的DID錢包上確認',
1056
1056
  success: '授權成功'
1057
1057
  },
1058
- buyTip: '如果您還沒有 DID 域名 NFT,',
1058
+ buyTip: 'DID Domain 將自動執行網域名稱解析,無需手動配置,且應用程式將在需要時自動更新網域名稱解析記錄。如果您還沒有 DID Domain NFT,',
1059
1059
  buy: '立即購買!'
1060
1060
  },
1061
1061
  delete: {
package/lib/locales/zh.js CHANGED
@@ -1052,14 +1052,14 @@ export default {
1052
1052
  addDomainNFT: {
1053
1053
  name: 'NFT 域名',
1054
1054
  showNFT: '自动配置域名',
1055
- tips: 'DID 域名会自动完成域名解析,无需手动配置,并且应用会在需要的时候自动更新该域名的解析记录。',
1055
+ tips: '您可以输入从 DID Domain 购买的域名。如果检测到 DID Domain,您必须出示 DID Domain NFT 才能继续。',
1056
1056
  connect: {
1057
1057
  title: '请出示域名 NFT',
1058
1058
  scan: '用 DID 钱包扫描下面的二维码, 出示域名 NFT',
1059
1059
  confirm: '在您的 DID 钱包上确认',
1060
1060
  success: '授权成功'
1061
1061
  },
1062
- buyTip: '如果还没有 DID 域名 NFT, ',
1062
+ buyTip: 'DID Domain 将自动执行域名解析,无需手动配置,并且应用程序将在需要时自动更新域名解析记录。如果您还没有 DID Domain NFT',
1063
1063
  buy: '现在购买!'
1064
1064
  },
1065
1065
  delete: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abtnode/ux",
3
- "version": "1.16.27-beta-595ed831",
3
+ "version": "1.16.27-beta-74c4e335",
4
4
  "description": "UX components shared across abtnode packages",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -26,9 +26,9 @@
26
26
  "author": "linchen <linchen1987@foxmail.com> (http://github.com/linchen1987)",
27
27
  "license": "Apache-2.0",
28
28
  "dependencies": {
29
- "@abtnode/auth": "1.16.27-beta-595ed831",
30
- "@abtnode/constant": "1.16.27-beta-595ed831",
31
- "@abtnode/util": "1.16.27-beta-595ed831",
29
+ "@abtnode/auth": "1.16.27-beta-74c4e335",
30
+ "@abtnode/constant": "1.16.27-beta-74c4e335",
31
+ "@abtnode/util": "1.16.27-beta-74c4e335",
32
32
  "@ahooksjs/use-url-state": "^3.5.1",
33
33
  "@arcblock/did": "^1.18.121",
34
34
  "@arcblock/did-connect": "^2.9.89",
@@ -38,10 +38,10 @@
38
38
  "@arcblock/react-hooks": "^2.9.89",
39
39
  "@arcblock/terminal": "^2.9.89",
40
40
  "@arcblock/ux": "^2.9.89",
41
- "@blocklet/constant": "1.16.27-beta-595ed831",
41
+ "@blocklet/constant": "1.16.27-beta-74c4e335",
42
42
  "@blocklet/launcher-layout": "2.3.20",
43
43
  "@blocklet/list": "^0.12.103",
44
- "@blocklet/meta": "1.16.27-beta-595ed831",
44
+ "@blocklet/meta": "1.16.27-beta-74c4e335",
45
45
  "@blocklet/ui-react": "^2.9.89",
46
46
  "@blocklet/uploader": "^0.1.6",
47
47
  "@emotion/react": "^11.10.4",
@@ -104,9 +104,9 @@
104
104
  "@babel/preset-env": "^7.24.4",
105
105
  "@babel/preset-react": "^7.24.1",
106
106
  "babel-plugin-inline-react-svg": "^2.0.2",
107
- "glob": "^10.3.3",
107
+ "glob": "^10.4.1",
108
108
  "jest": "^29.7.0",
109
109
  "jest-environment-jsdom": "^29.7.0"
110
110
  },
111
- "gitHead": "828e0c9511d3c1f69d07afa65fc2c965e568ec81"
111
+ "gitHead": "67ac72a88d7ae2d18f0db2b9b439d78e4112e082"
112
112
  }