UNPKG

@wallet-ui/core

Version:
152 lines (144 loc) 4.14 kB
'use strict'; var persistent = require('@nanostores/persistent'); var nanostores = require('nanostores'); // src/clusters.ts function createSolanaCluster(props, { id, label, url }) { if (typeof props === "string") { return { id, label, url: props }; } return { id, label: props.label ?? label, url: props.url ?? url }; } function createSolanaDevnet(props = {}) { return createSolanaCluster(props, { id: "solana:devnet", label: "Devnet", url: "devnet" }); } function createSolanaLocalnet(props = {}) { return createSolanaCluster(props, { id: "solana:localnet", label: "Localnet", url: "localnet" }); } function createSolanaMainnet(props = {}) { return createSolanaCluster(props, { id: "solana:mainnet", label: "Mainnet", url: "mainnet" }); } function createSolanaTestnet(props = {}) { return createSolanaCluster(props, { id: "solana:testnet", label: "Testnet", url: "testnet" }); } var Storage = class { constructor(key, initial) { this.key = key; this.initial = initial; this.atom = persistent.persistentAtom(key, initial, { decode: JSON.parse, encode: JSON.stringify }); } atom; get() { return this.atom.get(); } set(value) { this.atom.set(value); } get value() { return nanostores.computed(this.atom, (value) => value); } }; // src/create-storage.ts function createStorage({ initial, key }) { return new Storage(key, initial); } // src/create-storage-account.ts function createStorageAccount({ initial, key } = {}) { return createStorage({ initial, key: key ?? "wallet-ui:account" }); } // src/create-storage-cluster.ts function createStorageCluster({ initial, key } = {}) { return createStorage({ initial: initial ?? "solana:devnet", key: key ?? "wallet-ui:cluster" }); } // src/get-explorer-url.ts var explorerProviders = ["solana", "solscan", "orb"]; function getExplorerUrl({ network, path, provider }) { if (!(path.startsWith("/address") || path.startsWith("/block") || path.startsWith("/tx"))) { throw new Error("Invalid path. Must be /address/{address}, /block/{id}, or /tx/{signature}."); } if (!explorerProviders.includes(provider)) { throw new Error(`Invalid provider. Must be one of ${explorerProviders.join(", ")}.`); } const url = new URL(getExplorerBaseUrl(provider)); url.pathname = path; const params = getExplorerSuffix(network); if (params.cluster.length) { url.searchParams.set("cluster", params.cluster); } if (params.customUrl.length) { url.searchParams.set("customUrl", params.customUrl); } return url.toString(); } function getExplorerBaseUrl(provider) { switch (provider) { case "orb": return "https://orbmarkets.io"; case "solscan": return "https://solscan.io"; default: return "https://explorer.solana.com"; } } function getExplorerSuffix(props) { switch (props.id) { case "solana:devnet": return { cluster: "devnet", customUrl: "" }; case "solana:localnet": return { cluster: "custom", customUrl: props.url }; case "solana:testnet": return { cluster: "testnet", customUrl: "" }; default: return { cluster: "", customUrl: "" }; } } // src/handle-copy-text.ts function handleCopyText(text) { if (!text) { return; } if (typeof globalThis === "undefined" || !globalThis.navigator || !globalThis.navigator.clipboard || !globalThis.navigator.clipboard.writeText) { return; } void globalThis.navigator.clipboard.writeText(text); } exports.Storage = Storage; exports.createSolanaDevnet = createSolanaDevnet; exports.createSolanaLocalnet = createSolanaLocalnet; exports.createSolanaMainnet = createSolanaMainnet; exports.createSolanaTestnet = createSolanaTestnet; exports.createStorage = createStorage; exports.createStorageAccount = createStorageAccount; exports.createStorageCluster = createStorageCluster; exports.explorerProviders = explorerProviders; exports.getExplorerUrl = getExplorerUrl; exports.handleCopyText = handleCopyText; //# sourceMappingURL=index.browser.cjs.map //# sourceMappingURL=index.browser.cjs.map