@iota/dapp-kit 0.2.0 → 0.3.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.
- package/CHANGELOG.md +13 -0
- package/README.md +14 -12
- package/dist/cjs/components/AccountDropdownMenu.css +26 -54
- package/dist/cjs/components/AccountDropdownMenu.css.css +18 -27
- package/dist/cjs/components/AccountDropdownMenu.css.css.map +3 -3
- package/dist/cjs/components/AccountDropdownMenu.css.d.ts +0 -1
- package/dist/cjs/components/AccountDropdownMenu.css.js +4 -6
- package/dist/cjs/components/AccountDropdownMenu.css.js.map +2 -2
- package/dist/cjs/components/AccountDropdownMenu.css.map +3 -3
- package/dist/cjs/components/AccountDropdownMenu.d.ts +3 -1
- package/dist/cjs/components/AccountDropdownMenu.js +25 -21
- package/dist/cjs/components/AccountDropdownMenu.js.map +3 -3
- package/dist/cjs/components/ConnectButton.css +181 -190
- package/dist/cjs/components/ConnectButton.css.map +3 -3
- package/dist/cjs/components/ConnectButton.d.ts +5 -3
- package/dist/cjs/components/ConnectButton.js +344 -669
- package/dist/cjs/components/ConnectButton.js.map +4 -4
- package/dist/cjs/components/IotaClientProvider.d.ts +0 -1
- package/dist/cjs/components/WalletProvider.d.ts +3 -3
- package/dist/cjs/components/WalletProvider.js +107 -152
- package/dist/cjs/components/WalletProvider.js.map +3 -3
- package/dist/cjs/components/connect-modal/ConnectModal.css +214 -172
- package/dist/cjs/components/connect-modal/ConnectModal.css.css +69 -32
- package/dist/cjs/components/connect-modal/ConnectModal.css.css.map +3 -3
- package/dist/cjs/components/connect-modal/ConnectModal.css.d.ts +5 -1
- package/dist/cjs/components/connect-modal/ConnectModal.css.js +15 -7
- package/dist/cjs/components/connect-modal/ConnectModal.css.js.map +2 -2
- package/dist/cjs/components/connect-modal/ConnectModal.css.map +3 -3
- package/dist/cjs/components/connect-modal/ConnectModal.js +411 -707
- package/dist/cjs/components/connect-modal/ConnectModal.js.map +4 -4
- package/dist/cjs/components/connect-modal/InfoSection.css +7 -11
- package/dist/cjs/components/connect-modal/InfoSection.css.css.map +1 -1
- package/dist/cjs/components/connect-modal/InfoSection.css.map +3 -3
- package/dist/cjs/components/connect-modal/InfoSection.js +1 -1
- package/dist/cjs/components/connect-modal/InfoSection.js.map +2 -2
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.css +145 -0
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.css +32 -0
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.css.map +7 -0
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.d.ts +5 -0
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.js +35 -0
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.js.map +7 -0
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.map +7 -0
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.d.ts +8 -0
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.js +173 -0
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.js.map +7 -0
- package/dist/cjs/components/connect-modal/views/GetTheWallet.css.css.map +1 -1
- package/dist/cjs/components/connect-modal/views/GetTheWallet.css.map +1 -1
- package/dist/cjs/components/connect-modal/views/GetTheWallet.js +12 -391
- package/dist/cjs/components/connect-modal/views/GetTheWallet.js.map +2 -2
- package/dist/cjs/components/connect-modal/views/GettingStarted.css +144 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.css.css +23 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.css.css.map +7 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.css.d.ts +3 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.css.js +31 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.css.js.map +7 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.css.map +7 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.d.ts +1 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.js +172 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.js.map +7 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css +95 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.css +17 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.css.map +7 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.d.ts +2 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.js +29 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.js.map +7 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.map +7 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.d.ts +1 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.js +135 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.js.map +7 -0
- package/dist/cjs/components/connect-modal/views/index.css +115 -124
- package/dist/cjs/components/connect-modal/views/index.css.map +3 -3
- package/dist/cjs/components/connect-modal/views/index.d.ts +2 -1
- package/dist/cjs/components/connect-modal/views/index.js +136 -640
- package/dist/cjs/components/connect-modal/views/index.js.map +4 -4
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.css +10 -22
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.css +2 -5
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.css.map +3 -3
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.js.map +1 -1
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.map +3 -3
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.d.ts +4 -4
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.js +61 -38
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.js.map +4 -4
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css +8 -17
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.css +8 -17
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.css.map +3 -3
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.d.ts +0 -1
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.js +2 -4
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.js.map +2 -2
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.map +3 -3
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.js +5 -32
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.js.map +4 -4
- package/dist/cjs/components/icons/BackIcon.d.ts +2 -0
- package/dist/cjs/components/icons/BackIcon.js +36 -0
- package/dist/cjs/components/icons/BackIcon.js.map +7 -0
- package/dist/cjs/components/icons/IotaIcon.js +12 -391
- package/dist/cjs/components/icons/IotaIcon.js.map +2 -2
- package/dist/cjs/components/styling/InjectedThemeStyles.js +2 -0
- package/dist/cjs/components/styling/InjectedThemeStyles.js.map +2 -2
- package/dist/cjs/components/styling/StyleMarker.css +1 -16
- package/dist/cjs/components/styling/StyleMarker.css.css +1 -16
- package/dist/cjs/components/styling/StyleMarker.css.css.map +3 -3
- package/dist/cjs/components/styling/StyleMarker.css.map +3 -3
- package/dist/cjs/components/styling/StyleMarker.d.ts +0 -1
- package/dist/cjs/components/styling/StyleMarker.js +4 -4
- package/dist/cjs/components/styling/StyleMarker.js.map +3 -3
- package/dist/cjs/components/ui/Button.css.css.map +1 -1
- package/dist/cjs/components/ui/Button.css.map +1 -1
- package/dist/cjs/components/ui/Button.d.ts +1 -1
- package/dist/cjs/components/ui/Heading.css.css.map +1 -1
- package/dist/cjs/components/ui/Heading.css.map +1 -1
- package/dist/cjs/components/ui/Heading.d.ts +0 -1
- package/dist/cjs/components/ui/IconButton.css.css.map +1 -1
- package/dist/cjs/components/ui/IconButton.css.map +1 -1
- package/dist/cjs/components/ui/IconButton.d.ts +1 -1
- package/dist/cjs/components/ui/Text.css +7 -11
- package/dist/cjs/components/ui/Text.css.css +7 -11
- package/dist/cjs/components/ui/Text.css.css.map +3 -3
- package/dist/cjs/components/ui/Text.css.d.ts +0 -3
- package/dist/cjs/components/ui/Text.css.js +1 -1
- package/dist/cjs/components/ui/Text.css.js.map +2 -2
- package/dist/cjs/components/ui/Text.css.map +3 -3
- package/dist/cjs/components/ui/Text.d.ts +0 -1
- package/dist/cjs/components/ui/Text.js +1 -1
- package/dist/cjs/components/ui/Text.js.map +2 -2
- package/dist/cjs/constants/styleDataAttribute.js.map +1 -1
- package/dist/cjs/constants/walletDefaults.d.ts +2 -2
- package/dist/cjs/constants/walletDefaults.js +4 -5
- package/dist/cjs/constants/walletDefaults.js.map +2 -2
- package/dist/cjs/constants/walletMutationKeys.d.ts +3 -2
- package/dist/cjs/constants/walletMutationKeys.js +4 -3
- package/dist/cjs/constants/walletMutationKeys.js.map +2 -2
- package/dist/cjs/contexts/walletContext.d.ts +1 -2
- package/dist/cjs/hooks/useIotaClientInfiniteQuery.js.map +2 -2
- package/dist/cjs/hooks/useIotaClientQuery.js +3 -1
- package/dist/cjs/hooks/useIotaClientQuery.js.map +2 -2
- package/dist/cjs/hooks/wallet/useAutoConnectWallet.js +17 -7
- package/dist/cjs/hooks/wallet/useAutoConnectWallet.js.map +2 -2
- package/dist/cjs/hooks/wallet/useConnectWallet.js +10 -4
- package/dist/cjs/hooks/wallet/useConnectWallet.js.map +2 -2
- package/dist/cjs/hooks/wallet/useCurrentWallet.d.ts +3 -0
- package/dist/cjs/hooks/wallet/useCurrentWallet.js +7 -3
- package/dist/cjs/hooks/wallet/useCurrentWallet.js.map +2 -2
- package/dist/cjs/hooks/wallet/useDisconnectWallet.js +11 -6
- package/dist/cjs/hooks/wallet/useDisconnectWallet.js.map +2 -2
- package/dist/cjs/hooks/wallet/useReportTransactionEffects.d.ts +15 -0
- package/dist/cjs/hooks/wallet/{useSignTransactionBlock.js → useReportTransactionEffects.js} +41 -37
- package/dist/cjs/hooks/wallet/useReportTransactionEffects.js.map +7 -0
- package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.d.ts +29 -0
- package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.js +252 -0
- package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.js.map +7 -0
- package/dist/cjs/hooks/wallet/useSignPersonalMessage.js +21 -27
- package/dist/cjs/hooks/wallet/useSignPersonalMessage.js.map +2 -2
- package/dist/cjs/hooks/wallet/useSignTransaction.d.ts +18 -0
- package/dist/cjs/hooks/wallet/{useSignAndExecuteTransactionBlock.js → useSignTransaction.js} +86 -46
- package/dist/cjs/hooks/wallet/useSignTransaction.js.map +7 -0
- package/dist/cjs/hooks/wallet/useSwitchAccount.js +11 -6
- package/dist/cjs/hooks/wallet/useSwitchAccount.js.map +2 -2
- package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.js +45 -33
- package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.js.map +2 -2
- package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js +7 -3
- package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js.map +2 -2
- package/dist/cjs/hooks/wallet/useWalletsChanged.d.ts +1 -1
- package/dist/cjs/hooks/wallet/useWalletsChanged.js +7 -6
- package/dist/cjs/hooks/wallet/useWalletsChanged.js.map +2 -2
- package/dist/cjs/index.css +232 -241
- package/dist/cjs/index.css.map +3 -3
- package/dist/cjs/index.d.ts +4 -3
- package/dist/cjs/index.js +816 -1042
- package/dist/cjs/index.js.map +4 -4
- package/dist/cjs/themes/lightTheme.js +19 -19
- package/dist/cjs/themes/lightTheme.js.map +1 -1
- package/dist/cjs/themes/themeContract.js.map +1 -1
- package/dist/cjs/types.d.ts +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/utils/assertUnreachable.js.map +1 -1
- package/dist/cjs/utils/walletUtils.d.ts +2 -2
- package/dist/cjs/utils/walletUtils.js +2 -2
- package/dist/cjs/utils/walletUtils.js.map +2 -2
- package/dist/cjs/walletStore.d.ts +3 -2
- package/dist/cjs/walletStore.js +8 -4
- package/dist/cjs/walletStore.js.map +2 -2
- package/dist/esm/components/AccountDropdownMenu.css +26 -54
- package/dist/esm/components/AccountDropdownMenu.css.css +18 -27
- package/dist/esm/components/AccountDropdownMenu.css.css.map +3 -3
- package/dist/esm/components/AccountDropdownMenu.css.d.ts +0 -1
- package/dist/esm/components/AccountDropdownMenu.css.js +4 -6
- package/dist/esm/components/AccountDropdownMenu.css.js.map +2 -2
- package/dist/esm/components/AccountDropdownMenu.css.map +3 -3
- package/dist/esm/components/AccountDropdownMenu.d.ts +3 -1
- package/dist/esm/components/AccountDropdownMenu.js +25 -21
- package/dist/esm/components/AccountDropdownMenu.js.map +3 -3
- package/dist/esm/components/ConnectButton.css +181 -190
- package/dist/esm/components/ConnectButton.css.map +3 -3
- package/dist/esm/components/ConnectButton.d.ts +5 -3
- package/dist/esm/components/ConnectButton.js +344 -669
- package/dist/esm/components/ConnectButton.js.map +4 -4
- package/dist/esm/components/IotaClientProvider.d.ts +0 -1
- package/dist/esm/components/WalletProvider.d.ts +3 -3
- package/dist/esm/components/WalletProvider.js +106 -151
- package/dist/esm/components/WalletProvider.js.map +3 -3
- package/dist/esm/components/connect-modal/ConnectModal.css +214 -172
- package/dist/esm/components/connect-modal/ConnectModal.css.css +69 -32
- package/dist/esm/components/connect-modal/ConnectModal.css.css.map +3 -3
- package/dist/esm/components/connect-modal/ConnectModal.css.d.ts +5 -1
- package/dist/esm/components/connect-modal/ConnectModal.css.js +15 -7
- package/dist/esm/components/connect-modal/ConnectModal.css.js.map +2 -2
- package/dist/esm/components/connect-modal/ConnectModal.css.map +3 -3
- package/dist/esm/components/connect-modal/ConnectModal.js +407 -703
- package/dist/esm/components/connect-modal/ConnectModal.js.map +4 -4
- package/dist/esm/components/connect-modal/InfoSection.css +7 -11
- package/dist/esm/components/connect-modal/InfoSection.css.css.map +1 -1
- package/dist/esm/components/connect-modal/InfoSection.css.map +3 -3
- package/dist/esm/components/connect-modal/InfoSection.js +1 -1
- package/dist/esm/components/connect-modal/InfoSection.js.map +2 -2
- package/dist/esm/components/connect-modal/views/ConnectionStatus.css +145 -0
- package/dist/esm/components/connect-modal/views/ConnectionStatus.css.css +32 -0
- package/dist/esm/components/connect-modal/views/ConnectionStatus.css.css.map +7 -0
- package/dist/esm/components/connect-modal/views/ConnectionStatus.css.d.ts +5 -0
- package/dist/esm/components/connect-modal/views/ConnectionStatus.css.js +14 -0
- package/dist/esm/components/connect-modal/views/ConnectionStatus.css.js.map +7 -0
- package/dist/esm/components/connect-modal/views/ConnectionStatus.css.map +7 -0
- package/dist/esm/components/connect-modal/views/ConnectionStatus.d.ts +8 -0
- package/dist/esm/components/connect-modal/views/ConnectionStatus.js +140 -0
- package/dist/esm/components/connect-modal/views/ConnectionStatus.js.map +7 -0
- package/dist/esm/components/connect-modal/views/GetTheWallet.css.css.map +1 -1
- package/dist/esm/components/connect-modal/views/GetTheWallet.css.map +1 -1
- package/dist/esm/components/connect-modal/views/GetTheWallet.js +12 -391
- package/dist/esm/components/connect-modal/views/GetTheWallet.js.map +2 -2
- package/dist/esm/components/connect-modal/views/GettingStarted.css +144 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.css.css +23 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.css.css.map +7 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.css.d.ts +3 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.css.js +10 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.css.js.map +7 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.css.map +7 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.d.ts +1 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.js +139 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.js.map +7 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.css +95 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.css +17 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.css.map +7 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.d.ts +2 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.js +8 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.js.map +7 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.map +7 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.d.ts +1 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.js +102 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.js.map +7 -0
- package/dist/esm/components/connect-modal/views/index.css +115 -124
- package/dist/esm/components/connect-modal/views/index.css.map +3 -3
- package/dist/esm/components/connect-modal/views/index.d.ts +2 -1
- package/dist/esm/components/connect-modal/views/index.js +141 -645
- package/dist/esm/components/connect-modal/views/index.js.map +4 -4
- package/dist/esm/components/connect-modal/wallet-list/WalletList.css +10 -22
- package/dist/esm/components/connect-modal/wallet-list/WalletList.css.css +2 -5
- package/dist/esm/components/connect-modal/wallet-list/WalletList.css.css.map +3 -3
- package/dist/esm/components/connect-modal/wallet-list/WalletList.css.js.map +1 -1
- package/dist/esm/components/connect-modal/wallet-list/WalletList.css.map +3 -3
- package/dist/esm/components/connect-modal/wallet-list/WalletList.d.ts +4 -4
- package/dist/esm/components/connect-modal/wallet-list/WalletList.js +61 -38
- package/dist/esm/components/connect-modal/wallet-list/WalletList.js.map +4 -4
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css +8 -17
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.css +8 -17
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.css.map +3 -3
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.d.ts +0 -1
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.js +2 -4
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.js.map +2 -2
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.map +3 -3
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.js +5 -32
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.js.map +4 -4
- package/dist/esm/components/icons/BackIcon.d.ts +2 -0
- package/dist/esm/components/icons/BackIcon.js +15 -0
- package/dist/esm/components/icons/BackIcon.js.map +7 -0
- package/dist/esm/components/icons/IotaIcon.js +12 -391
- package/dist/esm/components/icons/IotaIcon.js.map +2 -2
- package/dist/esm/components/styling/InjectedThemeStyles.js +2 -0
- package/dist/esm/components/styling/InjectedThemeStyles.js.map +2 -2
- package/dist/esm/components/styling/StyleMarker.css +1 -16
- package/dist/esm/components/styling/StyleMarker.css.css +1 -16
- package/dist/esm/components/styling/StyleMarker.css.css.map +3 -3
- package/dist/esm/components/styling/StyleMarker.css.js +4 -4
- package/dist/esm/components/styling/StyleMarker.css.js.map +3 -3
- package/dist/esm/components/styling/StyleMarker.css.map +3 -3
- package/dist/esm/components/styling/StyleMarker.d.ts +0 -1
- package/dist/esm/components/styling/StyleMarker.js +4 -4
- package/dist/esm/components/styling/StyleMarker.js.map +3 -3
- package/dist/esm/components/ui/Button.css.css.map +1 -1
- package/dist/esm/components/ui/Button.css.map +1 -1
- package/dist/esm/components/ui/Button.d.ts +1 -1
- package/dist/esm/components/ui/Heading.css.css.map +1 -1
- package/dist/esm/components/ui/Heading.css.map +1 -1
- package/dist/esm/components/ui/Heading.d.ts +0 -1
- package/dist/esm/components/ui/IconButton.css.css.map +1 -1
- package/dist/esm/components/ui/IconButton.css.map +1 -1
- package/dist/esm/components/ui/IconButton.d.ts +1 -1
- package/dist/esm/components/ui/Text.css +7 -11
- package/dist/esm/components/ui/Text.css.css +7 -11
- package/dist/esm/components/ui/Text.css.css.map +3 -3
- package/dist/esm/components/ui/Text.css.d.ts +0 -3
- package/dist/esm/components/ui/Text.css.js +1 -1
- package/dist/esm/components/ui/Text.css.js.map +2 -2
- package/dist/esm/components/ui/Text.css.map +3 -3
- package/dist/esm/components/ui/Text.d.ts +0 -1
- package/dist/esm/components/ui/Text.js +1 -1
- package/dist/esm/components/ui/Text.js.map +2 -2
- package/dist/esm/constants/styleDataAttribute.js.map +1 -1
- package/dist/esm/constants/walletDefaults.d.ts +2 -2
- package/dist/esm/constants/walletDefaults.js +4 -5
- package/dist/esm/constants/walletDefaults.js.map +2 -2
- package/dist/esm/constants/walletMutationKeys.d.ts +3 -2
- package/dist/esm/constants/walletMutationKeys.js +4 -3
- package/dist/esm/constants/walletMutationKeys.js.map +2 -2
- package/dist/esm/contexts/walletContext.d.ts +1 -2
- package/dist/esm/hooks/useIotaClientInfiniteQuery.js.map +2 -2
- package/dist/esm/hooks/useIotaClientQuery.js +3 -1
- package/dist/esm/hooks/useIotaClientQuery.js.map +2 -2
- package/dist/esm/hooks/wallet/useAutoConnectWallet.js +17 -7
- package/dist/esm/hooks/wallet/useAutoConnectWallet.js.map +2 -2
- package/dist/esm/hooks/wallet/useConnectWallet.js +10 -4
- package/dist/esm/hooks/wallet/useConnectWallet.js.map +2 -2
- package/dist/esm/hooks/wallet/useCurrentWallet.d.ts +3 -0
- package/dist/esm/hooks/wallet/useCurrentWallet.js +7 -3
- package/dist/esm/hooks/wallet/useCurrentWallet.js.map +2 -2
- package/dist/esm/hooks/wallet/useDisconnectWallet.js +11 -6
- package/dist/esm/hooks/wallet/useDisconnectWallet.js.map +2 -2
- package/dist/esm/hooks/wallet/useReportTransactionEffects.d.ts +15 -0
- package/dist/esm/hooks/wallet/{useSignTransactionBlock.js → useReportTransactionEffects.js} +38 -34
- package/dist/esm/hooks/wallet/useReportTransactionEffects.js.map +7 -0
- package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.d.ts +29 -0
- package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.js +231 -0
- package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.js.map +7 -0
- package/dist/esm/hooks/wallet/useSignPersonalMessage.js +21 -27
- package/dist/esm/hooks/wallet/useSignPersonalMessage.js.map +2 -2
- package/dist/esm/hooks/wallet/useSignTransaction.d.ts +18 -0
- package/dist/esm/hooks/wallet/{useSignAndExecuteTransactionBlock.js → useSignTransaction.js} +83 -43
- package/dist/esm/hooks/wallet/useSignTransaction.js.map +7 -0
- package/dist/esm/hooks/wallet/useSwitchAccount.js +11 -6
- package/dist/esm/hooks/wallet/useSwitchAccount.js.map +2 -2
- package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.js +44 -32
- package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.js.map +2 -2
- package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js +7 -3
- package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js.map +2 -2
- package/dist/esm/hooks/wallet/useWalletsChanged.d.ts +1 -1
- package/dist/esm/hooks/wallet/useWalletsChanged.js +7 -6
- package/dist/esm/hooks/wallet/useWalletsChanged.js.map +2 -2
- package/dist/esm/index.css +232 -241
- package/dist/esm/index.css.map +3 -3
- package/dist/esm/index.d.ts +4 -3
- package/dist/esm/index.js +818 -1044
- package/dist/esm/index.js.map +4 -4
- package/dist/esm/themes/lightTheme.js +19 -19
- package/dist/esm/themes/lightTheme.js.map +1 -1
- package/dist/esm/themes/themeContract.js.map +1 -1
- package/dist/esm/types.d.ts +1 -1
- package/dist/esm/utils/assertUnreachable.js.map +1 -1
- package/dist/esm/utils/walletUtils.d.ts +2 -2
- package/dist/esm/utils/walletUtils.js +2 -2
- package/dist/esm/utils/walletUtils.js.map +2 -2
- package/dist/esm/walletStore.d.ts +3 -2
- package/dist/esm/walletStore.js +8 -4
- package/dist/esm/walletStore.js.map +2 -2
- package/dist/index.css/package.json +5 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +27 -28
- package/src/components/AccountDropdownMenu.css.ts +11 -17
- package/src/components/AccountDropdownMenu.tsx +10 -5
- package/src/components/ConnectButton.tsx +12 -5
- package/src/components/WalletProvider.tsx +11 -22
- package/src/components/connect-modal/ConnectModal.css.ts +58 -17
- package/src/components/connect-modal/ConnectModal.tsx +101 -16
- package/src/components/connect-modal/views/ConnectionStatus.css.ts +36 -0
- package/src/components/connect-modal/views/ConnectionStatus.tsx +55 -0
- package/src/components/connect-modal/views/GettingStarted.css.ts +26 -0
- package/src/components/connect-modal/views/GettingStarted.tsx +40 -0
- package/src/components/connect-modal/views/WhatIsAWallet.css.ts +20 -0
- package/src/components/connect-modal/views/WhatIsAWallet.tsx +24 -0
- package/src/components/connect-modal/views/index.ts +2 -1
- package/src/components/connect-modal/wallet-list/WalletList.css.ts +1 -5
- package/src/components/connect-modal/wallet-list/WalletList.tsx +25 -11
- package/src/components/connect-modal/wallet-list/WalletListItem.css.ts +6 -14
- package/src/components/connect-modal/wallet-list/WalletListItem.tsx +9 -12
- package/src/components/icons/BackIcon.tsx +18 -0
- package/src/components/icons/IotaIcon.tsx +6 -222
- package/src/components/styling/InjectedThemeStyles.tsx +4 -0
- package/src/components/styling/StyleMarker.css.ts +0 -15
- package/src/components/ui/Text.css.ts +1 -1
- package/src/constants/walletDefaults.ts +6 -5
- package/src/constants/walletMutationKeys.ts +3 -2
- package/src/hooks/useIotaClientInfiniteQuery.ts +2 -1
- package/src/hooks/useIotaClientQuery.ts +3 -1
- package/src/hooks/wallet/useAutoConnectWallet.ts +1 -1
- package/src/hooks/wallet/useConnectWallet.ts +6 -1
- package/src/hooks/wallet/useCurrentWallet.ts +4 -0
- package/src/hooks/wallet/useReportTransactionEffects.ts +87 -0
- package/src/hooks/wallet/useSignAndExecuteTransaction.ts +165 -0
- package/src/hooks/wallet/useSignPersonalMessage.ts +11 -25
- package/src/hooks/wallet/useSignTransaction.ts +117 -0
- package/src/hooks/wallet/useUnsafeBurnerWallet.ts +41 -18
- package/src/hooks/wallet/useWalletsChanged.ts +5 -4
- package/src/index.ts +4 -3
- package/src/themes/lightTheme.ts +19 -19
- package/src/types.ts +1 -1
- package/src/utils/walletUtils.ts +8 -3
- package/src/walletStore.ts +12 -1
- package/dist/cjs/components/connect-modal/views/WalletConnect.css +0 -179
- package/dist/cjs/components/connect-modal/views/WalletConnect.css.css +0 -51
- package/dist/cjs/components/connect-modal/views/WalletConnect.css.css.map +0 -7
- package/dist/cjs/components/connect-modal/views/WalletConnect.css.d.ts +0 -8
- package/dist/cjs/components/connect-modal/views/WalletConnect.css.js +0 -41
- package/dist/cjs/components/connect-modal/views/WalletConnect.css.js.map +0 -7
- package/dist/cjs/components/connect-modal/views/WalletConnect.css.map +0 -7
- package/dist/cjs/components/connect-modal/views/WalletConnect.d.ts +0 -7
- package/dist/cjs/components/connect-modal/views/WalletConnect.js +0 -325
- package/dist/cjs/components/connect-modal/views/WalletConnect.js.map +0 -7
- package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.d.ts +0 -15
- package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.js.map +0 -7
- package/dist/cjs/hooks/wallet/useSignTransactionBlock.d.ts +0 -13
- package/dist/cjs/hooks/wallet/useSignTransactionBlock.js.map +0 -7
- package/dist/esm/components/connect-modal/views/WalletConnect.css +0 -179
- package/dist/esm/components/connect-modal/views/WalletConnect.css.css +0 -51
- package/dist/esm/components/connect-modal/views/WalletConnect.css.css.map +0 -7
- package/dist/esm/components/connect-modal/views/WalletConnect.css.d.ts +0 -8
- package/dist/esm/components/connect-modal/views/WalletConnect.css.js +0 -20
- package/dist/esm/components/connect-modal/views/WalletConnect.css.js.map +0 -7
- package/dist/esm/components/connect-modal/views/WalletConnect.css.map +0 -7
- package/dist/esm/components/connect-modal/views/WalletConnect.d.ts +0 -7
- package/dist/esm/components/connect-modal/views/WalletConnect.js +0 -294
- package/dist/esm/components/connect-modal/views/WalletConnect.js.map +0 -7
- package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.d.ts +0 -15
- package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.js.map +0 -7
- package/dist/esm/hooks/wallet/useSignTransactionBlock.d.ts +0 -13
- package/dist/esm/hooks/wallet/useSignTransactionBlock.js.map +0 -7
- package/src/components/connect-modal/views/WalletConnect.css.ts +0 -55
- package/src/components/connect-modal/views/WalletConnect.tsx +0 -79
- package/src/hooks/wallet/useSignAndExecuteTransactionBlock.ts +0 -117
- package/src/hooks/wallet/useSignTransactionBlock.ts +0 -85
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Transaction } from '@iota/iota-sdk/transactions';
|
|
2
|
+
import type { SignedTransaction, IotaSignTransactionInput } from '@iota/wallet-standard';
|
|
3
|
+
import type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
|
|
4
|
+
import { WalletFeatureNotSupportedError, WalletNoAccountSelectedError, WalletNotConnectedError } from '../../errors/walletErrors.js';
|
|
5
|
+
import type { PartialBy } from '../../types/utilityTypes.js';
|
|
6
|
+
type UseSignTransactionArgs = PartialBy<Omit<IotaSignTransactionInput, 'transaction'>, 'account' | 'chain'> & {
|
|
7
|
+
transaction: Transaction | string;
|
|
8
|
+
};
|
|
9
|
+
interface UseSignTransactionResult extends SignedTransaction {
|
|
10
|
+
reportTransactionEffects: (effects: string) => void;
|
|
11
|
+
}
|
|
12
|
+
type UseSignTransactionError = WalletFeatureNotSupportedError | WalletNoAccountSelectedError | WalletNotConnectedError | Error;
|
|
13
|
+
type UseSignTransactionMutationOptions = Omit<UseMutationOptions<UseSignTransactionResult, UseSignTransactionError, UseSignTransactionArgs, unknown>, 'mutationFn'>;
|
|
14
|
+
/**
|
|
15
|
+
* Mutation hook for prompting the user to sign a transaction.
|
|
16
|
+
*/
|
|
17
|
+
export declare function useSignTransaction({ mutationKey, ...mutationOptions }?: UseSignTransactionMutationOptions): UseMutationResult<UseSignTransactionResult, UseSignTransactionError, UseSignTransactionArgs>;
|
|
18
|
+
export {};
|
package/dist/esm/hooks/wallet/{useSignAndExecuteTransactionBlock.js → useSignTransaction.js}
RENAMED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
// src/hooks/wallet/
|
|
2
|
-
import {
|
|
1
|
+
// src/hooks/wallet/useSignTransaction.ts
|
|
2
|
+
import { signTransaction } from "@iota/wallet-standard";
|
|
3
|
+
import { useMutation as useMutation2 } from "@tanstack/react-query";
|
|
3
4
|
|
|
4
5
|
// src/constants/walletMutationKeys.ts
|
|
5
6
|
var walletMutationKeys = {
|
|
@@ -8,9 +9,10 @@ var walletMutationKeys = {
|
|
|
8
9
|
autoconnectWallet: formMutationKeyFn("autoconnect-wallet"),
|
|
9
10
|
disconnectWallet: formMutationKeyFn("disconnect-wallet"),
|
|
10
11
|
signPersonalMessage: formMutationKeyFn("sign-personal-message"),
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
switchAccount: formMutationKeyFn("switch-account")
|
|
12
|
+
signTransaction: formMutationKeyFn("sign-transaction"),
|
|
13
|
+
signAndExecuteTransaction: formMutationKeyFn("sign-and-execute-transaction"),
|
|
14
|
+
switchAccount: formMutationKeyFn("switch-account"),
|
|
15
|
+
reportTransactionEffects: formMutationKeyFn("report-transaction-effects")
|
|
14
16
|
};
|
|
15
17
|
function formMutationKeyFn(baseEntity) {
|
|
16
18
|
return function mutationKeyFn(additionalKeys = []) {
|
|
@@ -80,6 +82,7 @@ function useCurrentAccount() {
|
|
|
80
82
|
function useCurrentWallet() {
|
|
81
83
|
const currentWallet = useWalletStore((state) => state.currentWallet);
|
|
82
84
|
const connectionStatus = useWalletStore((state) => state.connectionStatus);
|
|
85
|
+
const supportedIntents = useWalletStore((state) => state.supportedIntents);
|
|
83
86
|
switch (connectionStatus) {
|
|
84
87
|
case "connecting":
|
|
85
88
|
return {
|
|
@@ -87,7 +90,8 @@ function useCurrentWallet() {
|
|
|
87
90
|
currentWallet: null,
|
|
88
91
|
isDisconnected: false,
|
|
89
92
|
isConnecting: true,
|
|
90
|
-
isConnected: false
|
|
93
|
+
isConnected: false,
|
|
94
|
+
supportedIntents: []
|
|
91
95
|
};
|
|
92
96
|
case "disconnected":
|
|
93
97
|
return {
|
|
@@ -95,7 +99,8 @@ function useCurrentWallet() {
|
|
|
95
99
|
currentWallet: null,
|
|
96
100
|
isDisconnected: true,
|
|
97
101
|
isConnecting: false,
|
|
98
|
-
isConnected: false
|
|
102
|
+
isConnected: false,
|
|
103
|
+
supportedIntents: []
|
|
99
104
|
};
|
|
100
105
|
case "connected": {
|
|
101
106
|
return {
|
|
@@ -103,70 +108,105 @@ function useCurrentWallet() {
|
|
|
103
108
|
currentWallet,
|
|
104
109
|
isDisconnected: false,
|
|
105
110
|
isConnecting: false,
|
|
106
|
-
isConnected: true
|
|
111
|
+
isConnected: true,
|
|
112
|
+
supportedIntents
|
|
107
113
|
};
|
|
108
114
|
}
|
|
109
115
|
}
|
|
110
116
|
}
|
|
111
117
|
|
|
112
|
-
// src/hooks/wallet/
|
|
113
|
-
|
|
118
|
+
// src/hooks/wallet/useReportTransactionEffects.ts
|
|
119
|
+
import { toB64 } from "@iota/iota-sdk/utils";
|
|
120
|
+
import { useMutation } from "@tanstack/react-query";
|
|
121
|
+
function useReportTransactionEffects({
|
|
114
122
|
mutationKey,
|
|
115
|
-
executeFromWallet,
|
|
116
123
|
...mutationOptions
|
|
117
124
|
} = {}) {
|
|
118
125
|
const { currentWallet } = useCurrentWallet();
|
|
119
126
|
const currentAccount = useCurrentAccount();
|
|
120
|
-
const client = useIotaClient();
|
|
121
127
|
return useMutation({
|
|
122
|
-
mutationKey: walletMutationKeys.
|
|
123
|
-
mutationFn: async ({
|
|
128
|
+
mutationKey: walletMutationKeys.reportTransactionEffects(mutationKey),
|
|
129
|
+
mutationFn: async ({
|
|
130
|
+
effects,
|
|
131
|
+
chain = currentWallet?.chains[0],
|
|
132
|
+
account = currentAccount
|
|
133
|
+
}) => {
|
|
124
134
|
if (!currentWallet) {
|
|
125
135
|
throw new WalletNotConnectedError("No wallet is connected.");
|
|
126
136
|
}
|
|
127
|
-
|
|
128
|
-
if (!signerAccount) {
|
|
137
|
+
if (!account) {
|
|
129
138
|
throw new WalletNoAccountSelectedError(
|
|
130
|
-
"No wallet account is selected to
|
|
139
|
+
"No wallet account is selected to report transaction effects for"
|
|
131
140
|
);
|
|
132
141
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
}
|
|
140
|
-
return walletFeature2.signAndExecuteTransactionBlock({
|
|
141
|
-
...signTransactionBlockArgs,
|
|
142
|
-
account: signerAccount,
|
|
143
|
-
chain: signTransactionBlockArgs.chain ?? signerAccount.chains[0],
|
|
144
|
-
requestType,
|
|
145
|
-
options
|
|
142
|
+
const reportTransactionEffectsFeature = currentWallet.features["iota:reportTransactionEffects"];
|
|
143
|
+
if (reportTransactionEffectsFeature) {
|
|
144
|
+
return await reportTransactionEffectsFeature.reportTransactionEffects({
|
|
145
|
+
effects: Array.isArray(effects) ? toB64(new Uint8Array(effects)) : effects,
|
|
146
|
+
account,
|
|
147
|
+
chain: chain ?? currentWallet?.chains[0]
|
|
146
148
|
});
|
|
147
149
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
+
},
|
|
151
|
+
...mutationOptions
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// src/hooks/wallet/useSignTransaction.ts
|
|
156
|
+
function useSignTransaction({
|
|
157
|
+
mutationKey,
|
|
158
|
+
...mutationOptions
|
|
159
|
+
} = {}) {
|
|
160
|
+
const { currentWallet } = useCurrentWallet();
|
|
161
|
+
const currentAccount = useCurrentAccount();
|
|
162
|
+
const client = useIotaClient();
|
|
163
|
+
const { mutate: reportTransactionEffects } = useReportTransactionEffects();
|
|
164
|
+
return useMutation2({
|
|
165
|
+
mutationKey: walletMutationKeys.signTransaction(mutationKey),
|
|
166
|
+
mutationFn: async ({ transaction, ...signTransactionArgs }) => {
|
|
167
|
+
if (!currentWallet) {
|
|
168
|
+
throw new WalletNotConnectedError("No wallet is connected.");
|
|
169
|
+
}
|
|
170
|
+
const signerAccount = signTransactionArgs.account ?? currentAccount;
|
|
171
|
+
if (!signerAccount) {
|
|
172
|
+
throw new WalletNoAccountSelectedError(
|
|
173
|
+
"No wallet account is selected to sign the transaction with."
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
if (!currentWallet.features["iota:signTransaction"]) {
|
|
150
177
|
throw new WalletFeatureNotSupportedError(
|
|
151
|
-
"This wallet doesn't support the `
|
|
178
|
+
"This wallet doesn't support the `signTransaction` feature."
|
|
152
179
|
);
|
|
153
180
|
}
|
|
154
|
-
const {
|
|
155
|
-
...
|
|
181
|
+
const { bytes, signature } = await signTransaction(currentWallet, {
|
|
182
|
+
...signTransactionArgs,
|
|
183
|
+
transaction: {
|
|
184
|
+
toJSON: async () => {
|
|
185
|
+
return typeof transaction === "string" ? transaction : await transaction.toJSON({
|
|
186
|
+
supportedIntents: [],
|
|
187
|
+
client
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
},
|
|
156
191
|
account: signerAccount,
|
|
157
|
-
chain:
|
|
192
|
+
chain: signTransactionArgs.chain ?? signerAccount.chains[0]
|
|
158
193
|
});
|
|
159
|
-
return
|
|
160
|
-
|
|
194
|
+
return {
|
|
195
|
+
bytes,
|
|
161
196
|
signature,
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
197
|
+
reportTransactionEffects: (effects) => {
|
|
198
|
+
reportTransactionEffects({
|
|
199
|
+
effects,
|
|
200
|
+
account: signerAccount,
|
|
201
|
+
chain: signTransactionArgs.chain ?? signerAccount.chains[0]
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
};
|
|
165
205
|
},
|
|
166
206
|
...mutationOptions
|
|
167
207
|
});
|
|
168
208
|
}
|
|
169
209
|
export {
|
|
170
|
-
|
|
210
|
+
useSignTransaction
|
|
171
211
|
};
|
|
172
|
-
//# sourceMappingURL=
|
|
212
|
+
//# sourceMappingURL=useSignTransaction.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/hooks/wallet/useSignTransaction.ts", "../../../../src/constants/walletMutationKeys.ts", "../../../../src/errors/walletErrors.ts", "../../../../src/hooks/useIotaClient.ts", "../../../../src/components/IotaClientProvider.tsx", "../../../../src/hooks/wallet/useWalletStore.ts", "../../../../src/contexts/walletContext.ts", "../../../../src/hooks/wallet/useCurrentAccount.ts", "../../../../src/hooks/wallet/useCurrentWallet.ts", "../../../../src/hooks/wallet/useReportTransactionEffects.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Transaction } from '@iota/iota-sdk/transactions';\nimport { signTransaction } from '@iota/wallet-standard';\nimport type { SignedTransaction, IotaSignTransactionInput } from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport {\n WalletFeatureNotSupportedError,\n WalletNoAccountSelectedError,\n WalletNotConnectedError,\n} from '../../errors/walletErrors.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useIotaClient } from '../useIotaClient.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useReportTransactionEffects } from './useReportTransactionEffects.js';\n\ntype UseSignTransactionArgs = PartialBy<\n Omit<IotaSignTransactionInput, 'transaction'>,\n 'account' | 'chain'\n> & {\n transaction: Transaction | string;\n};\n\ninterface UseSignTransactionResult extends SignedTransaction {\n reportTransactionEffects: (effects: string) => void;\n}\n\ntype UseSignTransactionError =\n | WalletFeatureNotSupportedError\n | WalletNoAccountSelectedError\n | WalletNotConnectedError\n | Error;\n\ntype UseSignTransactionMutationOptions = Omit<\n UseMutationOptions<\n UseSignTransactionResult,\n UseSignTransactionError,\n UseSignTransactionArgs,\n unknown\n >,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for prompting the user to sign a transaction.\n */\nexport function useSignTransaction({\n mutationKey,\n ...mutationOptions\n}: UseSignTransactionMutationOptions = {}): UseMutationResult<\n UseSignTransactionResult,\n UseSignTransactionError,\n UseSignTransactionArgs\n> {\n const { currentWallet } = useCurrentWallet();\n const currentAccount = useCurrentAccount();\n const client = useIotaClient();\n\n const { mutate: reportTransactionEffects } = useReportTransactionEffects();\n\n return useMutation({\n mutationKey: walletMutationKeys.signTransaction(mutationKey),\n mutationFn: async ({ transaction, ...signTransactionArgs }) => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n const signerAccount = signTransactionArgs.account ?? currentAccount;\n if (!signerAccount) {\n throw new WalletNoAccountSelectedError(\n 'No wallet account is selected to sign the transaction with.',\n );\n }\n\n if (!currentWallet.features['iota:signTransaction']) {\n throw new WalletFeatureNotSupportedError(\n \"This wallet doesn't support the `signTransaction` feature.\",\n );\n }\n\n const { bytes, signature } = await signTransaction(currentWallet, {\n ...signTransactionArgs,\n transaction: {\n toJSON: async () => {\n return typeof transaction === 'string'\n ? transaction\n : await transaction.toJSON({\n supportedIntents: [],\n client,\n });\n },\n },\n account: signerAccount,\n chain: signTransactionArgs.chain ?? signerAccount.chains[0],\n });\n\n return {\n bytes,\n signature,\n reportTransactionEffects: (effects) => {\n reportTransactionEffects({\n effects,\n account: signerAccount,\n chain: signTransactionArgs.chain ?? signerAccount.chains[0],\n });\n },\n };\n },\n ...mutationOptions,\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n all: { baseScope: 'wallet' },\n connectWallet: formMutationKeyFn('connect-wallet'),\n autoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n disconnectWallet: formMutationKeyFn('disconnect-wallet'),\n signPersonalMessage: formMutationKeyFn('sign-personal-message'),\n signTransaction: formMutationKeyFn('sign-transaction'),\n signAndExecuteTransaction: formMutationKeyFn('sign-and-execute-transaction'),\n switchAccount: formMutationKeyFn('switch-account'),\n reportTransactionEffects: formMutationKeyFn('report-transaction-effects'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n return function mutationKeyFn(additionalKeys: MutationKey = []) {\n return [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n };\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires an active wallet connection.\n */\nexport class WalletNotConnectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires a selected wallet account.\n * This is more of an edge case stemming from the fact that wallets don't technically require you to authorize any\n * accounts when connecting a wallet.\n */\nexport class WalletNoAccountSelectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that isn't supported by a wallet.\n */\nexport class WalletFeatureNotSupportedError extends Error {}\n\n/**\n * An error that is instantiated when a wallet account can't be found for a specific wallet.\n */\nexport class WalletAccountNotFoundError extends Error {}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Local).url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useContext } from 'react';\nimport { useStore } from 'zustand';\n\nimport { WalletContext } from '../../contexts/walletContext.js';\nimport type { StoreState } from '../../walletStore.js';\n\nexport function useWalletStore<T>(selector: (state: StoreState) => T): T {\n const store = useContext(WalletContext);\n if (!store) {\n throw new Error(\n 'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n );\n }\n return useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { createContext } from 'react';\n\nimport type { WalletStore } from '../walletStore.js';\n\nexport const WalletContext = createContext<WalletStore | null>(null);\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@iota/wallet-standard';\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet account that is currently selected, if one exists.\n */\nexport function useCurrentAccount(): WalletAccount | null {\n return useWalletStore((state) => state.currentAccount);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet that is currently connected to the dApp, if one exists.\n */\nexport function useCurrentWallet() {\n const currentWallet = useWalletStore((state) => state.currentWallet);\n const connectionStatus = useWalletStore((state) => state.connectionStatus);\n const supportedIntents = useWalletStore((state) => state.supportedIntents);\n\n switch (connectionStatus) {\n case 'connecting':\n return {\n connectionStatus,\n currentWallet: null,\n isDisconnected: false,\n isConnecting: true,\n isConnected: false,\n supportedIntents: [],\n } as const;\n case 'disconnected':\n return {\n connectionStatus,\n currentWallet: null,\n isDisconnected: true,\n isConnecting: false,\n isConnected: false,\n supportedIntents: [],\n } as const;\n case 'connected': {\n return {\n connectionStatus,\n currentWallet: currentWallet!,\n isDisconnected: false,\n isConnecting: false,\n isConnected: true,\n supportedIntents,\n } as const;\n }\n }\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { toB64 } from '@iota/iota-sdk/utils';\nimport type { IotaReportTransactionEffectsInput } from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport type { WalletFeatureNotSupportedError } from '../../errors/walletErrors.js';\nimport {\n WalletNoAccountSelectedError,\n WalletNotConnectedError,\n} from '../../errors/walletErrors.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\n\ntype UseReportTransactionEffectsArgs = Omit<\n PartialBy<IotaReportTransactionEffectsInput, 'account' | 'chain'>,\n 'effects'\n> & {\n effects: string | number[];\n};\n\ntype UseReportTransactionEffectsError =\n | WalletFeatureNotSupportedError\n | WalletNoAccountSelectedError\n | WalletNotConnectedError\n | Error;\n\ntype UseReportTransactionEffectsMutationOptions = Omit<\n UseMutationOptions<\n void,\n UseReportTransactionEffectsError,\n UseReportTransactionEffectsArgs,\n unknown\n >,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for prompting the user to sign a message.\n */\nexport function useReportTransactionEffects({\n mutationKey,\n ...mutationOptions\n}: UseReportTransactionEffectsMutationOptions = {}): UseMutationResult<\n void,\n UseReportTransactionEffectsError,\n UseReportTransactionEffectsArgs\n> {\n const { currentWallet } = useCurrentWallet();\n const currentAccount = useCurrentAccount();\n\n return useMutation({\n mutationKey: walletMutationKeys.reportTransactionEffects(mutationKey),\n mutationFn: async ({\n effects,\n chain = currentWallet?.chains[0],\n account = currentAccount,\n }) => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n if (!account) {\n throw new WalletNoAccountSelectedError(\n 'No wallet account is selected to report transaction effects for',\n );\n }\n\n const reportTransactionEffectsFeature =\n currentWallet.features['iota:reportTransactionEffects'];\n\n if (reportTransactionEffectsFeature) {\n return await reportTransactionEffectsFeature.reportTransactionEffects({\n effects: Array.isArray(effects) ? toB64(new Uint8Array(effects)) : effects,\n account,\n chain: chain ?? currentWallet?.chains[0],\n });\n }\n },\n ...mutationOptions,\n });\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["useMutation", "useContext", "createContext", "useContext", "useMutation"]
|
|
7
|
+
}
|
|
@@ -8,9 +8,10 @@ var walletMutationKeys = {
|
|
|
8
8
|
autoconnectWallet: formMutationKeyFn("autoconnect-wallet"),
|
|
9
9
|
disconnectWallet: formMutationKeyFn("disconnect-wallet"),
|
|
10
10
|
signPersonalMessage: formMutationKeyFn("sign-personal-message"),
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
switchAccount: formMutationKeyFn("switch-account")
|
|
11
|
+
signTransaction: formMutationKeyFn("sign-transaction"),
|
|
12
|
+
signAndExecuteTransaction: formMutationKeyFn("sign-and-execute-transaction"),
|
|
13
|
+
switchAccount: formMutationKeyFn("switch-account"),
|
|
14
|
+
reportTransactionEffects: formMutationKeyFn("report-transaction-effects")
|
|
14
15
|
};
|
|
15
16
|
function formMutationKeyFn(baseEntity) {
|
|
16
17
|
return function mutationKeyFn(additionalKeys = []) {
|
|
@@ -47,6 +48,7 @@ function useWalletStore(selector) {
|
|
|
47
48
|
function useCurrentWallet() {
|
|
48
49
|
const currentWallet = useWalletStore((state) => state.currentWallet);
|
|
49
50
|
const connectionStatus = useWalletStore((state) => state.connectionStatus);
|
|
51
|
+
const supportedIntents = useWalletStore((state) => state.supportedIntents);
|
|
50
52
|
switch (connectionStatus) {
|
|
51
53
|
case "connecting":
|
|
52
54
|
return {
|
|
@@ -54,7 +56,8 @@ function useCurrentWallet() {
|
|
|
54
56
|
currentWallet: null,
|
|
55
57
|
isDisconnected: false,
|
|
56
58
|
isConnecting: true,
|
|
57
|
-
isConnected: false
|
|
59
|
+
isConnected: false,
|
|
60
|
+
supportedIntents: []
|
|
58
61
|
};
|
|
59
62
|
case "disconnected":
|
|
60
63
|
return {
|
|
@@ -62,7 +65,8 @@ function useCurrentWallet() {
|
|
|
62
65
|
currentWallet: null,
|
|
63
66
|
isDisconnected: true,
|
|
64
67
|
isConnecting: false,
|
|
65
|
-
isConnected: false
|
|
68
|
+
isConnected: false,
|
|
69
|
+
supportedIntents: []
|
|
66
70
|
};
|
|
67
71
|
case "connected": {
|
|
68
72
|
return {
|
|
@@ -70,7 +74,8 @@ function useCurrentWallet() {
|
|
|
70
74
|
currentWallet,
|
|
71
75
|
isDisconnected: false,
|
|
72
76
|
isConnecting: false,
|
|
73
|
-
isConnected: true
|
|
77
|
+
isConnected: true,
|
|
78
|
+
supportedIntents
|
|
74
79
|
};
|
|
75
80
|
}
|
|
76
81
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/hooks/wallet/useSwitchAccount.ts", "../../../../src/constants/walletMutationKeys.ts", "../../../../src/errors/walletErrors.ts", "../../../../src/hooks/wallet/useWalletStore.ts", "../../../../src/contexts/walletContext.ts", "../../../../src/hooks/wallet/useCurrentWallet.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport { WalletAccountNotFoundError, WalletNotConnectedError } from '../../errors/walletErrors.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWalletStore } from './useWalletStore.js';\n\ntype SwitchAccountArgs = {\n account: WalletAccount;\n};\n\ntype SwitchAccountResult = void;\n\ntype UseSwitchAccountError = WalletNotConnectedError | WalletAccountNotFoundError | Error;\n\ntype UseSwitchAccountMutationOptions = Omit<\n UseMutationOptions<SwitchAccountResult, UseSwitchAccountError, SwitchAccountArgs, unknown>,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for switching to a specific wallet account.\n */\nexport function useSwitchAccount({\n mutationKey,\n ...mutationOptions\n}: UseSwitchAccountMutationOptions = {}): UseMutationResult<\n SwitchAccountResult,\n UseSwitchAccountError,\n SwitchAccountArgs\n> {\n const { currentWallet } = useCurrentWallet();\n const setAccountSwitched = useWalletStore((state) => state.setAccountSwitched);\n\n return useMutation({\n mutationKey: walletMutationKeys.switchAccount(mutationKey),\n mutationFn: async ({ account }) => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n const accountToSelect = currentWallet.accounts.find(\n (walletAccount) => walletAccount.address === account.address,\n );\n if (!accountToSelect) {\n throw new WalletAccountNotFoundError(\n `No account with address ${account.address} is connected to ${currentWallet.name}.`,\n );\n }\n\n setAccountSwitched(accountToSelect);\n },\n ...mutationOptions,\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n all: { baseScope: 'wallet' },\n connectWallet: formMutationKeyFn('connect-wallet'),\n autoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n disconnectWallet: formMutationKeyFn('disconnect-wallet'),\n signPersonalMessage: formMutationKeyFn('sign-personal-message'),\n
|
|
5
|
-
"mappings": ";AAMA,SAAS,mBAAmB;;;ACArB,IAAM,qBAAqB;AAAA,EAC9B,KAAK,EAAE,WAAW,SAAS;AAAA,EAC3B,eAAe,kBAAkB,gBAAgB;AAAA,EACjD,mBAAmB,kBAAkB,oBAAoB;AAAA,EACzD,kBAAkB,kBAAkB,mBAAmB;AAAA,EACvD,qBAAqB,kBAAkB,uBAAuB;AAAA,EAC9D,
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport { WalletAccountNotFoundError, WalletNotConnectedError } from '../../errors/walletErrors.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWalletStore } from './useWalletStore.js';\n\ntype SwitchAccountArgs = {\n account: WalletAccount;\n};\n\ntype SwitchAccountResult = void;\n\ntype UseSwitchAccountError = WalletNotConnectedError | WalletAccountNotFoundError | Error;\n\ntype UseSwitchAccountMutationOptions = Omit<\n UseMutationOptions<SwitchAccountResult, UseSwitchAccountError, SwitchAccountArgs, unknown>,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for switching to a specific wallet account.\n */\nexport function useSwitchAccount({\n mutationKey,\n ...mutationOptions\n}: UseSwitchAccountMutationOptions = {}): UseMutationResult<\n SwitchAccountResult,\n UseSwitchAccountError,\n SwitchAccountArgs\n> {\n const { currentWallet } = useCurrentWallet();\n const setAccountSwitched = useWalletStore((state) => state.setAccountSwitched);\n\n return useMutation({\n mutationKey: walletMutationKeys.switchAccount(mutationKey),\n mutationFn: async ({ account }) => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n const accountToSelect = currentWallet.accounts.find(\n (walletAccount) => walletAccount.address === account.address,\n );\n if (!accountToSelect) {\n throw new WalletAccountNotFoundError(\n `No account with address ${account.address} is connected to ${currentWallet.name}.`,\n );\n }\n\n setAccountSwitched(accountToSelect);\n },\n ...mutationOptions,\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n all: { baseScope: 'wallet' },\n connectWallet: formMutationKeyFn('connect-wallet'),\n autoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n disconnectWallet: formMutationKeyFn('disconnect-wallet'),\n signPersonalMessage: formMutationKeyFn('sign-personal-message'),\n signTransaction: formMutationKeyFn('sign-transaction'),\n signAndExecuteTransaction: formMutationKeyFn('sign-and-execute-transaction'),\n switchAccount: formMutationKeyFn('switch-account'),\n reportTransactionEffects: formMutationKeyFn('report-transaction-effects'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n return function mutationKeyFn(additionalKeys: MutationKey = []) {\n return [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n };\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires an active wallet connection.\n */\nexport class WalletNotConnectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires a selected wallet account.\n * This is more of an edge case stemming from the fact that wallets don't technically require you to authorize any\n * accounts when connecting a wallet.\n */\nexport class WalletNoAccountSelectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that isn't supported by a wallet.\n */\nexport class WalletFeatureNotSupportedError extends Error {}\n\n/**\n * An error that is instantiated when a wallet account can't be found for a specific wallet.\n */\nexport class WalletAccountNotFoundError extends Error {}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useContext } from 'react';\nimport { useStore } from 'zustand';\n\nimport { WalletContext } from '../../contexts/walletContext.js';\nimport type { StoreState } from '../../walletStore.js';\n\nexport function useWalletStore<T>(selector: (state: StoreState) => T): T {\n const store = useContext(WalletContext);\n if (!store) {\n throw new Error(\n 'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n );\n }\n return useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { createContext } from 'react';\n\nimport type { WalletStore } from '../walletStore.js';\n\nexport const WalletContext = createContext<WalletStore | null>(null);\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet that is currently connected to the dApp, if one exists.\n */\nexport function useCurrentWallet() {\n const currentWallet = useWalletStore((state) => state.currentWallet);\n const connectionStatus = useWalletStore((state) => state.connectionStatus);\n const supportedIntents = useWalletStore((state) => state.supportedIntents);\n\n switch (connectionStatus) {\n case 'connecting':\n return {\n connectionStatus,\n currentWallet: null,\n isDisconnected: false,\n isConnecting: true,\n isConnected: false,\n supportedIntents: [],\n } as const;\n case 'disconnected':\n return {\n connectionStatus,\n currentWallet: null,\n isDisconnected: true,\n isConnecting: false,\n isConnected: false,\n supportedIntents: [],\n } as const;\n case 'connected': {\n return {\n connectionStatus,\n currentWallet: currentWallet!,\n isDisconnected: false,\n isConnecting: false,\n isConnected: true,\n supportedIntents,\n } as const;\n }\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAMA,SAAS,mBAAmB;;;ACArB,IAAM,qBAAqB;AAAA,EAC9B,KAAK,EAAE,WAAW,SAAS;AAAA,EAC3B,eAAe,kBAAkB,gBAAgB;AAAA,EACjD,mBAAmB,kBAAkB,oBAAoB;AAAA,EACzD,kBAAkB,kBAAkB,mBAAmB;AAAA,EACvD,qBAAqB,kBAAkB,uBAAuB;AAAA,EAC9D,iBAAiB,kBAAkB,kBAAkB;AAAA,EACrD,2BAA2B,kBAAkB,8BAA8B;AAAA,EAC3E,eAAe,kBAAkB,gBAAgB;AAAA,EACjD,0BAA0B,kBAAkB,4BAA4B;AAC5E;AAEA,SAAS,kBAAkB,YAAoB;AAC3C,SAAO,SAAS,cAAc,iBAA8B,CAAC,GAAG;AAC5D,WAAO,CAAC,EAAE,GAAG,mBAAmB,KAAK,WAAW,GAAG,GAAG,cAAc;AAAA,EACxE;AACJ;;;ACfO,IAAM,0BAAN,cAAsC,MAAM;AAAC;AAiB7C,IAAM,6BAAN,cAAyC,MAAM;AAAC;;;ACpBvD,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;;;ACDzB,SAAS,qBAAqB;AAIvB,IAAM,gBAAgB,cAAkC,IAAI;;;ADE5D,SAAS,eAAkB,UAAuC;AACrE,QAAM,QAAQ,WAAW,aAAa;AACtC,MAAI,CAAC,OAAO;AACR,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AACA,SAAO,SAAS,OAAO,QAAQ;AACnC;;;AETO,SAAS,mBAAmB;AAC/B,QAAM,gBAAgB,eAAe,CAAC,UAAU,MAAM,aAAa;AACnE,QAAM,mBAAmB,eAAe,CAAC,UAAU,MAAM,gBAAgB;AACzE,QAAM,mBAAmB,eAAe,CAAC,UAAU,MAAM,gBAAgB;AAEzE,UAAQ,kBAAkB;AAAA,IACtB,KAAK;AACD,aAAO;AAAA,QACH;AAAA,QACA,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,QACb,kBAAkB,CAAC;AAAA,MACvB;AAAA,IACJ,KAAK;AACD,aAAO;AAAA,QACH;AAAA,QACA,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,QACb,kBAAkB,CAAC;AAAA,MACvB;AAAA,IACJ,KAAK,aAAa;AACd,aAAO;AAAA,QACH;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,QACb;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;;;ALfO,SAAS,iBAAiB;AAAA,EAC7B;AAAA,EACA,GAAG;AACP,IAAqC,CAAC,GAIpC;AACE,QAAM,EAAE,cAAc,IAAI,iBAAiB;AAC3C,QAAM,qBAAqB,eAAe,CAAC,UAAU,MAAM,kBAAkB;AAE7E,SAAO,YAAY;AAAA,IACf,aAAa,mBAAmB,cAAc,WAAW;AAAA,IACzD,YAAY,OAAO,EAAE,QAAQ,MAAM;AAC/B,UAAI,CAAC,eAAe;AAChB,cAAM,IAAI,wBAAwB,yBAAyB;AAAA,MAC/D;AAEA,YAAM,kBAAkB,cAAc,SAAS;AAAA,QAC3C,CAAC,kBAAkB,cAAc,YAAY,QAAQ;AAAA,MACzD;AACA,UAAI,CAAC,iBAAiB;AAClB,cAAM,IAAI;AAAA,UACN,2BAA2B,QAAQ,OAAO,oBAAoB,cAAc,IAAI;AAAA,QACpF;AAAA,MACJ;AAEA,yBAAmB,eAAe;AAAA,IACtC;AAAA,IACA,GAAG;AAAA,EACP,CAAC;AACL;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,19 +1,14 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
3
|
-
throw TypeError("Cannot " + msg);
|
|
4
|
-
};
|
|
5
|
-
var __privateGet = (obj, member, getter) => {
|
|
6
|
-
__accessCheck(obj, member, "read from private field");
|
|
7
|
-
return getter ? getter.call(obj) : member.get(obj);
|
|
8
|
-
};
|
|
9
|
-
var __privateAdd = (obj, member, value) => {
|
|
10
|
-
if (member.has(obj))
|
|
11
|
-
throw TypeError("Cannot add the same private member more than once");
|
|
12
|
-
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
1
|
+
var __typeError = (msg) => {
|
|
2
|
+
throw TypeError(msg);
|
|
13
3
|
};
|
|
4
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
5
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
6
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
14
7
|
|
|
15
8
|
// src/hooks/wallet/useUnsafeBurnerWallet.ts
|
|
16
9
|
import { Ed25519Keypair } from "@iota/iota-sdk/keypairs/ed25519";
|
|
10
|
+
import { Transaction } from "@iota/iota-sdk/transactions";
|
|
11
|
+
import { toB64 } from "@iota/iota-sdk/utils";
|
|
17
12
|
import { getWallets, ReadonlyWalletAccount, SUPPORTED_CHAINS } from "@iota/wallet-standard";
|
|
18
13
|
import { useEffect } from "react";
|
|
19
14
|
|
|
@@ -56,7 +51,7 @@ function useUnsafeBurnerWallet(enabled) {
|
|
|
56
51
|
}, [enabled, iotaClient]);
|
|
57
52
|
}
|
|
58
53
|
function registerUnsafeBurnerWallet(iotaClient) {
|
|
59
|
-
var _on, _connect, _signPersonalMessage,
|
|
54
|
+
var _on, _connect, _signPersonalMessage, _signTransaction, _signAndExecuteTransaction;
|
|
60
55
|
const walletsApi = getWallets();
|
|
61
56
|
const registeredWallets = walletsApi.get();
|
|
62
57
|
if (registeredWallets.find((wallet) => wallet.name === WALLET_NAME)) {
|
|
@@ -73,7 +68,7 @@ function registerUnsafeBurnerWallet(iotaClient) {
|
|
|
73
68
|
address: keypair.getPublicKey().toIotaAddress(),
|
|
74
69
|
publicKey: keypair.getPublicKey().toIotaBytes(),
|
|
75
70
|
chains: ["iota:unknown"],
|
|
76
|
-
features: ["iota:
|
|
71
|
+
features: ["iota:signTransaction", "iota:signAndExecuteTransaction"]
|
|
77
72
|
});
|
|
78
73
|
class UnsafeBurnerWallet {
|
|
79
74
|
constructor() {
|
|
@@ -88,23 +83,40 @@ function registerUnsafeBurnerWallet(iotaClient) {
|
|
|
88
83
|
const { bytes, signature } = await keypair.signPersonalMessage(messageInput.message);
|
|
89
84
|
return { bytes, signature };
|
|
90
85
|
});
|
|
91
|
-
__privateAdd(this,
|
|
92
|
-
const { bytes, signature } = await
|
|
86
|
+
__privateAdd(this, _signTransaction, async (transactionInput) => {
|
|
87
|
+
const { bytes, signature } = await Transaction.from(
|
|
88
|
+
await transactionInput.transaction.toJSON()
|
|
89
|
+
).sign({
|
|
93
90
|
client: iotaClient,
|
|
94
91
|
signer: keypair
|
|
95
92
|
});
|
|
93
|
+
transactionInput.signal?.throwIfAborted();
|
|
96
94
|
return {
|
|
97
|
-
|
|
95
|
+
bytes,
|
|
98
96
|
signature
|
|
99
97
|
};
|
|
100
98
|
});
|
|
101
|
-
__privateAdd(this,
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
99
|
+
__privateAdd(this, _signAndExecuteTransaction, async (transactionInput) => {
|
|
100
|
+
const { bytes, signature } = await Transaction.from(
|
|
101
|
+
await transactionInput.transaction.toJSON()
|
|
102
|
+
).sign({
|
|
103
|
+
client: iotaClient,
|
|
104
|
+
signer: keypair
|
|
105
|
+
});
|
|
106
|
+
transactionInput.signal?.throwIfAborted();
|
|
107
|
+
const { rawEffects, digest } = await iotaClient.executeTransactionBlock({
|
|
108
|
+
signature,
|
|
109
|
+
transactionBlock: bytes,
|
|
110
|
+
options: {
|
|
111
|
+
showRawEffects: true
|
|
112
|
+
}
|
|
107
113
|
});
|
|
114
|
+
return {
|
|
115
|
+
bytes,
|
|
116
|
+
signature,
|
|
117
|
+
digest,
|
|
118
|
+
effects: toB64(new Uint8Array(rawEffects))
|
|
119
|
+
};
|
|
108
120
|
});
|
|
109
121
|
}
|
|
110
122
|
get version() {
|
|
@@ -116,7 +128,7 @@ function registerUnsafeBurnerWallet(iotaClient) {
|
|
|
116
128
|
get icon() {
|
|
117
129
|
return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAJrElEQVR42tWbe2xT1x3H7UxAyD3XrdrSbGXlUbKWsq5rWdVuVOMRSEqSOmnVRZMmJqZNYv1nf3R/jWmVmVrtRRM/YwPd1nVTNcrE3pQCoikrIRAC4VVNY0hlD9ZOo1uCfe3ra9979v0dcy3s5Pper76Oh/STE+495/4+5/c85zqe2f7HAx5vKsS+monJj/CdHi/f4/HWW4f6AwdblmXjTM0NyS+movKtw9v+j6C5gKhyTMTTpA2x15Qwy+Pz75motOGdgKep8WF5ATgVZIt5NeO2wMqD0hfVGNPh3oYaYflsjG0l63PeyLCDnqbsLpZIhaRNFI+Ox+Le5KB0RybK8gDmJOkI07U4i/FhT1NDQl8Me5rUIfaDfELOJ0NsFa/SJQHm1WLsHcDqRWiy9BCL8s0N5t6UWWFVvxplejYm60hC91cNjPtzCTZsAptCVoeLP8PDDQJNCSodap6H+LtE8ZcdkvVkkD38vwDn4/Jvy4EhBhZSvRaUHiTXn31gJJxkUPoClBKKFizM+inhVA2cYIdM4HJouPvoe9s9H+KzDhyGK6KkmIqitBhww2C11rjQL2L4kgUwFxk8yPyzauUA3Pk/353XnA6zKbKCaQ2UlMvJF6W5uF5F8yHfZWZpC9HRmBziaEpm1bpY9XvhxuWJRldC7Mt03WlZwpjnkZUNa2DMG2EaPj9MGd2l2mofd0hQ7ZSopsXckHxVCUp32fXGdD0ZktrgFUmMqwhcWFjp87RArsD+9bn585IRaSHAKgBL3SZwOTRc8BKg7yYoskp5OJDiiPmF2Sj7ox0siYJ7lJA04EqvzZ9B1xSVt6PlW0IxZgUMJdZYAJuWngLQt9IRuZXmoTEkmci8ZtTXTViUKyasA9FRun5d8z6bfw0gYWm9mmCXxZatQgxfC7I2NVpRYQOxKWppLs4mcgn5NcibgL1K40xYp8CYY5TXEpjcb3LAJ0OZyyg3+2nySm6fjEtzkEz+7VBx3RTb+60z9dma7pkvwO2QQL5HzTtAdpKF7euw/HuzfrosBHy+ZsBimzbQshjWTVMDgez53B5MbjcGbr1ZjdUJOM5O0SLXzJ2R+uOA1dMAVoLsm5zb73JSId8t8Aa1LsAJdoTCrCaw6e3NC2DdFMUXWRg173mysJNOSUNskUJ1cOlXa2LhcbgmSszXYSn9hl3KSxTDjrZ2cbbfbWDyumsh9m3e7zCG7a3ETt+gtI7fx6lEOanZKDVvuA2cjYmt5xNOd2Louz3IQ12UZ2Zo3lkb9cDlvSs6m4Vk5Yqlabs0B97wT7PUuCXQz0Bnt9QxMPTW4iwBtmUlY8hFsHJPlzcQ1xuG75CVK1kXofCUGnU9fg1aVD7kfE9MoabtYkcAvIUYS2op3Hc3TTrDQzIAeojugTVLFolWDR6wFPtY0R66n6HltwjCIawnE2ymresk9NtN+pfUUi0mX6RJLfrh9zMRaRPOqubSA8W2MNzC0mHpK7j2ruuw5mYkxl5+2+HGQeg4yNYg7vNg+xMxFsuRMuiTsRJZG3cysAl4D9n4aC4un8L9qUyVvbCyYwFXX1nGUxFf1cCiEQqy75O+TpMwYKNKSPQUqhLyyWLsRbESLctx0YnixgfphRWA8pOPc+N4F9d+eV9V4OlCX/As5w5g+wtGhJGukp5go2R3D7EW9rSDcnGL56YgJHj+8GcFND/Vy41jj/H0jxc6HU/AA2QlR01UlH3D7CmITQnJq4lVWBi1yl8XYEh278c5H++F+Iui7r7bYR8tH/gbqoJN7fVODUhLYVVxzmYCEyOxFg7RUVa0egCHZZ55eRHnp/tKgMna6s/bbMdTxZgMzl9CCcmq7k690OzDfaeSN4QcsREjsQpgXHwyWyfg9K5WE7hc6JqTWjyihObfygOFOkv6i5K5TZx8LsL1sVS4NL8ItiB7sgAcEKcWHfUCVhK3kUVnBNbfXIs4l5xAv5sJs234eTUy93L0Au2otQOw5ORMyfQ6WwexFupVSHowG6uThXfebmlhWojMS3fazmMeGxEI6S2SUti6RAo2vKohVuH3qUG5FWm/PjH8kzutgSH5g58xrVwzIbZkxHf7OFjFC+wrMDXcpOqOKX/g01U/XPvVJyxdWsiJblqYmnZoWbDxAcR56X5WPuh4ewcL5PY9JBRUYjc7fzjG6Uc3mHBWbg23X1BLaFHOSnrw4bWiNAXSEWcWRntIignXTP/oDsfKZX66mMbZAPfhviU1AyYmJLYAMZa/QXjUSeIiixpj3UUFtd884KytjN7EjdGNNMbWwtlf3FvbQ4OQtIoYSzbxqVDLXMTxP8jnnbiyKcaJLvueGLD6kXW2sKZov1tpn7hwXf3ZUvq0K2FXOM7Op/Xgb6PhxsWIErYGVuK3WGXWkkwMMZVCVl5kWtax5A6usgemvnx4DelUcYcFC0eIbcbXKzggeyBjeXIhkftaKknJKLtnuSg7KmKQsrH+1nqbmLWY6w/tBGy/8xrruR5SM99LLIjfT/4ZbNZnQEPssIVb21rKTGRIPDagNoLdFMKgcuLc/TF6Bulk6c7ovg4TU+XvS6FNw1tDfVqH9MOPmBDui0hcK6wz744FlDjNe0m3aVldJYagtI6YbF+3ZGPsQHlN1vbeh8lJofqJ+uo9Zi4wXZxKFiXKGxbHT7pNq71oNg4Qi6MviE0FpRVqjGXILYoJ4tCjdYU1rWeMdPLc/ochj3B9pGNGL4NupGPRlUl35KMVxFLNO6ZnxYlBsUPqoMkbUqAb6VhMVKQ7MVT1dYdrL8hzEAcjpmvjHKphgaFb0ZVJZw7dwVD9q5fkgPTRbBxnzmGfgRLQsMCkG+moQdcp6GzzZsL2MGyllvBNGWM9RqMCk26kI7aBK526csVShZTfzid6FEzeiNAGP92jpCPQEbrW7EW5MbZxAz/fN9lg0IbQaaxrQ83/VoKPb/HqJx67Hw+43CDQBPsX0gm6ufXNvH4vP9rZapzx7+Nn+oxZAjfo2caZ3n350c5W6FSEdQ86sNarj3c/jRV+H42AXsdGRBfPPIlnb/mUtxzWXfALn/PmRze2Gud6E/xsXwYtnlsWN8Tc5/oyxjn/jvyJrlY82xLUfWuPr/TqxzuXQZkIP9M7CXiyuP4B4WmsTnNhzinjrD+WO9bRhmdZWLXe4EKRtV5tpN3Hx3s2G+d79/MJf4qff0LnE72kfFEs4ITQvWLMab8C131dP9n9Je1Yx000Nz2jAf+UJwCBchc3NvGR1Qx71XXY2Ww1Jvx7YalzAPkX9rp5E5Z+pv+ja8bE43uN491b9dHO9Xx4lUxziLn21Nai/wXWM6t9vkvtrwAAAABJRU5ErkJggg==";
|
|
118
130
|
}
|
|
119
|
-
// Return the
|
|
131
|
+
// Return the IOTA chains that your wallet supports.
|
|
120
132
|
get chains() {
|
|
121
133
|
return SUPPORTED_CHAINS;
|
|
122
134
|
}
|
|
@@ -137,13 +149,13 @@ function registerUnsafeBurnerWallet(iotaClient) {
|
|
|
137
149
|
version: "1.0.0",
|
|
138
150
|
signPersonalMessage: __privateGet(this, _signPersonalMessage)
|
|
139
151
|
},
|
|
140
|
-
"iota:
|
|
141
|
-
version: "
|
|
142
|
-
|
|
152
|
+
"iota:signTransaction": {
|
|
153
|
+
version: "2.0.0",
|
|
154
|
+
signTransaction: __privateGet(this, _signTransaction)
|
|
143
155
|
},
|
|
144
|
-
"iota:
|
|
145
|
-
version: "
|
|
146
|
-
|
|
156
|
+
"iota:signAndExecuteTransaction": {
|
|
157
|
+
version: "2.0.0",
|
|
158
|
+
signAndExecuteTransaction: __privateGet(this, _signAndExecuteTransaction)
|
|
147
159
|
}
|
|
148
160
|
};
|
|
149
161
|
}
|
|
@@ -151,8 +163,8 @@ function registerUnsafeBurnerWallet(iotaClient) {
|
|
|
151
163
|
_on = new WeakMap();
|
|
152
164
|
_connect = new WeakMap();
|
|
153
165
|
_signPersonalMessage = new WeakMap();
|
|
154
|
-
|
|
155
|
-
|
|
166
|
+
_signTransaction = new WeakMap();
|
|
167
|
+
_signAndExecuteTransaction = new WeakMap();
|
|
156
168
|
return walletsApi.register(new UnsafeBurnerWallet());
|
|
157
169
|
}
|
|
158
170
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/hooks/wallet/useUnsafeBurnerWallet.ts", "../../../../src/hooks/useIotaClient.ts", "../../../../src/components/IotaClientProvider.tsx"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { Ed25519Keypair } from '@iota/iota-sdk/keypairs/ed25519';\nimport type {\n StandardConnectFeature,\n StandardConnectMethod,\n StandardEventsFeature,\n StandardEventsOnMethod,\n IotaFeatures,\n IotaSignAndExecuteTransactionBlockMethod,\n IotaSignPersonalMessageMethod,\n IotaSignTransactionBlockMethod,\n Wallet,\n} from '@iota/wallet-standard';\nimport { getWallets, ReadonlyWalletAccount, SUPPORTED_CHAINS } from '@iota/wallet-standard';\nimport { useEffect } from 'react';\n\nimport { useIotaClient } from '../useIotaClient.js';\n\nconst WALLET_NAME = 'Unsafe Burner Wallet';\n\nexport function useUnsafeBurnerWallet(enabled: boolean) {\n const iotaClient = useIotaClient();\n\n useEffect(() => {\n if (!enabled) {\n return;\n }\n const unregister = registerUnsafeBurnerWallet(iotaClient);\n return unregister;\n }, [enabled, iotaClient]);\n}\n\nfunction registerUnsafeBurnerWallet(iotaClient: IotaClient) {\n const walletsApi = getWallets();\n const registeredWallets = walletsApi.get();\n\n if (registeredWallets.find((wallet) => wallet.name === WALLET_NAME)) {\n console.warn(\n 'registerUnsafeBurnerWallet: Unsafe Burner Wallet already registered, skipping duplicate registration.',\n );\n return;\n }\n\n console.warn(\n 'Your application is currently using the unsafe burner wallet. Make sure that this wallet is disabled in production.',\n );\n\n const keypair = new Ed25519Keypair();\n const account = new ReadonlyWalletAccount({\n address: keypair.getPublicKey().toIotaAddress(),\n publicKey: keypair.getPublicKey().toIotaBytes(),\n chains: ['iota:unknown'],\n features: ['iota:signAndExecuteTransactionBlock', 'iota:signTransactionBlock'],\n });\n\n class UnsafeBurnerWallet implements Wallet {\n get version() {\n return '1.0.0' as const;\n }\n\n get name() {\n return WALLET_NAME;\n }\n\n get icon() {\n return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAJrElEQVR42tWbe2xT1x3H7UxAyD3XrdrSbGXlUbKWsq5rWdVuVOMRSEqSOmnVRZMmJqZNYv1nf3R/jWmVmVrtRRM/YwPd1nVTNcrE3pQCoikrIRAC4VVNY0hlD9ZOo1uCfe3ra9979v0dcy3s5Pper76Oh/STE+495/4+5/c85zqe2f7HAx5vKsS+monJj/CdHi/f4/HWW4f6AwdblmXjTM0NyS+movKtw9v+j6C5gKhyTMTTpA2x15Qwy+Pz75motOGdgKep8WF5ATgVZIt5NeO2wMqD0hfVGNPh3oYaYflsjG0l63PeyLCDnqbsLpZIhaRNFI+Ox+Le5KB0RybK8gDmJOkI07U4i/FhT1NDQl8Me5rUIfaDfELOJ0NsFa/SJQHm1WLsHcDqRWiy9BCL8s0N5t6UWWFVvxplejYm60hC91cNjPtzCTZsAptCVoeLP8PDDQJNCSodap6H+LtE8ZcdkvVkkD38vwDn4/Jvy4EhBhZSvRaUHiTXn31gJJxkUPoClBKKFizM+inhVA2cYIdM4HJouPvoe9s9H+KzDhyGK6KkmIqitBhww2C11rjQL2L4kgUwFxk8yPyzauUA3Pk/353XnA6zKbKCaQ2UlMvJF6W5uF5F8yHfZWZpC9HRmBziaEpm1bpY9XvhxuWJRldC7Mt03WlZwpjnkZUNa2DMG2EaPj9MGd2l2mofd0hQ7ZSopsXckHxVCUp32fXGdD0ZktrgFUmMqwhcWFjp87RArsD+9bn585IRaSHAKgBL3SZwOTRc8BKg7yYoskp5OJDiiPmF2Sj7ox0siYJ7lJA04EqvzZ9B1xSVt6PlW0IxZgUMJdZYAJuWngLQt9IRuZXmoTEkmci8ZtTXTViUKyasA9FRun5d8z6bfw0gYWm9mmCXxZatQgxfC7I2NVpRYQOxKWppLs4mcgn5NcibgL1K40xYp8CYY5TXEpjcb3LAJ0OZyyg3+2nySm6fjEtzkEz+7VBx3RTb+60z9dma7pkvwO2QQL5HzTtAdpKF7euw/HuzfrosBHy+ZsBimzbQshjWTVMDgez53B5MbjcGbr1ZjdUJOM5O0SLXzJ2R+uOA1dMAVoLsm5zb73JSId8t8Aa1LsAJdoTCrCaw6e3NC2DdFMUXWRg173mysJNOSUNskUJ1cOlXa2LhcbgmSszXYSn9hl3KSxTDjrZ2cbbfbWDyumsh9m3e7zCG7a3ETt+gtI7fx6lEOanZKDVvuA2cjYmt5xNOd2Louz3IQ12UZ2Zo3lkb9cDlvSs6m4Vk5Yqlabs0B97wT7PUuCXQz0Bnt9QxMPTW4iwBtmUlY8hFsHJPlzcQ1xuG75CVK1kXofCUGnU9fg1aVD7kfE9MoabtYkcAvIUYS2op3Hc3TTrDQzIAeojugTVLFolWDR6wFPtY0R66n6HltwjCIawnE2ymresk9NtN+pfUUi0mX6RJLfrh9zMRaRPOqubSA8W2MNzC0mHpK7j2ruuw5mYkxl5+2+HGQeg4yNYg7vNg+xMxFsuRMuiTsRJZG3cysAl4D9n4aC4un8L9qUyVvbCyYwFXX1nGUxFf1cCiEQqy75O+TpMwYKNKSPQUqhLyyWLsRbESLctx0YnixgfphRWA8pOPc+N4F9d+eV9V4OlCX/As5w5g+wtGhJGukp5go2R3D7EW9rSDcnGL56YgJHj+8GcFND/Vy41jj/H0jxc6HU/AA2QlR01UlH3D7CmITQnJq4lVWBi1yl8XYEh278c5H++F+Iui7r7bYR8tH/gbqoJN7fVODUhLYVVxzmYCEyOxFg7RUVa0egCHZZ55eRHnp/tKgMna6s/bbMdTxZgMzl9CCcmq7k690OzDfaeSN4QcsREjsQpgXHwyWyfg9K5WE7hc6JqTWjyihObfygOFOkv6i5K5TZx8LsL1sVS4NL8ItiB7sgAcEKcWHfUCVhK3kUVnBNbfXIs4l5xAv5sJs234eTUy93L0Au2otQOw5ORMyfQ6WwexFupVSHowG6uThXfebmlhWojMS3fazmMeGxEI6S2SUti6RAo2vKohVuH3qUG5FWm/PjH8kzutgSH5g58xrVwzIbZkxHf7OFjFC+wrMDXcpOqOKX/g01U/XPvVJyxdWsiJblqYmnZoWbDxAcR56X5WPuh4ewcL5PY9JBRUYjc7fzjG6Uc3mHBWbg23X1BLaFHOSnrw4bWiNAXSEWcWRntIignXTP/oDsfKZX66mMbZAPfhviU1AyYmJLYAMZa/QXjUSeIiixpj3UUFtd884KytjN7EjdGNNMbWwtlf3FvbQ4OQtIoYSzbxqVDLXMTxP8jnnbiyKcaJLvueGLD6kXW2sKZov1tpn7hwXf3ZUvq0K2FXOM7Op/Xgb6PhxsWIErYGVuK3WGXWkkwMMZVCVl5kWtax5A6usgemvnx4DelUcYcFC0eIbcbXKzggeyBjeXIhkftaKknJKLtnuSg7KmKQsrH+1nqbmLWY6w/tBGy/8xrruR5SM99LLIjfT/4ZbNZnQEPssIVb21rKTGRIPDagNoLdFMKgcuLc/TF6Bulk6c7ovg4TU+XvS6FNw1tDfVqH9MOPmBDui0hcK6wz744FlDjNe0m3aVldJYagtI6YbF+3ZGPsQHlN1vbeh8lJofqJ+uo9Zi4wXZxKFiXKGxbHT7pNq71oNg4Qi6MviE0FpRVqjGXILYoJ4tCjdYU1rWeMdPLc/ochj3B9pGNGL4NupGPRlUl35KMVxFLNO6ZnxYlBsUPqoMkbUqAb6VhMVKQ7MVT1dYdrL8hzEAcjpmvjHKphgaFb0ZVJZw7dwVD9q5fkgPTRbBxnzmGfgRLQsMCkG+moQdcp6GzzZsL2MGyllvBNGWM9RqMCk26kI7aBK526csVShZTfzid6FEzeiNAGP92jpCPQEbrW7EW5MbZxAz/fN9lg0IbQaaxrQ83/VoKPb/HqJx67Hw+43CDQBPsX0gm6ufXNvH4vP9rZapzx7+Nn+oxZAjfo2caZ3n350c5W6FSEdQ86sNarj3c/jRV+H42AXsdGRBfPPIlnb/mUtxzWXfALn/PmRze2Gud6E/xsXwYtnlsWN8Tc5/oyxjn/jvyJrlY82xLUfWuPr/TqxzuXQZkIP9M7CXiyuP4B4WmsTnNhzinjrD+WO9bRhmdZWLXe4EKRtV5tpN3Hx3s2G+d79/MJf4qff0LnE72kfFEs4ITQvWLMab8C131dP9n9Je1Yx000Nz2jAf+UJwCBchc3NvGR1Qx71XXY2Ww1Jvx7YalzAPkX9rp5E5Z+pv+ja8bE43uN491b9dHO9Xx4lUxziLn21Nai/wXWM6t9vkvtrwAAAABJRU5ErkJggg==' as const;\n }\n\n // Return the Iota chains that your wallet supports.\n get chains() {\n return SUPPORTED_CHAINS;\n }\n\n get accounts() {\n return [account];\n }\n\n get features(): StandardConnectFeature & StandardEventsFeature & IotaFeatures {\n return {\n 'standard:connect': {\n version: '1.0.0',\n connect: this.#connect,\n },\n 'standard:events': {\n version: '1.0.0',\n on: this.#on,\n },\n 'iota:signPersonalMessage': {\n version: '1.0.0',\n signPersonalMessage: this.#signPersonalMessage,\n },\n 'iota:signTransactionBlock': {\n version: '1.0.0',\n signTransactionBlock: this.#signTransactionBlock,\n },\n 'iota:signAndExecuteTransactionBlock': {\n version: '1.0.0',\n signAndExecuteTransactionBlock: this.#signAndExecuteTransactionBlock,\n },\n };\n }\n\n #on: StandardEventsOnMethod = () => {\n return () => {};\n };\n\n #connect: StandardConnectMethod = async () => {\n return { accounts: this.accounts };\n };\n\n #signPersonalMessage: IotaSignPersonalMessageMethod = async (messageInput) => {\n const { bytes, signature } = await keypair.signPersonalMessage(messageInput.message);\n return { bytes, signature };\n };\n\n #signTransactionBlock: IotaSignTransactionBlockMethod = async (transactionInput) => {\n const { bytes, signature } = await transactionInput.transactionBlock.sign({\n client: iotaClient,\n signer: keypair,\n });\n\n return {\n transactionBlockBytes: bytes,\n signature: signature,\n };\n };\n\n #signAndExecuteTransactionBlock: IotaSignAndExecuteTransactionBlockMethod = async (\n transactionInput,\n ) => {\n return await iotaClient.signAndExecuteTransactionBlock({\n signer: keypair,\n transactionBlock: transactionInput.transactionBlock,\n options: transactionInput.options,\n requestType: transactionInput.requestType,\n });\n };\n }\n\n return walletsApi.register(new UnsafeBurnerWallet());\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Local).url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n"],
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { Ed25519Keypair } from '@iota/iota-sdk/keypairs/ed25519';\nimport { Transaction } from '@iota/iota-sdk/transactions';\nimport { toB64 } from '@iota/iota-sdk/utils';\nimport type {\n StandardConnectFeature,\n StandardConnectMethod,\n StandardEventsFeature,\n StandardEventsOnMethod,\n IotaFeatures,\n IotaSignAndExecuteTransactionMethod,\n IotaSignPersonalMessageMethod,\n IotaSignTransactionMethod,\n Wallet,\n} from '@iota/wallet-standard';\nimport { getWallets, ReadonlyWalletAccount, SUPPORTED_CHAINS } from '@iota/wallet-standard';\nimport { useEffect } from 'react';\n\nimport { useIotaClient } from '../useIotaClient.js';\n\nconst WALLET_NAME = 'Unsafe Burner Wallet';\n\nexport function useUnsafeBurnerWallet(enabled: boolean) {\n const iotaClient = useIotaClient();\n\n useEffect(() => {\n if (!enabled) {\n return;\n }\n const unregister = registerUnsafeBurnerWallet(iotaClient);\n return unregister;\n }, [enabled, iotaClient]);\n}\n\nfunction registerUnsafeBurnerWallet(iotaClient: IotaClient) {\n const walletsApi = getWallets();\n const registeredWallets = walletsApi.get();\n\n if (registeredWallets.find((wallet) => wallet.name === WALLET_NAME)) {\n console.warn(\n 'registerUnsafeBurnerWallet: Unsafe Burner Wallet already registered, skipping duplicate registration.',\n );\n return;\n }\n\n console.warn(\n 'Your application is currently using the unsafe burner wallet. Make sure that this wallet is disabled in production.',\n );\n\n const keypair = new Ed25519Keypair();\n const account = new ReadonlyWalletAccount({\n address: keypair.getPublicKey().toIotaAddress(),\n publicKey: keypair.getPublicKey().toIotaBytes(),\n chains: ['iota:unknown'],\n features: ['iota:signTransaction', 'iota:signAndExecuteTransaction'],\n });\n\n class UnsafeBurnerWallet implements Wallet {\n get version() {\n return '1.0.0' as const;\n }\n\n get name() {\n return WALLET_NAME;\n }\n\n get icon() {\n return 'data:image/png;base64,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' as const;\n }\n\n // Return the IOTA chains that your wallet supports.\n get chains() {\n return SUPPORTED_CHAINS;\n }\n\n get accounts() {\n return [account];\n }\n\n get features(): StandardConnectFeature & StandardEventsFeature & IotaFeatures {\n return {\n 'standard:connect': {\n version: '1.0.0',\n connect: this.#connect,\n },\n 'standard:events': {\n version: '1.0.0',\n on: this.#on,\n },\n 'iota:signPersonalMessage': {\n version: '1.0.0',\n signPersonalMessage: this.#signPersonalMessage,\n },\n 'iota:signTransaction': {\n version: '2.0.0',\n signTransaction: this.#signTransaction,\n },\n 'iota:signAndExecuteTransaction': {\n version: '2.0.0',\n signAndExecuteTransaction: this.#signAndExecuteTransaction,\n },\n };\n }\n\n #on: StandardEventsOnMethod = () => {\n return () => {};\n };\n\n #connect: StandardConnectMethod = async () => {\n return { accounts: this.accounts };\n };\n\n #signPersonalMessage: IotaSignPersonalMessageMethod = async (messageInput) => {\n const { bytes, signature } = await keypair.signPersonalMessage(messageInput.message);\n return { bytes, signature };\n };\n\n #signTransaction: IotaSignTransactionMethod = async (transactionInput) => {\n const { bytes, signature } = await Transaction.from(\n await transactionInput.transaction.toJSON(),\n ).sign({\n client: iotaClient,\n signer: keypair,\n });\n\n transactionInput.signal?.throwIfAborted();\n\n return {\n bytes,\n signature: signature,\n };\n };\n\n #signAndExecuteTransaction: IotaSignAndExecuteTransactionMethod = async (\n transactionInput,\n ) => {\n const { bytes, signature } = await Transaction.from(\n await transactionInput.transaction.toJSON(),\n ).sign({\n client: iotaClient,\n signer: keypair,\n });\n\n transactionInput.signal?.throwIfAborted();\n\n const { rawEffects, digest } = await iotaClient.executeTransactionBlock({\n signature,\n transactionBlock: bytes,\n options: {\n showRawEffects: true,\n },\n });\n\n return {\n bytes,\n signature,\n digest,\n effects: toB64(new Uint8Array(rawEffects!)),\n };\n };\n }\n\n return walletsApi.register(new UnsafeBurnerWallet());\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Local).url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -24,6 +24,7 @@ function useWalletStore(selector) {
|
|
|
24
24
|
function useCurrentWallet() {
|
|
25
25
|
const currentWallet = useWalletStore((state) => state.currentWallet);
|
|
26
26
|
const connectionStatus = useWalletStore((state) => state.connectionStatus);
|
|
27
|
+
const supportedIntents = useWalletStore((state) => state.supportedIntents);
|
|
27
28
|
switch (connectionStatus) {
|
|
28
29
|
case "connecting":
|
|
29
30
|
return {
|
|
@@ -31,7 +32,8 @@ function useCurrentWallet() {
|
|
|
31
32
|
currentWallet: null,
|
|
32
33
|
isDisconnected: false,
|
|
33
34
|
isConnecting: true,
|
|
34
|
-
isConnected: false
|
|
35
|
+
isConnected: false,
|
|
36
|
+
supportedIntents: []
|
|
35
37
|
};
|
|
36
38
|
case "disconnected":
|
|
37
39
|
return {
|
|
@@ -39,7 +41,8 @@ function useCurrentWallet() {
|
|
|
39
41
|
currentWallet: null,
|
|
40
42
|
isDisconnected: true,
|
|
41
43
|
isConnecting: false,
|
|
42
|
-
isConnected: false
|
|
44
|
+
isConnected: false,
|
|
45
|
+
supportedIntents: []
|
|
43
46
|
};
|
|
44
47
|
case "connected": {
|
|
45
48
|
return {
|
|
@@ -47,7 +50,8 @@ function useCurrentWallet() {
|
|
|
47
50
|
currentWallet,
|
|
48
51
|
isDisconnected: false,
|
|
49
52
|
isConnecting: false,
|
|
50
|
-
isConnected: true
|
|
53
|
+
isConnected: true,
|
|
54
|
+
supportedIntents
|
|
51
55
|
};
|
|
52
56
|
}
|
|
53
57
|
}
|