@abtnode/ux 1.7.19 → 1.7.20

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,128 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
13
+
14
+ var _createPassportSvg = _interopRequireDefault(require("@abtnode/auth/lib/util/create-passport-svg"));
15
+
16
+ var _context = require("@arcblock/ux/lib/Locale/context");
17
+
18
+ var _Dialog = _interopRequireDefault(require("@arcblock/ux/lib/Dialog"));
19
+
20
+ var _iconsMaterial = require("@mui/icons-material");
21
+
22
+ var _templateObject;
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+
26
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
+
28
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
+
30
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
31
+
32
+ function InvitationPassport(_ref) {
33
+ let {
34
+ invitation,
35
+ passportColor
36
+ } = _ref;
37
+ const [open, setOpen] = (0, _react.useState)(false);
38
+ const {
39
+ t
40
+ } = (0, _react.useContext)(_context.LocaleContext);
41
+ const roleName = (0, _react.useMemo)(() => {
42
+ const roleRaw = invitation.role.title || invitation.role.name;
43
+ return roleRaw.toUpperCase();
44
+ }, [invitation.role.title, invitation.role.name]);
45
+ const display = (0, _react.useMemo)(() => {
46
+ return (0, _createPassportSvg.default)({
47
+ title: roleName,
48
+ issuer: invitation.info.name,
49
+ issuerDid: invitation.info.appDid,
50
+ ownerName: 'Your Name',
51
+ // can't get avatar, cause user is not login
52
+ // ownerAvatarUrl: user.avatar,
53
+ isDataUrl: true,
54
+ preferredColor: invitation.info.passportColor || passportColor
55
+ });
56
+ }, [invitation, roleName]);
57
+ const onViewPermission = (0, _react.useCallback)(() => {
58
+ setOpen(true);
59
+ }, []);
60
+ const onClose = (0, _react.useCallback)(() => {
61
+ setOpen(false);
62
+ }, []);
63
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Root, null, /*#__PURE__*/_react.default.createElement("div", {
64
+ className: "invite-passport__card"
65
+ }, /*#__PURE__*/_react.default.createElement("img", {
66
+ src: display,
67
+ alt: "passport",
68
+ className: "invite-passport__cover"
69
+ })), /*#__PURE__*/_react.default.createElement("div", {
70
+ className: "invite-passport__content"
71
+ }, /*#__PURE__*/_react.default.createElement("div", {
72
+ className: "invite-passport__title"
73
+ }, roleName), /*#__PURE__*/_react.default.createElement("div", {
74
+ className: "invite-passport__description",
75
+ title: invitation.role.description
76
+ }, invitation.role.description), /*#__PURE__*/_react.default.createElement("div", {
77
+ className: "invite-passport__view-permission",
78
+ onClick: onViewPermission
79
+ }, t('invite.viewPermission')))), /*#__PURE__*/_react.default.createElement(_Dialog.default, {
80
+ open: open,
81
+ title: t('invite.viewPermission'),
82
+ PaperProps: {
83
+ style: {
84
+ minHeight: 'auto',
85
+ paddingBottom: '20px'
86
+ }
87
+ },
88
+ onClose: onClose
89
+ }, invitation.role.permissions && invitation.role.permissions.length > 0 ? /*#__PURE__*/_react.default.createElement("ul", {
90
+ style: {
91
+ listStyle: 'circle',
92
+ padding: '0 20px'
93
+ }
94
+ }, invitation.role.permissions.map(item => /*#__PURE__*/_react.default.createElement("li", {
95
+ key: item.name,
96
+ style: {
97
+ listStyle: 'circle'
98
+ }
99
+ }, item.description))) : /*#__PURE__*/_react.default.createElement("div", {
100
+ style: {
101
+ color: '#999',
102
+ textAlign: 'center'
103
+ }
104
+ }, /*#__PURE__*/_react.default.createElement(_iconsMaterial.Inbox, {
105
+ style: {
106
+ width: '30px',
107
+ height: '30px'
108
+ }
109
+ }), /*#__PURE__*/_react.default.createElement("div", null, t('invite.emptyPermission')))));
110
+ }
111
+
112
+ InvitationPassport.propTypes = {
113
+ invitation: _propTypes.default.object.isRequired,
114
+ passportColor: _propTypes.default.string
115
+ };
116
+ InvitationPassport.defaultProps = {
117
+ passportColor: 'auto'
118
+ };
119
+
120
+ const Root = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n width: 300px;\n margin: auto;\n .invite-passport__card {\n margin-right: 12px;\n width: 100px;\n height: 100px;\n flex-shrink: 0;\n .invite-passport__cover {\n width: 100%;\n height: 100%;\n }\n }\n .invite-passport__content {\n flex: 1;\n }\n .invite-passport__title {\n font-weight: 700;\n font-size: 16px;\n }\n .invite-passport__description {\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n height: 3em;\n color: #999;\n }\n .invite-passport__view-permission {\n cursor: pointer;\n color: ", ";\n }\n"])), _ref2 => {
121
+ let {
122
+ theme
123
+ } = _ref2;
124
+ return theme.palette.primary.main;
125
+ });
126
+
127
+ var _default = InvitationPassport;
128
+ exports.default = _default;
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
13
+
14
+ var _context = require("@arcblock/ux/lib/Locale/context");
15
+
16
+ var _Connect = _interopRequireDefault(require("@arcblock/did-connect/lib/Connect"));
17
+
18
+ var _Button = _interopRequireDefault(require("@arcblock/did-connect/lib/Button"));
19
+
20
+ var _utils = require("@arcblock/did-connect/lib/utils");
21
+
22
+ var _util = require("../util");
23
+
24
+ var _usePassportId = _interopRequireDefault(require("../../lib/hooks/use-passport-id"));
25
+
26
+ var _templateObject;
27
+
28
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
+
30
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
+
32
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
+
34
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
35
+
36
+ function InvitationReceive(_ref) {
37
+ let {
38
+ invitation,
39
+ checkFn,
40
+ onLoginSuccess
41
+ } = _ref;
42
+ const [open, setOpen] = (0, _react.useState)(false);
43
+ const {
44
+ t,
45
+ locale
46
+ } = (0, _context.useLocaleContext)();
47
+ const {
48
+ getPassportId
49
+ } = (0, _usePassportId.default)();
50
+ const extraParams = {
51
+ passportId: getPassportId(),
52
+ inviteId: invitation.inviteId
53
+ };
54
+ const onClose = (0, _react.useCallback)(() => {
55
+ setOpen(false);
56
+ }, []);
57
+ const onLogin = (0, _react.useCallback)(function () {
58
+ setOpen(false);
59
+ onLoginSuccess(...arguments);
60
+ }, [onLoginSuccess]);
61
+ const onClickReceive = (0, _react.useCallback)(() => {
62
+ setOpen(true);
63
+ }, []);
64
+ const descriptionStep1 = (0, _react.useMemo)(() => {
65
+ const message = t('invite.description.step1', {
66
+ wallet: '{{wallet}}'
67
+ });
68
+ return (0, _util.patchJsxToLocale)(message, {
69
+ wallet() {
70
+ return /*#__PURE__*/_react.default.createElement("a", {
71
+ key: "name",
72
+ target: "_blank",
73
+ href: "https://www.abtwallet.io/",
74
+ className: "invite-receive__link",
75
+ rel: "noreferrer"
76
+ }, "DID Wallet");
77
+ }
78
+
79
+ });
80
+ });
81
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Root, null, /*#__PURE__*/_react.default.createElement(_Button.default, {
82
+ size: "large",
83
+ variant: "contained",
84
+ className: "invite-receive__button",
85
+ "data-cy": "invite-receive-passport",
86
+ color: "primary",
87
+ onClick: onClickReceive
88
+ }, t('invite.receive')), /*#__PURE__*/_react.default.createElement("div", {
89
+ className: "invite-receive__until"
90
+ }, t('invite.validUntil'), (0, _util.formatDateTime)(invitation.expireDate)), /*#__PURE__*/_react.default.createElement("ul", {
91
+ className: "invite-receive__description"
92
+ }, /*#__PURE__*/_react.default.createElement("li", {
93
+ className: "invite-receive__description-item"
94
+ }, descriptionStep1), /*#__PURE__*/_react.default.createElement("li", {
95
+ className: "invite-receive__description-item"
96
+ }, t('invite.description.step2')), /*#__PURE__*/_react.default.createElement("li", {
97
+ className: "invite-receive__description-item"
98
+ }, t('invite.description.step3', {
99
+ dapp: invitation.info.name
100
+ })))), /*#__PURE__*/_react.default.createElement(_Connect.default, {
101
+ popup: true,
102
+ open: open,
103
+ className: "connect",
104
+ action: "invite",
105
+ checkFn: checkFn,
106
+ checkTimeout: 10 * 60 * 1000,
107
+ onSuccess: onLogin,
108
+ onClose: onClose,
109
+ locale: locale,
110
+ webWalletUrl: (0, _utils.getWebWalletUrl)(),
111
+ messages: {
112
+ title: t('receive.dialog.title'),
113
+ scan: t('receive.dialog.scan'),
114
+ confirm: t('receive.dialog.confirm'),
115
+ success: t('receive.dialog.success')
116
+ },
117
+ extraParams: extraParams
118
+ }));
119
+ }
120
+
121
+ InvitationReceive.propTypes = {
122
+ invitation: _propTypes.default.object.isRequired,
123
+ checkFn: _propTypes.default.func.isRequired,
124
+ onLoginSuccess: _propTypes.default.func
125
+ };
126
+ InvitationReceive.defaultProps = {
127
+ onLoginSuccess: () => {}
128
+ };
129
+
130
+ const Root = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n text-align: center;\n margin: 30px 0;\n .invite-receive__logo-wrapper {\n display: inline-flex;\n align-items: center;\n color: #9397a1;\n font-size: 14px;\n }\n .invite-receive__logo {\n height: 16px;\n margin-left: 8px;\n }\n .invite-receive__button {\n width: 100%;\n margin: 16px 0;\n }\n .invite-receive__until {\n text-align: center;\n font-size: 14px;\n }\n .invite-receive__description {\n color: #999;\n text-align: left;\n list-style: decimal;\n padding: 0;\n padding-left: 1.2em;\n margin: 40px 0;\n }\n .invite-receive__description-item {\n list-style: decimal;\n }\n .invite-receive__link {\n color: ", ";\n }\n"])), _ref2 => {
131
+ let {
132
+ theme
133
+ } = _ref2;
134
+ return theme.palette.primary.main;
135
+ });
136
+
137
+ var _default = InvitationReceive;
138
+ exports.default = _default;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
13
+
14
+ var _Avatar = _interopRequireDefault(require("@arcblock/did-connect/lib/Avatar"));
15
+
16
+ var _context = require("@arcblock/ux/lib/Locale/context");
17
+
18
+ var _util = require("../util");
19
+
20
+ var _templateObject;
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+
24
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
+
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
+
28
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
29
+
30
+ function InvitationUser(_ref) {
31
+ let {
32
+ invitation
33
+ } = _ref;
34
+ const {
35
+ t
36
+ } = (0, _context.useLocaleContext)();
37
+ const roleName = (0, _react.useMemo)(() => {
38
+ const role = invitation.role.title || invitation.role.name;
39
+ return role.toUpperCase();
40
+ }, [invitation.role.title, invitation.role.name]);
41
+ const message = (0, _react.useMemo)(() => {
42
+ return t('invite.message', {
43
+ name: '{{name}}',
44
+ role: roleName,
45
+ dapp: '{{dapp}}'
46
+ });
47
+ }, [t, roleName]);
48
+ const accountLink = (0, _util.getExplorerLink)(invitation.info.chainHost, invitation.inviter.did, 'account');
49
+ const messageList = (0, _util.patchJsxToLocale)(message, {
50
+ name() {
51
+ return accountLink ? /*#__PURE__*/_react.default.createElement("a", {
52
+ key: "name",
53
+ target: "_blank",
54
+ href: accountLink,
55
+ className: "invite-user__link",
56
+ rel: "noreferrer"
57
+ }, invitation.inviter.fullName) : invitation.inviter.fullName;
58
+ },
59
+
60
+ dapp() {
61
+ return /*#__PURE__*/_react.default.createElement("a", {
62
+ key: "dapp",
63
+ target: "_blank",
64
+ href: invitation.info.url,
65
+ className: "invite-user__link",
66
+ rel: "noreferrer"
67
+ }, invitation.info.name);
68
+ }
69
+
70
+ });
71
+ return /*#__PURE__*/_react.default.createElement(Root, null, /*#__PURE__*/_react.default.createElement(_Avatar.default, {
72
+ did: invitation.info.did,
73
+ src: invitation.info.logo,
74
+ size: 80
75
+ }), /*#__PURE__*/_react.default.createElement("div", {
76
+ className: "invite-user__message"
77
+ }, messageList));
78
+ }
79
+
80
+ InvitationUser.propTypes = {
81
+ invitation: _propTypes.default.object.isRequired
82
+ };
83
+
84
+ const Root = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n .invite-user__name {\n font-weight: 700;\n font-size: 16px;\n margin: 8px 0 2px 0;\n }\n .invite-user__address {\n font-size: 12px;\n }\n .invite-user__message {\n margin-top: 20px;\n font-weight: 700;\n /* width: 90%; */\n text-align: center;\n font-size: 18px;\n }\n .invite-user__link {\n color: ", ";\n }\n"])), _ref2 => {
85
+ let {
86
+ theme
87
+ } = _ref2;
88
+ return theme.palette.primary.main;
89
+ });
90
+
91
+ var _default = InvitationUser;
92
+ exports.default = _default;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
13
+
14
+ var _ahooks = require("ahooks");
15
+
16
+ var _Spinner = _interopRequireDefault(require("@arcblock/ux/lib/Spinner"));
17
+
18
+ var _Result = _interopRequireDefault(require("@arcblock/ux/lib/Result"));
19
+
20
+ var _invitationPassport = _interopRequireDefault(require("./invitation-passport"));
21
+
22
+ var _invitationReceive = _interopRequireDefault(require("./invitation-receive"));
23
+
24
+ var _invitationUser = _interopRequireDefault(require("./invitation-user"));
25
+
26
+ var _wrapLocale = _interopRequireDefault(require("../wrap-locale"));
27
+
28
+ var _templateObject;
29
+
30
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
+
32
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
33
+
34
+ function Invitation(_ref) {
35
+ let {
36
+ getDataFn,
37
+ passportColor,
38
+ onLoginSuccess,
39
+ checkFn
40
+ } = _ref;
41
+ const state = (0, _ahooks.useRequest)(getDataFn);
42
+
43
+ if (state.loading) {
44
+ return /*#__PURE__*/_react.default.createElement(_Spinner.default, null);
45
+ }
46
+
47
+ if (state.error) {
48
+ var _state$error, _state$error$response;
49
+
50
+ return /*#__PURE__*/_react.default.createElement(_Result.default, {
51
+ status: "404",
52
+ title: (_state$error = state.error) === null || _state$error === void 0 ? void 0 : (_state$error$response = _state$error.response) === null || _state$error$response === void 0 ? void 0 : _state$error$response.data,
53
+ description: ""
54
+ });
55
+ }
56
+
57
+ return /*#__PURE__*/_react.default.createElement(Root, {
58
+ className: "page-invite__wrapper"
59
+ }, /*#__PURE__*/_react.default.createElement("div", {
60
+ className: "page-invite__card"
61
+ }, /*#__PURE__*/_react.default.createElement(_invitationUser.default, {
62
+ invitation: state.data
63
+ }), /*#__PURE__*/_react.default.createElement(_invitationReceive.default, {
64
+ invitation: state.data,
65
+ onLoginSuccess: onLoginSuccess,
66
+ checkFn: checkFn
67
+ }), /*#__PURE__*/_react.default.createElement(_invitationPassport.default, {
68
+ invitation: state.data,
69
+ passportColor: passportColor
70
+ })));
71
+ }
72
+
73
+ Invitation.propTypes = {
74
+ getDataFn: _propTypes.default.func.isRequired,
75
+ checkFn: _propTypes.default.func.isRequired,
76
+ onLoginSuccess: _propTypes.default.func,
77
+ passportColor: _propTypes.default.string
78
+ };
79
+ Invitation.defaultProps = {
80
+ onLoginSuccess: () => {},
81
+ passportColor: 'auto'
82
+ };
83
+
84
+ const Root = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n /* max-width: 500px; */\n max-width: 460px;\n max-height: 650px;\n min-height: 450px;\n /* width: 90%; */\n height: 80%;\n display: flex;\n flex-direction: column;\n .page-invite__card {\n background-color: #fff;\n border-radius: 4px;\n flex: 1;\n padding: 20px 30px;\n }\n .page-invite__app {\n margin-top: 20px;\n }\n"])));
85
+
86
+ var _default = (0, _wrapLocale.default)(Invitation);
87
+
88
+ exports.default = _default;
package/lib/locales/en.js CHANGED
@@ -29,5 +29,24 @@ module.exports = flat({
29
29
  common: {
30
30
  next: 'Next',
31
31
  complete: 'Complete'
32
+ },
33
+ invite: {
34
+ message: '{name} invite you to be the {role} of {dapp}',
35
+ receive: 'Receive with',
36
+ validUntil: 'Valid until:',
37
+ viewPermission: 'View Permission',
38
+ emptyPermission: 'Empty Permission',
39
+ open: 'Open',
40
+ description: {
41
+ step1: 'Download and setup your {wallet}',
42
+ step2: 'Claim above button to receive passport',
43
+ step3: 'Login in {dapp} with it'
44
+ }
45
+ },
46
+ receive: {
47
+ title: 'Use your DID Wallet to receive passport',
48
+ scan: 'Connect your DID Wallet to receive passport',
49
+ confirm: 'Confirm on your DID Wallet',
50
+ success: 'You are successfully connected'
32
51
  }
33
52
  });
package/lib/locales/zh.js CHANGED
@@ -28,5 +28,26 @@ module.exports = flat({
28
28
  common: {
29
29
  next: '下一步',
30
30
  complete: '完成'
31
+ },
32
+ invite: {
33
+ message: '{name} 邀请你成为 {dapp} 的 {role}',
34
+ receive: '领取通行证',
35
+ validUntil: '过期时间:',
36
+ viewPermission: '查看权限',
37
+ emptyPermission: '没有权限',
38
+ open: '打开',
39
+ description: {
40
+ step1: '下载并设置好你的 {wallet}',
41
+ step2: '点击上面的按钮领取通行证',
42
+ step3: '使用通行证登录 {dapp}'
43
+ }
44
+ },
45
+ receive: {
46
+ dialog: {
47
+ title: '请连接 DID 钱包领取通行证',
48
+ scan: '用您的 DID 钱包扫描下面的二维码领取通行证',
49
+ confirm: '在您的 DID 钱包上确认',
50
+ success: '连接成功'
51
+ }
31
52
  }
32
53
  });
package/lib/util/index.js CHANGED
@@ -3,12 +3,19 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.formatDateTime = formatDateTime;
6
7
  exports.getAccessUrl = getAccessUrl;
8
+ exports.getExplorerLink = getExplorerLink;
9
+ exports.patchJsxToLocale = patchJsxToLocale;
7
10
  exports.sleep = sleep;
8
11
  exports.validateDomain = void 0;
9
12
 
10
13
  var _constant = require("@abtnode/constant");
11
14
 
15
+ var _dayjs = _interopRequireDefault(require("dayjs"));
16
+
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
+
12
19
  function sleep(t) {
13
20
  return new Promise(resolve => setTimeout(resolve, t));
14
21
  }
@@ -81,4 +88,60 @@ function getAccessUrl(hostname) {
81
88
  searchParams.append(key, params[key]);
82
89
  });
83
90
  return "".concat(url, "?").concat(searchParams.toString());
91
+ }
92
+
93
+ function formatDateTime(date) {
94
+ return (0, _dayjs.default)(date).format('YYYY-MM-DD HH:mm');
95
+ }
96
+
97
+ function getExplorerLink(chainHost, did, type) {
98
+ if (!chainHost) return undefined;
99
+
100
+ try {
101
+ const chainUrl = new URL(chainHost);
102
+
103
+ switch (type) {
104
+ case 'account':
105
+ chainUrl.pathname = "/explorer/accounts/".concat(did);
106
+ break;
107
+
108
+ case 'tx':
109
+ chainUrl.pathname = "/explorer/txs/".concat(did);
110
+ break;
111
+
112
+ case 'token':
113
+ chainUrl.pathname = "/explorer/tokens/".concat(did);
114
+ break;
115
+
116
+ case 'factory':
117
+ chainUrl.pathname = "/explorer/factories/".concat(did);
118
+ break;
119
+
120
+ case 'bridge':
121
+ chainUrl.pathname = "/explorer/bridges/".concat(did);
122
+ break;
123
+
124
+ default:
125
+ chainUrl.pathname = '/';
126
+ }
127
+
128
+ return chainUrl.href;
129
+ } catch (_unused) {
130
+ return undefined;
131
+ }
132
+ }
133
+
134
+ function patchJsxToLocale(rawStr) {
135
+ let replaceMap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
136
+ return rawStr.split(/{{|}}/).map(item => {
137
+ if (replaceMap[item]) {
138
+ if (replaceMap[item] instanceof Function) {
139
+ return replaceMap[item]();
140
+ }
141
+
142
+ return replaceMap[item];
143
+ }
144
+
145
+ return item;
146
+ }).filter(Boolean);
84
147
  }
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.7.19",
6
+ "version": "1.7.20",
7
7
  "description": "UX components shared across abtnode packages",
8
8
  "main": "lib/index.js",
9
9
  "files": [
@@ -21,15 +21,18 @@
21
21
  "author": "linchen <linchen1987@foxmail.com> (http://github.com/linchen1987)",
22
22
  "license": "MIT",
23
23
  "dependencies": {
24
- "@abtnode/constant": "1.7.19",
25
- "@arcblock/did-connect": "^2.1.6",
26
- "@arcblock/ux": "^2.1.6",
27
- "@blocklet/meta": "1.7.19",
24
+ "@abtnode/auth": "1.7.20",
25
+ "@abtnode/constant": "1.7.20",
26
+ "@arcblock/did-connect": "^2.1.9",
27
+ "@arcblock/ux": "^2.1.9",
28
+ "@blocklet/meta": "1.7.20",
28
29
  "@emotion/react": "^11.9.0",
29
30
  "@emotion/styled": "^11.8.1",
30
31
  "@mui/icons-material": "^5.6.2",
31
32
  "@mui/material": "^5.6.4",
32
33
  "@mui/styles": "^5.6.2",
34
+ "ahooks": "^3.4.0",
35
+ "dayjs": "^1.11.2",
33
36
  "notistack": "2.0.5",
34
37
  "prop-types": "^15.7.2",
35
38
  "react": "^18.1.0",
@@ -46,5 +49,5 @@
46
49
  "babel-plugin-inline-react-svg": "^1.1.1",
47
50
  "babel-plugin-styled-components": "^1.10.7"
48
51
  },
49
- "gitHead": "73c02fe34d02270e59c5edfeedd7e2a878b772c4"
52
+ "gitHead": "7e579415aa56cc422f3e26d902cf029fbc92e47a"
50
53
  }