{"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","TELEGRAM","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","boxShadow","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","width","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.12533897.chunk.js","sourcesContent":["const initialState = {\r\n loading: false,\r\n account: null,\r\n smartContract: null,\r\n web3: null,\r\n errorMsg: \"\",\r\n};\r\n\r\nconst blockchainReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case \"CONNECTION_REQUEST\":\r\n return {\r\n ...initialState,\r\n loading: true,\r\n };\r\n case \"CONNECTION_SUCCESS\":\r\n return {\r\n ...state,\r\n loading: false,\r\n account: action.payload.account,\r\n smartContract: action.payload.smartContract,\r\n web3: action.payload.web3,\r\n };\r\n case \"CONNECTION_FAILED\":\r\n return {\r\n ...initialState,\r\n loading: false,\r\n errorMsg: action.payload,\r\n };\r\n case \"UPDATE_ACCOUNT\":\r\n return {\r\n ...state,\r\n account: action.payload.account,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default blockchainReducer;\r\n","const initialState = {\r\n loading: false,\r\n totalSupply: 0,\r\n cost: 0,\r\n error: false,\r\n errorMsg: \"\",\r\n};\r\n\r\nconst dataReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case \"CHECK_DATA_REQUEST\":\r\n return {\r\n ...state,\r\n loading: true,\r\n error: false,\r\n errorMsg: \"\",\r\n };\r\n case \"CHECK_DATA_SUCCESS\":\r\n return {\r\n ...state,\r\n loading: false,\r\n totalSupply: action.payload.totalSupply,\r\n // cost: action.payload.cost,\r\n error: false,\r\n errorMsg: \"\",\r\n };\r\n case \"CHECK_DATA_FAILED\":\r\n return {\r\n ...initialState,\r\n loading: false,\r\n error: true,\r\n errorMsg: action.payload,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default dataReducer;\r\n","import { applyMiddleware, compose, createStore, combineReducers } from \"redux\";\r\nimport thunk from \"redux-thunk\";\r\nimport blockchainReducer from \"./blockchain/blockchainReducer\";\r\nimport dataReducer from \"./data/dataReducer\";\r\n\r\nconst rootReducer = combineReducers({\r\n blockchain: blockchainReducer,\r\n data: dataReducer,\r\n});\r\n\r\nconst middleware = [thunk];\r\nconst composeEnhancers = compose(applyMiddleware(...middleware));\r\n\r\nconst configureStore = () => {\r\n return createStore(rootReducer, composeEnhancers);\r\n};\r\n\r\nconst store = configureStore();\r\n\r\nexport default store;\r\n","// log\r\nimport store from \"../store\";\r\n\r\nconst fetchDataRequest = () => {\r\n return {\r\n type: \"CHECK_DATA_REQUEST\",\r\n };\r\n};\r\n\r\nconst fetchDataSuccess = (payload) => {\r\n return {\r\n type: \"CHECK_DATA_SUCCESS\",\r\n payload: payload,\r\n };\r\n};\r\n\r\nconst fetchDataFailed = (payload) => {\r\n return {\r\n type: \"CHECK_DATA_FAILED\",\r\n payload: payload,\r\n };\r\n};\r\n\r\nexport const fetchData = () => {\r\n return async (dispatch) => {\r\n dispatch(fetchDataRequest());\r\n try {\r\n let totalSupply = await store\r\n .getState()\r\n .blockchain.smartContract.methods.totalSupply()\r\n .call();\r\n // let cost = await store\r\n // .getState()\r\n // .blockchain.smartContract.methods.cost()\r\n // .call();\r\n\r\n dispatch(\r\n fetchDataSuccess({\r\n totalSupply,\r\n // cost,\r\n })\r\n );\r\n } catch (err) {\r\n console.log(err);\r\n dispatch(fetchDataFailed(\"Could not load data from contract.\"));\r\n }\r\n };\r\n};\r\n","// constants\r\nimport Web3EthContract from \"web3-eth-contract\";\r\nimport Web3 from \"web3\";\r\n// log\r\nimport { fetchData } from \"../data/dataActions\";\r\n\r\nconst connectRequest = () => {\r\n return {\r\n type: \"CONNECTION_REQUEST\",\r\n };\r\n};\r\n\r\nconst connectSuccess = (payload) => {\r\n return {\r\n type: \"CONNECTION_SUCCESS\",\r\n payload: payload,\r\n };\r\n};\r\n\r\nconst connectFailed = (payload) => {\r\n return {\r\n type: \"CONNECTION_FAILED\",\r\n payload: payload,\r\n };\r\n};\r\n\r\nconst updateAccountRequest = (payload) => {\r\n return {\r\n type: \"UPDATE_ACCOUNT\",\r\n payload: payload,\r\n };\r\n};\r\n\r\nexport const connect = () => {\r\n return async (dispatch) => {\r\n dispatch(connectRequest());\r\n const abiResponse = await fetch(\"/config/abi.json\", {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n },\r\n });\r\n const abi = await abiResponse.json();\r\n const configResponse = await fetch(\"/config/config.json\", {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n },\r\n });\r\n const CONFIG = await configResponse.json();\r\n const { ethereum } = window;\r\n const metamaskIsInstalled = ethereum && ethereum.isMetaMask;\r\n if (metamaskIsInstalled) {\r\n Web3EthContract.setProvider(ethereum);\r\n let web3 = new Web3(ethereum);\r\n try {\r\n const accounts = await ethereum.request({\r\n method: \"eth_requestAccounts\",\r\n });\r\n const networkId = await ethereum.request({\r\n method: \"net_version\",\r\n });\r\n if (networkId == CONFIG.NETWORK.ID) {\r\n const SmartContractObj = new Web3EthContract(\r\n abi,\r\n CONFIG.CONTRACT_ADDRESS\r\n );\r\n dispatch(\r\n connectSuccess({\r\n account: accounts[0],\r\n smartContract: SmartContractObj,\r\n web3: web3,\r\n })\r\n );\r\n // Add listeners start\r\n ethereum.on(\"حساب تغییر کرد\", (accounts) => {\r\n dispatch(updateAccount(accounts[0]));\r\n });\r\n ethereum.on(\"بلاکچین تغییر کرد\", () => {\r\n window.location.reload();\r\n });\r\n // Add listeners end\r\n } else {\r\n dispatch(connectFailed(` لطفا شبکه را به ${CONFIG.NETWORK.NAME} تغییر دهید. اپلیکیشن فقط در بلاکچین پالیگان کار می کند.`));\r\n }\r\n } catch (err) {\r\n dispatch(connectFailed(\"مشکلی پیش آمده.\"));\r\n }\r\n } else {\r\n dispatch(connectFailed(\"لطفا متاماسک نصب کنید\"));\r\n }\r\n };\r\n};\r\n\r\nexport const updateAccount = (account) => {\r\n return async (dispatch) => {\r\n dispatch(updateAccountRequest({ account: account }));\r\n dispatch(fetchData(account));\r\n };\r\n};\r\n","import styled from \"styled-components\";\r\n\r\n// Used for wrapping a page component\r\nexport const Screen = styled.div`\r\n background-color: var(--primary);\r\n background-image: ${({ image }) => (image ? `url(${image})` : \"none\")};\r\n background-size: cover;\r\n background-position: center;\r\n width: 100%;\r\n min-height: 100vh;\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\n// Used for providing space between components\r\nexport const SpacerXSmall = styled.div`\r\n height: 8px;\r\n width: 8px;\r\n`;\r\n\r\n// Used for providing space between components\r\nexport const SpacerSmall = styled.div`\r\n height: 16px;\r\n width: 16px;\r\n`;\r\n\r\n// Used for providing space between components\r\nexport const SpacerMedium = styled.div`\r\n height: 24px;\r\n width: 24px;\r\n`;\r\n\r\n// Used for providing space between components\r\nexport const SpacerLarge = styled.div`\r\n height: 32px;\r\n width: 32px;\r\n`;\r\n\r\n// Used for providing a wrapper around a component\r\nexport const Container = styled.div`\r\n display: flex;\r\n flex: ${({ flex }) => (flex ? flex : 0)};\r\n flex-direction: ${({ fd }) => (fd ? fd : \"column\")};\r\n justify-content: ${({ jc }) => (jc ? jc : \"flex-start\")};\r\n align-items: ${({ ai }) => (ai ? ai : \"flex-start\")};\r\n background-color: ${({ test }) => (test ? \"pink\" : \"none\")};\r\n width: 100%;\r\n background-image: ${({ image }) => (image ? `url(${image})` : \"none\")};\r\n background-size: cover;\r\n background-position: center;\r\n`;\r\n\r\nexport const TextTitle = styled.p`\r\n color: var(--primary-text);\r\n font-size: 22px;\r\n font-weight: 500;\r\n line-height: 1.6;\r\n`;\r\n\r\nexport const TextSubTitle = styled.p`\r\n color: var(--primary-text);\r\n font-size: 18px;\r\n line-height: 1.6;\r\n`;\r\n\r\nexport const TextDescription = styled.p`\r\n color: var(--primary-text);\r\n font-size: 16px;\r\n line-height: 1.6;\r\n`;\r\n\r\nexport const StyledClickable = styled.div`\r\n :active {\r\n opacity: 0.6;\r\n }\r\n`;\r\n","import React, { useEffect, useState, useRef } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { connect } from \"./redux/blockchain/blockchainActions\";\r\nimport { fetchData } from \"./redux/data/dataActions\";\r\nimport * as s from \"./styles/globalStyles\";\r\nimport styled from \"styled-components\";\r\n\r\nconst truncate = (input, len) =>\r\n input.length > len ? `${input.substring(0, len)}...` : input;\r\n\r\nexport const StyledButton = styled.button`\r\n padding: 10px;\r\n border-radius: 50px;\r\n border: none;\r\n background-color: var(--secondary);\r\n padding: 10px;\r\n font-weight: bold;\r\n color: var(--secondary-text);\r\n width: 100px;\r\n cursor: pointer;\r\n box-shadow: 0px 6px 0px -2px rgba(250, 250, 250, 0.3);\r\n -webkit-box-shadow: 0px 6px 0px -2px rgba(250, 250, 250, 0.3);\r\n -moz-box-shadow: 0px 6px 0px -2px rgba(250, 250, 250, 0.3);\r\n :active {\r\n box-shadow: none;\r\n -webkit-box-shadow: none;\r\n -moz-box-shadow: none;\r\n }\r\n`;\r\n\r\nexport const StyledRoundButton = styled.button`\r\n padding: 10px;\r\n border-radius: 100%;\r\n border: none;\r\n background-color: var(--primary);\r\n padding: 10px;\r\n font-weight: bold;\r\n font-size: 35px;\r\n color: var(--primary-text);\r\n width: 30px;\r\n height: 30px;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n box-shadow: 0px 4px 0px -2px rgba(250, 250, 250, 0.3);\r\n -webkit-box-shadow: 0px 4px 0px -2px rgba(250, 250, 250, 0.3);\r\n -moz-box-shadow: 0px 4px 0px -2px rgba(250, 250, 250, 0.3);\r\n :active {\r\n box-shadow: none;\r\n -webkit-box-shadow: none;\r\n -moz-box-shadow: none;\r\n }\r\n`;\r\n\r\nexport const ResponsiveWrapper = styled.div`\r\n display: flex;\r\n flex: 1;\r\n flex-direction: column;\r\n justify-content: stretched;\r\n align-items: stretched;\r\n width: 100%;\r\n @media (min-width: 767px) {\r\n flex-direction: row;\r\n }\r\n`;\r\n\r\nexport const StyledLogo = styled.img`\r\n width: 200px;\r\n @media (min-width: 767px) {\r\n width: 300px;\r\n }\r\n transition: width 0.5s;\r\n transition: height 0.5s;\r\n`;\r\n\r\nexport const StyledImg = styled.img`\r\n box-shadow: 0px 5px 11px 2px rgba(0, 0, 0, 0.7);\r\n border: 4px dashed var(--secondary);\r\n background-color: var(--accent);\r\n border-radius: 100%;\r\n width: 200px;\r\n @media (min-width: 900px) {\r\n width: 250px;\r\n }\r\n @media (min-width: 1000px) {\r\n width: 300px;\r\n }\r\n transition: width 0.5s;\r\n`;\r\n\r\nexport const StyledLink = styled.a`\r\n color: var(--secondary);\r\n text-decoration: none;\r\n`;\r\n\r\nfunction App() {\r\n const dispatch = useDispatch();\r\n const blockchain = useSelector((state) => state.blockchain);\r\n const data = useSelector((state) => state.data);\r\n const [claimingNft, setClaimingNft] = useState(false);\r\n const [feedback, setFeedback] = useState(`برای خرید (NFT) خود کلیک کنید`);\r\n const [mintAmount, setMintAmount] = useState(1);\r\n const [CONFIG, SET_CONFIG] = useState({\r\n CONTRACT_ADDRESS: \"\",\r\n SCAN_LINK: \"\",\r\n NETWORK: {\r\n NAME: \"\",\r\n SYMBOL: \"\",\r\n ID: 0,\r\n },\r\n NFT_NAME: \"\",\r\n TELEGRAM: \"\",\r\n SYMBOL: \"\",\r\n MAX_SUPPLY: 1,\r\n WEI_COST: 0,\r\n DISPLAY_COST: 0,\r\n GAS_LIMIT: 0,\r\n MARKETPLACE: \"\",\r\n MARKETPLACE_LINK: \"\",\r\n SHOW_BACKGROUND: false,\r\n });\r\n\r\n const claimNFTs = () => {\r\n let cost = CONFIG.WEI_COST;\r\n let gasLimit = CONFIG.GAS_LIMIT;\r\n let totalCostWei = String(cost * mintAmount);\r\n let totalGasLimit = String(gasLimit * mintAmount);\r\n console.log(\"هزینه انتشار: \", totalCostWei);\r\n console.log(\"محدوده گاز: \", totalGasLimit);\r\n setFeedback(` در حال انتشار ${CONFIG.NFT_NAME}`);\r\n setClaimingNft(true);\r\n blockchain.smartContract.methods\r\n .mint(mintAmount)\r\n .send({\r\n gasLimit: String(totalGasLimit),\r\n to: CONFIG.CONTRACT_ADDRESS,\r\n from: blockchain.account,\r\n value: totalCostWei,\r\n })\r\n .once(\"خطا\", (err) => {\r\n console.log(err);\r\n setFeedback(\"متاسفانه خطایی رخ داده لطفا دوباره تلاش کنید.\");\r\n setClaimingNft(false);\r\n })\r\n .then((receipt) => {\r\n console.log(receipt);\r\n setFeedback(\r\n `شما در${CONFIG.NFT_NAME} یک توکن (NFT) منتشر کردید برای مشاهده آن به سایت opensea.io بروید `\r\n );\r\n setClaimingNft(false);\r\n dispatch(fetchData(blockchain.account));\r\n });\r\n };\r\n\r\n const decrementMintAmount = () => {\r\n let newMintAmount = mintAmount - 1;\r\n if (newMintAmount < 1) {\r\n newMintAmount = 1;\r\n }\r\n setMintAmount(newMintAmount);\r\n };\r\n\r\n const incrementMintAmount = () => {\r\n let newMintAmount = mintAmount + 1;\r\n if (newMintAmount > 10) {\r\n newMintAmount = 10;\r\n }\r\n setMintAmount(newMintAmount);\r\n };\r\n\r\n const getData = () => {\r\n if (blockchain.account !== \"\" && blockchain.smartContract !== null) {\r\n dispatch(fetchData(blockchain.account));\r\n }\r\n };\r\n\r\n const getConfig = async () => {\r\n const configResponse = await fetch(\"/config/config.json\", {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n },\r\n });\r\n const config = await configResponse.json();\r\n SET_CONFIG(config);\r\n };\r\n\r\n useEffect(() => {\r\n getConfig();\r\n });\r\n\r\n useEffect(() => {\r\n getData();\r\n }, [blockchain.account]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {CONFIG.MAX_SUPPLY} / {data.totalSupply} \r\n \r\n \r\n \r\n {truncate(CONFIG.CONTRACT_ADDRESS, 15)}\r\n \r\n \r\n \r\n {Number(data.totalSupply) >= CONFIG.MAX_SUPPLY ? (\r\n <>\r\n \r\n The sale has ended.\r\n \r\n \r\n You can still find {CONFIG.NFT_NAME} on\r\n \r\n \r\n \r\n {CONFIG.MARKETPLACE}\r\n \r\n >\r\n ) : (\r\n <>\r\n \r\n هر {CONFIG.SYMBOL} میشه {\" \"}\r\n {CONFIG.NETWORK.SYMBOL}{\" \"}{CONFIG.DISPLAY_COST}\r\n \r\n \r\n \r\n به علاوه هزینه گاز \r\n \r\n \r\n {blockchain.account === \"\" ||\r\n blockchain.smartContract === null ? (\r\n \r\n \r\n کیف رمزارز خود را به شبکه {CONFIG.NETWORK.NAME} متصل کنید\r\n \r\n \r\n {\r\n e.preventDefault();\r\n dispatch(connect());\r\n getData();\r\n }}\r\n >\r\n اتصال به والت\r\n \r\n {blockchain.errorMsg !== \"\" ? (\r\n <>\r\n \r\n \r\n {blockchain.errorMsg}\r\n \r\n >\r\n ) : null}\r\n \r\n ) : (\r\n <>\r\n \r\n {feedback}\r\n \r\n \r\n \r\n {\r\n e.preventDefault();\r\n decrementMintAmount();\r\n }}\r\n >\r\n -\r\n \r\n \r\n \r\n {mintAmount}\r\n \r\n \r\n {\r\n e.preventDefault();\r\n incrementMintAmount();\r\n }}\r\n >\r\n +\r\n \r\n \r\n \r\n \r\n {\r\n e.preventDefault();\r\n claimNFTs();\r\n getData();\r\n }}\r\n >\r\n {claimingNft ? \"در حال اجرا\" : \"خرید\"}\r\n \r\n \r\n >\r\n )}\r\n >\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ویدیوی آموزشی در کانال تلگرام ما در آدرس ( {CONFIG.TELEGRAM}) موجود است. شما می توانید سایر محصولات ما را در سایت (Opensea.io) به آدرس {CONFIG.MARKETPLACE_LINK} مشاهده کنید. \r\n \r\n \r\n \r\n ما برای آسودگی شما محدوده گاز را در {CONFIG.GAS_LIMIT} تنظیم کرده ایم. شما می توانید برای تسریع آن را افزایش دهید. پیش از خرید به آدرس قرارداد و علامت (https) توجه کنید. هزینه خرید یک توکن ماتیک می باشد و چنانچه در کیف رمزارز مبلغ دیگری دیدید تراکنش را نپذیرید. برای پشتیبانی به وبسایت کریپتو یار و گروه تلگرامی ما مراجعه کنید. به آیدی \r\n@IsaacMoss\r\n\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","const reportWebVitals = onPerfEntry => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport App from \"./App\";\r\nimport reportWebVitals from \"./reportWebVitals\";\r\nimport store from \"./redux/store\";\r\nimport { Provider } from \"react-redux\";\r\nimport \"./styles/reset.css\";\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}