@seams/wallet 0.15.4 → 0.17.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/README.md +47 -19
- package/THIRD_PARTY_NOTICES.md +102 -1
- package/dist/.build-inputs.sha256 +1 -1
- package/dist/esm/SeamsWeb/SeamsWeb.js +20 -1
- package/dist/esm/SeamsWeb/operations/registration/registrationSignerSet.js +73 -0
- package/dist/esm/SeamsWeb/operations/session/thresholdEcdsaProvisioning.js +22 -0
- package/dist/esm/SeamsWeb/publicApi/capabilitySelection.js +2 -1
- package/dist/esm/SeamsWeb/publicApi/createPublicApi.js +26 -1
- package/dist/esm/SeamsWeb/walletIframe/client/overlay/overlay-controller.js +71 -69
- package/dist/esm/SeamsWeb/walletIframe/client/preferenceState.js +6 -8
- package/dist/esm/SeamsWeb/walletIframe/client/preferences.js +7 -5
- package/dist/esm/SeamsWeb/walletIframe/client/progress/on-events-progress-bus.js +2 -1
- package/dist/esm/SeamsWeb/walletIframe/client/router.js +116 -108
- package/dist/esm/SeamsWeb/walletIframe/client/surface/transactionSurfaceQueue.js +11 -7
- package/dist/esm/SeamsWeb/walletIframe/client/transactionReviewReservation.js +3 -2
- package/dist/esm/SeamsWeb/walletIframe/client/transport/IframeTransport.js +53 -49
- package/dist/esm/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.js +6 -2
- package/dist/esm/SeamsWeb/walletIframe/coordinator.js +18 -13
- package/dist/esm/SeamsWeb/walletIframe/host/auth-menu/domain.js +13 -1
- package/dist/esm/SeamsWeb/walletIframe/host/surface-measurement-reporter.js +14 -13
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.js +1 -4
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +306 -301
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/mountAuthMenuSurface.js +9 -6
- package/dist/esm/SeamsWeb/walletIframe/shared/exactSessionState.js +1 -0
- package/dist/esm/core/config/configBuilder.js +1 -1
- package/dist/esm/core/config/defaultConfigs.js +1 -0
- package/dist/esm/core/indexedDB/accountSignerLifecycle.js +2 -0
- package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.js +1 -0
- package/dist/esm/core/indexedDB/seamsWalletDB/manager.js +6 -5
- package/dist/esm/core/indexedDB/seamsWalletDB/repositories.js +2 -0
- package/dist/esm/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js +2 -2
- package/dist/esm/core/indexedDB/unifiedIndexedDBManager.js +6 -3
- package/dist/esm/core/rpcClients/near/NearRpcError.js +7 -0
- package/dist/esm/core/rpcClients/relayer/routerAbNormalSigning.js +3 -0
- package/dist/esm/core/rpcClients/relayer/walletRegistration.js +6 -2
- package/dist/esm/core/rpcClients/relayer/walletSessionAuthorizationStatus.js +5 -4
- package/dist/esm/core/signingEngine/chains/evm/evmAdapter.js +2 -1
- package/dist/esm/core/signingEngine/chains/tempo/tempoAdapter.js +2 -1
- package/dist/esm/core/signingEngine/flows/registration/accountLifecycle.js +1 -1
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signers/secp256k1.js +5 -1
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signers/webauthnP256.js +1 -1
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlow.js +3 -2
- package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/presignatureRefillProgress.js +5 -7
- package/dist/esm/core/signingEngine/session/lifecycle/walletSessionFailure.js +2 -0
- package/dist/esm/core/signingEngine/session/material/ecdsaCapabilityManifest.js +68 -10
- package/dist/esm/core/signingEngine/session/material/walletSigningStateFailure.js +2 -2
- package/dist/esm/core/signingEngine/session/operationState/authorizationAdmission.js +2 -0
- package/dist/esm/core/signingEngine/stepUpConfirmation/methodSelection.js +2 -0
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.js +29 -28
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationBody.js +3 -6
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.js +20 -23
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationDrawer.js +134 -137
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationModal.js +17 -20
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/EmailOtpContent.js +41 -39
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/EmailOtpInput.js +14 -17
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/HaloBorder.js +21 -24
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationContent.js +6 -9
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.js +100 -103
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.js +70 -73
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +23 -26
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReview.js +19 -22
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionTree.js +114 -117
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/email-otp-session.js +81 -80
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +41 -37
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountRecoveryCodeBackupSurface.js +13 -9
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/tree.js +4 -21
- package/dist/esm/core/types/actionBuilders.js +16 -2
- package/dist/esm/core/types/amounts.js +83 -0
- package/dist/esm/core/types/linkDevice.js +1 -1
- package/dist/esm/externalEvm/controller.js +49 -48
- package/dist/esm/index.js +2 -1
- package/dist/esm/react/boundWallet.js +56 -0
- package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.css +13 -2
- package/dist/esm/react/components/AccountMenuButton/WalletRegionSection.js +90 -93
- package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.js +55 -58
- package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +17 -6
- package/dist/esm/react/components/ShowQRCode.css +13 -2
- package/dist/esm/react/context/index.js +30 -3
- package/dist/esm/react/context/useSeamsWithSdkFlow.js +1 -1
- package/dist/esm/react/externalEvm.js +22 -25
- package/dist/esm/react/index.js +4 -4
- package/dist/esm/react/styles/styles.css +13 -2
- package/dist/esm/react/transactionReview/TransactionReviewHost.js +3 -6
- package/dist/esm/react/transactionReview/boundCalls.js +1 -1
- package/dist/esm/react/transactionReview/controller.js +121 -119
- package/dist/esm/sdk/ConfirmationDrawer-CXVNmfTy.js +1 -0
- package/dist/esm/sdk/NonceCoordinator-DuDKN-B8.js +1 -0
- package/dist/{public/sdk/accountLifecycle-CBOkr0vU.js → esm/sdk/accountLifecycle-D61FIpFS.js} +1 -1
- package/dist/esm/sdk/{activeWalletSession-WdZkhtBB.js → activeWalletSession-Ba6X4CUN.js} +1 -1
- package/dist/esm/sdk/adapters-CTlDBRJy.js +2 -0
- package/dist/esm/sdk/authorizationAdmission-Dd23mTx7.js +1 -0
- package/dist/esm/sdk/{canonicalPrimitives-Dsbsxgxc.js → canonicalPrimitives-BOzRXzfv.js} +1 -1
- package/dist/esm/sdk/{capabilityKinds-N8xo_IEh.js → capabilityKinds-D0Yrp9uf.js} +1 -1
- package/dist/esm/sdk/{chains-C_X_fNuS.js → chains-CPmd4s9f.js} +1 -1
- package/dist/esm/sdk/challengeDelivery-FD9GHK1T.js +1 -0
- package/dist/esm/sdk/{clientSessionPersistenceState-CBylL1Ul.js → clientSessionPersistenceState-BHRUSWMt.js} +1 -1
- package/dist/esm/sdk/{commitQueue-DYEgzoLA.js → commitQueue-DOIaR0Hr.js} +1 -1
- package/dist/esm/sdk/{configHelpers-B-hs0mTO.js → configHelpers-BXdl5Mxs.js} +1 -1
- package/dist/esm/sdk/{digestEncoding-BX3VW9eF.js → digestEncoding-CbEFYvlJ.js} +1 -1
- package/dist/esm/sdk/{display-DsfJkAra.js → display-CY_aJEn6.js} +1 -1
- package/dist/esm/sdk/domainIds-C3fUa33Q.js +1 -0
- package/dist/esm/sdk/ecdsaCapabilityManifest-DzA996y9.js +1 -0
- package/dist/esm/sdk/{ecdsaChainTarget-Bfatk3oP.js → ecdsaChainTarget-DkOrgv4y.js} +1 -1
- package/dist/esm/sdk/ecdsaDerivationClientWasm-DQlajPpE.js +1 -0
- package/dist/{public/sdk/ecdsaDerivationExport-DOGzq0qC.js → esm/sdk/ecdsaDerivationExport-DyugdheE.js} +1 -1
- package/dist/esm/sdk/{ecdsaWalletRecords-CHfrYvKr.js → ecdsaWalletRecords-C_v74n5X.js} +1 -1
- package/dist/{public/sdk/emailOtpEcdsaDerivationIdentity-Bik0N8v9.js → esm/sdk/emailOtpEcdsaDerivationIdentity-BDVjvnmO.js} +1 -1
- package/dist/esm/sdk/{errors-DIWY1KR9.js → errors-ADOZT8oV.js} +1 -1
- package/dist/esm/sdk/export-viewer-host-DsRaS0UH.js +1 -0
- package/dist/{public/sdk/exportKeypairOperation-DzbjKbnk.js → esm/sdk/exportKeypairOperation-SJPysnE1.js} +1 -1
- package/dist/esm/sdk/{helpers-B9fpZNAP.js → helpers-D3CUEdHI.js} +1 -1
- package/dist/esm/sdk/{host-z-JJRWQe.js → host-GPb_mSAQ.js} +1 -1
- package/dist/esm/sdk/{intentDigest-P_-CM7lS.js → intentDigest-CGLrsMgj.js} +1 -1
- package/dist/esm/sdk/{lanes-5kcTFbPx.js → lanes-DJKIHJBm.js} +1 -1
- package/dist/esm/sdk/{localOnly-C5mSXb_D.js → localOnly-CPmpw381.js} +1 -1
- package/dist/esm/sdk/mountExportPrivateKeySurface-C8_tpDHF.js +1 -0
- package/dist/esm/sdk/mountRecoveryCodeBackupSurface-BtNFtmSj.js +2 -0
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-J6EHFScV.js +1 -0
- package/dist/{public/sdk/nearEd25519YaoSigningPreparation-RIfkYN0d.js → esm/sdk/nearEd25519YaoSigningPreparation-CqBNMG87.js} +1 -1
- package/dist/esm/sdk/{nonceLaneKeys-BCYfl1wv.js → nonceLaneKeys-D18nlLjh.js} +1 -1
- package/dist/esm/sdk/{normalization-n503J-BI.js → normalization-Ct9-AY13.js} +1 -1
- package/dist/esm/sdk/{operationFingerprint-BHNYryLY.js → operationFingerprint-Boa9DQ51.js} +1 -1
- package/dist/esm/sdk/{passkey-custody-DpTM-eNJ.js → passkey-custody-CBSal3E9.js} +1 -1
- package/dist/esm/sdk/{pendingWalletRecoveryCodeBackup-C60sZMj5.js → pendingWalletRecoveryCodeBackup-CvsrXbzn.js} +1 -1
- package/dist/esm/sdk/presignaturePool-CQNt13kE.js +1 -0
- package/dist/esm/sdk/{primitives-CqrjmIAH.js → primitives-cC0a9GRC.js} +1 -1
- package/dist/{public/sdk/recovery-entrypoint-BULjaFBM.js → esm/sdk/recovery-entrypoint-nj7Zo3CR.js} +1 -1
- package/dist/esm/sdk/{registration-CyF7nOXs.js → registration-49OGU_GZ.js} +1 -1
- package/dist/esm/sdk/registration-C7tywPXF.js +1 -0
- package/dist/esm/sdk/{registrationAccounts-BQMUusdD.js → registrationAccounts-9GFI0Ger.js} +1 -1
- package/dist/esm/sdk/{registrationAuthMethodInput-RbSR7R1G.js → registrationAuthMethodInput-B23_HRil.js} +1 -1
- package/dist/esm/sdk/{registrationIds-BaK3jUS6.js → registrationIds-Br-zI4_5.js} +1 -1
- package/dist/esm/sdk/{registrationIntent-090Zj7Iu.js → registrationIntent-PqmcTEE3.js} +1 -1
- package/dist/esm/sdk/{registrationSignerPlan-CPzHavPM.js → registrationSignerPlan-BHkqlian.js} +1 -1
- package/dist/{public/sdk/requireStepUpAuth-BCY5ZStI.js → esm/sdk/requireStepUpAuth-C4PGTly-.js} +1 -1
- package/dist/esm/sdk/routerAbNormalSigning-xxATTIh5.js +1 -0
- package/dist/esm/sdk/runtime-auth-CpjGW90U.js +1 -0
- package/dist/esm/sdk/{runtime-device-link-Dq8g_UNb.js → runtime-device-link-CKgfGi7D.js} +1 -1
- package/dist/esm/sdk/{runtime-ecdsa-tempo-AGjT7Xpa.js → runtime-ecdsa-tempo-5VV9xSEh.js} +1 -1
- package/dist/esm/sdk/{runtime-email-otp-BpBOuSsT.js → runtime-email-otp-D1hYZNn6.js} +1 -1
- package/dist/esm/sdk/{runtime-export-CBsacCPY.js → runtime-export-B92wQD25.js} +1 -1
- package/dist/esm/sdk/{runtime-near-J3hKjC7G.js → runtime-near-CUuKg38M.js} +1 -1
- package/dist/esm/sdk/runtime-preferences-EdL3G_MO.js +1 -0
- package/dist/esm/sdk/{runtime-recovery-codes-GOytzExh.js → runtime-recovery-codes-LR4mg7-k.js} +1 -1
- package/dist/esm/sdk/runtime-recovery-uyw8sywI.js +1 -0
- package/dist/esm/sdk/{sdkSentEvents-D4KtK7_I.js → sdkSentEvents-DujYAPEM.js} +1 -1
- package/dist/esm/sdk/secp256k1-BldUPNQI.js +1 -0
- package/dist/{public/sdk/sessionObservationRevision-CnEOLDbl.js → esm/sdk/sessionObservationRevision-DmmNV25w.js} +1 -1
- package/dist/esm/sdk/shared-ha31XIdc.js +6 -0
- package/dist/{public/sdk/signEvmFamily-Cpm3e6Zs.js → esm/sdk/signEvmFamily-C_RvEnDB.js} +1 -1
- package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-CUKdq5dE.js +1 -0
- package/dist/esm/sdk/{signEvmWithUiConfirm-BRmdLgmm.js → signEvmWithUiConfirm-CxXzcvj2.js} +1 -1
- package/dist/esm/sdk/signNear-Dno7NsP_.js +1 -0
- package/dist/esm/sdk/signatureUses-B_nN17i7.js +1 -0
- package/dist/esm/sdk/{signerDomain-Dp7BhfmZ.js → signerDomain-BFqRQ0Jl.js} +1 -1
- package/dist/{public/sdk/signingFlow-VAnM8L5C.js → esm/sdk/signingFlow-DtugI_2z.js} +2 -2
- package/dist/esm/sdk/{signingQueue-D_Ebmzcn.js → signingQueue-C1Pb07gm.js} +1 -1
- package/dist/{public/sdk/singletons-BXhnsqeY.js → esm/sdk/singletons-DxIyVhNb.js} +1 -1
- package/dist/esm/sdk/surface-measurement-reporter-BJhfiPw6.js +1 -0
- package/dist/{public/sdk/thresholdEcdsa-CneSKcRt.js → esm/sdk/thresholdEcdsa-murTq-xz.js} +1 -1
- package/dist/esm/sdk/{trace-BBux0jtr.js → trace-CsRMlSh1.js} +1 -1
- package/dist/{public/sdk/transaction-activity-Cccvec2J.js → esm/sdk/transaction-activity-C0nCSW6c.js} +1 -1
- package/dist/esm/sdk/transactionReviewAdmission-CNNho8IG.js +1 -0
- package/dist/{public/sdk/transactionState-Day-1x7Y.js → esm/sdk/transactionState-XbZm9Zon.js} +1 -1
- package/dist/esm/sdk/tx-confirm-ui.js +709 -744
- package/dist/esm/sdk/{types-hKLqDUhR.js → types-CQTWmtqu.js} +1 -1
- package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
- package/dist/{public/sdk/wallet-recovery-Bfhfk52N.js → esm/sdk/wallet-recovery-CVUalZ3p.js} +1 -1
- package/dist/esm/sdk/wallet-ui.css +1 -1
- package/dist/{public/sdk/walletAuthMethodRecord-LniOQQmj.js → esm/sdk/walletAuthMethodRecord-Bv68Vq-g.js} +1 -1
- package/dist/esm/sdk/{walletAuthority-CAiGuWW2.js → walletAuthority-v5wvv3IB.js} +1 -1
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-rRHExT_R.js +1 -0
- package/dist/esm/sdk/{walletDbName-DtRewci9.js → walletDbName-DRzPv5Ir.js} +1 -1
- package/dist/esm/sdk/{walletOwnershipGeneration-B6HyR2rE.js → walletOwnershipGeneration-pMmmJ6XA.js} +1 -1
- package/dist/esm/sdk/{walletRecoveryCommit-C6HF84_U.js → walletRecoveryCommit-DvC6WlGz.js} +1 -1
- package/dist/esm/sdk/{walletRecoveryRotate-BN3H8byw.js → walletRecoveryRotate-Dd3prJpr.js} +1 -1
- package/dist/esm/sdk/walletRegistrationSetupPrewarm-DcbhVNMQ.js +1 -0
- package/dist/esm/sdk/walletSessionAuthorizationStatus-DVV3xkAx.js +1 -0
- package/dist/esm/sdk/walletSessionAuthorizationStore-D-MhJ0PC.js +1 -0
- package/dist/esm/sdk/walletSessionFailure-C6TAQTZn.js +1 -0
- package/dist/esm/sdk/webauthnP256-XgYu-Y6E.js +1 -0
- package/dist/esm/sdk/webauthnPromptCoordinator-D5sP8Q7e.js +1 -0
- package/dist/esm/shared-ts/src/authorization/delegatedAuthority.js +1 -1
- package/dist/esm/shared-ts/src/authorization/operationFingerprint.js +6 -0
- package/dist/esm/shared-ts/src/near/nearClient.js +6 -0
- package/dist/esm/shared-ts/src/threshold/participants.js +2 -1
- package/dist/esm/shared-ts/src/threshold/secp256k1.js +6 -0
- package/dist/esm/shared-ts/src/utils/domainIds.js +7 -0
- package/dist/esm/shared-ts/src/utils/index.js +1 -1
- package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +14 -1
- package/dist/esm/shared-ts/src/utils/routerAbEd25519Yao.js +5 -4
- package/dist/esm/utils/qrScanner.js +10 -8
- package/dist/public/headers.manifest.json +1 -1
- package/dist/public/sdk/ConfirmationDrawer-CXVNmfTy.js +1 -0
- package/dist/public/sdk/NonceCoordinator-DuDKN-B8.js +1 -0
- package/dist/{esm/sdk/accountLifecycle-CBOkr0vU.js → public/sdk/accountLifecycle-D61FIpFS.js} +1 -1
- package/dist/public/sdk/{activeWalletSession-WdZkhtBB.js → activeWalletSession-Ba6X4CUN.js} +1 -1
- package/dist/public/sdk/adapters-CTlDBRJy.js +2 -0
- package/dist/public/sdk/authorizationAdmission-Dd23mTx7.js +1 -0
- package/dist/public/sdk/{canonicalPrimitives-Dsbsxgxc.js → canonicalPrimitives-BOzRXzfv.js} +1 -1
- package/dist/public/sdk/{capabilityKinds-N8xo_IEh.js → capabilityKinds-D0Yrp9uf.js} +1 -1
- package/dist/public/sdk/{chains-C_X_fNuS.js → chains-CPmd4s9f.js} +1 -1
- package/dist/public/sdk/challengeDelivery-FD9GHK1T.js +1 -0
- package/dist/public/sdk/{clientSessionPersistenceState-CBylL1Ul.js → clientSessionPersistenceState-BHRUSWMt.js} +1 -1
- package/dist/public/sdk/{commitQueue-DYEgzoLA.js → commitQueue-DOIaR0Hr.js} +1 -1
- package/dist/public/sdk/{configHelpers-B-hs0mTO.js → configHelpers-BXdl5Mxs.js} +1 -1
- package/dist/public/sdk/{digestEncoding-BX3VW9eF.js → digestEncoding-CbEFYvlJ.js} +1 -1
- package/dist/public/sdk/{display-DsfJkAra.js → display-CY_aJEn6.js} +1 -1
- package/dist/public/sdk/domainIds-C3fUa33Q.js +1 -0
- package/dist/public/sdk/ecdsaCapabilityManifest-DzA996y9.js +1 -0
- package/dist/public/sdk/{ecdsaChainTarget-Bfatk3oP.js → ecdsaChainTarget-DkOrgv4y.js} +1 -1
- package/dist/public/sdk/ecdsaDerivationClientWasm-DQlajPpE.js +1 -0
- package/dist/{esm/sdk/ecdsaDerivationExport-DOGzq0qC.js → public/sdk/ecdsaDerivationExport-DyugdheE.js} +1 -1
- package/dist/public/sdk/{ecdsaWalletRecords-CHfrYvKr.js → ecdsaWalletRecords-C_v74n5X.js} +1 -1
- package/dist/{esm/sdk/emailOtpEcdsaDerivationIdentity-Bik0N8v9.js → public/sdk/emailOtpEcdsaDerivationIdentity-BDVjvnmO.js} +1 -1
- package/dist/public/sdk/{errors-DIWY1KR9.js → errors-ADOZT8oV.js} +1 -1
- package/dist/public/sdk/export-viewer-host-DsRaS0UH.js +1 -0
- package/dist/{esm/sdk/exportKeypairOperation-DzbjKbnk.js → public/sdk/exportKeypairOperation-SJPysnE1.js} +1 -1
- package/dist/public/sdk/{helpers-B9fpZNAP.js → helpers-D3CUEdHI.js} +1 -1
- package/dist/public/sdk/{host-z-JJRWQe.js → host-GPb_mSAQ.js} +1 -1
- package/dist/public/sdk/{intentDigest-P_-CM7lS.js → intentDigest-CGLrsMgj.js} +1 -1
- package/dist/public/sdk/{lanes-5kcTFbPx.js → lanes-DJKIHJBm.js} +1 -1
- package/dist/public/sdk/{localOnly-C5mSXb_D.js → localOnly-CPmpw381.js} +1 -1
- package/dist/public/sdk/mountExportPrivateKeySurface-C8_tpDHF.js +1 -0
- package/dist/public/sdk/mountRecoveryCodeBackupSurface-BtNFtmSj.js +2 -0
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-J6EHFScV.js +1 -0
- package/dist/{esm/sdk/nearEd25519YaoSigningPreparation-RIfkYN0d.js → public/sdk/nearEd25519YaoSigningPreparation-CqBNMG87.js} +1 -1
- package/dist/public/sdk/{nonceLaneKeys-BCYfl1wv.js → nonceLaneKeys-D18nlLjh.js} +1 -1
- package/dist/public/sdk/{normalization-n503J-BI.js → normalization-Ct9-AY13.js} +1 -1
- package/dist/public/sdk/{operationFingerprint-BHNYryLY.js → operationFingerprint-Boa9DQ51.js} +1 -1
- package/dist/public/sdk/{passkey-custody-DpTM-eNJ.js → passkey-custody-CBSal3E9.js} +1 -1
- package/dist/public/sdk/{pendingWalletRecoveryCodeBackup-C60sZMj5.js → pendingWalletRecoveryCodeBackup-CvsrXbzn.js} +1 -1
- package/dist/public/sdk/presignaturePool-CQNt13kE.js +1 -0
- package/dist/public/sdk/{primitives-CqrjmIAH.js → primitives-cC0a9GRC.js} +1 -1
- package/dist/{esm/sdk/recovery-entrypoint-BULjaFBM.js → public/sdk/recovery-entrypoint-nj7Zo3CR.js} +1 -1
- package/dist/public/sdk/{registration-CyF7nOXs.js → registration-49OGU_GZ.js} +1 -1
- package/dist/public/sdk/registration-C7tywPXF.js +1 -0
- package/dist/public/sdk/{registrationAccounts-BQMUusdD.js → registrationAccounts-9GFI0Ger.js} +1 -1
- package/dist/public/sdk/{registrationAuthMethodInput-RbSR7R1G.js → registrationAuthMethodInput-B23_HRil.js} +1 -1
- package/dist/public/sdk/{registrationIds-BaK3jUS6.js → registrationIds-Br-zI4_5.js} +1 -1
- package/dist/public/sdk/{registrationIntent-090Zj7Iu.js → registrationIntent-PqmcTEE3.js} +1 -1
- package/dist/public/sdk/{registrationSignerPlan-CPzHavPM.js → registrationSignerPlan-BHkqlian.js} +1 -1
- package/dist/{esm/sdk/requireStepUpAuth-BCY5ZStI.js → public/sdk/requireStepUpAuth-C4PGTly-.js} +1 -1
- package/dist/public/sdk/routerAbNormalSigning-xxATTIh5.js +1 -0
- package/dist/public/sdk/runtime-auth-CpjGW90U.js +1 -0
- package/dist/public/sdk/{runtime-device-link-Dq8g_UNb.js → runtime-device-link-CKgfGi7D.js} +1 -1
- package/dist/public/sdk/{runtime-ecdsa-tempo-AGjT7Xpa.js → runtime-ecdsa-tempo-5VV9xSEh.js} +1 -1
- package/dist/public/sdk/{runtime-email-otp-BpBOuSsT.js → runtime-email-otp-D1hYZNn6.js} +1 -1
- package/dist/public/sdk/{runtime-export-CBsacCPY.js → runtime-export-B92wQD25.js} +1 -1
- package/dist/public/sdk/{runtime-near-J3hKjC7G.js → runtime-near-CUuKg38M.js} +1 -1
- package/dist/public/sdk/runtime-preferences-EdL3G_MO.js +1 -0
- package/dist/public/sdk/{runtime-recovery-codes-GOytzExh.js → runtime-recovery-codes-LR4mg7-k.js} +1 -1
- package/dist/public/sdk/runtime-recovery-uyw8sywI.js +1 -0
- package/dist/public/sdk/{sdkSentEvents-D4KtK7_I.js → sdkSentEvents-DujYAPEM.js} +1 -1
- package/dist/public/sdk/secp256k1-BldUPNQI.js +1 -0
- package/dist/{esm/sdk/sessionObservationRevision-CnEOLDbl.js → public/sdk/sessionObservationRevision-DmmNV25w.js} +1 -1
- package/dist/public/sdk/shared-ha31XIdc.js +6 -0
- package/dist/{esm/sdk/signEvmFamily-Cpm3e6Zs.js → public/sdk/signEvmFamily-C_RvEnDB.js} +1 -1
- package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-CUKdq5dE.js +1 -0
- package/dist/public/sdk/{signEvmWithUiConfirm-BRmdLgmm.js → signEvmWithUiConfirm-CxXzcvj2.js} +1 -1
- package/dist/public/sdk/signNear-Dno7NsP_.js +1 -0
- package/dist/public/sdk/signatureUses-B_nN17i7.js +1 -0
- package/dist/public/sdk/{signerDomain-Dp7BhfmZ.js → signerDomain-BFqRQ0Jl.js} +1 -1
- package/dist/{esm/sdk/signingFlow-VAnM8L5C.js → public/sdk/signingFlow-DtugI_2z.js} +2 -2
- package/dist/public/sdk/{signingQueue-D_Ebmzcn.js → signingQueue-C1Pb07gm.js} +1 -1
- package/dist/{esm/sdk/singletons-BXhnsqeY.js → public/sdk/singletons-DxIyVhNb.js} +1 -1
- package/dist/public/sdk/surface-measurement-reporter-BJhfiPw6.js +1 -0
- package/dist/{esm/sdk/thresholdEcdsa-CneSKcRt.js → public/sdk/thresholdEcdsa-murTq-xz.js} +1 -1
- package/dist/public/sdk/{trace-BBux0jtr.js → trace-CsRMlSh1.js} +1 -1
- package/dist/{esm/sdk/transaction-activity-Cccvec2J.js → public/sdk/transaction-activity-C0nCSW6c.js} +1 -1
- package/dist/public/sdk/transactionReviewAdmission-CNNho8IG.js +1 -0
- package/dist/{esm/sdk/transactionState-Day-1x7Y.js → public/sdk/transactionState-XbZm9Zon.js} +1 -1
- package/dist/public/sdk/tx-confirm-ui.js +709 -744
- package/dist/public/sdk/{types-hKLqDUhR.js → types-CQTWmtqu.js} +1 -1
- package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
- package/dist/{esm/sdk/wallet-recovery-Bfhfk52N.js → public/sdk/wallet-recovery-CVUalZ3p.js} +1 -1
- package/dist/public/sdk/wallet-ui.css +1 -1
- package/dist/{esm/sdk/walletAuthMethodRecord-LniOQQmj.js → public/sdk/walletAuthMethodRecord-Bv68Vq-g.js} +1 -1
- package/dist/public/sdk/{walletAuthority-CAiGuWW2.js → walletAuthority-v5wvv3IB.js} +1 -1
- package/dist/public/sdk/walletCustodyEcdsaContinuity-rRHExT_R.js +1 -0
- package/dist/public/sdk/{walletDbName-DtRewci9.js → walletDbName-DRzPv5Ir.js} +1 -1
- package/dist/public/sdk/{walletOwnershipGeneration-B6HyR2rE.js → walletOwnershipGeneration-pMmmJ6XA.js} +1 -1
- package/dist/public/sdk/{walletRecoveryCommit-C6HF84_U.js → walletRecoveryCommit-DvC6WlGz.js} +1 -1
- package/dist/public/sdk/{walletRecoveryRotate-BN3H8byw.js → walletRecoveryRotate-Dd3prJpr.js} +1 -1
- package/dist/public/sdk/walletRegistrationSetupPrewarm-DcbhVNMQ.js +1 -0
- package/dist/public/sdk/walletSessionAuthorizationStatus-DVV3xkAx.js +1 -0
- package/dist/public/sdk/walletSessionAuthorizationStore-D-MhJ0PC.js +1 -0
- package/dist/public/sdk/walletSessionFailure-C6TAQTZn.js +1 -0
- package/dist/public/sdk/webauthnP256-XgYu-Y6E.js +1 -0
- package/dist/public/sdk/webauthnPromptCoordinator-D5sP8Q7e.js +1 -0
- package/dist/public/sdk/workers/device-linking-key.worker.js +12 -11
- package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +146 -48
- package/dist/public/sdk/workers/ecdsa-online-client.worker.js +7 -6
- package/dist/public/sdk/workers/ecdsa-presign-client.worker.js +7 -6
- package/dist/public/sdk/workers/email-otp.worker.js +24 -4
- package/dist/public/sdk/workers/passkey-mpc-export.worker.js +17 -1
- package/dist/public/sdk/workers/passkey-mpc-session.worker.js +2 -1
- package/dist/public/sdk/workers/wallet-custody-ceremony.worker.js +2 -0
- package/dist/public/wallet-assets.manifest.json +190 -190
- package/dist/public/wallet-service/index.html +4 -4
- package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +14 -14
- package/dist/types/shared-ts/src/authorization/delegatedAuthority.d.ts +1 -1
- package/dist/types/shared-ts/src/device-linking/ed25519ExportRoot.d.ts +1 -1
- package/dist/types/shared-ts/src/device-linking/requestProof.d.ts +1 -1
- package/dist/types/shared-ts/src/device-linking/sourceContribution.d.ts +5 -5
- package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +3 -3
- package/dist/types/shared-ts/src/passkey-custody/custodySecretBinding.d.ts +1 -1
- package/dist/types/shared-ts/src/tenant-root/tenantRootIdentity.d.ts +1 -1
- package/dist/types/shared-ts/src/tenant-root/tenantRootOperationRecord.d.ts +2 -2
- package/dist/types/shared-ts/src/utils/base64.d.ts +2 -2
- package/dist/types/shared-ts/src/utils/digestEncoding.d.ts +1 -1
- package/dist/types/shared-ts/src/utils/digests.d.ts +2 -2
- package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +16 -16
- package/dist/types/shared-ts/src/utils/emailOtpRecoveryKey.d.ts +1 -1
- package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +10 -10
- package/dist/types/shared-ts/src/utils/routerAbEd25519Yao.d.ts +12 -11
- package/dist/types/shared-ts/src/utils/routerAbPublicKeyset.d.ts +3 -3
- package/dist/types/shared-ts/src/utils/routerAbTraceContext.d.ts +1 -1
- package/dist/types/shared-ts/src/utils/signerDomain.d.ts +15 -15
- package/dist/types/shared-ts/src/utils/signingSessionSeal.d.ts +11 -11
- package/dist/types/shared-ts/src/utils/walletSessionFailure.d.ts +8 -8
- package/dist/types/shared-ts/src/utils/webauthnDeviceInfo.d.ts +2 -2
- package/dist/types/shared-ts/src/utils/wireSchema.d.ts +1 -1
- package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +1 -1
- package/dist/types/wallet/build-paths.d.ts +73 -73
- package/dist/types/wallet/src/SeamsWeb/operations/authMethods/emailOtp/googleEmailOtpWalletAuthFlow.d.ts +3 -2
- package/dist/types/wallet/src/SeamsWeb/operations/devices/deviceLinkingResume.d.ts +2 -2
- package/dist/types/wallet/src/SeamsWeb/operations/devices/linkDeviceTargetActivation.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/operations/registration/pendingRegistrationRecovery.d.ts +3 -3
- package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationEd25519Yao.d.ts +4 -3
- package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationSignerSet.d.ts +5 -0
- package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationTiming.d.ts +2 -2
- package/dist/types/wallet/src/SeamsWeb/publicApi/createPublicApi.d.ts +10 -1
- package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +4 -2
- package/dist/types/wallet/src/SeamsWeb/signingSurface/BrowserSigningSurface.d.ts +1 -0
- package/dist/types/wallet/src/SeamsWeb/signingSurface/ports.d.ts +1 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +2 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +15 -2
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createEmailOtpCommands.d.ts +3 -2
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +3 -3
- package/dist/types/wallet/src/config.d.ts +8 -8
- package/dist/types/wallet/src/core/browser/walletIframe/events.d.ts +1 -1
- package/dist/types/wallet/src/core/indexedDB/linkedAuthoritySignerMaterial.d.ts +3 -3
- package/dist/types/wallet/src/core/indexedDB/pendingWalletRecoveryCommit.d.ts +1 -1
- package/dist/types/wallet/src/core/indexedDB/schemaNames.d.ts +181 -181
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.d.ts +8 -8
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaClientPresignatures.d.ts +4 -4
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.d.ts +1 -1
- package/dist/types/wallet/src/core/indexedDB/walletCustodyEd25519MaterialRecord.d.ts +2 -2
- package/dist/types/wallet/src/core/indexedDB/walletDbName.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/chains/evm/evmAdapter.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/chains/evm/evmSigning.types.d.ts +1 -0
- package/dist/types/wallet/src/core/signingEngine/chains/tempo/tempoAdapter.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/flows/shared/signingStateMachine.d.ts +27 -27
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signers/secp256k1.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signers/webauthnP256.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.d.ts +17 -17
- package/dist/types/wallet/src/core/signingEngine/nonce/nonceTypes.d.ts +40 -40
- package/dist/types/wallet/src/core/signingEngine/session/material/walletSigningStateFailure.d.ts +4 -4
- package/dist/types/wallet/src/core/signingEngine/session/operationState/types.d.ts +8 -8
- package/dist/types/wallet/src/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/session/persistence/sealedSessionRecords.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/channel/confirmCommon.d.ts +3 -3
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/types.d.ts +4 -4
- package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoClient.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/threshold/sessionPolicy.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/handlers/flows/adapters/adapters.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmHeader.d.ts +2 -2
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/CopyStatusIcon.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/PadlockIcon.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/PasskeyHaloLoading.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationDetails.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/SeamsWordmark.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/webauthnAuth/credentials/helpers.d.ts +2 -2
- package/dist/types/wallet/src/core/signingEngine/workerManager/SignerWorkerManager.d.ts +1 -0
- package/dist/types/wallet/src/core/signingEngine/workerManager/deviceLinkingPorts.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaClientWorkerChannels.d.ts +3 -3
- package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaPresignPoolIdentity.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/validation.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workerTransport.d.ts +1 -0
- package/dist/types/wallet/src/core/signingEngine/workerManager/workerTypes.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/device-linking-key/ecdsaTargetShareHpke.d.ts +3 -3
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/device-linking-key/ordinaryMaterialState.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/crypto.d.ts +3 -3
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/materialParsing.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/payloadParsing.d.ts +2 -2
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/unlock.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/workerErrorPayload.d.ts +2 -2
- package/dist/types/wallet/src/core/types/actionBuilders.d.ts +16 -2
- package/dist/types/wallet/src/core/types/amounts.d.ts +75 -0
- package/dist/types/wallet/src/core/types/amounts.typecheck.d.ts +2 -0
- package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +5 -5
- package/dist/types/wallet/src/core/types/secure-confirm-worker.d.ts +1 -1
- package/dist/types/wallet/src/core/types/signer-worker.d.ts +7 -7
- package/dist/types/wallet/src/externalEvm/types.d.ts +1 -0
- package/dist/types/wallet/src/index.d.ts +2 -0
- package/dist/types/wallet/src/react/{hooks/useWallet.d.ts → boundWallet.d.ts} +8 -48
- package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuButtonView.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/AccountsSection.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodsModal.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/ExportKeysSection.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/LinkedDevicesModal.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/ProfileDropdown.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/WalletSettingsLayout.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/GlobeIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/HoverArrowIcon.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/KeyIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LaptopIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LinkIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LockIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LockKeyholeIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/MailIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/PlusIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/RecoveryCodesIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/ScanIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/SlidersIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/SmartphoneIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/TouchIcon.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/index.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/types.d.ts +8 -8
- package/dist/types/wallet/src/react/components/ShowQRCode.d.ts +0 -1
- package/dist/types/wallet/src/react/components/VoiceAssistantCard.d.ts +0 -1
- package/dist/types/wallet/src/react/components/theme/design-tokens.d.ts +1 -0
- package/dist/types/wallet/src/react/context/index.d.ts +2 -1
- package/dist/types/wallet/src/react/context/useSeamsContextValue.d.ts +2 -2
- package/dist/types/wallet/src/react/index.d.ts +3 -2
- package/dist/types/wallet/src/react/styles.d.ts +2 -0
- package/dist/types/wallet/src/react/transactionReview/boundCalls.d.ts +57 -57
- package/dist/types/wallet/src/react/types.d.ts +14 -1
- package/dist/types/wallet/src/theme/base-styles.d.ts +4 -4
- package/dist/workers/device-linking-key.worker.js +12 -11
- package/dist/workers/ecdsa-derivation-client.worker.js +146 -48
- package/dist/workers/ecdsa-online-client.worker.js +7 -6
- package/dist/workers/ecdsa-presign-client.worker.js +7 -6
- package/dist/workers/email-otp.worker.js +24 -4
- package/dist/workers/passkey-mpc-export.worker.js +17 -1
- package/dist/workers/passkey-mpc-session.worker.js +2 -1
- package/dist/workers/wallet-custody-ceremony.worker.js +2 -0
- package/package.json +8 -6
- package/dist/esm/react/hooks/useWallet.js +0 -108
- package/dist/esm/sdk/ConfirmationDrawer-BFzQjd1P.js +0 -1
- package/dist/esm/sdk/NonceCoordinator-CDGnEgfI.js +0 -1
- package/dist/esm/sdk/adapters-DsAaBNNY.js +0 -2
- package/dist/esm/sdk/authorizationAdmission-CGinGhXH.js +0 -1
- package/dist/esm/sdk/challengeDelivery-CATQ4u6P.js +0 -1
- package/dist/esm/sdk/domainIds-BzkGsRqO.js +0 -1
- package/dist/esm/sdk/ecdsaCapabilityManifest-DX6TflEz.js +0 -1
- package/dist/esm/sdk/ecdsaDerivationClientWasm-CpjnN4aK.js +0 -1
- package/dist/esm/sdk/export-viewer-host-CV-lSsQF.js +0 -1
- package/dist/esm/sdk/mountExportPrivateKeySurface-CatAhYoG.js +0 -1
- package/dist/esm/sdk/mountRecoveryCodeBackupSurface-DlEb3uD7.js +0 -2
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-Bo3IOTS-.js +0 -1
- package/dist/esm/sdk/presignaturePool-V10fZpG3.js +0 -1
- package/dist/esm/sdk/registration-DEGZR8kA.js +0 -1
- package/dist/esm/sdk/routerAbNormalSigning-C4P2tDU-.js +0 -1
- package/dist/esm/sdk/runtime-auth-ZcxkQ-XF.js +0 -1
- package/dist/esm/sdk/runtime-preferences-CVt5sLvm.js +0 -1
- package/dist/esm/sdk/runtime-recovery-BzewdcoT.js +0 -1
- package/dist/esm/sdk/secp256k1-CKq7_HD-.js +0 -1
- package/dist/esm/sdk/shared-BywEqTsd.js +0 -6
- package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-DGWmm9n7.js +0 -1
- package/dist/esm/sdk/signNear-XGZBxc_g.js +0 -1
- package/dist/esm/sdk/signatureUses-BKAoDbQd.js +0 -1
- package/dist/esm/sdk/surface-measurement-reporter-DvVHPu_O.js +0 -1
- package/dist/esm/sdk/transactionReviewAdmission-CIvR4W5_.js +0 -1
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-B4fTDL10.js +0 -1
- package/dist/esm/sdk/walletRegistrationSetupPrewarm-B9kpnrbK.js +0 -1
- package/dist/esm/sdk/walletSessionAuthorizationStatus-BL7j2TeM.js +0 -1
- package/dist/esm/sdk/walletSessionAuthorizationStore-DmYe-cDR.js +0 -1
- package/dist/esm/sdk/walletSessionFailure-YuhraC3P.js +0 -1
- package/dist/esm/sdk/webauthnP256-BwgxtG5N.js +0 -1
- package/dist/esm/sdk/webauthnPromptCoordinator-CwJeKiYq.js +0 -1
- package/dist/public/sdk/ConfirmationDrawer-BFzQjd1P.js +0 -1
- package/dist/public/sdk/NonceCoordinator-CDGnEgfI.js +0 -1
- package/dist/public/sdk/adapters-DsAaBNNY.js +0 -2
- package/dist/public/sdk/authorizationAdmission-CGinGhXH.js +0 -1
- package/dist/public/sdk/challengeDelivery-CATQ4u6P.js +0 -1
- package/dist/public/sdk/domainIds-BzkGsRqO.js +0 -1
- package/dist/public/sdk/ecdsaCapabilityManifest-DX6TflEz.js +0 -1
- package/dist/public/sdk/ecdsaDerivationClientWasm-CpjnN4aK.js +0 -1
- package/dist/public/sdk/export-viewer-host-CV-lSsQF.js +0 -1
- package/dist/public/sdk/mountExportPrivateKeySurface-CatAhYoG.js +0 -1
- package/dist/public/sdk/mountRecoveryCodeBackupSurface-DlEb3uD7.js +0 -2
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-Bo3IOTS-.js +0 -1
- package/dist/public/sdk/presignaturePool-V10fZpG3.js +0 -1
- package/dist/public/sdk/registration-DEGZR8kA.js +0 -1
- package/dist/public/sdk/routerAbNormalSigning-C4P2tDU-.js +0 -1
- package/dist/public/sdk/runtime-auth-ZcxkQ-XF.js +0 -1
- package/dist/public/sdk/runtime-preferences-CVt5sLvm.js +0 -1
- package/dist/public/sdk/runtime-recovery-BzewdcoT.js +0 -1
- package/dist/public/sdk/secp256k1-CKq7_HD-.js +0 -1
- package/dist/public/sdk/shared-BywEqTsd.js +0 -6
- package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-DGWmm9n7.js +0 -1
- package/dist/public/sdk/signNear-XGZBxc_g.js +0 -1
- package/dist/public/sdk/signatureUses-BKAoDbQd.js +0 -1
- package/dist/public/sdk/surface-measurement-reporter-DvVHPu_O.js +0 -1
- package/dist/public/sdk/transactionReviewAdmission-CIvR4W5_.js +0 -1
- package/dist/public/sdk/walletCustodyEcdsaContinuity-B4fTDL10.js +0 -1
- package/dist/public/sdk/walletRegistrationSetupPrewarm-B9kpnrbK.js +0 -1
- package/dist/public/sdk/walletSessionAuthorizationStatus-BL7j2TeM.js +0 -1
- package/dist/public/sdk/walletSessionAuthorizationStore-DmYe-cDR.js +0 -1
- package/dist/public/sdk/walletSessionFailure-YuhraC3P.js +0 -1
- package/dist/public/sdk/webauthnP256-BwgxtG5N.js +0 -1
- package/dist/public/sdk/webauthnPromptCoordinator-CwJeKiYq.js +0 -1
|
@@ -2,7 +2,7 @@ import { isLinkedDeviceTargetEmailAddressV1 } from "../../../../../core/types/li
|
|
|
2
2
|
import { EMAIL_OTP_RECOVERY_KEY_ALPHABET } from "../../../../../shared-ts/src/utils/emailOtpRecoveryKey.js";
|
|
3
3
|
import "../../../../../shared-ts/src/wallet-recovery/recoveryCodes.js";
|
|
4
4
|
import { demoEmailOtpCodeFromDelivery } from "../../../../../core/signingEngine/session/emailOtp/challengeDelivery.js";
|
|
5
|
-
import { isAuthMenuActionReady, isAuthMenuGoogleActionReady, isAuthMenuLoadingStatus, isAuthMenuReady, resolveAuthMenuLoginAccount } from "../../auth-menu/domain.js";
|
|
5
|
+
import { AUTH_MENU_WAITING_PROMPTS, isAuthMenuActionReady, isAuthMenuGoogleActionReady, isAuthMenuLoadingStatus, isAuthMenuReady, resolveAuthMenuLoginAccount } from "../../auth-menu/domain.js";
|
|
6
6
|
import { PadlockIcon } from "../../../../../core/signingEngine/uiConfirm/ui/preact/PadlockIcon.js";
|
|
7
7
|
import { blinkMenuItem } from "../../../../../utils/menuItemBlink.js";
|
|
8
8
|
import { accountDropdownIcon, backIcon, chevronIcon, fingerprintIcon, googleIcon, linkDeviceIcon, linkFailedIcon, mailIcon, passkeyRingIcon, recoveryIcon, rerollIcon } from "./icons.js";
|
|
@@ -169,300 +169,24 @@ function accountGroups(options) {
|
|
|
169
169
|
}
|
|
170
170
|
const ACCOUNT_MENU_EXIT_MS = 160;
|
|
171
171
|
var AuthMenuSurface = class extends Component {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
this.previousRecoveryStage = null;
|
|
191
|
-
this.lastMethod = "passkey";
|
|
192
|
-
this.queueContentHeightSync = () => {
|
|
193
|
-
if (this.contentHeightFrame !== null) cancelAnimationFrame(this.contentHeightFrame);
|
|
194
|
-
this.contentHeightFrame = requestAnimationFrame(this.syncContentHeight);
|
|
195
|
-
};
|
|
196
|
-
this.syncContentHeight = () => {
|
|
197
|
-
this.contentHeightFrame = null;
|
|
198
|
-
const switcher = this.props.element.querySelector(".seams-content-switcher");
|
|
199
|
-
const sizer = this.props.element.querySelector(".seams-content-sizer");
|
|
200
|
-
if (!switcher || !sizer) return;
|
|
201
|
-
this.props.styles.setDynamicDeclarations(this.props.element.id + "-height", "#" + this.props.element.id + " .seams-content-switcher", { height: sizer.scrollHeight + "px" });
|
|
202
|
-
};
|
|
203
|
-
this.onKeydown = (event) => {
|
|
204
|
-
if (event.key === "Escape") {
|
|
205
|
-
event.preventDefault();
|
|
206
|
-
if (this.viewModel && recoveryNavigationLocked(this.viewModel)) return;
|
|
207
|
-
if (this.accountMenuOpen) {
|
|
208
|
-
this.closeAccountMenu();
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
this.emitIntent({
|
|
212
|
-
kind: "close",
|
|
213
|
-
reason: "escape"
|
|
214
|
-
});
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
if (event.key !== "Tab") return;
|
|
218
|
-
const focusable = this.focusableElements();
|
|
219
|
-
if (focusable.length === 0) return;
|
|
220
|
-
const active = document.activeElement;
|
|
221
|
-
const activeIndex = focusable.indexOf(active instanceof HTMLElement ? active : focusable[0]);
|
|
222
|
-
if (event.shiftKey && activeIndex <= 0) {
|
|
223
|
-
event.preventDefault();
|
|
224
|
-
focusable[focusable.length - 1]?.focus();
|
|
225
|
-
} else if (!event.shiftKey && activeIndex === focusable.length - 1) {
|
|
226
|
-
event.preventDefault();
|
|
227
|
-
focusable[0]?.focus();
|
|
228
|
-
}
|
|
229
|
-
};
|
|
230
|
-
this.onBackClick = () => {
|
|
231
|
-
this.emitIntent({ kind: "back" });
|
|
232
|
-
};
|
|
233
|
-
this.onKeyDown = (event) => {
|
|
234
|
-
if (event.key !== "Escape" || event.defaultPrevented) return;
|
|
235
|
-
const viewModel = this.viewModel;
|
|
236
|
-
if (!viewModel || viewModel.kind !== "recovery" && !isAuthMenuLoadingStatus(viewModel.status)) return;
|
|
237
|
-
event.preventDefault();
|
|
238
|
-
event.stopPropagation();
|
|
239
|
-
if (recoveryNavigationLocked(viewModel)) return;
|
|
240
|
-
this.emitIntent({ kind: "back" });
|
|
241
|
-
};
|
|
242
|
-
this.onIntentSwitchClick = () => {
|
|
243
|
-
const viewModel = this.viewModel;
|
|
244
|
-
if (!viewModel) return;
|
|
245
|
-
this.emitIntent({
|
|
246
|
-
kind: "mode_selected",
|
|
247
|
-
mode: modeSwitchCopy(viewModel.mode).nextMode
|
|
248
|
-
});
|
|
249
|
-
};
|
|
250
|
-
this.onRegistrationReroll = () => {
|
|
251
|
-
this.emitIntent({ kind: "registration_reroll" });
|
|
252
|
-
};
|
|
253
|
-
this.onPasskeyNameInput = (event) => {
|
|
254
|
-
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
255
|
-
this.emitIntent({
|
|
256
|
-
kind: "passkey_name_changed",
|
|
257
|
-
passkeyName: event.currentTarget.value
|
|
258
|
-
});
|
|
259
|
-
};
|
|
260
|
-
this.onLoginAccountSelect = (event) => {
|
|
261
|
-
const option = event.currentTarget;
|
|
262
|
-
if (!(option instanceof HTMLButtonElement)) return;
|
|
263
|
-
const walletId = option.dataset.walletId;
|
|
264
|
-
const authMethod = option.dataset.authMethod;
|
|
265
|
-
const viewModel = this.viewModel;
|
|
266
|
-
if (!walletId || viewModel.kind !== "passkey" || viewModel.mode !== "login") return;
|
|
267
|
-
const selected = viewModel.accountOptions.find((account) => account.walletId === walletId && account.authMethod === authMethod);
|
|
268
|
-
const previous = selectedLoginAccount(viewModel);
|
|
269
|
-
if (!selected || !previous || this.accountMenuChoice) return;
|
|
270
|
-
const blink = blinkMenuItem(option);
|
|
271
|
-
if (!blink) return;
|
|
272
|
-
const choice = {
|
|
273
|
-
chosen: selected,
|
|
274
|
-
previous
|
|
275
|
-
};
|
|
276
|
-
this.accountMenuChoice = choice;
|
|
277
|
-
this.emitIntent({
|
|
278
|
-
kind: "login_account_selected",
|
|
279
|
-
walletId: selected.walletId,
|
|
280
|
-
authMethod: selected.authMethod
|
|
281
|
-
});
|
|
282
|
-
blink.then(() => {
|
|
283
|
-
if (this.accountMenuChoice === choice) this.closeAccountMenu();
|
|
284
|
-
});
|
|
285
|
-
};
|
|
286
|
-
this.onAccountMenuToggle = () => {
|
|
287
|
-
if (this.accountMenuOpen) this.closeAccountMenu();
|
|
288
|
-
else this.openAccountMenu();
|
|
289
|
-
};
|
|
290
|
-
this.onDocumentPointerDown = (event) => {
|
|
291
|
-
if (!this.accountMenuOpen || !(event.target instanceof Node)) return;
|
|
292
|
-
if (this.props.element.querySelector(".seams-account-menu")?.contains(event.target)) return;
|
|
293
|
-
this.closeAccountMenu();
|
|
294
|
-
};
|
|
295
|
-
this.onPrimaryClick = () => {
|
|
296
|
-
const viewModel = this.viewModel;
|
|
297
|
-
if (!viewModel || !isAuthMenuActionReady(viewModel)) return;
|
|
298
|
-
if (viewModel.kind === "link_device") return;
|
|
299
|
-
if (viewModel.kind === "google_otp_login") {
|
|
300
|
-
this.emitIntent({ kind: "google_otp_submit" });
|
|
301
|
-
return;
|
|
302
|
-
}
|
|
303
|
-
if (viewModel.kind === "google_registration") {
|
|
304
|
-
this.emitIntent({ kind: "google_registration_complete" });
|
|
305
|
-
return;
|
|
306
|
-
}
|
|
307
|
-
const intent = viewModel.mode === "register" ? {
|
|
308
|
-
kind: "submit",
|
|
309
|
-
mode: "register",
|
|
310
|
-
passkeyName: viewModel.passkeyName
|
|
311
|
-
} : {
|
|
312
|
-
kind: "submit",
|
|
313
|
-
mode: "login"
|
|
314
|
-
};
|
|
315
|
-
this.lastMethod = "passkey";
|
|
316
|
-
this.emitIntent(intent);
|
|
317
|
-
};
|
|
318
|
-
this.onGoogleOtpCodeInput = (event) => {
|
|
319
|
-
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
320
|
-
this.emitIntent({
|
|
321
|
-
kind: "google_otp_code_changed",
|
|
322
|
-
code: event.currentTarget.value
|
|
323
|
-
});
|
|
324
|
-
};
|
|
325
|
-
this.onGoogleOtpKeydown = (event) => {
|
|
326
|
-
if (event.key !== "Enter") return;
|
|
327
|
-
event.preventDefault();
|
|
328
|
-
this.emitIntent({ kind: "google_otp_submit" });
|
|
329
|
-
};
|
|
330
|
-
this.onGoogleOtpResend = () => {
|
|
331
|
-
this.emitIntent({ kind: "google_otp_resend" });
|
|
332
|
-
};
|
|
333
|
-
this.onGoogleRegistrationReroll = () => {
|
|
334
|
-
this.emitIntent({ kind: "google_registration_reroll" });
|
|
335
|
-
};
|
|
336
|
-
this.onGoogleClick = () => {
|
|
337
|
-
this.lastMethod = "google";
|
|
338
|
-
this.emitIntent({
|
|
339
|
-
kind: "external_auth",
|
|
340
|
-
provider: "google"
|
|
341
|
-
});
|
|
342
|
-
};
|
|
343
|
-
this.onNoticeRetry = () => {
|
|
344
|
-
if (this.lastMethod === "google" && isAuthMenuGoogleActionReady(this.viewModel)) this.onGoogleClick();
|
|
345
|
-
else this.onPrimaryClick();
|
|
346
|
-
};
|
|
347
|
-
this.onLinkDeviceOpen = () => {
|
|
348
|
-
this.emitIntent({ kind: "link_device_open" });
|
|
349
|
-
};
|
|
350
|
-
this.onRecoveryOpen = () => {
|
|
351
|
-
this.emitIntent({ kind: "recovery_open" });
|
|
352
|
-
};
|
|
353
|
-
this.onRecoveryCodeInput = (event) => {
|
|
354
|
-
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
355
|
-
if (this.viewModel.kind !== "recovery") return;
|
|
356
|
-
const input = event.currentTarget;
|
|
357
|
-
const raw = input.value;
|
|
358
|
-
const rejected = rejectedRecoveryCharacters(raw);
|
|
359
|
-
if (rejected.length > 0) this.showRecoveryRejection(rejected);
|
|
360
|
-
const caret = recoveryInputCharacters(raw.slice(0, input.selectionStart ?? raw.length)).length;
|
|
361
|
-
const code = recoveryInputCharacters(raw).slice(0, 32);
|
|
362
|
-
if (input.value !== code) {
|
|
363
|
-
input.value = code;
|
|
364
|
-
input.setSelectionRange(Math.min(caret, code.length), Math.min(caret, code.length));
|
|
365
|
-
}
|
|
366
|
-
this.syncRecoverySelection(input);
|
|
367
|
-
this.emitIntent({
|
|
368
|
-
kind: "recovery_code_changed",
|
|
369
|
-
recoveryCode: code
|
|
370
|
-
});
|
|
371
|
-
};
|
|
372
|
-
this.onRecoverySelectionMove = (event) => {
|
|
373
|
-
if (event.currentTarget instanceof HTMLInputElement) this.syncRecoverySelection(event.currentTarget);
|
|
374
|
-
};
|
|
375
|
-
this.onRecoveryCodeClick = (event) => {
|
|
376
|
-
const input = event.currentTarget;
|
|
377
|
-
if (!(input instanceof HTMLInputElement)) return;
|
|
378
|
-
if (input.selectionStart === input.selectionEnd) {
|
|
379
|
-
const caret = recoveryCaretAtPoint(this.props.element, event.clientX, event.clientY, input.value.length);
|
|
380
|
-
if (caret !== null) input.setSelectionRange(caret, caret);
|
|
381
|
-
}
|
|
382
|
-
this.syncRecoverySelection(input);
|
|
383
|
-
};
|
|
384
|
-
this.clearRecoveryRejection = () => {
|
|
385
|
-
this.recoveryRejectionTimer = null;
|
|
386
|
-
this.setState({ recoveryRejection: null });
|
|
387
|
-
};
|
|
388
|
-
this.endRecoveryArrival = () => {
|
|
389
|
-
this.recoveryArrivalTimer = null;
|
|
390
|
-
this.recoveryArrival = null;
|
|
391
|
-
};
|
|
392
|
-
this.onRecoveryCodeBlur = () => {
|
|
393
|
-
this.setState({ recoverySelection: null });
|
|
394
|
-
};
|
|
395
|
-
this.onRecoverySubmit = (event) => {
|
|
396
|
-
event.preventDefault();
|
|
397
|
-
this.emitIntent({ kind: "recovery_code_submit" });
|
|
398
|
-
};
|
|
399
|
-
this.onRecoveryPasskeySelected = () => {
|
|
400
|
-
this.emitIntent({ kind: "recovery_passkey_selected" });
|
|
401
|
-
};
|
|
402
|
-
this.onRecoveryGoogleSelected = () => {
|
|
403
|
-
this.emitIntent({ kind: "recovery_google_selected" });
|
|
404
|
-
};
|
|
405
|
-
this.onRecoveryGoogleOtpCodeInput = (event) => {
|
|
406
|
-
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
407
|
-
this.emitIntent({
|
|
408
|
-
kind: "recovery_google_otp_code_changed",
|
|
409
|
-
code: event.currentTarget.value
|
|
410
|
-
});
|
|
411
|
-
};
|
|
412
|
-
this.onRecoveryGoogleOtpKeydown = (event) => {
|
|
413
|
-
if (event.key !== "Enter") return;
|
|
414
|
-
event.preventDefault();
|
|
415
|
-
this.emitIntent({ kind: "recovery_google_otp_submit" });
|
|
416
|
-
};
|
|
417
|
-
this.onRecoveryGoogleOtpSubmit = () => {
|
|
418
|
-
this.emitIntent({ kind: "recovery_google_otp_submit" });
|
|
419
|
-
};
|
|
420
|
-
this.onRecoveryCreatePasskey = () => {
|
|
421
|
-
this.emitIntent({ kind: "recovery_create_passkey" });
|
|
422
|
-
};
|
|
423
|
-
this.onRecoverySignIn = () => {
|
|
424
|
-
this.emitIntent({ kind: "recovery_sign_in" });
|
|
425
|
-
};
|
|
426
|
-
this.onLinkDeviceCreatePasskey = () => {
|
|
427
|
-
this.emitIntent({ kind: "link_device_create_passkey" });
|
|
428
|
-
};
|
|
429
|
-
this.onLinkDeviceFactorChange = (event) => {
|
|
430
|
-
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
431
|
-
const targetFactor = event.currentTarget.value === "email_otp" ? { kind: "email_otp" } : { kind: "passkey_prf" };
|
|
432
|
-
this.emitIntent({
|
|
433
|
-
kind: "link_device_factor_selected",
|
|
434
|
-
targetFactor
|
|
435
|
-
});
|
|
436
|
-
};
|
|
437
|
-
this.onLinkDeviceTargetEmailInput = (event) => {
|
|
438
|
-
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
439
|
-
this.emitIntent({
|
|
440
|
-
kind: "link_device_target_email_changed",
|
|
441
|
-
emailAddress: event.currentTarget.value
|
|
442
|
-
});
|
|
443
|
-
};
|
|
444
|
-
this.onLinkDeviceStart = () => {
|
|
445
|
-
this.emitIntent({ kind: "link_device_start" });
|
|
446
|
-
};
|
|
447
|
-
this.onLinkDeviceEmailOtpCodeInput = (event) => {
|
|
448
|
-
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
449
|
-
this.emitIntent({
|
|
450
|
-
kind: "link_device_email_otp_code_changed",
|
|
451
|
-
code: event.currentTarget.value
|
|
452
|
-
});
|
|
453
|
-
};
|
|
454
|
-
this.onLinkDeviceEmailOtpKeydown = (event) => {
|
|
455
|
-
if (event.key !== "Enter") return;
|
|
456
|
-
event.preventDefault();
|
|
457
|
-
this.emitIntent({ kind: "link_device_email_otp_submit" });
|
|
458
|
-
};
|
|
459
|
-
this.onLinkDeviceEmailOtpResend = () => {
|
|
460
|
-
this.emitIntent({ kind: "link_device_email_otp_resend" });
|
|
461
|
-
};
|
|
462
|
-
this.onLinkDeviceEmailOtpSubmit = () => {
|
|
463
|
-
this.emitIntent({ kind: "link_device_email_otp_submit" });
|
|
464
|
-
};
|
|
465
|
-
}
|
|
172
|
+
state = {
|
|
173
|
+
accountMenu: "closed",
|
|
174
|
+
recoverySelection: null,
|
|
175
|
+
recoveryRejection: null
|
|
176
|
+
};
|
|
177
|
+
recoveryDrawnCode = "";
|
|
178
|
+
recoveryArrival = null;
|
|
179
|
+
recoveryArrivalTimer = null;
|
|
180
|
+
recoveryRejectionTimer = null;
|
|
181
|
+
accountMenuExitTimer = null;
|
|
182
|
+
accountMenuChoice = null;
|
|
183
|
+
previouslyFocusedElement = null;
|
|
184
|
+
shouldFocusInitialControl = true;
|
|
185
|
+
contentResizeObserver = null;
|
|
186
|
+
contentHeightFrame = null;
|
|
187
|
+
previousLinkDeviceStateKind = null;
|
|
188
|
+
previousRecoveryStage = null;
|
|
189
|
+
lastMethod = "passkey";
|
|
466
190
|
get viewModel() {
|
|
467
191
|
return this.props.viewModel;
|
|
468
192
|
}
|
|
@@ -557,6 +281,17 @@ var AuthMenuSurface = class extends Component {
|
|
|
557
281
|
this.contentResizeObserver.observe(sizer);
|
|
558
282
|
window.addEventListener("resize", this.queueContentHeightSync);
|
|
559
283
|
}
|
|
284
|
+
queueContentHeightSync = () => {
|
|
285
|
+
if (this.contentHeightFrame !== null) cancelAnimationFrame(this.contentHeightFrame);
|
|
286
|
+
this.contentHeightFrame = requestAnimationFrame(this.syncContentHeight);
|
|
287
|
+
};
|
|
288
|
+
syncContentHeight = () => {
|
|
289
|
+
this.contentHeightFrame = null;
|
|
290
|
+
const switcher = this.props.element.querySelector(".seams-content-switcher");
|
|
291
|
+
const sizer = this.props.element.querySelector(".seams-content-sizer");
|
|
292
|
+
if (!switcher || !sizer) return;
|
|
293
|
+
this.props.styles.setDynamicDeclarations(this.props.element.id + "-height", "#" + this.props.element.id + " .seams-content-switcher", { height: sizer.scrollHeight + "px" });
|
|
294
|
+
};
|
|
560
295
|
focusInitialControl() {
|
|
561
296
|
if (!this.props.element.isConnected || !this.shouldFocusInitialControl) return;
|
|
562
297
|
this.shouldFocusInitialControl = false;
|
|
@@ -570,9 +305,197 @@ var AuthMenuSurface = class extends Component {
|
|
|
570
305
|
if (!target?.isConnected) return;
|
|
571
306
|
target.focus();
|
|
572
307
|
}
|
|
308
|
+
onKeydown = (event) => {
|
|
309
|
+
if (event.key === "Escape") {
|
|
310
|
+
event.preventDefault();
|
|
311
|
+
if (this.viewModel && recoveryNavigationLocked(this.viewModel)) return;
|
|
312
|
+
if (this.accountMenuOpen) {
|
|
313
|
+
this.closeAccountMenu();
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
this.emitIntent({
|
|
317
|
+
kind: "close",
|
|
318
|
+
reason: "escape"
|
|
319
|
+
});
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
if (event.key !== "Tab") return;
|
|
323
|
+
const focusable = this.focusableElements();
|
|
324
|
+
if (focusable.length === 0) return;
|
|
325
|
+
const active = document.activeElement;
|
|
326
|
+
const activeIndex = focusable.indexOf(active instanceof HTMLElement ? active : focusable[0]);
|
|
327
|
+
if (event.shiftKey && activeIndex <= 0) {
|
|
328
|
+
event.preventDefault();
|
|
329
|
+
focusable[focusable.length - 1]?.focus();
|
|
330
|
+
} else if (!event.shiftKey && activeIndex === focusable.length - 1) {
|
|
331
|
+
event.preventDefault();
|
|
332
|
+
focusable[0]?.focus();
|
|
333
|
+
}
|
|
334
|
+
};
|
|
573
335
|
focusableElements() {
|
|
574
336
|
return Array.from(this.props.element.querySelectorAll("button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], [tabindex]:not([tabindex=\"-1\"])"));
|
|
575
337
|
}
|
|
338
|
+
onBackClick = () => {
|
|
339
|
+
this.emitIntent({ kind: "back" });
|
|
340
|
+
};
|
|
341
|
+
/**
|
|
342
|
+
* Escape backs out of the in-progress views the back arrow already serves.
|
|
343
|
+
* The host dialog is opened non-modally, so it never receives the UA's
|
|
344
|
+
* `cancel` event — without this the key does nothing while a ceremony is
|
|
345
|
+
* pending. Deliberately scoped to those views: from the menu itself Escape
|
|
346
|
+
* belongs to the embedding page, not to us.
|
|
347
|
+
*/
|
|
348
|
+
onKeyDown = (event) => {
|
|
349
|
+
if (event.key !== "Escape" || event.defaultPrevented) return;
|
|
350
|
+
const viewModel = this.viewModel;
|
|
351
|
+
if (!viewModel || viewModel.kind !== "recovery" && !isAuthMenuLoadingStatus(viewModel.status)) return;
|
|
352
|
+
event.preventDefault();
|
|
353
|
+
event.stopPropagation();
|
|
354
|
+
if (recoveryNavigationLocked(viewModel)) return;
|
|
355
|
+
this.emitIntent({ kind: "back" });
|
|
356
|
+
};
|
|
357
|
+
onIntentSwitchClick = () => {
|
|
358
|
+
const viewModel = this.viewModel;
|
|
359
|
+
if (!viewModel) return;
|
|
360
|
+
this.emitIntent({
|
|
361
|
+
kind: "mode_selected",
|
|
362
|
+
mode: modeSwitchCopy(viewModel.mode).nextMode
|
|
363
|
+
});
|
|
364
|
+
};
|
|
365
|
+
onRegistrationReroll = () => {
|
|
366
|
+
this.emitIntent({ kind: "registration_reroll" });
|
|
367
|
+
};
|
|
368
|
+
onPasskeyNameInput = (event) => {
|
|
369
|
+
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
370
|
+
this.emitIntent({
|
|
371
|
+
kind: "passkey_name_changed",
|
|
372
|
+
passkeyName: event.currentTarget.value
|
|
373
|
+
});
|
|
374
|
+
};
|
|
375
|
+
onLoginAccountSelect = (event) => {
|
|
376
|
+
const option = event.currentTarget;
|
|
377
|
+
if (!(option instanceof HTMLButtonElement)) return;
|
|
378
|
+
const walletId = option.dataset.walletId;
|
|
379
|
+
const authMethod = option.dataset.authMethod;
|
|
380
|
+
const viewModel = this.viewModel;
|
|
381
|
+
if (!walletId || viewModel.kind !== "passkey" || viewModel.mode !== "login") return;
|
|
382
|
+
const selected = viewModel.accountOptions.find((account) => account.walletId === walletId && account.authMethod === authMethod);
|
|
383
|
+
const previous = selectedLoginAccount(viewModel);
|
|
384
|
+
if (!selected || !previous || this.accountMenuChoice) return;
|
|
385
|
+
const blink = blinkMenuItem(option);
|
|
386
|
+
if (!blink) return;
|
|
387
|
+
const choice = {
|
|
388
|
+
chosen: selected,
|
|
389
|
+
previous
|
|
390
|
+
};
|
|
391
|
+
this.accountMenuChoice = choice;
|
|
392
|
+
this.emitIntent({
|
|
393
|
+
kind: "login_account_selected",
|
|
394
|
+
walletId: selected.walletId,
|
|
395
|
+
authMethod: selected.authMethod
|
|
396
|
+
});
|
|
397
|
+
blink.then(() => {
|
|
398
|
+
if (this.accountMenuChoice === choice) this.closeAccountMenu();
|
|
399
|
+
});
|
|
400
|
+
};
|
|
401
|
+
onAccountMenuToggle = () => {
|
|
402
|
+
if (this.accountMenuOpen) this.closeAccountMenu();
|
|
403
|
+
else this.openAccountMenu();
|
|
404
|
+
};
|
|
405
|
+
onDocumentPointerDown = (event) => {
|
|
406
|
+
if (!this.accountMenuOpen || !(event.target instanceof Node)) return;
|
|
407
|
+
if (this.props.element.querySelector(".seams-account-menu")?.contains(event.target)) return;
|
|
408
|
+
this.closeAccountMenu();
|
|
409
|
+
};
|
|
410
|
+
onPrimaryClick = () => {
|
|
411
|
+
const viewModel = this.viewModel;
|
|
412
|
+
if (!viewModel || !isAuthMenuActionReady(viewModel)) return;
|
|
413
|
+
if (viewModel.kind === "link_device") return;
|
|
414
|
+
if (viewModel.kind === "google_otp_login") {
|
|
415
|
+
this.emitIntent({ kind: "google_otp_submit" });
|
|
416
|
+
return;
|
|
417
|
+
}
|
|
418
|
+
if (viewModel.kind === "google_registration") {
|
|
419
|
+
this.emitIntent({ kind: "google_registration_complete" });
|
|
420
|
+
return;
|
|
421
|
+
}
|
|
422
|
+
const intent = viewModel.mode === "register" ? {
|
|
423
|
+
kind: "submit",
|
|
424
|
+
mode: "register",
|
|
425
|
+
passkeyName: viewModel.passkeyName
|
|
426
|
+
} : {
|
|
427
|
+
kind: "submit",
|
|
428
|
+
mode: "login"
|
|
429
|
+
};
|
|
430
|
+
this.lastMethod = "passkey";
|
|
431
|
+
this.emitIntent(intent);
|
|
432
|
+
};
|
|
433
|
+
onGoogleOtpCodeInput = (event) => {
|
|
434
|
+
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
435
|
+
this.emitIntent({
|
|
436
|
+
kind: "google_otp_code_changed",
|
|
437
|
+
code: event.currentTarget.value
|
|
438
|
+
});
|
|
439
|
+
};
|
|
440
|
+
onGoogleOtpKeydown = (event) => {
|
|
441
|
+
if (event.key !== "Enter") return;
|
|
442
|
+
event.preventDefault();
|
|
443
|
+
this.emitIntent({ kind: "google_otp_submit" });
|
|
444
|
+
};
|
|
445
|
+
onGoogleOtpResend = () => {
|
|
446
|
+
this.emitIntent({ kind: "google_otp_resend" });
|
|
447
|
+
};
|
|
448
|
+
onGoogleRegistrationReroll = () => {
|
|
449
|
+
this.emitIntent({ kind: "google_registration_reroll" });
|
|
450
|
+
};
|
|
451
|
+
onGoogleClick = () => {
|
|
452
|
+
this.lastMethod = "google";
|
|
453
|
+
this.emitIntent({
|
|
454
|
+
kind: "external_auth",
|
|
455
|
+
provider: "google"
|
|
456
|
+
});
|
|
457
|
+
};
|
|
458
|
+
onNoticeRetry = () => {
|
|
459
|
+
if (this.lastMethod === "google" && isAuthMenuGoogleActionReady(this.viewModel)) this.onGoogleClick();
|
|
460
|
+
else this.onPrimaryClick();
|
|
461
|
+
};
|
|
462
|
+
onLinkDeviceOpen = () => {
|
|
463
|
+
this.emitIntent({ kind: "link_device_open" });
|
|
464
|
+
};
|
|
465
|
+
onRecoveryOpen = () => {
|
|
466
|
+
this.emitIntent({ kind: "recovery_open" });
|
|
467
|
+
};
|
|
468
|
+
onRecoveryCodeInput = (event) => {
|
|
469
|
+
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
470
|
+
if (this.viewModel.kind !== "recovery") return;
|
|
471
|
+
const input = event.currentTarget;
|
|
472
|
+
const raw = input.value;
|
|
473
|
+
const rejected = rejectedRecoveryCharacters(raw);
|
|
474
|
+
if (rejected.length > 0) this.showRecoveryRejection(rejected);
|
|
475
|
+
const caret = recoveryInputCharacters(raw.slice(0, input.selectionStart ?? raw.length)).length;
|
|
476
|
+
const code = recoveryInputCharacters(raw).slice(0, 32);
|
|
477
|
+
if (input.value !== code) {
|
|
478
|
+
input.value = code;
|
|
479
|
+
input.setSelectionRange(Math.min(caret, code.length), Math.min(caret, code.length));
|
|
480
|
+
}
|
|
481
|
+
this.syncRecoverySelection(input);
|
|
482
|
+
this.emitIntent({
|
|
483
|
+
kind: "recovery_code_changed",
|
|
484
|
+
recoveryCode: code
|
|
485
|
+
});
|
|
486
|
+
};
|
|
487
|
+
onRecoverySelectionMove = (event) => {
|
|
488
|
+
if (event.currentTarget instanceof HTMLInputElement) this.syncRecoverySelection(event.currentTarget);
|
|
489
|
+
};
|
|
490
|
+
onRecoveryCodeClick = (event) => {
|
|
491
|
+
const input = event.currentTarget;
|
|
492
|
+
if (!(input instanceof HTMLInputElement)) return;
|
|
493
|
+
if (input.selectionStart === input.selectionEnd) {
|
|
494
|
+
const caret = recoveryCaretAtPoint(this.props.element, event.clientX, event.clientY, input.value.length);
|
|
495
|
+
if (caret !== null) input.setSelectionRange(caret, caret);
|
|
496
|
+
}
|
|
497
|
+
this.syncRecoverySelection(input);
|
|
498
|
+
};
|
|
576
499
|
showRecoveryRejection(characters) {
|
|
577
500
|
const parity = this.state.recoveryRejection?.parity === 0 ? 1 : 0;
|
|
578
501
|
this.setState({ recoveryRejection: {
|
|
@@ -582,6 +505,10 @@ var AuthMenuSurface = class extends Component {
|
|
|
582
505
|
if (this.recoveryRejectionTimer !== null) clearTimeout(this.recoveryRejectionTimer);
|
|
583
506
|
this.recoveryRejectionTimer = setTimeout(this.clearRecoveryRejection, 2e3);
|
|
584
507
|
}
|
|
508
|
+
clearRecoveryRejection = () => {
|
|
509
|
+
this.recoveryRejectionTimer = null;
|
|
510
|
+
this.setState({ recoveryRejection: null });
|
|
511
|
+
};
|
|
585
512
|
recoveryCodeArrival(code) {
|
|
586
513
|
const drawn = this.recoveryDrawnCode;
|
|
587
514
|
if (code === drawn) return this.recoveryArrival;
|
|
@@ -597,6 +524,13 @@ var AuthMenuSurface = class extends Component {
|
|
|
597
524
|
this.recoveryArrivalTimer = setTimeout(this.endRecoveryArrival, 600);
|
|
598
525
|
return this.recoveryArrival;
|
|
599
526
|
}
|
|
527
|
+
endRecoveryArrival = () => {
|
|
528
|
+
this.recoveryArrivalTimer = null;
|
|
529
|
+
this.recoveryArrival = null;
|
|
530
|
+
};
|
|
531
|
+
onRecoveryCodeBlur = () => {
|
|
532
|
+
this.setState({ recoverySelection: null });
|
|
533
|
+
};
|
|
600
534
|
syncRecoverySelection(input) {
|
|
601
535
|
const length = input.value.length;
|
|
602
536
|
const start = Math.min(input.selectionStart ?? length, length);
|
|
@@ -608,6 +542,76 @@ var AuthMenuSurface = class extends Component {
|
|
|
608
542
|
end
|
|
609
543
|
} });
|
|
610
544
|
}
|
|
545
|
+
onRecoverySubmit = (event) => {
|
|
546
|
+
event.preventDefault();
|
|
547
|
+
this.emitIntent({ kind: "recovery_code_submit" });
|
|
548
|
+
};
|
|
549
|
+
onRecoveryPasskeySelected = () => {
|
|
550
|
+
this.emitIntent({ kind: "recovery_passkey_selected" });
|
|
551
|
+
};
|
|
552
|
+
onRecoveryGoogleSelected = () => {
|
|
553
|
+
this.emitIntent({ kind: "recovery_google_selected" });
|
|
554
|
+
};
|
|
555
|
+
onRecoveryGoogleOtpCodeInput = (event) => {
|
|
556
|
+
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
557
|
+
this.emitIntent({
|
|
558
|
+
kind: "recovery_google_otp_code_changed",
|
|
559
|
+
code: event.currentTarget.value
|
|
560
|
+
});
|
|
561
|
+
};
|
|
562
|
+
onRecoveryGoogleOtpKeydown = (event) => {
|
|
563
|
+
if (event.key !== "Enter") return;
|
|
564
|
+
event.preventDefault();
|
|
565
|
+
this.emitIntent({ kind: "recovery_google_otp_submit" });
|
|
566
|
+
};
|
|
567
|
+
onRecoveryGoogleOtpSubmit = () => {
|
|
568
|
+
this.emitIntent({ kind: "recovery_google_otp_submit" });
|
|
569
|
+
};
|
|
570
|
+
onRecoveryCreatePasskey = () => {
|
|
571
|
+
this.emitIntent({ kind: "recovery_create_passkey" });
|
|
572
|
+
};
|
|
573
|
+
onRecoverySignIn = () => {
|
|
574
|
+
this.emitIntent({ kind: "recovery_sign_in" });
|
|
575
|
+
};
|
|
576
|
+
onLinkDeviceCreatePasskey = () => {
|
|
577
|
+
this.emitIntent({ kind: "link_device_create_passkey" });
|
|
578
|
+
};
|
|
579
|
+
onLinkDeviceFactorChange = (event) => {
|
|
580
|
+
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
581
|
+
const targetFactor = event.currentTarget.value === "email_otp" ? { kind: "email_otp" } : { kind: "passkey_prf" };
|
|
582
|
+
this.emitIntent({
|
|
583
|
+
kind: "link_device_factor_selected",
|
|
584
|
+
targetFactor
|
|
585
|
+
});
|
|
586
|
+
};
|
|
587
|
+
onLinkDeviceTargetEmailInput = (event) => {
|
|
588
|
+
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
589
|
+
this.emitIntent({
|
|
590
|
+
kind: "link_device_target_email_changed",
|
|
591
|
+
emailAddress: event.currentTarget.value
|
|
592
|
+
});
|
|
593
|
+
};
|
|
594
|
+
onLinkDeviceStart = () => {
|
|
595
|
+
this.emitIntent({ kind: "link_device_start" });
|
|
596
|
+
};
|
|
597
|
+
onLinkDeviceEmailOtpCodeInput = (event) => {
|
|
598
|
+
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
599
|
+
this.emitIntent({
|
|
600
|
+
kind: "link_device_email_otp_code_changed",
|
|
601
|
+
code: event.currentTarget.value
|
|
602
|
+
});
|
|
603
|
+
};
|
|
604
|
+
onLinkDeviceEmailOtpKeydown = (event) => {
|
|
605
|
+
if (event.key !== "Enter") return;
|
|
606
|
+
event.preventDefault();
|
|
607
|
+
this.emitIntent({ kind: "link_device_email_otp_submit" });
|
|
608
|
+
};
|
|
609
|
+
onLinkDeviceEmailOtpResend = () => {
|
|
610
|
+
this.emitIntent({ kind: "link_device_email_otp_resend" });
|
|
611
|
+
};
|
|
612
|
+
onLinkDeviceEmailOtpSubmit = () => {
|
|
613
|
+
this.emitIntent({ kind: "link_device_email_otp_submit" });
|
|
614
|
+
};
|
|
611
615
|
emitIntent(intent) {
|
|
612
616
|
this.props.onIntent(intent);
|
|
613
617
|
}
|
|
@@ -1130,15 +1134,16 @@ var AuthMenuSurface = class extends Component {
|
|
|
1130
1134
|
const status = viewModel.status;
|
|
1131
1135
|
if (status.kind !== "busy") return /* @__PURE__ */ jsx(Fragment$1, {});
|
|
1132
1136
|
const waitingText = status.headline;
|
|
1137
|
+
const prompt = status.illustration ? AUTH_MENU_WAITING_PROMPTS[status.illustration] : null;
|
|
1133
1138
|
return /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsxs("div", {
|
|
1134
1139
|
class: "seams-waiting",
|
|
1135
1140
|
role: "status",
|
|
1136
1141
|
"aria-live": "polite",
|
|
1137
1142
|
children: [
|
|
1138
|
-
|
|
1143
|
+
prompt ? /* @__PURE__ */ jsx("span", {
|
|
1139
1144
|
class: "seams-passkey-prompt",
|
|
1140
1145
|
role: "img",
|
|
1141
|
-
"aria-label":
|
|
1146
|
+
"aria-label": prompt.label,
|
|
1142
1147
|
children: passkeyRingIcon()
|
|
1143
1148
|
}) : null,
|
|
1144
1149
|
/* @__PURE__ */ jsxs("div", {
|
|
@@ -1148,9 +1153,9 @@ var AuthMenuSurface = class extends Component {
|
|
|
1148
1153
|
class: "seams-waiting-text",
|
|
1149
1154
|
children: waitingText
|
|
1150
1155
|
}),
|
|
1151
|
-
|
|
1156
|
+
prompt ? /* @__PURE__ */ jsx("span", {
|
|
1152
1157
|
class: "seams-passkey-instruction",
|
|
1153
|
-
children:
|
|
1158
|
+
children: prompt.instruction
|
|
1154
1159
|
}) : null,
|
|
1155
1160
|
viewModel.showProgress && status.detail && status.detail !== waitingText ? /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("span", {
|
|
1156
1161
|
class: "seams-waiting-sdk-events",
|
|
@@ -1158,10 +1163,10 @@ var AuthMenuSurface = class extends Component {
|
|
|
1158
1163
|
}) }) : null
|
|
1159
1164
|
]
|
|
1160
1165
|
}),
|
|
1161
|
-
|
|
1166
|
+
prompt ? null : /* @__PURE__ */ jsx("div", {
|
|
1162
1167
|
"aria-label": "Loading",
|
|
1163
1168
|
class: "seams-spinner"
|
|
1164
|
-
})
|
|
1169
|
+
})
|
|
1165
1170
|
]
|
|
1166
1171
|
}) });
|
|
1167
1172
|
}
|