{"version":3,"file":"wallet-adapter-vue.umd.cjs","sources":["../src/composables/useWallet.ts","../src/components/WalletItem.vue","../src/components/pp/Disclaimer.vue","../src/components/icons/AptosLogo.vue","../src/components/pp/AptosPrivacyPolicy.vue"],"sourcesContent":["import {\n  AccountAuthenticator,\n  AccountInfo,\n  AdapterWallet,\n  AnyRawTransaction,\n  InputTransactionData,\n  NetworkInfo,\n  AptosSignMessageInput,\n  AptosSignMessageOutput,\n  AdapterNotDetectedWallet,\n  Network,\n  AptosChangeNetworkOutput,\n  PendingTransactionResponse,\n  InputSubmitTransactionData,\n  AvailableWallets,\n  WalletCore,\n  WalletCoreEvents,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport {\n  ref,\n  Ref,\n  watch,\n  onBeforeUnmount,\n  MaybeRef,\n  unref,\n  computed,\n  ComputedRef,\n} from \"vue\";\n\nexport interface WalletContextState {\n  connected: ComputedRef<boolean>;\n  isLoading: ComputedRef<boolean>;\n  account: ComputedRef<AccountInfo | null>;\n  network: ComputedRef<NetworkInfo | null>;\n  wallet: ComputedRef<AdapterWallet | null>;\n  wallets?: Ref<ReadonlyArray<AdapterWallet>>;\n  notDetectedWallets?: Ref<ReadonlyArray<AdapterNotDetectedWallet>>;\n  autoConnect: Ref<boolean>;\n  connect(walletName: string): void;\n  disconnect(): void;\n  signAndSubmitTransaction(transaction: InputTransactionData): Promise<any>;\n  signTransaction(\n    transactionOrPayload: AnyRawTransaction | InputTransactionData,\n    asFeePayer?: boolean\n  ): Promise<{\n    authenticator: AccountAuthenticator;\n    rawTransaction: Uint8Array;\n  }>;\n  submitTransaction(\n    transaction: InputSubmitTransactionData\n  ): Promise<PendingTransactionResponse>;\n  signMessage(message: AptosSignMessageInput): Promise<AptosSignMessageOutput>;\n  signMessageAndVerify(message: AptosSignMessageInput): Promise<boolean>;\n  changeNetwork(network: Network): Promise<AptosChangeNetworkOutput>;\n}\n\nexport interface AptosWalletProviderProps {\n  disableTelemetry?: boolean;\n  optInWallets?: ReadonlyArray<AvailableWallets>;\n  dappConfig?: { network: Network };\n  onError?: (error: any) => void;\n}\n\nconst LOCAL_STORAGE_KEY = \"AptosWalletName\";\n\nconst initialState: {\n  account: AccountInfo | null;\n  network: NetworkInfo | null;\n  connected: boolean;\n  wallet: AdapterWallet | null;\n} = {\n  account: null,\n  network: null,\n  connected: false,\n  wallet: null,\n};\n\nconst walletCore = ref<WalletCore>();\nconst state = ref(initialState);\nconst wallets = ref<AdapterWallet[]>([]);\nconst notDetectedWallets = ref<AdapterNotDetectedWallet[]>([]);\nconst autoConnect = ref(false);\nconst isConnecting = ref(false);\n\nfunction getWalletCoreInstance(\n  optInWallets: readonly AvailableWallets[] | undefined,\n  dappConfig: { network: Network } | undefined,\n  disableTelemetry: boolean | undefined\n) {\n  if (!walletCore.value) {\n    walletCore.value = new WalletCore(\n      optInWallets ?? [],\n      dappConfig,\n      disableTelemetry\n    );\n    Object.assign(wallets.value, walletCore.value.wallets);\n  }\n  return walletCore.value;\n}\n\n/**\n *\n * @param {AptosWalletProviderProps} props - Optional object with properties for\n * configuring the wallet adapter.\n * @return {WalletContextState}\n */\nexport function useWallet(\n  props?: AptosWalletProviderProps\n): WalletContextState {\n  const { disableTelemetry, optInWallets, dappConfig, onError } = props ?? {};\n\n  const walletCoreInstance = getWalletCoreInstance(\n    optInWallets,\n    dappConfig,\n    disableTelemetry\n  );\n\n  const connect = async (walletName: string) => {\n    try {\n      isConnecting.value = true;\n      await walletCoreInstance.connect(walletName);\n    } catch (error: any) {\n      if (onError) onError(error);\n      return Promise.reject(error);\n    } finally {\n      isConnecting.value = false;\n    }\n  };\n\n  const disconnect = async () => {\n    try {\n      await walletCoreInstance.disconnect();\n    } catch (error) {\n      if (onError) onError(error);\n      return Promise.reject(error);\n    }\n  };\n\n  const signTransaction = async (\n    transaction: AnyRawTransaction | InputTransactionData,\n    asFeePayer?: boolean\n  ): Promise<{\n    authenticator: AccountAuthenticator;\n    rawTransaction: Uint8Array;\n  }> => {\n    try {\n      return await walletCoreInstance.signTransaction({\n        transactionOrPayload: transaction,\n        asFeePayer,\n      });\n    } catch (error: any) {\n      if (onError) onError(error);\n      return Promise.reject(error);\n    }\n  };\n\n  const signMessage = async (\n    message: AptosSignMessageInput\n  ): Promise<AptosSignMessageOutput> => {\n    try {\n      return await walletCoreInstance.signMessage(message);\n    } catch (error: any) {\n      if (onError) onError(error);\n      return Promise.reject(error);\n    }\n  };\n\n  const signMessageAndVerify = async (\n    message: AptosSignMessageInput\n  ): Promise<boolean> => {\n    try {\n      return await walletCoreInstance.signMessageAndVerify(message);\n    } catch (error: any) {\n      if (onError) onError(error);\n      return Promise.reject(error);\n    }\n  };\n\n  const submitTransaction = async (\n    transaction: InputSubmitTransactionData\n  ): Promise<PendingTransactionResponse> => {\n    try {\n      return await walletCoreInstance.submitTransaction(transaction);\n    } catch (error: any) {\n      if (onError) onError(error);\n      return Promise.reject(error);\n    }\n  };\n\n  const signAndSubmitTransaction = async (\n    transaction: InputTransactionData\n  ) => {\n    try {\n      return await walletCoreInstance.signAndSubmitTransaction(transaction);\n    } catch (error: any) {\n      if (onError) onError(error);\n      return Promise.reject(error);\n    }\n  };\n\n  const changeNetwork = async (network: Network) => {\n    try {\n      return await walletCoreInstance.changeNetwork(network);\n    } catch (error: any) {\n      if (onError) onError(error);\n      return Promise.reject(error);\n    }\n  };\n\n  const handleReadyStateChange = (updatedWallet: MaybeRef<AdapterWallet>) => {\n    const _updatedWallet = unref(updatedWallet);\n    const wallet = wallets.value.find(\n      (wallet) => wallet.name === _updatedWallet.name\n    );\n    if (wallet) {\n      wallet.readyState = _updatedWallet.readyState;\n    }\n  };\n\n  const handleStandardWalletsAdded = (\n    standardWallet: MaybeRef<AdapterWallet>\n  ) => {\n    const _standardWallet = unref(standardWallet);\n\n    const existingWallet = wallets.value.find(\n      (wallet) => wallet.name == _standardWallet.name\n    );\n\n    if (existingWallet) {\n      Object.assign(existingWallet, _standardWallet);\n    } else {\n      wallets.value.push(_standardWallet);\n    }\n  };\n\n  const handleStandardNotDetectedWalletsAdded = (\n    notDetectedWallet: MaybeRef<AdapterNotDetectedWallet>\n  ): void => {\n    const _notDetectedWallet = unref(notDetectedWallet);\n    // Manage current wallet state by removing optional duplications\n    // as new wallets are coming\n    const existingWallet = wallets.value.find(\n      (wallet) => wallet.name == _notDetectedWallet.name\n    );\n    if (existingWallet) {\n      Object.assign(existingWallet, _notDetectedWallet);\n    } else {\n      notDetectedWallets.value.push(_notDetectedWallet);\n    }\n  };\n\n  const handleConnect = () => {\n    const newState = {\n      ...state.value,\n      connected: true,\n      account: walletCoreInstance.account || null,\n      network: walletCoreInstance.network || null,\n      wallet: walletCoreInstance.wallet || null,\n    };\n    Object.assign(state.value, newState);\n  };\n\n  const handleDisconnect = () => {\n    if (!state.value.connected) {\n      return;\n    }\n    const newState = {\n      ...state.value,\n      connected: false,\n      account: null,\n      network: null,\n      wallet: null,\n    };\n    Object.assign(state.value, newState);\n  };\n\n  const handleAccountChange = () => {\n    if (!state.value.connected) {\n      return;\n    }\n    if (!walletCoreInstance.wallet) {\n      return;\n    }\n    const newState = {\n      ...state.value,\n      account: walletCoreInstance.account,\n    };\n\n    Object.assign(state.value, newState);\n  };\n\n  const handleNetworkChange = () => {\n    if (!state.value.connected) {\n      return;\n    }\n    if (!walletCoreInstance.wallet) {\n      return;\n    }\n\n    const newState = {\n      ...state.value,\n      network: walletCoreInstance.network,\n    };\n\n    Object.assign(state.value, newState);\n  };\n\n  const eventHandlers: Record<\n    keyof WalletCoreEvents,\n    (args?: MaybeRef<any>) => void\n  > = {\n    connect: handleConnect,\n    disconnect: handleDisconnect,\n    accountChange: handleAccountChange,\n    networkChange: handleNetworkChange,\n    standardWalletsAdded: handleStandardWalletsAdded,\n    standardNotDetectedWalletAdded: handleStandardNotDetectedWalletsAdded,\n  };\n\n  onBeforeUnmount(() => {\n    if (walletCoreInstance) {\n      Object.keys(eventHandlers).forEach((event) => {\n        walletCoreInstance.off(\n          event as keyof WalletCoreEvents,\n          eventHandlers[event as keyof WalletCoreEvents]\n        );\n      });\n    }\n    walletCore.value = undefined;\n    wallets.value = [];\n    Object.assign(state.value, initialState);\n  });\n\n  watch(\n    () => walletCoreInstance,\n    (newWalletCore) => {\n      if (newWalletCore) {\n        Object.keys(eventHandlers).forEach((event) => {\n          walletCoreInstance.on(\n            event as keyof WalletCoreEvents,\n            eventHandlers[event as keyof WalletCoreEvents]\n          );\n        });\n      }\n    },\n    {\n      immediate: true,\n    }\n  );\n\n  watch(\n    autoConnect,\n    async (newAutoConnect) => {\n      if (newAutoConnect) {\n        if (localStorage.getItem(LOCAL_STORAGE_KEY) && !state.value.connected) {\n          await connect(localStorage.getItem(LOCAL_STORAGE_KEY) as string);\n        } else {\n          isConnecting.value = false;\n        }\n      }\n    },\n    {\n      immediate: true,\n    }\n  );\n\n  watch(\n    () => state.value.connected,\n    (connected) => {\n      if (connected) {\n        walletCoreInstance.onAccountChange();\n        walletCoreInstance.onNetworkChange();\n      }\n    },\n    {\n      immediate: true,\n    }\n  );\n\n  return {\n    connected: computed(() => state.value.connected),\n    isLoading: computed(() => isConnecting.value),\n    account: computed(() => state.value.account),\n    network: computed(() => state.value.network),\n    wallet: computed(() => state.value.wallet),\n    wallets,\n    autoConnect,\n    connect,\n    disconnect,\n    signAndSubmitTransaction,\n    signTransaction,\n    submitTransaction,\n    signMessage,\n    signMessageAndVerify,\n    changeNetwork,\n  };\n}\n","<script setup lang=\"ts\">\nimport { computed, toRefs } from \"vue\";\nimport {\n  AdapterWallet,\n  WalletReadyState,\n  isRedirectable,\n  isInstallRequired,\n  AdapterNotDetectedWallet,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport WalletIcon from \"./base/WalletIcon.vue\";\nimport WalletName from \"./base/WalletName.vue\";\nimport WalletConnectButton from \"./base/WalletConnectButton.vue\";\nimport WalletInstallLink from \"./base/WalletInstallLink.vue\";\n\ninterface WalletItemProps {\n  wallet: AdapterWallet | AdapterNotDetectedWallet;\n}\n\nconst props = defineProps<WalletItemProps>();\nconst emit = defineEmits([\"connect\"]);\n\nconst { wallet } = toRefs(props);\n\nconst isWalletReady = computed(() => {\n  return wallet.value.readyState === WalletReadyState.Installed;\n});\n\nconst mobileSupport = computed(() => {\n  return \"deeplinkProvider\" in wallet.value && wallet.value.deeplinkProvider;\n});\n\nconst isReady = computed(() => {\n  return Boolean(\n    isWalletReady.value || (isRedirectable() && mobileSupport.value)\n  );\n});\n</script>\n\n<template>\n  <template v-if=\"$slots.default\">\n    <slot />\n  </template>\n  <template v-else>\n    <div :class=\"$style.walletItem\">\n      <div :class=\"$style.walletName\">\n        <WalletIcon v-if=\"isReady\" :icon=\"wallet.icon\" :name=\"wallet.name\" />\n        <WalletName v-if=\"isReady\" :name=\"wallet.name\" />\n      </div>\n      <WalletInstallLink\n        v-if=\"isInstallRequired(wallet) && isReady\"\n        :class=\"$style.installLink\"\n        :installLink=\"wallet.url\"\n      />\n      <WalletConnectButton\n        v-else-if=\"isReady\"\n        :class=\"$style.connectButton\"\n        @connect=\"emit('connect', wallet)\"\n      />\n    </div>\n  </template>\n</template>\n\n<style module lang=\"css\">\n.walletItem {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: 0.75rem 1rem;\n  gap: 1rem;\n  border-radius: calc(0.5rem - 2px);\n  border-width: 1px;\n}\n.walletName {\n  display: flex;\n  align-items: center;\n  gap: 1rem;\n}\n.installLink {\n  padding-left: 0.75rem;\n  padding-right: 0.75rem;\n  border-radius: calc(0.5rem - 2px);\n  height: 2.25rem;\n  font-weight: 500;\n  color: inherit;\n}\n.installLink:hover {\n  background-color: hsl(240 5.9% 10%);\n}\n.connectButton {\n  padding: 0.3rem 0.7rem;\n  height: auto;\n  border-radius: calc(0.5rem - 2px);\n  font-size: 16px;\n  background-color: hsl(231, 73%, 44%);\n  color: white;\n  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.02);\n  transition: background-color 0.15s ease;\n}\n.connectButton:hover {\n  background-color: hsla(231, 73%, 44%, 0.6);\n}\n</style>\n","<template>\n  <template v-if=\"$slots.default\">\n    <slot name=\"disclaimer\" />\n  </template>\n  <template v-else>\n    <span v-bind=\"$attrs\"> By continuing, you agree to Aptos Labs' </span>\n  </template>\n</template>\n","<template>\n  <svg\n    width=\"12\"\n    height=\"12\"\n    viewBox=\"0 0 12 12\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <g clip-path=\"url(#clip0_18665_88012)\">\n      <ellipse cx=\"5.99854\" cy=\"6\" rx=\"5.97706\" ry=\"6\" fill=\"currentColor\" />\n      <path\n        d=\"M9.28095 4.01441H8.22355C8.10035 4.01441 7.98314 3.96154 7.90159 3.86951L7.47265 3.38496C7.4088 3.31263 7.31678 3.27148 7.22052 3.27148C7.12425 3.27148 7.03223 3.31288 6.96839 3.38496L6.60054 3.80068C6.48009 3.9366 6.30726 4.01466 6.12571 4.01466H0.337686C0.172841 4.4845 0.0653555 4.98078 0.0224609 5.49552H5.48653C5.58254 5.49552 5.67457 5.45636 5.7409 5.38703L6.24965 4.85609C6.31325 4.78975 6.40103 4.75234 6.49281 4.75234H6.51375C6.61027 4.75234 6.70204 4.79374 6.76589 4.86606L7.19458 5.35062C7.27613 5.4429 7.39334 5.49552 7.51654 5.49552H11.9766C11.9337 4.98053 11.8262 4.48425 11.6614 4.01466H9.2807L9.28095 4.01441Z\"\n        fill=\"white\"\n      />\n      <path\n        d=\"M3.32882 8.6096C3.42483 8.6096 3.51685 8.57045 3.58319 8.50112L4.09194 7.97017C4.15553 7.90384 4.24332 7.86643 4.33509 7.86643H4.35604C4.45255 7.86643 4.54433 7.90783 4.60817 7.9799L5.03687 8.46446C5.11842 8.55673 5.23563 8.60935 5.35883 8.60935H11.403C11.6294 8.1415 11.7953 7.63949 11.894 7.11353H6.09252C5.96933 7.11353 5.85211 7.06066 5.77057 6.96863L5.34187 6.48408C5.27803 6.41175 5.186 6.37061 5.08974 6.37061C4.99347 6.37061 4.90145 6.412 4.83761 6.48408L4.46976 6.8998C4.34931 7.03572 4.17648 7.11378 3.99468 7.11378H0.104492C0.203249 7.63974 0.369341 8.14175 0.595535 8.6096H3.32857H3.32882Z\"\n        fill=\"white\"\n      />\n      <path\n        d=\"M7.61736 2.39611C7.71337 2.39611 7.8054 2.35696 7.87173 2.28763L8.38048 1.75668C8.44408 1.69034 8.53186 1.65294 8.62363 1.65294H8.64458C8.7411 1.65294 8.83287 1.69434 8.89671 1.76666L9.32541 2.25122C9.40696 2.34349 9.52417 2.39611 9.64737 2.39611H10.7968C9.70223 0.941186 7.96126 0 6.00008 0C4.0389 0 2.29793 0.941186 1.20312 2.39611H7.61736Z\"\n        fill=\"white\"\n      />\n      <path\n        d=\"M5.30843 10.092H3.73654C3.61334 10.092 3.49613 10.0392 3.41458 9.94715L2.98589 9.46259C2.92204 9.39027 2.83002 9.34912 2.73376 9.34912C2.63749 9.34912 2.54547 9.39052 2.48163 9.46259L2.11378 9.87832C1.99333 10.0142 1.8205 10.0923 1.6387 10.0923H1.61426C2.70932 11.2657 4.26873 12.0001 6.00023 12.0001C7.73172 12.0001 9.29089 11.2657 10.3862 10.0923H5.30843V10.092Z\"\n        fill=\"white\"\n      />\n    </g>\n    <defs>\n      <clipPath id=\"clip0_18665_88012\">\n        <rect width=\"12\" height=\"12\" fill=\"white\" />\n      </clipPath>\n    </defs>\n  </svg>\n</template>\n","<script setup lang=\"ts\">\nimport Disclaimer from \"./Disclaimer.vue\";\nimport Link from \"./Link.vue\";\nimport PoweredBy from \"./PoweredBy.vue\";\n\nconst APTOS_PRIVACY_POLICY_URL = \"https://aptoslabs.com/privacy\";\n</script>\n\n<template>\n  <template v-if=\"$slots.disclaimer || $slots.link || $slots.poweredBy\">\n    <slot name=\"disclaimer\" />\n    <slot name=\"link\" />\n    <slot name=\"poweredBy\" />\n  </template>\n  <template v-else>\n    <div :class=\"$style.aptosPrivacyPolicy\" v-bind=\"$attrs\">\n      <div>\n        <Disclaimer />\n        <Link :class=\"$style.link\" :href=\"APTOS_PRIVACY_POLICY_URL\" /><span\n          >.</span\n        >\n      </div>\n      <PoweredBy :class=\"$style.poweredBy\" />\n    </div>\n  </template>\n</template>\n\n<style module lang=\"css\">\n:root {\n  --muted-color: hsl(240 3.8% 46.1%);\n  --foreground: hsl(240 10% 3.9%);\n}\n.aptosPrivacyPolicy {\n  display: flex;\n  align-items: center;\n  flex-direction: column;\n  font-size: 0.75rem;\n  line-height: 1.25rem;\n  color: var(--foreground);\n}\n.link {\n  text-underline-offset: 0.25rem;\n  text-decoration-line: underline;\n  color: var(--muted-color);\n}\n.poweredBy {\n  display: flex;\n  align-items: center;\n  gap: 0.375rem;\n  font-size: 0.75rem;\n  line-height: 1.25rem;\n  color: var(--muted-color);\n}\n</style>\n"],"names":["LOCAL_STORAGE_KEY","initialState","account","network","connected","wallet","walletCore","ref","state","wallets","notDetectedWallets","autoConnect","isConnecting","props","__props","emit","__emit","toRefs","isWalletReady","computed","value","readyState","WalletReadyState","Installed","mobileSupport","deeplinkProvider","isReady","Boolean","isRedirectable","$slots","_ctx","_cache","_renderSlot","renderSlot","_hoisted_1","width","height","viewBox","fill","_openBlock","openBlock","_createElementBlock","createElementBlock","disableTelemetry","optInWallets","dappConfig","onError","walletCoreInstance","WalletCore","Object","assign","getWalletCoreInstance","connect","async","walletName","error","Promise","reject","eventHandlers","newState","disconnect","accountChange","networkChange","standardWalletsAdded","standardWallet","_standardWallet","unref","existingWallet","find","name","push","standardNotDetectedWalletAdded","notDetectedWallet","_notDetectedWallet","onBeforeUnmount","keys","forEach","event","off","vue","watch","newWalletCore","on","immediate","newAutoConnect","localStorage","getItem","onAccountChange","onNetworkChange","isLoading","signAndSubmitTransaction","transaction","signTransaction","asFeePayer","transactionOrPayload","submitTransaction","signMessage","message","signMessageAndVerify","changeNetwork"],"mappings":"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"}