@dappworks/kit 0.5.42 → 0.5.44

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.
package/dist/wallet.mjs CHANGED
@@ -1,19 +1,19 @@
1
- import { WalletConfigStore, WalletStore, WalletRpcStore } from './chunk-UMFAEQ5S.mjs';
2
- export { ConnectLedger, DisconnectLedger, WalletConfigStore, WalletHistoryStore, WalletRpcStore, WalletStore } from './chunk-UMFAEQ5S.mjs';
1
+ import { WalletConfigStore, WalletStore, WalletRpcStore } from './chunk-FA6LOD7G.mjs';
2
+ export { ConnectLedger, DisconnectLedger, WalletConfigStore, WalletHistoryStore, WalletRpcStore, WalletStore } from './chunk-FA6LOD7G.mjs';
3
3
  import './chunk-GPPSD2BO.mjs';
4
- import './chunk-FLACAHWH.mjs';
4
+ import './chunk-DSRTQO5D.mjs';
5
5
  import './chunk-NCGC2KDE.mjs';
6
6
  import './chunk-TEVYTENF.mjs';
7
7
  import { ToastPlugin } from './chunk-IMOLRP7I.mjs';
8
8
  import './chunk-GKAU4P5I.mjs';
9
9
  import { RootStore } from './chunk-XSGTWROT.mjs';
10
- import { helper } from './chunk-VDDGCMCB.mjs';
10
+ import { helper } from './chunk-5KJLNQQ4.mjs';
11
11
  import './chunk-ONVPCAMQ.mjs';
12
12
  import './chunk-K7LFG5BA.mjs';
13
13
  import { __spreadValues } from './chunk-YOSPWY5K.mjs';
14
14
  import { RainbowKitProvider, darkTheme, lightTheme } from '@rainbow-me/rainbowkit';
15
15
  import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
16
- import React2, { useEffect, useState, useMemo, useCallback } from 'react';
16
+ import React2, { useEffect, useRef } from 'react';
17
17
  import { WagmiProvider, useAccount, useConnect } from 'wagmi';
18
18
  import { iotex as iotex$1, iotexTestnet as iotexTestnet$1 } from 'viem/chains';
19
19
  import SafeAppsSDK from '@safe-global/safe-apps-sdk';
@@ -30,42 +30,34 @@ var iotexTestnet = __spreadValues({
30
30
  var AutoConnectIopayWallet = () => {
31
31
  const { isConnected } = useAccount();
32
32
  const { connect, connectors } = useConnect();
33
- const [hasTriedAutoConnect, setHasTriedAutoConnect] = useState(false);
34
- const isIopayEnvironment = useMemo(() => {
35
- if (typeof window === "undefined") return false;
36
- return helper.env.isIopayMobile && !!window.ethereum;
37
- }, []);
38
- const iopayConnector = useMemo(() => {
39
- return connectors.find(
33
+ const hasTriedRef = useRef(false);
34
+ useEffect(() => {
35
+ if (hasTriedRef.current || isConnected) return;
36
+ const isIopayEnvironment = helper.env.isIopayMobile() && typeof window !== "undefined" && !!window.ethereum;
37
+ if (!isIopayEnvironment) {
38
+ hasTriedRef.current = true;
39
+ return;
40
+ }
41
+ const iopayConnector = connectors.find(
40
42
  (connector) => {
41
43
  var _a, _b;
42
44
  return ((_a = connector.id) == null ? void 0 : _a.toLowerCase().includes("iopay")) || ((_b = connector.name) == null ? void 0 : _b.toLowerCase().includes("iopay"));
43
45
  }
44
46
  );
45
- }, [connectors]);
46
- const attemptAutoConnect = useCallback(async () => {
47
- if (!iopayConnector || !isIopayEnvironment) {
47
+ if (!iopayConnector) {
48
+ hasTriedRef.current = true;
48
49
  return;
49
50
  }
50
- try {
51
- await connect({ connector: iopayConnector });
52
- } catch (error) {
53
- console.debug("Auto connect iopayWallet failed:", error);
54
- }
55
- }, [connect, iopayConnector, isIopayEnvironment]);
56
- useEffect(() => {
57
- if (hasTriedAutoConnect || isConnected || !isIopayEnvironment || !iopayConnector) {
58
- if (!hasTriedAutoConnect && (!isIopayEnvironment || !iopayConnector)) {
59
- setHasTriedAutoConnect(true);
51
+ const timer = setTimeout(() => {
52
+ try {
53
+ connect({ connector: iopayConnector });
54
+ } catch (error) {
55
+ console.debug("Auto connect iopayWallet failed:", error);
60
56
  }
61
- return;
62
- }
63
- const timer = setTimeout(async () => {
64
- await attemptAutoConnect();
65
- setHasTriedAutoConnect(true);
57
+ hasTriedRef.current = true;
66
58
  }, 500);
67
59
  return () => clearTimeout(timer);
68
- }, [hasTriedAutoConnect, isConnected, isIopayEnvironment, iopayConnector, attemptAutoConnect]);
60
+ }, [isConnected, connect, connectors]);
69
61
  return null;
70
62
  };
71
63
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../module/Wallet/type.ts","../module/Wallet/AutoConnectIopayWallet.tsx","../module/Wallet/provider.tsx","../module/Wallet/RpcList/index.tsx"],"names":["_iotex","_iotexTestnet","useEffect","React","observer"],"mappings":"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","file":"wallet.mjs","sourcesContent":["import { iotex as _iotex, iotexTestnet as _iotexTestnet, type Chain } from \"viem/chains\";\n\nexport type NetworkObject = {\n name: string;\n chainId: number;\n rpcUrl: string;\n logoUrl: string;\n explorerUrl: string;\n explorerName: string;\n nativeCoin: string;\n type: 'mainnet' | 'testnet';\n};\n\nexport type WalletTransactionHistoryType = {\n chainId: number;\n tx?: string;\n msg: string;\n timestamp: number;\n type: string;\n status: 'loading' | 'success' | 'fail';\n};\n\nexport type AddressMode = 'io' | '0x';\n\nexport const iotex = {\n iconUrl: 'https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png',\n ..._iotex,\n} as Chain;\nexport const iotexTestnet = {\n iconUrl: 'https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png',\n ..._iotexTestnet,\n} as Chain;;","import { useEffect, useState, useCallback, useMemo } from 'react';\nimport { useConnect, useAccount } from 'wagmi';\nimport { helper } from '../../utils';\n\n// Auto connect iopayWallet when available\nexport const AutoConnectIopayWallet = () => {\n const { isConnected } = useAccount();\n const { connect, connectors } = useConnect();\n const [hasTriedAutoConnect, setHasTriedAutoConnect] = useState(false);\n\n // Memoize iopay detection to avoid repeated calculations\n const isIopayEnvironment = useMemo(() => {\n if (typeof window === 'undefined') return false;\n return helper.env.isIopayMobile && !!window.ethereum;\n }, []);\n\n // Memoize iopay connector lookup\n const iopayConnector = useMemo(() => {\n return connectors.find(\n (connector) =>\n connector.id?.toLowerCase().includes('iopay') ||\n connector.name?.toLowerCase().includes('iopay')\n );\n }, [connectors]);\n\n // Memoized auto connect function\n const attemptAutoConnect = useCallback(async () => {\n if (!iopayConnector || !isIopayEnvironment) {\n return;\n }\n\n try {\n await connect({ connector: iopayConnector });\n } catch (error) {\n // Silently handle connection failures (user rejection, etc.)\n console.debug('Auto connect iopayWallet failed:', error);\n }\n }, [connect, iopayConnector, isIopayEnvironment]);\n\n useEffect(() => {\n // Skip if already tried, already connected, or conditions not met\n if (hasTriedAutoConnect || isConnected || !isIopayEnvironment || !iopayConnector) {\n if (!hasTriedAutoConnect && (!isIopayEnvironment || !iopayConnector)) {\n setHasTriedAutoConnect(true);\n }\n return;\n }\n\n // Small delay to ensure wallet is fully initialized\n const timer = setTimeout(async () => {\n await attemptAutoConnect();\n setHasTriedAutoConnect(true);\n }, 500);\n\n return () => clearTimeout(timer);\n }, [hasTriedAutoConnect, isConnected, isIopayEnvironment, iopayConnector, attemptAutoConnect]);\n\n return null;\n};\n\n","import { RainbowKitProvider, darkTheme, lightTheme } from '@rainbow-me/rainbowkit';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport React, { useEffect } from 'react';\nimport { WagmiProvider } from 'wagmi';\nimport { RootStore } from \"../../store\";\nimport { WalletStore } from '.';\nimport { WalletConfigStore } from './walletConfigStore'\nimport { type Chain } from \"viem/chains\";\nimport { iotex } from './type';\nimport SafeAppsSDK from '@safe-global/safe-apps-sdk';\nimport { observer } from 'mobx-react-lite';\nimport { AutoConnectIopayWallet } from './AutoConnectIopayWallet';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchInterval: 2500,\n refetchIntervalInBackground: false,\n },\n },\n});\n\nexport const WalletProvider = observer((({\n children,\n theme,\n appName,\n supportedChains,\n compatibleMode = true,\n rainbowKitProps,\n projectId\n}: {\n children: React.ReactNode,\n theme?: 'dark' | 'light',\n appName?: string,\n supportedChains?: Chain[],\n compatibleMode?: boolean,\n debug?: boolean,\n rainbowKitProps?: any,\n projectId?: string\n}) => {\n // @ts-ignore\n const walletConfig = RootStore.Get(WalletConfigStore, { args: { supportedChains: supportedChains ?? [iotex] } });\n useEffect(() => {\n if (appName) {\n walletConfig.appName = appName\n }\n if (compatibleMode != undefined) {\n walletConfig.compatibleMode = compatibleMode\n }\n if (projectId) {\n walletConfig.projectId = projectId\n }\n }, [appName, compatibleMode, projectId])\n useEffect(() => {\n const sdk = new SafeAppsSDK()\n sdk.safe.getEnvironmentInfo().then(({ origin }) => {\n if (origin) {\n walletConfig.isInSafeApp = true\n }\n })\n }, [])\n return (\n <WagmiProvider config={walletConfig.rainbowKitConfig} reconnectOnMount={walletConfig.reconnectOnMount}>\n <QueryClientProvider client={queryClient} >\n <RainbowKitProvider locale=\"en\" theme={theme == 'dark' ? darkTheme() : lightTheme()} {...rainbowKitProps}>\n {children}\n <AutoConnectIopayWallet />\n {\n compatibleMode ? <WalletConnectcompatibleMode /> : <WalletConnect />\n }\n </RainbowKitProvider>\n </QueryClientProvider>\n </WagmiProvider>\n );\n}));\n\n//There are problems with safeWallet calls in compatibility mode\nexport const WalletConnectcompatibleMode = () => {\n const wallet = RootStore.Get(WalletStore);\n wallet.use();\n return <></>;\n};\n\nexport const WalletConnect = () => {\n const wallet = RootStore.Get(WalletStore);\n wallet.useWalletClientWithoutCompatibleMode();\n wallet.use();\n return <></>;\n};\n","import { Icon } from '@iconify/react';\nimport { Button, Checkbox, Input, Popover, PopoverContent, PopoverTrigger, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow, Tooltip } from '@nextui-org/react';\nimport { observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { useEffect } from 'react';\nimport { RootStore } from \"../../../store\";\nimport { WalletStore } from \"..\";\nimport { WalletRpcStore } from '../walletPluginStore';\nimport { ToastPlugin } from '../../Toast/Toast';\n\n\nconst RpcList = observer(() => {\n const rpcStore = RootStore.Get(WalletRpcStore)\n useEffect(() => {\n rpcStore.testRpc()\n }, [])\n\n return (\n <div className='mb-3 mt-4'>\n <div className='w-full flex mb-2 mt-2'>\n <div className='flex items-center justify-center gap-2'>\n <Checkbox size='sm' isSelected={rpcStore.isAutoSelectRpc.value} onValueChange={e => rpcStore.isAutoSelectRpc.save(e)}>Auto select rpc</Checkbox>\n <Tooltip content={<div className='w-[300px]'>Once selected, if the current RPC cannot send a request, an available RPC will be automatically chosen.</div>}>\n <Icon icon=\"ph:question\" width=\"18\" height=\"18\" className='text-gray-500' />\n </Tooltip>\n </div>\n\n <Button startContent={<Icon icon=\"tabler:test-pipe\" width=\"18\" height=\"18\" />} className='ml-auto' onClick={e => {\n rpcStore.testRpc()\n }}>Test</Button>\n <Popover placement=\"bottom\" offset={20} showArrow isOpen={rpcStore.showCustomRpc} onOpenChange={(open) => rpcStore.showCustomRpc = (open)}>\n <PopoverTrigger>\n <Button color=\"primary\" startContent={<Icon icon=\"basil:add-solid\" width=\"18\" height=\"18\" />} className='ml-4'>Add custom rpc</Button>\n </PopoverTrigger>\n <PopoverContent>\n <div className=\"px-1 py-2\">\n <Input\n type=\"url\"\n className='mb-4'\n placeholder=\"https://rpc.com\"\n value={rpcStore.customRpc}\n onValueChange={(value) => {\n rpcStore.customRpc = value;\n }}\n />\n <Button color='primary' isDisabled={!rpcStore.customRpc} onClick={e => rpcStore.addCustomRpc()}>Save</Button>\n </div>\n </PopoverContent>\n </Popover>\n\n </div>\n\n <Table\n color=\"success\"\n selectionMode=\"single\"\n defaultSelectedKeys={[rpcStore.curRpc.value]}\n aria-label=\"Example static collection table\"\n >\n <TableHeader>\n <TableColumn>RPC Server Address</TableColumn>\n <TableColumn align='center'>Score</TableColumn>\n <TableColumn align='center'>Height</TableColumn>\n <TableColumn align='center'>Latency</TableColumn>\n <TableColumn align='center'>Action</TableColumn>\n </TableHeader>\n <TableBody >\n {\n rpcStore.rpcList?.value?.map((item, index) => {\n return <TableRow className='cursor-pointer' key={item.name} onClick={e => {\n rpcStore.curRpc.save(item.name)\n RootStore.Get(ToastPlugin).success('Set rpc success')\n }} >\n <TableCell >{item.name}</TableCell>\n <TableCell >{rpcStore.scoreIcon(item.latency)}</TableCell>\n <TableCell>{item.height}</TableCell>\n <TableCell className={rpcStore.latencyColor(item.latency)}>{item.latency}s</TableCell>\n <TableCell>\n <div className=\"relative flex items-center gap-2\">\n <Tooltip content=\"Add to metamask\">\n <span className=\"text-lg text-danger cursor-pointer active:opacity-50\" onClick={e => {\n e.stopPropagation()\n rpcStore.addToMetamask(item.name)\n }}>\n <Icon icon=\"logos:metamask-icon\" width=\"18\" height=\"18\" />\n </span>\n </Tooltip>\n {\n item.custom && <Tooltip content=\"Remove\">\n <span className=\"text-lg text-danger cursor-pointer active:opacity-50\" onClick={e => {\n e.stopPropagation()\n rpcStore.removeRpc(item.name)\n }}>\n <Icon icon=\"solar:trash-bin-minimalistic-broken\" width=\"20\" height=\"20\" />\n </span>\n </Tooltip>\n }\n </div>\n </TableCell>\n </TableRow>\n })\n }\n </TableBody>\n </Table>\n </div>\n );\n});\n\nexport { RpcList };\n"]}
1
+ {"version":3,"sources":["../module/Wallet/type.ts","../module/Wallet/AutoConnectIopayWallet.tsx","../module/Wallet/provider.tsx","../module/Wallet/RpcList/index.tsx"],"names":["_iotex","_iotexTestnet","useEffect","React","observer"],"mappings":"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","file":"wallet.mjs","sourcesContent":["import { iotex as _iotex, iotexTestnet as _iotexTestnet, type Chain } from \"viem/chains\";\n\nexport type NetworkObject = {\n name: string;\n chainId: number;\n rpcUrl: string;\n logoUrl: string;\n explorerUrl: string;\n explorerName: string;\n nativeCoin: string;\n type: 'mainnet' | 'testnet';\n};\n\nexport type WalletTransactionHistoryType = {\n chainId: number;\n tx?: string;\n msg: string;\n timestamp: number;\n type: string;\n status: 'loading' | 'success' | 'fail';\n};\n\nexport type AddressMode = 'io' | '0x';\n\nexport const iotex = {\n iconUrl: 'https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png',\n ..._iotex,\n} as Chain;\nexport const iotexTestnet = {\n iconUrl: 'https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png',\n ..._iotexTestnet,\n} as Chain;;","import { useEffect, useRef } from 'react';\nimport { useConnect, useAccount } from 'wagmi';\nimport { helper } from '../../utils';\n\n// Auto connect iopayWallet when available\nexport const AutoConnectIopayWallet = () => {\n const { isConnected } = useAccount();\n const { connect, connectors } = useConnect();\n const hasTriedRef = useRef(false);\n\n useEffect(() => {\n // Skip if already tried or connected\n if (hasTriedRef.current || isConnected) return;\n\n // Check if we're in iopay environment\n const isIopayEnvironment = helper.env.isIopayMobile() && typeof window !== 'undefined' && !!window.ethereum;\n if (!isIopayEnvironment) {\n hasTriedRef.current = true;\n return;\n }\n\n // Find iopay connector\n const iopayConnector = connectors.find(connector =>\n connector.id?.toLowerCase().includes('iopay') ||\n connector.name?.toLowerCase().includes('iopay')\n );\n\n if (!iopayConnector) {\n hasTriedRef.current = true;\n return;\n }\n\n // Auto connect with small delay\n const timer = setTimeout(() => {\n try {\n connect({ connector: iopayConnector });\n } catch (error) {\n console.debug('Auto connect iopayWallet failed:', error);\n }\n hasTriedRef.current = true;\n }, 500);\n\n return () => clearTimeout(timer);\n }, [isConnected, connect, connectors]);\n\n return null;\n};\n\n","import { RainbowKitProvider, darkTheme, lightTheme } from '@rainbow-me/rainbowkit';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport React, { useEffect } from 'react';\nimport { WagmiProvider } from 'wagmi';\nimport { RootStore } from \"../../store\";\nimport { WalletStore } from '.';\nimport { WalletConfigStore } from './walletConfigStore'\nimport { type Chain } from \"viem/chains\";\nimport { iotex } from './type';\nimport SafeAppsSDK from '@safe-global/safe-apps-sdk';\nimport { observer } from 'mobx-react-lite';\nimport { AutoConnectIopayWallet } from './AutoConnectIopayWallet';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchInterval: 2500,\n refetchIntervalInBackground: false,\n },\n },\n});\n\nexport const WalletProvider = observer((({\n children,\n theme,\n appName,\n supportedChains,\n compatibleMode = true,\n rainbowKitProps,\n projectId\n}: {\n children: React.ReactNode,\n theme?: 'dark' | 'light',\n appName?: string,\n supportedChains?: Chain[],\n compatibleMode?: boolean,\n debug?: boolean,\n rainbowKitProps?: any,\n projectId?: string\n}) => {\n // @ts-ignore\n const walletConfig = RootStore.Get(WalletConfigStore, { args: { supportedChains: supportedChains ?? [iotex] } });\n useEffect(() => {\n if (appName) {\n walletConfig.appName = appName\n }\n if (compatibleMode != undefined) {\n walletConfig.compatibleMode = compatibleMode\n }\n if (projectId) {\n walletConfig.projectId = projectId\n }\n }, [appName, compatibleMode, projectId])\n useEffect(() => {\n const sdk = new SafeAppsSDK()\n sdk.safe.getEnvironmentInfo().then(({ origin }) => {\n if (origin) {\n walletConfig.isInSafeApp = true\n }\n })\n }, [])\n return (\n <WagmiProvider config={walletConfig.rainbowKitConfig} reconnectOnMount={walletConfig.reconnectOnMount}>\n <QueryClientProvider client={queryClient} >\n <RainbowKitProvider locale=\"en\" theme={theme == 'dark' ? darkTheme() : lightTheme()} {...rainbowKitProps}>\n {children}\n <AutoConnectIopayWallet />\n {\n compatibleMode ? <WalletConnectcompatibleMode /> : <WalletConnect />\n }\n </RainbowKitProvider>\n </QueryClientProvider>\n </WagmiProvider>\n );\n}));\n\n//There are problems with safeWallet calls in compatibility mode\nexport const WalletConnectcompatibleMode = () => {\n const wallet = RootStore.Get(WalletStore);\n wallet.use();\n return <></>;\n};\n\nexport const WalletConnect = () => {\n const wallet = RootStore.Get(WalletStore);\n wallet.useWalletClientWithoutCompatibleMode();\n wallet.use();\n return <></>;\n};\n","import { Icon } from '@iconify/react';\nimport { Button, Checkbox, Input, Popover, PopoverContent, PopoverTrigger, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow, Tooltip } from '@nextui-org/react';\nimport { observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { useEffect } from 'react';\nimport { RootStore } from \"../../../store\";\nimport { WalletStore } from \"..\";\nimport { WalletRpcStore } from '../walletPluginStore';\nimport { ToastPlugin } from '../../Toast/Toast';\n\n\nconst RpcList = observer(() => {\n const rpcStore = RootStore.Get(WalletRpcStore)\n useEffect(() => {\n rpcStore.testRpc()\n }, [])\n\n return (\n <div className='mb-3 mt-4'>\n <div className='w-full flex mb-2 mt-2'>\n <div className='flex items-center justify-center gap-2'>\n <Checkbox size='sm' isSelected={rpcStore.isAutoSelectRpc.value} onValueChange={e => rpcStore.isAutoSelectRpc.save(e)}>Auto select rpc</Checkbox>\n <Tooltip content={<div className='w-[300px]'>Once selected, if the current RPC cannot send a request, an available RPC will be automatically chosen.</div>}>\n <Icon icon=\"ph:question\" width=\"18\" height=\"18\" className='text-gray-500' />\n </Tooltip>\n </div>\n\n <Button startContent={<Icon icon=\"tabler:test-pipe\" width=\"18\" height=\"18\" />} className='ml-auto' onClick={e => {\n rpcStore.testRpc()\n }}>Test</Button>\n <Popover placement=\"bottom\" offset={20} showArrow isOpen={rpcStore.showCustomRpc} onOpenChange={(open) => rpcStore.showCustomRpc = (open)}>\n <PopoverTrigger>\n <Button color=\"primary\" startContent={<Icon icon=\"basil:add-solid\" width=\"18\" height=\"18\" />} className='ml-4'>Add custom rpc</Button>\n </PopoverTrigger>\n <PopoverContent>\n <div className=\"px-1 py-2\">\n <Input\n type=\"url\"\n className='mb-4'\n placeholder=\"https://rpc.com\"\n value={rpcStore.customRpc}\n onValueChange={(value) => {\n rpcStore.customRpc = value;\n }}\n />\n <Button color='primary' isDisabled={!rpcStore.customRpc} onClick={e => rpcStore.addCustomRpc()}>Save</Button>\n </div>\n </PopoverContent>\n </Popover>\n\n </div>\n\n <Table\n color=\"success\"\n selectionMode=\"single\"\n defaultSelectedKeys={[rpcStore.curRpc.value]}\n aria-label=\"Example static collection table\"\n >\n <TableHeader>\n <TableColumn>RPC Server Address</TableColumn>\n <TableColumn align='center'>Score</TableColumn>\n <TableColumn align='center'>Height</TableColumn>\n <TableColumn align='center'>Latency</TableColumn>\n <TableColumn align='center'>Action</TableColumn>\n </TableHeader>\n <TableBody >\n {\n rpcStore.rpcList?.value?.map((item, index) => {\n return <TableRow className='cursor-pointer' key={item.name} onClick={e => {\n rpcStore.curRpc.save(item.name)\n RootStore.Get(ToastPlugin).success('Set rpc success')\n }} >\n <TableCell >{item.name}</TableCell>\n <TableCell >{rpcStore.scoreIcon(item.latency)}</TableCell>\n <TableCell>{item.height}</TableCell>\n <TableCell className={rpcStore.latencyColor(item.latency)}>{item.latency}s</TableCell>\n <TableCell>\n <div className=\"relative flex items-center gap-2\">\n <Tooltip content=\"Add to metamask\">\n <span className=\"text-lg text-danger cursor-pointer active:opacity-50\" onClick={e => {\n e.stopPropagation()\n rpcStore.addToMetamask(item.name)\n }}>\n <Icon icon=\"logos:metamask-icon\" width=\"18\" height=\"18\" />\n </span>\n </Tooltip>\n {\n item.custom && <Tooltip content=\"Remove\">\n <span className=\"text-lg text-danger cursor-pointer active:opacity-50\" onClick={e => {\n e.stopPropagation()\n rpcStore.removeRpc(item.name)\n }}>\n <Icon icon=\"solar:trash-bin-minimalistic-broken\" width=\"20\" height=\"20\" />\n </span>\n </Tooltip>\n }\n </div>\n </TableCell>\n </TableRow>\n })\n }\n </TableBody>\n </Table>\n </div>\n );\n});\n\nexport { RpcList };\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dappworks/kit",
3
- "version": "0.5.42",
3
+ "version": "0.5.44",
4
4
  "description": "",
5
5
  "main": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.mts",
@@ -173,4 +173,4 @@
173
173
  "reflect-metadata": "^0.2.2",
174
174
  "virtua": "0.33.7"
175
175
  }
176
- }
176
+ }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../lib/helper.ts"],"names":["_a","_b"],"mappings":"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","file":"chunk-VDDGCMCB.mjs","sourcesContent":["import BN, { BigNumber } from \"bignumber.js\";\nimport JSONFormat from \"json-format\";\nimport { _ } from \"./lodash\";\nimport copy from \"copy-to-clipboard\";\nimport numeral from \"numeral\";\nimport { from } from \"@iotexproject/iotex-address-ts\";\n\nconst valMap = {\n undefined: \"\",\n null: \"\",\n false: false,\n};\n\nexport const helper = {\n env: {\n isBrower: typeof window === \"undefined\" ? false : true,\n isIopayMobile: global?.navigator?.userAgent && (global?.navigator?.userAgent.includes(\"IoPayAndroid\") || global?.navigator?.userAgent.includes(\"IoPayiOs\")),\n onBrowser(func) {\n if (this.isBrowser()) {\n func();\n }\n },\n isPc() {\n const userAgentInfo = global?.navigator?.userAgent;\n const Agents = [\"Android\", \"iPhone\", \"SymbianOS\", \"Windows Phone\", \"iPad\", \"iPod\"];\n let flag = true;\n for (let v = 0; v < Agents.length; v++) {\n if (userAgentInfo?.indexOf(Agents[v] || \"\") > 0) {\n flag = false;\n break;\n }\n }\n return flag;\n },\n isInIframe() {\n try {\n return window.self !== window.top;\n } catch (e) {\n return true;\n }\n },\n },\n promise: {\n async sleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n },\n async runAsync<T, U = Error>(promise: Promise<T>): Promise<[U | null, T | null]> {\n return promise.then<[null, T]>((data: T) => [null, data]).catch<[U, null]>((err) => [err, null]);\n },\n },\n object: {\n crawlObject(object, options) {\n const newObj = JSON.parse(JSON.stringify(object));\n return helper.object.crawl(newObj, options);\n },\n crawl(object, options) {\n Object.keys(object).forEach((i) => {\n if (typeof object[i] === \"object\") {\n helper.object.crawl(object[i], options);\n } else {\n const handler = options[typeof object[i]];\n if (handler) {\n object[i] = handler(object[i]);\n }\n }\n });\n return object;\n },\n },\n json: {\n isJsonString(str: string) {\n if (!str || typeof str !== \"string\") return false;\n if (!str?.includes(\"{\")) return false;\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n },\n safeParse(val: any) {\n try {\n return JSON.parse(val);\n } catch (error) {\n return val;\n }\n },\n },\n deepAssign(target, ...sources) {\n sources.forEach((source) => {\n Object.keys(source).forEach((key) => {\n let descriptor = Object.getOwnPropertyDescriptor(source, key);\n if (descriptor && descriptor?.get) {\n return Object.defineProperty(target, key, descriptor);\n }\n const targetValue = target[key];\n let sourceValue = source[key];\n if (helper.isObject(targetValue) && helper.isObject(sourceValue)) {\n try {\n target[key] = helper.deepAssign(targetValue, sourceValue);\n } catch (e) {\n target[key] = Object.assign(targetValue, sourceValue);\n }\n } else {\n target[key] = sourceValue;\n }\n });\n });\n return target;\n },\n isObject(value) {\n return value != null && typeof value === \"object\";\n },\n deepMerge(obj, newObj) {\n const newVal = _.mergeWith(obj, newObj, (...args) => {\n const [objValue, srcValue] = args;\n if (typeof srcValue === \"object\") {\n return helper.deepMerge(objValue, srcValue);\n }\n return srcValue || valMap[srcValue];\n });\n return newVal;\n },\n img: {\n parse(src: string | undefined) {\n if (!src) return \"/img-404.svg\";\n if (src?.startsWith(\"ipfs\")) {\n return \"https://ipfs.io/ipfs/\" + src.split(\"://\")[1];\n }\n return src;\n },\n },\n string: {\n copy(str: string) {\n copy(str);\n },\n fristUpper(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n },\n firstUpperCase(str: string) {\n return str.replace(/^\\S/, (s) => s.toUpperCase());\n },\n toFixString(str, length) {\n if (str && str.length > length) {\n return str.substr(0, length) + \"...\";\n } else {\n return str;\n }\n },\n truncate(fullStr = \"\", strLen, separator) {\n if (fullStr.length <= strLen) return fullStr;\n\n separator = separator || \"...\";\n\n var sepLen = separator.length,\n charsToShow = strLen - sepLen,\n frontChars = Math.ceil(charsToShow / 2),\n backChars = Math.floor(charsToShow / 2);\n\n return fullStr.substr(0, frontChars) + separator + fullStr.substr(fullStr.length - backChars);\n },\n validAbi(abi: string): { abi: any[]; address: string } {\n try {\n JSON.parse(abi);\n const _abi = helper.json.safeParse(abi);\n if (!_abi) {\n return { abi: [], address: \"\" };\n }\n if (Array.isArray(_abi)) {\n return { abi: _abi, address: \"\" };\n } else if (_abi.abi && _abi.address) {\n return { abi: _abi.abi, address: _abi.address };\n } else if (_abi.abi && !_abi.addresses) {\n return { abi: _abi.abi, address: \"\" };\n }\n return { abi: [], address: \"\" };\n } catch (error) {\n return { abi: [], address: \"\" };\n }\n },\n random(count: number) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let result = \"\";\n for (let i = 0; i < count; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return result;\n },\n },\n download: {\n downloadByBlob(name: string, blob: Blob) {\n const a = document.createElement(\"a\");\n const href = window.URL.createObjectURL(blob);\n a.href = href;\n a.download = name;\n a.click();\n },\n downloadJSON(name: string, jsonObj: object) {\n try {\n const jsonStr: string = JSONFormat(jsonObj);\n const blob = new Blob([jsonStr], { type: \"application/json\" });\n this.downloadByBlob(name + \".json\", blob);\n } catch (error) {\n console.error(error);\n }\n },\n },\n number: {\n countNonZeroNumbers: (str: string) => {\n let index = 0;\n const length = str.length;\n for (; index < length && (str[index] === \"0\" || str[index] === \".\"); index += 1);\n return length - index - Number(str.includes(\".\"));\n },\n numberWithCommas(num: number) {\n return num.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n },\n getBN: (value: number | string | BN) => {\n return value instanceof BN ? value : typeof value === \"string\" ? new BN(Number(value)) : new BN(value);\n },\n toPrecisionFloor: (str: number | string, options?: { decimals?: number; format?: string; toLocalString?: boolean }) => {\n const { decimals = 6, format = \"\", toLocalString = false } = options || {};\n if (!str || isNaN(Number(str))) return \"\";\n\n if (helper.number.countNonZeroNumbers(String(str)) <= decimals) return String(str);\n const numStr = new BN(str).toFixed();\n let result = \"\";\n let index = 0;\n const numLength = numStr.length;\n\n for (; numStr[index] === \"0\" && index < numLength; index += 1);\n\n if (index === numLength) return \"0\";\n\n if (numStr[index] === \".\") {\n // number < 0\n result = \"0\";\n for (; (numStr[index] === \"0\" || numStr[index] === \".\") && index < numLength; index += 1) {\n result = result + numStr[index];\n }\n }\n let resultNumLength = 0;\n for (; index < numLength && (resultNumLength < decimals || !result.includes(\".\")); index += 1) {\n result = result + numStr[index];\n\n if (numStr[index] !== \".\") resultNumLength += 1;\n }\n if (format) {\n return numeral(Number(result)).format(format);\n }\n\n if (toLocalString) {\n return helper.number.numberWithCommas(Number(new BN(result).toFixed()));\n }\n\n return new BN(result).toFixed();\n },\n\n //format: '0,0'\n warpBigNumber(value: string, decimals = 18, options?: { format?: string; fallback?: string; min?: number }) {\n const { format = \"0.0\", fallback = \"0.000\", min } = options || {};\n if (!value) {\n return {\n value: \"...\",\n format: \"...\",\n originFormat: \"...\",\n decimals: \"0\",\n // isZero: true,\n };\n }\n const BigNumberResponse = { value: new BigNumber(value), decimals };\n return {\n value: BigNumberResponse.value.toFixed(0),\n originFormat: BigNumberResponse.value.div(10 ** decimals).toFixed(),\n format: helper.number.numberFormat(BigNumberResponse.value.div(10 ** decimals).toFixed(), format, { fallback, min }),\n decimals: String(BigNumberResponse.decimals),\n // isZero: BigNumberResponse.value.isZero(),\n };\n },\n //http://numeraljs.com/ format params does not need to deal with decimal places\n //format: '$0,0' '0a' '0,0' '0,0$'\n numberFormat(str: string | number, format: string = \"0,0\", options: { min?: number; fallback?: string } = {}): string {\n const { fallback = \"0.00\" } = options || {};\n\n if (!str || isNaN(Number(str))) return fallback;\n const numStr = new BigNumber(str).toFixed();\n const countNonZeroNumbers = (_str: string) => {\n const decimalPointIndex = _str.indexOf(\".\");\n if (decimalPointIndex === -1) {\n return 0;\n }\n const decimalPart = _str.substring(decimalPointIndex + 1);\n let trailingZerosCount = 0;\n for (let i = 0; i < decimalPart.length; i++) {\n if (decimalPart[i] === \"0\") {\n trailingZerosCount++;\n } else {\n break;\n }\n }\n return trailingZerosCount;\n };\n\n const fractionDigits = countNonZeroNumbers(format);\n const numberFractionDigits = countNonZeroNumbers(numStr);\n if (options?.min) {\n if (new BigNumber(numStr).isLessThan(new BigNumber(options?.min || 0))) {\n return `< ${numeral(options?.min).format(format)}`;\n }\n }\n const fullStr = new BigNumber(numStr).toFixed();\n let preStr = numeral(fullStr.split(\".\")[0]).format(format.split(\".\")[0]);\n const fractionStr = fullStr.split(\".\")?.[1]?.slice(0, fractionDigits + numberFractionDigits);\n\n if (numberFractionDigits >= fractionDigits) {\n return (preStr + \".\" + fractionStr).replace(/\\.?0+$/, \"\");\n }\n\n if (fractionStr?.[fractionDigits - 1] == \"9\") {\n return (preStr + \".\" + fractionStr.slice(0, fractionDigits - 1) + \"9\").replace(/\\.?0+$/, \"\");\n }\n\n const resultStr = numeral(new BigNumber(numStr).toString()).format(format);\n return resultStr.replace(/\\.?0+$/, \"\");\n },\n },\n address: {\n convertAddress: (addressMode: \"io\" | \"0x\", address: string = \"\"): string => {\n try {\n if (addressMode == \"0x\" && helper.address.validateIoAddress(address)) {\n return from(address).stringEth();\n }\n if (addressMode == \"io\" && helper.address.validateEthAddress(address)) {\n return from(address).string();\n }\n } catch (error) {}\n return address;\n },\n validateEthAddress: (address: string) => /^0x[a-fA-F0-9]{40}$/.test(address),\n validateIoAddress: (address: string) => /^io[a-zA-Z0-9]{39}$/.test(address),\n validateAddress: (address: string) => helper.address.validateEthAddress(address) || helper.address.validateIoAddress(address),\n },\n};\n"]}