@naculus/connect-appkit-vue 0.2.3 → 0.2.5
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 +12 -6
- package/dist/index.cjs +1203 -28
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +443 -4
- package/dist/index.d.ts +443 -4
- package/dist/index.js +1211 -20
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/wc-generated/proxies.ts","../src/useAccounts.ts","../src/useChain.ts","../src/usePassphraseGate.ts","../src/useSolanaBalance.ts"],"sourcesContent":["/* eslint-disable */\n/* tslint:disable */\n/* auto-generated vue proxies */\nimport { defineContainer, type StencilVueComponent } from '@stencil/vue-output-target/runtime';\n\nimport type { JSX } from '@naculus/connect-appkit-wc';\n\n\n\n\n\nexport const AppkitAccordion: StencilVueComponent<JSX.AppkitAccordion> = /*@__PURE__*/ defineContainer<JSX.AppkitAccordion>('appkit-accordion', undefined, [\n 'label',\n 'open',\n 'disabled',\n 'appkitToggle'\n], [\n 'appkitToggle'\n]);\n\n\nexport const AppkitAccountButton: StencilVueComponent<JSX.AppkitAccountButton> = /*@__PURE__*/ defineContainer<JSX.AppkitAccountButton>('appkit-account-button', undefined, [\n 'address',\n 'balance',\n 'balanceSymbol',\n 'showAddress',\n 'showBalance',\n 'disabled'\n]);\n\n\nexport const AppkitAlertDialog: StencilVueComponent<JSX.AppkitAlertDialog> = /*@__PURE__*/ defineContainer<JSX.AppkitAlertDialog>('appkit-alert-dialog', undefined, [\n 'open',\n 'heading',\n 'description',\n 'appkitClose',\n 'appkitOpenChange'\n], [\n 'appkitClose',\n 'appkitOpenChange'\n]);\n\n\nexport const AppkitAvatar: StencilVueComponent<JSX.AppkitAvatar> = /*@__PURE__*/ defineContainer<JSX.AppkitAvatar>('appkit-avatar', undefined, [\n 'size',\n 'src',\n 'alt',\n 'fallback'\n]);\n\n\nexport const AppkitBadge: StencilVueComponent<JSX.AppkitBadge> = /*@__PURE__*/ defineContainer<JSX.AppkitBadge>('appkit-badge', undefined, [\n 'variant'\n]);\n\n\nexport const AppkitButton: StencilVueComponent<JSX.AppkitButton> = /*@__PURE__*/ defineContainer<JSX.AppkitButton>('appkit-button', undefined, [\n 'variant',\n 'size',\n 'disabled',\n 'type',\n 'locale',\n 'ariaLabel',\n 'eventName'\n]);\n\n\nexport const AppkitCard: StencilVueComponent<JSX.AppkitCard> = /*@__PURE__*/ defineContainer<JSX.AppkitCard>('appkit-card', undefined);\n\n\nexport const AppkitCardContent: StencilVueComponent<JSX.AppkitCardContent> = /*@__PURE__*/ defineContainer<JSX.AppkitCardContent>('appkit-card-content', undefined);\n\n\nexport const AppkitCardDescription: StencilVueComponent<JSX.AppkitCardDescription> = /*@__PURE__*/ defineContainer<JSX.AppkitCardDescription>('appkit-card-description', undefined);\n\n\nexport const AppkitCardFooter: StencilVueComponent<JSX.AppkitCardFooter> = /*@__PURE__*/ defineContainer<JSX.AppkitCardFooter>('appkit-card-footer', undefined);\n\n\nexport const AppkitCardHeader: StencilVueComponent<JSX.AppkitCardHeader> = /*@__PURE__*/ defineContainer<JSX.AppkitCardHeader>('appkit-card-header', undefined);\n\n\nexport const AppkitCardTitle: StencilVueComponent<JSX.AppkitCardTitle> = /*@__PURE__*/ defineContainer<JSX.AppkitCardTitle>('appkit-card-title', undefined);\n\n\nexport const AppkitCheckbox: StencilVueComponent<JSX.AppkitCheckbox> = /*@__PURE__*/ defineContainer<JSX.AppkitCheckbox>('appkit-checkbox', undefined, [\n 'checked',\n 'disabled',\n 'label',\n 'name',\n 'value',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitCollapsible: StencilVueComponent<JSX.AppkitCollapsible> = /*@__PURE__*/ defineContainer<JSX.AppkitCollapsible>('appkit-collapsible', undefined, [\n 'open',\n 'appkitToggle'\n], [\n 'appkitToggle'\n]);\n\n\nexport const AppkitConnectButton: StencilVueComponent<JSX.AppkitConnectButton> = /*@__PURE__*/ defineContainer<JSX.AppkitConnectButton>('appkit-connect-button', undefined, [\n 'connected',\n 'connecting',\n 'address',\n 'balance',\n 'balanceSymbol',\n 'isBalanceLoading',\n 'tokenBalancesJson',\n 'explorerUrl',\n 'explorerLabel',\n 'isMobile',\n 'mobileWalletName',\n 'walletsJson',\n 'qrUri',\n 'qrLoading',\n 'qrError',\n 'appkitConnect',\n 'appkitDisconnect',\n 'appkitStartPairing',\n 'appkitRetry',\n 'appkitCancelPairing',\n 'appkitMobileDeepLink',\n 'appkitCopyAddress'\n], [\n 'appkitConnect',\n 'appkitDisconnect',\n 'appkitStartPairing',\n 'appkitRetry',\n 'appkitCancelPairing',\n 'appkitMobileDeepLink',\n 'appkitCopyAddress'\n]);\n\n\nexport const AppkitDialog: StencilVueComponent<JSX.AppkitDialog> = /*@__PURE__*/ defineContainer<JSX.AppkitDialog>('appkit-dialog', undefined, [\n 'open',\n 'heading',\n 'appkitClose',\n 'appkitOpenChange'\n], [\n 'appkitClose',\n 'appkitOpenChange'\n]);\n\n\nexport const AppkitDropdownMenu: StencilVueComponent<JSX.AppkitDropdownMenu> = /*@__PURE__*/ defineContainer<JSX.AppkitDropdownMenu>('appkit-dropdown-menu', undefined, [\n 'itemsJson',\n 'appkitSelect'\n], [\n 'appkitSelect'\n]);\n\n\nexport const AppkitInput: StencilVueComponent<JSX.AppkitInput> = /*@__PURE__*/ defineContainer<JSX.AppkitInput>('appkit-input', undefined, [\n 'type',\n 'placeholder',\n 'value',\n 'disabled',\n 'invalid',\n 'name',\n 'autocomplete',\n 'maxLength',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitPopover: StencilVueComponent<JSX.AppkitPopover> = /*@__PURE__*/ defineContainer<JSX.AppkitPopover>('appkit-popover', undefined, [\n 'open',\n 'placement',\n 'appkitOpenChange'\n], [\n 'appkitOpenChange'\n]);\n\n\nexport const AppkitProgress: StencilVueComponent<JSX.AppkitProgress> = /*@__PURE__*/ defineContainer<JSX.AppkitProgress>('appkit-progress', undefined, [\n 'value',\n 'max',\n 'label'\n]);\n\n\nexport const AppkitScrollArea: StencilVueComponent<JSX.AppkitScrollArea> = /*@__PURE__*/ defineContainer<JSX.AppkitScrollArea>('appkit-scroll-area', undefined);\n\n\nexport const AppkitSelect: StencilVueComponent<JSX.AppkitSelect> = /*@__PURE__*/ defineContainer<JSX.AppkitSelect>('appkit-select', undefined, [\n 'optionsJson',\n 'value',\n 'placeholder',\n 'disabled',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitSeparator: StencilVueComponent<JSX.AppkitSeparator> = /*@__PURE__*/ defineContainer<JSX.AppkitSeparator>('appkit-separator', undefined, [\n 'orientation',\n 'decorative'\n]);\n\n\nexport const AppkitSkeleton: StencilVueComponent<JSX.AppkitSkeleton> = /*@__PURE__*/ defineContainer<JSX.AppkitSkeleton>('appkit-skeleton', undefined);\n\n\nexport const AppkitSwitch: StencilVueComponent<JSX.AppkitSwitch> = /*@__PURE__*/ defineContainer<JSX.AppkitSwitch>('appkit-switch', undefined, [\n 'checked',\n 'disabled',\n 'label',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitTabs: StencilVueComponent<JSX.AppkitTabs> = /*@__PURE__*/ defineContainer<JSX.AppkitTabs>('appkit-tabs', undefined, [\n 'tabsJson',\n 'selected',\n 'appkitTabChange'\n], [\n 'appkitTabChange'\n]);\n\n\nexport const AppkitToggleGroup: StencilVueComponent<JSX.AppkitToggleGroup> = /*@__PURE__*/ defineContainer<JSX.AppkitToggleGroup>('appkit-toggle-group', undefined, [\n 'itemsJson',\n 'selected',\n 'multiple',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitTooltip: StencilVueComponent<JSX.AppkitTooltip> = /*@__PURE__*/ defineContainer<JSX.AppkitTooltip>('appkit-tooltip', undefined, [\n 'content',\n 'placement'\n]);\n\n\n","import { isEvmAddress, parseCaip10 } from \"@naculus/connect-core\";\nimport { computed, toValue } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\n\nexport interface AccountEntry {\n /** As the session reports it: CAIP-10 for most wallets, bare hex for some. */\n address: string;\n /** The namespace, when the entry was CAIP-10. Null for a bare address. */\n namespace: string | null;\n isEVM: boolean;\n}\n\nexport interface UseAccountsReturn {\n accounts: ComputedRef<AccountEntry[]>;\n evmAccount: ComputedRef<string | null>;\n solanaAccount: ComputedRef<string | null>;\n}\n\n/**\n * Split a session's account list by what each entry actually is.\n *\n * The same reading as the React `useAccount`, because it is the same reading:\n * `parseCaip10` and `isEvmAddress` come from `@naculus/connect-core` and hold\n * every rule about which strings mean what. What differs between the two\n * bindings is `computed` versus `useMemo`, and nothing else.\n */\nexport function useAccounts(\n accounts: MaybeRefOrGetter<string[] | null | undefined>,\n): UseAccountsReturn {\n const parsed = computed<AccountEntry[]>(() =>\n (toValue(accounts) ?? []).map((address) => {\n const caip10 = parseCaip10(address);\n if (caip10) {\n return {\n address,\n namespace: caip10.namespace,\n isEVM:\n caip10.namespace === \"eip155\" && isEvmAddress(caip10.address),\n };\n }\n // A bare 0x-40-hex value is unambiguously EVM. A bare base58 string is\n // not unambiguously anything, so nothing is claimed about it.\n return { address, namespace: null, isEVM: isEvmAddress(address) };\n }),\n );\n\n return {\n accounts: parsed,\n evmAccount: computed(\n () => parsed.value.find((a) => a.isEVM)?.address ?? null,\n ),\n solanaAccount: computed(\n () => parsed.value.find((a) => a.namespace === \"solana\")?.address ?? null,\n ),\n };\n}\n","import {\n chainNamespace,\n chainNumber,\n chainsForNamespace,\n describeChain,\n resolveChain,\n type ChainInfo,\n type WalletChain,\n} from \"@naculus/connect-appkit-core\";\nimport { computed, toValue } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\n\nexport interface UseChainReturn {\n /** The configured chain matching the connected CAIP-2 id, or null. */\n currentChain: ComputedRef<WalletChain | null>;\n /** A description of the connected chain, for any namespace. */\n chainInfo: ComputedRef<ChainInfo | null>;\n /** Only the chains the connected wallet could actually switch to. */\n availableChains: ComputedRef<WalletChain[]>;\n /** The EIP-155 number, or null when the connected chain has none. */\n currentChainNumber: ComputedRef<number | null>;\n namespace: ComputedRef<string | null>;\n}\n\n/**\n * The connected chain, and the chains it is possible to switch to.\n *\n * Identical in substance to the React `useChain`, because it is the same five\n * functions from `@naculus/connect-appkit-core`. This file contains no\n * decision at all — which is the point: `availableChains` filtering to the\n * connected namespace, `chainInfo` describing non-EVM chains, and\n * `currentChainNumber` refusing to invent a number for Solana are all\n * properties of the shared core, so both bindings get them or neither does.\n *\n * Takes its chain list and connected id as arguments; Vue has no equivalent of\n * the React provider here.\n */\nexport function useChain(\n chains: MaybeRefOrGetter<WalletChain[] | null | undefined>,\n chainId: MaybeRefOrGetter<string | null | undefined>,\n): UseChainReturn {\n const list = computed(() => toValue(chains) ?? []);\n const id = computed(() => toValue(chainId) ?? null);\n\n const currentChain = computed(() => resolveChain(list.value, id.value));\n\n return {\n currentChain,\n chainInfo: computed(() => describeChain(list.value, id.value)),\n availableChains: computed(() => chainsForNamespace(list.value, id.value)),\n currentChainNumber: computed(() =>\n currentChain.value ? chainNumber(currentChain.value) : null,\n ),\n namespace: computed(() =>\n currentChain.value ? chainNamespace(currentChain.value) : null,\n ),\n };\n}\n","import type { PassphraseGate, PassphraseRequest } from \"@naculus/connect-core\";\nimport { onScopeDispose, readonly, shallowRef } from \"vue\";\n\nexport interface UsePassphraseGateReturn {\n /** The open request, or null when nothing is being asked. */\n request: Readonly<ReturnType<typeof shallowRef<PassphraseRequest | null>>>;\n /** Answer the open request. */\n submit: (passphrase: string) => void;\n /** Abandon it, failing the load or save that asked. */\n cancel: (reason?: string) => void;\n /** Drop the held passphrase, so the next operation asks again. */\n forget: (reason?: string) => void;\n}\n\n/**\n * Bind a `PassphraseGate` into Vue reactivity.\n *\n * The gate itself lives in `@naculus/connect-core` rather than in either\n * framework package, because the thing it bridges — an encrypted storage\n * adapter asking for a passphrase from inside code that has never heard of a\n * component — is the same problem in React and in Vue. One implementation,\n * two thin bindings.\n *\n * ```ts\n * const gate = new PassphraseGate()\n * const wallet = new PocketWallet({ encryptionPassphrase: gate.request })\n * const { request, submit, cancel } = usePassphraseGate(gate)\n * ```\n *\n * `shallowRef`, not `ref`: the request is a small immutable snapshot the gate\n * replaces wholesale, and deep reactivity over it would proxy an object that\n * never mutates in place.\n */\nexport function usePassphraseGate(\n gate: PassphraseGate,\n): UsePassphraseGateReturn {\n const request = shallowRef<PassphraseRequest | null>(gate.getSnapshot());\n const unsubscribe = gate.subscribe(() => {\n request.value = gate.getSnapshot();\n });\n // Without this the gate keeps a reference to a listener belonging to a\n // component that is gone, and every later prompt writes into a dead ref.\n onScopeDispose(unsubscribe);\n\n return {\n request: readonly(request) as UsePassphraseGateReturn[\"request\"],\n submit: (passphrase: string) => gate.submit(passphrase),\n cancel: (reason?: string) => gate.cancel(reason),\n forget: (reason?: string) => gate.forget(reason),\n };\n}\n","import {\n getSolanaBalance,\n type SolanaBalance,\n} from \"@naculus/connect-core\";\nimport { onScopeDispose, ref, shallowRef, toValue, watchEffect } from \"vue\";\nimport type { MaybeRefOrGetter } from \"vue\";\n\nexport interface UseSolanaBalanceReturn {\n balance: ReturnType<typeof shallowRef<SolanaBalance | null>>;\n isFetching: ReturnType<typeof ref<boolean>>;\n error: ReturnType<typeof shallowRef<Error | null>>;\n refetch: () => Promise<void>;\n}\n\n/**\n * The SOL balance of an address.\n *\n * The whole of this file is Vue plumbing. Every decision that took thought —\n * exact lamport arithmetic, distinguishing an unfunded account from an emptied\n * one, refusing to invent a zero — is in `@naculus/connect-core`, shared with\n * the React hook. That is what makes \"author in React, ship to Vue\" true for\n * the logic: what does not translate is only the reactivity.\n *\n * Takes its address and endpoint as arguments because Vue has no equivalent of\n * the React provider here. Refs and getters both work.\n */\nexport function useSolanaBalance(\n address: MaybeRefOrGetter<string | null | undefined>,\n rpcUrl: MaybeRefOrGetter<string | null | undefined>,\n): UseSolanaBalanceReturn {\n const balance = shallowRef<SolanaBalance | null>(null);\n const isFetching = ref(false);\n const error = shallowRef<Error | null>(null);\n // Guards against a slow response for a previous address overwriting the\n // balance of the one now on screen.\n let generation = 0;\n let disposed = false;\n\n const refetch = async () => {\n const addr = toValue(address);\n const url = toValue(rpcUrl);\n if (!addr || !url) {\n balance.value = null;\n return;\n }\n const own = ++generation;\n isFetching.value = true;\n error.value = null;\n try {\n const next = await getSolanaBalance(url, addr);\n if (disposed || own !== generation) return;\n balance.value = next;\n } catch (err) {\n if (disposed || own !== generation) return;\n // Cleared rather than left stale: a balance shown next to an error\n // reads as the current balance, and it is not.\n balance.value = null;\n error.value =\n err instanceof Error ? err : new Error(\"Balance read failed\");\n } finally {\n if (!disposed && own === generation) isFetching.value = false;\n }\n };\n\n watchEffect(() => {\n // Touch both so the effect re-runs when either changes.\n toValue(address);\n toValue(rpcUrl);\n void refetch();\n });\n\n onScopeDispose(() => {\n disposed = true;\n });\n\n return { balance, isFetching, error, refetch };\n}\n"],"mappings":"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","names":["computed","toValue","onScopeDispose","shallowRef","toValue"]}
|
|
1
|
+
{"version":3,"sources":["../src/wc-generated/proxies.ts","../src/useAccounts.ts","../src/useNotification.ts","../src/useAccount.ts","../src/useSession.ts","../src/useConnect.ts","../src/useDisconnect.ts","../src/useSwitchChain.ts","../src/useBalance.ts","../src/useRouteQuote.ts","../src/useCompareCosts.ts","../src/useExecuteRoute.ts","../src/useTokenList.ts","../src/useTokenSearch.ts","../src/useValidateDestination.ts","../src/useTokenBalance.ts","../src/useDelegation.ts","../src/name-lookup.ts","../src/useResolveName.ts","../src/useLookupAddress.ts","../src/useSolanaAccount.ts","../src/useChain.ts","../src/usePassphraseGate.ts","../src/useSolanaBalance.ts","../src/useLastTx.ts","../src/useTxHistory.ts","../src/useTxMonitor.ts","../src/useCapabilities.ts","../src/useSolanaRoles.ts"],"sourcesContent":["/* eslint-disable */\n/* tslint:disable */\n/* auto-generated vue proxies */\nimport { defineContainer, type StencilVueComponent } from '@stencil/vue-output-target/runtime';\n\nimport type { JSX } from '@naculus/connect-appkit-wc';\n\n\n\n\n\nexport const AppkitAccordion: StencilVueComponent<JSX.AppkitAccordion> = /*@__PURE__*/ defineContainer<JSX.AppkitAccordion>('appkit-accordion', undefined, [\n 'label',\n 'open',\n 'disabled',\n 'appkitToggle'\n], [\n 'appkitToggle'\n]);\n\n\nexport const AppkitAccountButton: StencilVueComponent<JSX.AppkitAccountButton> = /*@__PURE__*/ defineContainer<JSX.AppkitAccountButton>('appkit-account-button', undefined, [\n 'address',\n 'balance',\n 'balanceSymbol',\n 'showAddress',\n 'showBalance',\n 'disabled'\n]);\n\n\nexport const AppkitAlertDialog: StencilVueComponent<JSX.AppkitAlertDialog> = /*@__PURE__*/ defineContainer<JSX.AppkitAlertDialog>('appkit-alert-dialog', undefined, [\n 'open',\n 'heading',\n 'description',\n 'appkitClose',\n 'appkitOpenChange'\n], [\n 'appkitClose',\n 'appkitOpenChange'\n]);\n\n\nexport const AppkitAvatar: StencilVueComponent<JSX.AppkitAvatar> = /*@__PURE__*/ defineContainer<JSX.AppkitAvatar>('appkit-avatar', undefined, [\n 'size',\n 'src',\n 'alt',\n 'fallback'\n]);\n\n\nexport const AppkitBadge: StencilVueComponent<JSX.AppkitBadge> = /*@__PURE__*/ defineContainer<JSX.AppkitBadge>('appkit-badge', undefined, [\n 'variant'\n]);\n\n\nexport const AppkitButton: StencilVueComponent<JSX.AppkitButton> = /*@__PURE__*/ defineContainer<JSX.AppkitButton>('appkit-button', undefined, [\n 'variant',\n 'size',\n 'disabled',\n 'type',\n 'locale',\n 'ariaLabel',\n 'eventName'\n]);\n\n\nexport const AppkitCard: StencilVueComponent<JSX.AppkitCard> = /*@__PURE__*/ defineContainer<JSX.AppkitCard>('appkit-card', undefined);\n\n\nexport const AppkitCardContent: StencilVueComponent<JSX.AppkitCardContent> = /*@__PURE__*/ defineContainer<JSX.AppkitCardContent>('appkit-card-content', undefined);\n\n\nexport const AppkitCardDescription: StencilVueComponent<JSX.AppkitCardDescription> = /*@__PURE__*/ defineContainer<JSX.AppkitCardDescription>('appkit-card-description', undefined);\n\n\nexport const AppkitCardFooter: StencilVueComponent<JSX.AppkitCardFooter> = /*@__PURE__*/ defineContainer<JSX.AppkitCardFooter>('appkit-card-footer', undefined);\n\n\nexport const AppkitCardHeader: StencilVueComponent<JSX.AppkitCardHeader> = /*@__PURE__*/ defineContainer<JSX.AppkitCardHeader>('appkit-card-header', undefined);\n\n\nexport const AppkitCardTitle: StencilVueComponent<JSX.AppkitCardTitle> = /*@__PURE__*/ defineContainer<JSX.AppkitCardTitle>('appkit-card-title', undefined);\n\n\nexport const AppkitCheckbox: StencilVueComponent<JSX.AppkitCheckbox> = /*@__PURE__*/ defineContainer<JSX.AppkitCheckbox>('appkit-checkbox', undefined, [\n 'checked',\n 'disabled',\n 'label',\n 'name',\n 'value',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitCollapsible: StencilVueComponent<JSX.AppkitCollapsible> = /*@__PURE__*/ defineContainer<JSX.AppkitCollapsible>('appkit-collapsible', undefined, [\n 'open',\n 'appkitToggle'\n], [\n 'appkitToggle'\n]);\n\n\nexport const AppkitConnectButton: StencilVueComponent<JSX.AppkitConnectButton> = /*@__PURE__*/ defineContainer<JSX.AppkitConnectButton>('appkit-connect-button', undefined, [\n 'connected',\n 'connecting',\n 'address',\n 'balance',\n 'balanceSymbol',\n 'isBalanceLoading',\n 'tokenBalancesJson',\n 'explorerUrl',\n 'explorerLabel',\n 'isMobile',\n 'mobileWalletName',\n 'walletsJson',\n 'qrUri',\n 'qrLoading',\n 'qrError',\n 'appkitConnect',\n 'appkitDisconnect',\n 'appkitStartPairing',\n 'appkitRetry',\n 'appkitCancelPairing',\n 'appkitMobileDeepLink',\n 'appkitCopyAddress'\n], [\n 'appkitConnect',\n 'appkitDisconnect',\n 'appkitStartPairing',\n 'appkitRetry',\n 'appkitCancelPairing',\n 'appkitMobileDeepLink',\n 'appkitCopyAddress'\n]);\n\n\nexport const AppkitDialog: StencilVueComponent<JSX.AppkitDialog> = /*@__PURE__*/ defineContainer<JSX.AppkitDialog>('appkit-dialog', undefined, [\n 'open',\n 'heading',\n 'appkitClose',\n 'appkitOpenChange'\n], [\n 'appkitClose',\n 'appkitOpenChange'\n]);\n\n\nexport const AppkitDropdownMenu: StencilVueComponent<JSX.AppkitDropdownMenu> = /*@__PURE__*/ defineContainer<JSX.AppkitDropdownMenu>('appkit-dropdown-menu', undefined, [\n 'itemsJson',\n 'appkitSelect'\n], [\n 'appkitSelect'\n]);\n\n\nexport const AppkitInput: StencilVueComponent<JSX.AppkitInput> = /*@__PURE__*/ defineContainer<JSX.AppkitInput>('appkit-input', undefined, [\n 'type',\n 'placeholder',\n 'value',\n 'disabled',\n 'invalid',\n 'name',\n 'autocomplete',\n 'maxLength',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitPopover: StencilVueComponent<JSX.AppkitPopover> = /*@__PURE__*/ defineContainer<JSX.AppkitPopover>('appkit-popover', undefined, [\n 'open',\n 'placement',\n 'appkitOpenChange'\n], [\n 'appkitOpenChange'\n]);\n\n\nexport const AppkitProgress: StencilVueComponent<JSX.AppkitProgress> = /*@__PURE__*/ defineContainer<JSX.AppkitProgress>('appkit-progress', undefined, [\n 'value',\n 'max',\n 'label'\n]);\n\n\nexport const AppkitScrollArea: StencilVueComponent<JSX.AppkitScrollArea> = /*@__PURE__*/ defineContainer<JSX.AppkitScrollArea>('appkit-scroll-area', undefined);\n\n\nexport const AppkitSelect: StencilVueComponent<JSX.AppkitSelect> = /*@__PURE__*/ defineContainer<JSX.AppkitSelect>('appkit-select', undefined, [\n 'optionsJson',\n 'value',\n 'placeholder',\n 'disabled',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitSeparator: StencilVueComponent<JSX.AppkitSeparator> = /*@__PURE__*/ defineContainer<JSX.AppkitSeparator>('appkit-separator', undefined, [\n 'orientation',\n 'decorative'\n]);\n\n\nexport const AppkitSkeleton: StencilVueComponent<JSX.AppkitSkeleton> = /*@__PURE__*/ defineContainer<JSX.AppkitSkeleton>('appkit-skeleton', undefined);\n\n\nexport const AppkitSwitch: StencilVueComponent<JSX.AppkitSwitch> = /*@__PURE__*/ defineContainer<JSX.AppkitSwitch>('appkit-switch', undefined, [\n 'checked',\n 'disabled',\n 'label',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitTabs: StencilVueComponent<JSX.AppkitTabs> = /*@__PURE__*/ defineContainer<JSX.AppkitTabs>('appkit-tabs', undefined, [\n 'tabsJson',\n 'selected',\n 'appkitTabChange'\n], [\n 'appkitTabChange'\n]);\n\n\nexport const AppkitToggleGroup: StencilVueComponent<JSX.AppkitToggleGroup> = /*@__PURE__*/ defineContainer<JSX.AppkitToggleGroup>('appkit-toggle-group', undefined, [\n 'itemsJson',\n 'selected',\n 'multiple',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitTooltip: StencilVueComponent<JSX.AppkitTooltip> = /*@__PURE__*/ defineContainer<JSX.AppkitTooltip>('appkit-tooltip', undefined, [\n 'content',\n 'placement'\n]);\n\n\n","import { isEvmAddress, parseCaip10 } from \"@naculus/connect-core\";\nimport { computed, toValue } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\n\nexport interface AccountEntry {\n /** As the session reports it: CAIP-10 for most wallets, bare hex for some. */\n address: string;\n /** The namespace, when the entry was CAIP-10. Null for a bare address. */\n namespace: string | null;\n isEVM: boolean;\n}\n\nexport interface UseAccountsReturn {\n accounts: ComputedRef<AccountEntry[]>;\n evmAccount: ComputedRef<string | null>;\n solanaAccount: ComputedRef<string | null>;\n}\n\n/**\n * Split a session's account list by what each entry actually is.\n *\n * The same reading as the React `useAccount`, because it is the same reading:\n * `parseCaip10` and `isEvmAddress` come from `@naculus/connect-core` and hold\n * every rule about which strings mean what. What differs between the two\n * bindings is `computed` versus `useMemo`, and nothing else.\n */\nexport function useAccounts(\n accounts: MaybeRefOrGetter<string[] | null | undefined>,\n): UseAccountsReturn {\n const parsed = computed<AccountEntry[]>(() =>\n (toValue(accounts) ?? []).map((address) => {\n const caip10 = parseCaip10(address);\n if (caip10) {\n return {\n address,\n namespace: caip10.namespace,\n isEVM:\n caip10.namespace === \"eip155\" && isEvmAddress(caip10.address),\n };\n }\n // A bare 0x-40-hex value is unambiguously EVM. A bare base58 string is\n // not unambiguously anything, so nothing is claimed about it.\n return { address, namespace: null, isEVM: isEvmAddress(address) };\n }),\n );\n\n return {\n accounts: parsed,\n evmAccount: computed(\n () => parsed.value.find((a) => a.isEVM)?.address ?? null,\n ),\n solanaAccount: computed(\n () => parsed.value.find((a) => a.namespace === \"solana\")?.address ?? null,\n ),\n };\n}\n","import {\n addInAppNotification,\n channelsUpdate,\n clearOneInAppNotification,\n createNotificationSettingsStorage,\n DEFAULT_NOTIFICATION_SETTINGS,\n loadNotificationSettings,\n mutedChainSettings,\n saveNotificationSettings,\n updateNotificationSettings,\n type NotificationSettingsStorage,\n} from \"@naculus/connect-appkit-core\";\nimport {\n InAppChannel,\n type NotificationItem,\n type NotificationSettings,\n} from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRef, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, unref } from \"vue\";\n\nexport interface UseNotificationOptions {\n channel?: MaybeRef<InAppChannel>;\n storage?: MaybeRef<NotificationSettingsStorage>;\n}\n\nexport interface UseNotificationReturn {\n notifications: ShallowRef<NotificationItem[]>;\n unreadCount: ComputedRef<number>;\n settings: ShallowRef<NotificationSettings>;\n addNotification: (item: Omit<NotificationItem, \"id\" | \"timestamp\">) => void;\n clear: () => void;\n clearOne: (id: string) => void;\n markAsRead: (id: string) => void;\n markAllAsRead: () => void;\n updateSettings: (update: Partial<NotificationSettings>) => void;\n setChannels: (channels: string[]) => void;\n muteChain: (chainId: string) => void;\n unmuteChain: (chainId: string) => void;\n}\n\n/** Vue state shell over the shared in-app notification actions. */\nexport function useNotification(\n options: UseNotificationOptions = {},\n): UseNotificationReturn {\n const channel = unref(options.channel) ?? new InAppChannel();\n const storage = unref(options.storage) ?? createNotificationSettingsStorage();\n const notifications = shallowRef<NotificationItem[]>(channel.getHistory());\n const settings = shallowRef<NotificationSettings>(\n DEFAULT_NOTIFICATION_SETTINGS,\n );\n const unreadCount = computed(\n () => notifications.value.filter((item) => !item.read).length,\n );\n let disposed = false;\n\n void loadNotificationSettings(storage).then((saved) => {\n if (!disposed && saved) settings.value = saved;\n });\n channel.onNotification = (item) => {\n if (!disposed) notifications.value = [...notifications.value, item];\n };\n void channel.restore().then(() => {\n if (!disposed) notifications.value = channel.getHistory();\n });\n onScopeDispose(() => {\n disposed = true;\n channel.onNotification = undefined;\n });\n\n const updateSettings = (update: Partial<NotificationSettings>): void => {\n settings.value = updateNotificationSettings(settings.value, update);\n saveNotificationSettings(storage, settings.value);\n };\n\n return {\n notifications,\n unreadCount,\n settings,\n addNotification: (item) => addInAppNotification(channel, item),\n clear: () => {\n channel.clear();\n notifications.value = [];\n },\n clearOne: (id) => {\n void clearOneInAppNotification(channel, id).then(() => {\n if (!disposed) notifications.value = channel.getHistory();\n });\n },\n markAsRead: (id) => {\n channel.markAsRead(id);\n notifications.value = notifications.value.map((item) =>\n item.id === id ? { ...item, read: true } : item,\n );\n },\n markAllAsRead: () => {\n channel.markAllAsRead();\n notifications.value = notifications.value.map((item) => ({\n ...item,\n read: true,\n }));\n },\n updateSettings,\n setChannels: (channels) => updateSettings(channelsUpdate(channels)),\n muteChain: (chainId) =>\n updateSettings(mutedChainSettings(settings.value, chainId, true)),\n unmuteChain: (chainId) =>\n updateSettings(mutedChainSettings(settings.value, chainId, false)),\n };\n}\n","import { computed, toValue } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\nimport { useAccounts, type AccountEntry } from \"./useAccounts\";\n\nexport interface UseAccountReturn {\n accounts: ComputedRef<AccountEntry[] | null>;\n evmAccount: ComputedRef<string | null>;\n primaryAccount: ComputedRef<string | null>;\n isConnected: ComputedRef<boolean>;\n count: ComputedRef<number>;\n}\n\n/** React useAccount's connected-state view of the shared account parser. */\nexport function useAccount(\n accounts: MaybeRefOrGetter<string[] | null | undefined>,\n connected: MaybeRefOrGetter<boolean>,\n): UseAccountReturn {\n const parsed = useAccounts(accounts);\n const isConnected = computed(() => toValue(connected));\n const accountList = computed(() => toValue(accounts) ?? []);\n\n return {\n accounts: computed(() =>\n isConnected.value && accountList.value.length > 0\n ? parsed.accounts.value\n : null,\n ),\n evmAccount: computed(() =>\n isConnected.value ? parsed.evmAccount.value : null,\n ),\n primaryAccount: computed(() => accountList.value[0] ?? null),\n isConnected,\n count: computed(() => accountList.value.length),\n };\n}\n","import type {\n ActiveSessionBundle,\n ChainSession,\n SessionManager,\n} from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\nimport { computed, shallowRef, toValue, watch } from \"vue\";\n\nexport interface UseSessionReturn {\n session: ComputedRef<ActiveSessionBundle[\"walletSession\"] | null>;\n chainSessions: ComputedRef<ChainSession[]>;\n activeChainId: ComputedRef<string | null>;\n isConnected: ComputedRef<boolean>;\n connectorId: ComputedRef<string | null>;\n}\n\ninterface SessionSnapshot {\n session: ActiveSessionBundle[\"walletSession\"] | null;\n chainSessions: ChainSession[];\n activeChainId: string | null;\n connectorId: string | null;\n}\n\nfunction readSession(\n manager: SessionManager | null | undefined,\n): SessionSnapshot {\n const bundle = manager?.getActiveBundle();\n if (!bundle) {\n return {\n session: null,\n chainSessions: [],\n activeChainId: null,\n connectorId: null,\n };\n }\n return {\n session: bundle.walletSession,\n chainSessions: Array.from(bundle.chainSessions.values()),\n activeChainId: bundle.activeChainId,\n connectorId: bundle.walletSession.walletType,\n };\n}\n\n/** Reactively expose a caller-owned SessionManager's active bundle. */\nexport function useSession(\n manager: MaybeRefOrGetter<SessionManager | null | undefined>,\n): UseSessionReturn {\n const snapshot = shallowRef<SessionSnapshot>(readSession(toValue(manager)));\n\n watch(\n () => toValue(manager),\n (current, _previous, onCleanup) => {\n const update = (): void => {\n snapshot.value = readSession(current);\n };\n update();\n if (!current) return;\n current.on(\"sessionConnected\", update);\n current.on(\"sessionDisconnected\", update);\n current.on(\"chainChanged\", update);\n onCleanup(() => {\n current.off(\"sessionConnected\", update);\n current.off(\"sessionDisconnected\", update);\n current.off(\"chainChanged\", update);\n });\n },\n { immediate: true },\n );\n\n return {\n session: computed(() => snapshot.value.session),\n chainSessions: computed(() => snapshot.value.chainSessions),\n activeChainId: computed(() => snapshot.value.activeChainId),\n isConnected: computed(() => snapshot.value.session !== null),\n connectorId: computed(() => snapshot.value.connectorId),\n };\n}\n","import { WalletError } from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, unref } from \"vue\";\n\nexport interface UseConnectReturn {\n connect: () => Promise<void>;\n isConnecting: ComputedRef<boolean>;\n error: ShallowRef<Error | null>;\n}\n\n/** Connection state around a caller-owned action; never connects on mount. */\nexport function useConnect(\n action: MaybeRef<() => Promise<void>>,\n status: MaybeRefOrGetter<string>,\n): UseConnectReturn {\n const isLoading = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let disposed = false;\n let inFlight: Promise<void> | null = null;\n\n const connect = (): Promise<void> => {\n if (inFlight) return inFlight;\n const invoke = unref(action);\n isLoading.value = true;\n error.value = null;\n const pending = Promise.resolve()\n .then(() => invoke())\n .catch((cause: unknown) => {\n if (disposed) return;\n const message =\n cause instanceof Error ? cause.message : \"Connection failed\";\n error.value = cause instanceof WalletError ? cause : new Error(message);\n })\n .finally(() => {\n if (inFlight === pending) inFlight = null;\n if (!disposed) isLoading.value = false;\n });\n inFlight = pending;\n return pending;\n };\n\n onScopeDispose(() => {\n disposed = true;\n });\n return {\n connect,\n isConnecting: computed(\n () => isLoading.value || toValue(status) === \"connecting\",\n ),\n error,\n };\n}\n","import type { MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, unref } from \"vue\";\n\nexport interface UseDisconnectReturn {\n disconnect: () => Promise<void>;\n isDisconnecting: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n cleanup: () => void;\n}\n\n/** Disconnect through a caller-owned action, preserving React's no-op when already disconnected. */\nexport function useDisconnect(\n action: MaybeRef<() => Promise<void>>,\n status: MaybeRefOrGetter<string>,\n): UseDisconnectReturn {\n const isDisconnecting = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let disposed = false;\n let inFlight: Promise<void> | null = null;\n\n const disconnect = (): Promise<void> => {\n if (inFlight) return inFlight;\n if (toValue(status) === \"disconnected\") return Promise.resolve();\n const invoke = unref(action);\n isDisconnecting.value = true;\n error.value = null;\n const pending = Promise.resolve()\n .then(() => invoke())\n .catch((cause: unknown) => {\n if (!disposed) {\n error.value =\n cause instanceof Error ? cause : new Error(\"Disconnect failed\");\n }\n })\n .finally(() => {\n if (inFlight === pending) inFlight = null;\n if (!disposed) isDisconnecting.value = false;\n });\n inFlight = pending;\n return pending;\n };\n\n const cleanup = (): void => {\n disposed = true;\n };\n onScopeDispose(cleanup);\n return { disconnect, isDisconnecting, error, cleanup };\n}\n","import { toChainSwitchError } from \"@naculus/connect-appkit-core\";\nimport type { WalletError } from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, unref } from \"vue\";\n\nexport interface UseSwitchChainReturn {\n switchChain: (chainId: string) => Promise<void>;\n isSwitching: ShallowRef<boolean>;\n currentChainId: ComputedRef<string | null>;\n error: ShallowRef<WalletError | null>;\n clearError: () => void;\n}\n\n/** Vue counterpart of React useSwitchChain around a caller-owned action. */\nexport function useSwitchChain(\n action: MaybeRef<(chainId: string) => Promise<void>>,\n chainId: MaybeRefOrGetter<string | null | undefined>,\n): UseSwitchChainReturn {\n const isSwitching = shallowRef(false);\n const error = shallowRef<WalletError | null>(null);\n let generation = 0;\n let active = 0;\n let disposed = false;\n\n const switchChain = async (targetChainId: string): Promise<void> => {\n const invoke = unref(action);\n const mine = ++generation;\n active++;\n isSwitching.value = true;\n error.value = null;\n try {\n await invoke(targetChainId);\n } catch (cause) {\n const walletError = toChainSwitchError(cause);\n if (!disposed && mine === generation) error.value = walletError;\n throw walletError;\n } finally {\n active--;\n if (!disposed) isSwitching.value = active > 0;\n }\n };\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n return {\n switchChain,\n isSwitching,\n currentChainId: computed(() => toValue(chainId) ?? null),\n error,\n clearError: () => {\n error.value = null;\n },\n };\n}\n","import { bareEvmAddress } from \"@naculus/connect-appkit-core\";\nimport { formatUnits } from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, watch } from \"vue\";\n\n/** Minimal read-only contract; a viem PublicClient satisfies it. */\nexport interface NativeBalanceReader {\n getBalance(args: { address: `0x${string}` }): Promise<bigint>;\n}\n\nexport interface UseBalanceOptions {\n /** Native currency decimals. Default 18. */\n decimals?: MaybeRefOrGetter<number | null | undefined>;\n /**\n * Native currency symbol, or null when it is not known. Null rather than\n * \"ETH\": a wrong unit beside the number is worse than no unit.\n */\n symbol?: MaybeRefOrGetter<string | null | undefined>;\n /** Auto-refresh interval in milliseconds. Default: no auto-refresh. */\n refreshInterval?: MaybeRefOrGetter<number | null | undefined>;\n}\n\nexport interface UseBalanceReturn {\n /** Raw balance in wei as a decimal string, or null when unread. */\n balance: ShallowRef<string | null>;\n /** Human-readable balance in the native unit, or null when unread. */\n formatted: ComputedRef<string | null>;\n symbol: ComputedRef<string | null>;\n isFetching: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refetch: () => Promise<void>;\n}\n\n/**\n * Native balance of an EVM account through a caller-owned reader.\n *\n * Vue has no AppKit provider, so the client is explicit. Unlike the React\n * hook this does not fetch a USD price: that is an outward HTTP call the\n * caller did not hand us, and it belongs beside the reader they did.\n */\nexport function useBalance(\n account: MaybeRefOrGetter<string | null | undefined>,\n client: MaybeRefOrGetter<NativeBalanceReader | null | undefined>,\n options: UseBalanceOptions = {},\n): UseBalanceReturn {\n const balance = shallowRef<string | null>(null);\n const isFetching = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n let timer: ReturnType<typeof setInterval> | null = null;\n\n const refetch = async (): Promise<void> => {\n const reader = toValue(client);\n const address = bareEvmAddress(toValue(account));\n const own = ++generation;\n if (!reader || !address) {\n balance.value = null;\n error.value = null;\n isFetching.value = false;\n return;\n }\n isFetching.value = true;\n error.value = null;\n try {\n const next = await reader.getBalance({ address });\n if (disposed || own !== generation) return;\n balance.value = next.toString();\n } catch (cause) {\n if (disposed || own !== generation) return;\n // Cleared rather than left stale: a balance shown next to an error\n // reads as the current balance, and it is not.\n balance.value = null;\n error.value =\n cause instanceof Error ? cause : new Error(\"Balance read failed\");\n } finally {\n if (!disposed && own === generation) isFetching.value = false;\n }\n };\n\n const stopTimer = (): void => {\n if (timer) clearInterval(timer);\n timer = null;\n };\n\n watch(\n [\n () => toValue(account),\n () => toValue(client),\n () => toValue(options.refreshInterval) ?? 0,\n ],\n ([, , interval]) => {\n stopTimer();\n void refetch();\n if (interval > 0) timer = setInterval(() => void refetch(), interval);\n },\n { immediate: true },\n );\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n stopTimer();\n });\n\n return {\n balance,\n formatted: computed(() =>\n balance.value === null\n ? null\n : formatUnits(BigInt(balance.value), toValue(options.decimals) ?? 18),\n ),\n symbol: computed(() => toValue(options.symbol) ?? null),\n isFetching,\n error,\n refetch,\n };\n}\n","import {\n type GetRouteQuotes,\n isQuotableInput,\n type RouteQuote,\n type RouteQuoteInput,\n} from \"@naculus/connect-appkit-core\";\nimport type { MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, unref, watch } from \"vue\";\n\nexport interface UseRouteQuoteOptions {\n /** Debounce before auto-fetching after an input change (default 300 ms). */\n debounceMs?: number;\n}\n\nexport interface UseRouteQuoteReturn {\n quotes: ShallowRef<RouteQuote[]>;\n loading: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refresh: () => Promise<void>;\n clear: () => void;\n}\n\n/**\n * Debounced cross-chain route quotes through a caller-supplied quote\n * function, mirroring the React hook. Which inputs are quotable is decided\n * in appkit-core; this file debounces and drops late results.\n */\nexport function useRouteQuote(\n input: MaybeRefOrGetter<RouteQuoteInput>,\n getQuotes?: MaybeRef<GetRouteQuotes | null | undefined>,\n options: UseRouteQuoteOptions = {},\n): UseRouteQuoteReturn {\n const quotes = shallowRef<RouteQuote[]>([]);\n const loading = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n let timer: ReturnType<typeof setTimeout> | null = null;\n\n const clearTimer = (): void => {\n if (timer) clearTimeout(timer);\n timer = null;\n };\n\n const fetchQuotes = async (): Promise<void> => {\n const current = toValue(input);\n const fn = unref(getQuotes);\n const own = ++generation;\n if (!isQuotableInput(current)) {\n quotes.value = [];\n return;\n }\n if (!fn) return;\n loading.value = true;\n error.value = null;\n try {\n const result = await fn(\n current.fromChain,\n current.toChain,\n current.fromToken,\n current.amount,\n current.options,\n current.toToken,\n );\n if (disposed || own !== generation) return;\n quotes.value = result;\n } catch (cause) {\n if (disposed || own !== generation) return;\n error.value = cause instanceof Error ? cause : new Error(String(cause));\n quotes.value = [];\n } finally {\n if (!disposed && own === generation) loading.value = false;\n }\n };\n\n watch(\n [\n () => toValue(input).fromChain,\n () => toValue(input).toChain,\n () => toValue(input).fromToken,\n () => toValue(input).toToken,\n () => toValue(input).amount,\n () => unref(getQuotes),\n ],\n ([fromChain, toChain, fromToken, , amount]) => {\n clearTimer();\n if (!fromChain || !toChain || !fromToken || !amount) {\n quotes.value = [];\n return;\n }\n timer = setTimeout(() => {\n timer = null;\n void fetchQuotes();\n }, options.debounceMs ?? 300);\n },\n { immediate: true },\n );\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n clearTimer();\n });\n\n return {\n quotes,\n loading,\n error,\n refresh: fetchQuotes,\n clear: () => {\n clearTimer();\n generation++;\n quotes.value = [];\n error.value = null;\n loading.value = false;\n },\n };\n}\n","import {\n type CompareCosts,\n type CompareCostsInput,\n type CostComparison,\n compareCostsKey,\n} from \"@naculus/connect-appkit-core\";\nimport type { MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, unref, watch } from \"vue\";\n\nexport interface UseCompareCostsReturn {\n comparisons: ShallowRef<CostComparison[]>;\n loading: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refresh: () => Promise<void>;\n}\n\n/**\n * Compare an operation's cost across chains through a caller-supplied\n * function, mirroring the React hook. Re-fetches when the input's *value*\n * changes (appkit-core's `compareCostsKey`), not when a new array or object\n * with the same content is passed; only the newest request may write.\n */\nexport function useCompareCosts(\n input: MaybeRefOrGetter<CompareCostsInput>,\n compareCosts?: MaybeRef<CompareCosts | null | undefined>,\n): UseCompareCostsReturn {\n const comparisons = shallowRef<CostComparison[]>([]);\n const loading = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n\n const fetchComparisons = async (): Promise<void> => {\n const { operation, chains, options } = toValue(input);\n const fn = unref(compareCosts);\n const own = ++generation;\n if (!chains || chains.length === 0) {\n comparisons.value = [];\n return;\n }\n if (!fn) return;\n loading.value = true;\n error.value = null;\n try {\n const result = await fn(operation, chains, options);\n if (disposed || own !== generation) return;\n comparisons.value = result;\n } catch (cause) {\n if (disposed || own !== generation) return;\n error.value = cause instanceof Error ? cause : new Error(String(cause));\n comparisons.value = [];\n } finally {\n if (!disposed && own === generation) loading.value = false;\n }\n };\n\n watch(\n [() => compareCostsKey(toValue(input)), () => unref(compareCosts)],\n () => {\n void fetchComparisons();\n },\n { immediate: true },\n );\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return { comparisons, loading, error, refresh: fetchComparisons };\n}\n","import {\n type ExecutableQuote,\n type ExecuteRoute,\n type ExecuteRouteError,\n type ExecuteRouteOptions,\n type ExecuteRouteResult,\n toExecuteRouteError,\n validateRouteRecipient,\n} from \"@naculus/connect-appkit-core\";\nimport type { MaybeRef, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, unref } from \"vue\";\n\nexport interface UseExecuteRouteReturn {\n execute: (\n quote: ExecutableQuote,\n recipient: string,\n options?: ExecuteRouteOptions,\n ) => Promise<ExecuteRouteResult | null>;\n executing: ShallowRef<boolean>;\n result: ShallowRef<ExecuteRouteResult | null>;\n error: ShallowRef<ExecuteRouteError | null>;\n reset: () => void;\n}\n\n/**\n * Execute a quoted route once through a caller-supplied executor, mirroring\n * the React hook. The recipient check and error shape are appkit-core's. A\n * second call while one is in flight is refused, and `reset()` deliberately\n * does not unlock that guard: the first request is still out there.\n */\nexport function useExecuteRoute(\n executeRoute?: MaybeRef<ExecuteRoute | null | undefined>,\n): UseExecuteRouteReturn {\n const executing = shallowRef(false);\n const result = shallowRef<ExecuteRouteResult | null>(null);\n const error = shallowRef<ExecuteRouteError | null>(null);\n let inFlight = false;\n let disposed = false;\n\n const execute = async (\n quote: ExecutableQuote,\n recipient: string,\n options?: ExecuteRouteOptions,\n ): Promise<ExecuteRouteResult | null> => {\n const fn = unref(executeRoute);\n if (!fn) {\n error.value = {\n code: \"no_executor\",\n message: \"No executeRoute function provided\",\n };\n result.value = null;\n return null;\n }\n const recipientError = validateRouteRecipient(quote, recipient);\n if (recipientError) {\n error.value = recipientError;\n result.value = null;\n return null;\n }\n if (inFlight) {\n error.value = {\n code: \"execution_in_progress\",\n message: \"A route execution is already in progress\",\n };\n return null;\n }\n inFlight = true;\n executing.value = true;\n error.value = null;\n result.value = null;\n try {\n const execResult = await fn(quote, recipient, options);\n if (!disposed) result.value = execResult;\n return execResult;\n } catch (cause) {\n if (!disposed) error.value = toExecuteRouteError(cause);\n return null;\n } finally {\n inFlight = false;\n if (!disposed) executing.value = false;\n }\n };\n\n onScopeDispose(() => {\n disposed = true;\n });\n\n return {\n execute,\n executing,\n result,\n error,\n reset: () => {\n result.value = null;\n error.value = null;\n executing.value = false;\n },\n };\n}\n","import { eip155ChainIdToNumber } from \"@naculus/connect-appkit-core\";\nimport {\n TokenListManager,\n type TokenListEntry,\n type TokenListManagerConfig,\n type TokenListSource,\n} from \"@naculus/connect-core\";\nimport type { MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, watch } from \"vue\";\n\nexport interface UseTokenListOptions {\n /** Load on creation (default: true). */\n autoLoad?: boolean;\n /** Custom sources; the manager's defaults otherwise. */\n sources?: TokenListSource[];\n /** Reuse a caller-owned manager instead of creating one. */\n manager?: TokenListManager;\n}\n\nexport interface UseTokenListReturn {\n /** Tokens for the given chain, or all chains when none is given. */\n tokens: ShallowRef<TokenListEntry[]>;\n isLoading: ShallowRef<boolean>;\n /** True once a load has completed at least once. */\n isLoaded: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n /** Force a refresh from all sources. */\n refetch: () => Promise<void>;\n}\n\n/**\n * Token list for a chain, mirroring the React hook. The list logic, caching\n * and chain filtering are `TokenListManager`'s; this file is Vue plumbing.\n * The chain id is CAIP-2; a non-EVM chain yields the unfiltered list rather\n * than a bogus numeric filter.\n */\nexport function useTokenList(\n chainId?: MaybeRefOrGetter<string | null | undefined>,\n options: UseTokenListOptions = {},\n): UseTokenListReturn {\n const config: Partial<TokenListManagerConfig> = {};\n if (options.sources) config.sources = options.sources;\n const manager = options.manager ?? new TokenListManager(config);\n\n const tokens = shallowRef<TokenListEntry[]>([]);\n const isLoading = shallowRef(options.autoLoad !== false);\n const isLoaded = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n\n const select = (): TokenListEntry[] => {\n const id = toValue(chainId);\n const numeric = id ? eip155ChainIdToNumber(id) : undefined;\n return manager.getTokens(\n numeric !== undefined ? { chainId: numeric } : undefined,\n );\n };\n\n const run = async (op: () => Promise<unknown>): Promise<void> => {\n const own = ++generation;\n isLoading.value = true;\n error.value = null;\n try {\n await op();\n if (disposed || own !== generation) return;\n tokens.value = select();\n isLoaded.value = true;\n } catch (cause) {\n if (disposed || own !== generation) return;\n error.value = cause instanceof Error ? cause : new Error(String(cause));\n } finally {\n if (!disposed && own === generation) isLoading.value = false;\n }\n };\n\n watch(\n () => toValue(chainId),\n () => {\n if (options.autoLoad !== false) void run(() => manager.load());\n },\n { immediate: true },\n );\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return {\n tokens,\n isLoading,\n isLoaded,\n error,\n refetch: () => run(() => manager.refresh()),\n };\n}\n","import { eip155ChainIdToNumber } from \"@naculus/connect-appkit-core\";\nimport {\n TokenListManager,\n type TokenSearchResult,\n} from \"@naculus/connect-core\";\nimport type { MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, watch } from \"vue\";\n\nconst DEBOUNCE_MS = 300;\nconst EMPTY: TokenSearchResult = { exact: [], fuzzy: [], hasMore: false };\n\nexport interface UseTokenSearchOptions {\n /** Reuse a caller-owned manager; otherwise one shared instance per page. */\n manager?: TokenListManager;\n /** Debounce in ms (default 300). */\n debounceMs?: number;\n /** Max results per bucket (default 20). */\n limit?: number;\n}\n\nexport interface UseTokenSearchReturn {\n results: ShallowRef<TokenSearchResult>;\n /** True from the first keystroke until the debounced search has run. */\n isSearching: ShallowRef<boolean>;\n}\n\n// One manager per page, as in React: the first search kicks off the default\n// list load in the background and later searches reuse it.\nlet sharedManager: TokenListManager | null = null;\nfunction getSharedManager(): TokenListManager {\n if (!sharedManager) {\n sharedManager = new TokenListManager();\n sharedManager.load().catch(() => {});\n }\n return sharedManager;\n}\n\n/**\n * Debounced token search by symbol, name or address, mirroring the React\n * hook. Matching lives in `TokenListManager.search`; this file only debounces\n * and keeps a late timer from writing after the query moved on.\n */\nexport function useTokenSearch(\n query: MaybeRefOrGetter<string | null | undefined>,\n chainId?: MaybeRefOrGetter<string | null | undefined>,\n options: UseTokenSearchOptions = {},\n): UseTokenSearchReturn {\n const results = shallowRef<TokenSearchResult>(EMPTY);\n const isSearching = shallowRef(false);\n let timer: ReturnType<typeof setTimeout> | null = null;\n\n const clear = (): void => {\n if (timer) clearTimeout(timer);\n timer = null;\n };\n\n watch(\n [() => (toValue(query) ?? \"\").trim(), () => toValue(chainId)],\n ([q, id]) => {\n clear();\n if (!q) {\n results.value = EMPTY;\n isSearching.value = false;\n return;\n }\n isSearching.value = true;\n timer = setTimeout(() => {\n timer = null;\n const manager = options.manager ?? getSharedManager();\n const numeric = id ? eip155ChainIdToNumber(id) : undefined;\n results.value = manager.search(q, {\n chainId: numeric,\n limit: options.limit ?? 20,\n });\n isSearching.value = false;\n }, options.debounceMs ?? DEBOUNCE_MS);\n },\n { immediate: true },\n );\n\n onScopeDispose(clear);\n\n return { results, isSearching };\n}\n","import {\n type DestinationValidation,\n validateDestination,\n} from \"@naculus/connect-appkit-core\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\nimport { computed, toValue } from \"vue\";\n\nexport interface UseValidateDestinationReturn {\n validation: ComputedRef<DestinationValidation>;\n}\n\n/**\n * Syntactic destination checks, shared with the React hook through\n * `@naculus/connect-appkit-core`. Returns a machine-readable `issue`; the\n * Vue package carries no locale table, so the caller maps it to a string.\n * `level: \"ok\"` means nothing wrong was found — not that it is safe.\n */\nexport function useValidateDestination(\n address: MaybeRefOrGetter<string | null | undefined>,\n): UseValidateDestinationReturn {\n return {\n validation: computed(() => validateDestination(toValue(address) ?? \"\")),\n };\n}\n","import { bareEvmAddress } from \"@naculus/connect-appkit-core\";\nimport { ERC20_MIN_ABI, formatUnits } from \"@naculus/connect-core\";\nimport type { MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, watch } from \"vue\";\n\nexport interface TokenInfo {\n /** ERC-20 token contract address */\n address: `0x${string}`;\n symbol: string;\n decimals: number;\n name?: string;\n}\n\n/** Minimal read-only contract; a viem PublicClient satisfies it. */\nexport interface TokenBalanceReader {\n readContract(args: {\n address: `0x${string}`;\n abi: typeof ERC20_MIN_ABI;\n functionName: \"balanceOf\";\n args: readonly [`0x${string}`];\n }): Promise<unknown>;\n}\n\nexport interface TokenBalanceResult extends TokenInfo {\n /** Raw balance in the smallest unit as a decimal string, or null if unread. */\n balance: string | null;\n /** Human-readable balance, or null if unread. */\n formatted: string | null;\n}\n\nexport interface UseTokenBalanceOptions {\n /** Auto-refresh interval in milliseconds. Default: no auto-refresh. */\n refreshInterval?: MaybeRefOrGetter<number | null | undefined>;\n}\n\nexport interface UseTokenBalanceReturn {\n tokenBalances: ShallowRef<TokenBalanceResult[]>;\n isFetching: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refetch: () => Promise<void>;\n getTokenBalance: (\n tokenAddress: `0x${string}`,\n ) => TokenBalanceResult | undefined;\n}\n\nfunction tokensKey(tokens: readonly TokenInfo[]): string {\n return tokens\n .map((t) => `${t.address.toLowerCase()}|${t.decimals}|${t.symbol}`)\n .join(\",\");\n}\n\n/**\n * ERC-20 balances of an EVM account through a caller-owned reader.\n *\n * Mirrors the React hook: one token failing to read leaves that entry with a\n * null balance and does not fail the others. A late response for a previous\n * account, reader or token list is dropped.\n */\nexport function useTokenBalance(\n account: MaybeRefOrGetter<string | null | undefined>,\n client: MaybeRefOrGetter<TokenBalanceReader | null | undefined>,\n tokens: MaybeRefOrGetter<readonly TokenInfo[] | null | undefined>,\n options: UseTokenBalanceOptions = {},\n): UseTokenBalanceReturn {\n const tokenBalances = shallowRef<TokenBalanceResult[]>([]);\n const isFetching = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n let timer: ReturnType<typeof setInterval> | null = null;\n\n const refetch = async (): Promise<void> => {\n const reader = toValue(client);\n const address = bareEvmAddress(toValue(account));\n const list = toValue(tokens) ?? [];\n const own = ++generation;\n if (!reader || !address || list.length === 0) {\n tokenBalances.value = [];\n error.value = null;\n isFetching.value = false;\n return;\n }\n isFetching.value = true;\n error.value = null;\n try {\n const results = await Promise.all(\n list.map(async (token): Promise<TokenBalanceResult> => {\n try {\n const raw = await reader.readContract({\n address: token.address,\n abi: ERC20_MIN_ABI,\n functionName: \"balanceOf\",\n args: [address],\n });\n const value = BigInt(raw as bigint | string | number);\n return {\n ...token,\n balance: value.toString(),\n formatted: formatUnits(value, token.decimals),\n };\n } catch {\n return { ...token, balance: null, formatted: null };\n }\n }),\n );\n if (disposed || own !== generation) return;\n tokenBalances.value = results;\n } catch (cause) {\n if (disposed || own !== generation) return;\n tokenBalances.value = [];\n error.value =\n cause instanceof Error\n ? cause\n : new Error(\"Failed to fetch token balances\");\n } finally {\n if (!disposed && own === generation) isFetching.value = false;\n }\n };\n\n const stopTimer = (): void => {\n if (timer) clearInterval(timer);\n timer = null;\n };\n\n // Multi-source form: Vue compares each source by value, so a new token\n // array with the same content does not trigger a re-read.\n watch(\n [\n () => toValue(account),\n () => toValue(client),\n () => tokensKey(toValue(tokens) ?? []),\n () => toValue(options.refreshInterval) ?? 0,\n ],\n ([, , , interval]) => {\n stopTimer();\n void refetch();\n if (interval > 0) timer = setInterval(() => void refetch(), interval);\n },\n { immediate: true },\n );\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n stopTimer();\n });\n\n return {\n tokenBalances,\n isFetching,\n error,\n refetch,\n getTokenBalance: (tokenAddress) =>\n tokenBalances.value.find(\n (t) => t.address.toLowerCase() === tokenAddress.toLowerCase(),\n ),\n };\n}\n","import { bareEvmAddress } from \"@naculus/connect-appkit-core\";\nimport {\n type DelegationStatus,\n readDelegation,\n UNKNOWN_DELEGATION,\n} from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, watch } from \"vue\";\n\n/** Minimal read-only contract; a viem PublicClient can supply getCode. */\nexport interface DelegationCodeReader {\n getCode(args: { address: `0x${string}` }): Promise<`0x${string}` | undefined>;\n}\n\nexport interface UseDelegationReturn {\n delegated: ComputedRef<boolean | null>;\n delegate: ComputedRef<`0x${string}` | null>;\n isFetching: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refetch: () => Promise<void>;\n}\n\n/** Read current EIP-7702 delegation without treating an unread account as undelegated. */\nexport function useDelegation(\n account: MaybeRefOrGetter<string | null | undefined>,\n client: MaybeRefOrGetter<DelegationCodeReader | null | undefined>,\n chainId?: MaybeRefOrGetter<string | null | undefined>,\n): UseDelegationReturn {\n const status = shallowRef<DelegationStatus>(UNKNOWN_DELEGATION);\n const isFetching = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n\n const refetch = async (): Promise<void> => {\n const mine = ++generation;\n const reader = toValue(client);\n const address = bareEvmAddress(toValue(account));\n status.value = UNKNOWN_DELEGATION;\n error.value = null;\n if (!reader || !address) {\n isFetching.value = false;\n return;\n }\n isFetching.value = true;\n try {\n const code = await reader.getCode({ address });\n if (!disposed && mine === generation) {\n status.value = readDelegation(code ?? \"0x\");\n }\n } catch (cause) {\n if (!disposed && mine === generation) {\n status.value = UNKNOWN_DELEGATION;\n error.value =\n cause instanceof Error ? cause : new Error(\"Code read failed\");\n }\n } finally {\n if (!disposed && mine === generation) isFetching.value = false;\n }\n };\n\n watch(\n () => [toValue(account), toValue(client), toValue(chainId)] as const,\n () => {\n void refetch();\n },\n { immediate: true, flush: \"sync\" },\n );\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return {\n delegated: computed(() => status.value.delegated),\n delegate: computed(() => status.value.delegate),\n isFetching,\n error,\n refetch,\n };\n}\n","import { getResolver } from \"@naculus/connect-appkit-core\";\nimport type { NameResolver, NameResolverConfig } from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, watch } from \"vue\";\n\nexport interface NameLookupReturn<T> {\n data: ShallowRef<T | null>;\n isLoading: ComputedRef<boolean>;\n error: ShallowRef<Error | null>;\n refetch: () => void;\n}\n\ninterface NameLookupOptions<T> {\n input: MaybeRefOrGetter<string>;\n skip?: MaybeRefOrGetter<boolean | undefined>;\n resolverConfig?: MaybeRefOrGetter<NameResolverConfig | undefined>;\n scope?: MaybeRefOrGetter<string | undefined>;\n query: (\n resolver: NameResolver,\n input: string,\n scope?: string,\n ) => Promise<T | null>;\n}\n\n/** Shared race-safe lifecycle for forward and reverse name lookups. */\nexport function useNameLookup<T>(\n options: NameLookupOptions<T>,\n): NameLookupReturn<T> {\n const data = shallowRef<T | null>(null) as ShallowRef<T | null>;\n const loading = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n\n const run = (): void => {\n const input = toValue(options.input).trim();\n const skip = toValue(options.skip) ?? false;\n const scope = toValue(options.scope);\n const config = toValue(options.resolverConfig);\n const mine = ++generation;\n if (!input || skip) {\n data.value = null;\n loading.value = false;\n error.value = null;\n return;\n }\n\n // Never show the previous name/address beside a new input while it loads.\n data.value = null;\n loading.value = true;\n error.value = null;\n Promise.resolve()\n .then(() => options.query(getResolver(config), input, scope))\n .then((result) => {\n if (disposed || mine !== generation) return;\n data.value = result;\n loading.value = false;\n })\n .catch((cause: unknown) => {\n if (disposed || mine !== generation) return;\n data.value = null;\n error.value = cause instanceof Error ? cause : new Error(String(cause));\n loading.value = false;\n });\n };\n\n watch(\n () =>\n [\n toValue(options.input),\n toValue(options.skip),\n toValue(options.scope),\n toValue(options.resolverConfig),\n ] as const,\n run,\n { immediate: true, flush: \"sync\", deep: true },\n );\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return {\n data,\n isLoading: computed(() => loading.value),\n error,\n refetch: run,\n };\n}\n","import type { AddressResult, NameResolverConfig } from \"@naculus/connect-core\";\nimport type { MaybeRefOrGetter } from \"vue\";\nimport { type NameLookupReturn, useNameLookup } from \"./name-lookup\";\n\nexport type UseResolveNameReturn = NameLookupReturn<AddressResult>;\n\n/** Resolve a reactive ENS or SNS name to an address. */\nexport function useResolveName(\n name: MaybeRefOrGetter<string>,\n options?: {\n skip?: MaybeRefOrGetter<boolean | undefined>;\n resolverConfig?: MaybeRefOrGetter<NameResolverConfig | undefined>;\n },\n): UseResolveNameReturn {\n return useNameLookup({\n input: name,\n skip: options?.skip,\n resolverConfig: options?.resolverConfig,\n query: (resolver, input) => resolver.resolveName(input),\n });\n}\n","import type { NameResolverConfig, NameResult } from \"@naculus/connect-core\";\nimport type { MaybeRefOrGetter } from \"vue\";\nimport { type NameLookupReturn, useNameLookup } from \"./name-lookup\";\n\nexport type UseLookupAddressReturn = NameLookupReturn<NameResult>;\n\n/** Reverse-resolve a reactive address, optionally scoped to a CAIP-2 chain. */\nexport function useLookupAddress(\n address: MaybeRefOrGetter<string>,\n options?: {\n chainId?: MaybeRefOrGetter<string | undefined>;\n skip?: MaybeRefOrGetter<boolean | undefined>;\n resolverConfig?: MaybeRefOrGetter<NameResolverConfig | undefined>;\n },\n): UseLookupAddressReturn {\n return useNameLookup({\n input: address,\n scope: options?.chainId,\n skip: options?.skip,\n resolverConfig: options?.resolverConfig,\n query: (resolver, input, scope) => resolver.lookupAddress(input, scope),\n });\n}\n","import { computed, toValue } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\n\nexport interface UseSolanaAccountReturn {\n address: ComputedRef<string | null>;\n caip10: ComputedRef<string | null>;\n chainId: ComputedRef<string | null>;\n isConnected: ComputedRef<boolean>;\n}\n\n/** Read the connected Solana CAIP-10 account from any wallet. */\nexport function useSolanaAccount(\n accounts: MaybeRefOrGetter<string[] | null | undefined>,\n connected: MaybeRefOrGetter<boolean>,\n): UseSolanaAccountReturn {\n const isConnected = computed(() => toValue(connected));\n const caip10 = computed(() =>\n isConnected.value\n ? ((toValue(accounts) ?? []).find((account) =>\n account.startsWith(\"solana:\"),\n ) ?? null)\n : null,\n );\n const parts = computed(() => caip10.value?.split(\":\") ?? []);\n return {\n address: computed(() =>\n parts.value.length >= 3 ? (parts.value.at(-1) ?? null) : null,\n ),\n caip10,\n chainId: computed(() =>\n parts.value.length >= 3 ? parts.value.slice(0, -1).join(\":\") : null,\n ),\n isConnected,\n };\n}\n","import {\n chainNamespace,\n chainNumber,\n chainsForNamespace,\n describeChain,\n resolveChain,\n type ChainInfo,\n type WalletChain,\n} from \"@naculus/connect-appkit-core\";\nimport { computed, toValue } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\n\nexport interface UseChainReturn {\n /** The configured chain matching the connected CAIP-2 id, or null. */\n currentChain: ComputedRef<WalletChain | null>;\n /** A description of the connected chain, for any namespace. */\n chainInfo: ComputedRef<ChainInfo | null>;\n /** Only the chains the connected wallet could actually switch to. */\n availableChains: ComputedRef<WalletChain[]>;\n /** The EIP-155 number, or null when the connected chain has none. */\n currentChainNumber: ComputedRef<number | null>;\n namespace: ComputedRef<string | null>;\n}\n\n/**\n * The connected chain, and the chains it is possible to switch to.\n *\n * Identical in substance to the React `useChain`, because it is the same five\n * functions from `@naculus/connect-appkit-core`. This file contains no\n * decision at all — which is the point: `availableChains` filtering to the\n * connected namespace, `chainInfo` describing non-EVM chains, and\n * `currentChainNumber` refusing to invent a number for Solana are all\n * properties of the shared core, so both bindings get them or neither does.\n *\n * Takes its chain list and connected id as arguments; Vue has no equivalent of\n * the React provider here.\n */\nexport function useChain(\n chains: MaybeRefOrGetter<WalletChain[] | null | undefined>,\n chainId: MaybeRefOrGetter<string | null | undefined>,\n): UseChainReturn {\n const list = computed(() => toValue(chains) ?? []);\n const id = computed(() => toValue(chainId) ?? null);\n\n const currentChain = computed(() => resolveChain(list.value, id.value));\n\n return {\n currentChain,\n chainInfo: computed(() => describeChain(list.value, id.value)),\n availableChains: computed(() => chainsForNamespace(list.value, id.value)),\n currentChainNumber: computed(() =>\n currentChain.value ? chainNumber(currentChain.value) : null,\n ),\n namespace: computed(() =>\n currentChain.value ? chainNamespace(currentChain.value) : null,\n ),\n };\n}\n","import type { PassphraseGate, PassphraseRequest } from \"@naculus/connect-core\";\nimport { onScopeDispose, readonly, shallowRef } from \"vue\";\n\nexport interface UsePassphraseGateReturn {\n /** The open request, or null when nothing is being asked. */\n request: Readonly<ReturnType<typeof shallowRef<PassphraseRequest | null>>>;\n /** Answer the open request. */\n submit: (passphrase: string) => void;\n /** Abandon it, failing the load or save that asked. */\n cancel: (reason?: string) => void;\n /** Drop the held passphrase, so the next operation asks again. */\n forget: (reason?: string) => void;\n}\n\n/**\n * Bind a `PassphraseGate` into Vue reactivity.\n *\n * The gate itself lives in `@naculus/connect-core` rather than in either\n * framework package, because the thing it bridges — an encrypted storage\n * adapter asking for a passphrase from inside code that has never heard of a\n * component — is the same problem in React and in Vue. One implementation,\n * two thin bindings.\n *\n * ```ts\n * const gate = new PassphraseGate()\n * const wallet = new PocketWallet({ encryptionPassphrase: gate.request })\n * const { request, submit, cancel } = usePassphraseGate(gate)\n * ```\n *\n * `shallowRef`, not `ref`: the request is a small immutable snapshot the gate\n * replaces wholesale, and deep reactivity over it would proxy an object that\n * never mutates in place.\n */\nexport function usePassphraseGate(\n gate: PassphraseGate,\n): UsePassphraseGateReturn {\n const request = shallowRef<PassphraseRequest | null>(gate.getSnapshot());\n const unsubscribe = gate.subscribe(() => {\n request.value = gate.getSnapshot();\n });\n // Without this the gate keeps a reference to a listener belonging to a\n // component that is gone, and every later prompt writes into a dead ref.\n onScopeDispose(unsubscribe);\n\n return {\n request: readonly(request) as UsePassphraseGateReturn[\"request\"],\n submit: (passphrase: string) => gate.submit(passphrase),\n cancel: (reason?: string) => gate.cancel(reason),\n forget: (reason?: string) => gate.forget(reason),\n };\n}\n","import {\n getSolanaBalance,\n type SolanaBalance,\n} from \"@naculus/connect-core\";\nimport { onScopeDispose, ref, shallowRef, toValue, watchEffect } from \"vue\";\nimport type { MaybeRefOrGetter } from \"vue\";\n\nexport interface UseSolanaBalanceReturn {\n balance: ReturnType<typeof shallowRef<SolanaBalance | null>>;\n isFetching: ReturnType<typeof ref<boolean>>;\n error: ReturnType<typeof shallowRef<Error | null>>;\n refetch: () => Promise<void>;\n}\n\n/**\n * The SOL balance of an address.\n *\n * The whole of this file is Vue plumbing. Every decision that took thought —\n * exact lamport arithmetic, distinguishing an unfunded account from an emptied\n * one, refusing to invent a zero — is in `@naculus/connect-core`, shared with\n * the React hook. That is what makes \"author in React, ship to Vue\" true for\n * the logic: what does not translate is only the reactivity.\n *\n * Takes its address and endpoint as arguments because Vue has no equivalent of\n * the React provider here. Refs and getters both work.\n */\nexport function useSolanaBalance(\n address: MaybeRefOrGetter<string | null | undefined>,\n rpcUrl: MaybeRefOrGetter<string | null | undefined>,\n): UseSolanaBalanceReturn {\n const balance = shallowRef<SolanaBalance | null>(null);\n const isFetching = ref(false);\n const error = shallowRef<Error | null>(null);\n // Guards against a slow response for a previous address overwriting the\n // balance of the one now on screen.\n let generation = 0;\n let disposed = false;\n\n const refetch = async () => {\n const addr = toValue(address);\n const url = toValue(rpcUrl);\n if (!addr || !url) {\n balance.value = null;\n return;\n }\n const own = ++generation;\n isFetching.value = true;\n error.value = null;\n try {\n const next = await getSolanaBalance(url, addr);\n if (disposed || own !== generation) return;\n balance.value = next;\n } catch (err) {\n if (disposed || own !== generation) return;\n // Cleared rather than left stale: a balance shown next to an error\n // reads as the current balance, and it is not.\n balance.value = null;\n error.value =\n err instanceof Error ? err : new Error(\"Balance read failed\");\n } finally {\n if (!disposed && own === generation) isFetching.value = false;\n }\n };\n\n watchEffect(() => {\n // Touch both so the effect re-runs when either changes.\n toValue(address);\n toValue(rpcUrl);\n void refetch();\n });\n\n onScopeDispose(() => {\n disposed = true;\n });\n\n return { balance, isFetching, error, refetch };\n}\n","import { shallowRef, toValue, watch } from \"vue\";\nimport type { MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport type { TxMonitorLike, TxStatusEntry } from \"./useTxMonitor\";\n\nexport interface UseLastTxReturn {\n lastTx: ShallowRef<TxStatusEntry | null>;\n lastConfirmedTx: ShallowRef<TxStatusEntry | null>;\n lastFailedTx: ShallowRef<TxStatusEntry | null>;\n clear: () => void;\n}\n\n/** Track the latest confirmed or failed transaction from a caller-owned monitor. */\nexport function useLastTx(\n monitor: MaybeRefOrGetter<TxMonitorLike | null | undefined>,\n): UseLastTxReturn {\n const lastTx = shallowRef<TxStatusEntry | null>(null);\n const lastConfirmedTx = shallowRef<TxStatusEntry | null>(null);\n const lastFailedTx = shallowRef<TxStatusEntry | null>(null);\n\n watch(\n () => toValue(monitor),\n (activeMonitor, _previous, onCleanup) => {\n if (!activeMonitor) return;\n const recordLatest = (entry: TxStatusEntry): void => {\n if (!lastTx.value || entry.createdAt >= lastTx.value.createdAt) {\n lastTx.value = entry;\n }\n };\n const onConfirmed = (entry: TxStatusEntry): void => {\n lastConfirmedTx.value = entry;\n recordLatest(entry);\n };\n const onFailed = (entry: TxStatusEntry): void => {\n lastFailedTx.value = entry;\n recordLatest(entry);\n };\n activeMonitor.on(\"confirmed\", onConfirmed);\n activeMonitor.on(\"failed\", onFailed);\n onCleanup(() => {\n activeMonitor.off(\"confirmed\", onConfirmed);\n activeMonitor.off(\"failed\", onFailed);\n });\n },\n { immediate: true },\n );\n\n return {\n lastTx,\n lastConfirmedTx,\n lastFailedTx,\n clear: () => {\n lastTx.value = null;\n lastConfirmedTx.value = null;\n lastFailedTx.value = null;\n },\n };\n}\n","import { computed, shallowRef, toValue, watch } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport type { TxMonitorLike, TxStatusEntry } from \"./useTxMonitor\";\n\nexport interface UseTxHistoryReturn {\n entries: ShallowRef<TxStatusEntry[]>;\n isLoading: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refresh: () => Promise<void>;\n summary: ComputedRef<{ pending: number; confirmed: number; failed: number }>;\n}\n\n/** Query and keep a caller-owned monitor's transaction history current. */\nexport function useTxHistory(\n address: MaybeRefOrGetter<string | null | undefined>,\n chainId: MaybeRefOrGetter<number | null | undefined>,\n monitor: MaybeRefOrGetter<TxMonitorLike | null | undefined>,\n): UseTxHistoryReturn {\n const entries = shallowRef<TxStatusEntry[]>([]);\n const isLoading = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n\n const refresh = async (): Promise<void> => {\n const mine = ++generation;\n const activeMonitor = toValue(monitor);\n if (!activeMonitor) {\n entries.value = [];\n isLoading.value = false;\n error.value = null;\n return;\n }\n isLoading.value = true;\n error.value = null;\n try {\n const result = await activeMonitor.getTxHistory(\n toValue(address) ?? undefined,\n toValue(chainId) ?? undefined,\n );\n if (mine === generation) entries.value = result;\n } catch (err) {\n if (mine !== generation) return;\n error.value =\n err instanceof Error ? err : new Error(\"Failed to load transaction history\");\n } finally {\n if (mine === generation) isLoading.value = false;\n }\n };\n\n watch(\n () => [toValue(monitor), toValue(address), toValue(chainId)] as const,\n ([activeMonitor], _previous, onCleanup) => {\n if (!activeMonitor) {\n void refresh();\n return;\n }\n const onStatusChange = (): void => {\n void refresh();\n };\n activeMonitor.on(\"statusChange\", onStatusChange);\n onCleanup(() => activeMonitor.off(\"statusChange\", onStatusChange));\n void refresh();\n },\n { immediate: true },\n );\n\n return {\n entries,\n isLoading,\n error,\n refresh,\n summary: computed(() => ({\n pending: entries.value.filter((item) => item.status === \"pending\").length,\n confirmed: entries.value.filter((item) => item.status === \"confirmed\").length,\n failed: entries.value.filter((item) => item.status === \"failed\").length,\n })),\n };\n}\n","import {\n computed,\n shallowRef,\n toValue,\n watch,\n} from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\n\nexport type TxStatus =\n | \"pending\"\n | \"mined\"\n | \"confirmed\"\n | \"failed\"\n | \"unknown\";\n\nexport interface TxStatusEntry {\n hash: string;\n chainId: number;\n from: string;\n to: string;\n value: string;\n data?: string;\n nonce?: number;\n status: TxStatus;\n blockNumber?: number;\n blockHash?: string;\n gasUsed?: string;\n effectiveGasPrice?: string;\n createdAt: number;\n confirmedAt?: number;\n updatedAt: number;\n error?: string;\n label?: string;\n memo?: string;\n replacementCount?: number;\n}\n\n/** Structural contract accepted by the transaction-monitor composables. */\nexport interface TxMonitorLike {\n watchTx(\n hash: string,\n chainId: number,\n options?: Record<string, unknown>,\n ): Promise<TxStatusEntry>;\n stopWatching(hash: string, chainId?: number): void;\n getTxStatus(hash: string, chainId?: number): TxStatusEntry | null;\n getTxHistory(address?: string, chainId?: number): Promise<TxStatusEntry[]>;\n refreshTx(hash: string, chainId?: number): Promise<void>;\n on(event: \"statusChange\", listener: (entry: TxStatusEntry) => void): this;\n on(event: \"confirmed\", listener: (entry: TxStatusEntry) => void): this;\n on(event: \"failed\", listener: (entry: TxStatusEntry) => void): this;\n off(event: string, listener: Function): this;\n}\n\nexport interface UseTxMonitorReturn {\n entry: ShallowRef<TxStatusEntry | null>;\n status: ComputedRef<TxStatus | \"idle\">;\n isLoading: ShallowRef<boolean>;\n isWatching: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refresh: () => Promise<void>;\n stopWatching: () => void;\n}\n\n/**\n * Reactively monitor one transaction using a caller-owned TxMonitor.\n *\n * Vue has no AppKit monitor provider, so the monitor is explicit. The hook\n * listens only while its source values are current; a late promise from a\n * previous hash, chain, or monitor cannot overwrite the active result.\n */\nexport function useTxMonitor(\n hash: MaybeRefOrGetter<string | null | undefined>,\n chainId: MaybeRefOrGetter<number | null | undefined>,\n monitor: MaybeRefOrGetter<TxMonitorLike | null | undefined>,\n): UseTxMonitorReturn {\n const entry = shallowRef<TxStatusEntry | null>(null);\n const isLoading = shallowRef(false);\n const isWatching = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n\n const refresh = async (): Promise<void> => {\n const activeMonitor = toValue(monitor);\n const activeHash = toValue(hash);\n const activeChainId = toValue(chainId);\n if (!activeMonitor || !activeHash) return;\n\n isLoading.value = true;\n error.value = null;\n try {\n await activeMonitor.refreshTx(activeHash, activeChainId ?? undefined);\n const current = activeMonitor.getTxStatus(\n activeHash,\n activeChainId ?? undefined,\n );\n if (current) entry.value = current;\n } catch (err) {\n error.value =\n err instanceof Error ? err : new Error(\"Failed to refresh transaction\");\n } finally {\n isLoading.value = false;\n }\n };\n\n const stopWatching = (): void => {\n const activeMonitor = toValue(monitor);\n const activeHash = toValue(hash);\n const activeChainId = toValue(chainId);\n if (!activeMonitor || !activeHash) return;\n activeMonitor.stopWatching(activeHash, activeChainId ?? undefined);\n isWatching.value = false;\n };\n\n watch(\n () => [toValue(monitor), toValue(hash), toValue(chainId)] as const,\n ([activeMonitor, activeHash, activeChainId], _previous, onCleanup) => {\n const mine = ++generation;\n if (!activeMonitor || !activeHash || !activeChainId) {\n entry.value = null;\n isLoading.value = false;\n isWatching.value = false;\n error.value = null;\n return;\n }\n\n let cancelled = false;\n const onStatusChange = (updated: TxStatusEntry): void => {\n if (!cancelled && updated.hash === activeHash && updated.chainId === activeChainId) {\n entry.value = { ...updated };\n }\n };\n activeMonitor.on(\"statusChange\", onStatusChange);\n onCleanup(() => {\n cancelled = true;\n activeMonitor.off(\"statusChange\", onStatusChange);\n });\n\n isWatching.value = true;\n isLoading.value = true;\n error.value = null;\n const current = activeMonitor.getTxStatus(activeHash, activeChainId);\n if (current) entry.value = current;\n\n activeMonitor\n .watchTx(activeHash, activeChainId, {})\n .then((initial) => {\n if (cancelled || mine !== generation) return;\n entry.value = initial;\n isLoading.value = false;\n })\n .catch((err) => {\n if (cancelled || mine !== generation) return;\n error.value =\n err instanceof Error ? err : new Error(\"Failed to watch transaction\");\n isLoading.value = false;\n });\n },\n { immediate: true },\n );\n\n return {\n entry,\n status: computed(() => entry.value?.status ?? \"idle\"),\n isLoading,\n isWatching,\n error,\n refresh,\n stopWatching,\n };\n}\n","import {\n atomicSupportFor,\n type AtomicSupport,\n type ChainCapabilities,\n normalizeCapabilities,\n selectChainCapabilities,\n} from \"@naculus/connect-appkit-core\";\nimport { computed, shallowRef, toValue, watchEffect } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\n\nexport type { AtomicSupport, ChainCapabilities };\n\n/** The part of a connector this needs. Anything with these two is enough. */\nexport interface CapabilityClient {\n getCapabilities?: (session: unknown) => Promise<Record<string, unknown>>;\n}\n\nexport interface UseCapabilitiesReturn {\n /** Per-chain, keyed by CAIP-2. Null until a query has actually returned. */\n capabilities: ShallowRef<Record<string, ChainCapabilities> | null>;\n /** The connected chain's entry, for the common case. */\n current: ComputedRef<ChainCapabilities | null>;\n /** Atomic support on the connected chain. `\"unknown\"` until told otherwise. */\n atomic: ComputedRef<AtomicSupport>;\n isFetching: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refetch: () => Promise<void>;\n}\n\n/**\n * What the connected wallet says it can do — EIP-5792\n * `wallet_getCapabilities`.\n *\n * The query a dApp makes *before* choosing how to execute: ask whether the\n * wallet batches atomically, then send one batch or a sequence, rather than\n * sending a batch and learning the answer from a rejection.\n *\n * Identical in substance to the React hook, because every decision in it —\n * normalising the raw answer, the CAIP-2/hex lookup, and `\"unknown\"` meaning\n * \"not told\" rather than \"no\" — is in `@naculus/connect-appkit-core` and\n * neither binding gets to disagree about it.\n *\n * Takes its client, session and chain as arguments. Vue has no equivalent of\n * the React provider here, which is the same shape `useChain` uses.\n */\nexport function useCapabilities(\n client: MaybeRefOrGetter<CapabilityClient | null | undefined>,\n session: MaybeRefOrGetter<unknown>,\n chainId: MaybeRefOrGetter<string | null | undefined>,\n): UseCapabilitiesReturn {\n const capabilities = shallowRef<Record<string, ChainCapabilities> | null>(\n null,\n );\n const isFetching = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n // Guards a slow answer for a previous session overwriting a newer one.\n let generation = 0;\n\n const refetch = async () => {\n const mine = ++generation;\n const activeClient = toValue(client);\n const activeSession = toValue(session);\n if (!activeClient?.getCapabilities || !activeSession) {\n capabilities.value = null;\n isFetching.value = false;\n error.value = null;\n return;\n }\n isFetching.value = true;\n error.value = null;\n try {\n const raw = await activeClient.getCapabilities(activeSession);\n if (mine !== generation) return;\n capabilities.value = normalizeCapabilities(raw);\n } catch (err) {\n if (mine !== generation) return;\n // Cleared rather than left stale. A capability map from a previous\n // wallet is a worse answer than no answer.\n capabilities.value = null;\n error.value =\n err instanceof Error ? err : new Error(\"Capability query failed\");\n } finally {\n if (mine === generation) isFetching.value = false;\n }\n };\n\n // Re-queries when the client or session changes, the way the React effect\n // does. `chainId` is deliberately not a trigger: it selects from an answer\n // already held rather than needing a new one.\n watchEffect(() => {\n void toValue(client);\n void toValue(session);\n void refetch();\n });\n\n return {\n capabilities,\n current: computed(() =>\n selectChainCapabilities(capabilities.value, toValue(chainId)),\n ),\n atomic: computed(() =>\n atomicSupportFor(capabilities.value, toValue(chainId)),\n ),\n isFetching,\n error,\n refetch,\n };\n}\n","import {\n readSolanaRoles,\n type SolanaIdentity,\n type SolanaPayer,\n type SolanaRoles,\n type SolanaRolesAbsence,\n type SolanaRolesSource,\n type SolanaSigner,\n type SolanaWalletFeatures,\n} from \"@naculus/connect-appkit-core\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\nimport { computed, toValue } from \"vue\";\n\nexport type {\n SolanaIdentity,\n SolanaPayer,\n SolanaRoles,\n SolanaRolesAbsence,\n SolanaRolesSource,\n SolanaSigner,\n SolanaWalletFeatures,\n};\n\nexport interface UseSolanaRolesReturn {\n /** The roles the connected account can fill, or null with a reason. */\n roles: ComputedRef<SolanaRoles | null>;\n /** Why `roles` is null. Null when it is not. */\n absence: ComputedRef<SolanaRolesAbsence | null>;\n /** Which account this is. Never null while `roles` is present. */\n identity: ComputedRef<SolanaIdentity | null>;\n /**\n * Signs without submitting. Null when the wallet declared it cannot *and*\n * null when nothing is known; check `absence` to tell those apart.\n */\n signer: ComputedRef<SolanaSigner | null>;\n /** Signs and broadcasts itself. Null under the same two conditions. */\n payer: ComputedRef<SolanaPayer | null>;\n}\n\n/**\n * Which roles the connected Solana account can actually fill.\n *\n * Identical in substance to the React hook: every judgement — that a null\n * `signer` from the connector is an answer while a missing `getRoles` is\n * not, that an EVM session is never asked — is in\n * `@naculus/connect-appkit-core`, and neither binding gets to disagree.\n *\n * Takes the connector and session as arguments, the shape `useCapabilities`\n * uses, because Vue has no provider here. Pass the session as a ref so an\n * account switch that replaces it is noticed; the connector reads the live\n * address either way, so a caller holding a stale snapshot still gets the\n * account the wallet moved to.\n */\nexport function useSolanaRoles(\n connector: MaybeRefOrGetter<SolanaRolesSource | null | undefined>,\n session: MaybeRefOrGetter<{ walletType?: string } | null | undefined>,\n): UseSolanaRolesReturn {\n const state = computed(() =>\n readSolanaRoles(toValue(connector), toValue(session)),\n );\n\n return {\n roles: computed(() => state.value.roles),\n absence: computed(() => state.value.absence),\n identity: computed(() => state.value.roles?.identity ?? null),\n signer: computed(() => state.value.roles?.signer ?? null),\n payer: computed(() => state.value.roles?.payer ?? null),\n };\n}\n"],"mappings":"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","names":["computed","computed","toValue","computed","toValue","computed","shallowRef","toValue","computed","onScopeDispose","shallowRef","toValue","unref","onScopeDispose","shallowRef","toValue","unref","computed","onScopeDispose","shallowRef","toValue","unref","computed","onScopeDispose","shallowRef","toValue","watch","onScopeDispose","shallowRef","toValue","unref","watch","onScopeDispose","shallowRef","toValue","unref","watch","onScopeDispose","shallowRef","unref","onScopeDispose","shallowRef","toValue","watch","eip155ChainIdToNumber","TokenListManager","onScopeDispose","shallowRef","toValue","watch","computed","toValue","bareEvmAddress","formatUnits","onScopeDispose","shallowRef","toValue","watch","bareEvmAddress","computed","onScopeDispose","shallowRef","toValue","watch","computed","onScopeDispose","shallowRef","toValue","watch","computed","toValue","computed","toValue","onScopeDispose","shallowRef","onScopeDispose","shallowRef","toValue","shallowRef","toValue","watch","computed","shallowRef","toValue","watch","computed","shallowRef","toValue","watch","computed","shallowRef","toValue","watchEffect","computed","toValue"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@naculus/connect-appkit-vue",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
],
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@stencil/vue-output-target": "^0.14.3",
|
|
21
|
-
"@naculus/connect-appkit-wc": "0.2.
|
|
21
|
+
"@naculus/connect-appkit-wc": "0.2.5"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
|
-
"@naculus/connect-appkit-core": "^0.2.
|
|
24
|
+
"@naculus/connect-appkit-core": "^0.2.5",
|
|
25
25
|
"@naculus/connect-core": "^0.2.0",
|
|
26
26
|
"vue": "^3.5.0"
|
|
27
27
|
},
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"@naculus/connect-core": "^0.2.1",
|
|
33
33
|
"vitest": "^5.0.0",
|
|
34
34
|
"vue": "^3.5.42",
|
|
35
|
-
"@naculus/connect-appkit-core": "0.2.
|
|
35
|
+
"@naculus/connect-appkit-core": "0.2.5"
|
|
36
36
|
},
|
|
37
37
|
"repository": {
|
|
38
38
|
"type": "git",
|