@broxus/evm-connect 1.0.0

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 (131) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +182 -0
  3. package/dist/cjs/components/EvmConnectButton/index.d.ts +21 -0
  4. package/dist/cjs/components/EvmConnectButton/index.js +52 -0
  5. package/dist/cjs/components/EvmConnectDialog/index.css +130 -0
  6. package/dist/cjs/components/EvmConnectDialog/index.d.ts +11 -0
  7. package/dist/cjs/components/EvmConnectDialog/index.js +65 -0
  8. package/dist/cjs/components/EvmConnector/index.css +37 -0
  9. package/dist/cjs/components/EvmConnector/index.d.ts +20 -0
  10. package/dist/cjs/components/EvmConnector/index.js +97 -0
  11. package/dist/cjs/components/EvmProvidersDispatcher/ConnectionRequest/index.css +43 -0
  12. package/dist/cjs/components/EvmProvidersDispatcher/ConnectionRequest/index.d.ts +3 -0
  13. package/dist/cjs/components/EvmProvidersDispatcher/ConnectionRequest/index.js +65 -0
  14. package/dist/cjs/components/EvmProvidersDispatcher/ProviderButton/index.css +54 -0
  15. package/dist/cjs/components/EvmProvidersDispatcher/ProviderButton/index.d.ts +11 -0
  16. package/dist/cjs/components/EvmProvidersDispatcher/ProviderButton/index.js +93 -0
  17. package/dist/cjs/components/EvmProvidersDispatcher/index.css +13 -0
  18. package/dist/cjs/components/EvmProvidersDispatcher/index.d.ts +5 -0
  19. package/dist/cjs/components/EvmProvidersDispatcher/index.js +49 -0
  20. package/dist/cjs/components/index.d.ts +4 -0
  21. package/dist/cjs/components/index.js +20 -0
  22. package/dist/cjs/constants.d.ts +1 -0
  23. package/dist/cjs/constants.js +4 -0
  24. package/dist/cjs/context/EvmWalletProvidersContext.d.ts +20 -0
  25. package/dist/cjs/context/EvmWalletProvidersContext.js +95 -0
  26. package/dist/cjs/context/EvmWalletServiceContext.d.ts +10 -0
  27. package/dist/cjs/context/EvmWalletServiceContext.js +55 -0
  28. package/dist/cjs/context/index.d.ts +2 -0
  29. package/dist/cjs/context/index.js +18 -0
  30. package/dist/cjs/core/EIP6963Connector.d.ts +17 -0
  31. package/dist/cjs/core/EIP6963Connector.js +127 -0
  32. package/dist/cjs/core/EthereumConnector.d.ts +43 -0
  33. package/dist/cjs/core/EthereumConnector.js +190 -0
  34. package/dist/cjs/core/MetaMask.d.ts +24 -0
  35. package/dist/cjs/core/MetaMask.js +159 -0
  36. package/dist/cjs/core/WalletConnect.d.ts +20 -0
  37. package/dist/cjs/core/WalletConnect.js +141 -0
  38. package/dist/cjs/core/index.d.ts +4 -0
  39. package/dist/cjs/core/index.js +20 -0
  40. package/dist/cjs/hooks/index.d.ts +4 -0
  41. package/dist/cjs/hooks/index.js +20 -0
  42. package/dist/cjs/hooks/useEIP6963Connections.d.ts +6 -0
  43. package/dist/cjs/hooks/useEIP6963Connections.js +47 -0
  44. package/dist/cjs/hooks/useFilteredConnections.d.ts +2 -0
  45. package/dist/cjs/hooks/useFilteredConnections.js +7 -0
  46. package/dist/cjs/hooks/useOrderedConnections.d.ts +2 -0
  47. package/dist/cjs/hooks/useOrderedConnections.js +41 -0
  48. package/dist/cjs/hooks/useRecentConnectionMeta.d.ts +15 -0
  49. package/dist/cjs/hooks/useRecentConnectionMeta.js +80 -0
  50. package/dist/cjs/index.d.ts +8 -0
  51. package/dist/cjs/index.js +24 -0
  52. package/dist/cjs/intl/index.d.ts +107 -0
  53. package/dist/cjs/intl/index.js +110 -0
  54. package/dist/cjs/services/EvmWalletService.d.ts +165 -0
  55. package/dist/cjs/services/EvmWalletService.js +430 -0
  56. package/dist/cjs/services/index.d.ts +1 -0
  57. package/dist/cjs/services/index.js +17 -0
  58. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  59. package/dist/cjs/types.d.ts +47 -0
  60. package/dist/cjs/types.js +15 -0
  61. package/dist/cjs/utils/get-evm-provider-platform-link.d.ts +2 -0
  62. package/dist/cjs/utils/get-evm-provider-platform-link.js +14 -0
  63. package/dist/cjs/utils/index.d.ts +2 -0
  64. package/dist/cjs/utils/index.js +18 -0
  65. package/dist/cjs/utils/parse-chain-id.d.ts +1 -0
  66. package/dist/cjs/utils/parse-chain-id.js +7 -0
  67. package/dist/esm/components/EvmConnectButton/index.d.ts +21 -0
  68. package/dist/esm/components/EvmConnectButton/index.js +26 -0
  69. package/dist/esm/components/EvmConnectDialog/index.css +130 -0
  70. package/dist/esm/components/EvmConnectDialog/index.d.ts +11 -0
  71. package/dist/esm/components/EvmConnectDialog/index.js +36 -0
  72. package/dist/esm/components/EvmConnector/index.css +37 -0
  73. package/dist/esm/components/EvmConnector/index.d.ts +20 -0
  74. package/dist/esm/components/EvmConnector/index.js +68 -0
  75. package/dist/esm/components/EvmProvidersDispatcher/ConnectionRequest/index.css +43 -0
  76. package/dist/esm/components/EvmProvidersDispatcher/ConnectionRequest/index.d.ts +3 -0
  77. package/dist/esm/components/EvmProvidersDispatcher/ConnectionRequest/index.js +35 -0
  78. package/dist/esm/components/EvmProvidersDispatcher/ProviderButton/index.css +54 -0
  79. package/dist/esm/components/EvmProvidersDispatcher/ProviderButton/index.d.ts +11 -0
  80. package/dist/esm/components/EvmProvidersDispatcher/ProviderButton/index.js +64 -0
  81. package/dist/esm/components/EvmProvidersDispatcher/index.css +13 -0
  82. package/dist/esm/components/EvmProvidersDispatcher/index.d.ts +5 -0
  83. package/dist/esm/components/EvmProvidersDispatcher/index.js +23 -0
  84. package/dist/esm/components/index.d.ts +4 -0
  85. package/dist/esm/components/index.js +4 -0
  86. package/dist/esm/constants.d.ts +1 -0
  87. package/dist/esm/constants.js +1 -0
  88. package/dist/esm/context/EvmWalletProvidersContext.d.ts +20 -0
  89. package/dist/esm/context/EvmWalletProvidersContext.js +68 -0
  90. package/dist/esm/context/EvmWalletServiceContext.d.ts +10 -0
  91. package/dist/esm/context/EvmWalletServiceContext.js +28 -0
  92. package/dist/esm/context/index.d.ts +2 -0
  93. package/dist/esm/context/index.js +2 -0
  94. package/dist/esm/core/EIP6963Connector.d.ts +17 -0
  95. package/dist/esm/core/EIP6963Connector.js +123 -0
  96. package/dist/esm/core/EthereumConnector.d.ts +43 -0
  97. package/dist/esm/core/EthereumConnector.js +186 -0
  98. package/dist/esm/core/MetaMask.d.ts +24 -0
  99. package/dist/esm/core/MetaMask.js +152 -0
  100. package/dist/esm/core/WalletConnect.d.ts +20 -0
  101. package/dist/esm/core/WalletConnect.js +134 -0
  102. package/dist/esm/core/index.d.ts +4 -0
  103. package/dist/esm/core/index.js +4 -0
  104. package/dist/esm/hooks/index.d.ts +4 -0
  105. package/dist/esm/hooks/index.js +4 -0
  106. package/dist/esm/hooks/useEIP6963Connections.d.ts +6 -0
  107. package/dist/esm/hooks/useEIP6963Connections.js +20 -0
  108. package/dist/esm/hooks/useFilteredConnections.d.ts +2 -0
  109. package/dist/esm/hooks/useFilteredConnections.js +3 -0
  110. package/dist/esm/hooks/useOrderedConnections.d.ts +2 -0
  111. package/dist/esm/hooks/useOrderedConnections.js +14 -0
  112. package/dist/esm/hooks/useRecentConnectionMeta.d.ts +15 -0
  113. package/dist/esm/hooks/useRecentConnectionMeta.js +51 -0
  114. package/dist/esm/index.d.ts +8 -0
  115. package/dist/esm/index.js +8 -0
  116. package/dist/esm/intl/index.d.ts +107 -0
  117. package/dist/esm/intl/index.js +108 -0
  118. package/dist/esm/services/EvmWalletService.d.ts +165 -0
  119. package/dist/esm/services/EvmWalletService.js +423 -0
  120. package/dist/esm/services/index.d.ts +1 -0
  121. package/dist/esm/services/index.js +1 -0
  122. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  123. package/dist/esm/types.d.ts +47 -0
  124. package/dist/esm/types.js +12 -0
  125. package/dist/esm/utils/get-evm-provider-platform-link.d.ts +2 -0
  126. package/dist/esm/utils/get-evm-provider-platform-link.js +10 -0
  127. package/dist/esm/utils/index.d.ts +2 -0
  128. package/dist/esm/utils/index.js +2 -0
  129. package/dist/esm/utils/parse-chain-id.d.ts +1 -0
  130. package/dist/esm/utils/parse-chain-id.js +3 -0
  131. package/package.json +82 -0
@@ -0,0 +1,43 @@
1
+ .evm-connect-connection-request {
2
+
3
+ }
4
+
5
+ .evm-connect-connection-request .evm-connect-connection-request-back-button {
6
+ color: var(--close-color, #333);
7
+ left: var(--modal-close-position);
8
+ position: absolute;
9
+ top: var(--modal-close-position);
10
+ }
11
+
12
+ .evm-connect-connection-request .evm-connect-connection-request-back-button:hover,
13
+ .evm-connect-connection-request .evm-connect-connection-request-back-button:focus {
14
+ color: var(--close-hover-color, #5e5e5e);
15
+ }
16
+
17
+ .evm-connect-connection-request .evm-connect-connection-request-title {
18
+ color: var(--base-body-color, #333);
19
+ font-weight: 600;
20
+ margin-bottom: var(--global-small-margin, 10px);
21
+ }
22
+
23
+ .evm-connect-connection-request .evm-connect-connection-request-button {
24
+ background-color: rgb(0 0 0 / 12%);
25
+ border: var(--evm-connect-connection-request-button-border-width) var(--evm-connect-connection-request-button-border-style) var(--evm-connect-connection-request-button-border);
26
+ border-radius: 8px;
27
+ box-sizing: border-box;
28
+ color: var(--base-body-color, #383838);
29
+ }
30
+
31
+ .evm-connect-connection-request .evm-connect-connection-request-button:hover,
32
+ .evm-connect-connection-request .evm-connect-connection-request-button:focus {
33
+ background-color: rgb(0 0 0 / 16%);
34
+ border-color: var(--evm-connect-provider-button-hover-border);
35
+ color: var(--base-body-color, #383838);
36
+ }
37
+
38
+ :root {
39
+ --evm-connect-connection-request-button-border-width: 2px;
40
+ --evm-connect-connection-request-button-border-style: solid;
41
+ --evm-connect-connection-request-button-border: transparent;
42
+ --evm-connect-connection-request-button-hover-border: var(--global-border, transparent);
43
+ }
@@ -0,0 +1,3 @@
1
+ import * as React from 'react';
2
+ import './index.css';
3
+ export declare function ConnectionRequest(): React.JSX.Element;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.ConnectionRequest = void 0;
30
+ const react_components_1 = require("@broxus/react-components");
31
+ const react_uikit_1 = require("@broxus/react-uikit");
32
+ const classnames_1 = __importDefault(require("classnames"));
33
+ const React = __importStar(require("react"));
34
+ const react_intl_1 = require("react-intl");
35
+ const context_1 = require("../../../context");
36
+ const intl_1 = __importDefault(require("../../../intl"));
37
+ require("./index.css");
38
+ function ConnectionRequest() {
39
+ const intl = (0, react_intl_1.useIntl)();
40
+ const { connect, connectingProvider, error, reset } = (0, context_1.useEvmWalletProviders)();
41
+ const tryAgain = async () => {
42
+ if (connectingProvider) {
43
+ await connect(connectingProvider);
44
+ }
45
+ };
46
+ return (React.createElement("div", { className: "evm-connect-connection-request" },
47
+ React.createElement(react_uikit_1.Button, { className: "evm-connect-connection-request-back-button uk-position-top-left", type: "text", onClick: reset },
48
+ React.createElement(react_components_1.Icon, { icon: "arrowLeft", ratio: 0.9 })),
49
+ React.createElement(react_uikit_1.Grid, { childWidth: 1, gap: "collapse" },
50
+ connectingProvider?.info.icon && (React.createElement(react_uikit_1.Text, { align: "center", className: (0, classnames_1.default)('uk-margin-top', {
51
+ 'uk-margin-bottom': connectingProvider?.info.description,
52
+ 'uk-margin-medium-bottom': !connectingProvider?.info.description,
53
+ }) },
54
+ React.createElement("img", { src: connectingProvider.info.icon, alt: connectingProvider.info.name, height: 60, width: 60 }))),
55
+ connectingProvider?.info.description && (React.createElement(react_uikit_1.Text, { align: "center", className: "uk-margin-medium-bottom", component: "div", kind: "meta" }, connectingProvider.info.description)),
56
+ !error ? (React.createElement(react_uikit_1.Text, { align: "center" },
57
+ React.createElement("h4", { className: "evm-connect-connection-request-title" }, intl.formatMessage(intl_1.default.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TITLE, {
58
+ title: connectingProvider?.info.name ?? 'wallet',
59
+ })),
60
+ React.createElement("div", null, intl.formatMessage(intl_1.default.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_NOTE)))) : (React.createElement(react_uikit_1.Text, { align: "center" },
61
+ React.createElement("h4", { className: "evm-connect-connection-request-title uk-text-danger" }, intl.formatMessage(intl_1.default.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_TITLE)),
62
+ React.createElement("div", { className: "uk-margin-small-bottom" }, error.message ? (React.createElement(react_uikit_1.Text, { color: "danger" }, error.message)) : intl.formatMessage(intl_1.default.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_NOTE)),
63
+ React.createElement(react_uikit_1.Button, { className: "evm-connect-connection-request-button", type: "default", onClick: tryAgain }, intl.formatMessage(intl_1.default.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TRY_AGAIN_BTN_TEXT)))))));
64
+ }
65
+ exports.ConnectionRequest = ConnectionRequest;
@@ -0,0 +1,54 @@
1
+ .evm-connect-providers-dispatcher .evm-connect-providers-list .evm-connect-provider-button {
2
+ align-content: center;
3
+ align-items: center;
4
+ background-color: rgb(0 0 0 / 8%);
5
+ border: var(--evm-connect-provider-button-border-width) var(--evm-connect-provider-button-border-style) var(--evm-connect-provider-button-border);
6
+ border-radius: 8px;
7
+ box-sizing: border-box;
8
+ color: var(--base-body-color, #383838);
9
+ display: grid;
10
+ gap: 16px;
11
+ grid-auto-rows: max-content;
12
+ grid-template-columns: 30px minmax(50%, 100%) auto;
13
+ line-height: normal;
14
+ min-height: 65px;
15
+ padding: 0 20px;
16
+ text-align: left;
17
+ width: 100%;
18
+ }
19
+
20
+ .evm-connect-providers-dispatcher .evm-connect-providers-list .evm-connect-provider-button:hover:not(:disabled),
21
+ .evm-connect-providers-dispatcher .evm-connect-providers-list .evm-connect-provider-button:focus:not(:disabled) {
22
+ background-color: rgb(0 0 0 / 12%);
23
+ border-color: var(--evm-connect-provider-button-hover-border);
24
+ color: var(--base-body-color, #383838);
25
+ }
26
+
27
+ .evm-connect-providers-list .evm-connect-provider-title {
28
+ color: var(--base-body-color, #383838);
29
+ font-size: 18px;
30
+ font-weight: 500;
31
+ }
32
+
33
+ .evm-connect-providers-list .evm-connect-provider-subtitle {
34
+ max-width: 100%;
35
+ opacity: 0.8;
36
+ }
37
+
38
+ .evm-connect-providers-list .evm-connect-provider-connected,
39
+ .evm-connect-providers-list .evm-connect-provider-recent {
40
+ background: var(--evm-connect-modal-content-background);
41
+ border-radius: 3px;
42
+ color: var(--global-muted-color, #383838);
43
+ display: inline-block;
44
+ font-size: 12px;
45
+ justify-self: flex-end;
46
+ padding: 1px 5px;
47
+ }
48
+
49
+ :root {
50
+ --evm-connect-provider-button-border-width: 2px;
51
+ --evm-connect-provider-button-border-style: solid;
52
+ --evm-connect-provider-button-border: transparent;
53
+ --evm-connect-provider-button-hover-border: var(--global-border, transparent);
54
+ }
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ import { type EvmWalletProviderConfig } from '../../../types';
3
+ import './index.css';
4
+ interface ProviderButtonProps {
5
+ providerConfig: EvmWalletProviderConfig;
6
+ onSelect?: (providerConfig: EvmWalletProviderConfig) => Promise<void> | void;
7
+ }
8
+ export declare const ProviderButton: ((props: ProviderButtonProps) => React.JSX.Element) & {
9
+ displayName: string;
10
+ };
11
+ export {};
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.ProviderButton = void 0;
30
+ const js_utils_1 = require("@broxus/js-utils");
31
+ const react_components_1 = require("@broxus/react-components");
32
+ const react_uikit_1 = require("@broxus/react-uikit");
33
+ const mobx_1 = require("mobx");
34
+ const mobx_react_lite_1 = require("mobx-react-lite");
35
+ const React = __importStar(require("react"));
36
+ const react_intl_1 = require("react-intl");
37
+ const context_1 = require("../../../context");
38
+ const intl_1 = __importDefault(require("../../../intl"));
39
+ const types_1 = require("../../../types");
40
+ const utils_1 = require("../../../utils");
41
+ require("./index.css");
42
+ exports.ProviderButton = (0, mobx_react_lite_1.observer)((props) => {
43
+ const intl = (0, react_intl_1.useIntl)();
44
+ const walletService = (0, context_1.useEvmWalletService)();
45
+ const walletProviders = (0, context_1.useEvmWalletProviders)();
46
+ const { providerConfig, onSelect: onSelectProvider } = props;
47
+ const [hasProvider, setHasProvider] = React.useState(() => {
48
+ if (providerConfig.connector.type === types_1.ConnectionType.WALLET_CONNECT_V2) {
49
+ return true;
50
+ }
51
+ return undefined;
52
+ });
53
+ const onSelect = async () => {
54
+ if (hasProvider) {
55
+ await walletProviders.connect(providerConfig);
56
+ onSelectProvider?.(providerConfig);
57
+ }
58
+ };
59
+ React.useEffect(() => (0, mobx_1.reaction)(() => providerConfig.connector, connector => {
60
+ if (connector.type !== types_1.ConnectionType.WALLET_CONNECT_V2) {
61
+ setHasProvider(connector.provider != null);
62
+ }
63
+ }, { fireImmediately: true }), [providerConfig.connector]);
64
+ if (hasProvider === undefined) {
65
+ return (React.createElement(react_uikit_1.Button, { className: "evm-connect-provider-button", disabled: true }, intl.formatMessage(intl_1.default.EVM_CONNECT_INITIALIZING_HINT)));
66
+ }
67
+ if (!hasProvider) {
68
+ const [platform = 'UNKNOWN', uri] = (0, utils_1.getEvmProviderPlatformLink)({ ...providerConfig.info.links }) ?? [];
69
+ let text;
70
+ try {
71
+ text = intl.formatMessage(
72
+ // @ts-ignore
73
+ intl_1.default[`EVM_CONNECT_INSTALL_${(0, js_utils_1.camelToSnake)(platform)}_PLATFORM`.toUpperCase()]);
74
+ }
75
+ catch { }
76
+ return (React.createElement(react_uikit_1.Button, { className: "evm-connect-provider-button", href: uri, rel: "noopener noreferrer", target: "_blank" },
77
+ React.createElement("span", { className: "evm-connect-provider-icon" }, typeof providerConfig.info.icon === 'string' ? (React.createElement(react_components_1.TokenIcon, { iconUrl: providerConfig.info.icon, size: 28 })) : (providerConfig.info.icon)),
78
+ React.createElement("span", { className: "evm-connect-provider-title" },
79
+ intl.formatMessage(intl_1.default.EVM_CONNECT_INSTALL_PROVIDER, {
80
+ providerName: providerConfig.info.name ?? '',
81
+ }),
82
+ React.createElement(react_uikit_1.Text, { className: "evm-connect-provider-subtitle", color: "muted", component: "div", size: "xsmall" }, text))));
83
+ }
84
+ const isConnected = walletService.isConnected && walletService.providerId === providerConfig.id;
85
+ const isConnecting = walletService.isConnecting && walletProviders.connectingProvider?.id === providerConfig.id;
86
+ return (React.createElement(react_uikit_1.Button, { className: "evm-connect-provider-button", disabled: isConnected || isConnecting, onClick: onSelect },
87
+ React.createElement("span", { className: "evm-connect-provider-icon" }, typeof providerConfig.info.icon === 'string' ? (React.createElement(react_components_1.TokenIcon, { iconUrl: providerConfig.info.icon, size: 28 })) : (providerConfig.info.icon)),
88
+ React.createElement("span", { className: "evm-connect-provider-title" },
89
+ providerConfig.info.name,
90
+ providerConfig.info.description && (React.createElement(react_uikit_1.Text, { className: "evm-connect-provider-subtitle", color: "muted", component: "div", size: "xsmall", wrap: "truncate" }, providerConfig.info.description))),
91
+ isConnected && (React.createElement("span", { className: "evm-connect-provider-connected" }, intl.formatMessage(intl_1.default.EVM_CONNECT_DISPATCHER_POPUP_CONNECTED_HINT))),
92
+ !isConnected && providerConfig.isRecent && (React.createElement("span", { className: "evm-connect-provider-recent" }, intl.formatMessage(intl_1.default.EVM_CONNECT_DISPATCHER_POPUP_RECENT_HINT)))));
93
+ });
@@ -0,0 +1,13 @@
1
+ .evm-connect-providers-dispatcher {
2
+ backface-visibility: hidden;
3
+ display: flex;
4
+ flex-direction: column;
5
+ height: inherit;
6
+ overflow: hidden;
7
+ transition: height var(--transition-fast-duration) var(--ease-in);
8
+ width: inherit;
9
+ }
10
+
11
+ .evm-connect-providers-list {
12
+ margin: 0;
13
+ }
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ import './index.css';
3
+ export declare const EvmProvidersDispatcher: (() => React.JSX.Element) & {
4
+ displayName: string;
5
+ };
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.EvmProvidersDispatcher = void 0;
27
+ const react_uikit_1 = require("@broxus/react-uikit");
28
+ const mobx_react_lite_1 = require("mobx-react-lite");
29
+ const React = __importStar(require("react"));
30
+ const ConnectionRequest_1 = require("../../components/EvmProvidersDispatcher/ConnectionRequest");
31
+ const ProviderButton_1 = require("../../components/EvmProvidersDispatcher/ProviderButton");
32
+ const context_1 = require("../../context");
33
+ const hooks_1 = require("../../hooks");
34
+ require("./index.css");
35
+ exports.EvmProvidersDispatcher = (0, mobx_react_lite_1.observer)(() => {
36
+ const walletProviders = (0, context_1.useEvmWalletProviders)();
37
+ const orderedProviders = (0, hooks_1.useOrderedConnections)(walletProviders.providers ?? []);
38
+ const dispatcher = React.useRef(null);
39
+ const content = React.useRef(null);
40
+ React.useLayoutEffect(() => {
41
+ if (dispatcher.current) {
42
+ const height = content.current?.clientHeight;
43
+ dispatcher.current.style.height = height ? `${height}px` : '';
44
+ }
45
+ });
46
+ return (React.createElement("div", { ref: dispatcher, className: "evm-connect-providers-dispatcher" },
47
+ React.createElement("div", { ref: content }, walletProviders.connectingProvider ? (React.createElement(ConnectionRequest_1.ConnectionRequest, null)) : (React.createElement(react_uikit_1.List, { className: "evm-connect-providers-list" }, orderedProviders.map(providerConfig => (React.createElement(react_uikit_1.List.Item, { key: providerConfig.id },
48
+ React.createElement(ProviderButton_1.ProviderButton, { providerConfig: providerConfig })))))))));
49
+ });
@@ -0,0 +1,4 @@
1
+ export * from '../components/EvmConnectButton';
2
+ export * from '../components/EvmConnectDialog';
3
+ export * from '../components/EvmConnector';
4
+ export * from '../components/EvmProvidersDispatcher';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("../components/EvmConnectButton"), exports);
18
+ __exportStar(require("../components/EvmConnectDialog"), exports);
19
+ __exportStar(require("../components/EvmConnector"), exports);
20
+ __exportStar(require("../components/EvmProvidersDispatcher"), exports);
@@ -0,0 +1 @@
1
+ export declare const EVM_RECENT_CONNECTION = "EVM_RECENT_CONNECTION";
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EVM_RECENT_CONNECTION = void 0;
4
+ exports.EVM_RECENT_CONNECTION = 'EVM_RECENT_CONNECTION';
@@ -0,0 +1,20 @@
1
+ import * as React from 'react';
2
+ import { type EvmWalletProviderConfig } from '../types';
3
+ export interface EvmWalletProvidersContextConsumer {
4
+ agreementsNote?: React.ReactNode;
5
+ connect: (providerConfig: EvmWalletProviderConfig) => Promise<void>;
6
+ connectingProvider?: EvmWalletProviderConfig | null;
7
+ error?: Error | null;
8
+ providers?: Readonly<EvmWalletProviderConfig[]>;
9
+ reset: VoidFunction;
10
+ }
11
+ export declare const EvmWalletProvidersContext: React.Context<EvmWalletProvidersContextConsumer | null>;
12
+ export declare function useEvmWalletProviders(): EvmWalletProvidersContextConsumer;
13
+ export type EvmWalletProvidersProviderProps = React.PropsWithChildren<{
14
+ agreementsNote?: React.ReactNode;
15
+ providers?: Readonly<EvmWalletProviderConfig[]>;
16
+ onConnected?: VoidFunction;
17
+ }>;
18
+ export declare const EvmWalletProvidersProvider: ((props: EvmWalletProvidersProviderProps) => React.JSX.Element) & {
19
+ displayName: string;
20
+ };
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.EvmWalletProvidersProvider = exports.useEvmWalletProviders = exports.EvmWalletProvidersContext = void 0;
27
+ const js_utils_1 = require("@broxus/js-utils");
28
+ const react_uikit_1 = require("@broxus/react-uikit");
29
+ const mobx_react_lite_1 = require("mobx-react-lite");
30
+ const React = __importStar(require("react"));
31
+ const EvmWalletServiceContext_1 = require("../context/EvmWalletServiceContext");
32
+ const hooks_1 = require("../hooks");
33
+ exports.EvmWalletProvidersContext = React.createContext(null);
34
+ function useEvmWalletProviders() {
35
+ return (0, react_uikit_1.useContext)(exports.EvmWalletProvidersContext);
36
+ }
37
+ exports.useEvmWalletProviders = useEvmWalletProviders;
38
+ exports.EvmWalletProvidersProvider = (0, mobx_react_lite_1.observer)((props) => {
39
+ const walletService = (0, EvmWalletServiceContext_1.useEvmWalletService)();
40
+ const [recentMeta, setRecentMeta] = (0, hooks_1.useRecentConnectionMeta)();
41
+ const { agreementsNote, children, providers = walletService.providers } = props;
42
+ const [error, setError] = React.useState(null);
43
+ const [connectingProvider, setConnectingProvider] = React.useState(null);
44
+ const connect = React.useCallback(async (providerConfig) => {
45
+ try {
46
+ setError(null);
47
+ setConnectingProvider(providerConfig);
48
+ const prevConnector = walletService.connector;
49
+ const chainParams = recentMeta?.chainId
50
+ ? walletService.networks.find(network => network.chainId === recentMeta.chainId) ?? 1
51
+ : 1;
52
+ (0, js_utils_1.debug)(`Try to activate ${providerConfig.info.name} connection with chain`, typeof chainParams === 'number' ? chainParams : chainParams.chainId);
53
+ await providerConfig.connector?.connect(typeof chainParams === 'number' ? chainParams : {
54
+ blockExplorerUrls: [chainParams.explorer.baseUrl],
55
+ chainId: Number(chainParams.chainId),
56
+ chainName: chainParams.name,
57
+ nativeCurrency: {
58
+ decimals: 18,
59
+ name: chainParams.currency.name,
60
+ symbol: chainParams.currency.symbol,
61
+ },
62
+ rpcUrls: [chainParams.rpcUrl],
63
+ });
64
+ if (providerConfig.id !== walletService.providerId) {
65
+ await prevConnector?.disconnect(true);
66
+ }
67
+ setRecentMeta({
68
+ chainId: providerConfig.connector.chainId?.toString(),
69
+ disconnected: false,
70
+ providerId: providerConfig.id,
71
+ type: providerConfig.connector.type,
72
+ });
73
+ walletService.setState('providerId', providerConfig.id);
74
+ }
75
+ catch (e) {
76
+ setError(e);
77
+ }
78
+ }, [recentMeta, setRecentMeta, walletService]);
79
+ const reset = React.useCallback(() => {
80
+ setError(null);
81
+ setConnectingProvider(null);
82
+ }, []);
83
+ const context = React.useMemo(() => ({
84
+ agreementsNote,
85
+ connect,
86
+ connectingProvider,
87
+ error,
88
+ providers,
89
+ reset,
90
+ }), [agreementsNote, connect, connectingProvider, error, providers, reset]);
91
+ return React.createElement(exports.EvmWalletProvidersContext.Provider, { value: context }, children);
92
+ });
93
+ if (process.env.NODE_ENV !== 'production') {
94
+ exports.EvmWalletProvidersContext.displayName = 'EvmWalletProvidersContext';
95
+ }
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ import { EvmWalletService, type EvmWalletServiceCtorParams } from '../services';
3
+ export declare const EvmWalletServiceContext: React.Context<EvmWalletService | null>;
4
+ export declare function useEvmWalletService(): EvmWalletService;
5
+ type EvmWalletProviderProps = React.PropsWithChildren<{
6
+ params?: EvmWalletServiceCtorParams;
7
+ wallet?: EvmWalletService;
8
+ }>;
9
+ export declare const EvmWalletServiceProvider: React.MemoExoticComponent<({ children, params, wallet, }: EvmWalletProviderProps) => React.JSX.Element>;
10
+ export {};
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.EvmWalletServiceProvider = exports.useEvmWalletService = exports.EvmWalletServiceContext = void 0;
27
+ const react_uikit_1 = require("@broxus/react-uikit");
28
+ const mobx_1 = require("mobx");
29
+ const React = __importStar(require("react"));
30
+ const hooks_1 = require("../hooks");
31
+ const services_1 = require("../services");
32
+ exports.EvmWalletServiceContext = React.createContext(null);
33
+ function useEvmWalletService() {
34
+ return (0, react_uikit_1.useContext)(exports.EvmWalletServiceContext);
35
+ }
36
+ exports.useEvmWalletService = useEvmWalletService;
37
+ exports.EvmWalletServiceProvider = React.memo(({ children, params, wallet, }) => {
38
+ const [, setRecentMeta] = (0, hooks_1.useRecentConnectionMeta)();
39
+ const context = React.useMemo(() => {
40
+ if (wallet instanceof services_1.EvmWalletService) {
41
+ return wallet;
42
+ }
43
+ return new services_1.EvmWalletService({ ...params });
44
+ }, [params, wallet]);
45
+ React.useEffect(() => (0, mobx_1.reaction)(() => context.chainId, chainId => {
46
+ if (chainId) {
47
+ const recentMeta = (0, hooks_1.getRecentConnectionMeta)();
48
+ setRecentMeta({ ...recentMeta, chainId: chainId.toString() });
49
+ }
50
+ }, { delay: 10, fireImmediately: context.isReady }), [context, setRecentMeta]);
51
+ return React.createElement(exports.EvmWalletServiceContext.Provider, { value: context }, children);
52
+ });
53
+ if (process.env.NODE_ENV !== 'production') {
54
+ exports.EvmWalletServiceContext.displayName = 'EvmWalletServiceContext';
55
+ }
@@ -0,0 +1,2 @@
1
+ export * from '../context/EvmWalletProvidersContext';
2
+ export * from '../context/EvmWalletServiceContext';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("../context/EvmWalletProvidersContext"), exports);
18
+ __exportStar(require("../context/EvmWalletServiceContext"), exports);
@@ -0,0 +1,17 @@
1
+ import { type EIP6963ProviderInfo } from 'web3/lib/commonjs/web3_eip6963';
2
+ import { type EthExecutionAPI, type ProviderConnectInfo } from 'web3-types';
3
+ import { EthereumConnector, type EthereumConnectorCtorParams } from '../core';
4
+ import { type AddEthereumChainParams, ConnectionType, type SupportedProviders } from '../types';
5
+ export interface EIP6963ConnectorCtorParams extends EthereumConnectorCtorParams {
6
+ info: EIP6963ProviderInfo;
7
+ provider: Readonly<SupportedProviders<EthExecutionAPI>>;
8
+ }
9
+ export declare class EIP6963Connector extends EthereumConnector {
10
+ protected readonly params: Readonly<EIP6963ConnectorCtorParams>;
11
+ readonly type = ConnectionType.EIP_6963_INJECTED;
12
+ constructor(params: Readonly<EIP6963ConnectorCtorParams>);
13
+ connect(chainIdOrParams?: number | AddEthereumChainParams): Promise<void>;
14
+ disconnect(): Promise<void>;
15
+ protected init(): Promise<void>;
16
+ protected handleConnect({ chainId }: ProviderConnectInfo): void;
17
+ }