UNPKG

@kryptogo/kryptogokit-sdk-react

Version:

KryptogoKit offers a comprehensive web3 wallet solution with seamless KryptoGO Auth integration and multi-wallet connection support. Designed for users. Built for developers.

221 lines (216 loc) 8.74 kB
"use client"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); // src/wallets/walletConnectors/foxWallet/foxWallet.svg var require_foxWallet = __commonJS({ "src/wallets/walletConnectors/foxWallet/foxWallet.svg"(exports, module) { module.exports = 'data:image/svg+xml,<svg width="28" height="28" viewBox="0 0 900 900" fill="none" xmlns="http://www.w3.org/2000/svg">%0A <rect width="900" height="900" rx="450" fill="black"/>%0A <path fill-rule="evenodd" clip-rule="evenodd"%0A d="M577.249 215.975C539.956 196.232 511.646 161.549 500.468 119.868C497.021 132.613 495.245 145.984 495.245 159.774C495.245 170.533 496.394 180.98 498.483 191.113C498.483 191.113 498.483 191.113 498.483 191.217C498.483 191.322 498.588 191.531 498.588 191.635C501.408 205.216 506.005 218.065 512.168 229.974C499.006 220.258 487.306 208.663 477.486 195.605C464.323 297.667 501.408 403.907 569.206 473.898C657.687 576.9 576.1 751.669 438.207 747.073C243.068 748.744 209.639 461.362 396.839 416.234L396.735 415.711C446.669 399.519 470.069 367.031 474.143 324.827C402.063 383.223 288.196 310.829 311.805 220.154C41.2425 353.346 141.737 785.411 448.445 780.083C582.055 780.083 695.085 691.706 732.17 570.214C776.463 428.561 704.8 277.609 577.249 215.975Z"%0A fill="%2312FE74"/>%0A</svg>%0A'; } }); // src/wallets/getInjectedConnector.ts import { createConnector } from "wagmi"; import { injected } from "wagmi/connectors"; function getExplicitInjectedProvider(flag) { const _window = typeof window !== "undefined" ? window : void 0; if (typeof _window === "undefined" || typeof _window.ethereum === "undefined") return; const providers = _window.ethereum.providers; return providers ? providers.find((provider) => provider[flag]) : _window.ethereum[flag] ? _window.ethereum : void 0; } function getWindowProviderNamespace(namespace) { const providerSearch = (provider, namespace2) => { const [property, ...path] = namespace2.split("."); const _provider = provider[property]; if (_provider) { if (path.length === 0) return _provider; return providerSearch(_provider, path.join(".")); } }; if (typeof window !== "undefined") return providerSearch(window, namespace); } function hasInjectedProvider({ flag, namespace }) { if (namespace && typeof getWindowProviderNamespace(namespace) !== "undefined") return true; if (flag && typeof getExplicitInjectedProvider(flag) !== "undefined") return true; return false; } function getInjectedProvider({ flag, namespace }) { const _window = typeof window !== "undefined" ? window : void 0; if (typeof _window === "undefined") return; if (namespace) { const windowProvider = getWindowProviderNamespace(namespace); if (windowProvider) return windowProvider; } const providers = _window.ethereum?.providers; if (flag) { const provider = getExplicitInjectedProvider(flag); if (provider) return provider; } if (typeof providers !== "undefined" && providers.length > 0) return providers[0]; return _window.ethereum; } function createInjectedConnector(provider) { return (walletDetails) => { const injectedConfig = provider ? { shimDisconnect: false, target: () => ({ id: walletDetails.rkDetails.id, name: walletDetails.rkDetails.name, provider }) } : { shimDisconnect: false }; return createConnector((config) => ({ // Spread the injectedConfig object, which may be empty or contain the target function ...injected(injectedConfig)(config), ...walletDetails })); }; } function getInjectedConnector({ flag, namespace, target }) { const provider = target ? target : getInjectedProvider({ flag, namespace }); return createInjectedConnector(provider); } // src/wallets/getWalletConnectConnector.ts import { createConnector as createConnector2 } from "wagmi"; import { walletConnect } from "wagmi/connectors"; var walletConnectInstances = /* @__PURE__ */ new Map(); var getOrCreateWalletConnectInstance = ({ projectId, walletConnectParameters, rkDetailsShowQrModal }) => { let config = { ...walletConnectParameters ? walletConnectParameters : {}, projectId, showQrModal: false // Required. Otherwise WalletConnect modal (Web3Modal) will popup during time of connection for a wallet }; if (rkDetailsShowQrModal) { config = { ...config, showQrModal: true }; } const serializedConfig = JSON.stringify(config); const sharedWalletConnector = walletConnectInstances.get(serializedConfig); if (sharedWalletConnector) { return sharedWalletConnector; } const newWalletConnectInstance = walletConnect(config); walletConnectInstances.set(serializedConfig, newWalletConnectInstance); return newWalletConnectInstance; }; function createWalletConnectConnector({ projectId, walletDetails, walletConnectParameters }) { return createConnector2((config) => ({ ...getOrCreateWalletConnectInstance({ projectId, walletConnectParameters, // Used in `connectorsForWallets` to add another // walletConnect wallet into kryptogokit with modal popup option rkDetailsShowQrModal: walletDetails.rkDetails.showQrModal })(config), ...walletDetails })); } function getWalletConnectConnector({ projectId, walletConnectParameters }) { const exampleProjectId = "04b90987df7d8e1e08a7d7ce0df821a6"; if (!projectId || projectId === "" || projectId === "YOUR_PROJECT_ID") { projectId = exampleProjectId; } return (walletDetails) => createWalletConnectConnector({ projectId, walletDetails, walletConnectParameters }); } // src/wallets/walletConnectors/foxWallet/foxWallet.ts var foxWallet = ({ projectId, walletConnectParameters }) => { const isFoxInjected = hasInjectedProvider({ namespace: "foxwallet.ethereum" }); const shouldUseWalletConnect = !isFoxInjected; return { id: "foxwallet", name: "FoxWallet", iconUrl: async () => (await Promise.resolve().then(() => __toESM(require_foxWallet(), 1))).default, iconBackground: "#fff", downloadUrls: { android: "https://play.google.com/store/apps/details?id=com.foxwallet.play", ios: "https://apps.apple.com/app/foxwallet-crypto-web3/id1590983231", qrCode: "https://foxwallet.com/download" }, mobile: { getUri: shouldUseWalletConnect ? (uri) => { return `foxwallet://wc?uri=${encodeURIComponent(uri)}`; } : void 0 }, qrCode: shouldUseWalletConnect ? { getUri: (uri) => uri, instructions: { learnMoreUrl: "https://foxwallet.com", steps: [ { description: "wallet_connectors.fox.qr_code.step1.description", step: "install", title: "wallet_connectors.fox.qr_code.step1.title" }, { description: "wallet_connectors.fox.qr_code.step2.description", step: "create", title: "wallet_connectors.fox.qr_code.step2.title" }, { description: "wallet_connectors.fox.qr_code.step3.description", step: "scan", title: "wallet_connectors.fox.qr_code.step3.title" } ] } } : void 0, createConnector: shouldUseWalletConnect ? getWalletConnectConnector({ projectId, walletConnectParameters }) : getInjectedConnector({ namespace: "foxwallet.ethereum" }) }; }; export { foxWallet };