{"version":3,"sources":["candy-machine.ts","Home.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["CANDY_MACHINE_PROGRAM","anchor","PublicKey","SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID","TOKEN_METADATA_PROGRAM_ID","awaitTransactionSignatureConfirmation","txid","timeout","connection","a","commitment","queryStatus","done","status","slot","confirmations","err","subId","Promise","resolve","reject","setTimeout","console","log","onSignature","result","context","e","error","getSignatureStatuses","signatureStatuses","value","sleep","_signatureSubscriptions","removeSignatureListener","createAssociatedTokenAccountInstruction","associatedTokenAddress","payer","walletAddress","splTokenMintAddress","keys","pubkey","isSigner","isWritable","SystemProgram","programId","TOKEN_PROGRAM_ID","SYSVAR_RENT_PUBKEY","TransactionInstruction","data","Buffer","from","getCandyMachineState","anchorWallet","candyMachineId","provider","preflightCommitment","fetchIdl","idl","program","candyMachine","id","account","fetch","state","itemsAvailable","toNumber","itemsRedeemed","itemsRemaining","goLiveDate","Date","getMasterEdition","mint","findProgramAddress","toBuffer","getMetadata","getTokenWallet","wallet","mintOneToken","config","treasury","Keypair","generate","publicKey","token","metadata","masterEdition","getMinimumBalanceForRentExemption","MintLayout","span","rent","rpc","mintNft","accounts","mintAuthority","updateAuthority","tokenMetadataProgram","tokenProgram","systemProgram","clock","SYSVAR_CLOCK_PUBKEY","signers","instructions","createAccount","fromPubkey","newAccountPubkey","space","lamports","Token","createInitMintInstruction","createMintToInstruction","shortenAddress","address","chars","slice","ms","ConnectButton","styled","WalletDialogButton","CounterText","MintContainer","div","MintButton","Button","renderCounter","days","hours","minutes","seconds","completed","Home","props","useState","balance","setBalance","isActive","setIsActive","isSoldOut","setIsSoldOut","isMinting","setIsMinting","setItemsAvailable","setItemsRedeemed","setItemsRemaining","open","message","severity","undefined","alertState","setAlertState","startDate","setStartDate","useAnchorWallet","setCandyMachine","refreshCandyMachineState","onMint","mintTxId","txTimeout","msg","code","indexOf","getBalance","LAMPORTS_PER_SOL","useEffect","className","toBase58","toFixed","disabled","onClick","variant","CircularProgress","date","onMount","onComplete","renderer","Snackbar","autoHideDuration","onClose","Alert","process","network","Connection","startDateSeed","parseInt","theme","createTheme","palette","type","overrides","MuiButtonBase","root","justifyContent","MuiButton","textTransform","padding","startIcon","marginRight","endIcon","marginLeft","App","endpoint","useMemo","clusterApiUrl","wallets","getPhantomWallet","getSlopeWallet","getSolflareWallet","getSolletWallet","getSolletExtensionWallet","ThemeProvider","autoConnect","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.e92215ec.chunk.js","sourcesContent":["import * as anchor from \"@project-serum/anchor\";\n\nimport {\n MintLayout,\n TOKEN_PROGRAM_ID,\n Token,\n} from \"@solana/spl-token\";\n\nexport const CANDY_MACHINE_PROGRAM = new anchor.web3.PublicKey(\n \"cndyAnrLdpjq1Ssp1z8xxDsB8dxe7u4HL5Nxi2K5WXZ\"\n);\n\nconst SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID = new anchor.web3.PublicKey(\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n);\n\nconst TOKEN_METADATA_PROGRAM_ID = new anchor.web3.PublicKey(\n \"metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s\"\n);\n\nexport interface CandyMachine {\n id: anchor.web3.PublicKey,\n connection: anchor.web3.Connection;\n program: anchor.Program;\n}\n\ninterface CandyMachineState {\n candyMachine: CandyMachine;\n itemsAvailable: number;\n itemsRedeemed: number;\n itemsRemaining: number;\n goLiveDate: Date,\n}\n\nexport const awaitTransactionSignatureConfirmation = async (\n txid: anchor.web3.TransactionSignature,\n timeout: number,\n connection: anchor.web3.Connection,\n commitment: anchor.web3.Commitment = \"recent\",\n queryStatus = false\n): Promise => {\n let done = false;\n let status: anchor.web3.SignatureStatus | null | void = {\n slot: 0,\n confirmations: 0,\n err: null,\n };\n let subId = 0;\n status = await new Promise(async (resolve, reject) => {\n setTimeout(() => {\n if (done) {\n return;\n }\n done = true;\n console.log(\"Rejecting for timeout...\");\n reject({ timeout: true });\n }, timeout);\n try {\n subId = connection.onSignature(\n txid,\n (result: any, context: any) => {\n done = true;\n status = {\n err: result.err,\n slot: context.slot,\n confirmations: 0,\n };\n if (result.err) {\n console.log(\"Rejected via websocket\", result.err);\n reject(status);\n } else {\n console.log(\"Resolved via websocket\", result);\n resolve(status);\n }\n },\n commitment\n );\n } catch (e) {\n done = true;\n console.error(\"WS error in setup\", txid, e);\n }\n while (!done && queryStatus) {\n // eslint-disable-next-line no-loop-func\n (async () => {\n try {\n const signatureStatuses = await connection.getSignatureStatuses([\n txid,\n ]);\n status = signatureStatuses && signatureStatuses.value[0];\n if (!done) {\n if (!status) {\n console.log(\"REST null result for\", txid, status);\n } else if (status.err) {\n console.log(\"REST error for\", txid, status);\n done = true;\n reject(status.err);\n } else if (!status.confirmations) {\n console.log(\"REST no confirmations for\", txid, status);\n } else {\n console.log(\"REST confirmation for\", txid, status);\n done = true;\n resolve(status);\n }\n }\n } catch (e) {\n if (!done) {\n console.log(\"REST connection error: txid\", txid, e);\n }\n }\n })();\n await sleep(2000);\n }\n });\n\n //@ts-ignore\n if (connection._signatureSubscriptions[subId]) {\n connection.removeSignatureListener(subId);\n }\n done = true;\n console.log(\"Returning status\", status);\n return status;\n}\n\n/* export */ const createAssociatedTokenAccountInstruction = (\n associatedTokenAddress: anchor.web3.PublicKey,\n payer: anchor.web3.PublicKey,\n walletAddress: anchor.web3.PublicKey,\n splTokenMintAddress: anchor.web3.PublicKey\n) => {\n const keys = [\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: associatedTokenAddress, isSigner: false, isWritable: true },\n { pubkey: walletAddress, isSigner: false, isWritable: false },\n { pubkey: splTokenMintAddress, isSigner: false, isWritable: false },\n {\n pubkey: anchor.web3.SystemProgram.programId,\n isSigner: false,\n isWritable: false,\n },\n { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n {\n pubkey: anchor.web3.SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n ];\n return new anchor.web3.TransactionInstruction({\n keys,\n programId: SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID,\n data: Buffer.from([]),\n });\n}\n\nexport const getCandyMachineState = async (\n anchorWallet: anchor.Wallet,\n candyMachineId: anchor.web3.PublicKey,\n connection: anchor.web3.Connection,\n): Promise => {\n const provider = new anchor.Provider(connection, anchorWallet, {\n preflightCommitment: \"recent\",\n });\n\n const idl = await anchor.Program.fetchIdl(\n CANDY_MACHINE_PROGRAM,\n provider\n );\n\n const program = new anchor.Program(idl, CANDY_MACHINE_PROGRAM, provider);\n const candyMachine = {\n id: candyMachineId,\n connection,\n program,\n }\n\n const state: any = await program.account.candyMachine.fetch(candyMachineId);\n\n const itemsAvailable = state.data.itemsAvailable.toNumber();\n const itemsRedeemed = state.itemsRedeemed.toNumber();\n const itemsRemaining = itemsAvailable - itemsRedeemed;\n\n let goLiveDate = state.data.goLiveDate.toNumber();\n goLiveDate = new Date(goLiveDate * 1000);\n\n console.log({\n itemsAvailable,\n itemsRedeemed,\n itemsRemaining,\n goLiveDate,\n })\n\n return {\n candyMachine,\n itemsAvailable,\n itemsRedeemed,\n itemsRemaining,\n goLiveDate,\n };\n}\n\nconst getMasterEdition = async (\n mint: anchor.web3.PublicKey\n): Promise => {\n return (\n await anchor.web3.PublicKey.findProgramAddress(\n [\n Buffer.from(\"metadata\"),\n TOKEN_METADATA_PROGRAM_ID.toBuffer(),\n mint.toBuffer(),\n Buffer.from(\"edition\"),\n ],\n TOKEN_METADATA_PROGRAM_ID\n )\n )[0];\n};\n\nconst getMetadata = async (\n mint: anchor.web3.PublicKey\n): Promise => {\n return (\n await anchor.web3.PublicKey.findProgramAddress(\n [\n Buffer.from(\"metadata\"),\n TOKEN_METADATA_PROGRAM_ID.toBuffer(),\n mint.toBuffer(),\n ],\n TOKEN_METADATA_PROGRAM_ID\n )\n )[0];\n};\n\nconst getTokenWallet = async (\n wallet: anchor.web3.PublicKey,\n mint: anchor.web3.PublicKey\n) => {\n return (\n await anchor.web3.PublicKey.findProgramAddress(\n [wallet.toBuffer(), TOKEN_PROGRAM_ID.toBuffer(), mint.toBuffer()],\n SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID\n )\n )[0];\n};\n\nexport const mintOneToken = async (\n candyMachine: CandyMachine,\n config: anchor.web3.PublicKey, // feels like this should be part of candyMachine?\n payer: anchor.web3.PublicKey,\n treasury: anchor.web3.PublicKey,\n): Promise => {\n const mint = anchor.web3.Keypair.generate();\n const token = await getTokenWallet(payer, mint.publicKey);\n const { connection, program } = candyMachine;\n const metadata = await getMetadata(mint.publicKey);\n const masterEdition = await getMasterEdition(mint.publicKey);\n\n const rent = await connection.getMinimumBalanceForRentExemption(\n MintLayout.span\n );\n\n return await program.rpc.mintNft({\n accounts: {\n config,\n candyMachine: candyMachine.id,\n payer: payer,\n wallet: treasury,\n mint: mint.publicKey,\n metadata,\n masterEdition,\n mintAuthority: payer,\n updateAuthority: payer,\n tokenMetadataProgram: TOKEN_METADATA_PROGRAM_ID,\n tokenProgram: TOKEN_PROGRAM_ID,\n systemProgram: anchor.web3.SystemProgram.programId,\n rent: anchor.web3.SYSVAR_RENT_PUBKEY,\n clock: anchor.web3.SYSVAR_CLOCK_PUBKEY,\n },\n signers: [mint],\n instructions: [\n anchor.web3.SystemProgram.createAccount({\n fromPubkey: payer,\n newAccountPubkey: mint.publicKey,\n space: MintLayout.span,\n lamports: rent,\n programId: TOKEN_PROGRAM_ID,\n }),\n Token.createInitMintInstruction(\n TOKEN_PROGRAM_ID,\n mint.publicKey,\n 0,\n payer,\n payer\n ),\n createAssociatedTokenAccountInstruction(\n token,\n payer,\n payer,\n mint.publicKey\n ),\n Token.createMintToInstruction(\n TOKEN_PROGRAM_ID,\n mint.publicKey,\n token,\n payer,\n [],\n 1\n ),\n ],\n });\n}\n\nexport const shortenAddress = (address: string, chars = 4): string => {\n return `${address.slice(0, chars)}...${address.slice(-chars)}`;\n};\n\nconst sleep = (ms: number): Promise => {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}","import { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\nimport Countdown from \"react-countdown\";\nimport { Button, CircularProgress, Snackbar } from \"@material-ui/core\";\nimport Alert from \"@material-ui/lab/Alert\";\n\nimport * as anchor from \"@project-serum/anchor\";\n\nimport { LAMPORTS_PER_SOL } from \"@solana/web3.js\";\n\nimport { useAnchorWallet } from \"@solana/wallet-adapter-react\";\nimport { WalletDialogButton } from \"@solana/wallet-adapter-material-ui\";\n\nimport {\n CandyMachine,\n awaitTransactionSignatureConfirmation,\n getCandyMachineState,\n mintOneToken,\n shortenAddress,\n} from \"./candy-machine\";\n\nconst ConnectButton = styled(WalletDialogButton)`\nmargin-left: auto !important;\nmargin-right: auto !important;\nfont-size: 31px !important;\nline-height: 37px !important;\nposition: relative !important;\ndisplay: inline-block !important;\nvertical-align: top !important;\nfont-weight: 400 !important;\nfont-family: \"modak\", \"Arial\", \"Helvetica\", sans-serif !important;\nborder: 3px solid #000 !important;\ntext-transform: capitalize !important;\nborder-radius: 20px !important;\npadding: 15px 10px !important;\nheight: 71px !important;\nmin-width: 202px !important;\ntext-align: center !important;\nbackground: #ff931e !important;\ncolor: #000 !important;\n-webkit-transition: all 0.4s ease !important;\ntransition: all 0.4s ease !important;\nmargin-bottom: 40px !important;\n:before {\n width: 30px;\n height: 15px;\n content: \"\";\n position: absolute;\n right: 3px;\n top: 3px;\n background: url(../images/lines.png) no-repeat;\n background-size: cover;\n}\n:hover {\n background: #ff931e;\n opacity: 0.8;\n}\n`;\n\nconst CounterText = styled.span``; // add your styles here\n\nconst MintContainer = styled.div``; // add your styles here\n\nconst MintButton = styled(Button)`\nfont-size: 31px !important;\nline-height: 37px !important;\nposition: relative !important;\ndisplay: inline-block !important;\nvertical-align: top !important;\nfont-weight: 400 !important;\nfont-family: \"modak\", \"Arial\", \"Helvetica\", sans-serif !important;\nborder: 3px solid #000 !important;\ntext-transform: capitalize !important;\nborder-radius: 20px !important;\npadding: 15px 10px !important;\nheight: 71px !important;\nmin-width: 202px !important;\ntext-align: center !important;\nbackground: #ff931e !important;\ncolor: #000 !important;\n-webkit-transition: all 0.4s ease !important;\ntransition: all 0.4s ease !important;\nmargin-bottom: 20px !important;\nmargin-top: 20px !important;\n:before {\n width: 30px;\n height: 15px;\n content: \"\";\n position: absolute;\n right: 3px;\n top: 3px;\n background: url(../images/lines.png) no-repeat;\n background-size: cover;\n}\n:hover {\n background: #ff931e;\n opacity: 0.8;\n}\n`; // add your styles here\n\nexport interface HomeProps {\n candyMachineId: anchor.web3.PublicKey;\n config: anchor.web3.PublicKey;\n connection: anchor.web3.Connection;\n startDate: number;\n treasury: anchor.web3.PublicKey;\n txTimeout: number;\n}\n\nconst Home = (props: HomeProps) => {\n const [balance, setBalance] = useState();\n const [isActive, setIsActive] = useState(false); // true when countdown completes\n const [isSoldOut, setIsSoldOut] = useState(false); // true when items remaining is zero\n const [isMinting, setIsMinting] = useState(false); // true when user got to press MINT\n\n const [itemsAvailable, setItemsAvailable] = useState(0);\n const [itemsRedeemed, setItemsRedeemed] = useState(0);\n const [itemsRemaining, setItemsRemaining] = useState(0);\n\n const [alertState, setAlertState] = useState({\n open: false,\n message: \"\",\n severity: undefined,\n });\n\n const [startDate, setStartDate] = useState(new Date(props.startDate));\n\n const wallet = useAnchorWallet();\n const [candyMachine, setCandyMachine] = useState();\n\n const refreshCandyMachineState = () => {\n (async () => {\n if (!wallet) return;\n\n const {\n candyMachine,\n goLiveDate,\n itemsAvailable,\n itemsRemaining,\n itemsRedeemed,\n } = await getCandyMachineState(\n wallet as anchor.Wallet,\n props.candyMachineId,\n props.connection\n );\n\n setItemsAvailable(itemsAvailable);\n setItemsRemaining(itemsRemaining);\n setItemsRedeemed(itemsRedeemed);\n\n setIsSoldOut(itemsRemaining === 0);\n setStartDate(goLiveDate);\n setCandyMachine(candyMachine);\n })();\n };\n\n const onMint = async () => {\n try {\n setIsMinting(true);\n if (wallet && candyMachine?.program) {\n const mintTxId = await mintOneToken(\n candyMachine,\n props.config,\n wallet.publicKey,\n props.treasury\n );\n\n const status = await awaitTransactionSignatureConfirmation(\n mintTxId,\n props.txTimeout,\n props.connection,\n \"singleGossip\",\n false\n );\n\n if (!status?.err) {\n setAlertState({\n open: true,\n message: \"Congratulations! Mint succeeded!\",\n severity: \"success\",\n });\n } else {\n setAlertState({\n open: true,\n message: \"Mint failed! Please try again!\",\n severity: \"error\",\n });\n }\n }\n } catch (error: any) {\n // TODO: blech:\n let message = error.msg || \"Minting failed! Please try again!\";\n if (!error.msg) {\n if (error.message.indexOf(\"0x138\")) {\n } else if (error.message.indexOf(\"0x137\")) {\n message = `SOLD OUT!`;\n } else if (error.message.indexOf(\"0x135\")) {\n message = `Insufficient funds to mint. Please fund your wallet.`;\n }\n } else {\n if (error.code === 311) {\n message = `SOLD OUT!`;\n setIsSoldOut(true);\n } else if (error.code === 312) {\n message = `Minting period hasn't started yet.`;\n }\n }\n\n setAlertState({\n open: true,\n message,\n severity: \"error\",\n });\n } finally {\n if (wallet) {\n const balance = await props.connection.getBalance(wallet.publicKey);\n setBalance(balance / LAMPORTS_PER_SOL);\n }\n setIsMinting(false);\n refreshCandyMachineState();\n }\n };\n\n useEffect(() => {\n (async () => {\n if (wallet) {\n const balance = await props.connection.getBalance(wallet.publicKey);\n setBalance(balance / LAMPORTS_PER_SOL);\n }\n })();\n }, [wallet, props.connection]);\n\n useEffect(refreshCandyMachineState, [\n wallet,\n props.candyMachineId,\n props.connection,\n ]);\n\n return (\n \n {wallet && (\n
\n ADDRESS: {shortenAddress(wallet.publicKey.toBase58() || \"\")}\n
\n BALANCE: {balance ? balance.toFixed(2) : \"...\"} SOL\n
\n )}\n\n \n {!wallet ? (\n Connect\n ) : (\n \n {isSoldOut ? (\n \"SOLD OUT\"\n ) : isActive ? (\n isMinting ? (\n \n ) : (\n \"MINT\"\n )\n ) : (\n completed && setIsActive(true)}\n onComplete={() => setIsActive(true)}\n renderer={renderCounter}\n />\n )}\n \n )}\n \n\n setAlertState({ ...alertState, open: false })}\n >\n setAlertState({ ...alertState, open: false })}\n severity={alertState.severity}\n >\n {alertState.message}\n \n \n

Sumatraverse is the home of all Tangs and it is being destroyed by the conglomerate PalmCorp. Send your Tangs on missions to dismantle, reclaim and rejuvenate their Sumatraverse rainforest home from the grips of PalmCorp, in this strategic play-to-earn game.

\n\n
\n\n );\n};\n\ninterface AlertState {\n open: boolean;\n message: string;\n severity: \"success\" | \"info\" | \"warning\" | \"error\" | undefined;\n}\n\nconst renderCounter = ({ days, hours, minutes, seconds, completed }: any) => {\n return (\n \n {hours + (days || 0) * 24} hours, {minutes} minutes, {seconds} seconds\n \n );\n};\n\nexport default Home;\n","import \"./App.css\";\nimport { useMemo } from \"react\";\n\nimport Home from \"./Home\";\n\nimport * as anchor from \"@project-serum/anchor\";\nimport { clusterApiUrl } from \"@solana/web3.js\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\nimport {\n getPhantomWallet,\n getSlopeWallet,\n getSolflareWallet,\n getSolletWallet,\n getSolletExtensionWallet,\n} from \"@solana/wallet-adapter-wallets\";\n\nimport {\n ConnectionProvider,\n WalletProvider,\n} from \"@solana/wallet-adapter-react\";\n\nimport { WalletDialogProvider } from \"@solana/wallet-adapter-material-ui\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core\";\n\nconst treasury = new anchor.web3.PublicKey(\n process.env.REACT_APP_TREASURY_ADDRESS!\n);\n\nconst config = new anchor.web3.PublicKey(\n process.env.REACT_APP_CANDY_MACHINE_CONFIG!\n);\n\nconst candyMachineId = new anchor.web3.PublicKey(\n process.env.REACT_APP_CANDY_MACHINE_ID!\n);\n\nconst network = process.env.REACT_APP_SOLANA_NETWORK as WalletAdapterNetwork;\n\nconst rpcHost = process.env.REACT_APP_SOLANA_RPC_HOST!;\nconst connection = new anchor.web3.Connection(rpcHost);\n\nconst startDateSeed = parseInt(process.env.REACT_APP_CANDY_START_DATE!, 10);\n\nconst txTimeout = 30000; // milliseconds (confirm this works for your project)\n\nconst theme = createTheme({\n palette: {\n type: 'dark',\n },\n overrides: {\n MuiButtonBase: {\n root: {\n justifyContent: 'flex-start',\n },\n },\n MuiButton: {\n root: {\n textTransform: undefined,\n padding: '12px 16px',\n },\n startIcon: {\n marginRight: 8,\n },\n endIcon: {\n marginLeft: 8,\n },\n },\n },\n});\n\nconst App = () => {\n const endpoint = useMemo(() => clusterApiUrl(network), []);\n\n const wallets = useMemo(\n () => [\n getPhantomWallet(),\n getSlopeWallet(),\n getSolflareWallet(),\n getSolletWallet({ network }),\n getSolletExtensionWallet({ network })\n ],\n []\n );\n\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}