@abtnode/ux 1.8.33 → 1.8.35

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 (39) hide show
  1. package/lib/blocklet/component/environment.js +1 -1
  2. package/lib/blocklet/component/index.js +61 -31
  3. package/lib/blocklet/component/line.js +28 -0
  4. package/lib/blocklet/component/setting.js +1 -1
  5. package/lib/blocklet/configuration.js +180 -13
  6. package/lib/blocklet/overview.js +127 -10
  7. package/lib/blocklet/router/action/add-domain-alias.js +171 -0
  8. package/lib/blocklet/router/action/add-rule.js +196 -0
  9. package/lib/blocklet/router/action/config-routing-rule.js +125 -0
  10. package/lib/blocklet/router/action/delete-domain-alias.js +107 -0
  11. package/lib/blocklet/router/action/delete-rule.js +114 -0
  12. package/lib/blocklet/router/action/update-rule.js +195 -0
  13. package/lib/blocklet/router/domain-actions.js +71 -0
  14. package/lib/blocklet/router/domain-status.js +96 -0
  15. package/lib/blocklet/router/rule-actions.js +75 -0
  16. package/lib/blocklet/router/rule-list.js +179 -0
  17. package/lib/blocklet/router/util.js +146 -0
  18. package/lib/blocklet/types.js +25 -0
  19. package/lib/blocklet/util.js +105 -9
  20. package/lib/blocklet/version.js +1 -1
  21. package/lib/certificate.js +110 -0
  22. package/lib/contexts/blocklet.js +19 -0
  23. package/lib/delete-confirm.js +125 -0
  24. package/lib/form/form-text-input.js +9 -2
  25. package/lib/hooks/blocklet.js +171 -0
  26. package/lib/hooks/url-evaluation.js +157 -0
  27. package/lib/hooks/use-subscription.js +28 -0
  28. package/lib/layout/addon.js +17 -17
  29. package/lib/layout/feedback.js +57 -0
  30. package/lib/locales/en.js +6 -2
  31. package/lib/locales/zh.js +6 -2
  32. package/lib/schema-form/index.js +9 -4
  33. package/lib/schema-form/text-input.js +1 -1
  34. package/lib/team/members/index.js +23 -11
  35. package/lib/team/members/member.js +3 -0
  36. package/lib/team/passports/color.js +131 -0
  37. package/lib/team/passports/index.js +32 -20
  38. package/lib/util/index.js +70 -5
  39. package/package.json +12 -12
@@ -91,6 +91,11 @@ function SchemaForm(_ref2) {
91
91
  [key]: '__encrypted__'
92
92
  }));
93
93
  }
94
+ if (['confirm', 'cancel'].includes(action)) {
95
+ onItemEditingStatusChange(null);
96
+ } else {
97
+ onItemEditingStatusChange(item);
98
+ }
94
99
  }
95
100
  function onItemEditingStatusChange(item) {
96
101
  if (item) {
@@ -147,7 +152,10 @@ function SchemaForm(_ref2) {
147
152
  description,
148
153
  editing,
149
154
  value: currentValue,
150
- onChange: changeValue => onFormItemChange(x, changeValue, 'change'),
155
+ onChange: function onChange(changeValue) {
156
+ let action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'change';
157
+ return onFormItemChange(x, changeValue, action);
158
+ },
151
159
  componentProps
152
160
  };
153
161
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
@@ -170,7 +178,6 @@ function SchemaForm(_ref2) {
170
178
  "data-cy": "schema-form-item-confirm",
171
179
  onClick: () => {
172
180
  onFormItemChange(x, currentValue, 'confirm');
173
- onItemEditingStatusChange(null);
174
181
  },
175
182
  disabled: disabled || loading,
176
183
  size: "large",
@@ -181,7 +188,6 @@ function SchemaForm(_ref2) {
181
188
  "data-cy": "schema-form-item-cancel",
182
189
  onClick: () => {
183
190
  onFormItemChange(x, editingItemInitialValue.current, 'cancel');
184
- onItemEditingStatusChange(null);
185
191
  },
186
192
  disabled: disabled || loading,
187
193
  size: "large",
@@ -191,7 +197,6 @@ function SchemaForm(_ref2) {
191
197
  "data-cy": "schema-form-item-edit",
192
198
  onClick: () => {
193
199
  onFormItemChange(x, formValues[key], 'edit');
194
- onItemEditingStatusChange(x);
195
200
  },
196
201
  disabled: disabled || editingItem,
197
202
  size: "large",
@@ -33,7 +33,7 @@ function TextInput(_ref) {
33
33
  // enter keydown
34
34
  const handleKeydown = e => {
35
35
  if (e.key === 'Enter') {
36
- onChange(inputValue.current);
36
+ onChange(inputValue.current, 'confirm');
37
37
  }
38
38
  };
39
39
  const onInputChange = changeValue => {
@@ -55,7 +55,10 @@ const isFromExternal = (user, teamIssuerDid) => {
55
55
  if (!list.length) {
56
56
  return false;
57
57
  }
58
- return !list.some(z => z.issuer.id === teamIssuerDid);
58
+ return !list.some(z => {
59
+ var _z$issuer;
60
+ return ((_z$issuer = z.issuer) === null || _z$issuer === void 0 ? void 0 : _z$issuer.id) === teamIssuerDid;
61
+ });
59
62
  };
60
63
  function SimpleInfo(_ref) {
61
64
  let {
@@ -181,6 +184,9 @@ function MemberList(_ref2) {
181
184
  (res.users || []).forEach(x => {
182
185
  x.isFromExternal = isFromExternal(x, teamIssuerDid);
183
186
  x.avatar = (0, _util2.parseAvatar)(x.avatar, teamDid, inService);
187
+
188
+ // for backwards compatibility
189
+ x.passports = (x.passports || []).filter(y => y.issuer);
184
190
  });
185
191
  setUsers(res.users || []);
186
192
  setRowCount(res.paging.total);
@@ -189,24 +195,30 @@ function MemberList(_ref2) {
189
195
  _toast.default.error(err.message);
190
196
  });
191
197
  };
192
- (0, _react.useEffect)(() => {
193
- getUsers();
194
- }, ["".concat(search.hideBlocked, "-").concat(search.role, "-").concat(search.page, "-").concat(search.pageSize, "-").concat(search.searchText)]); //eslint-disable-line
195
-
196
- // user counts
197
- (0, _react.useEffect)(() => {
198
+ const getUserCounts = () => {
198
199
  api.getUsersCountPerRole().then(res => {
199
200
  setUserCounts(res.counts || []);
200
201
  }).catch(err => {
201
202
  _toast.default.error(err.message);
202
203
  });
203
- }, []); //eslint-disable-line
204
-
205
- useSubscription(_constant.EVENTS.USER_UPDATED, data => {
204
+ };
205
+ const handleUserChange = data => {
206
206
  if (data.teamDid === teamDid) {
207
207
  getUsers();
208
+ getUserCounts();
208
209
  }
209
- }, [search]);
210
+ };
211
+ (0, _react.useEffect)(() => {
212
+ getUsers();
213
+ }, ["".concat(search.hideBlocked, "-").concat(search.role, "-").concat(search.page, "-").concat(search.pageSize, "-").concat(search.searchText)]); //eslint-disable-line
214
+
215
+ // user counts
216
+ (0, _react.useEffect)(() => {
217
+ getUserCounts();
218
+ }, []); //eslint-disable-line
219
+
220
+ useSubscription(_constant.EVENTS.USER_UPDATED, handleUserChange, [search]);
221
+ useSubscription(_constant.EVENTS.USER_ADDED, handleUserChange, [search]);
210
222
  const isInvitationEnabled = enablePassportIssuance;
211
223
  const columns = [{
212
224
  label: t('common.name'),
@@ -78,6 +78,9 @@ function Member(_ref) {
78
78
  });
79
79
  if (res.getUser.user) {
80
80
  res.getUser.user.avatar = (0, _util2.parseAvatar)(res.getUser.user.avatar, teamDid, inService);
81
+
82
+ // for backwards compatibility
83
+ res.getUser.user.passports = (res.getUser.user.passports || []).filter(x => x.issuer);
81
84
  }
82
85
  setUser(res.getUser.user || {});
83
86
  setIssuances(res.getPassportIssuances.list || []);
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = PassportColorWithPermission;
7
+ var _react = require("react");
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
10
+ var _Dialog = _interopRequireDefault(require("@arcblock/ux/lib/Dialog"));
11
+ var _Spinner = _interopRequireDefault(require("@arcblock/ux/lib/Spinner"));
12
+ var _reactColor = require("react-color");
13
+ var _context = require("@arcblock/ux/lib/Locale/context");
14
+ var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
15
+ var _createPassportSvg = _interopRequireDefault(require("@abtnode/auth/lib/util/create-passport-svg"));
16
+ var _util = require("@blocklet/meta/lib/util");
17
+ var _passportColor = require("@abtnode/auth/lib/util/passport-color");
18
+ var _constant = require("@blocklet/constant");
19
+ var _toast = _interopRequireDefault(require("../../toast"));
20
+ var _node = require("../../contexts/node");
21
+ var _blocklet = require("../../contexts/blocklet");
22
+ var _util2 = require("../../util");
23
+ var _permission = require("../../permission");
24
+ var _jsxRuntime = require("react/jsx-runtime");
25
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
27
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
28
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
29
+ function PassportColor(_ref) {
30
+ let {
31
+ onCancel,
32
+ onSuccess
33
+ } = _ref;
34
+ const {
35
+ api
36
+ } = (0, _node.useNodeContext)();
37
+ const {
38
+ blocklet
39
+ } = (0, _blocklet.useBlockletContext)();
40
+ const {
41
+ t
42
+ } = (0, _context.useLocaleContext)();
43
+ const [loading, setLoading] = (0, _react.useState)(false);
44
+ const curColor = (blocklet.environments.find(x => x.key === 'BLOCKLET_PASSPORT_COLOR') || {}).value || 'auto';
45
+ const defaultColor = curColor === 'auto' ? (0, _passportColor.getPassportColorFromDid)(blocklet.appDid) : curColor;
46
+ const [color, setColor] = (0, _react.useState)(defaultColor);
47
+ const onSubmit = async () => {
48
+ const params = [{
49
+ key: _constant.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_PASSPORT_COLOR,
50
+ value: color,
51
+ custom: true
52
+ }];
53
+ try {
54
+ setLoading(true);
55
+ await api.configBlocklet({
56
+ input: {
57
+ did: blocklet.meta.did,
58
+ configs: params
59
+ }
60
+ });
61
+ onSuccess();
62
+ } catch (err) {
63
+ _toast.default.error(err.message);
64
+ } finally {
65
+ setLoading(false);
66
+ }
67
+ };
68
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dialog.default, {
69
+ title: t('team.passport.color'),
70
+ onClose: onCancel,
71
+ open: true,
72
+ fullWidth: true,
73
+ actions: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
74
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
75
+ onClick: onCancel,
76
+ color: "inherit",
77
+ children: t('common.cancel')
78
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
79
+ onClick: onSubmit,
80
+ color: "primary",
81
+ disabled: loading,
82
+ variant: "contained",
83
+ autoFocus: true,
84
+ "data-cy": "bind-permission-btn-confirm",
85
+ children: [loading && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {
86
+ size: [16, 10]
87
+ }), t('common.save')]
88
+ })]
89
+ }),
90
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
91
+ display: "flex",
92
+ justifyContent: "center",
93
+ alignItems: "center",
94
+ className: "dialog-content",
95
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactColor.ChromePicker, {
96
+ color: color,
97
+ onChange: c => setColor(c.hex)
98
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
99
+ style: {
100
+ width: 96,
101
+ marginLeft: 48
102
+ },
103
+ alt: "",
104
+ src: (0, _createPassportSvg.default)({
105
+ title: 'Owner',
106
+ issuer: (0, _util.getDisplayName)(blocklet),
107
+ issuerDid: blocklet.appDid,
108
+ ownerName: 'Your Name',
109
+ isDataUrl: true,
110
+ preferredColor: color
111
+ })
112
+ })]
113
+ })
114
+ });
115
+ }
116
+ const PassportColorInDaemon = (0, _permission.withPermission)(PassportColor, 'mutate_team');
117
+ const PassportColorInService = (0, _permission.withPermission)(PassportColor, '', _util2.BlockletAdminRoles);
118
+ function PassportColorWithPermission(props) {
119
+ const {
120
+ inService
121
+ } = (0, _node.useNodeContext)();
122
+ if (inService) {
123
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(PassportColorInService, _objectSpread({}, props));
124
+ }
125
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(PassportColorInDaemon, _objectSpread({}, props));
126
+ }
127
+ PassportColor.propTypes = {
128
+ onCancel: _propTypes.default.func.isRequired,
129
+ onSuccess: _propTypes.default.func.isRequired
130
+ };
131
+ PassportColor.defaultProps = {};
@@ -24,6 +24,7 @@ var _permission = _interopRequireDefault(require("../../permission"));
24
24
  var _searchInput = _interopRequireDefault(require("../search-input"));
25
25
  var _listHeader = _interopRequireDefault(require("../styles/list-header"));
26
26
  var _detail = _interopRequireDefault(require("./detail"));
27
+ var _color = _interopRequireDefault(require("./color"));
27
28
  var _mutateRole = _interopRequireDefault(require("./mutate-role"));
28
29
  var _trustedIssuers = _interopRequireDefault(require("./trusted-issuers"));
29
30
  var _jsxRuntime = require("react/jsx-runtime");
@@ -50,6 +51,7 @@ function PassportList() {
50
51
  } = (0, _team.useTeamContext)();
51
52
  const [showCreate, setShowCreate] = (0, _react.useState)(false);
52
53
  const [updateForm, setUpdateForm] = (0, _react.useState)(false);
54
+ const [showColor, setShowColor] = (0, _react.useState)(false);
53
55
  const [showTrustedIssuers, setShowTrustedIssuers] = (0, _react.useState)(null);
54
56
  const [search, setSearch] = (0, _react.useState)('');
55
57
  const [loading, setLoading] = (0, _react.useState)(false);
@@ -94,27 +96,34 @@ function PassportList() {
94
96
  menuButtonProps: {
95
97
  'data-cy': 'trusted-issuers-more'
96
98
  },
97
- menu: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SplitButton.default.Item, {
98
- "data-cy": "config-show-issue-passport",
99
- onClick: () => {
100
- toggleShowIssue();
101
- },
102
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
103
- display: "flex",
104
- alignItems: "center",
105
- children: [loading && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {
106
- size: [16, 10],
107
- style: {
108
- marginRight: 8
109
- }
110
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
111
- children: [enablePassportIssuance ? t('team.passport.disableIssuance') : t('team.passport.enableIssuance'), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
112
- fontSize: 12,
113
- color: "#888",
114
- children: enablePassportIssuance ? t('team.passport.disableIssuanceTip') : t('team.passport.enableIssuanceTip')
99
+ menu: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
100
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_SplitButton.default.Item, {
101
+ "data-cy": "config-show-issue-passport",
102
+ onClick: () => {
103
+ toggleShowIssue();
104
+ },
105
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
106
+ display: "flex",
107
+ alignItems: "center",
108
+ children: [loading && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {
109
+ size: [16, 10],
110
+ style: {
111
+ marginRight: 8
112
+ }
113
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
114
+ children: [enablePassportIssuance ? t('team.passport.disableIssuance') : t('team.passport.enableIssuance'), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
115
+ fontSize: 12,
116
+ color: "#888",
117
+ children: enablePassportIssuance ? t('team.passport.disableIssuanceTip') : t('team.passport.enableIssuanceTip')
118
+ })]
115
119
  })]
116
- })]
117
- })
120
+ })
121
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_SplitButton.default.Item, {
122
+ onClick: () => setShowColor(true),
123
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
124
+ children: t('team.passport.configColor')
125
+ })
126
+ })]
118
127
  }),
119
128
  children: () => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
120
129
  variant: "outlined",
@@ -212,6 +221,9 @@ function PassportList() {
212
221
  item: updateForm
213
222
  }), showTrustedIssuers && /*#__PURE__*/(0, _jsxRuntime.jsx)(_trustedIssuers.default, {
214
223
  onCancel: () => setShowTrustedIssuers(false)
224
+ }), showColor && /*#__PURE__*/(0, _jsxRuntime.jsx)(_color.default, {
225
+ onCancel: () => setShowColor(null),
226
+ onSuccess: () => setShowColor(null)
215
227
  })]
216
228
  });
217
229
  }
package/lib/util/index.js CHANGED
@@ -22,7 +22,11 @@ exports.getAsset = getAsset;
22
22
  exports.getAssetExpiration = getAssetExpiration;
23
23
  exports.getBlockletLogoUrl = void 0;
24
24
  exports.getBlockletMetaUrl = getBlockletMetaUrl;
25
- exports.getEndPoint = exports.getBlockletUrlParams = exports.getBlockletServices = void 0;
25
+ exports.getBlockletServices = void 0;
26
+ exports.getBlockletUrl = getBlockletUrl;
27
+ exports.getBlockletUrlParams = void 0;
28
+ exports.getBlockletUrls = getBlockletUrls;
29
+ exports.getEndPoint = void 0;
26
30
  exports.getExplorerLink = getExplorerLink;
27
31
  exports.getPathPrefix = exports.getIssuePassportLink = exports.getInviteLink = void 0;
28
32
  exports.getRelativeTime = getRelativeTime;
@@ -35,7 +39,7 @@ exports.parseQuery = void 0;
35
39
  exports.patchJsxToLocale = patchJsxToLocale;
36
40
  exports.shouldCheckDomainStatus = void 0;
37
41
  exports.sleep = sleep;
38
- exports.validateDomain = exports.stringSortHandlerAsc = void 0;
42
+ exports.validateDomain = exports.toSlotDomain = exports.stringSortHandlerAsc = void 0;
39
43
  var _constant = require("@abtnode/constant");
40
44
  var _dayjs = _interopRequireDefault(require("dayjs"));
41
45
  require("moment/locale/zh-cn");
@@ -113,6 +117,53 @@ function getAccessUrl(hostname) {
113
117
  });
114
118
  return "".concat(url, "?").concat(searchParams.toString());
115
119
  }
120
+ function getBlockletUrl() {
121
+ let {
122
+ blocklet,
123
+ domain: inputDomain,
124
+ mountPoint: inputMountPoint,
125
+ params
126
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
127
+ const {
128
+ site
129
+ } = blocklet;
130
+ if (!site) {
131
+ return null;
132
+ }
133
+ const domain = inputDomain || (site.domainAliases || [])[0];
134
+ if (!domain) {
135
+ return null;
136
+ }
137
+ let mountPoint = inputMountPoint;
138
+ if (!mountPoint) {
139
+ const rule = site.rules.filter(x => !x.from.pathPrefix.startsWith(_constant.WELLKNOWN_PATH_PREFIX))[0];
140
+ mountPoint = rule ? rule.from.pathPrefix : '/';
141
+ }
142
+ return getAccessUrl(domain.value, mountPoint, params);
143
+ }
144
+ function getBlockletUrls() {
145
+ let {
146
+ blocklet,
147
+ mountPoint: inputMountPoint,
148
+ params
149
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
150
+ const {
151
+ site
152
+ } = blocklet;
153
+ if (!site) {
154
+ return [];
155
+ }
156
+ const domains = site.domainAliases || [];
157
+ if (!domains.length) {
158
+ return [];
159
+ }
160
+ let mountPoint = inputMountPoint;
161
+ if (!mountPoint) {
162
+ const rule = site.rules.filter(x => !x.from.pathPrefix.startsWith(_constant.WELLKNOWN_PATH_PREFIX))[0];
163
+ mountPoint = rule ? rule.name : '/';
164
+ }
165
+ return domains.map(domain => getAccessUrl(domain.value, mountPoint, params));
166
+ }
116
167
  function getExplorerLink(chainHost, did, type) {
117
168
  if (!chainHost) return undefined;
118
169
  try {
@@ -279,6 +330,9 @@ const formatPerson = person => {
279
330
  exports.formatPerson = formatPerson;
280
331
  const getBlockletServices = blocklet => {
281
332
  const services = [];
333
+ if (!blocklet) {
334
+ return services;
335
+ }
282
336
  const interfaces = (blocklet.meta.interfaces || []).filter(x => x.type === _constant2.BLOCKLET_INTERFACE_TYPE_SERVICE);
283
337
  interfaces.forEach(x => {
284
338
  services.push({
@@ -468,8 +522,8 @@ const isCertificateMatch = function isCertificateMatch() {
468
522
  let matchedSites = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
469
523
  try {
470
524
  return matchedSites.map(item => item.domain).some(domain => {
471
- return blockletUrls.some(blockletUrl => {
472
- const url = new window.URL(blockletUrl);
525
+ return blockletUrls.some(u => {
526
+ const url = new window.URL(u.startsWith('http') ? u : "http://".concat(u));
473
527
  return url.hostname === domain;
474
528
  });
475
529
  });
@@ -611,4 +665,15 @@ exports.isBlockletDev = isBlockletDev;
611
665
  const APP_PREFIX = ((_window$env = window.env) === null || _window$env === void 0 ? void 0 : _window$env.groupPathPrefix) || '/';
612
666
  exports.APP_PREFIX = APP_PREFIX;
613
667
  const BlockletAdminRoles = [_constant.ROLES.ADMIN, _constant.ROLES.OWNER];
614
- exports.BlockletAdminRoles = BlockletAdminRoles;
668
+ exports.BlockletAdminRoles = BlockletAdminRoles;
669
+ const toSlotDomain = domain => {
670
+ if (domain.endsWith(_constant.DEFAULT_IP_DOMAIN_SUFFIX)) {
671
+ const subDomain = domain.split('.').shift();
672
+ const matches = subDomain.match(_constant.IP);
673
+ if (matches) {
674
+ return domain.replace(matches[0].slice(1), _constant.SLOT_FOR_IP_DNS_SITE);
675
+ }
676
+ }
677
+ return domain;
678
+ };
679
+ exports.toSlotDomain = toSlotDomain;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.8.33",
6
+ "version": "1.8.35",
7
7
  "description": "UX components shared across abtnode packages",
8
8
  "main": "lib/index.js",
9
9
  "files": [
@@ -21,17 +21,17 @@
21
21
  "author": "linchen <linchen1987@foxmail.com> (http://github.com/linchen1987)",
22
22
  "license": "MIT",
23
23
  "dependencies": {
24
- "@abtnode/auth": "1.8.33",
25
- "@abtnode/constant": "1.8.33",
26
- "@abtnode/util": "1.8.33",
27
- "@arcblock/did-connect": "^2.4.47",
24
+ "@abtnode/auth": "1.8.35",
25
+ "@abtnode/constant": "1.8.35",
26
+ "@abtnode/util": "1.8.35",
27
+ "@arcblock/did-connect": "^2.4.52",
28
28
  "@arcblock/did-motif": "^1.1.10",
29
- "@arcblock/icons": "^2.4.47",
30
- "@arcblock/terminal": "^2.4.47",
31
- "@arcblock/ux": "^2.4.47",
32
- "@blocklet/constant": "1.8.33",
33
- "@blocklet/launcher-layout": "^1.9.7",
34
- "@blocklet/meta": "1.8.33",
29
+ "@arcblock/icons": "^2.4.52",
30
+ "@arcblock/terminal": "^2.4.52",
31
+ "@arcblock/ux": "^2.4.52",
32
+ "@blocklet/constant": "1.8.35",
33
+ "@blocklet/launcher-layout": "^1.9.10",
34
+ "@blocklet/meta": "1.8.35",
35
35
  "@emotion/react": "^11.10.4",
36
36
  "@emotion/styled": "^11.10.4",
37
37
  "@material-table/core": "^0.2.48",
@@ -73,5 +73,5 @@
73
73
  "@babel/preset-react": "^7.18.6",
74
74
  "babel-plugin-inline-react-svg": "^1.1.2"
75
75
  },
76
- "gitHead": "bb8223a5dd84536f2843391c59c0a8ac4398c6f2"
76
+ "gitHead": "dd89e7a61dc8cff64302608ad5ab6545dd903daa"
77
77
  }