{"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","Link","Icon32","img","MarginRight16","StyledButton","button","StyledRoundButton","ResponsiveWrapper","StyledLogo","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","alt","src","borderRadius","border","textAlign","fontSize","fontWeight","color","target","href","length","substring","Number","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","transform","maxWidth","width","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.410720f2.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\nexport const Link = styled.a`\n color: var(--secondary)\n`;\n\nexport const Icon32 = styled.img`\n display: inline-block;\n width: 32px;\n height: 32px;\n :last-of-type {\n margin: 0;\n }\n`;\n\nexport const MarginRight16 = styled.div`\n margin-right: 16px;\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 }\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 }\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 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 NFT`);\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! 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 > 20) {\n newMintAmount = 20;\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 {data.totalSupply} / {CONFIG.MAX_SUPPLY}\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} 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 Own one of 4,888 Dumpling Mafia membership NFTs, created by artist {Narrator} and inspired by two-time Top Chef finalist {Shirley Chung’s progressive Chinese-American food}. Now you can be part of the Dumpling Mafia dining group started by Chung, {Andy Wang} and {Caryl Chinn}. Dumpling Mafia members will be invited to a virtual Lunar New Year event with Chung and an auction of special NFT art to benefit #StopAsianHate organizations. Members will also be entered into drawings for giveaways and in-person parties with food from Chung. Find us on Instagram at {@dumplingmafianft} for updates.\n \n \n \n \n \n We have set the gas limit to 180,000 for the contract to successfully mint your NFT. We recommend that you don't lower the gas limit. You will only pay for the gas you actually use. Dumplings will be revealed Tuesday, November 9, 2021.\n \n \n {/* \n \n \n Make sure you are connected to the right network (\n {CONFIG.NETWORK.NAME} Mainnet) and are using the correct address. Once you make the purchase, you cannot undo this action.\n \n */}\n \n \n \n Powered by {Coin Cloud}. Find a Crypto ATM near you to purchase Ethereum.\n \n \n \n \n \n \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":""}