@abtnode/ux 1.16.27-beta-43a3bbb2 → 1.16.27-beta-c450492a
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.
- package/es/blocklet/component/component-cell.js +0 -13
- package/es/blocklet/component/index.js +0 -16
- package/es/blocklet/configuration.js +28 -9
- package/es/blocklet/publish/resource.js +22 -4
- package/es/locales/ar.js +7 -1
- package/es/locales/de.js +7 -1
- package/es/locales/en.js +7 -1
- package/es/locales/es.js +7 -1
- package/es/locales/fr.js +7 -1
- package/es/locales/hi.js +7 -1
- package/es/locales/i18n.db +0 -0
- package/es/locales/id.js +7 -1
- package/es/locales/ja.js +7 -1
- package/es/locales/ko.js +7 -1
- package/es/locales/pt.js +7 -1
- package/es/locales/ru.js +7 -1
- package/es/locales/th.js +7 -1
- package/es/locales/vi.js +7 -1
- package/es/locales/zh-tw.js +7 -1
- package/es/locales/zh.js +8 -2
- package/es/subscription/server.js +16 -2
- package/lib/actions.js +1 -1
- package/lib/blocklet/actions.js +1 -1
- package/lib/blocklet/add-cert.js +1 -1
- package/lib/blocklet/app-avatar.js +1 -1
- package/lib/blocklet/bundle-avatar.js +1 -1
- package/lib/blocklet/component/add-component-core.js +1 -1
- package/lib/blocklet/component/component-cell.js +0 -13
- package/lib/blocklet/component/did-space/connect-to.js +1 -1
- package/lib/blocklet/component/did-space/item.js +1 -1
- package/lib/blocklet/component/domain-list.js +1 -1
- package/lib/blocklet/component/index.js +1 -17
- package/lib/blocklet/component/navigation/simple-select.js +1 -1
- package/lib/blocklet/component/setting.js +1 -1
- package/lib/blocklet/component/space-connector.js +1 -1
- package/lib/blocklet/component/space-selector.js +1 -1
- package/lib/blocklet/component/store-blocklet-list.js +1 -1
- package/lib/blocklet/component/switch-control.js +1 -1
- package/lib/blocklet/configuration.js +28 -9
- package/lib/blocklet/disk-info.js +1 -1
- package/lib/blocklet/log.js +1 -1
- package/lib/blocklet/mode.js +1 -1
- package/lib/blocklet/page-group.js +1 -1
- package/lib/blocklet/preferences/index.js +1 -1
- package/lib/blocklet/publish/resource.js +22 -4
- package/lib/blocklet/purchase/component-purchase.js +1 -1
- package/lib/blocklet/resource-type.js +1 -1
- package/lib/blocklet/router/add-domain.js +1 -1
- package/lib/blocklet/router/dns-tip.js +1 -1
- package/lib/blocklet/runtime-info.js +1 -1
- package/lib/blocklet/status.js +1 -1
- package/lib/blocklet/storage/action.js +1 -1
- package/lib/blocklet/storage/auto-check-update.js +1 -1
- package/lib/blocklet/storage/item.js +1 -1
- package/lib/blocklet/version.js +1 -1
- package/lib/clear-cache.js +1 -1
- package/lib/click-to-copy.js +1 -1
- package/lib/confirm.js +1 -1
- package/lib/did-address.js +1 -1
- package/lib/empty-spinner.js +1 -1
- package/lib/form/form-autocomplete-input.js +1 -1
- package/lib/form/form-select-input.js +1 -1
- package/lib/form/form-text-input.js +1 -1
- package/lib/images.js +1 -1
- package/lib/invitation/invitation-app.js +1 -1
- package/lib/launch-blocklet/content-layout.js +1 -1
- package/lib/locales/ar.js +7 -1
- package/lib/locales/de.js +7 -1
- package/lib/locales/en.js +7 -1
- package/lib/locales/es.js +7 -1
- package/lib/locales/fr.js +7 -1
- package/lib/locales/hi.js +7 -1
- package/lib/locales/i18n.db +0 -0
- package/lib/locales/id.js +7 -1
- package/lib/locales/ja.js +7 -1
- package/lib/locales/ko.js +7 -1
- package/lib/locales/pt.js +7 -1
- package/lib/locales/ru.js +7 -1
- package/lib/locales/th.js +7 -1
- package/lib/locales/vi.js +7 -1
- package/lib/locales/zh-tw.js +7 -1
- package/lib/locales/zh.js +8 -2
- package/lib/logs/log-terminal.js +1 -1
- package/lib/nav-logo.js +1 -1
- package/lib/notifications/tag.js +1 -1
- package/lib/passport-tag.js +1 -1
- package/lib/relative-time.js +1 -1
- package/lib/schema-form/passport-input.js +1 -1
- package/lib/schema-form/text-input.js +1 -1
- package/lib/store/item.js +1 -1
- package/lib/subscription/blocklet.js +1 -1
- package/lib/subscription/server.js +17 -4
- package/lib/tag.js +1 -1
- package/lib/team/members/member.js +1 -1
- package/lib/team/members/passport-item.js +1 -1
- package/lib/team/search-input.js +1 -1
- package/package.json +19 -19
|
@@ -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}`);
|
|
@@ -10,7 +10,7 @@ import { LocaleContext } from '@arcblock/ux/lib/Locale/context';
|
|
|
10
10
|
import Button from '@arcblock/ux/lib/Button';
|
|
11
11
|
import LoopIcon from '@mui/icons-material/Loop';
|
|
12
12
|
import { EVENTS } from '@abtnode/constant';
|
|
13
|
-
import { BLOCKLET_CONFIGURABLE_KEY, SUPPORTED_LANGUAGES } from '@blocklet/constant';
|
|
13
|
+
import { BLOCKLET_CONFIGURABLE_KEY, BLOCKLET_TENANT_MODES, SUPPORTED_LANGUAGES } from '@blocklet/constant';
|
|
14
14
|
import { getWhoCanAccess } from '@blocklet/meta/lib/util';
|
|
15
15
|
import Toast from '@arcblock/ux/lib/Toast';
|
|
16
16
|
import FormTextInput from '../form/form-text-input';
|
|
@@ -83,6 +83,8 @@ function BlockletEnvironment({
|
|
|
83
83
|
const deletable = !customDelete || customDelete.value === 'yes';
|
|
84
84
|
const customLanguages = blocklet.environments.find(x => x.key === BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_LANGUAGES);
|
|
85
85
|
const customUrl = blocklet.environments.find(x => x.key === BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_URL);
|
|
86
|
+
const customTenantMode = blocklet.environments.find(x => x.key === BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_TENANT_MODE);
|
|
87
|
+
const tenantMode = customTenantMode?.value || BLOCKLET_TENANT_MODES.SINGLE;
|
|
86
88
|
const copyrightOwner = blocklet.environments.find(x => x.key === BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_COPYRIGHT_OWNER);
|
|
87
89
|
const copyrightYear = blocklet.environments.find(x => x.key === BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_COPYRIGHT_YEAR);
|
|
88
90
|
const configurableEnvs = [{
|
|
@@ -172,7 +174,7 @@ function BlockletEnvironment({
|
|
|
172
174
|
setLoading(false);
|
|
173
175
|
}
|
|
174
176
|
};
|
|
175
|
-
const
|
|
177
|
+
const createBooleanConfigHandler = (key, value) => async e => {
|
|
176
178
|
if (loading) {
|
|
177
179
|
return;
|
|
178
180
|
}
|
|
@@ -187,8 +189,8 @@ function BlockletEnvironment({
|
|
|
187
189
|
input: {
|
|
188
190
|
did: blocklet.meta.did,
|
|
189
191
|
configs: [{
|
|
190
|
-
key: BLOCKLET_CONFIGURABLE_KEY
|
|
191
|
-
value: checked
|
|
192
|
+
key: BLOCKLET_CONFIGURABLE_KEY[key],
|
|
193
|
+
value: value(checked)
|
|
192
194
|
}]
|
|
193
195
|
}
|
|
194
196
|
});
|
|
@@ -199,6 +201,8 @@ function BlockletEnvironment({
|
|
|
199
201
|
setLoading(false);
|
|
200
202
|
}
|
|
201
203
|
};
|
|
204
|
+
const onDeletableChange = createBooleanConfigHandler('BLOCKLET_DELETABLE', checked => checked ? 'no' : 'yes');
|
|
205
|
+
const onTenantModeChange = createBooleanConfigHandler('BLOCKLET_APP_TENANT_MODE', checked => checked ? BLOCKLET_TENANT_MODES.MULTIPLE : BLOCKLET_TENANT_MODES.SINGLE);
|
|
202
206
|
const onUpdateCors = async value => {
|
|
203
207
|
const oldValue = site.corsAllowedOrigins || [];
|
|
204
208
|
const newValue = value.split(',').map(x => x.trim()).filter(Boolean);
|
|
@@ -261,7 +265,7 @@ function BlockletEnvironment({
|
|
|
261
265
|
style: {
|
|
262
266
|
marginTop: 0
|
|
263
267
|
},
|
|
264
|
-
disabled:
|
|
268
|
+
disabled: disabled,
|
|
265
269
|
loading: loading,
|
|
266
270
|
initialValue: item.value,
|
|
267
271
|
onSubmit: value => onSubmitConfig(item.key, value)
|
|
@@ -356,7 +360,7 @@ function BlockletEnvironment({
|
|
|
356
360
|
style: {
|
|
357
361
|
marginTop: 0
|
|
358
362
|
},
|
|
359
|
-
disabled:
|
|
363
|
+
disabled: disabled,
|
|
360
364
|
loading: loading,
|
|
361
365
|
options: languages,
|
|
362
366
|
noEmpty: true,
|
|
@@ -402,7 +406,7 @@ function BlockletEnvironment({
|
|
|
402
406
|
style: {
|
|
403
407
|
marginTop: 0
|
|
404
408
|
},
|
|
405
|
-
disabled:
|
|
409
|
+
disabled: disabled,
|
|
406
410
|
loading: loading,
|
|
407
411
|
initialValue: (site.corsAllowedOrigins || []).join(', '),
|
|
408
412
|
onSubmit: onUpdateCors
|
|
@@ -425,7 +429,6 @@ function BlockletEnvironment({
|
|
|
425
429
|
},
|
|
426
430
|
children: [/*#__PURE__*/_jsx(Box, {
|
|
427
431
|
className: "config-form",
|
|
428
|
-
mt: 2,
|
|
429
432
|
children: !inService && /*#__PURE__*/_jsxs(Box, {
|
|
430
433
|
className: "config-item",
|
|
431
434
|
children: [/*#__PURE__*/_jsxs(Box, {
|
|
@@ -450,7 +453,7 @@ function BlockletEnvironment({
|
|
|
450
453
|
mb: 0,
|
|
451
454
|
children: t('blocklet.config.sk')
|
|
452
455
|
}), /*#__PURE__*/_jsx(AppSk, {
|
|
453
|
-
disabled:
|
|
456
|
+
disabled: disabled,
|
|
454
457
|
loading: loading,
|
|
455
458
|
initialValue: blocklet.environments.find(x => x.key === 'BLOCKLET_APP_SK').value,
|
|
456
459
|
onChange: onAppSkChange
|
|
@@ -506,6 +509,22 @@ function BlockletEnvironment({
|
|
|
506
509
|
teamDid: did
|
|
507
510
|
})]
|
|
508
511
|
})
|
|
512
|
+
}), /*#__PURE__*/_jsx(Box, {
|
|
513
|
+
className: "config-form",
|
|
514
|
+
children: /*#__PURE__*/_jsxs(Box, {
|
|
515
|
+
className: "config-item",
|
|
516
|
+
children: [/*#__PURE__*/_jsxs(Box, {
|
|
517
|
+
className: "config-label",
|
|
518
|
+
children: [t('blocklet.config.tenantMode.name'), /*#__PURE__*/_jsx(Box, {
|
|
519
|
+
className: "config-desc",
|
|
520
|
+
children: t(`blocklet.config.tenantMode.${tenantMode}`)
|
|
521
|
+
})]
|
|
522
|
+
}), /*#__PURE__*/_jsx(Switch, {
|
|
523
|
+
disabled: disabled,
|
|
524
|
+
checked: tenantMode === BLOCKLET_TENANT_MODES.MULTIPLE,
|
|
525
|
+
onChange: onTenantModeChange
|
|
526
|
+
})]
|
|
527
|
+
})
|
|
509
528
|
})]
|
|
510
529
|
})]
|
|
511
530
|
});
|
|
@@ -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__*/
|
|
138
|
-
|
|
139
|
-
|
|
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
|
@@ -504,6 +504,11 @@ export default {
|
|
|
504
504
|
action: 'مسح الذاكرة المؤقتة',
|
|
505
505
|
success: 'تم مسح {count} إدخالات التخزين المؤقت بنجاح',
|
|
506
506
|
description: 'هل أنت متأكد أنك تريد مسح الملفات المخزنة المؤقتة في جهاز التوجيه وخدمة كتلة الحجب؟ قد يتسبب هذا الإجراء في تراجع طفيف في الأداء على المدى القصير.'
|
|
507
|
+
},
|
|
508
|
+
tenantMode: {
|
|
509
|
+
name: 'وضع العديد من المستأجرين',
|
|
510
|
+
multiple: 'يعمل هذا البلوكليت في وضع عدة مستأجرين ، يجب عزل البيانات لكل مستأجر',
|
|
511
|
+
single: 'تعمل هذه البرمجية النصية في وضع المستأجر الواحد ، حيث يتم مشاركة جميع البيانات.'
|
|
507
512
|
}
|
|
508
513
|
},
|
|
509
514
|
overview: {
|
|
@@ -1745,7 +1750,8 @@ export default {
|
|
|
1745
1750
|
error: 'انتهت صلاحية الاشتراك'
|
|
1746
1751
|
},
|
|
1747
1752
|
loading: 'تحميل الاشتراك...',
|
|
1748
|
-
loadFailed: 'فشل تحميل معلومات الاشتراك ، يرجى إعادة المحاولة!'
|
|
1753
|
+
loadFailed: 'فشل تحميل معلومات الاشتراك ، يرجى إعادة المحاولة!',
|
|
1754
|
+
nextInvoice: 'الفاتورة التالية: {date}'
|
|
1749
1755
|
}
|
|
1750
1756
|
},
|
|
1751
1757
|
analytics: {
|
package/es/locales/de.js
CHANGED
|
@@ -504,6 +504,11 @@ export default {
|
|
|
504
504
|
action: 'Cache löschen',
|
|
505
505
|
success: 'Erfolgreich {count} Cache-Einträge gelöscht',
|
|
506
506
|
description: 'Bist du sicher, dass du zwischengespeicherte Dateien im Router und Blocklet-Service löschen möchtest? Diese Operation kann in naher Zukunft zu einer leichten Leistungseinbuße führen.'
|
|
507
|
+
},
|
|
508
|
+
tenantMode: {
|
|
509
|
+
name: 'Mehrere Mandantenmodus',
|
|
510
|
+
multiple: 'Dieses Blocklet läuft im Mehrmandantenmodus, Daten sollten für jeden Mandanten isoliert sein',
|
|
511
|
+
single: 'Dieser Blocklet läuft im Einzelmandantenmodus, alle Daten werden geteilt.'
|
|
507
512
|
}
|
|
508
513
|
},
|
|
509
514
|
overview: {
|
|
@@ -1745,7 +1750,8 @@ export default {
|
|
|
1745
1750
|
error: 'Abonnement abgelaufen'
|
|
1746
1751
|
},
|
|
1747
1752
|
loading: 'Abonnement laden...',
|
|
1748
|
-
loadFailed: 'Fehler beim Laden der Abonnementinformationen, bitte erneut versuchen!'
|
|
1753
|
+
loadFailed: 'Fehler beim Laden der Abonnementinformationen, bitte erneut versuchen!',
|
|
1754
|
+
nextInvoice: 'Nächste Rechnung: {date}'
|
|
1749
1755
|
}
|
|
1750
1756
|
},
|
|
1751
1757
|
analytics: {
|
package/es/locales/en.js
CHANGED
|
@@ -434,6 +434,11 @@ export default {
|
|
|
434
434
|
enable: 'This blocklet can NOT currently be deleted',
|
|
435
435
|
disable: 'This blocklet can currently be deleted'
|
|
436
436
|
},
|
|
437
|
+
tenantMode: {
|
|
438
|
+
name: 'Multiple Tenant Mode',
|
|
439
|
+
multiple: 'This blocklet runs in multiple tenant mode, data should be isolated for each tenant',
|
|
440
|
+
single: 'This blocklet runs in single tenant mode, all data are shared'
|
|
441
|
+
},
|
|
437
442
|
walletType: {
|
|
438
443
|
name: 'Wallet Type',
|
|
439
444
|
description: 'Blocklet instance wallet type, will change the derived DID'
|
|
@@ -1735,7 +1740,8 @@ export default {
|
|
|
1735
1740
|
error: 'Subscription Expired'
|
|
1736
1741
|
},
|
|
1737
1742
|
loading: 'Load subscription...',
|
|
1738
|
-
loadFailed: 'Failed to load subscription info, please retry!'
|
|
1743
|
+
loadFailed: 'Failed to load subscription info, please retry!',
|
|
1744
|
+
nextInvoice: 'Next Invoice: {date}'
|
|
1739
1745
|
}
|
|
1740
1746
|
},
|
|
1741
1747
|
analytics: {
|
package/es/locales/es.js
CHANGED
|
@@ -504,6 +504,11 @@ export default {
|
|
|
504
504
|
action: 'Borrar caché',
|
|
505
505
|
success: 'Se eliminaron correctamente {count} entradas de caché',
|
|
506
506
|
description: '¿Estás seguro de que quieres borrar los archivos en caché en el router y el servicio de blocklet? Esta operación puede causar una ligera disminución en el rendimiento a corto plazo.'
|
|
507
|
+
},
|
|
508
|
+
tenantMode: {
|
|
509
|
+
name: 'Modo Multitenante Múltiple',
|
|
510
|
+
multiple: 'Este blocklet se ejecuta en modo de múltiples inquilinos, los datos deben estar aislados para cada inquilino',
|
|
511
|
+
single: 'Este blocklet se ejecuta en modo de inquilino único, todos los datos son compartidos'
|
|
507
512
|
}
|
|
508
513
|
},
|
|
509
514
|
overview: {
|
|
@@ -1745,7 +1750,8 @@ export default {
|
|
|
1745
1750
|
error: 'Suscripción vencida'
|
|
1746
1751
|
},
|
|
1747
1752
|
loading: 'Cargar suscripción...',
|
|
1748
|
-
loadFailed: 'No se pudo cargar la información de la suscripción, ¡por favor intente de nuevo!'
|
|
1753
|
+
loadFailed: 'No se pudo cargar la información de la suscripción, ¡por favor intente de nuevo!',
|
|
1754
|
+
nextInvoice: 'Próxima factura: {date}'
|
|
1749
1755
|
}
|
|
1750
1756
|
},
|
|
1751
1757
|
analytics: {
|
package/es/locales/fr.js
CHANGED
|
@@ -504,6 +504,11 @@ export default {
|
|
|
504
504
|
action: 'Effacer le cache',
|
|
505
505
|
success: '{count} entrées de cache effacées avec succès',
|
|
506
506
|
description: 'Êtes-vous sûr de vouloir effacer les fichiers mis en cache dans le routeur et le service de blocage? Cette opération peut entraîner une légère baisse des performances à court terme.'
|
|
507
|
+
},
|
|
508
|
+
tenantMode: {
|
|
509
|
+
name: 'Mode multi-locataire',
|
|
510
|
+
multiple: 'Ce bloclet fonctionne en mode locataire multiple, les données doivent être isolées pour chaque locataire',
|
|
511
|
+
single: 'Ce blocklet fonctionne en mode locataire unique, toutes les données sont partagées.'
|
|
507
512
|
}
|
|
508
513
|
},
|
|
509
514
|
overview: {
|
|
@@ -1745,7 +1750,8 @@ export default {
|
|
|
1745
1750
|
error: 'Abonnement expiré'
|
|
1746
1751
|
},
|
|
1747
1752
|
loading: "Chargement de l'abonnement...",
|
|
1748
|
-
loadFailed: "Échec du chargement des informations d'abonnement, veuillez réessayer !"
|
|
1753
|
+
loadFailed: "Échec du chargement des informations d'abonnement, veuillez réessayer !",
|
|
1754
|
+
nextInvoice: 'Prochaine facture: {date}'
|
|
1749
1755
|
}
|
|
1750
1756
|
},
|
|
1751
1757
|
analytics: {
|
package/es/locales/hi.js
CHANGED
|
@@ -504,6 +504,11 @@ export default {
|
|
|
504
504
|
action: 'कैश साफ़ करें',
|
|
505
505
|
success: '{count} कैश एंट्री सफलतापूर्वक खाली की गईं',
|
|
506
506
|
description: 'क्या आप सुनिश्चित हैं कि आप राउटर और ब्लॉकलेट सेवा में कैश की फ़ाइलें साफ़ करना चाहते हैं? यह ऑपरेशन छोटी अवधि में हल्की प्रदर्शनमाप में कमी का कारण बन सकता है।'
|
|
507
|
+
},
|
|
508
|
+
tenantMode: {
|
|
509
|
+
name: 'एकाधिक किराये के लोगों का मोड',
|
|
510
|
+
multiple: 'यह ब्लॉकलेट मल्टी-किरायेदार मोड में चलता है, प्रत्येक किरायेदार के लिए डाटा अलग होना चाहिए',
|
|
511
|
+
single: 'यह ब्लॉकलेट सिंगल टेनेंट मोड में चलता है, सभी डेटा साझा किए जाते हैं।'
|
|
507
512
|
}
|
|
508
513
|
},
|
|
509
514
|
overview: {
|
|
@@ -1745,7 +1750,8 @@ export default {
|
|
|
1745
1750
|
error: 'सदस्यता समाप्त हो गई'
|
|
1746
1751
|
},
|
|
1747
1752
|
loading: 'सदस्यता लोड करें...',
|
|
1748
|
-
loadFailed: 'सदस्यता जानकारी लोड करने में विफल, कृपया पुनः प्रयास करें!'
|
|
1753
|
+
loadFailed: 'सदस्यता जानकारी लोड करने में विफल, कृपया पुनः प्रयास करें!',
|
|
1754
|
+
nextInvoice: 'अगला बिल: {date}'
|
|
1749
1755
|
}
|
|
1750
1756
|
},
|
|
1751
1757
|
analytics: {
|
package/es/locales/i18n.db
CHANGED
|
Binary file
|
package/es/locales/id.js
CHANGED
|
@@ -504,6 +504,11 @@ export default {
|
|
|
504
504
|
action: 'Bersihkan Cache',
|
|
505
505
|
success: 'Berhasil membersihkan {count} entri cache',
|
|
506
506
|
description: 'Apakah Anda yakin ingin menghapus file yang di-cache di router dan layanan blocklet? Operasi ini mungkin menyebabkan penurunan kinerja yang sedikit dalam jangka pendek.'
|
|
507
|
+
},
|
|
508
|
+
tenantMode: {
|
|
509
|
+
name: 'Mode Sewa Multipel',
|
|
510
|
+
multiple: 'Blocklet ini berjalan dalam mode penyewa ganda, data harus diisolasi untuk setiap penyewa',
|
|
511
|
+
single: 'Blok ini berjalan dalam mode penyewa tunggal, semua data dibagikan'
|
|
507
512
|
}
|
|
508
513
|
},
|
|
509
514
|
overview: {
|
|
@@ -1745,7 +1750,8 @@ export default {
|
|
|
1745
1750
|
error: 'Langganan Telah Kadaluarsa'
|
|
1746
1751
|
},
|
|
1747
1752
|
loading: 'Memuat langganan...',
|
|
1748
|
-
loadFailed: 'Gagal memuat info langganan, silakan coba lagi!'
|
|
1753
|
+
loadFailed: 'Gagal memuat info langganan, silakan coba lagi!',
|
|
1754
|
+
nextInvoice: 'Faktur berikutnya: {date}'
|
|
1749
1755
|
}
|
|
1750
1756
|
},
|
|
1751
1757
|
analytics: {
|
package/es/locales/ja.js
CHANGED
|
@@ -504,6 +504,11 @@ export default {
|
|
|
504
504
|
action: 'キャッシュをクリア',
|
|
505
505
|
success: '{count}つのキャッシュエントリーを正常にクリアしました',
|
|
506
506
|
description: 'ルーターとブロックレットサービスのキャッシュファイルを削除してもよろしいですか?この操作により、短期間の間に少しパフォーマンスが低下する可能性があります。'
|
|
507
|
+
},
|
|
508
|
+
tenantMode: {
|
|
509
|
+
name: 'マルチテナントモード',
|
|
510
|
+
multiple: 'このブロックレットは複数のテナントモードで実行され、各テナントごとにデータが分離される必要があります',
|
|
511
|
+
single: 'このブロックレットはシングルテナントモードで実行され、すべてのデータが共有されています'
|
|
507
512
|
}
|
|
508
513
|
},
|
|
509
514
|
overview: {
|
|
@@ -1745,7 +1750,8 @@ export default {
|
|
|
1745
1750
|
error: '定期購読が期限切れです'
|
|
1746
1751
|
},
|
|
1747
1752
|
loading: 'サブスクリプションをロード中...',
|
|
1748
|
-
loadFailed: '購読情報の読み込みに失敗しました。もう一度やり直してください!'
|
|
1753
|
+
loadFailed: '購読情報の読み込みに失敗しました。もう一度やり直してください!',
|
|
1754
|
+
nextInvoice: '次の請求書: {date}'
|
|
1749
1755
|
}
|
|
1750
1756
|
},
|
|
1751
1757
|
analytics: {
|
package/es/locales/ko.js
CHANGED
|
@@ -504,6 +504,11 @@ export default {
|
|
|
504
504
|
action: '캐시 지우기',
|
|
505
505
|
success: '{count}개의 캐시 엔트리를 성공적으로 지웠습니다',
|
|
506
506
|
description: '라우터와 블록렛 서비스에서 캐시 파일을 지우시겠습니까? 이 작업은 단기간 내에 약간의 성능 저하를 일으킬 수 있습니다.'
|
|
507
|
+
},
|
|
508
|
+
tenantMode: {
|
|
509
|
+
name: '다중 테넌트 모드',
|
|
510
|
+
multiple: '이 블록렛은 여러 테넌트 모드에서 실행되며 각 테넌트마다 데이터가 격리되어야 합니다',
|
|
511
|
+
single: '이 블록렛은 단일 테넌트 모드에서 실행되며, 모든 데이터가 공유됩니다'
|
|
507
512
|
}
|
|
508
513
|
},
|
|
509
514
|
overview: {
|
|
@@ -1745,7 +1750,8 @@ export default {
|
|
|
1745
1750
|
error: '구독이 만료되었습니다'
|
|
1746
1751
|
},
|
|
1747
1752
|
loading: '구독 불러오는 중...',
|
|
1748
|
-
loadFailed: '구독 정보를 불러오지 못했습니다. 다시 시도해주세요!'
|
|
1753
|
+
loadFailed: '구독 정보를 불러오지 못했습니다. 다시 시도해주세요!',
|
|
1754
|
+
nextInvoice: '다음 송장: {date}'
|
|
1749
1755
|
}
|
|
1750
1756
|
},
|
|
1751
1757
|
analytics: {
|
package/es/locales/pt.js
CHANGED
|
@@ -504,6 +504,11 @@ export default {
|
|
|
504
504
|
action: 'Limpar Cache',
|
|
505
505
|
success: 'Entradas do cache {count} limpas com sucesso',
|
|
506
506
|
description: 'Você tem certeza de que deseja limpar os arquivos em cache no roteador e no serviço de bloco? Essa operação pode causar uma pequena redução de desempenho a curto prazo.'
|
|
507
|
+
},
|
|
508
|
+
tenantMode: {
|
|
509
|
+
name: 'Modo de Vários Locatários',
|
|
510
|
+
multiple: 'Este bloco funciona no modo de múltiplos inquilinos, os dados devem ser isolados para cada inquilino',
|
|
511
|
+
single: 'Este bloco de código é executado no modo de locatário único, todos os dados são compartilhados'
|
|
507
512
|
}
|
|
508
513
|
},
|
|
509
514
|
overview: {
|
|
@@ -1745,7 +1750,8 @@ export default {
|
|
|
1745
1750
|
error: 'Assinatura Expirada'
|
|
1746
1751
|
},
|
|
1747
1752
|
loading: 'Carregar assinatura...',
|
|
1748
|
-
loadFailed: 'Falha ao carregar as informações de inscrição, por favor tente novamente!'
|
|
1753
|
+
loadFailed: 'Falha ao carregar as informações de inscrição, por favor tente novamente!',
|
|
1754
|
+
nextInvoice: 'Próxima fatura: {date}'
|
|
1749
1755
|
}
|
|
1750
1756
|
},
|
|
1751
1757
|
analytics: {
|
package/es/locales/ru.js
CHANGED
|
@@ -504,6 +504,11 @@ export default {
|
|
|
504
504
|
action: 'Очистить кэш',
|
|
505
505
|
success: 'Успешно очищено {count} записей кэша',
|
|
506
506
|
description: 'Вы уверены, что хотите очистить кэшированные файлы в маршрутизаторе и службе блокировки? Эта операция может вызвать незначительное снижение производительности в короткой перспективе.'
|
|
507
|
+
},
|
|
508
|
+
tenantMode: {
|
|
509
|
+
name: 'Режим нескольких арендаторов',
|
|
510
|
+
multiple: 'Этот блоклет работает в режиме множественных арендодателей, данные должны быть изолированы для каждого арендодателя',
|
|
511
|
+
single: 'Этот блоклет работает в режиме с одним арендатором, все данные общие.'
|
|
507
512
|
}
|
|
508
513
|
},
|
|
509
514
|
overview: {
|
|
@@ -1745,7 +1750,8 @@ export default {
|
|
|
1745
1750
|
error: 'Подписка истекла'
|
|
1746
1751
|
},
|
|
1747
1752
|
loading: 'Загрузка подписки...',
|
|
1748
|
-
loadFailed: 'Не удалось загрузить информацию о подписке, попробуйте ещё раз!'
|
|
1753
|
+
loadFailed: 'Не удалось загрузить информацию о подписке, попробуйте ещё раз!',
|
|
1754
|
+
nextInvoice: 'Следующий счёт: {date}'
|
|
1749
1755
|
}
|
|
1750
1756
|
},
|
|
1751
1757
|
analytics: {
|
package/es/locales/th.js
CHANGED
|
@@ -504,6 +504,11 @@ export default {
|
|
|
504
504
|
action: 'ล้างแคช',
|
|
505
505
|
success: 'ล้าง {count} รายการแคชเรียบร้อยแล้ว',
|
|
506
506
|
description: 'คุณแน่ใจไหมว่าต้องการล้างแคชไฟล์ที่เก็บไว้ในเราเตอร์และบริการบล็อกเล็ท? การดำเนินการนี้อาจทำให้ประสิทธิภาพลดลงบ้างในช่วงสั้น'
|
|
507
|
+
},
|
|
508
|
+
tenantMode: {
|
|
509
|
+
name: 'โหมดหลายผู้เช่า',
|
|
510
|
+
multiple: 'บล็อกเล็ตนี้ทำงานในโหมดผู้เช่าหลายราย เนื้อหาควรถูกแยกกันสำหรับแต่ละผู้เช่า',
|
|
511
|
+
single: 'บล็อกเลตนี้ทำงานในโหมดลูกค้าเดี่ยว ข้อมูลทั้งหมดถูกแชร์'
|
|
507
512
|
}
|
|
508
513
|
},
|
|
509
514
|
overview: {
|
|
@@ -1745,7 +1750,8 @@ export default {
|
|
|
1745
1750
|
error: 'การสมัครสมาชิกหมดอายุ'
|
|
1746
1751
|
},
|
|
1747
1752
|
loading: 'โหลดการสมัครสมาชิก...',
|
|
1748
|
-
loadFailed: 'ไม่สามารถโหลดข้อมูลการสมัครสมาชิกได้ โปรดลองใหม่!'
|
|
1753
|
+
loadFailed: 'ไม่สามารถโหลดข้อมูลการสมัครสมาชิกได้ โปรดลองใหม่!',
|
|
1754
|
+
nextInvoice: 'ใบแจ้งหนี้ถัดไป: {date}'
|
|
1749
1755
|
}
|
|
1750
1756
|
},
|
|
1751
1757
|
analytics: {
|
package/es/locales/vi.js
CHANGED
|
@@ -504,6 +504,11 @@ export default {
|
|
|
504
504
|
action: 'Xóa Cache',
|
|
505
505
|
success: '{count} mục cache đã được xóa thành công',
|
|
506
506
|
description: 'Bạn có chắc chắn muốn xóa các tệp được lưu trữ tạm thời trong bộ định tuyến và dịch vụ blocklet không? Thao tác này có thể làm giảm hiệu suất một chút trong thời gian ngắn.'
|
|
507
|
+
},
|
|
508
|
+
tenantMode: {
|
|
509
|
+
name: 'Chế độ Đa Người Thuê',
|
|
510
|
+
multiple: 'Blocklet này chạy trong chế độ nhiều người thuê, dữ liệu được cô lập cho mỗi người thuê',
|
|
511
|
+
single: 'Khối mã này chạy trong chế độ khách hàng đơn, tất cả dữ liệu được chia sẻ'
|
|
507
512
|
}
|
|
508
513
|
},
|
|
509
514
|
overview: {
|
|
@@ -1745,7 +1750,8 @@ export default {
|
|
|
1745
1750
|
error: 'Đã hết hạn đăng ký'
|
|
1746
1751
|
},
|
|
1747
1752
|
loading: 'Tải đăng ký...',
|
|
1748
|
-
loadFailed: 'Không tải được thông tin đăng ký, vui lòng thử lại!'
|
|
1753
|
+
loadFailed: 'Không tải được thông tin đăng ký, vui lòng thử lại!',
|
|
1754
|
+
nextInvoice: 'Hóa đơn tiếp theo: {date}'
|
|
1749
1755
|
}
|
|
1750
1756
|
},
|
|
1751
1757
|
analytics: {
|
package/es/locales/zh-tw.js
CHANGED
|
@@ -504,6 +504,11 @@ export default {
|
|
|
504
504
|
action: '清除快取',
|
|
505
505
|
success: '成功清除{count}個快取項目',
|
|
506
506
|
description: '你確定要清除路由器和區塊服務中的快取文件嗎?這個操作可能會導致短期內性能略微下降。'
|
|
507
|
+
},
|
|
508
|
+
tenantMode: {
|
|
509
|
+
name: '多租戶模式',
|
|
510
|
+
multiple: '該區塊以多租戶模式運行,每個租戶的數據應該是隔離的',
|
|
511
|
+
single: '這個 blocklet 在單租戶模式下運行,所有數據都是共享的'
|
|
507
512
|
}
|
|
508
513
|
},
|
|
509
514
|
overview: {
|
|
@@ -1745,7 +1750,8 @@ export default {
|
|
|
1745
1750
|
error: '訂閱已到期'
|
|
1746
1751
|
},
|
|
1747
1752
|
loading: '加載訂閱...',
|
|
1748
|
-
loadFailed: '載入訂閱資訊失敗,請重試!'
|
|
1753
|
+
loadFailed: '載入訂閱資訊失敗,請重試!',
|
|
1754
|
+
nextInvoice: '下個發票:{date}'
|
|
1749
1755
|
}
|
|
1750
1756
|
},
|
|
1751
1757
|
analytics: {
|
package/es/locales/zh.js
CHANGED
|
@@ -505,6 +505,11 @@ export default {
|
|
|
505
505
|
action: '清除缓存',
|
|
506
506
|
success: '成功清除了 {count} 个缓存条目',
|
|
507
507
|
description: '您确定要清除缓存在网关和服务中的文件吗?此操作可能会在短期内导致轻微的性能降低。'
|
|
508
|
+
},
|
|
509
|
+
tenantMode: {
|
|
510
|
+
name: '多租户模式',
|
|
511
|
+
multiple: '该应用在多租户模式下运行,每个租户的数据应该是隔离的',
|
|
512
|
+
single: '该应用运行在单租户模式下,所有数据都是共享的'
|
|
508
513
|
}
|
|
509
514
|
},
|
|
510
515
|
overview: {
|
|
@@ -663,7 +668,7 @@ export default {
|
|
|
663
668
|
productTitle: 'Blocklet 详情',
|
|
664
669
|
versionTitle: '版本信息',
|
|
665
670
|
imgTitle: '图片资源',
|
|
666
|
-
resourceTitle: '
|
|
671
|
+
resourceTitle: '资源',
|
|
667
672
|
blockletEmptyTip: '这里没有任何 Blocklet',
|
|
668
673
|
createBlockletTip: '你可以使用此应用的资源,组件,配置制作新的 Blocklet',
|
|
669
674
|
createBlocklet: '新建 Blocklet',
|
|
@@ -1752,7 +1757,8 @@ export default {
|
|
|
1752
1757
|
error: '订阅已过期'
|
|
1753
1758
|
},
|
|
1754
1759
|
loadFailed: '加载订阅信息失败,请重试!',
|
|
1755
|
-
loading: '加载订阅信息...'
|
|
1760
|
+
loading: '加载订阅信息...',
|
|
1761
|
+
nextInvoice: '下次账单:{date}'
|
|
1756
1762
|
}
|
|
1757
1763
|
},
|
|
1758
1764
|
analytics: {
|
|
@@ -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, {
|
package/lib/actions.js
CHANGED
|
@@ -25,7 +25,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
25
25
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
26
26
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
27
27
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
28
|
-
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var
|
|
28
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }
|
|
29
29
|
function Actions(_ref) {
|
|
30
30
|
let {
|
|
31
31
|
actions,
|
package/lib/blocklet/actions.js
CHANGED
|
@@ -50,7 +50,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
50
50
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
51
51
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
52
52
|
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; }
|
|
53
|
-
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var
|
|
53
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }
|
|
54
54
|
function BlockletActions(_ref) {
|
|
55
55
|
let {
|
|
56
56
|
blocklet,
|