hybrid 0.1.5 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -0
- package/dist/stats.html +1 -1
- package/package.json +6 -5
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as t}from"react/jsx-runtime";import{getDefaultWallets as e}from"@rainbow-me/rainbowkit";import{jsonRpcProvider as n}from"wagmi/providers/jsonRpc";import{configureChains as r,createClient as o,WagmiConfig as c,useBlockNumber as
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{getDefaultWallets as e}from"@rainbow-me/rainbowkit";import{jsonRpcProvider as n}from"wagmi/providers/jsonRpc";import{configureChains as r,createClient as o,WagmiConfig as c,useBlockNumber as i,useProvider as s,useSigner as a,useContract as u,useConnect as l,useNetwork as d,useSwitchNetwork as h}from"wagmi";import*as f from"wagmi/chains";import m,{useMemo as p,useContext as b,useState as B,useEffect as D,useCallback as w}from"react";import v from"clsx";import{utils as S,ethers as k}from"ethers";const N=m.createContext({address:void 0,chainId:void 0}),_=i=>{const{appName:s,children:a,address:u,chainId:l,...d}=i,{chains:h,provider:m,webSocketProvider:b}=p((()=>{const t=Object.values(f).find((t=>t.id===l)),e=function(t){const e=[];return e.push(n({rpc:()=>({http:"http://localhost:8545",ws:"ws://localhost:8545"})})),e}(),{chains:o,provider:c,webSocketProvider:i}=r([t],e);return{chains:o,provider:c,webSocketProvider:i}}),[d]),B={address:u,chainId:l,chains:h,provider:m,webSocketProvider:b},{connectors:D}=e({appName:s||"Hybrid App",chains:h}),w=o({autoConnect:!0,connectors:D,provider:m,webSocketProvider:b});return t(N.Provider,{value:B,children:t(c,{client:w,children:a})})};const g=t=>{const{abi:e}=t,{address:n,chainId:r}=b(N),{data:o}=i(),c=s({chainId:r}),{data:l}=a({chainId:r}),[d,h]=B(!1),[f,m]=B(!1),[p,v]=B(!1),S=u({address:n,abi:e});return{isMinting:d,isSuccess:f,isError:p,totalSupply:function(t,e,n){const[r,o]=B(n);return D((()=>{let e=!1;const n=t();if(null!=n)return n.then((t=>{e||o(t)})).catch((t=>{console.error(`Error in useAsyncMemo: ${t}`)})),()=>{e=!0}}),e),r}((()=>{if(S)return S.connect(c).totalSupply().then((t=>t.toNumber()))}),[S,o]),mint:w((()=>{S&&(h(!0),S.connect(l).mint(1).then((t=>t.wait())).then((()=>{m(!0),setTimeout((()=>m(!1)),3e3)})).catch((t=>{console.error(t),v(!0),setTimeout((()=>v(!1)),1e3)})).finally((()=>h(!1))))}),[l,S])}};var y={DefaultButton:"DefaultButton-module_DefaultButton__Px-Zc",DefaultButtonBase:"DefaultButton-module_DefaultButtonBase__KRytO",DefaultButtonSuccess:"DefaultButton-module_DefaultButtonSuccess__eaosU",DefaultButtonError:"DefaultButton-module_DefaultButtonError__B7CKv",DefaultButtonDisabled:"DefaultButton-module_DefaultButtonDisabled__-PIdK"};const C={default:y.DefaultButtonBase,success:y.DefaultButtonSuccess,error:y.DefaultButtonError},E=e=>{const{className:n=y.DefaultButton,intent:r="default",onClick:o,children:c,disabled:i}=e;return t("button",{className:v(n,C[r],i&&y.DefaultButtonDisabled),onClick:o,children:c})},I=e=>{const{button:n=E,className:r,contract:o}=e,{data:c}=a(),{connect:i,connectors:s}=l(),{chain:u}=d(),{switchNetwork:f}=h(),{isMinting:m,isSuccess:p,isError:b,mint:B}=g(o);if(m)return t(n,{disabled:!0,className:r,children:"Minting"});if(p)return t(n,{disabled:!0,className:r,intent:"success",children:"Minted"});if(b)return t(n,{disabled:!0,className:r,intent:"error",children:"Error Occurred"});if(!c){const e=s[0];return t(n,{className:r,onClick:()=>i({connector:e}),children:"Connect Wallet"})}return t(n,1337!==u?.id&&f?{onClick:()=>f(1337),className:r,intent:"error",children:"Switch Network"}:{className:r,onClick:B,children:"Mint Now"})};function P(t){return"number"!=typeof t?null:parseInt(t.toString())/100}function x(t){return 100*t}function M(t){return"number"!=typeof t?0:parseInt(t.toString())/1e4}function j(t){return parseFloat(S.formatEther(t.toString()))}function K(t){return void 0===t?null:k.utils.parseUnits(t.toString(),"ether")}function O(t,e=1){return A(e)+"/address/"+t}function U(t,e=1){return A(e)+"/tx/"+t}function A(t=1){switch(t){case 1:return"https://etherscan.io";case 3:return"https://ropsten.etherscan.io";case 4:return"https://rinkeby.etherscan.io";case 5:return"https://goerli.etherscan.io";case 137:return"https://polygonscan.com";case 80001:return"https://mumbai.polygonscan.com";default:throw new Error("Etherscan: Unknown chain id "+t)}}export{I as MintButton,_ as Web3Provider,M as bipsToDecimal,P as bipsToPercent,K as ethToWei,O as etherscanAddressURL,A as etherscanHost,U as etherscanTxURL,x as percentToBips,g as useMinting,j as weiToEth};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/providers/Web3Provider.tsx","../src/providers/helpers.ts","../src/hooks/useMinting.ts","../src/hooks/internal/useContext.ts","../src/hooks/internal/useAsyncMemo.ts","../src/components/DefaultButton.tsx","../src/components/MintButton.tsx","../src/utils/basisPoints.ts","../src/utils/conversion.ts","../src/utils/etherscan.ts"],"sourcesContent":["import { getDefaultWallets } from \"@rainbow-me/rainbowkit\"\nimport { buildProviders } from \"./helpers\"\n\nimport { configureChains, createClient, WagmiConfig } from \"wagmi\"\nimport * as Chains from \"wagmi/chains\"\n\nimport React, { useMemo } from \"react\"\n\ntype Config = {\n appName?: string\n alchemyKey?: string\n infuraKey?: string\n\n // Deprecated\n address: string\n chainId: number\n}\n\nexport const Context = React.createContext<{\n address: string\n chainId: number\n}>({\n address: undefined,\n chainId: undefined\n})\n\nexport const Web3Provider = (props: { children: React.ReactNode } & Config) => {\n const { appName, children, address, chainId, ...keys } = props\n\n const { chains, provider, webSocketProvider } = useMemo(() => {\n const chain = Object.values(Chains).find((chain) => chain.id === chainId)\n const providers = buildProviders(keys)\n const { chains, provider, webSocketProvider } = configureChains(\n [chain],\n providers\n )\n return { chains, provider, webSocketProvider }\n }, [keys])\n\n const value = {\n address,\n chainId\n }\n\n const { connectors } = getDefaultWallets({\n appName: appName || \"Hybrid App\",\n chains\n })\n\n const wagmiClient = createClient({\n autoConnect: true,\n connectors,\n provider,\n webSocketProvider\n })\n\n return (\n <Context.Provider value={value}>\n <WagmiConfig client={wagmiClient}>\n {/* <RainbowKitProvider chains={chains}>{children}</RainbowKitProvider> */}\n {children}\n </WagmiConfig>\n </Context.Provider>\n )\n}\n","import { ChainProviderFn } from \"wagmi\"\n\nimport { alchemyProvider } from \"wagmi/providers/alchemy\"\nimport { infuraProvider } from \"wagmi/providers/infura\"\nimport { publicProvider } from \"wagmi/providers/public\"\nimport { jsonRpcProvider } from \"wagmi/providers/jsonRpc\"\n\nexport type Config = {\n\talchemyKey?: string\n\tinfuraKey?: string\n\tpublic?: boolean\n}\n\nexport function buildProviders(config: Config) {\n\tconst { alchemyKey, infuraKey, public: usePublic = true } = config\n\tconst providers: ChainProviderFn[] = []\n\n\t// if (alchemyKey) {\n\t// \tproviders.push(\n\t// \t\talchemyProvider({\n\t// \t\t\tapiKey: alchemyKey\n\t// \t\t})\n\t// \t)\n\t// }\n\t// if (infuraKey) {\n\t// \tproviders.push(\n\t// \t\tinfuraProvider({\n\t// \t\t\tapiKey: infuraKey\n\t// \t\t})\n\t// \t)\n\t// }\n\n\t// if (usePublic) {\n\t// \tproviders.push(publicProvider())\n\t// }\n\n\tproviders.push(\n\t\tjsonRpcProvider({\n\t\t\trpc: () => ({\n\t\t\t\thttp: \"http://localhost:8545\",\n\t\t\t\tws: \"ws://localhost:8545\"\n\t\t\t})\n\t\t})\n\t)\n\n\treturn providers\n}\n","import type { TransactionResponse } from \"@ethersproject/providers\"\nimport { BigNumber } from \"ethers\"\nimport { useCallback, useState } from \"react\"\nimport { useBlockNumber, useContract, useProvider, useSigner } from \"wagmi\"\nimport { useContext } from \"./internal\"\nimport { Contract } from \"types\"\nimport { useAsyncMemo } from \"./internal/useAsyncMemo\"\n\nexport const useMinting = (config: Contract) => {\n const { abi } = config\n const { address, chainId } = useContext()\n\n const { data: block } = useBlockNumber()\n const provider = useProvider({ chainId })\n const { data: signer } = useSigner({ chainId })\n\n const [isMinting, setMinting] = useState<boolean>(false)\n const [isSuccess, setSuccess] = useState<boolean>(false)\n const [isError, setError] = useState<boolean>(false)\n\n const contract = useContract({\n address,\n abi\n })\n\n const totalSupply = useAsyncMemo(() => {\n if (!contract) return\n return contract\n .connect(provider)\n .totalSupply()\n .then((res: BigNumber) => res.toNumber())\n }, [contract, block])\n\n const mint = useCallback(() => {\n if (!contract) return\n\n setMinting(true)\n contract\n .connect(signer)\n .mint(1)\n .then((tx: TransactionResponse) => tx.wait())\n .then(() => {\n setSuccess(true)\n setTimeout(() => setSuccess(false), 3000)\n })\n .catch((err: Error) => {\n console.error(err)\n setError(true)\n setTimeout(() => setError(false), 1000)\n })\n .finally(() => setMinting(false))\n }, [signer, contract])\n\n return {\n isMinting,\n isSuccess,\n isError,\n totalSupply,\n mint\n }\n}\n","import { useContext as useReactContext } from \"react\"\n\nimport { Context } from \"../../providers/Web3Provider\"\n\nexport function useContext() {\n return useReactContext(Context)\n}\n","import { DependencyList, useEffect, useState } from \"react\"\n\ntype Factory<T> = () => Promise<T | undefined | null>\n\nexport function useAsyncMemo<T>(\n factory: Factory<T>,\n deps: DependencyList\n): T | undefined\nexport function useAsyncMemo<T>(\n factory: Factory<T>,\n deps: DependencyList,\n initial: T\n): T\nexport function useAsyncMemo<T>(\n factory: Factory<T>,\n deps: DependencyList,\n initial?: T\n) {\n const [val, setVal] = useState<T | undefined>(initial)\n\n useEffect(() => {\n let cancel = false\n const promise = factory()\n if (promise === undefined || promise === null) return\n\n promise\n .then((val) => {\n if (!cancel) {\n setVal(val)\n }\n })\n .catch((error) => {\n console.error(`Error in useAsyncMemo: ${error}`)\n })\n\n return () => {\n cancel = true\n }\n }, deps)\n\n return val\n}\n","import clsx from \"clsx\"\nimport styles from \"./DefaultButton.module.css\"\n\nexport type DefaultButtonProps = {\n className?: string\n intent?: \"default\" | \"success\" | \"error\"\n onClick?: () => void\n children: React.ReactNode\n disabled?: boolean\n}\n\nconst INTENTS = {\n default: styles.DefaultButtonBase,\n success: styles.DefaultButtonSuccess,\n error: styles.DefaultButtonError\n}\n\nconst DefaultButton = (props: DefaultButtonProps) => {\n const {\n // className = \"px-8 py-3 transition-all cursor-pointer duration-250 hover:scale-[1.05] rounded-xl font-bold\",\n className = styles.DefaultButton,\n intent = \"default\",\n onClick,\n children,\n disabled\n } = props\n\n return (\n <button\n className={clsx(\n className,\n INTENTS[intent],\n disabled && styles.DefaultButtonDisabled\n )}\n onClick={onClick}\n >\n {children}\n </button>\n )\n}\n\nexport default DefaultButton\n","import { useMinting } from \"hooks/useMinting\"\nimport { useConnect, useNetwork, useSigner, useSwitchNetwork } from \"wagmi\"\nimport DefaultButton, { DefaultButtonProps } from \"./DefaultButton\"\nimport { Contract } from \"types\"\n\ntype MintButtonProps = {\n className?: string\n contract: Contract\n button?: React.FC<DefaultButtonProps>\n}\n\nconst chainId = 1337\n\nconst MintButton = (props: MintButtonProps) => {\n const { button: Button = DefaultButton, className, contract } = props\n const { data: signer } = useSigner()\n const { connect, connectors } = useConnect()\n const { chain: network } = useNetwork()\n const { switchNetwork } = useSwitchNetwork()\n\n const { isMinting, isSuccess, isError, mint } = useMinting(contract)\n\n if (isMinting) {\n return (\n <Button disabled className={className}>\n Minting\n </Button>\n )\n }\n\n if (isSuccess) {\n return (\n <Button disabled className={className} intent=\"success\">\n Minted\n </Button>\n )\n }\n\n if (isError) {\n return (\n <Button disabled className={className} intent=\"error\">\n Error Occurred\n </Button>\n )\n }\n\n if (!signer) {\n const connector = connectors[0]\n return (\n <Button className={className} onClick={() => connect({ connector })}>\n Connect Wallet\n </Button>\n )\n }\n\n if (network?.id !== chainId && switchNetwork) {\n return (\n <Button\n onClick={() => switchNetwork(chainId)}\n className={className}\n intent=\"error\"\n >\n Switch Network\n </Button>\n )\n }\n\n return (\n <Button className={className} onClick={mint}>\n Mint Now\n </Button>\n )\n}\n\nexport default MintButton\n","export function bipsToPercent(bp: number | string) {\n if (typeof bp !== \"number\") return null\n return parseInt(bp.toString()) / 100\n}\n\nexport function percentToBips(percent: number) {\n return percent * 100\n}\n\nexport function bipsToDecimal(bp: number | string) {\n if (typeof bp !== \"number\") return 0\n return parseInt(bp.toString()) / 10000\n}\n","import { BigNumber, BigNumberish, ethers, utils } from \"ethers\"\n\nexport function weiToEth(wei: BigNumberish): number {\n return parseFloat(utils.formatEther(wei.toString()))\n}\n\nexport function ethToWei(eth: number): BigNumber | null {\n if (typeof eth === \"undefined\") return null\n return ethers.utils.parseUnits(eth.toString(), \"ether\")\n}\n","export function etherscanAddressURL(address: string, chainId = 1) {\n return etherscanHost(chainId) + \"/address/\" + address\n}\n\nexport function etherscanTxURL(hash: string, chainId = 1) {\n return etherscanHost(chainId) + \"/tx/\" + hash\n}\n\nexport function etherscanHost(chainId = 1) {\n switch (chainId) {\n case 1:\n return `https://etherscan.io`\n case 3:\n return `https://ropsten.etherscan.io`\n case 4:\n return `https://rinkeby.etherscan.io`\n case 5:\n return `https://goerli.etherscan.io`\n case 137:\n return `https://polygonscan.com`\n case 80001:\n return `https://mumbai.polygonscan.com`\n default:\n throw new Error(\"Etherscan: Unknown chain id \" + chainId)\n }\n}\n"],"names":["Context","React","createContext","address","undefined","chainId","Web3Provider","props","appName","children","keys","chains","provider","webSocketProvider","useMemo","chain","Object","values","Chains","find","id","providers","config","push","jsonRpcProvider","rpc","http","ws","buildProviders","configureChains","value","connectors","getDefaultWallets","wagmiClient","createClient","autoConnect","_jsx","Provider","WagmiConfig","client","useMinting","abi","useReactContext","data","block","useBlockNumber","useProvider","signer","useSigner","isMinting","setMinting","useState","isSuccess","setSuccess","isError","setError","contract","useContract","totalSupply","factory","deps","initial","val","setVal","useEffect","cancel","promise","then","catch","error","console","useAsyncMemo","connect","res","toNumber","mint","useCallback","tx","wait","setTimeout","err","finally","INTENTS","default","styles","DefaultButtonBase","success","DefaultButtonSuccess","DefaultButtonError","DefaultButton","className","intent","onClick","disabled","clsx","DefaultButtonDisabled","MintButton","button","Button","useConnect","network","useNetwork","switchNetwork","useSwitchNetwork","connector","bipsToPercent","bp","parseInt","toString","percentToBips","percent","bipsToDecimal","weiToEth","wei","parseFloat","utils","formatEther","ethToWei","eth","ethers","parseUnits","etherscanAddressURL","etherscanHost","etherscanTxURL","hash","Error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/providers/Web3Provider.tsx","../src/providers/helpers.ts","../src/hooks/useMinting.ts","../src/hooks/internal/useContext.ts","../src/hooks/internal/useAsyncMemo.ts","../src/components/DefaultButton.tsx","../src/components/MintButton.tsx","../src/utils/basisPoints.ts","../src/utils/conversion.ts","../src/utils/etherscan.ts"],"sourcesContent":["import { getDefaultWallets } from \"@rainbow-me/rainbowkit\"\nimport { buildProviders } from \"./helpers\"\n\nimport { configureChains, createClient, WagmiConfig } from \"wagmi\"\nimport * as Chains from \"wagmi/chains\"\n\nimport React, { useMemo } from \"react\"\n\ntype Config = {\n appName?: string\n alchemyKey?: string\n infuraKey?: string\n\n // Deprecated\n address: string\n chainId: number\n}\n\nexport const Context = React.createContext<{\n address: string\n chainId: number\n}>({\n address: undefined,\n chainId: undefined\n})\n\nexport const Web3Provider = (props: { children: React.ReactNode } & Config) => {\n const { appName, children, address, chainId, ...keys } = props\n\n const { chains, provider, webSocketProvider } = useMemo(() => {\n const chain = Object.values(Chains).find((chain) => chain.id === chainId)\n const providers = buildProviders(keys)\n const { chains, provider, webSocketProvider } = configureChains(\n [chain],\n providers\n )\n return { chains, provider, webSocketProvider }\n }, [keys])\n\n const value = {\n address,\n chainId,\n // tbd on whether we need this. The idea is to provide this for\n // RainbowKit/Connectkit but we may end up initiailizing that differently\n chains,\n provider,\n webSocketProvider\n }\n\n const { connectors } = getDefaultWallets({\n appName: appName || \"Hybrid App\",\n chains\n })\n\n const wagmiClient = createClient({\n autoConnect: true,\n connectors,\n provider,\n webSocketProvider\n })\n\n return (\n <Context.Provider value={value}>\n <WagmiConfig client={wagmiClient}>\n {/* <RainbowKitProvider chains={chains}>{children}</RainbowKitProvider> */}\n {children}\n </WagmiConfig>\n </Context.Provider>\n )\n}\n","import { ChainProviderFn } from \"wagmi\"\n\nimport { alchemyProvider } from \"wagmi/providers/alchemy\"\nimport { infuraProvider } from \"wagmi/providers/infura\"\nimport { publicProvider } from \"wagmi/providers/public\"\nimport { jsonRpcProvider } from \"wagmi/providers/jsonRpc\"\n\nexport type Config = {\n\talchemyKey?: string\n\tinfuraKey?: string\n\tpublic?: boolean\n}\n\nexport function buildProviders(config: Config) {\n\tconst { alchemyKey, infuraKey, public: usePublic = true } = config\n\tconst providers: ChainProviderFn[] = []\n\n\t// if (alchemyKey) {\n\t// \tproviders.push(\n\t// \t\talchemyProvider({\n\t// \t\t\tapiKey: alchemyKey\n\t// \t\t})\n\t// \t)\n\t// }\n\t// if (infuraKey) {\n\t// \tproviders.push(\n\t// \t\tinfuraProvider({\n\t// \t\t\tapiKey: infuraKey\n\t// \t\t})\n\t// \t)\n\t// }\n\n\t// if (usePublic) {\n\t// \tproviders.push(publicProvider())\n\t// }\n\n\tproviders.push(\n\t\tjsonRpcProvider({\n\t\t\trpc: () => ({\n\t\t\t\thttp: \"http://localhost:8545\",\n\t\t\t\tws: \"ws://localhost:8545\"\n\t\t\t})\n\t\t})\n\t)\n\n\treturn providers\n}\n","import type { TransactionResponse } from \"@ethersproject/providers\"\nimport { BigNumber } from \"ethers\"\nimport { useCallback, useState } from \"react\"\nimport { useBlockNumber, useContract, useProvider, useSigner } from \"wagmi\"\nimport { useContext } from \"./internal\"\nimport { Contract } from \"types\"\nimport { useAsyncMemo } from \"./internal/useAsyncMemo\"\n\nexport const useMinting = (config: Contract) => {\n const { abi } = config\n const { address, chainId } = useContext()\n\n const { data: block } = useBlockNumber()\n const provider = useProvider({ chainId })\n const { data: signer } = useSigner({ chainId })\n\n const [isMinting, setMinting] = useState<boolean>(false)\n const [isSuccess, setSuccess] = useState<boolean>(false)\n const [isError, setError] = useState<boolean>(false)\n\n const contract = useContract({\n address,\n abi\n })\n\n const totalSupply = useAsyncMemo(() => {\n if (!contract) return\n return contract\n .connect(provider)\n .totalSupply()\n .then((res: BigNumber) => res.toNumber())\n }, [contract, block])\n\n const mint = useCallback(() => {\n if (!contract) return\n\n setMinting(true)\n contract\n .connect(signer)\n .mint(1)\n .then((tx: TransactionResponse) => tx.wait())\n .then(() => {\n setSuccess(true)\n setTimeout(() => setSuccess(false), 3000)\n })\n .catch((err: Error) => {\n console.error(err)\n setError(true)\n setTimeout(() => setError(false), 1000)\n })\n .finally(() => setMinting(false))\n }, [signer, contract])\n\n return {\n isMinting,\n isSuccess,\n isError,\n totalSupply,\n mint\n }\n}\n","import { useContext as useReactContext } from \"react\"\n\nimport { Context } from \"../../providers/Web3Provider\"\n\nexport function useContext() {\n return useReactContext(Context)\n}\n","import { DependencyList, useEffect, useState } from \"react\"\n\ntype Factory<T> = () => Promise<T | undefined | null>\n\nexport function useAsyncMemo<T>(\n factory: Factory<T>,\n deps: DependencyList\n): T | undefined\nexport function useAsyncMemo<T>(\n factory: Factory<T>,\n deps: DependencyList,\n initial: T\n): T\nexport function useAsyncMemo<T>(\n factory: Factory<T>,\n deps: DependencyList,\n initial?: T\n) {\n const [val, setVal] = useState<T | undefined>(initial)\n\n useEffect(() => {\n let cancel = false\n const promise = factory()\n if (promise === undefined || promise === null) return\n\n promise\n .then((val) => {\n if (!cancel) {\n setVal(val)\n }\n })\n .catch((error) => {\n console.error(`Error in useAsyncMemo: ${error}`)\n })\n\n return () => {\n cancel = true\n }\n }, deps)\n\n return val\n}\n","import clsx from \"clsx\"\nimport styles from \"./DefaultButton.module.css\"\n\nexport type DefaultButtonProps = {\n className?: string\n intent?: \"default\" | \"success\" | \"error\"\n onClick?: () => void\n children: React.ReactNode\n disabled?: boolean\n}\n\nconst INTENTS = {\n default: styles.DefaultButtonBase,\n success: styles.DefaultButtonSuccess,\n error: styles.DefaultButtonError\n}\n\nconst DefaultButton = (props: DefaultButtonProps) => {\n const {\n // className = \"px-8 py-3 transition-all cursor-pointer duration-250 hover:scale-[1.05] rounded-xl font-bold\",\n className = styles.DefaultButton,\n intent = \"default\",\n onClick,\n children,\n disabled\n } = props\n\n return (\n <button\n className={clsx(\n className,\n INTENTS[intent],\n disabled && styles.DefaultButtonDisabled\n )}\n onClick={onClick}\n >\n {children}\n </button>\n )\n}\n\nexport default DefaultButton\n","import { useMinting } from \"../hooks/useMinting\"\nimport { useConnect, useNetwork, useSigner, useSwitchNetwork } from \"wagmi\"\nimport DefaultButton, { DefaultButtonProps } from \"./DefaultButton\"\nimport { Contract } from \"types\"\n\ntype MintButtonProps = {\n className?: string\n contract: Contract\n button?: React.FC<DefaultButtonProps>\n}\n\nconst chainId = 1337\n\nconst MintButton = (props: MintButtonProps) => {\n const { button: Button = DefaultButton, className, contract } = props\n const { data: signer } = useSigner()\n const { connect, connectors } = useConnect()\n const { chain: network } = useNetwork()\n const { switchNetwork } = useSwitchNetwork()\n\n const { isMinting, isSuccess, isError, mint } = useMinting(contract)\n\n if (isMinting) {\n return (\n <Button disabled className={className}>\n Minting\n </Button>\n )\n }\n\n if (isSuccess) {\n return (\n <Button disabled className={className} intent=\"success\">\n Minted\n </Button>\n )\n }\n\n if (isError) {\n return (\n <Button disabled className={className} intent=\"error\">\n Error Occurred\n </Button>\n )\n }\n\n if (!signer) {\n const connector = connectors[0]\n return (\n <Button className={className} onClick={() => connect({ connector })}>\n Connect Wallet\n </Button>\n )\n }\n\n if (network?.id !== chainId && switchNetwork) {\n return (\n <Button\n onClick={() => switchNetwork(chainId)}\n className={className}\n intent=\"error\"\n >\n Switch Network\n </Button>\n )\n }\n\n return (\n <Button className={className} onClick={mint}>\n Mint Now\n </Button>\n )\n}\n\nexport default MintButton\n","export function bipsToPercent(bp: number | string) {\n if (typeof bp !== \"number\") return null\n return parseInt(bp.toString()) / 100\n}\n\nexport function percentToBips(percent: number) {\n return percent * 100\n}\n\nexport function bipsToDecimal(bp: number | string) {\n if (typeof bp !== \"number\") return 0\n return parseInt(bp.toString()) / 10000\n}\n","import { BigNumber, BigNumberish, ethers, utils } from \"ethers\"\n\nexport function weiToEth(wei: BigNumberish): number {\n return parseFloat(utils.formatEther(wei.toString()))\n}\n\nexport function ethToWei(eth: number): BigNumber | null {\n if (typeof eth === \"undefined\") return null\n return ethers.utils.parseUnits(eth.toString(), \"ether\")\n}\n","export function etherscanAddressURL(address: string, chainId = 1) {\n return etherscanHost(chainId) + \"/address/\" + address\n}\n\nexport function etherscanTxURL(hash: string, chainId = 1) {\n return etherscanHost(chainId) + \"/tx/\" + hash\n}\n\nexport function etherscanHost(chainId = 1) {\n switch (chainId) {\n case 1:\n return `https://etherscan.io`\n case 3:\n return `https://ropsten.etherscan.io`\n case 4:\n return `https://rinkeby.etherscan.io`\n case 5:\n return `https://goerli.etherscan.io`\n case 137:\n return `https://polygonscan.com`\n case 80001:\n return `https://mumbai.polygonscan.com`\n default:\n throw new Error(\"Etherscan: Unknown chain id \" + chainId)\n }\n}\n"],"names":["Context","React","createContext","address","undefined","chainId","Web3Provider","props","appName","children","keys","chains","provider","webSocketProvider","useMemo","chain","Object","values","Chains","find","id","providers","config","push","jsonRpcProvider","rpc","http","ws","buildProviders","configureChains","value","connectors","getDefaultWallets","wagmiClient","createClient","autoConnect","_jsx","Provider","WagmiConfig","client","useMinting","abi","useReactContext","data","block","useBlockNumber","useProvider","signer","useSigner","isMinting","setMinting","useState","isSuccess","setSuccess","isError","setError","contract","useContract","totalSupply","factory","deps","initial","val","setVal","useEffect","cancel","promise","then","catch","error","console","useAsyncMemo","connect","res","toNumber","mint","useCallback","tx","wait","setTimeout","err","finally","INTENTS","default","styles","DefaultButtonBase","success","DefaultButtonSuccess","DefaultButtonError","DefaultButton","className","intent","onClick","disabled","clsx","DefaultButtonDisabled","MintButton","button","Button","useConnect","network","useNetwork","switchNetwork","useSwitchNetwork","connector","bipsToPercent","bp","parseInt","toString","percentToBips","percent","bipsToDecimal","weiToEth","wei","parseFloat","utils","formatEther","ethToWei","eth","ethers","parseUnits","etherscanAddressURL","etherscanHost","etherscanTxURL","hash","Error"],"mappings":"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"}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{getDefaultWallets as e}from"@rainbow-me/rainbowkit";import{jsonRpcProvider as n}from"wagmi/providers/jsonRpc";import{configureChains as r,createClient as o,WagmiConfig as c,useBlockNumber as i,useProvider as s,useSigner as a,useContract as u,useConnect as l,useNetwork as d,useSwitchNetwork as h}from"wagmi";import*as f from"wagmi/chains";import m,{useMemo as p,useContext as b,useState as B,useEffect as D,useCallback as w}from"react";import v from"clsx";import{utils as S,ethers as k}from"ethers";const N=m.createContext({address:void 0,chainId:void 0}),_=i=>{const{appName:s,children:a,address:u,chainId:l,...d}=i,{chains:h,provider:m,webSocketProvider:b}=p((()=>{const t=Object.values(f).find((t=>t.id===l)),e=function(t){const e=[];return e.push(n({rpc:()=>({http:"http://localhost:8545",ws:"ws://localhost:8545"})})),e}(),{chains:o,provider:c,webSocketProvider:i}=r([t],e);return{chains:o,provider:c,webSocketProvider:i}}),[d]),B={address:u,chainId:l,chains:h,provider:m,webSocketProvider:b},{connectors:D}=e({appName:s||"Hybrid App",chains:h}),w=o({autoConnect:!0,connectors:D,provider:m,webSocketProvider:b});return t(N.Provider,{value:B,children:t(c,{client:w,children:a})})};const g=t=>{const{abi:e}=t,{address:n,chainId:r}=b(N),{data:o}=i(),c=s({chainId:r}),{data:l}=a({chainId:r}),[d,h]=B(!1),[f,m]=B(!1),[p,v]=B(!1),S=u({address:n,abi:e});return{isMinting:d,isSuccess:f,isError:p,totalSupply:function(t,e,n){const[r,o]=B(n);return D((()=>{let e=!1;const n=t();if(null!=n)return n.then((t=>{e||o(t)})).catch((t=>{console.error(`Error in useAsyncMemo: ${t}`)})),()=>{e=!0}}),e),r}((()=>{if(S)return S.connect(c).totalSupply().then((t=>t.toNumber()))}),[S,o]),mint:w((()=>{S&&(h(!0),S.connect(l).mint(1).then((t=>t.wait())).then((()=>{m(!0),setTimeout((()=>m(!1)),3e3)})).catch((t=>{console.error(t),v(!0),setTimeout((()=>v(!1)),1e3)})).finally((()=>h(!1))))}),[l,S])}};var y={DefaultButton:"DefaultButton-module_DefaultButton__Px-Zc",DefaultButtonBase:"DefaultButton-module_DefaultButtonBase__KRytO",DefaultButtonSuccess:"DefaultButton-module_DefaultButtonSuccess__eaosU",DefaultButtonError:"DefaultButton-module_DefaultButtonError__B7CKv",DefaultButtonDisabled:"DefaultButton-module_DefaultButtonDisabled__-PIdK"};const C={default:y.DefaultButtonBase,success:y.DefaultButtonSuccess,error:y.DefaultButtonError},E=e=>{const{className:n=y.DefaultButton,intent:r="default",onClick:o,children:c,disabled:i}=e;return t("button",{className:v(n,C[r],i&&y.DefaultButtonDisabled),onClick:o,children:c})},I=e=>{const{button:n=E,className:r,contract:o}=e,{data:c}=a(),{connect:i,connectors:s}=l(),{chain:u}=d(),{switchNetwork:f}=h(),{isMinting:m,isSuccess:p,isError:b,mint:B}=g(o);if(m)return t(n,{disabled:!0,className:r,children:"Minting"});if(p)return t(n,{disabled:!0,className:r,intent:"success",children:"Minted"});if(b)return t(n,{disabled:!0,className:r,intent:"error",children:"Error Occurred"});if(!c){const e=s[0];return t(n,{className:r,onClick:()=>i({connector:e}),children:"Connect Wallet"})}return t(n,1337!==u?.id&&f?{onClick:()=>f(1337),className:r,intent:"error",children:"Switch Network"}:{className:r,onClick:B,children:"Mint Now"})};function P(t){return"number"!=typeof t?null:parseInt(t.toString())/100}function x(t){return 100*t}function M(t){return"number"!=typeof t?0:parseInt(t.toString())/1e4}function j(t){return parseFloat(S.formatEther(t.toString()))}function K(t){return void 0===t?null:k.utils.parseUnits(t.toString(),"ether")}function O(t,e=1){return A(e)+"/address/"+t}function U(t,e=1){return A(e)+"/tx/"+t}function A(t=1){switch(t){case 1:return"https://etherscan.io";case 3:return"https://ropsten.etherscan.io";case 4:return"https://rinkeby.etherscan.io";case 5:return"https://goerli.etherscan.io";case 137:return"https://polygonscan.com";case 80001:return"https://mumbai.polygonscan.com";default:throw new Error("Etherscan: Unknown chain id "+t)}}export{I as MintButton,_ as Web3Provider,M as bipsToDecimal,P as bipsToPercent,K as ethToWei,O as etherscanAddressURL,A as etherscanHost,U as etherscanTxURL,x as percentToBips,g as useMinting,j as weiToEth};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/providers/Web3Provider.tsx","../src/providers/helpers.ts","../src/hooks/useMinting.ts","../src/hooks/internal/useContext.ts","../src/hooks/internal/useAsyncMemo.ts","../src/components/DefaultButton.tsx","../src/components/MintButton.tsx","../src/utils/basisPoints.ts","../src/utils/conversion.ts","../src/utils/etherscan.ts"],"sourcesContent":["import { getDefaultWallets } from \"@rainbow-me/rainbowkit\"\nimport { buildProviders } from \"./helpers\"\n\nimport { configureChains, createClient, WagmiConfig } from \"wagmi\"\nimport * as Chains from \"wagmi/chains\"\n\nimport React, { useMemo } from \"react\"\n\ntype Config = {\n appName?: string\n alchemyKey?: string\n infuraKey?: string\n\n // Deprecated\n address: string\n chainId: number\n}\n\nexport const Context = React.createContext<{\n address: string\n chainId: number\n}>({\n address: undefined,\n chainId: undefined\n})\n\nexport const Web3Provider = (props: { children: React.ReactNode } & Config) => {\n const { appName, children, address, chainId, ...keys } = props\n\n const { chains, provider, webSocketProvider } = useMemo(() => {\n const chain = Object.values(Chains).find((chain) => chain.id === chainId)\n const providers = buildProviders(keys)\n const { chains, provider, webSocketProvider } = configureChains(\n [chain],\n providers\n )\n return { chains, provider, webSocketProvider }\n }, [keys])\n\n const value = {\n address,\n chainId,\n // tbd on whether we need this. The idea is to provide this for\n // RainbowKit/Connectkit but we may end up initiailizing that differently\n chains,\n provider,\n webSocketProvider\n }\n\n const { connectors } = getDefaultWallets({\n appName: appName || \"Hybrid App\",\n chains\n })\n\n const wagmiClient = createClient({\n autoConnect: true,\n connectors,\n provider,\n webSocketProvider\n })\n\n return (\n <Context.Provider value={value}>\n <WagmiConfig client={wagmiClient}>\n {/* <RainbowKitProvider chains={chains}>{children}</RainbowKitProvider> */}\n {children}\n </WagmiConfig>\n </Context.Provider>\n )\n}\n","import { ChainProviderFn } from \"wagmi\"\n\nimport { alchemyProvider } from \"wagmi/providers/alchemy\"\nimport { infuraProvider } from \"wagmi/providers/infura\"\nimport { publicProvider } from \"wagmi/providers/public\"\nimport { jsonRpcProvider } from \"wagmi/providers/jsonRpc\"\n\nexport type Config = {\n\talchemyKey?: string\n\tinfuraKey?: string\n\tpublic?: boolean\n}\n\nexport function buildProviders(config: Config) {\n\tconst { alchemyKey, infuraKey, public: usePublic = true } = config\n\tconst providers: ChainProviderFn[] = []\n\n\t// if (alchemyKey) {\n\t// \tproviders.push(\n\t// \t\talchemyProvider({\n\t// \t\t\tapiKey: alchemyKey\n\t// \t\t})\n\t// \t)\n\t// }\n\t// if (infuraKey) {\n\t// \tproviders.push(\n\t// \t\tinfuraProvider({\n\t// \t\t\tapiKey: infuraKey\n\t// \t\t})\n\t// \t)\n\t// }\n\n\t// if (usePublic) {\n\t// \tproviders.push(publicProvider())\n\t// }\n\n\tproviders.push(\n\t\tjsonRpcProvider({\n\t\t\trpc: () => ({\n\t\t\t\thttp: \"http://localhost:8545\",\n\t\t\t\tws: \"ws://localhost:8545\"\n\t\t\t})\n\t\t})\n\t)\n\n\treturn providers\n}\n","import type { TransactionResponse } from \"@ethersproject/providers\"\nimport { BigNumber } from \"ethers\"\nimport { useCallback, useState } from \"react\"\nimport { useBlockNumber, useContract, useProvider, useSigner } from \"wagmi\"\nimport { useContext } from \"./internal\"\nimport { Contract } from \"types\"\nimport { useAsyncMemo } from \"./internal/useAsyncMemo\"\n\nexport const useMinting = (config: Contract) => {\n const { abi } = config\n const { address, chainId } = useContext()\n\n const { data: block } = useBlockNumber()\n const provider = useProvider({ chainId })\n const { data: signer } = useSigner({ chainId })\n\n const [isMinting, setMinting] = useState<boolean>(false)\n const [isSuccess, setSuccess] = useState<boolean>(false)\n const [isError, setError] = useState<boolean>(false)\n\n const contract = useContract({\n address,\n abi\n })\n\n const totalSupply = useAsyncMemo(() => {\n if (!contract) return\n return contract\n .connect(provider)\n .totalSupply()\n .then((res: BigNumber) => res.toNumber())\n }, [contract, block])\n\n const mint = useCallback(() => {\n if (!contract) return\n\n setMinting(true)\n contract\n .connect(signer)\n .mint(1)\n .then((tx: TransactionResponse) => tx.wait())\n .then(() => {\n setSuccess(true)\n setTimeout(() => setSuccess(false), 3000)\n })\n .catch((err: Error) => {\n console.error(err)\n setError(true)\n setTimeout(() => setError(false), 1000)\n })\n .finally(() => setMinting(false))\n }, [signer, contract])\n\n return {\n isMinting,\n isSuccess,\n isError,\n totalSupply,\n mint\n }\n}\n","import { useContext as useReactContext } from \"react\"\n\nimport { Context } from \"../../providers/Web3Provider\"\n\nexport function useContext() {\n return useReactContext(Context)\n}\n","import { DependencyList, useEffect, useState } from \"react\"\n\ntype Factory<T> = () => Promise<T | undefined | null>\n\nexport function useAsyncMemo<T>(\n factory: Factory<T>,\n deps: DependencyList\n): T | undefined\nexport function useAsyncMemo<T>(\n factory: Factory<T>,\n deps: DependencyList,\n initial: T\n): T\nexport function useAsyncMemo<T>(\n factory: Factory<T>,\n deps: DependencyList,\n initial?: T\n) {\n const [val, setVal] = useState<T | undefined>(initial)\n\n useEffect(() => {\n let cancel = false\n const promise = factory()\n if (promise === undefined || promise === null) return\n\n promise\n .then((val) => {\n if (!cancel) {\n setVal(val)\n }\n })\n .catch((error) => {\n console.error(`Error in useAsyncMemo: ${error}`)\n })\n\n return () => {\n cancel = true\n }\n }, deps)\n\n return val\n}\n","import clsx from \"clsx\"\nimport styles from \"./DefaultButton.module.css\"\n\nexport type DefaultButtonProps = {\n className?: string\n intent?: \"default\" | \"success\" | \"error\"\n onClick?: () => void\n children: React.ReactNode\n disabled?: boolean\n}\n\nconst INTENTS = {\n default: styles.DefaultButtonBase,\n success: styles.DefaultButtonSuccess,\n error: styles.DefaultButtonError\n}\n\nconst DefaultButton = (props: DefaultButtonProps) => {\n const {\n // className = \"px-8 py-3 transition-all cursor-pointer duration-250 hover:scale-[1.05] rounded-xl font-bold\",\n className = styles.DefaultButton,\n intent = \"default\",\n onClick,\n children,\n disabled\n } = props\n\n return (\n <button\n className={clsx(\n className,\n INTENTS[intent],\n disabled && styles.DefaultButtonDisabled\n )}\n onClick={onClick}\n >\n {children}\n </button>\n )\n}\n\nexport default DefaultButton\n","import { useMinting } from \"../hooks/useMinting\"\nimport { useConnect, useNetwork, useSigner, useSwitchNetwork } from \"wagmi\"\nimport DefaultButton, { DefaultButtonProps } from \"./DefaultButton\"\nimport { Contract } from \"types\"\n\ntype MintButtonProps = {\n className?: string\n contract: Contract\n button?: React.FC<DefaultButtonProps>\n}\n\nconst chainId = 1337\n\nconst MintButton = (props: MintButtonProps) => {\n const { button: Button = DefaultButton, className, contract } = props\n const { data: signer } = useSigner()\n const { connect, connectors } = useConnect()\n const { chain: network } = useNetwork()\n const { switchNetwork } = useSwitchNetwork()\n\n const { isMinting, isSuccess, isError, mint } = useMinting(contract)\n\n if (isMinting) {\n return (\n <Button disabled className={className}>\n Minting\n </Button>\n )\n }\n\n if (isSuccess) {\n return (\n <Button disabled className={className} intent=\"success\">\n Minted\n </Button>\n )\n }\n\n if (isError) {\n return (\n <Button disabled className={className} intent=\"error\">\n Error Occurred\n </Button>\n )\n }\n\n if (!signer) {\n const connector = connectors[0]\n return (\n <Button className={className} onClick={() => connect({ connector })}>\n Connect Wallet\n </Button>\n )\n }\n\n if (network?.id !== chainId && switchNetwork) {\n return (\n <Button\n onClick={() => switchNetwork(chainId)}\n className={className}\n intent=\"error\"\n >\n Switch Network\n </Button>\n )\n }\n\n return (\n <Button className={className} onClick={mint}>\n Mint Now\n </Button>\n )\n}\n\nexport default MintButton\n","export function bipsToPercent(bp: number | string) {\n if (typeof bp !== \"number\") return null\n return parseInt(bp.toString()) / 100\n}\n\nexport function percentToBips(percent: number) {\n return percent * 100\n}\n\nexport function bipsToDecimal(bp: number | string) {\n if (typeof bp !== \"number\") return 0\n return parseInt(bp.toString()) / 10000\n}\n","import { BigNumber, BigNumberish, ethers, utils } from \"ethers\"\n\nexport function weiToEth(wei: BigNumberish): number {\n return parseFloat(utils.formatEther(wei.toString()))\n}\n\nexport function ethToWei(eth: number): BigNumber | null {\n if (typeof eth === \"undefined\") return null\n return ethers.utils.parseUnits(eth.toString(), \"ether\")\n}\n","export function etherscanAddressURL(address: string, chainId = 1) {\n return etherscanHost(chainId) + \"/address/\" + address\n}\n\nexport function etherscanTxURL(hash: string, chainId = 1) {\n return etherscanHost(chainId) + \"/tx/\" + hash\n}\n\nexport function etherscanHost(chainId = 1) {\n switch (chainId) {\n case 1:\n return `https://etherscan.io`\n case 3:\n return `https://ropsten.etherscan.io`\n case 4:\n return `https://rinkeby.etherscan.io`\n case 5:\n return `https://goerli.etherscan.io`\n case 137:\n return `https://polygonscan.com`\n case 80001:\n return `https://mumbai.polygonscan.com`\n default:\n throw new Error(\"Etherscan: Unknown chain id \" + chainId)\n }\n}\n"],"names":["Context","React","createContext","address","undefined","chainId","Web3Provider","props","appName","children","keys","chains","provider","webSocketProvider","useMemo","chain","Object","values","Chains","find","id","providers","config","push","jsonRpcProvider","rpc","http","ws","buildProviders","configureChains","value","connectors","getDefaultWallets","wagmiClient","createClient","autoConnect","_jsx","Provider","WagmiConfig","client","useMinting","abi","useReactContext","data","block","useBlockNumber","useProvider","signer","useSigner","isMinting","setMinting","useState","isSuccess","setSuccess","isError","setError","contract","useContract","totalSupply","factory","deps","initial","val","setVal","useEffect","cancel","promise","then","catch","error","console","useAsyncMemo","connect","res","toNumber","mint","useCallback","tx","wait","setTimeout","err","finally","INTENTS","default","styles","DefaultButtonBase","success","DefaultButtonSuccess","DefaultButtonError","DefaultButton","className","intent","onClick","disabled","clsx","DefaultButtonDisabled","MintButton","button","Button","useConnect","network","useNetwork","switchNetwork","useSwitchNetwork","connector","bipsToPercent","bp","parseInt","toString","percentToBips","percent","bipsToDecimal","weiToEth","wei","parseFloat","utils","formatEther","ethToWei","eth","ethers","parseUnits","etherscanAddressURL","etherscanHost","etherscanTxURL","hash","Error"],"mappings":"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"}
|
package/dist/stats.html
CHANGED
|
@@ -6157,7 +6157,7 @@ var drawChart = (function (exports) {
|
|
|
6157
6157
|
</script>
|
|
6158
6158
|
<script>
|
|
6159
6159
|
/*<!--*/
|
|
6160
|
-
const data = {"version":2,"tree":{"name":"root","children":[{"name":"index.js","children":[{"name":"src","children":[{"name":"providers","children":[{"uid":"
|
|
6160
|
+
const data = {"version":2,"tree":{"name":"root","children":[{"name":"index.js","children":[{"name":"src","children":[{"name":"providers","children":[{"uid":"e85c-36","name":"Web3Provider.tsx"},{"uid":"e85c-38","name":"helpers.ts"}]},{"name":"hooks","children":[{"uid":"e85c-40","name":"useMinting.ts"},{"name":"internal","children":[{"uid":"e85c-42","name":"useContext.ts"},{"uid":"e85c-44","name":"useAsyncMemo.ts"}]}]},{"name":"components","children":[{"uid":"e85c-46","name":"DefaultButton.tsx"},{"uid":"e85c-48","name":"MintButton.tsx"}]},{"name":"utils","children":[{"uid":"e85c-50","name":"basisPoints.ts"},{"uid":"e85c-52","name":"conversion.ts"},{"uid":"e85c-54","name":"etherscan.ts"}]}]}]}],"isRoot":true},"nodeParts":{"e85c-36":{"renderedLength":1205,"gzipLength":0,"brotliLength":0,"metaUid":"e85c-35"},"e85c-38":{"renderedLength":586,"gzipLength":0,"brotliLength":0,"metaUid":"e85c-37"},"e85c-40":{"renderedLength":1394,"gzipLength":0,"brotliLength":0,"metaUid":"e85c-39"},"e85c-42":{"renderedLength":59,"gzipLength":0,"brotliLength":0,"metaUid":"e85c-41"},"e85c-44":{"renderedLength":577,"gzipLength":0,"brotliLength":0,"metaUid":"e85c-43"},"e85c-46":{"renderedLength":558,"gzipLength":0,"brotliLength":0,"metaUid":"e85c-45"},"e85c-48":{"renderedLength":1268,"gzipLength":0,"brotliLength":0,"metaUid":"e85c-47"},"e85c-50":{"renderedLength":312,"gzipLength":0,"brotliLength":0,"metaUid":"e85c-49"},"e85c-52":{"renderedLength":229,"gzipLength":0,"brotliLength":0,"metaUid":"e85c-51"},"e85c-54":{"renderedLength":764,"gzipLength":0,"brotliLength":0,"metaUid":"e85c-53"}},"nodeMetas":{"e85c-35":{"id":"/src/providers/Web3Provider.tsx","moduleParts":{"index.js":"e85c-36"},"imported":[{"uid":"e85c-60"},{"uid":"e85c-61"},{"uid":"e85c-37"},{"uid":"e85c-62"},{"uid":"e85c-63"},{"uid":"e85c-64"}],"importedBy":[{"uid":"e85c-55"},{"uid":"e85c-41"}]},"e85c-37":{"id":"/src/providers/helpers.ts","moduleParts":{"index.js":"e85c-38"},"imported":[{"uid":"e85c-65"}],"importedBy":[{"uid":"e85c-35"}]},"e85c-39":{"id":"/src/hooks/useMinting.ts","moduleParts":{"index.js":"e85c-40"},"imported":[{"uid":"e85c-64"},{"uid":"e85c-62"},{"uid":"e85c-66"},{"uid":"e85c-43"}],"importedBy":[{"uid":"e85c-57"},{"uid":"e85c-47"}]},"e85c-41":{"id":"/src/hooks/internal/useContext.ts","moduleParts":{"index.js":"e85c-42"},"imported":[{"uid":"e85c-64"},{"uid":"e85c-35"}],"importedBy":[{"uid":"e85c-66"}]},"e85c-43":{"id":"/src/hooks/internal/useAsyncMemo.ts","moduleParts":{"index.js":"e85c-44"},"imported":[{"uid":"e85c-64"}],"importedBy":[{"uid":"e85c-39"}]},"e85c-45":{"id":"/src/components/DefaultButton.tsx","moduleParts":{"index.js":"e85c-46"},"imported":[{"uid":"e85c-60"},{"uid":"e85c-68"},{"uid":"e85c-69"}],"importedBy":[{"uid":"e85c-47"}]},"e85c-47":{"id":"/src/components/MintButton.tsx","moduleParts":{"index.js":"e85c-48"},"imported":[{"uid":"e85c-60"},{"uid":"e85c-39"},{"uid":"e85c-62"},{"uid":"e85c-45"}],"importedBy":[{"uid":"e85c-56"}]},"e85c-49":{"id":"/src/utils/basisPoints.ts","moduleParts":{"index.js":"e85c-50"},"imported":[],"importedBy":[{"uid":"e85c-58"}]},"e85c-51":{"id":"/src/utils/conversion.ts","moduleParts":{"index.js":"e85c-52"},"imported":[{"uid":"e85c-67"}],"importedBy":[{"uid":"e85c-58"}]},"e85c-53":{"id":"/src/utils/etherscan.ts","moduleParts":{"index.js":"e85c-54"},"imported":[],"importedBy":[{"uid":"e85c-58"}]},"e85c-55":{"id":"/src/index.ts","moduleParts":{},"imported":[{"uid":"e85c-35"},{"uid":"e85c-56"},{"uid":"e85c-57"},{"uid":"e85c-58"},{"uid":"e85c-59"}],"importedBy":[],"isEntry":true},"e85c-56":{"id":"/src/components/index.ts","moduleParts":{},"imported":[{"uid":"e85c-47"}],"importedBy":[{"uid":"e85c-55"}]},"e85c-57":{"id":"/src/hooks/index.ts","moduleParts":{},"imported":[{"uid":"e85c-39"}],"importedBy":[{"uid":"e85c-55"}]},"e85c-58":{"id":"/src/utils/index.ts","moduleParts":{},"imported":[{"uid":"e85c-49"},{"uid":"e85c-51"},{"uid":"e85c-53"}],"importedBy":[{"uid":"e85c-55"}]},"e85c-59":{"id":"/src/types.ts","moduleParts":{},"imported":[],"importedBy":[{"uid":"e85c-55"}]},"e85c-60":{"id":"react/jsx-runtime","moduleParts":{},"imported":[],"importedBy":[{"uid":"e85c-35"},{"uid":"e85c-47"},{"uid":"e85c-45"}],"isExternal":true},"e85c-61":{"id":"@rainbow-me/rainbowkit","moduleParts":{},"imported":[],"importedBy":[{"uid":"e85c-35"}],"isExternal":true},"e85c-62":{"id":"wagmi","moduleParts":{},"imported":[],"importedBy":[{"uid":"e85c-35"},{"uid":"e85c-47"},{"uid":"e85c-39"}],"isExternal":true},"e85c-63":{"id":"wagmi/chains","moduleParts":{},"imported":[],"importedBy":[{"uid":"e85c-35"}],"isExternal":true},"e85c-64":{"id":"react","moduleParts":{},"imported":[],"importedBy":[{"uid":"e85c-35"},{"uid":"e85c-39"},{"uid":"e85c-43"},{"uid":"e85c-41"}],"isExternal":true},"e85c-65":{"id":"wagmi/providers/jsonRpc","moduleParts":{},"imported":[],"importedBy":[{"uid":"e85c-37"}],"isExternal":true},"e85c-66":{"id":"/src/hooks/internal/index.ts","moduleParts":{},"imported":[{"uid":"e85c-41"}],"importedBy":[{"uid":"e85c-39"}]},"e85c-67":{"id":"ethers","moduleParts":{},"imported":[],"importedBy":[{"uid":"e85c-51"}],"isExternal":true},"e85c-68":{"id":"clsx","moduleParts":{},"imported":[],"importedBy":[{"uid":"e85c-45"}],"isExternal":true},"e85c-69":{"id":"/src/components/DefaultButton.module.css","moduleParts":{},"imported":[],"importedBy":[{"uid":"e85c-45"}]}},"env":{"rollup":"3.19.1"},"options":{"gzip":false,"brotli":false,"sourcemap":true}};
|
|
6161
6161
|
|
|
6162
6162
|
const run = () => {
|
|
6163
6163
|
const width = window.innerWidth;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hybrid",
|
|
3
3
|
"author": "IanH <ian@ianh.xyz>",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.2.0",
|
|
5
5
|
"description": "Solidity + TypeScript Framework for Web3 Development",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"hybrid",
|
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
"license": "MIT",
|
|
14
14
|
"type": "module",
|
|
15
15
|
"main": "./dist/index.js",
|
|
16
|
+
"module": "dist/index.mjs",
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
16
18
|
"exports": {
|
|
17
19
|
".": {
|
|
18
20
|
"types": "./dist/index.d.ts",
|
|
@@ -25,7 +27,6 @@
|
|
|
25
27
|
},
|
|
26
28
|
"./style.css": "./dist/style.css"
|
|
27
29
|
},
|
|
28
|
-
"types": "./dist/index.d.ts",
|
|
29
30
|
"bin": {
|
|
30
31
|
"hy": "dist/cli.mjs",
|
|
31
32
|
"hybrid": "dist/cli.mjs"
|
|
@@ -60,8 +61,8 @@
|
|
|
60
61
|
},
|
|
61
62
|
"dependencies": {
|
|
62
63
|
"@ethersproject/providers": "^5.7.1",
|
|
63
|
-
"@hybrd/cli": "^0.
|
|
64
|
-
"@hybrd/contracts": "^0.
|
|
64
|
+
"@hybrd/cli": "^0.2.0",
|
|
65
|
+
"@hybrd/contracts": "^0.2.0",
|
|
65
66
|
"@rainbow-me/rainbowkit": "^0.12.1",
|
|
66
67
|
"abitype": "^0.7.1",
|
|
67
68
|
"axios": "^1.2.2",
|
|
@@ -114,5 +115,5 @@
|
|
|
114
115
|
"react-dom": ">=17",
|
|
115
116
|
"wagmi": "^0.6.0"
|
|
116
117
|
},
|
|
117
|
-
"gitHead": "
|
|
118
|
+
"gitHead": "0f6991d17ce29e93eeb2ff6050802ecaa4adb87a"
|
|
118
119
|
}
|