@broxus/evm-connect 1.13.7 → 1.14.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 (110) hide show
  1. package/dist/index.d.mts +453 -0
  2. package/dist/index.d.ts +453 -0
  3. package/dist/index.js +4954 -0
  4. package/dist/index.mjs +4954 -0
  5. package/dist/inheritance.min.css +3 -0
  6. package/dist/react.d.mts +116 -0
  7. package/dist/react.d.ts +116 -0
  8. package/dist/react.js +4860 -0
  9. package/dist/react.mjs +4860 -0
  10. package/dist/sdk.d.mts +346 -0
  11. package/dist/sdk.d.ts +346 -0
  12. package/dist/sdk.js +4860 -0
  13. package/dist/sdk.mjs +4860 -0
  14. package/dist/standalone.min.css +1 -0
  15. package/dist/uikit.min.css +1 -1
  16. package/lib/cjs/_react.js +25 -0
  17. package/lib/cjs/_sdk.js +22 -0
  18. package/lib/cjs/components/{EvmConnectButton/index.js → EvmConnectButton.js} +4 -4
  19. package/lib/cjs/components/{EvmConnectDialog/index.js → EvmConnectDialog.js} +12 -6
  20. package/lib/cjs/components/EvmConnectionRequest.js +80 -0
  21. package/lib/cjs/components/{EvmConnector/index.js → EvmConnector.js} +4 -5
  22. package/lib/cjs/components/{EvmProvidersDispatcher/ProviderButton/index.js → EvmProviderButton.js} +8 -9
  23. package/lib/cjs/components/{EvmProvidersDispatcher/index.js → EvmProvidersDispatcher.js} +24 -16
  24. package/lib/cjs/components/EvmProvidersList.js +49 -0
  25. package/lib/cjs/context/EvmWalletProvidersContext.js +4 -5
  26. package/lib/cjs/context/EvmWalletServiceContext.js +4 -4
  27. package/lib/cjs/hooks/index.js +1 -0
  28. package/lib/cjs/hooks/useContext.js +44 -0
  29. package/lib/cjs/hooks/useRecentConnectionMeta.js +7 -35
  30. package/lib/cjs/intl/index.js +1 -1
  31. package/lib/cjs/services/EvmWalletService.js +1 -1
  32. package/lib/cjs/styles/inheritance.css +71 -0
  33. package/lib/cjs/styles/inheritance.js +4 -0
  34. package/lib/cjs/styles/standalone.css +68 -0
  35. package/lib/cjs/styles/standalone.js +4 -0
  36. package/lib/cjs/styles/style.css +538 -0
  37. package/lib/cjs/styles/uikit.js +3 -0
  38. package/lib/cjs/utils/index.js +2 -1
  39. package/lib/cjs/utils/recent-connection-meta.js +37 -0
  40. package/lib/cjs/utils/{convert-network-to-chain-params.js → to-chain-params.js} +2 -2
  41. package/lib/esm/_react.d.ts +9 -0
  42. package/lib/esm/_react.js +9 -0
  43. package/lib/esm/_sdk.d.ts +6 -0
  44. package/lib/esm/_sdk.js +6 -0
  45. package/lib/esm/components/{EvmConnectButton/index.d.ts → EvmConnectButton.d.ts} +3 -3
  46. package/lib/esm/components/{EvmConnectButton/index.js → EvmConnectButton.js} +4 -4
  47. package/lib/esm/components/{EvmConnectDialog/index.d.ts → EvmConnectDialog.d.ts} +0 -1
  48. package/lib/esm/components/{EvmConnectDialog/index.js → EvmConnectDialog.js} +12 -6
  49. package/lib/esm/components/EvmConnectionRequest.d.ts +4 -0
  50. package/lib/esm/components/EvmConnectionRequest.js +41 -0
  51. package/lib/esm/components/{EvmConnector/index.d.ts → EvmConnector.d.ts} +1 -2
  52. package/lib/esm/components/{EvmConnector/index.js → EvmConnector.js} +4 -5
  53. package/lib/esm/components/EvmProviderButton.d.ts +10 -0
  54. package/lib/esm/components/{EvmProvidersDispatcher/ProviderButton/index.js → EvmProviderButton.js} +7 -8
  55. package/lib/esm/components/{EvmProvidersDispatcher/index.d.ts → EvmProvidersDispatcher.d.ts} +0 -1
  56. package/lib/esm/components/EvmProvidersDispatcher.js +40 -0
  57. package/lib/esm/components/EvmProvidersList.d.ts +4 -0
  58. package/lib/esm/components/EvmProvidersList.js +13 -0
  59. package/lib/esm/connectors/EIP6963Connector.d.ts +1 -2
  60. package/lib/esm/connectors/MetaMask.d.ts +1 -1
  61. package/lib/esm/context/EvmWalletProvidersContext.js +3 -4
  62. package/lib/esm/context/EvmWalletServiceContext.js +2 -2
  63. package/lib/esm/core/EthereumConnector.d.ts +1 -1
  64. package/lib/esm/hooks/index.d.ts +1 -0
  65. package/lib/esm/hooks/index.js +1 -0
  66. package/lib/esm/hooks/useContext.d.ts +2 -0
  67. package/lib/esm/hooks/useContext.js +8 -0
  68. package/lib/esm/hooks/useEIP6963Connections.d.ts +1 -1
  69. package/lib/esm/hooks/useOrderedConnections.d.ts +1 -2
  70. package/lib/esm/hooks/useRecentConnectionMeta.d.ts +1 -9
  71. package/lib/esm/hooks/useRecentConnectionMeta.js +5 -31
  72. package/lib/esm/intl/index.d.ts +115 -0
  73. package/lib/esm/intl/index.js +1 -1
  74. package/lib/esm/services/EvmWalletService.js +2 -2
  75. package/lib/esm/styles/inheritance.css +71 -0
  76. package/lib/esm/styles/inheritance.d.ts +2 -0
  77. package/lib/esm/styles/inheritance.js +2 -0
  78. package/lib/esm/styles/standalone.css +68 -0
  79. package/lib/esm/styles/standalone.d.ts +2 -0
  80. package/lib/esm/styles/standalone.js +2 -0
  81. package/lib/esm/styles/style.css +538 -0
  82. package/lib/esm/styles/uikit.js +1 -0
  83. package/lib/esm/types.d.ts +7 -1
  84. package/lib/esm/utils/index.d.ts +2 -1
  85. package/lib/esm/utils/index.js +2 -1
  86. package/lib/esm/utils/recent-connection-meta.d.ts +4 -0
  87. package/lib/esm/utils/recent-connection-meta.js +32 -0
  88. package/lib/esm/utils/to-chain-params.d.ts +2 -0
  89. package/lib/esm/utils/{convert-network-to-chain-params.js → to-chain-params.js} +1 -1
  90. package/package.json +52 -29
  91. package/dist/index.cjs.js +0 -2
  92. package/dist/index.esm.js +0 -2
  93. package/dist/style.min.css +0 -1
  94. package/lib/cjs/components/EvmConnectDialog/index.css +0 -142
  95. package/lib/cjs/components/EvmConnector/index.css +0 -46
  96. package/lib/cjs/components/EvmProvidersDispatcher/ConnectionRequest/index.css +0 -44
  97. package/lib/cjs/components/EvmProvidersDispatcher/ConnectionRequest/index.js +0 -75
  98. package/lib/cjs/components/EvmProvidersDispatcher/ProviderButton/index.css +0 -54
  99. package/lib/cjs/components/EvmProvidersDispatcher/index.css +0 -13
  100. package/lib/esm/components/EvmConnectDialog/index.css +0 -142
  101. package/lib/esm/components/EvmConnector/index.css +0 -46
  102. package/lib/esm/components/EvmProvidersDispatcher/ConnectionRequest/index.css +0 -44
  103. package/lib/esm/components/EvmProvidersDispatcher/ConnectionRequest/index.d.ts +0 -5
  104. package/lib/esm/components/EvmProvidersDispatcher/ConnectionRequest/index.js +0 -36
  105. package/lib/esm/components/EvmProvidersDispatcher/ProviderButton/index.css +0 -54
  106. package/lib/esm/components/EvmProvidersDispatcher/ProviderButton/index.d.ts +0 -11
  107. package/lib/esm/components/EvmProvidersDispatcher/index.css +0 -13
  108. package/lib/esm/components/EvmProvidersDispatcher/index.js +0 -32
  109. package/lib/esm/utils/convert-network-to-chain-params.d.ts +0 -2
  110. /package/lib/esm/{uikit.d.ts → styles/uikit.d.ts} +0 -0
@@ -0,0 +1,6 @@
1
+ export * from './connectors';
2
+ export * from './core';
3
+ export * from './services';
4
+ export * from './utils';
5
+ export * from './constants';
6
+ export * from './types';
@@ -1,8 +1,8 @@
1
1
  import { type ButtonProps } from '@broxus/react-uikit';
2
2
  import * as React from 'react';
3
- import { type EvmConnectDialogProps } from '../../components/EvmConnectDialog';
4
- import { type EvmWalletService } from '../../services';
5
- import { type EvmNetworkConfig } from '../../types';
3
+ import { type EvmConnectDialogProps } from '../components/EvmConnectDialog';
4
+ import { type EvmWalletService } from '../services';
5
+ import { type EvmNetworkConfig } from '../types';
6
6
  interface TriggerProps {
7
7
  disabled?: boolean;
8
8
  connect: VoidFunction;
@@ -1,9 +1,9 @@
1
1
  import { Button } from '@broxus/react-uikit';
2
2
  import { observer } from 'mobx-react-lite';
3
3
  import * as React from 'react';
4
- import { EvmConnectDialog } from '../../components/EvmConnectDialog';
5
- import { EvmWalletProvidersContext, EvmWalletProvidersProvider, useEvmWalletService } from '../../context';
6
- import { convertNetworkToChainParams } from '../../utils';
4
+ import { EvmConnectDialog } from '../components/EvmConnectDialog';
5
+ import { EvmWalletProvidersContext, EvmWalletProvidersProvider, useEvmWalletService } from '../context';
6
+ import { toChainParams } from '../utils';
7
7
  export const EvmConnectButton = observer(({ disabled, network, popupClassName, popupType, trigger, onClose, onConnect, onOpen, ...props }) => {
8
8
  const walletService = useEvmWalletService();
9
9
  const walletProviders = React.useContext(EvmWalletProvidersContext);
@@ -19,7 +19,7 @@ export const EvmConnectButton = observer(({ disabled, network, popupClassName, p
19
19
  }, [onOpen]);
20
20
  const connect = React.useCallback(async () => {
21
21
  setModalVisibility(false);
22
- const networkParams = network?.chainId ? convertNetworkToChainParams(network) : undefined;
22
+ const networkParams = network?.chainId ? toChainParams(network) : undefined;
23
23
  await Promise.allSettled([
24
24
  onConnect?.(walletService),
25
25
  walletService.connect(networkParams).catch(() => {
@@ -1,5 +1,4 @@
1
1
  import * as React from 'react';
2
- import './index.css';
3
2
  export interface EvmConnectDialogProps {
4
3
  className?: string;
5
4
  open?: boolean;
@@ -1,13 +1,13 @@
1
+ import { getScrollWidth } from '@broxus/js-utils';
1
2
  import { Close } from '@broxus/react-components';
2
3
  import { Component, Drawer, Modal, Text, addModalMode, removeModalMode } from '@broxus/react-uikit';
3
4
  import classNames from 'classnames';
4
5
  import { observer } from 'mobx-react-lite';
5
6
  import * as React from 'react';
6
7
  import { useIntl } from 'react-intl';
7
- import { EvmProvidersDispatcher } from '../../components';
8
- import { useEvmWalletProviders } from '../../context';
9
- import messages from '../../intl';
10
- import './index.css';
8
+ import { EvmProvidersDispatcher } from '../components';
9
+ import { useEvmWalletProviders } from '../context';
10
+ import messages from '../intl';
11
11
  export const EvmConnectDialog = observer(({ className, open, type, onClose }) => {
12
12
  const intl = useIntl();
13
13
  const walletProviders = useEvmWalletProviders();
@@ -28,7 +28,10 @@ export const EvmConnectDialog = observer(({ className, open, type, onClose }) =>
28
28
  removeOnLeave: true,
29
29
  // eslint-disable-next-line sort-keys
30
30
  onLeaveEnd: onClosed,
31
- }, open: open, placement: "bottom", push: false, rootClassName: "evm-connect-drawer", onClose: onClose },
31
+ }, open: open, placement: "bottom", push: false, rootClassName: "evm-connect-drawer", style: {
32
+ // @ts-ignore
33
+ '--global-scroll-width': `${getScrollWidth()}px`,
34
+ }, onClose: onClose },
32
35
  React.createElement(Close, { kind: "drawer", ratio: 0.9, onClick: onClose }),
33
36
  React.createElement(Component, { className: "uk-drawer-header" },
34
37
  React.createElement(Component, { className: "uk-drawer-title" }, intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_TITLE))),
@@ -36,6 +39,9 @@ export const EvmConnectDialog = observer(({ className, open, type, onClose }) =>
36
39
  React.createElement(EvmProvidersDispatcher, null)),
37
40
  walletProviders.agreementsNote !== false && (React.createElement(Text, { align: "center", className: "uk-drawer-footer uk-margin-top", component: "footer", kind: "meta" }, walletProviders.agreementsNote || intl.formatMessage(messages.EVM_CONNECT_AGREEMENTS_NOTE)))));
38
41
  }
39
- return (React.createElement(Modal, { centered: true, className: classNames('evm-connect-modal', className), closeIcon: React.createElement(Close, { kind: "modal", ratio: 0.9, onClick: onClose }), destroyOnHidden: true, footer: walletProviders.agreementsNote !== false && (React.createElement(Text, { align: "center", component: "div", kind: "meta" }, walletProviders.agreementsNote || intl.formatMessage(messages.EVM_CONNECT_AGREEMENTS_NOTE))), keyboard: !walletProviders.connectingProvider, maskClosable: !walletProviders.connectingProvider, title: intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_TITLE), visible: open, width: 380, onClose: onClose, onClosed: onClosed },
42
+ return (React.createElement(Modal, { centered: true, className: classNames('evm-connect-modal', className), closeIcon: React.createElement(Close, { kind: "modal", ratio: 0.9, onClick: onClose }), destroyOnHidden: true, footer: walletProviders.agreementsNote !== false && (React.createElement(Text, { align: "center", component: "div", kind: "meta" }, walletProviders.agreementsNote || intl.formatMessage(messages.EVM_CONNECT_AGREEMENTS_NOTE))), keyboard: !walletProviders.connectingProvider, maskClosable: !walletProviders.connectingProvider, title: intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_TITLE), visible: open, style: {
43
+ // @ts-ignore
44
+ '--global-scroll-width': `${getScrollWidth()}px`,
45
+ }, onClose: onClose, onClosed: onClosed },
40
46
  React.createElement(EvmProvidersDispatcher, null)));
41
47
  });
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ export declare const EvmConnectionRequest: (() => React.JSX.Element) & {
3
+ displayName: string;
4
+ };
@@ -0,0 +1,41 @@
1
+ import { Icon } from '@broxus/react-components';
2
+ import { Button, Grid, Text } from '@broxus/react-uikit';
3
+ import classNames from 'classnames';
4
+ import { observer } from 'mobx-react-lite';
5
+ import * as React from 'react';
6
+ import { useIntl } from 'react-intl';
7
+ import { useEvmWalletProviders } from '../context';
8
+ import messages from '../intl';
9
+ export const EvmConnectionRequest = observer(() => {
10
+ const intl = useIntl();
11
+ const walletProviders = useEvmWalletProviders();
12
+ const tryAgain = async () => {
13
+ if (walletProviders.connectingProvider) {
14
+ await walletProviders.connect(walletProviders.connectingProvider);
15
+ }
16
+ };
17
+ return (React.createElement(React.Fragment, null,
18
+ React.createElement(Button, { className: "evm-connect-back-button uk-position-top-left", type: "text", onClick: walletProviders.reset },
19
+ React.createElement(Icon, { icon: "arrowLeft", ratio: 0.9 })),
20
+ React.createElement("div", { className: "tvm-connect-provider-content uk-animation-fade", style: {
21
+ animationDelay: 'var(--animation-medium-fast-duration)',
22
+ animationDuration: 'var(--animation-fast-duration)',
23
+ animationTimingFunction: 'var(--ease-in)',
24
+ } },
25
+ React.createElement(Grid, { childWidth: 1, gap: "collapse" },
26
+ walletProviders.connectingProvider?.info.icon && (React.createElement(Text, { align: "center", className: classNames('uk-margin-top', {
27
+ 'uk-margin-bottom': walletProviders.connectingProvider?.info.description,
28
+ 'uk-margin-medium-bottom': !walletProviders.connectingProvider?.info.description,
29
+ }), component: "div" },
30
+ React.createElement("img", { src: walletProviders.connectingProvider.info.icon, alt: walletProviders.connectingProvider.info.name, height: 60, width: 60 }))),
31
+ walletProviders.connectingProvider?.info.description && (React.createElement(Text, { align: "center", className: "uk-margin-medium-bottom", component: "div", kind: "meta" }, walletProviders.connectingProvider.info.description)),
32
+ !walletProviders.error ? (React.createElement("div", { className: "uk-text-center" },
33
+ React.createElement(Text, { className: "evm-connect-connection-request-title", component: "h4" }, intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TITLE, {
34
+ title: walletProviders.connectingProvider?.info.name ?? 'wallet',
35
+ })),
36
+ React.createElement(Text, { className: "uk-margin-small-bottom", component: "div", size: "small" }, intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_NOTE)))) : (React.createElement("div", { className: "uk-text-center" },
37
+ React.createElement(Text, { className: "evm-connect-connection-request-title", component: "h4" }, intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_TITLE)),
38
+ React.createElement(Text, { className: "uk-margin-small-bottom", color: "danger", component: "div", size: "small" }, walletProviders.error.message
39
+ ?? intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_NOTE)),
40
+ React.createElement(Button, { type: "link", onClick: tryAgain }, intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TRY_AGAIN_BTN_TEXT))))))));
41
+ });
@@ -1,7 +1,6 @@
1
1
  import { type ButtonProps } from '@broxus/react-uikit';
2
2
  import * as React from 'react';
3
- import { type EvmNetworkConfig } from '../../types';
4
- import './index.css';
3
+ import { type EvmNetworkConfig } from '../types';
5
4
  export interface EvmConnectorProps {
6
5
  changeWalletButtonText?: React.ReactNode;
7
6
  className?: string;
@@ -5,11 +5,10 @@ import classNames from 'classnames';
5
5
  import { observer } from 'mobx-react-lite';
6
6
  import * as React from 'react';
7
7
  import { useIntl } from 'react-intl';
8
- import { EvmConnectButton } from '../../components/EvmConnectButton';
9
- import { useEvmWalletService } from '../../context';
10
- import { useRecentConnectionMeta } from '../../hooks';
11
- import messages from '../../intl';
12
- import './index.css';
8
+ import { EvmConnectButton } from '../components/EvmConnectButton';
9
+ import { useEvmWalletService } from '../context';
10
+ import { useRecentConnectionMeta } from '../hooks';
11
+ import messages from '../intl';
13
12
  export const EvmConnector = observer((props) => {
14
13
  const intl = useIntl();
15
14
  const walletService = useEvmWalletService();
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ import { type EvmWalletProviderConfig } from '../types';
3
+ interface EvmProviderButtonProps {
4
+ providerConfig: EvmWalletProviderConfig;
5
+ onSelect?: (providerConfig: EvmWalletProviderConfig) => Promise<void> | void;
6
+ }
7
+ export declare const EvmProviderButton: (({ providerConfig, onSelect: onSelectProvider }: EvmProviderButtonProps) => React.JSX.Element) & {
8
+ displayName: string;
9
+ };
10
+ export {};
@@ -5,12 +5,11 @@ import { reaction } from 'mobx';
5
5
  import { observer } from 'mobx-react-lite';
6
6
  import * as React from 'react';
7
7
  import { useIntl } from 'react-intl';
8
- import { useEvmWalletProviders, useEvmWalletService } from '../../../context';
9
- import messages from '../../../intl';
10
- import { EthereumConnectionType } from '../../../types';
11
- import { getEvmProviderPlatformLink } from '../../../utils';
12
- import './index.css';
13
- export const ProviderButton = observer(({ providerConfig, onSelect: onSelectProvider }) => {
8
+ import { useEvmWalletProviders, useEvmWalletService } from '../context';
9
+ import messages from '../intl';
10
+ import { EthereumConnectionType } from '../types';
11
+ import { getEvmProviderPlatformLink } from '../utils';
12
+ export const EvmProviderButton = observer(({ providerConfig, onSelect: onSelectProvider }) => {
14
13
  const intl = useIntl();
15
14
  const walletService = useEvmWalletService();
16
15
  const walletProviders = useEvmWalletProviders();
@@ -35,8 +34,8 @@ export const ProviderButton = observer(({ providerConfig, onSelect: onSelectProv
35
34
  }, { fireImmediately: true }), [providerConfig.connector]);
36
35
  if (!hasProvider && isInitializing) {
37
36
  return (React.createElement(Button, { className: "evm-connect-provider-button", disabled: true },
38
- React.createElement("span", { className: "tvm-connect-provider-icon" }, typeof providerConfig.info.icon === 'string' ? (React.createElement(TokenIcon, { iconUrl: providerConfig.info.icon, size: 28 })) : providerConfig.info.icon),
39
- React.createElement("span", { className: "tvm-connect-provider-title" }, intl.formatMessage(messages.EVM_CONNECT_INITIALIZING_HINT)),
37
+ React.createElement("span", { className: "evm-connect-provider-icon" }, typeof providerConfig.info.icon === 'string' ? (React.createElement(TokenIcon, { iconUrl: providerConfig.info.icon, size: 28 })) : providerConfig.info.icon),
38
+ React.createElement("span", { className: "evm-connect-provider-title" }, intl.formatMessage(messages.EVM_CONNECT_INITIALIZING_HINT)),
40
39
  React.createElement("span", null,
41
40
  React.createElement(Spinner, { ratio: 0.8 }))));
42
41
  }
@@ -1,5 +1,4 @@
1
1
  import * as React from 'react';
2
- import './index.css';
3
2
  export declare const EvmProvidersDispatcher: (() => React.JSX.Element) & {
4
3
  displayName: string;
5
4
  };
@@ -0,0 +1,40 @@
1
+ import { Grid, Text, useMounted } from '@broxus/react-uikit';
2
+ import classNames from 'classnames';
3
+ import { observer } from 'mobx-react-lite';
4
+ import * as React from 'react';
5
+ import { useIntl } from 'react-intl';
6
+ import { EvmConnectionRequest } from '../components/EvmConnectionRequest';
7
+ import { EvmProvidersList } from '../components/EvmProvidersList';
8
+ import { useEvmWalletProviders, useEvmWalletService } from '../context';
9
+ import messages from '../intl';
10
+ export const EvmProvidersDispatcher = observer(() => {
11
+ const intl = useIntl();
12
+ const walletService = useEvmWalletService();
13
+ const walletProviders = useEvmWalletProviders();
14
+ const isMounted = useMounted();
15
+ const container = React.useRef(null);
16
+ const content = React.useRef(null);
17
+ React.useLayoutEffect(() => {
18
+ if (container.current) {
19
+ const height = content.current?.clientHeight;
20
+ container.current.style.height = height ? `${Math.ceil(height) + 1}px` : '';
21
+ }
22
+ }, [walletProviders.connectingProvider, walletProviders.error]);
23
+ if (walletService.providers.length === 0) {
24
+ return (React.createElement("div", { ref: container, className: "evm-connect-providers-dispatcher" },
25
+ React.createElement("div", { className: "uk-text-left uk-padding-large uk-padding-remove-horizontal" }, intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_NO_PROVIDERS_HINT))));
26
+ }
27
+ return (React.createElement("div", { ref: container, className: "evm-connect-providers-dispatcher" },
28
+ React.createElement("div", { ref: content }, walletProviders.connectingProvider ? (React.createElement(EvmConnectionRequest, null)) : (React.createElement("div", { className: classNames('tvm-connect-provider-content', {
29
+ 'uk-animation-fade': isMounted,
30
+ }), style: isMounted ? {
31
+ animationDelay: 'var(--animation-medium-fast-duration)',
32
+ animationDuration: 'var(--animation-fast-duration)',
33
+ animationTimingFunction: 'var(--ease-in)',
34
+ } : undefined },
35
+ React.createElement(Grid, { childWidth: 1 },
36
+ React.createElement("div", null,
37
+ React.createElement(Text, { align: "center", component: "div", kind: "meta" }, intl.formatMessage(messages.EVM_CONNECT_DISPATCHER_POPUP_NOTE))),
38
+ React.createElement("div", null,
39
+ React.createElement(EvmProvidersList, null))))))));
40
+ });
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ export declare const EvmProvidersList: (() => React.JSX.Element) & {
3
+ displayName: string;
4
+ };
@@ -0,0 +1,13 @@
1
+ import { List } from '@broxus/react-uikit';
2
+ import { observer } from 'mobx-react-lite';
3
+ import * as React from 'react';
4
+ import { EvmProviderButton } from '../components/EvmProviderButton';
5
+ import { useEvmWalletService } from '../context';
6
+ import { useOrderedConnections, useRecentConnectionMeta } from '../hooks';
7
+ export const EvmProvidersList = observer(() => {
8
+ const service = useEvmWalletService();
9
+ const [recentMeta] = useRecentConnectionMeta();
10
+ const orderedProviders = useOrderedConnections(service.providers ?? [], recentMeta);
11
+ return (React.createElement(List, { className: "evm-connect-providers-list" }, orderedProviders.map(providerConfig => (React.createElement(List.Item, { key: providerConfig.id },
12
+ React.createElement(EvmProviderButton, { providerConfig: providerConfig }))))));
13
+ });
@@ -1,5 +1,4 @@
1
- import { type EIP6963ProviderInfo } from 'web3/lib/commonjs/web3_eip6963';
2
- import { type EthExecutionAPI, type ProviderConnectInfo } from 'web3-types';
1
+ import { type EIP6963ProviderInfo, type EthExecutionAPI, type ProviderConnectInfo } from 'web3';
3
2
  import { EthereumConnector, type EthereumConnectorCtorParams } from '../core';
4
3
  import { type AddEthereumChainParams, EthereumConnectionType, type SupportedProviders } from '../types';
5
4
  export interface EIP6963ConnectorCtorParams extends EthereumConnectorCtorParams {
@@ -1,5 +1,5 @@
1
1
  import detectEthereumProvider from '@metamask/detect-provider';
2
- import { type EthExecutionAPI, type MetaMaskProvider, type ProviderConnectInfo } from 'web3-types';
2
+ import { type EthExecutionAPI, type MetaMaskProvider, type ProviderConnectInfo } from 'web3';
3
3
  import { EthereumConnector, type EthereumConnectorCtorParams } from '../core';
4
4
  import { type AddEthereumChainParams, EthereumConnectionType } from '../types';
5
5
  interface MetaMaskEthereumProvider extends MetaMaskProvider<EthExecutionAPI> {
@@ -1,11 +1,10 @@
1
1
  'use client';
2
2
  import { debug } from '@broxus/js-utils';
3
- import { useContext } from '@broxus/react-uikit';
4
3
  import { observer } from 'mobx-react-lite';
5
4
  import * as React from 'react';
6
5
  import { useEvmWalletService } from '../context/EvmWalletServiceContext';
7
- import { getRecentConnectionMeta, storeRecentConnectionMeta } from '../hooks';
8
- import { convertNetworkToChainParams } from '../utils';
6
+ import { useContext } from '../hooks';
7
+ import { getRecentConnectionMeta, storeRecentConnectionMeta, toChainParams } from '../utils';
9
8
  export const EvmWalletProvidersContext = React.createContext(null);
10
9
  export function useEvmWalletProviders() {
11
10
  return useContext(EvmWalletProvidersContext);
@@ -27,7 +26,7 @@ export const EvmWalletProvidersProvider = observer(({ agreementsNote, children,
27
26
  debug(`Try to activate ${providerConfig.info.name} connection with chain`, typeof networkParams === 'number' ? networkParams : networkParams?.chainId);
28
27
  await providerConfig.connector?.connect(typeof networkParams === 'number'
29
28
  ? networkParams
30
- : networkParams && convertNetworkToChainParams(networkParams), { onConnect });
29
+ : networkParams && toChainParams(networkParams), { onConnect });
31
30
  if (walletService.providerId && providerConfig.id !== walletService.providerId) {
32
31
  await prevConnector?.disconnect({ force: true });
33
32
  }
@@ -1,10 +1,10 @@
1
1
  'use client';
2
- import { useContext } from '@broxus/react-uikit';
3
2
  import { reaction } from 'mobx';
4
3
  import * as React from 'react';
5
4
  import { EvmWalletProvidersProvider } from '../context/EvmWalletProvidersContext';
6
- import { getRecentConnectionMeta, storeRecentConnectionMeta } from '../hooks';
5
+ import { useContext } from '../hooks';
7
6
  import { EvmWalletService } from '../services';
7
+ import { getRecentConnectionMeta, storeRecentConnectionMeta } from '../utils';
8
8
  export const EvmWalletServiceContext = React.createContext(null);
9
9
  export function useEvmWalletService() {
10
10
  return useContext(EvmWalletServiceContext);
@@ -1,5 +1,5 @@
1
1
  import { AbstractStore } from '@broxus/js-core';
2
- import { type EthExecutionAPI, type ProviderRpcError } from 'web3-types';
2
+ import { type EthExecutionAPI, type ProviderRpcError } from 'web3';
3
3
  import { type AddEthereumChainParams, type EthereumConnectionType, type SupportedProviders, type WatchAssetParameters } from '../types';
4
4
  export interface EthereumConnectorCtorParams {
5
5
  onDisconnect?: (err: ProviderRpcError) => Promise<void> | void;
@@ -1,3 +1,4 @@
1
+ export * from '../hooks/useContext';
1
2
  export * from '../hooks/useEIP6963Connections';
2
3
  export * from '../hooks/useFilteredConnections';
3
4
  export * from '../hooks/useOrderedConnections';
@@ -1,3 +1,4 @@
1
+ export * from '../hooks/useContext';
1
2
  export * from '../hooks/useEIP6963Connections';
2
3
  export * from '../hooks/useFilteredConnections';
3
4
  export * from '../hooks/useOrderedConnections';
@@ -0,0 +1,2 @@
1
+ import * as React from 'react';
2
+ export declare function useContext<T>(Context: React.Context<T>): NonNullable<T>;
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ export function useContext(Context) {
3
+ const context = React.useContext(Context);
4
+ if (context == null) {
5
+ throw new Error(`use${Context.displayName || Context.constructor.name || 'Unknown'} must be used within a ${Context.displayName || Context.constructor.name || 'Unknown'}.Provider`);
6
+ }
7
+ return context;
8
+ }
@@ -1,4 +1,4 @@
1
- import { type EIP6963ProviderDetail } from 'web3/lib/commonjs/web3_eip6963';
1
+ import { type EIP6963ProviderDetail } from 'web3';
2
2
  export declare const store: {
3
3
  readonly subscribe: (callback: () => void) => () => void;
4
4
  readonly value: () => EIP6963ProviderDetail<unknown>[];
@@ -1,3 +1,2 @@
1
- import { type RecentConnectionMeta } from '../hooks/useRecentConnectionMeta';
2
- import { type EvmWalletProviderConfig } from '../types';
1
+ import { type EvmWalletProviderConfig, type RecentConnectionMeta } from '../types';
3
2
  export declare function useOrderedConnections(providers: Readonly<EvmWalletProviderConfig[]>, recentMeta?: RecentConnectionMeta): EvmWalletProviderConfig[];
@@ -1,12 +1,4 @@
1
- import { EthereumConnectionType } from '../types';
2
- export interface RecentConnectionMeta {
3
- chainId?: string;
4
- disconnected?: boolean;
5
- providerId: string;
6
- type?: EthereumConnectionType;
7
- }
8
- export declare function storeRecentConnectionMeta(meta: RecentConnectionMeta | undefined, storageKey?: string): void;
9
- export declare function getRecentConnectionMeta(storageKey?: string): RecentConnectionMeta | undefined;
1
+ import { type RecentConnectionMeta } from '../types';
10
2
  type UseRecentConnectionMeta = [
11
3
  value: RecentConnectionMeta | undefined,
12
4
  setValue: (meta: RecentConnectionMeta | undefined) => void
@@ -1,37 +1,8 @@
1
- import { debug, isBrowser, storage } from '@broxus/js-utils';
1
+ import { isBrowser } from '@broxus/js-utils';
2
2
  import * as React from 'react';
3
3
  import { EVM_RECENT_CONNECTION } from '../constants';
4
4
  import { useEvmWalletProviders } from '../context';
5
- import { EthereumConnectionType } from '../types';
6
- function isRecentConnectionMeta(value) {
7
- const meta = { providerId: value.providerId, type: value.type };
8
- return Boolean(meta.type && EthereumConnectionType[meta.type] && !!meta.providerId);
9
- }
10
- export function storeRecentConnectionMeta(meta, storageKey = EVM_RECENT_CONNECTION) {
11
- if (!meta) {
12
- storage.remove(storageKey);
13
- return;
14
- }
15
- debug('Store EVM recent connection', meta);
16
- storage.set(storageKey, JSON.stringify(meta));
17
- }
18
- export function getRecentConnectionMeta(storageKey = EVM_RECENT_CONNECTION) {
19
- const value = storage.get(storageKey);
20
- if (!value) {
21
- return undefined;
22
- }
23
- try {
24
- const json = JSON.parse(value);
25
- if (isRecentConnectionMeta(json)) {
26
- return json;
27
- }
28
- }
29
- catch (e) {
30
- debug(e);
31
- }
32
- storeRecentConnectionMeta(undefined, storageKey);
33
- return undefined;
34
- }
5
+ import { getRecentConnectionMeta, isRecentConnectionMeta, storeRecentConnectionMeta } from '../utils';
35
6
  export function useRecentConnectionMeta() {
36
7
  const walletProviders = useEvmWalletProviders();
37
8
  const storageKey = walletProviders.recentMetaStorageKey ?? EVM_RECENT_CONNECTION;
@@ -57,5 +28,8 @@ export function useRecentConnectionMeta() {
57
28
  }
58
29
  };
59
30
  }, [storageKey]);
31
+ React.useEffect(() => {
32
+ setRecentMeta(getRecentConnectionMeta(storageKey));
33
+ }, [storageKey]);
60
34
  return [recentMeta, setMeta];
61
35
  }
@@ -0,0 +1,115 @@
1
+ declare const _default: {
2
+ EVM_CONNECT_AGREEMENTS_NOTE: {
3
+ defaultMessage: string;
4
+ id: string;
5
+ };
6
+ EVM_CONNECT_NOT_CONNECTED_HINT: {
7
+ defaultMessage: string;
8
+ id: string;
9
+ };
10
+ EVM_CONNECT_INITIALIZING_HINT: {
11
+ defaultMessage: string;
12
+ id: string;
13
+ };
14
+ EVM_CONNECT_CONNECT_BTN_TEXT: {
15
+ defaultMessage: string;
16
+ id: string;
17
+ };
18
+ EVM_CONNECT_DISCONNECT_BTN_TEXT: {
19
+ defaultMessage: string;
20
+ id: string;
21
+ };
22
+ EVM_CONNECT_CHANGE_WALLET_BTN_TEXT: {
23
+ defaultMessage: string;
24
+ id: string;
25
+ };
26
+ EVM_CONNECT_UNSUPPORTED_NETWORK_WARNING: {
27
+ defaultMessage: string;
28
+ id: string;
29
+ };
30
+ EVM_CONNECT_CONNECTOR_BLOCKCHAIN_NAME: {
31
+ defaultMessage: string;
32
+ id: string;
33
+ };
34
+ EVM_CONNECT_CONNECTOR_EXPLORER_HINT: {
35
+ defaultMessage: string;
36
+ id: string;
37
+ };
38
+ EVM_CONNECT_INSTALL_PROVIDER: {
39
+ defaultMessage: string;
40
+ id: string;
41
+ };
42
+ EVM_CONNECT_INSTALL_ANDROID_PLATFORM: {
43
+ defaultMessage: string;
44
+ id: string;
45
+ };
46
+ EVM_CONNECT_INSTALL_IOS_PLATFORM: {
47
+ defaultMessage: string;
48
+ id: string;
49
+ };
50
+ EVM_CONNECT_INSTALL_CHROME_EXTENSION_PLATFORM: {
51
+ defaultMessage: string;
52
+ id: string;
53
+ };
54
+ EVM_CONNECT_INSTALL_FIREFOX_EXTENSION_PLATFORM: {
55
+ defaultMessage: string;
56
+ id: string;
57
+ };
58
+ EVM_CONNECT_INSTALL_SAFARI_EXTENSION_PLATFORM: {
59
+ defaultMessage: string;
60
+ id: string;
61
+ };
62
+ EVM_CONNECT_INSTALL_UNKNOWN_PLATFORM: {
63
+ defaultMessage: string;
64
+ id: string;
65
+ };
66
+ EVM_CONNECT_PROVIDER_HOMEPAGE: {
67
+ defaultMessage: string;
68
+ id: string;
69
+ };
70
+ EVM_CONNECT_PROVIDER_HOMEPAGE_NOTE: {
71
+ defaultMessage: string;
72
+ id: string;
73
+ };
74
+ EVM_CONNECT_DISPATCHER_POPUP_TITLE: {
75
+ defaultMessage: string;
76
+ id: string;
77
+ };
78
+ EVM_CONNECT_DISPATCHER_POPUP_NOTE: {
79
+ defaultMessage: string;
80
+ id: string;
81
+ };
82
+ EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TITLE: {
83
+ defaultMessage: string;
84
+ id: string;
85
+ };
86
+ EVM_CONNECT_DISPATCHER_POPUP_REQUEST_NOTE: {
87
+ defaultMessage: string;
88
+ id: string;
89
+ };
90
+ EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_TITLE: {
91
+ defaultMessage: string;
92
+ id: string;
93
+ };
94
+ EVM_CONNECT_DISPATCHER_POPUP_REQUEST_FAILED_NOTE: {
95
+ defaultMessage: string;
96
+ id: string;
97
+ };
98
+ EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TRY_AGAIN_BTN_TEXT: {
99
+ defaultMessage: string;
100
+ id: string;
101
+ };
102
+ EVM_CONNECT_DISPATCHER_POPUP_CONNECTED_HINT: {
103
+ defaultMessage: string;
104
+ id: string;
105
+ };
106
+ EVM_CONNECT_DISPATCHER_POPUP_RECENT_HINT: {
107
+ defaultMessage: string;
108
+ id: string;
109
+ };
110
+ EVM_CONNECT_DISPATCHER_POPUP_NO_PROVIDERS_HINT: {
111
+ defaultMessage: string;
112
+ id: string;
113
+ };
114
+ };
115
+ export default _default;
@@ -78,7 +78,7 @@ export default defineMessages({
78
78
  id: 'EVM_CONNECT_DISPATCHER_POPUP_TITLE',
79
79
  },
80
80
  EVM_CONNECT_DISPATCHER_POPUP_NOTE: {
81
- defaultMessage: 'At the moment we only support the wallets below.',
81
+ defaultMessage: 'Please, connect your preferred wallet.',
82
82
  id: 'EVM_CONNECT_DISPATCHER_POPUP_NOTE',
83
83
  },
84
84
  EVM_CONNECT_DISPATCHER_POPUP_REQUEST_TITLE: {
@@ -11,7 +11,7 @@ import { AbstractStore } from '@broxus/js-core';
11
11
  import { debounce, debug, error } from '@broxus/js-utils';
12
12
  import { action, computed, makeObservable, reaction } from 'mobx';
13
13
  import Web3 from 'web3';
14
- import { convertNetworkToChainParams } from '../utils';
14
+ import { toChainParams } from '../utils';
15
15
  export class EvmWalletService extends AbstractStore {
16
16
  params;
17
17
  name = 'EvmWalletService';
@@ -60,7 +60,7 @@ export class EvmWalletService extends AbstractStore {
60
60
  // eslint-disable-next-line no-nested-ternary
61
61
  const networkParams = typeof networkIdOParams === 'object'
62
62
  ? networkIdOParams
63
- : network ? convertNetworkToChainParams(network) : undefined;
63
+ : network ? toChainParams(network) : undefined;
64
64
  await this.connector?.connect(networkParams ?? 1);
65
65
  }
66
66
  catch (e) {