@abtnode/ux 1.16.14-beta-a898bfcb → 1.16.14-beta-d802cd3c

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.
@@ -0,0 +1,318 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _SvgIcon = _interopRequireDefault(require("@mui/material/SvgIcon"));
8
+ var _FormControlLabel = _interopRequireDefault(require("@mui/material/FormControlLabel"));
9
+ var _Stars = _interopRequireDefault(require("@mui/icons-material/Stars"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
12
+ var _Datatable = _interopRequireDefault(require("@arcblock/ux/lib/Datatable"));
13
+ var _context = require("@arcblock/ux/lib/Locale/context");
14
+ var _Address = _interopRequireDefault(require("@arcblock/did-connect/lib/Address"));
15
+ var _react = require("react");
16
+ var _ahooks = require("ahooks");
17
+ var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
18
+ var _Toast = _interopRequireDefault(require("@arcblock/ux/lib/Toast"));
19
+ var _blocklet = require("../../contexts/blocklet");
20
+ var _node = require("../../contexts/node");
21
+ var _confirm = _interopRequireDefault(require("../../hooks/confirm"));
22
+ var _federatedDetailDialog = _interopRequireDefault(require("./federated-detail-dialog"));
23
+ var _federatedInviteDialog = _interopRequireDefault(require("./federated-invite-dialog"));
24
+ var _switchControl = _interopRequireDefault(require("../component/switch-control"));
25
+ var _jsxRuntime = require("react/jsx-runtime");
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
+ /* eslint-disable react/no-unstable-nested-components */
28
+
29
+ function FederatedSiteList(_ref) {
30
+ var _blocklet$settings$fe, _blocklet$settings$fe2, _blocklet$site2, _blocklet$site2$domai, _blocklet$site2$domai2;
31
+ let {
32
+ mode
33
+ } = _ref;
34
+ const federatedInviteDialogRef = (0, _react.useRef)(null);
35
+ const federatedDetailDialogRef = (0, _react.useRef)(null);
36
+ const {
37
+ t,
38
+ locale
39
+ } = (0, _react.useContext)(_context.LocaleContext);
40
+ const {
41
+ blocklet,
42
+ actions: {
43
+ refreshBlocklet
44
+ }
45
+ } = (0, _blocklet.useBlockletContext)();
46
+ const {
47
+ confirmApi,
48
+ confirmHolder
49
+ } = (0, _confirm.default)();
50
+ const {
51
+ api
52
+ } = (0, _node.useNodeContext)();
53
+ const federatedSites = ((_blocklet$settings$fe = blocklet.settings.federated) === null || _blocklet$settings$fe === void 0 ? void 0 : _blocklet$settings$fe.sites) || [];
54
+ const federatedConfig = ((_blocklet$settings$fe2 = blocklet.settings.federated) === null || _blocklet$settings$fe2 === void 0 ? void 0 : _blocklet$settings$fe2.config) || {
55
+ autoLogin: false
56
+ };
57
+ const isMaster = federatedConfig.isMaster !== false;
58
+ const viewDetail = (0, _ahooks.useMemoizedFn)(row => {
59
+ var _federatedDetailDialo;
60
+ (_federatedDetailDialo = federatedDetailDialogRef.current) === null || _federatedDetailDialo === void 0 ? void 0 : _federatedDetailDialo.open(row);
61
+ });
62
+ const approveSite = (0, _ahooks.useMemoizedFn)(row => {
63
+ var _federatedDetailDialo2;
64
+ (_federatedDetailDialo2 = federatedDetailDialogRef.current) === null || _federatedDetailDialo2 === void 0 ? void 0 : _federatedDetailDialo2.approve(row, refreshBlocklet);
65
+ });
66
+ const toRevokeSite = (0, _ahooks.useMemoizedFn)(row => {
67
+ confirmApi.open({
68
+ title: t('federated.disableFederatedLogin'),
69
+ content: t('federated.disableFederatedLoginDescription'),
70
+ async onConfirm(close) {
71
+ await api.auditFederatedLogin({
72
+ input: {
73
+ appId: row.appId,
74
+ did: blocklet.meta.did,
75
+ status: 'revoked'
76
+ }
77
+ });
78
+ close();
79
+ }
80
+ });
81
+ });
82
+ const toApproveSite = (0, _ahooks.useMemoizedFn)(row => {
83
+ confirmApi.open({
84
+ title: t('federated.enableFederatedLogin'),
85
+ content: t('federated.enableFederatedLoginDescription'),
86
+ async onConfirm(close) {
87
+ await api.auditFederatedLogin({
88
+ input: {
89
+ appId: row.appId,
90
+ did: blocklet.meta.did,
91
+ status: 'approved'
92
+ }
93
+ });
94
+ close();
95
+ }
96
+ });
97
+ });
98
+ const columns = (0, _ahooks.useCreation)(() => {
99
+ const list = [{
100
+ label: t('common.name'),
101
+ name: 'appName',
102
+ options: {
103
+ customBodyRenderLite: rowIndex => {
104
+ const row = federatedSites[rowIndex];
105
+ const isSelfMaster = row.isMaster !== false;
106
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
107
+ display: "inline-block",
108
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
109
+ component: "a",
110
+ display: "flex",
111
+ alignItems: "center",
112
+ href: row.appUrl,
113
+ target: "_blank",
114
+ onClick: e => {
115
+ e.stopPropagation();
116
+ },
117
+ children: [isSelfMaster && /*#__PURE__*/(0, _jsxRuntime.jsx)(_SvgIcon.default, {
118
+ component: _Stars.default,
119
+ style: {
120
+ marginRight: '4px'
121
+ }
122
+ }), row.appName]
123
+ })
124
+ });
125
+ }
126
+ }
127
+ }, {
128
+ label: t('common.did'),
129
+ name: 'appId',
130
+ options: {
131
+ customBodyRenderLite: rowIndex => {
132
+ const row = federatedSites[rowIndex];
133
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Address.default, {
134
+ children: row.appId
135
+ });
136
+ }
137
+ }
138
+ }, {
139
+ label: t('common.status'),
140
+ name: 'status',
141
+ options: {
142
+ customBodyRenderLite: rowIndex => {
143
+ const row = federatedSites[rowIndex];
144
+ const isSelfMaster = row.isMaster !== false;
145
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
146
+ children: isSelfMaster ? '-' : t("federated.status.".concat(row.status))
147
+ });
148
+ }
149
+ }
150
+ }];
151
+ if (isMaster) {
152
+ list.push({
153
+ label: t('common.actions'),
154
+ name: 'actions',
155
+ options: {
156
+ customBodyRenderLite: rowIndex => {
157
+ const row = federatedSites[rowIndex];
158
+ const isSelfMaster = row.isMaster !== false;
159
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
160
+ display: "flex",
161
+ gap: 1,
162
+ children: !isSelfMaster ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
163
+ children: [row.status === 'pending' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
164
+ variant: "contained",
165
+ color: "primary",
166
+ size: "small",
167
+ onClick: e => {
168
+ e.stopPropagation();
169
+ approveSite(row);
170
+ },
171
+ children: t('federated.status.pending')
172
+ }), row.status === 'approved' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
173
+ variant: "contained",
174
+ color: "error",
175
+ size: "small",
176
+ onClick: e => {
177
+ e.stopPropagation();
178
+ toRevokeSite(row);
179
+ },
180
+ style: {
181
+ whiteSpace: 'nowrap'
182
+ },
183
+ children: t('federated.revoke')
184
+ }), row.status === 'revoked' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
185
+ variant: "contained",
186
+ color: "warning",
187
+ size: "small",
188
+ onClick: e => {
189
+ e.stopPropagation();
190
+ toApproveSite(row);
191
+ },
192
+ style: {
193
+ whiteSpace: 'nowrap'
194
+ },
195
+ children: t('federated.approve')
196
+ })]
197
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
198
+ children: [row.status === 'rejected' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
199
+ variant: "contained",
200
+ color: "error",
201
+ size: "small",
202
+ onClick: e => {
203
+ e.stopPropagation();
204
+ },
205
+ children: t('federated.status.rejected')
206
+ }), row.status === 'revoked' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
207
+ variant: "contained",
208
+ color: "secondary",
209
+ size: "small",
210
+ onClick: e => {
211
+ e.stopPropagation();
212
+ },
213
+ children: t('federated.status.revoked')
214
+ })]
215
+ })
216
+ });
217
+ }
218
+ }
219
+ });
220
+ }
221
+ return list;
222
+ }, [federatedConfig.appId, federatedSites, isMaster]);
223
+ const tableOptions = (0, _ahooks.useCreation)(() => {
224
+ return {
225
+ sort: true,
226
+ download: false,
227
+ filter: false,
228
+ print: false,
229
+ expandableRowsOnClick: true,
230
+ onRowClick(e, _ref2) {
231
+ let {
232
+ dataIndex
233
+ } = _ref2;
234
+ const x = federatedSites[dataIndex];
235
+ viewDetail(x);
236
+ }
237
+ };
238
+ }, []);
239
+ const showInvite = (0, _ahooks.useMemoizedFn)(() => {
240
+ var _blocklet$site, _blocklet$site$domain, _blocklet$site$domain2;
241
+ const link = (_blocklet$site = blocklet.site) === null || _blocklet$site === void 0 ? void 0 : (_blocklet$site$domain = _blocklet$site.domainAliases) === null || _blocklet$site$domain === void 0 ? void 0 : (_blocklet$site$domain2 = _blocklet$site$domain[0]) === null || _blocklet$site$domain2 === void 0 ? void 0 : _blocklet$site$domain2.href;
242
+ if (link) {
243
+ try {
244
+ var _federatedInviteDialo;
245
+ const url = new URL(link);
246
+ (_federatedInviteDialo = federatedInviteDialogRef.current) === null || _federatedInviteDialo === void 0 ? void 0 : _federatedInviteDialo.open({
247
+ link: url.origin
248
+ });
249
+ } catch (_unused) {
250
+ _Toast.default.error(t('federated.failedToGetFederatedLoginLink'));
251
+ }
252
+ }
253
+ }, [(_blocklet$site2 = blocklet.site) === null || _blocklet$site2 === void 0 ? void 0 : (_blocklet$site2$domai = _blocklet$site2.domainAliases) === null || _blocklet$site2$domai === void 0 ? void 0 : (_blocklet$site2$domai2 = _blocklet$site2$domai[0]) === null || _blocklet$site2$domai2 === void 0 ? void 0 : _blocklet$site2$domai2.href]);
254
+ const [checked, setChecked] = (0, _react.useState)(federatedConfig.autoLogin || false);
255
+ const changeAutoLogin = (0, _ahooks.useMemoizedFn)(() => {
256
+ confirmApi.open({
257
+ title: checked ? t('federated.disableFederatedAutoLogin') : t('federated.enableFederatedAutoLogin'),
258
+ content: checked ? t('federated.disableFederatedAutoLoginDescription') : t('federated.enableFederatedAutoLoginDescription'),
259
+ async onConfirm(close) {
260
+ await api.configFederated({
261
+ input: {
262
+ did: blocklet.meta.did,
263
+ autoLogin: !checked
264
+ }
265
+ });
266
+ setChecked(prevValue => !prevValue);
267
+ close();
268
+ }
269
+ });
270
+ }, [setChecked, checked]);
271
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
272
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Datatable.default, {
273
+ className: "main-table",
274
+ locale: locale,
275
+ data: federatedSites,
276
+ columns: columns,
277
+ title: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
278
+ className: "table-toolbar-left",
279
+ children: mode === 'master' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
280
+ variant: "contained",
281
+ onClick: showInvite,
282
+ children: t('federated.inviteJoinFederatedLogin')
283
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_FormControlLabel.default, {
284
+ sx: {
285
+ ml: 0,
286
+ '& span.MuiSwitch-switchBase': {
287
+ display: 'flex'
288
+ },
289
+ '& span.MuiSwitch-track': {
290
+ display: 'block'
291
+ }
292
+ },
293
+ control: /*#__PURE__*/(0, _jsxRuntime.jsx)(_switchControl.default, {
294
+ checked: checked,
295
+ style: {
296
+ marginRight: '6px'
297
+ },
298
+ onChange: changeAutoLogin
299
+ }),
300
+ label: t('federated.enableFederatedAutoLogin')
301
+ })
302
+ }),
303
+ options: tableOptions
304
+ }), confirmHolder, /*#__PURE__*/(0, _jsxRuntime.jsx)(_federatedInviteDialog.default, {
305
+ ref: federatedInviteDialogRef
306
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_federatedDetailDialog.default, {
307
+ ref: federatedDetailDialogRef
308
+ })]
309
+ });
310
+ }
311
+ FederatedSiteList.propTypes = {
312
+ mode: _propTypes.default.oneOf(['member', 'master'])
313
+ };
314
+ FederatedSiteList.defaultProps = {
315
+ mode: 'member'
316
+ };
317
+ var _default = FederatedSiteList;
318
+ exports.default = _default;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = FederatedLogin;
7
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
8
+ var _context = require("@arcblock/ux/lib/Locale/context");
9
+ var _react = require("react");
10
+ var _ahooks = require("ahooks");
11
+ var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
12
+ var _material = require("@mui/material");
13
+ var _Toast = _interopRequireDefault(require("@arcblock/ux/lib/Toast"));
14
+ var _blocklet = require("../../contexts/blocklet");
15
+ var _federatedSiteList = _interopRequireDefault(require("./federated-site-list"));
16
+ var _federatedJoinDialog = _interopRequireDefault(require("./federated-join-dialog"));
17
+ var _federatedInviteDialog = _interopRequireDefault(require("./federated-invite-dialog"));
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
+ /* eslint-disable react/no-unstable-nested-components */
21
+
22
+ function FederatedLogin() {
23
+ var _blocklet$site2, _blocklet$site2$domai, _blocklet$site2$domai2, _blocklet$settings$fe;
24
+ const federatedInviteRef = (0, _react.useRef)(null);
25
+ const federatedJoinRef = (0, _react.useRef)(null);
26
+ const {
27
+ t
28
+ } = (0, _react.useContext)(_context.LocaleContext);
29
+ const {
30
+ blocklet,
31
+ actions: {
32
+ refreshBlocklet
33
+ }
34
+ } = (0, _blocklet.useBlockletContext)();
35
+ const showInvite = (0, _ahooks.useMemoizedFn)(() => {
36
+ var _blocklet$site, _blocklet$site$domain, _blocklet$site$domain2;
37
+ const link = (_blocklet$site = blocklet.site) === null || _blocklet$site === void 0 ? void 0 : (_blocklet$site$domain = _blocklet$site.domainAliases) === null || _blocklet$site$domain === void 0 ? void 0 : (_blocklet$site$domain2 = _blocklet$site$domain[0]) === null || _blocklet$site$domain2 === void 0 ? void 0 : _blocklet$site$domain2.href;
38
+ if (link) {
39
+ try {
40
+ var _federatedInviteRef$c;
41
+ const url = new URL(link);
42
+ (_federatedInviteRef$c = federatedInviteRef.current) === null || _federatedInviteRef$c === void 0 ? void 0 : _federatedInviteRef$c.open({
43
+ link: url.origin
44
+ });
45
+ } catch (_unused) {
46
+ _Toast.default.error(t('federated.failedToGetFederatedLoginLink'));
47
+ }
48
+ }
49
+ }, [(_blocklet$site2 = blocklet.site) === null || _blocklet$site2 === void 0 ? void 0 : (_blocklet$site2$domai = _blocklet$site2.domainAliases) === null || _blocklet$site2$domai === void 0 ? void 0 : (_blocklet$site2$domai2 = _blocklet$site2$domai[0]) === null || _blocklet$site2$domai2 === void 0 ? void 0 : _blocklet$site2$domai2.href]);
50
+ const joinInvite = (0, _ahooks.useMemoizedFn)(() => {
51
+ var _federatedJoinRef$cur;
52
+ (_federatedJoinRef$cur = federatedJoinRef.current) === null || _federatedJoinRef$cur === void 0 ? void 0 : _federatedJoinRef$cur.open(() => {
53
+ refreshBlocklet();
54
+ });
55
+ }, [refreshBlocklet]);
56
+ if (((_blocklet$settings$fe = blocklet.settings.federated) === null || _blocklet$settings$fe === void 0 ? void 0 : _blocklet$settings$fe.sites.length) > 0) {
57
+ var _blocklet$settings$fe2;
58
+ const isMaster = ((_blocklet$settings$fe2 = blocklet.settings.federated) === null || _blocklet$settings$fe2 === void 0 ? void 0 : _blocklet$settings$fe2.config.isMaster) !== false;
59
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_federatedSiteList.default, {
60
+ mode: isMaster ? 'master' : 'member'
61
+ });
62
+ }
63
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
64
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
65
+ display: "flex",
66
+ flexDirection: "column",
67
+ gap: 2,
68
+ justifyContent: "center",
69
+ alignItems: "center",
70
+ minHeight: "200px",
71
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
72
+ variant: "contained",
73
+ onClick: showInvite,
74
+ children: t('federated.inviteJoinFederatedLogin')
75
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Divider, {
76
+ sx: {
77
+ width: '150px',
78
+ color: 'rgba(0, 0, 0, 0.3)'
79
+ },
80
+ children: "OR"
81
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
82
+ variant: "outlined",
83
+ onClick: joinInvite,
84
+ children: t('federated.joinFederatedLogin')
85
+ })]
86
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_federatedInviteDialog.default, {
87
+ ref: federatedInviteRef
88
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_federatedJoinDialog.default, {
89
+ ref: federatedJoinRef
90
+ })]
91
+ });
92
+ }
@@ -12,6 +12,7 @@ var _ahooks = require("ahooks");
12
12
  var _react = require("react");
13
13
  var _auth = _interopRequireDefault(require("./auth0"));
14
14
  var _commonSettings = _interopRequireDefault(require("./common-settings"));
15
+ var _federated = _interopRequireDefault(require("./federated"));
15
16
  var _jsxRuntime = require("react/jsx-runtime");
16
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
18
  function OAuth() {
@@ -25,6 +26,13 @@ function OAuth() {
25
26
  children: t('oauth.commonSettings')
26
27
  }),
27
28
  value: 'settings'
29
+ }, {
30
+ label: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
31
+ textAlign: "center",
32
+ width: "100%",
33
+ children: t('oauth.federated')
34
+ }),
35
+ value: 'federated'
28
36
  }, {
29
37
  label: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
30
38
  textAlign: "center",
@@ -43,6 +51,7 @@ function OAuth() {
43
51
  const [currentTab, setCurrentTab] = (0, _react.useState)(tabs[0].value);
44
52
  const contents = (0, _ahooks.useCreation)(() => ({
45
53
  auth0: /*#__PURE__*/(0, _jsxRuntime.jsx)(_auth.default, {}),
54
+ federated: /*#__PURE__*/(0, _jsxRuntime.jsx)(_federated.default, {}),
46
55
  more: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
47
56
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Empty.default, {
48
57
  children: t('oauth.comingSoon')
@@ -9,6 +9,7 @@ var _styled = _interopRequireDefault(require("@emotion/styled"));
9
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
11
  var _templateObject;
12
+ /* eslint-disable jsx-a11y/alt-text */
12
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
14
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
14
15
  function CardSelector(_ref) {
@@ -70,7 +71,7 @@ function CardSelector(_ref) {
70
71
  transform: "translate(".concat(-translateX, "px, 0)")
71
72
  },
72
73
  children: list.map((e, i) => {
73
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
74
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
74
75
  className: "card-item ".concat(i === selectedId ? 'selected' : ''),
75
76
  style: {
76
77
  width,
@@ -81,16 +82,18 @@ function CardSelector(_ref) {
81
82
  ,
82
83
 
83
84
  onClick: () => selectedItem(i),
84
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
85
- src: e.src,
85
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("object", {
86
+ data: e.src,
86
87
  alt: e.name
87
- })
88
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
89
+ className: "card-item-cover"
90
+ })]
88
91
  }, i);
89
92
  })
90
93
  })
91
94
  });
92
95
  }
93
- const Contianer = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n overflow: hidden;\n mask-image: linear-gradient(to left, transparent, black 3%, black 97%, transparent);\n overflow: hidden;\n .card-container {\n display: flex;\n white-space: nowrap;\n width: max-content;\n transition: all ease 0.3s;\n }\n .card-item {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n cursor: pointer;\n img {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n outline: #526ded solid 0;\n transition: all ease 0.2s;\n box-shadow: rgba(0, 0, 0, 0.2) 0 0 10px;\n }\n &.selected {\n cursor: default;\n img {\n outline: #526ded solid 5px;\n }\n }\n }\n"])));
96
+ const Contianer = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n overflow: hidden;\n mask-image: linear-gradient(to left, transparent, black 3%, black 97%, transparent);\n overflow: hidden;\n .card-container {\n display: flex;\n white-space: nowrap;\n width: max-content;\n transition: all ease 0.3s;\n }\n .card-item {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n cursor: pointer;\n position: relative;\n\n .card-item-cover {\n position: absolute;\n width: 100%;\n height: 100%;\n cursor: pointer;\n z-index: 99;\n }\n\n object {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n outline: #526ded solid 0;\n transition: all ease 0.2s;\n box-shadow: rgba(0, 0, 0, 0.2) 0 0 10px;\n }\n &.selected {\n cursor: default;\n object {\n outline: #526ded solid 5px;\n }\n }\n }\n"])));
94
97
  CardSelector.propTypes = {
95
98
  list: _propTypes.default.array,
96
99
  width: _propTypes.default.number,
@@ -25,10 +25,13 @@ function AuditLogProvider(_ref) {
25
25
  let {
26
26
  children,
27
27
  scope = '',
28
- categories = []
28
+ categories = [],
29
+ showScope,
30
+ scopeFormatter
29
31
  } = _ref;
30
32
  const {
31
- api: client
33
+ api: client,
34
+ info: nodeInfo
32
35
  } = (0, _node.useNodeContext)();
33
36
  const [auditLogs, setAuditLogs] = (0, _react.useState)([]);
34
37
  const [paging, setPaging] = (0, _react.useState)({
@@ -101,6 +104,15 @@ function AuditLogProvider(_ref) {
101
104
  scope
102
105
  }
103
106
  });
107
+
108
+ // add link for blocklet audit logs
109
+ if (showScope) {
110
+ (res.list || []).forEach(x => {
111
+ if (x.scope !== nodeInfo.did) {
112
+ x.link = "/blocklets/".concat(x.scope, "/components");
113
+ }
114
+ });
115
+ }
104
116
  setAuditLogs(res.list);
105
117
  setPaging(res.paging);
106
118
  setLoading(false);
@@ -133,7 +145,9 @@ function AuditLogProvider(_ref) {
133
145
  categories: filterCategories,
134
146
  setCategory,
135
147
  data: auditLogs,
136
- paging
148
+ paging,
149
+ showScope,
150
+ scopeFormatter
137
151
  };
138
152
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Provider, {
139
153
  value: {
@@ -20,7 +20,7 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typ
20
20
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
21
21
  // eslint-disable-next-line import/prefer-default-export
22
22
  function useBlocklet(_ref) {
23
- var _blocklet$site, _blocklet$site$domain, _blocklet$meta, _blocklet$meta2, _blocklet$meta3, _blocklet$meta4, _blocklet$meta5, _blocklet$meta6, _blocklet$meta7;
23
+ var _blocklet$site, _blocklet$site$domain, _blocklet$meta, _blocklet$meta2, _blocklet$meta3, _blocklet$meta4, _blocklet$meta5, _blocklet$meta6;
24
24
  let {
25
25
  did,
26
26
  client,
@@ -212,8 +212,7 @@ function useBlocklet(_ref) {
212
212
  useSubscription(_constant.BlockletEvents.storeChange, handleRefreshWithoutRuntime, [blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta3 = blocklet.meta) === null || _blocklet$meta3 === void 0 ? void 0 : _blocklet$meta3.did, !disableSubscription]);
213
213
  useSubscription(_constant.BlockletEvents.installed, handleRefresh, [blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta4 = blocklet.meta) === null || _blocklet$meta4 === void 0 ? void 0 : _blocklet$meta4.did, !disableSubscription]);
214
214
  useSubscription(_constant.BlockletEvents.upgraded, handleRefresh, [blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta5 = blocklet.meta) === null || _blocklet$meta5 === void 0 ? void 0 : _blocklet$meta5.did, !disableSubscription]);
215
- useSubscription(_constant.BlockletEvents.downgraded, handleRefresh, [blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta6 = blocklet.meta) === null || _blocklet$meta6 === void 0 ? void 0 : _blocklet$meta6.did, !disableSubscription]);
216
- useSubscription(_constant.BlockletEvents.updated, handleRefresh, [blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta7 = blocklet.meta) === null || _blocklet$meta7 === void 0 ? void 0 : _blocklet$meta7.did, !disableSubscription]);
215
+ useSubscription(_constant.BlockletEvents.updated, handleRefresh, [blocklet === null || blocklet === void 0 ? void 0 : (_blocklet$meta6 = blocklet.meta) === null || _blocklet$meta6 === void 0 ? void 0 : _blocklet$meta6.did, !disableSubscription]);
217
216
  const data = blocklet ? (0, _merge.default)(blocklet, {
218
217
  site: {
219
218
  domainAliases: blocklet.site.domainAliases.map(x => {
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useConfirm;
7
+ var _react = require("react");
8
+ var _Dialog = require("@arcblock/ux/lib/Dialog");
9
+ var _ahooks = require("ahooks");
10
+ var _noop = _interopRequireDefault(require("lodash/noop"));
11
+ var _context = require("@arcblock/ux/lib/Locale/context");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ const ConfirmHolder = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
15
+ const {
16
+ t
17
+ } = (0, _react.useContext)(_context.LocaleContext);
18
+ const state = (0, _ahooks.useReactive)({
19
+ show: false,
20
+ title: '',
21
+ content: '',
22
+ onConfirm: _noop.default,
23
+ onCancel: _noop.default
24
+ });
25
+ const open = (0, _ahooks.useMemoizedFn)(function () {
26
+ let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
27
+ state.show = true;
28
+ state.title = params.title;
29
+ state.content = params.content;
30
+ state.onConfirm = params.onConfirm || _noop.default;
31
+ state.onCancel = params.onCancel || _noop.default;
32
+ });
33
+ const reset = (0, _ahooks.useMemoizedFn)(() => {
34
+ state.title = '';
35
+ state.content = '';
36
+ state.onConfirm = _noop.default;
37
+ state.onCancel = _noop.default;
38
+ });
39
+ const close = (0, _ahooks.useMemoizedFn)(() => {
40
+ state.show = false;
41
+ setTimeout(() => {
42
+ reset();
43
+ }, 300);
44
+ });
45
+ const onCancel = (0, _ahooks.useMemoizedFn)(() => {
46
+ close();
47
+ state === null || state === void 0 ? void 0 : state.onCancel();
48
+ }, []);
49
+ const onConfirm = (0, _ahooks.useMemoizedFn)(() => {
50
+ state === null || state === void 0 ? void 0 : state.onConfirm(close);
51
+ }, []);
52
+ (0, _react.useImperativeHandle)(ref, () => {
53
+ return {
54
+ open,
55
+ close
56
+ };
57
+ }, [open, close]);
58
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dialog.Confirm, {
59
+ open: state.show,
60
+ title: state.title,
61
+ onConfirm: onConfirm,
62
+ onCancel: onCancel,
63
+ confirmButton: {
64
+ text: t('common.confirm'),
65
+ props: {
66
+ variant: 'contained',
67
+ color: 'primary'
68
+ }
69
+ },
70
+ cancelButton: {
71
+ text: t('common.cancel'),
72
+ props: {
73
+ variant: 'outlined',
74
+ color: 'primary'
75
+ }
76
+ },
77
+ children: state.content
78
+ });
79
+ });
80
+ function useConfirm() {
81
+ const confirmRef = (0, _react.useRef)(null);
82
+ const open = (0, _ahooks.useMemoizedFn)(function () {
83
+ var _confirmRef$current;
84
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
85
+ args[_key] = arguments[_key];
86
+ }
87
+ (_confirmRef$current = confirmRef.current) === null || _confirmRef$current === void 0 ? void 0 : _confirmRef$current.open(...args);
88
+ });
89
+ const close = (0, _ahooks.useMemoizedFn)(function () {
90
+ var _confirmRef$current2;
91
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
92
+ args[_key2] = arguments[_key2];
93
+ }
94
+ (_confirmRef$current2 = confirmRef.current) === null || _confirmRef$current2 === void 0 ? void 0 : _confirmRef$current2.close(...args);
95
+ });
96
+ const confirmApi = {
97
+ open,
98
+ close
99
+ };
100
+ return {
101
+ confirmHolder: /*#__PURE__*/(0, _jsxRuntime.jsx)(ConfirmHolder, {
102
+ ref: confirmRef
103
+ }),
104
+ confirmApi
105
+ };
106
+ }