{"version":3,"sources":["redux/blockchain/blockchainReducer.js","redux/data/dataReducer.js","redux/store.js","redux/data/dataActions.js","redux/blockchain/blockchainActions.js","styles/globalStyles.js","App.js","index.js"],"names":["initialState","loading","account","smartContract","web3","errorMsg","blockchainReducer","state","action","type","payload","totalSupply","cost","error","dataReducer","rootReducer","combineReducers","blockchain","data","middleware","thunk","composeEnhancers","compose","applyMiddleware","store","createStore","fetchDataFailed","fetchData","dispatch","a","getState","methods","call","console","log","connectFailed","updateAccount","Screen","styled","div","SpacerSmall","SpacerMedium","SpacerLarge","Container","flex","fd","jc","ai","test","TextTitle","p","TextDescription","StyledButton","button","StyledRoundButton","ResponsiveWrapper","StyledLink","App","input","len","useDispatch","useSelector","useState","claimingNft","setClaimingNft","feedback","setFeedback","mintAmount","setMintAmount","CONTRACT_ADDRESS","SCAN_LINK","NETWORK","NAME","SYMBOL","ID","NFT_NAME","MAX_SUPPLY","WEI_COST","DISPLAY_COST","GAS_LIMIT","MARKETPLACE","MARKETPLACE_LINK","SHOW_BACKGROUND","CONFIG","SET_CONFIG","getData","getConfig","fetch","headers","Accept","configResponse","json","config","useEffect","className","src","width","href","target","style","padding","maxWidth","margin","backgroundColor","borderRadius","Number","textAlign","fontSize","fontWeight","fontFamily","color","length","substring","onClick","e","preventDefault","abiResponse","abi","window","ethereum","isMetaMask","Web3EthContract","setProvider","Web3","request","method","accounts","SmartContractObj","on","location","reload","lineHeight","disabled","newMintAmount","decrementMintAmount","incrementMintAmount","gasLimit","totalCostWei","String","totalGasLimit","mint","send","to","from","value","once","err","then","receipt","claimNFTs","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.b9604d42.chunk.js","sourcesContent":["const initialState = {\n loading: false,\n account: null,\n smartContract: null,\n web3: null,\n errorMsg: \"\",\n};\n\nconst blockchainReducer = (state = initialState, action) => {\n switch (action.type) {\n case \"CONNECTION_REQUEST\":\n return {\n ...initialState,\n loading: true,\n };\n case \"CONNECTION_SUCCESS\":\n return {\n ...state,\n loading: false,\n account: action.payload.account,\n smartContract: action.payload.smartContract,\n web3: action.payload.web3,\n };\n case \"CONNECTION_FAILED\":\n return {\n ...initialState,\n loading: false,\n errorMsg: action.payload,\n };\n case \"UPDATE_ACCOUNT\":\n return {\n ...state,\n account: action.payload.account,\n };\n default:\n return state;\n }\n};\n\nexport default blockchainReducer;\n","const initialState = {\n loading: false,\n totalSupply: 0,\n cost: 0,\n error: false,\n errorMsg: \"\",\n};\n\nconst dataReducer = (state = initialState, action) => {\n switch (action.type) {\n case \"CHECK_DATA_REQUEST\":\n return {\n ...state,\n loading: true,\n error: false,\n errorMsg: \"\",\n };\n case \"CHECK_DATA_SUCCESS\":\n return {\n ...state,\n loading: false,\n totalSupply: action.payload.totalSupply,\n // cost: action.payload.cost,\n error: false,\n errorMsg: \"\",\n };\n case \"CHECK_DATA_FAILED\":\n return {\n ...initialState,\n loading: false,\n error: true,\n errorMsg: action.payload,\n };\n default:\n return state;\n }\n};\n\nexport default dataReducer;\n","import { applyMiddleware, compose, createStore, combineReducers } from \"redux\";\nimport thunk from \"redux-thunk\";\nimport blockchainReducer from \"./blockchain/blockchainReducer\";\nimport dataReducer from \"./data/dataReducer\";\n\nconst rootReducer = combineReducers({\n blockchain: blockchainReducer,\n data: dataReducer,\n});\n\nconst middleware = [thunk];\nconst composeEnhancers = compose(applyMiddleware(...middleware));\n\nconst configureStore = () => {\n return createStore(rootReducer, composeEnhancers);\n};\n\nconst store = configureStore();\n\nexport default store;\n","// log\nimport store from \"../store\";\n\nconst fetchDataRequest = () => {\n return {\n type: \"CHECK_DATA_REQUEST\",\n };\n};\n\nconst fetchDataSuccess = (payload) => {\n return {\n type: \"CHECK_DATA_SUCCESS\",\n payload: payload,\n };\n};\n\nconst fetchDataFailed = (payload) => {\n return {\n type: \"CHECK_DATA_FAILED\",\n payload: payload,\n };\n};\n\nexport const fetchData = () => {\n return async (dispatch) => {\n dispatch(fetchDataRequest());\n try {\n let totalSupply = await store\n .getState()\n .blockchain.smartContract.methods.totalSupply()\n .call();\n // let cost = await store\n // .getState()\n // .blockchain.smartContract.methods.cost()\n // .call();\n\n dispatch(\n fetchDataSuccess({\n totalSupply,\n // cost,\n })\n );\n } catch (err) {\n console.log(err);\n dispatch(fetchDataFailed(\"Could not load data from contract.\"));\n }\n };\n};\n","// constants\nimport Web3EthContract from \"web3-eth-contract\";\nimport Web3 from \"web3\";\n// log\nimport { fetchData } from \"../data/dataActions\";\n\nconst connectRequest = () => {\n return {\n type: \"CONNECTION_REQUEST\",\n };\n};\n\nconst connectSuccess = (payload) => {\n return {\n type: \"CONNECTION_SUCCESS\",\n payload: payload,\n };\n};\n\nconst connectFailed = (payload) => {\n return {\n type: \"CONNECTION_FAILED\",\n payload: payload,\n };\n};\n\nconst updateAccountRequest = (payload) => {\n return {\n type: \"UPDATE_ACCOUNT\",\n payload: payload,\n };\n};\n\nexport const connect = () => {\n return async (dispatch) => {\n dispatch(connectRequest());\n const abiResponse = await fetch(\"/config/abi.json\", {\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n });\n const abi = await abiResponse.json();\n const configResponse = await fetch(\"/config/config.json\", {\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n });\n const CONFIG = await configResponse.json();\n const { ethereum } = window;\n const metamaskIsInstalled = ethereum && ethereum.isMetaMask;\n if (metamaskIsInstalled) {\n Web3EthContract.setProvider(ethereum);\n let web3 = new Web3(ethereum);\n try {\n const accounts = await ethereum.request({\n method: \"eth_requestAccounts\",\n });\n const networkId = await ethereum.request({\n method: \"net_version\",\n });\n if (networkId == CONFIG.NETWORK.ID) {\n const SmartContractObj = new Web3EthContract(\n abi,\n CONFIG.CONTRACT_ADDRESS\n );\n dispatch(\n connectSuccess({\n account: accounts[0],\n smartContract: SmartContractObj,\n web3: web3,\n })\n );\n // Add listeners start\n ethereum.on(\"accountsChanged\", (accounts) => {\n dispatch(updateAccount(accounts[0]));\n });\n ethereum.on(\"chainChanged\", () => {\n window.location.reload();\n });\n // Add listeners end\n } else {\n dispatch(connectFailed(`Change network to ${CONFIG.NETWORK.NAME}.`));\n }\n } catch (err) {\n dispatch(connectFailed(\"Something went wrong.\"));\n }\n } else {\n dispatch(connectFailed(\"Install Metamask.\"));\n }\n };\n};\n\nexport const updateAccount = (account) => {\n return async (dispatch) => {\n dispatch(updateAccountRequest({ account: account }));\n dispatch(fetchData(account));\n };\n};\n","import styled from \"styled-components\";\n\n// Used for wrapping a page component\nexport const Screen = styled.div`\n background: linear-gradient(45deg, #343a40, #595c76, #007aa6, #6610f2);\n animation: gradient 8s ease infinite;\n\theight: 100vh;\n background-size: 300% 300%;\n color:#ffffff;\n font-family: 'Montserrat', sans-serif;\n text-align: center;\n font-size: 14px;\n`;\n\n// Used for providing space between components\nexport const SpacerXSmall = styled.div`\n height: 8px;\n width: 8px;\n`;\n\n// Used for providing space between components\nexport const SpacerSmall = styled.div`\n height: 16px;\n width: 16px;\n`;\n\n// Used for providing space between components\nexport const SpacerMedium = styled.div`\n height: 24px;\n width: 24px;\n`;\n\n// Used for providing space between components\nexport const SpacerLarge = styled.div`\n height: 32px;\n width: 32px;\n`;\n\n// Used for providing a wrapper around a component\nexport const Container = styled.div`\n display: flex;\n flex: ${({ flex }) => (flex ? flex : 0)};\n flex-direction: ${({ fd }) => (fd ? fd : \"column\")};\n justify-content: ${({ jc }) => (jc ? jc : \"flex-start\")};\n align-items: ${({ ai }) => (ai ? ai : \"flex-start\")};\n background-color: ${({ test }) => (test ? \"pink\" : \"none\")};\n width: 100%;\n background-size: cover;\n background-position: center;\n`;\n\nexport const TextTitle = styled.p`\n color: var(--primary-text);\n font-size: 20px;\n font-weight: 500;\n line-height: 1.6;\n`;\n\nexport const TextSubTitle = styled.p`\n color: var(--primary-text);\n font-size: 16px;\n line-height: 1.6;\n`;\n\nexport const TextDescription = styled.p`\n color: var(--primary-text);\n line-height: 1.6;\n`;\n\nexport const StyledClickable = styled.div`\n :active {\n opacity: 0.6;\n }\n`;\n","import React, { useEffect, useState, useRef } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { connect } from \"./redux/blockchain/blockchainActions\";\nimport { fetchData } from \"./redux/data/dataActions\";\nimport * as s from \"./styles/globalStyles\";\nimport styled from \"styled-components\";\n\nconst truncate = (input, len) =>\n input.length > len ? `${input.substring(0, len)}...` : input;\n\nexport const StyledButton = styled.button`\n background-color: #007aa6;\n border: 1px solid #000000;\n border-radius: 5px;\n color: #FFFFFF;\n font-family: 'Press Start 2P', cursive;\n font-size: 12px;\n padding: 10px 30px;\n text-align: center;\n text-decoration: none;\n margin-top: 30px;\n display: block;\n max-width: 300px;\n border: 5px solid #007aa6;\n :active {\n background-color: #FFFFFF;\n color: #007aa6;\n border: 5px solid #007aa6;\n }\n :hover {\n background-color: #FFFFFF;\n color: #007aa6;\n border: 5px solid #007aa6;\n }\n`;\n\nexport const StyledRoundButton = styled.button`\n padding: 10px;\n border-radius: 0px;\n border: none;\n background-color: #ffffff;\n padding: 10px;\n font-size: 20px;\n color: #007aa6;\n width: 30px;\n height: 30px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n :active {\n box-shadow: none;\n -webkit-box-shadow: none;\n -moz-box-shadow: none;\n }\n`;\n\nexport const ResponsiveWrapper = styled.div`\n display: flex;\n flex: 1;\n flex-direction: column;\n justify-content: stretched;\n align-items: stretched;\n width: 100%;\n @media (min-width: 767px) {\n flex-direction: row;\n }\n`;\n\n\nexport const StyledLink = styled.a`\n color: var(--secondary);\n text-decoration: none;\n`;\n\nfunction App() {\n const dispatch = useDispatch();\n const blockchain = useSelector((state) => state.blockchain);\n const data = useSelector((state) => state.data);\n const [claimingNft, setClaimingNft] = useState(false);\n const [feedback, setFeedback] = useState(`Let's mint!`);\n const [mintAmount, setMintAmount] = useState(1);\n const [CONFIG, SET_CONFIG] = useState({\n CONTRACT_ADDRESS: \"\",\n SCAN_LINK: \"\",\n NETWORK: {\n NAME: \"\",\n SYMBOL: \"\",\n ID: 0,\n },\n NFT_NAME: \"\",\n SYMBOL: \"\",\n MAX_SUPPLY: 1,\n WEI_COST: 0,\n DISPLAY_COST: 0,\n GAS_LIMIT: 0,\n MARKETPLACE: \"\",\n MARKETPLACE_LINK: \"\",\n SHOW_BACKGROUND: false,\n });\n\n const claimNFTs = () => {\n let cost = CONFIG.WEI_COST;\n let gasLimit = CONFIG.GAS_LIMIT;\n let totalCostWei = String(cost * mintAmount);\n let totalGasLimit = String(gasLimit * mintAmount);\n console.log(\"Cost: \", totalCostWei);\n console.log(\"Gas limit: \", totalGasLimit);\n setFeedback(`Minting your ${CONFIG.NFT_NAME}...`);\n setClaimingNft(true);\n blockchain.smartContract.methods\n .mint(mintAmount)\n .send({\n gasLimit: String(totalGasLimit),\n to: CONFIG.CONTRACT_ADDRESS,\n from: blockchain.account,\n value: totalCostWei,\n })\n .once(\"error\", (err) => {\n console.log(err);\n setFeedback(\"Sorry, something went wrong please try again later.\");\n setClaimingNft(false);\n })\n .then((receipt) => {\n // console.log(receipt);\n setFeedback(\n `WOW, the ${CONFIG.NFT_NAME} is yours! go visit Opensea.io to view it.`\n );\n setClaimingNft(false);\n dispatch(fetchData(blockchain.account));\n });\n };\n\n const decrementMintAmount = () => {\n let newMintAmount = mintAmount - 1;\n if (newMintAmount < 1) {\n newMintAmount = 1;\n }\n setMintAmount(newMintAmount);\n };\n\n const incrementMintAmount = () => {\n let newMintAmount = mintAmount + 1;\n if (newMintAmount > 15) {\n newMintAmount = 15;\n }\n setMintAmount(newMintAmount);\n };\n\n const getData = () => {\n if (blockchain.account !== \"\" && blockchain.smartContract !== null) {\n dispatch(fetchData(blockchain.account));\n }\n };\n\n const getConfig = async () => {\n const configResponse = await fetch(\"/config/config.json\", {\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n });\n const config = await configResponse.json();\n SET_CONFIG(config);\n };\n\n useEffect(() => {\n getConfig();\n }, []);\n\n useEffect(() => {\n getData();\n }, [blockchain.account]);\n\n return (\n \n\n

VAMPIRE CODERS

\n
\n
\n
\n \n
\n

Vampire Coders is a NFT collection of 12,000 unique vampires who are coding the future of Crypto platforms. Running on polygon network.

\n

Holders of the first generation will get free Airdrops of the upcoming collections and exclusive access to the future VAMP coders community.

\n

Future belongs to coders!

\n
\n

Get yours on Opensea

\n
\n \n
\n
\n\n\n\n\n\n\n \n

MINT VAMPS

\n \n \n \n\n {Number(data.totalSupply) > 0 ? (\n <>\n \n \n {data.totalSupply} / {CONFIG.MAX_SUPPLY}\n \n \n ):(\n <>\n )}\n\n \n \n {truncate(CONFIG.CONTRACT_ADDRESS, 15)}\n \n \n\n {Number(data.totalSupply) >= CONFIG.MAX_SUPPLY ? (\n <>\n \n The sale has ended.\n \n \n You can still find {CONFIG.NFT_NAME} on\n \n\n \n {CONFIG.MARKETPLACE}\n \n \n ) : (\n <>\n \n 1 {CONFIG.SYMBOL} = {CONFIG.DISPLAY_COST}{\" \"}\n {CONFIG.NETWORK.SYMBOL}.\n \n \n Excluding gas fees.\n \n {blockchain.account === \"\" ||\n blockchain.smartContract === null ? (\n \n \n Connect to the {CONFIG.NETWORK.NAME} network\n \n {\n e.preventDefault();\n dispatch(connect());\n getData();\n }}\n >\n CONNECT\n \n {blockchain.errorMsg !== \"\" ? (\n <>\n \n \n {blockchain.errorMsg}\n \n \n ) : null}\n \n ) : (\n <>\n \n {feedback}\n \n \n \n {\n e.preventDefault();\n decrementMintAmount();\n }}\n >\n -\n \n \n \n {mintAmount}\n \n \n {\n e.preventDefault();\n incrementMintAmount();\n }}\n >\n +\n \n \n \n \n {\n e.preventDefault();\n claimNFTs();\n getData();\n }}\n >\n {claimingNft ? \"LOADING\" : \"MINT\"}\n \n \n \n )}\n \n )}\n \n \n \n \n \n \n \n \n Please make sure you are connected to {CONFIG.NETWORK.NAME} Mainnet and the correct address.\n
\n Once you make the purchase, you cannot undo this action.\n \n \n \n \n
\n \n
\n );\n}\n\nexport default App;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./App\";\n// import reportWebVitals from \"./reportWebVitals\";\nimport store from \"./redux/store\";\nimport { Provider } from \"react-redux\";\n// import \"./styles/reset.css\";\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\n// reportWebVitals();\n"],"sourceRoot":""}