@abtnode/ux 1.16.27-beta-e0e33468 → 1.16.27-beta-91ff0d1b

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 (45) hide show
  1. package/es/blocklet/component/component-cell.js +0 -13
  2. package/es/blocklet/component/index.js +0 -16
  3. package/es/blocklet/publish/resource.js +22 -4
  4. package/es/locales/ar.js +2 -1
  5. package/es/locales/de.js +2 -1
  6. package/es/locales/en.js +2 -1
  7. package/es/locales/es.js +2 -1
  8. package/es/locales/fr.js +2 -1
  9. package/es/locales/hi.js +2 -1
  10. package/es/locales/i18n.db +0 -0
  11. package/es/locales/id.js +2 -1
  12. package/es/locales/ja.js +2 -1
  13. package/es/locales/ko.js +2 -1
  14. package/es/locales/pt.js +2 -1
  15. package/es/locales/ru.js +2 -1
  16. package/es/locales/th.js +2 -1
  17. package/es/locales/vi.js +2 -1
  18. package/es/locales/zh-tw.js +2 -1
  19. package/es/locales/zh.js +3 -2
  20. package/es/store/connect-actions.js +2 -2
  21. package/es/store/delete.js +3 -0
  22. package/es/subscription/server.js +16 -2
  23. package/lib/blocklet/component/component-cell.js +0 -13
  24. package/lib/blocklet/component/index.js +0 -16
  25. package/lib/blocklet/publish/resource.js +22 -4
  26. package/lib/locales/ar.js +2 -1
  27. package/lib/locales/de.js +2 -1
  28. package/lib/locales/en.js +2 -1
  29. package/lib/locales/es.js +2 -1
  30. package/lib/locales/fr.js +2 -1
  31. package/lib/locales/hi.js +2 -1
  32. package/lib/locales/i18n.db +0 -0
  33. package/lib/locales/id.js +2 -1
  34. package/lib/locales/ja.js +2 -1
  35. package/lib/locales/ko.js +2 -1
  36. package/lib/locales/pt.js +2 -1
  37. package/lib/locales/ru.js +2 -1
  38. package/lib/locales/th.js +2 -1
  39. package/lib/locales/vi.js +2 -1
  40. package/lib/locales/zh-tw.js +2 -1
  41. package/lib/locales/zh.js +3 -2
  42. package/lib/store/connect-actions.js +2 -2
  43. package/lib/store/delete.js +3 -0
  44. package/lib/subscription/server.js +16 -3
  45. package/package.json +7 -7
@@ -6,7 +6,6 @@ import Badge from '@mui/material/Badge';
6
6
  import InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';
7
7
  import LaunchIcon from '@mui/icons-material/Launch';
8
8
  import RestartIcon from '@mui/icons-material/Replay';
9
- import ReloadIcon from '@mui/icons-material/Autorenew';
10
9
  import IconButton from '@mui/material/IconButton';
11
10
  import DeleteIcon from '@mui/icons-material/Delete';
12
11
  import { Icon } from '@iconify/react';
@@ -52,7 +51,6 @@ export default function ComponentCell({
52
51
  onStart,
53
52
  onStop,
54
53
  onRestart,
55
- onReload,
56
54
  getComponentUrl,
57
55
  app
58
56
  }) {
@@ -258,15 +256,6 @@ export default function ComponentCell({
258
256
  onCancel: () => setConfirmSetting(null)
259
257
  });
260
258
  },
261
- disabled: appInProgress || componentInProgress || blocklet.status !== 'running'
262
- }, !isResource(blocklet) && {
263
- icon: /*#__PURE__*/_jsx(ReloadIcon, {}),
264
- text: t('common.reload'),
265
- onClick: async () => {
266
- setLoading(true);
267
- await onReload(blocklet);
268
- setLoading(false);
269
- },
270
259
  disabled: loading || appInProgress || componentInProgress || blocklet.status !== 'running'
271
260
  }, {
272
261
  icon: /*#__PURE__*/_jsx(DeleteIcon, {}),
@@ -311,7 +300,6 @@ ComponentCell.propTypes = {
311
300
  onStart: PropTypes.func,
312
301
  onStop: PropTypes.func,
313
302
  onRestart: PropTypes.func,
314
- onReload: PropTypes.func,
315
303
  getComponentUrl: PropTypes.func,
316
304
  app: PropTypes.object
317
305
  };
@@ -322,7 +310,6 @@ ComponentCell.defaultProps = {
322
310
  onStart: () => {},
323
311
  onStop: () => {},
324
312
  onRestart: () => {},
325
- onReload: () => {},
326
313
  getComponentUrl: () => window.location.origin,
327
314
  app: null
328
315
  };
@@ -210,20 +210,6 @@ export default function BlockletComponent({
210
210
  Toast.error(formatError(err));
211
211
  }
212
212
  };
213
- const reloadComponent = async d => {
214
- try {
215
- await api.reloadBlocklet({
216
- input: {
217
- did: blocklet.meta.did,
218
- componentDids: [d.meta.did]
219
- }
220
- });
221
- await sleep(800);
222
- Toast.success(t('blocklet.reloadSuccess'));
223
- } catch (err) {
224
- Toast.error(formatError(err));
225
- }
226
- };
227
213
  const onUpdateChecksChange = (e, groupId) => {
228
214
  const {
229
215
  checked: newValue
@@ -363,7 +349,6 @@ export default function BlockletComponent({
363
349
  onRemove: removeComponent,
364
350
  onStart: startComponent,
365
351
  onStop: stopComponent,
366
- onReload: reloadComponent,
367
352
  onRestart: restartComponent,
368
353
  getComponentUrl: getComponentUrl
369
354
  }, `0-${blocklet.meta.did}`), blocklet.children.map(component => {
@@ -375,7 +360,6 @@ export default function BlockletComponent({
375
360
  onRemove: removeComponent,
376
361
  onStart: startComponent,
377
362
  onStop: stopComponent,
378
- onReload: reloadComponent,
379
363
  onRestart: restartComponent,
380
364
  getComponentUrl: getComponentUrl
381
365
  }, `1-${component.meta.did}`);
@@ -4,6 +4,7 @@ import styled from '@emotion/styled';
4
4
  import joinUrl from 'url-join';
5
5
  import classnames from 'classnames';
6
6
  import Box from '@mui/material/Box';
7
+ import StopIcon from '@mui/icons-material/DoDisturbAlt';
7
8
  import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
8
9
  import Button from '@arcblock/ux/lib/Button';
9
10
  import Toast from '@arcblock/ux/lib/Toast';
@@ -134,13 +135,30 @@ export default function Resource({
134
135
  // eslint-disable-next-line react-hooks/exhaustive-deps
135
136
  }, [url, projectId]);
136
137
  if (component.status !== 'running') {
137
- return /*#__PURE__*/_jsx(Container, {
138
- children: /*#__PURE__*/_jsx(Box, {
139
- pt: 6,
138
+ return /*#__PURE__*/_jsxs(Container, {
139
+ sx: {
140
+ display: 'flex',
141
+ flexDirection: 'column',
142
+ justifyContent: 'center',
143
+ alignItems: 'center',
144
+ margin: '10px 0px'
145
+ },
146
+ children: [/*#__PURE__*/_jsx(StopIcon, {
147
+ sx: {
148
+ fontSize: 32,
149
+ opacity: 0.3,
150
+ mb: 2
151
+ }
152
+ }), /*#__PURE__*/_jsx(Box, {
153
+ sx: {
154
+ mb: 2,
155
+ fontSize: 'small',
156
+ color: 'action'
157
+ },
140
158
  children: t('blocklet.publish.componentNotRunning', {
141
159
  name: component.meta.title
142
160
  })
143
- })
161
+ })]
144
162
  });
145
163
  }
146
164
  return /*#__PURE__*/_jsxs(_Fragment, {
package/es/locales/ar.js CHANGED
@@ -1745,7 +1745,8 @@ export default {
1745
1745
  error: 'انتهت صلاحية الاشتراك'
1746
1746
  },
1747
1747
  loading: 'تحميل الاشتراك...',
1748
- loadFailed: 'فشل تحميل معلومات الاشتراك ، يرجى إعادة المحاولة!'
1748
+ loadFailed: 'فشل تحميل معلومات الاشتراك ، يرجى إعادة المحاولة!',
1749
+ nextInvoice: 'الفاتورة التالية: {date}'
1749
1750
  }
1750
1751
  },
1751
1752
  analytics: {
package/es/locales/de.js CHANGED
@@ -1745,7 +1745,8 @@ export default {
1745
1745
  error: 'Abonnement abgelaufen'
1746
1746
  },
1747
1747
  loading: 'Abonnement laden...',
1748
- loadFailed: 'Fehler beim Laden der Abonnementinformationen, bitte erneut versuchen!'
1748
+ loadFailed: 'Fehler beim Laden der Abonnementinformationen, bitte erneut versuchen!',
1749
+ nextInvoice: 'Nächste Rechnung: {date}'
1749
1750
  }
1750
1751
  },
1751
1752
  analytics: {
package/es/locales/en.js CHANGED
@@ -1735,7 +1735,8 @@ export default {
1735
1735
  error: 'Subscription Expired'
1736
1736
  },
1737
1737
  loading: 'Load subscription...',
1738
- loadFailed: 'Failed to load subscription info, please retry!'
1738
+ loadFailed: 'Failed to load subscription info, please retry!',
1739
+ nextInvoice: 'Next Invoice: {date}'
1739
1740
  }
1740
1741
  },
1741
1742
  analytics: {
package/es/locales/es.js CHANGED
@@ -1745,7 +1745,8 @@ export default {
1745
1745
  error: 'Suscripción vencida'
1746
1746
  },
1747
1747
  loading: 'Cargar suscripción...',
1748
- loadFailed: 'No se pudo cargar la información de la suscripción, ¡por favor intente de nuevo!'
1748
+ loadFailed: 'No se pudo cargar la información de la suscripción, ¡por favor intente de nuevo!',
1749
+ nextInvoice: 'Próxima factura: {date}'
1749
1750
  }
1750
1751
  },
1751
1752
  analytics: {
package/es/locales/fr.js CHANGED
@@ -1745,7 +1745,8 @@ export default {
1745
1745
  error: 'Abonnement expiré'
1746
1746
  },
1747
1747
  loading: "Chargement de l'abonnement...",
1748
- loadFailed: "Échec du chargement des informations d'abonnement, veuillez réessayer !"
1748
+ loadFailed: "Échec du chargement des informations d'abonnement, veuillez réessayer !",
1749
+ nextInvoice: 'Prochaine facture: {date}'
1749
1750
  }
1750
1751
  },
1751
1752
  analytics: {
package/es/locales/hi.js CHANGED
@@ -1745,7 +1745,8 @@ export default {
1745
1745
  error: 'सदस्यता समाप्त हो गई'
1746
1746
  },
1747
1747
  loading: 'सदस्यता लोड करें...',
1748
- loadFailed: 'सदस्यता जानकारी लोड करने में विफल, कृपया पुनः प्रयास करें!'
1748
+ loadFailed: 'सदस्यता जानकारी लोड करने में विफल, कृपया पुनः प्रयास करें!',
1749
+ nextInvoice: 'अगला बिल: {date}'
1749
1750
  }
1750
1751
  },
1751
1752
  analytics: {
Binary file
package/es/locales/id.js CHANGED
@@ -1745,7 +1745,8 @@ export default {
1745
1745
  error: 'Langganan Telah Kadaluarsa'
1746
1746
  },
1747
1747
  loading: 'Memuat langganan...',
1748
- loadFailed: 'Gagal memuat info langganan, silakan coba lagi!'
1748
+ loadFailed: 'Gagal memuat info langganan, silakan coba lagi!',
1749
+ nextInvoice: 'Faktur berikutnya: {date}'
1749
1750
  }
1750
1751
  },
1751
1752
  analytics: {
package/es/locales/ja.js CHANGED
@@ -1745,7 +1745,8 @@ export default {
1745
1745
  error: '定期購読が期限切れです'
1746
1746
  },
1747
1747
  loading: 'サブスクリプションをロード中...',
1748
- loadFailed: '購読情報の読み込みに失敗しました。もう一度やり直してください!'
1748
+ loadFailed: '購読情報の読み込みに失敗しました。もう一度やり直してください!',
1749
+ nextInvoice: '次の請求書: {date}'
1749
1750
  }
1750
1751
  },
1751
1752
  analytics: {
package/es/locales/ko.js CHANGED
@@ -1745,7 +1745,8 @@ export default {
1745
1745
  error: '구독이 만료되었습니다'
1746
1746
  },
1747
1747
  loading: '구독 불러오는 중...',
1748
- loadFailed: '구독 정보를 불러오지 못했습니다. 다시 시도해주세요!'
1748
+ loadFailed: '구독 정보를 불러오지 못했습니다. 다시 시도해주세요!',
1749
+ nextInvoice: '다음 송장: {date}'
1749
1750
  }
1750
1751
  },
1751
1752
  analytics: {
package/es/locales/pt.js CHANGED
@@ -1745,7 +1745,8 @@ export default {
1745
1745
  error: 'Assinatura Expirada'
1746
1746
  },
1747
1747
  loading: 'Carregar assinatura...',
1748
- loadFailed: 'Falha ao carregar as informações de inscrição, por favor tente novamente!'
1748
+ loadFailed: 'Falha ao carregar as informações de inscrição, por favor tente novamente!',
1749
+ nextInvoice: 'Próxima fatura: {date}'
1749
1750
  }
1750
1751
  },
1751
1752
  analytics: {
package/es/locales/ru.js CHANGED
@@ -1745,7 +1745,8 @@ export default {
1745
1745
  error: 'Подписка истекла'
1746
1746
  },
1747
1747
  loading: 'Загрузка подписки...',
1748
- loadFailed: 'Не удалось загрузить информацию о подписке, попробуйте ещё раз!'
1748
+ loadFailed: 'Не удалось загрузить информацию о подписке, попробуйте ещё раз!',
1749
+ nextInvoice: 'Следующий счёт: {date}'
1749
1750
  }
1750
1751
  },
1751
1752
  analytics: {
package/es/locales/th.js CHANGED
@@ -1745,7 +1745,8 @@ export default {
1745
1745
  error: 'การสมัครสมาชิกหมดอายุ'
1746
1746
  },
1747
1747
  loading: 'โหลดการสมัครสมาชิก...',
1748
- loadFailed: 'ไม่สามารถโหลดข้อมูลการสมัครสมาชิกได้ โปรดลองใหม่!'
1748
+ loadFailed: 'ไม่สามารถโหลดข้อมูลการสมัครสมาชิกได้ โปรดลองใหม่!',
1749
+ nextInvoice: 'ใบแจ้งหนี้ถัดไป: {date}'
1749
1750
  }
1750
1751
  },
1751
1752
  analytics: {
package/es/locales/vi.js CHANGED
@@ -1745,7 +1745,8 @@ export default {
1745
1745
  error: 'Đã hết hạn đăng ký'
1746
1746
  },
1747
1747
  loading: 'Tải đăng ký...',
1748
- loadFailed: 'Không tải được thông tin đăng ký, vui lòng thử lại!'
1748
+ loadFailed: 'Không tải được thông tin đăng ký, vui lòng thử lại!',
1749
+ nextInvoice: 'Hóa đơn tiếp theo: {date}'
1749
1750
  }
1750
1751
  },
1751
1752
  analytics: {
@@ -1745,7 +1745,8 @@ export default {
1745
1745
  error: '訂閱已到期'
1746
1746
  },
1747
1747
  loading: '加載訂閱...',
1748
- loadFailed: '載入訂閱資訊失敗,請重試!'
1748
+ loadFailed: '載入訂閱資訊失敗,請重試!',
1749
+ nextInvoice: '下個發票:{date}'
1749
1750
  }
1750
1751
  },
1751
1752
  analytics: {
package/es/locales/zh.js CHANGED
@@ -663,7 +663,7 @@ export default {
663
663
  productTitle: 'Blocklet 详情',
664
664
  versionTitle: '版本信息',
665
665
  imgTitle: '图片资源',
666
- resourceTitle: '资源型 Blocklet',
666
+ resourceTitle: '资源',
667
667
  blockletEmptyTip: '这里没有任何 Blocklet',
668
668
  createBlockletTip: '你可以使用此应用的资源,组件,配置制作新的 Blocklet',
669
669
  createBlocklet: '新建 Blocklet',
@@ -1752,7 +1752,8 @@ export default {
1752
1752
  error: '订阅已过期'
1753
1753
  },
1754
1754
  loadFailed: '加载订阅信息失败,请重试!',
1755
- loading: '加载订阅信息...'
1755
+ loading: '加载订阅信息...',
1756
+ nextInvoice: '下次账单:{date}'
1756
1757
  }
1757
1758
  },
1758
1759
  analytics: {
@@ -103,11 +103,11 @@ function ConnectActions({
103
103
  disabled: store.protected,
104
104
  children: [/*#__PURE__*/_jsx(DeleteOutlineIcon, {
105
105
  sx: {
106
- color: 'error.main',
106
+ color: store.protected ? 'action' : 'error.main',
107
107
  marginRight: 1
108
108
  }
109
109
  }), /*#__PURE__*/_jsx(Box, {
110
- color: "error.main",
110
+ color: store.protected ? 'action' : 'error.main',
111
111
  children: t('common.delete')
112
112
  })]
113
113
  })
@@ -65,6 +65,9 @@ export default function DeleteStore({
65
65
  onCancel
66
66
  };
67
67
  const onMenuItemClick = e => {
68
+ if (store.protected) {
69
+ return;
70
+ }
68
71
  e.stopPropagation();
69
72
  setConfirmSetting(setting);
70
73
  };
@@ -10,7 +10,7 @@ import { useRef } from 'react';
10
10
  import useAsyncRetry from 'react-use/lib/useAsyncRetry';
11
11
  import useSetState from 'react-use/lib/useSetState';
12
12
  import { useNodeContext } from '../contexts/node';
13
- import { formatPrettyMsLocale, getSubscriptionUrlV2 } from '../util';
13
+ import { formatPrettyMsLocale, formatToDate, getSubscriptionUrlV2 } from '../util';
14
14
  import ChipLabel from './chip-label';
15
15
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
16
16
  const ALERT_THRESHOLD_MS = 30 * 24 * 60 * 60 * 1000;
@@ -114,7 +114,21 @@ function SubscriptionServer({
114
114
  });
115
115
  };
116
116
  return /*#__PURE__*/_jsxs(_Fragment, {
117
- children: [/*#__PURE__*/_jsx(Chip, {
117
+ children: [asyncState.value?.launcherSession?.subscription && /*#__PURE__*/_jsx(Chip, {
118
+ label: /*#__PURE__*/_jsx(ChipLabel, {
119
+ children: t('expiration.desktop.nextInvoice', {
120
+ date: formatToDate(expirationDate, locale)
121
+ })
122
+ }),
123
+ color: "success",
124
+ variant: "outlined",
125
+ sx: {
126
+ cursor: 'pointer',
127
+ ...sx
128
+ },
129
+ ...rest,
130
+ onClick: handlePopoverClick
131
+ }), !asyncState.value?.launcherSession?.subscription && /*#__PURE__*/_jsx(Chip, {
118
132
  label: /*#__PURE__*/_jsx(ChipLabel, {
119
133
  children: t(`expiration.${typoKey}.tips.${status}`, {
120
134
  validity: prettyMs(validityMs, {
@@ -13,7 +13,6 @@ var _Badge = _interopRequireDefault(require("@mui/material/Badge"));
13
13
  var _InfoOutlined = _interopRequireDefault(require("@mui/icons-material/InfoOutlined"));
14
14
  var _Launch = _interopRequireDefault(require("@mui/icons-material/Launch"));
15
15
  var _Replay = _interopRequireDefault(require("@mui/icons-material/Replay"));
16
- var _Autorenew = _interopRequireDefault(require("@mui/icons-material/Autorenew"));
17
16
  var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
18
17
  var _Delete = _interopRequireDefault(require("@mui/icons-material/Delete"));
19
18
  var _react2 = require("@iconify/react");
@@ -67,7 +66,6 @@ function ComponentCell(_ref) {
67
66
  onStart,
68
67
  onStop,
69
68
  onRestart,
70
- onReload,
71
69
  getComponentUrl,
72
70
  app
73
71
  } = _ref;
@@ -276,15 +274,6 @@ function ComponentCell(_ref) {
276
274
  onCancel: () => setConfirmSetting(null)
277
275
  });
278
276
  },
279
- disabled: appInProgress || componentInProgress || blocklet.status !== 'running'
280
- }, !isResource(blocklet) && {
281
- icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Autorenew.default, {}),
282
- text: t('common.reload'),
283
- onClick: async () => {
284
- setLoading(true);
285
- await onReload(blocklet);
286
- setLoading(false);
287
- },
288
277
  disabled: loading || appInProgress || componentInProgress || blocklet.status !== 'running'
289
278
  }, {
290
279
  icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Delete.default, {}),
@@ -329,7 +318,6 @@ ComponentCell.propTypes = {
329
318
  onStart: _propTypes.default.func,
330
319
  onStop: _propTypes.default.func,
331
320
  onRestart: _propTypes.default.func,
332
- onReload: _propTypes.default.func,
333
321
  getComponentUrl: _propTypes.default.func,
334
322
  app: _propTypes.default.object
335
323
  };
@@ -340,7 +328,6 @@ ComponentCell.defaultProps = {
340
328
  onStart: () => {},
341
329
  onStop: () => {},
342
330
  onRestart: () => {},
343
- onReload: () => {},
344
331
  getComponentUrl: () => window.location.origin,
345
332
  app: null
346
333
  };
@@ -232,20 +232,6 @@ function BlockletComponent(_ref) {
232
232
  _Toast.default.error((0, _util2.formatError)(err));
233
233
  }
234
234
  };
235
- const reloadComponent = async d => {
236
- try {
237
- await api.reloadBlocklet({
238
- input: {
239
- did: blocklet.meta.did,
240
- componentDids: [d.meta.did]
241
- }
242
- });
243
- await (0, _util2.sleep)(800);
244
- _Toast.default.success(t('blocklet.reloadSuccess'));
245
- } catch (err) {
246
- _Toast.default.error((0, _util2.formatError)(err));
247
- }
248
- };
249
235
  const onUpdateChecksChange = (e, groupId) => {
250
236
  const {
251
237
  checked: newValue
@@ -394,7 +380,6 @@ function BlockletComponent(_ref) {
394
380
  onRemove: removeComponent,
395
381
  onStart: startComponent,
396
382
  onStop: stopComponent,
397
- onReload: reloadComponent,
398
383
  onRestart: restartComponent,
399
384
  getComponentUrl: getComponentUrl
400
385
  }, "0-".concat(blocklet.meta.did)), blocklet.children.map(component => {
@@ -406,7 +391,6 @@ function BlockletComponent(_ref) {
406
391
  onRemove: removeComponent,
407
392
  onStart: startComponent,
408
393
  onStop: stopComponent,
409
- onReload: reloadComponent,
410
394
  onRestart: restartComponent,
411
395
  getComponentUrl: getComponentUrl
412
396
  }, "1-".concat(component.meta.did));
@@ -10,6 +10,7 @@ var _styled = _interopRequireDefault(require("@emotion/styled"));
10
10
  var _urlJoin = _interopRequireDefault(require("url-join"));
11
11
  var _classnames = _interopRequireDefault(require("classnames"));
12
12
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
13
+ var _DoDisturbAlt = _interopRequireDefault(require("@mui/icons-material/DoDisturbAlt"));
13
14
  var _context = require("@arcblock/ux/lib/Locale/context");
14
15
  var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
15
16
  var _Toast = _interopRequireDefault(require("@arcblock/ux/lib/Toast"));
@@ -145,13 +146,30 @@ function Resource(_ref) {
145
146
  // eslint-disable-next-line react-hooks/exhaustive-deps
146
147
  }, [url, projectId]);
147
148
  if (component.status !== 'running') {
148
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(Container, {
149
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
150
- pt: 6,
149
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Container, {
150
+ sx: {
151
+ display: 'flex',
152
+ flexDirection: 'column',
153
+ justifyContent: 'center',
154
+ alignItems: 'center',
155
+ margin: '10px 0px'
156
+ },
157
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_DoDisturbAlt.default, {
158
+ sx: {
159
+ fontSize: 32,
160
+ opacity: 0.3,
161
+ mb: 2
162
+ }
163
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
164
+ sx: {
165
+ mb: 2,
166
+ fontSize: 'small',
167
+ color: 'action'
168
+ },
151
169
  children: t('blocklet.publish.componentNotRunning', {
152
170
  name: component.meta.title
153
171
  })
154
- })
172
+ })]
155
173
  });
156
174
  }
157
175
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
package/lib/locales/ar.js CHANGED
@@ -1751,7 +1751,8 @@ var _default = exports.default = {
1751
1751
  error: 'انتهت صلاحية الاشتراك'
1752
1752
  },
1753
1753
  loading: 'تحميل الاشتراك...',
1754
- loadFailed: 'فشل تحميل معلومات الاشتراك ، يرجى إعادة المحاولة!'
1754
+ loadFailed: 'فشل تحميل معلومات الاشتراك ، يرجى إعادة المحاولة!',
1755
+ nextInvoice: 'الفاتورة التالية: {date}'
1755
1756
  }
1756
1757
  },
1757
1758
  analytics: {
package/lib/locales/de.js CHANGED
@@ -1751,7 +1751,8 @@ var _default = exports.default = {
1751
1751
  error: 'Abonnement abgelaufen'
1752
1752
  },
1753
1753
  loading: 'Abonnement laden...',
1754
- loadFailed: 'Fehler beim Laden der Abonnementinformationen, bitte erneut versuchen!'
1754
+ loadFailed: 'Fehler beim Laden der Abonnementinformationen, bitte erneut versuchen!',
1755
+ nextInvoice: 'Nächste Rechnung: {date}'
1755
1756
  }
1756
1757
  },
1757
1758
  analytics: {
package/lib/locales/en.js CHANGED
@@ -1741,7 +1741,8 @@ var _default = exports.default = {
1741
1741
  error: 'Subscription Expired'
1742
1742
  },
1743
1743
  loading: 'Load subscription...',
1744
- loadFailed: 'Failed to load subscription info, please retry!'
1744
+ loadFailed: 'Failed to load subscription info, please retry!',
1745
+ nextInvoice: 'Next Invoice: {date}'
1745
1746
  }
1746
1747
  },
1747
1748
  analytics: {
package/lib/locales/es.js CHANGED
@@ -1751,7 +1751,8 @@ var _default = exports.default = {
1751
1751
  error: 'Suscripción vencida'
1752
1752
  },
1753
1753
  loading: 'Cargar suscripción...',
1754
- loadFailed: 'No se pudo cargar la información de la suscripción, ¡por favor intente de nuevo!'
1754
+ loadFailed: 'No se pudo cargar la información de la suscripción, ¡por favor intente de nuevo!',
1755
+ nextInvoice: 'Próxima factura: {date}'
1755
1756
  }
1756
1757
  },
1757
1758
  analytics: {
package/lib/locales/fr.js CHANGED
@@ -1751,7 +1751,8 @@ var _default = exports.default = {
1751
1751
  error: 'Abonnement expiré'
1752
1752
  },
1753
1753
  loading: "Chargement de l'abonnement...",
1754
- loadFailed: "Échec du chargement des informations d'abonnement, veuillez réessayer !"
1754
+ loadFailed: "Échec du chargement des informations d'abonnement, veuillez réessayer !",
1755
+ nextInvoice: 'Prochaine facture: {date}'
1755
1756
  }
1756
1757
  },
1757
1758
  analytics: {
package/lib/locales/hi.js CHANGED
@@ -1751,7 +1751,8 @@ var _default = exports.default = {
1751
1751
  error: 'सदस्यता समाप्त हो गई'
1752
1752
  },
1753
1753
  loading: 'सदस्यता लोड करें...',
1754
- loadFailed: 'सदस्यता जानकारी लोड करने में विफल, कृपया पुनः प्रयास करें!'
1754
+ loadFailed: 'सदस्यता जानकारी लोड करने में विफल, कृपया पुनः प्रयास करें!',
1755
+ nextInvoice: 'अगला बिल: {date}'
1755
1756
  }
1756
1757
  },
1757
1758
  analytics: {
Binary file
package/lib/locales/id.js CHANGED
@@ -1751,7 +1751,8 @@ var _default = exports.default = {
1751
1751
  error: 'Langganan Telah Kadaluarsa'
1752
1752
  },
1753
1753
  loading: 'Memuat langganan...',
1754
- loadFailed: 'Gagal memuat info langganan, silakan coba lagi!'
1754
+ loadFailed: 'Gagal memuat info langganan, silakan coba lagi!',
1755
+ nextInvoice: 'Faktur berikutnya: {date}'
1755
1756
  }
1756
1757
  },
1757
1758
  analytics: {
package/lib/locales/ja.js CHANGED
@@ -1751,7 +1751,8 @@ var _default = exports.default = {
1751
1751
  error: '定期購読が期限切れです'
1752
1752
  },
1753
1753
  loading: 'サブスクリプションをロード中...',
1754
- loadFailed: '購読情報の読み込みに失敗しました。もう一度やり直してください!'
1754
+ loadFailed: '購読情報の読み込みに失敗しました。もう一度やり直してください!',
1755
+ nextInvoice: '次の請求書: {date}'
1755
1756
  }
1756
1757
  },
1757
1758
  analytics: {
package/lib/locales/ko.js CHANGED
@@ -1751,7 +1751,8 @@ var _default = exports.default = {
1751
1751
  error: '구독이 만료되었습니다'
1752
1752
  },
1753
1753
  loading: '구독 불러오는 중...',
1754
- loadFailed: '구독 정보를 불러오지 못했습니다. 다시 시도해주세요!'
1754
+ loadFailed: '구독 정보를 불러오지 못했습니다. 다시 시도해주세요!',
1755
+ nextInvoice: '다음 송장: {date}'
1755
1756
  }
1756
1757
  },
1757
1758
  analytics: {
package/lib/locales/pt.js CHANGED
@@ -1751,7 +1751,8 @@ var _default = exports.default = {
1751
1751
  error: 'Assinatura Expirada'
1752
1752
  },
1753
1753
  loading: 'Carregar assinatura...',
1754
- loadFailed: 'Falha ao carregar as informações de inscrição, por favor tente novamente!'
1754
+ loadFailed: 'Falha ao carregar as informações de inscrição, por favor tente novamente!',
1755
+ nextInvoice: 'Próxima fatura: {date}'
1755
1756
  }
1756
1757
  },
1757
1758
  analytics: {
package/lib/locales/ru.js CHANGED
@@ -1751,7 +1751,8 @@ var _default = exports.default = {
1751
1751
  error: 'Подписка истекла'
1752
1752
  },
1753
1753
  loading: 'Загрузка подписки...',
1754
- loadFailed: 'Не удалось загрузить информацию о подписке, попробуйте ещё раз!'
1754
+ loadFailed: 'Не удалось загрузить информацию о подписке, попробуйте ещё раз!',
1755
+ nextInvoice: 'Следующий счёт: {date}'
1755
1756
  }
1756
1757
  },
1757
1758
  analytics: {
package/lib/locales/th.js CHANGED
@@ -1751,7 +1751,8 @@ var _default = exports.default = {
1751
1751
  error: 'การสมัครสมาชิกหมดอายุ'
1752
1752
  },
1753
1753
  loading: 'โหลดการสมัครสมาชิก...',
1754
- loadFailed: 'ไม่สามารถโหลดข้อมูลการสมัครสมาชิกได้ โปรดลองใหม่!'
1754
+ loadFailed: 'ไม่สามารถโหลดข้อมูลการสมัครสมาชิกได้ โปรดลองใหม่!',
1755
+ nextInvoice: 'ใบแจ้งหนี้ถัดไป: {date}'
1755
1756
  }
1756
1757
  },
1757
1758
  analytics: {
package/lib/locales/vi.js CHANGED
@@ -1751,7 +1751,8 @@ var _default = exports.default = {
1751
1751
  error: 'Đã hết hạn đăng ký'
1752
1752
  },
1753
1753
  loading: 'Tải đăng ký...',
1754
- loadFailed: 'Không tải được thông tin đăng ký, vui lòng thử lại!'
1754
+ loadFailed: 'Không tải được thông tin đăng ký, vui lòng thử lại!',
1755
+ nextInvoice: 'Hóa đơn tiếp theo: {date}'
1755
1756
  }
1756
1757
  },
1757
1758
  analytics: {
@@ -1751,7 +1751,8 @@ var _default = exports.default = {
1751
1751
  error: '訂閱已到期'
1752
1752
  },
1753
1753
  loading: '加載訂閱...',
1754
- loadFailed: '載入訂閱資訊失敗,請重試!'
1754
+ loadFailed: '載入訂閱資訊失敗,請重試!',
1755
+ nextInvoice: '下個發票:{date}'
1755
1756
  }
1756
1757
  },
1757
1758
  analytics: {
package/lib/locales/zh.js CHANGED
@@ -669,7 +669,7 @@ var _default = exports.default = {
669
669
  productTitle: 'Blocklet 详情',
670
670
  versionTitle: '版本信息',
671
671
  imgTitle: '图片资源',
672
- resourceTitle: '资源型 Blocklet',
672
+ resourceTitle: '资源',
673
673
  blockletEmptyTip: '这里没有任何 Blocklet',
674
674
  createBlockletTip: '你可以使用此应用的资源,组件,配置制作新的 Blocklet',
675
675
  createBlocklet: '新建 Blocklet',
@@ -1758,7 +1758,8 @@ var _default = exports.default = {
1758
1758
  error: '订阅已过期'
1759
1759
  },
1760
1760
  loadFailed: '加载订阅信息失败,请重试!',
1761
- loading: '加载订阅信息...'
1761
+ loading: '加载订阅信息...',
1762
+ nextInvoice: '下次账单:{date}'
1762
1763
  }
1763
1764
  },
1764
1765
  analytics: {
@@ -111,11 +111,11 @@ function ConnectActions(_ref) {
111
111
  disabled: store.protected,
112
112
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_DeleteOutline.default, {
113
113
  sx: {
114
- color: 'error.main',
114
+ color: store.protected ? 'action' : 'error.main',
115
115
  marginRight: 1
116
116
  }
117
117
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
118
- color: "error.main",
118
+ color: store.protected ? 'action' : 'error.main',
119
119
  children: t('common.delete')
120
120
  })]
121
121
  })
@@ -73,6 +73,9 @@ function DeleteStore(_ref) {
73
73
  onCancel
74
74
  };
75
75
  const onMenuItemClick = e => {
76
+ if (store.protected) {
77
+ return;
78
+ }
76
79
  e.stopPropagation();
77
80
  setConfirmSetting(setting);
78
81
  };
@@ -33,7 +33,7 @@ const ALERT_THRESHOLD_MS = 30 * 24 * 60 * 60 * 1000;
33
33
  const DEFAULT_LAUNCHER_URL = 'https://launcher.arcblock.io/'; // 兼容: 旧版本的 blocklet.controller 没有 launcherUrl 字段
34
34
 
35
35
  function SubscriptionServer(_ref) {
36
- var _asyncState$value, _asyncState$value2;
36
+ var _asyncState$value, _asyncState$value2, _asyncState$value3, _asyncState$value4;
37
37
  let {
38
38
  launcherUrl,
39
39
  chainHost,
@@ -129,7 +129,20 @@ function SubscriptionServer(_ref) {
129
129
  });
130
130
  };
131
131
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
132
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.default, _objectSpread(_objectSpread({
132
+ children: [((_asyncState$value2 = asyncState.value) === null || _asyncState$value2 === void 0 || (_asyncState$value2 = _asyncState$value2.launcherSession) === null || _asyncState$value2 === void 0 ? void 0 : _asyncState$value2.subscription) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.default, _objectSpread(_objectSpread({
133
+ label: /*#__PURE__*/(0, _jsxRuntime.jsx)(_chipLabel.default, {
134
+ children: t('expiration.desktop.nextInvoice', {
135
+ date: (0, _util.formatToDate)(expirationDate, locale)
136
+ })
137
+ }),
138
+ color: "success",
139
+ variant: "outlined",
140
+ sx: _objectSpread({
141
+ cursor: 'pointer'
142
+ }, sx)
143
+ }, rest), {}, {
144
+ onClick: handlePopoverClick
145
+ })), !((_asyncState$value3 = asyncState.value) !== null && _asyncState$value3 !== void 0 && (_asyncState$value3 = _asyncState$value3.launcherSession) !== null && _asyncState$value3 !== void 0 && _asyncState$value3.subscription) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Chip.default, _objectSpread(_objectSpread({
133
146
  label: /*#__PURE__*/(0, _jsxRuntime.jsx)(_chipLabel.default, {
134
147
  children: t("expiration.".concat(typoKey, ".tips.").concat(status), {
135
148
  validity: (0, _prettyMsI18n.default)(validityMs, {
@@ -167,7 +180,7 @@ function SubscriptionServer(_ref) {
167
180
  style: {
168
181
  border: 0
169
182
  },
170
- src: (_asyncState$value2 = asyncState.value) === null || _asyncState$value2 === void 0 ? void 0 : _asyncState$value2.subscriptionURL
183
+ src: (_asyncState$value4 = asyncState.value) === null || _asyncState$value4 === void 0 ? void 0 : _asyncState$value4.subscriptionURL
171
184
  })
172
185
  })]
173
186
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abtnode/ux",
3
- "version": "1.16.27-beta-e0e33468",
3
+ "version": "1.16.27-beta-91ff0d1b",
4
4
  "description": "UX components shared across abtnode packages",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -28,9 +28,9 @@
28
28
  "author": "linchen <linchen1987@foxmail.com> (http://github.com/linchen1987)",
29
29
  "license": "Apache-2.0",
30
30
  "dependencies": {
31
- "@abtnode/auth": "1.16.27-beta-e0e33468",
32
- "@abtnode/constant": "1.16.27-beta-e0e33468",
33
- "@abtnode/util": "1.16.27-beta-e0e33468",
31
+ "@abtnode/auth": "1.16.27-beta-91ff0d1b",
32
+ "@abtnode/constant": "1.16.27-beta-91ff0d1b",
33
+ "@abtnode/util": "1.16.27-beta-91ff0d1b",
34
34
  "@ahooksjs/use-url-state": "^3.5.1",
35
35
  "@arcblock/did": "^1.18.115",
36
36
  "@arcblock/did-connect": "^2.9.75",
@@ -40,10 +40,10 @@
40
40
  "@arcblock/react-hooks": "^2.9.75",
41
41
  "@arcblock/terminal": "^2.9.75",
42
42
  "@arcblock/ux": "^2.9.75",
43
- "@blocklet/constant": "1.16.27-beta-e0e33468",
43
+ "@blocklet/constant": "1.16.27-beta-91ff0d1b",
44
44
  "@blocklet/launcher-layout": "2.3.14",
45
45
  "@blocklet/list": "^0.12.88",
46
- "@blocklet/meta": "1.16.27-beta-e0e33468",
46
+ "@blocklet/meta": "1.16.27-beta-91ff0d1b",
47
47
  "@blocklet/ui-react": "^2.9.75",
48
48
  "@blocklet/uploader": "^0.0.78",
49
49
  "@emotion/react": "^11.10.4",
@@ -109,7 +109,7 @@
109
109
  "jest": "^29.7.0",
110
110
  "jest-environment-jsdom": "^29.7.0"
111
111
  },
112
- "gitHead": "2f507521d1523329bc0bbb5d64fb0ebe39a5177b",
112
+ "gitHead": "5c8d1719acb88ae62298293030860c79b0124692",
113
113
  "exports": {
114
114
  ".": {
115
115
  "import": "./es/index.js",