{"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","reportWebVitals.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","image","SpacerXSmall","SpacerSmall","SpacerMedium","SpacerLarge","Container","flex","fd","jc","ai","test","TextTitle","p","TextDescription","StyledButton","button","StyledRoundButton","ResponsiveWrapper","StyledLogo","img","StyledImg","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","style","padding","backgroundColor","href","alt","src","borderRadius","border","boxShadow","textAlign","fontSize","fontWeight","color","target","length","substring","margin","onClick","e","window","open","HOME_LINK","HOME","Number","preventDefault","abiResponse","abi","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","transform","width","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.dc91eb4d.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-color: var(--primary);\n background-image: ${({ image }) => (image ? `url(${image})` : \"none\")};\n background-size: cover;\n background-position: center;\n width: 100%;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\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-image: ${({ image }) => (image ? `url(${image})` : \"none\")};\n background-size: cover;\n background-position: center;\n`;\n\nexport const TextTitle = styled.p`\n color: var(--primary-text);\n font-size: 22px;\n font-weight: 500;\n line-height: 1.6;\n`;\n\nexport const TextSubTitle = styled.p`\n color: var(--primary-text);\n font-size: 18px;\n line-height: 1.6;\n`;\n\nexport const TextDescription = styled.p`\n color: var(--primary-text);\n font-size: 16px;\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 padding: 10px;\n border-radius: 50px;\n border: none;\n background-color: var(--secondary);\n padding: 10px;\n font-weight: bold;\n color: var(--secondary-text);\n width: 100px;\n cursor: pointer;\n box-shadow: 0px 6px 0px -2px rgba(250, 250, 250, 0.3);\n -webkit-box-shadow: 0px 6px 0px -2px rgba(250, 250, 250, 0.3);\n -moz-box-shadow: 0px 6px 0px -2px rgba(250, 250, 250, 0.3);\n :active {\n box-shadow: none;\n -webkit-box-shadow: none;\n -moz-box-shadow: none;\n }\n`;\n\nexport const StyledRoundButton = styled.button`\n padding: 10px;\n border-radius: 100%;\n border: none;\n background-color: var(--primary);\n padding: 10px;\n font-weight: bold;\n font-size: 15px;\n color: var(--primary-text);\n width: 30px;\n height: 30px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0px 4px 0px -2px rgba(250, 250, 250, 0.3);\n -webkit-box-shadow: 0px 4px 0px -2px rgba(250, 250, 250, 0.3);\n -moz-box-shadow: 0px 4px 0px -2px rgba(250, 250, 250, 0.3);\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\nexport const StyledLogo = styled.img`\n width: 200px;\n @media (min-width: 767px) {\n width: 300px;\n }\n transition: width 0.5s;\n transition: height 0.5s;\n`;\n\nexport const StyledImg = styled.img`\n box-shadow: 0px 5px 11px 2px rgba(0, 0, 0, 0.7);\n border: 4px dashed var(--secondary);\n background-color: var(--accent);\n border-radius: 100%;\n width: 200px;\n @media (min-width: 900px) {\n width: 250px;\n }\n @media (min-width: 1000px) {\n width: 300px;\n }\n transition: width 0.5s;\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(`Click buy to mint your dragons.`);\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(blockchain.account, 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 this beautiful monster is yours now! `\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 > 50) {\n newMintAmount = 50;\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 \n \n \n \n \n \n \n \n \n \n \n {data.totalSupply} / {CONFIG.MAX_SUPPLY}\n \n \n \n {truncate(CONFIG.CONTRACT_ADDRESS, 15)}\n \n \n \n {\n window.open(CONFIG.HOME_LINK, \"_blank\");\n }}\n >\n {CONFIG.HOME}\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} costs {CONFIG.DISPLAY_COST}{\" \"}\n {CONFIG.NETWORK.SYMBOL}.\n \n \n \n Excluding gas fees.\n \n \n {blockchain.account === \"\" ||\n blockchain.smartContract === null ? (\n \n \n Connect to the {CONFIG.NETWORK.NAME} network\n \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 ? \"BUSY\" : \"BUY\"}\n \n \n >\n )}\n >\n )}\n \n \n \n \n \n \n \n \n \n \n Please make sure you are connected to the right network (\n {CONFIG.NETWORK.NAME} Mainnet) and the correct address. Please note:\n Once you make the purchase, you cannot undo this action.\n \n \n \n We have set the gas limit to {CONFIG.GAS_LIMIT} for the contract to\n successfully mint your NFT. We recommend that you don't lower the\n gas limit.\n \n \n \n After 1000 dragon has been minted price will raise to 0.2 Metis. \n The additional 0.1 metis will be used for marketing (40%) and the \n Dragon Pit game initial Treasury to boost Reward distribution (60%).\n \n \n \n \n );\n}\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\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 App from \"./App\";\nimport reportWebVitals from \"./reportWebVitals\";\nimport store from \"./redux/store\";\nimport { Provider } from \"react-redux\";\nimport \"./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\nreportWebVitals();\n"],"sourceRoot":""}