{"version":3,"sources":["data.js","context/AppProvider.js","assets/images/logo.png","components/Logo.jsx","components/StyledLoadingButton/StyledLoadingButton.jsx","containers/Navbar.jsx","assets/images/features/teal/connectWallet.png","components/FeatureItem/FeatureItem.jsx","assets/images/features/teal/customCollections.png","assets/images/features/teal/decentralizedStorage.png","assets/images/features/teal/nonCustodial.png","assets/images/features/teal/zeroFees.png","components/FeatureCard/FeatureCard.jsx","components/FeatureCard/FeatureCardBtn.jsx","containers/Home/FeaturesContainer.jsx","containers/MailchimpFormContainer.jsx","containers/SocialMediaLinks.jsx","assets/logos/dlLogo.png","containers/Footer.jsx","assets/images/heroImage.png","containers/Hero.jsx","components/DoubleBar.jsx","pages/Home.jsx","components/SaleCard.jsx","config.js","assets/icons/iotex.png","helpers/stringUtilities.js","components/Marketplace/MarketplaceItemCard/MarketplaceItemCard.jsx","components/Loading.jsx","utils/arrayMethods.js","pages/Marketplace.jsx","pages/Sale.jsx","components/MintBoard/styles.js","components/MintBoard/MintBoard.jsx","components/NFTSale/styles.js","components/NFTSale/Hero.jsx","components/NFTSale/NFTSaleHeader/NFTSaleHeader.jsx","components/NFTSale/NFTSaleHeader/Statistics/Statistic/styles.js","components/NFTSale/NFTSaleHeader/Statistics/Statistic/Statistic.jsx","components/NFTSale/NFTSaleHeader/Statistics/Statistics.jsx","pages/NFTSale.jsx","pages/AboutUs.jsx","components/StatCard.jsx","components/Marketplace/MarketplaceSaleHeader/styles.js","components/InfoBox.jsx","containers/InfoContainer.jsx","containers/MarketplaceItems.jsx","pages/MarketplaceSale.jsx","components/OwnedNFTCard.jsx","components/SellModal/SellModal.jsx","components/HeadingError.jsx","containers/MyAssets/Owned.jsx","components/BidInfoBar.jsx","containers/MyAssets/Offers.jsx","assets/images/image404.jpg","components/OwnedOnSaleNFTCard.jsx","containers/MyAssets/OnSale.jsx","pages/MyAssets.jsx","components/NFTCard/NFTCard.jsx","pages/NFTAsset.jsx","components/TransferModal/TransferModal.jsx","components/Attributes/Attribute/styles.js","components/Marketplace/MarketplaceItemSale/OnSaleInfo.jsx","components/Marketplace/MarketplaceItemSale/AttributeBar.jsx","containers/Marketplace/AttributeBarContainer.jsx","pages/NFT.jsx","pages/Error.jsx","assets/images/create/envelope.png","components/CreateForm/FormSuccessModal.jsx","components/CreateForm/CreateForm.jsx","pages/Create.jsx","components/Sidebar/Sidebar.jsx","components/Marketplace/MarketplaceItemSale/OnSaleBids.jsx","components/MakeOfferModal/MakeOfferModal.jsx","pages/MarketplaceSaleItem.jsx","containers/Modals/Modal.jsx","App.jsx","theme.js","index.js"],"names":["contractAddress","name","tokenName","shortDescription","longDescription","homePageBanner","nftSaleBanner","circularThumbnail","cardImage","abi","IotexPanda","MutantApeYachtClub","AppContext","React","createContext","AppProvider","children","useState","initProvider","initPandaContract","initMarketContract","isMetaMask","setIsMetaMask","loadState","setLoadState","userAccount","setUserAccount","networkChainId","setNetworkChainId","iotexUsdRate","setIotexUsdRate","showSidebar","setShowSidebar","visible","notification","sell","makeOffer","showModal","setShowModal","allNFTs","setAllNFTs","nftOnSaleDetails","setNftOnSaleDetails","globalProvider","setGlobalProvider","requiredNftName","setRequiredNftName","requiredNFT","setRequiredNFT","currentUserOwnedNFTs","setCurrentUserOwnedNFTs","loading","purpose","loadingMessage","heading","subHeading","loadedMessage","type","primaryBtn","text","secondaryBtn","link","notificationModalState","setNotificationModalState","tokenId","price","buttonText","handleApprove","handleSell","errorMsg","approveSellModalState","setApproveSellModalState","makeOfferModalState","setMakeOfferModalState","useEffect","iotexToUsd","a","console","log","Error","length","nft","find","NFT","getRequiredNft","fetchTeamNFTs","teamNFTs","sessionStorage","setItem","JSON","stringify","getUserOwnedNFTs","result","Promise","all","map","provider","ethers","providers","JsonRpcProvider","ABI","contract","Contract","walletOfOwner","tokenIDs","filter","data","handleChainChanged","_chainId","chId","parseInt","checkProvider","detectEthereumProvider","request","method","chainId","on","checkMetaMask","initializeProvider","window","ethereum","removeItem","error","Object","keys","accountChangeListener","accounts","account","getItem","connectWallet","clear","Provider","value","styled","theMessage","toast","success","position","autoClose","hideProgressBar","closeOnClick","pauseOnHover","draggable","progress","undefined","useStyles","makeStyles","theme","wrapper","display","alignItems","iotexart","justifyContent","fontFamily","fontStyle","fontWeight","fontSize","lineHeight","color","logoWrapper","height","width","marginRight","logo","objecFit","Logo","classes","className","src","alt","Typography","variant","align","dot","Button","button","props","styleObj","bgColor","fontColor","shadowColor","hoverFontColor","bgColorHover","shadowColorHover","icon","secondaryIcon","StyledLoadingButton","buttonTextLoaded","buttonTextLoading","clickFunction","connect","buttonState","setButtonState","handleClick","onClick","toString","disabled","style","substring","NAV_LINKS","id","to","linkText","NETWORK_CONFIG","chainName","currencyName","rpcUrl","explorerUrl","symbol","container","top","left","zIndex","borderBottom","navbarCrop","overflow","blurredBg","bottom","background","redBackDrop","opacity","border","appbar","padding","minHeight","minWidth","flexDirection","boxShadow","grow","flex","blankSpace","breakpoints","down","navItemsWrapper","linkWrapper","transition","listStyle","buttonGroup","right","outline","cursor","visited","borderRadius","textTransform","marginTop","walletBtn","hamburger","hamburgerIcon","transform","topMsg","Navbar","loc","useLocation","useContext","setupNetwork","config","params","nativeCurrency","decimals","rpcUrls","blockExplorerUrls","margin","textDecoration","href","target","rel","navLink","pathname","includes","prevState","paddingTop","iconImg","cardInfo","caption","marginBottom","description","bottomLine","contentWrapper","paddingBottom","info","FeatureCard","marginLeft","bgGradient","features","customCollections","zeroFees","nonCustodial","decentralizedStorage","placeItems","gridTemplateColumns","gap","FeaturesContainer","feature","card","FeatureCardBtn","CustomForm","status","message","onValidated","userMail","setUserMail","toastMsg","msg","warn","handleSubmit","e","preventDefault","String","toLowerCase","match","MERGE0","newestOnTop","rtl","pauseOnFocusLoss","onSubmit","htmlFor","placeholder","required","onChange","trim","dangerouslySetInnerHTML","__html","MailchimpFormContainer","mailchimpU","process","REACT_APP_MAILCHIMP_U","mailchimpID","REACT_APP_MAILCHIMP_ID","postUrl","url","render","subscribe","formData","linkContainer","SocialMediaLinks","innerContainer","dlLogoContainer","dlLogo","objectFit","mainContent","desc","textAlign","Footer","center","hero","animation","intro","welcome","introduction","primary","secondary","heroImageWrapper","heroImage","Hero","barOne","barTwo","DoubleBar","Home","maxWidth","cardContent","letterSpacing","letterSpace","cardActions","cardTitle","Card","div","CardMedia","CardContent","SaleCard","imgLink","nftName","nftDesc","nftMarketContractAddress","shortifyContractAddress","address","startingLetters","endingLetters","expirationCalculator","expiresAtInSeconds","timeDiff","Math","floor","Date","getTime","Web3","imageContainer","tokenImage","detailContainer","detail","asterix","btn","acceptBtn","delistBtn","linkBtn","displayCenterButton","delist","iconWrapper","MarketplaceItemCard","buyNow","acceptOffer","nftContract","itemId","seller","maxBidData","bidId","bidder","topBid","offerPrice","history","useHistory","useParams","handleAcceptOffer","stopPropagation","handleBuy","handleDelist","push","sx","iotexIcon","animationWrapper","attrWrapper","Loading","removeDuplicates","seen","out","len","j","i","item","web3","root","spacing","captionContainer","Marketplace","loadingState","setLoadingState","currentListedNFTs","setCurrentListedNFTs","loadListedNFTs","marketContract","eth","NFTMarket","methods","fetchMarketItems","call","nftContractsListed","d","parse","finalList","indexOf","Grid","xs","sm","md","Sale","mintBoard","mintButton","MintBoard","mintPanda","maxHeight","borderTopLeftRadius","borderTopRightRadius","image","imageUrl","NFTSaleHeader","gutterBottom","Statistic","stat","statsGrid","textContainer","label","Statistics","stats","total","available","sold","IOTEX_RPC_URL","NFTSale","currentNFT","setCurrentNFT","setStats","getStats","maxSupply","toLocaleString","availableTokenCount","getTokenPrice","utils","formatUnits","totalSupply","supply","mint","signer","buy","send","from","receipt","errorSubHeading","errorObj","code","toolbar","AboutUs","paragraph","gridContainer","gridItem","middleImage","iconImage","statContainer","figure","StatCard","iconAlt","infoBoxContainer","circularImageWrapper","circularImage","infoBox","creator","InfoBox","header","descContainer","infoContainer","statBoxes","InfoContainer","numOfOwners","iotxIcon","floorPrice","nftCards","MarketplaceItems","nfts","loadingContainer","filterWrapper","borderLeft","borderTop","saleWrapper","headerWrapper","saleCardWrapper","sortWrapper","MarketplaceSale","cardsLoadingState","setCardsLoadingState","setNfts","singleNFT","tokenContract","fetchItemsCreated","tokenURI","tokenUri","axios","get","meta","getMaxBid","owner","removedFromMarketplace","items","owners","Set","min","bidsByItemId","latestBidData","currentTimestamp","bidDetails","bidDatum","fromWei","usdPrice","expiresAt","bidID","toFixed","enable","weiPrice","toWei","createMarketSale","web3Modal","Web3Modal","connection","Web3Provider","getSigner","transaction","wait","cancelSale","size","BLOCK_EXPLORER_URL","btnContainer","borderBottomRightRadius","borderBottomLeftRadius","OwnedNFTCard","modalButtonEnabled","modalButtonDisabled","progressContainer","gradientProgressBar","gradientProgressBarReverse","circle","circleDisabled","Container","ModalBox","Wrapper","Price","input","ActionForm","form","ModalBg","CloseBtn","SellModal","sellState","buttonType","nftMarketplaceAddress","approve","setSellState","nftId","step","headingContainer","HeadingError","errorMessage","justifyItems","Owned","ownerNfts","showSellModal","setShowSellModal","contractInstance","getMarketplaceShare","listingFees","formatEther","parseUnits","handleApproveSell","isApproved","isApprovedForAll","ownerNft","bidInfoContainer","cancelBtn","bidInfo","rowDetails","textData","greyText","BidInfoBar","bidData","stillOnSale","notInMarketPlace","cancelBid","handleBidCancel","offerPaginationBtnGroup","leftBtn","rightBtn","bidInfoList","Offers","sortedActiveBids","sortedExpiredBids","getOwnerOffersMade","offersPage","setOffersPage","activeBid","expiredBid","OwnedOnSaleNFTCard","OnSale","userItemsOnSale","getOwnerItemsOnSale","onSaleNft","imageNotFound","profileContainer","profile","profileThumbnail","carousel","carouselBtn","carouselBtnVisited","MyAssets","loadingAssets","setLoadingAssets","setOwnerNfts","activeBids","expiredBids","setUserOffersMade","setSortedActiveBids","setSortedExpiredBids","setUserItemsOnSale","carouselPage","setCarouselPage","ownedNftContractAddresses","assetList","tokenID","asset","edition","imageUri","assets","mContract","fetchMarketItemsbyUser","response","rpcProvider","nftItemId","nftPrice","nftTokenId","nftImageUri","itemOnSale","onSaleData","getBidData","localActiveBids","idToMarketItem","saleExpiry","activeItem","localExpiredBids","expiredItem","then","CardActions","NFTCard","myAsset","minheight","dontOwnContainer","dontOwn","NFTAsset","myAssets","setMyAssets","updatedImagURI","getOwnerAssets","showTransferModal","Address","TransferModal","transferState","transferTo","transferFrom","transfer","setTransferState","setShowTransferModal","table","paddingLeft","externalLinkBtn","OnSaleInfo","trait","AttributeBar","trait_type","AttributeBarContainer","attributes","detailsContainer","nftInfo","saleInfo","headingWrapper","backBtn","actionWrapper","ownerWrapper","ownerThumbnailWrapper","ownerThumbnail","visitedLink","priceWrapper","iotxPrice","buyNowBtn","makeOfferBtn","setNft","nftLoading","setNftLoading","linkDetail","setLinkDetail","getNft","allNFTS","addressValid","toChecksumAddress","handleTransfer","goBack","ThumbUpAlt","LayersClear","FormSuccessModal","onClose","envelope","CreateForm","Twitter","Telegram","preferredContactRender","setPreferredContactRender","preferredContactRadioButtonSelect","sendEmail","emailjs","sendForm","reset","role","class","for","verticalAlign","autocomplete","maxlength","Create","backgroundColor","SidebarDiv","TopBar","LinkContainer","LinkStyled","Sidebar","bidDataContainer","OnSaleBids","columns","Header","accessor","val","expiresInDropDown","MakeOfferModal","makeOfferState","expiresIn","setMakeOfferState","handleMakeOffer","handlePriceInput","MarketplaceSaleItem","nftOnSaleDetailsLoading","setNftOnSaleDetailsLoading","setBidData","showMakeOfferModal","setShowMakeOfferModal","getNftOnSaleDetails","iid","getBids","sortedBidData","unshift","MIN_BID_DURATION","minBidDuration","MAX_BID_DURATION","maxBidDuration","priceInput","expiresInDays","expiresInInput","bidPriceArray","highestBid","reduce","acc","placeBid","AccountBalanceWallet","LocalOffer","ModalContent","Icons","ButtonContainer","twoButtons","modal","icons","heading1","heading2","Modal","notificationModalInitialState","approveSellModalInitialState","handleCloseModal","setTimeout","Notification","CheckCircleOutline","HighlightOff","App","exact","path","component","createTheme","typography","palette","main","values","lg","xl","ReactDOM","ThemeProvider","document","getElementById"],"mappings":"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","file":"static/js/main.dcaf0b05.chunk.js","sourcesContent":["import IotexPanda from \"./artifacts/contracts/IotexPanda.sol/IotexPanda.json\";\nimport MutantApeYachtClub from \"./artifacts/contracts/MutantApeYachtClub.sol/MutantApeYachtClub.json\";\n\nexport default [\n {\n contractAddress: \"0x6923850A0E9A7De9a03Af6faE379e934821fBc09\",\n name: \"IOTEX PANDA\",\n tokenName: \"PANDA\",\n shortDescription:\n \"Get your bamboos out! It's gonna be a rumble in the jungle with the wild and crazy Iotex Pandas!\",\n longDescription:\n \"There are total of unique 2550 Panda art. Each Panda image is 24*24 pixel art form. Panda Dynasty is the first decentralized treasure hunt game. Being a panda holder gives you the right to participate to the quest, to play new games every week, to earn new NFTs and to get a chance to win a part of the treasure chest :moneybag:.\",\n homePageBanner:\n \"https://storageapi.fleek.co/2728e612-c7f1-4fbe-a4f7-1751f7b0a6ae-bucket/SlideShow/devil vamp max character.png\",\n nftSaleBanner:\n \"https://storageapi.fleek.co/2728e612-c7f1-4fbe-a4f7-1751f7b0a6ae-bucket/Banner/banner-3.png\", //1200*200\n circularThumbnail:\n \"https://storageapi.fleek.co/2728e612-c7f1-4fbe-a4f7-1751f7b0a6ae-bucket/Banner/7095.png\", //100*100\n cardImage:\n \"https://storageapi.fleek.co/2728e612-c7f1-4fbe-a4f7-1751f7b0a6ae-bucket/Banner/card-image-2-png.png\", //350*200\n abi: IotexPanda,\n },\n {\n contractAddress: \"0xc55e426cc38a6Bb98C45F44B682E25C5e4f80171\",\n name: \"MUTANT APE YACHT CLUB\",\n tokenName: \"APE\",\n shortDescription:\n \"The coolest club perhaps on the planet Earth itself. Legend says, these apes are descendents of Unity!\",\n longDescription:\n \"Who doesn't WANNA PANDA? Wanna Panda is a collection of 10,000 NFTs inspired by art, comic and global cultures down to the smallest details.\",\n homePageBanner:\n \"https://storageapi.fleek.co/2728e612-c7f1-4fbe-a4f7-1751f7b0a6ae-bucket/SlideShow/devil vamp max character_1.png\",\n nftSaleBanner:\n \"https://storageapi.fleek.co/2728e612-c7f1-4fbe-a4f7-1751f7b0a6ae-bucket/Banner/banner-4.png\",\n circularThumbnail:\n \"https://storageapi.fleek.co/2728e612-c7f1-4fbe-a4f7-1751f7b0a6ae-bucket/Banner/7095.png\",\n cardImage:\n \"https://storageapi.fleek.co/2728e612-c7f1-4fbe-a4f7-1751f7b0a6ae-bucket/Banner/card image 2.jpg\",\n abi: MutantApeYachtClub,\n },\n];\n\n// export default [\n// {\n// \"contractAddress\": \"0x85e0eAdBc66EA4d8637d82d04e7b61E471533dA3\",\n// \"name\": \"IOTEX PANDA\",\n// \"shortDescription\": \"Get your bamboos out! It's gonna be a rumble in the jungle with the wild and crazy Iotex Pandas!\",\n// \"longDescription\": \"There are total of unique 2550 Panda art. Each Panda image is 24*24 pixel art form. Panda Dynasty is the first decentralized treasure hunt game. Being a panda holder gives you the right to participate to the quest, to play new games every week, to earn new NFTs and to get a chance to win a part of the treasure chest :moneybag:.\",\n// \"homepageBanner\": [\"https://source.unsplash.com/random\", \"https://source.unsplash.com/random\"],\n// \"nftSaleBanner\": \"https://source.unsplash.com/random\",\n// \"circularThumbnail\": \"https://picsum.photos/200\",\n// \"cardImage\": \"https://source.unsplash.com/random\",\n// \"abi\": IotexPanda,\n// },\n// {\n// \"contractAddress\": \"0xc55e426cc38a6Bb98C45F44B682E25C5e4f80171\",\n// \"name\": \"MUTANT APE YACHT CLUB\",\n// \"shortDescription\": \"The coolest club perhaps on the planet Earth itself. Legend says, these apes are descendents of Unity!\",\n// \"longDescription\": \"There are total of unique 2550 MAYC art. Each MAYC image is 24*24 pixel art form. MAYC Dynasty is the first decentralized treasure hunt game. Being a MAYC holder gives you the right to participate to the quest, to play new games every week, to earn new NFTs and to get a chance to win a part of the treasure chest :moneybag:.\",\n// \"homepageBanner\": [\"https://source.unsplash.com/random\", \"https://source.unsplash.com/random\"],\n// \"nftSaleBanner\": \"https://source.unsplash.com/random\",\n// \"circularThumbnail\": \"https://picsum.photos/200\",\n// \"cardImage\": \"https://source.unsplash.com/random\",\n// \"abi\": MutantApeYachtClub,\n// },\n// {\n// \"contractAddress\": \"0xc55e426cc38a6Bb98C45F44B682E25C5e4f80171\",\n// \"name\": \"Hunters\",\n// \"shortDescription\": \"The coolest club perhaps on the planet Earth itself. Legend says, these apes are descendents of Unity!\",\n// \"longDescription\": \"There are total of unique 2550 MAYC art. Each MAYC image is 24*24 pixel art form. MAYC Dynasty is the first decentralized treasure hunt game. Being a MAYC holder gives you the right to participate to the quest, to play new games every week, to earn new NFTs and to get a chance to win a part of the treasure chest :moneybag:.\",\n// \"homepageBanner\": [\"https://source.unsplash.com/random\", \"https://source.unsplash.com/random\"],\n// \"nftSaleBanner\": \"https://source.unsplash.com/random\",\n// \"circularThumbnail\": \"https://picsum.photos/200\",\n// \"cardImage\": \"https://source.unsplash.com/random\",\n// \"abi\": MutantApeYachtClub,\n// },\n// {\n// \"contractAddress\": \"0xc55e426cc38a6Bb98C45F44B682E25C5e4f80171\",\n// \"name\": \"Devils\",\n// \"shortDescription\": \"The coolest club perhaps on the planet Earth itself. Legend says, these apes are descendents of Unity!\",\n// \"longDescription\": \"There are total of unique 2550 MAYC art. Each MAYC image is 24*24 pixel art form. MAYC Dynasty is the first decentralized treasure hunt game. Being a MAYC holder gives you the right to participate to the quest, to play new games every week, to earn new NFTs and to get a chance to win a part of the treasure chest :moneybag:.\",\n// \"homepageBanner\": [\"https://source.unsplash.com/random\", \"https://source.unsplash.com/random\"],\n// \"nftSaleBanner\": \"https://source.unsplash.com/random\",\n// \"circularThumbnail\": \"https://picsum.photos/200\",\n// \"cardImage\": \"https://source.unsplash.com/random\",\n// \"abi\": MutantApeYachtClub,\n// },\n// ]\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { ethers } from \"ethers\";\nimport axios from \"axios\";\n\nimport { styled } from \"../styles/styledComponent\";\n\n// import { iotexPandaContractAddress, nftMarketContractAddress } from \"../config\";\n// import IotexPanda from \"../artifacts/contracts/IotexPanda.sol/IotexPanda.json\";\n// import NFTMarket from \"../artifacts/contracts/NFTMarket.sol/NFTMarket.json\";\n\nimport detectEthereumProvider from \"@metamask/detect-provider\";\nimport { toast } from \"react-toastify\";\nimport \"react-toastify/dist/ReactToastify.css\";\n\nimport teamNFTs from \"../data\";\n\nexport const AppContext = React.createContext();\n\nconst AppProvider = ({ children }) => {\n const [initProvider, setInitProvider] = useState({});\n const [initPandaContract, setInitPandaContract] = useState({});\n const [initMarketContract, setInitMarketContract] = useState({});\n\n const [isMetaMask, setIsMetaMask] = useState(false);\n\n const [loadState, setLoadState] = useState(false);\n const [userAccount, setUserAccount] = useState(\"\");\n\n const [networkChainId, setNetworkChainId] = useState(-1);\n\n const [iotexUsdRate, setIotexUsdRate] = useState(0);\n\n const [showSidebar, setShowSidebar] = useState(false);\n const [showModal, setShowModal] = useState({\n visible: false,\n notification: false,\n sell: false,\n makeOffer: false,\n });\n\n const [allNFTs, setAllNFTs] = useState([]);\n\n const [nftOnSaleDetails, setNftOnSaleDetails] = useState({});\n\n const [globalProvider, setGlobalProvider] = useState(null);\n // const [globalMarketplaceContract, setGlobalMarketplaceContract] =\n // useState(null);\n const [globalNftContractInstances, setGlobalNftContractInstances] = useState(\n []\n );\n\n const [requiredNftName, setRequiredNftName] = useState(null);\n const [requiredNFT, setRequiredNFT] = useState({});\n\n const [currentUserOwnedNFTs, setCurrentUserOwnedNFTs] = useState([]);\n\n const [notificationModalState, setNotificationModalState] = useState({\n loading: true,\n purpose: \"\",\n loadingMessage: {\n heading: \"\",\n subHeading: \"\",\n },\n loadedMessage: {\n heading: \"\",\n subHeading: \"\",\n },\n type: \"\",\n primaryBtn: {\n text: \"OK\",\n },\n secondaryBtn: {\n visible: false,\n text: \"\",\n link: \"\",\n },\n });\n\n const [approveSellModalState, setApproveSellModalState] = useState({\n purpose: \"\",\n tokenId: \"\",\n price: \"\",\n heading: \"\",\n buttonText: \"\",\n handleApprove: null,\n handleSell: null,\n errorMsg: \"\",\n });\n\n const [makeOfferModalState, setMakeOfferModalState] = useState();\n\n //fetch iotex to usd rate\n useEffect(() => {\n const iotexToUsd = async () => {\n try {\n // const coingeckoApi =\n // \"https://api.coingecko.com/api/v3/simple/price?ids=iotex&vs_currencies=usd\";\n // const response = await axios(coingeckoApi);\n // const iotexUsdPrice = await response?.data?.iotex?.usd;\n const iotexUsdPrice = 0.07;\n setIotexUsdRate(iotexUsdPrice);\n console.log(\"is it updated?\");\n } catch (error) {\n throw new Error(\"Error fetching rate\");\n }\n };\n\n iotexToUsd();\n }, []);\n\n //update required NFT on whichever page required from teamNFT\n useEffect(() => {\n const getRequiredNft = () => {\n if (requiredNftName && requiredNftName.length) {\n console.log(\"requiredNftName: \", requiredNftName);\n console.log(\"allNFTs: \", allNFTs);\n // const nft = JSON.parse(allNFTs)?.find(\n // (NFT) => NFT.name === requiredNftName && NFT\n // );\n\n const nft = allNFTs?.find((NFT) => NFT.name === requiredNftName && NFT);\n\n console.log(\"requiredNFT: \", nft);\n setRequiredNFT(() => nft);\n }\n };\n getRequiredNft();\n }, [requiredNftName]);\n\n useEffect(() => {\n const initializeTokenContracts = async () => {\n const setcontractInstances = await Promise.all(\n allNFTs.map(async (nft) => {\n const address = nft.contractAddress;\n const ABI = nft.abi;\n const instance = new ethers.Contract(\n address,\n ABI.abi,\n globalProvider\n );\n setGlobalNftContractInstances((prevState) =>\n prevState.push(instance)\n );\n })\n );\n };\n }, []);\n\n useEffect(() => {\n const fetchTeamNFTs = async () => {\n // console.log(\"teamNFTs: \", teamNFTs);\n setAllNFTs(() => teamNFTs);\n sessionStorage.setItem(\"teamNFTs\", JSON.stringify(teamNFTs));\n };\n\n fetchTeamNFTs();\n }, [teamNFTs]);\n\n const getUserOwnedNFTs = async (userAccount) => {\n let result = \"Error\";\n try {\n result = await Promise.all(\n allNFTs?.map(async (NFT) => {\n try {\n const provider = new ethers.providers.JsonRpcProvider(\n \"https://babel-api.testnet.iotex.io\"\n );\n\n let contractAddress = NFT.contractAddress;\n let ABI = NFT.abi;\n\n const contract = new ethers.Contract(\n contractAddress,\n ABI.abi,\n provider\n );\n\n let tokenIDs = await contract.walletOfOwner(userAccount);\n\n // console.log(\"tokenIDs\", tokenIDs);\n\n if (tokenIDs && tokenIDs.length > 0) {\n return NFT;\n } else {\n return null;\n }\n } catch (error) {\n console.log(\"error: \", error);\n }\n })\n );\n\n result = result.filter((data) => !!data && data);\n\n setCurrentUserOwnedNFTs(() => result);\n\n // console.log(\"result of getOwnerNFts: \", result);\n } catch (e) {\n console.log(\"error in getOwnerNFTs()\");\n }\n\n return result;\n };\n\n useEffect(() => {\n const handleChainChanged = (_chainId) => {\n const chId = parseInt(_chainId, 16);\n if (chId === 4) {\n // console.log('Its rnkeby')\n } else if (chId === 4689) {\n // console.log('Its IOTX Main')\n } else if (chId === 4690) {\n // console.log('Its IOTX Test')\n } else {\n // console.log('Some other network, chaind ID: ', chId)\n }\n setNetworkChainId(() => chId);\n // console.log('networkStats', networkChainId)\n };\n\n const checkProvider = async () => {\n try {\n const provider = await detectEthereumProvider();\n // console.log('provider', provider)\n const chainId = await provider.request({ method: \"eth_chainId\" });\n // console.log('chainId', parseInt(chainId, 16))\n\n handleChainChanged(chainId);\n\n provider.on(\"chainChanged\", handleChainChanged);\n } catch (error) {}\n };\n\n checkProvider();\n }, []);\n\n useEffect(() => {\n // const initContracts = async () => {\n // const provider = new ethers.providers.JsonRpcProvider(\n // process.env.REACT_APP_RINKEBY_RPC\n // );\n // const pContract = new ethers.Contract(\n // iotexPandaContractAddress,\n // IotexPanda.abi,\n // provider\n // );\n\n // const mContract = new ethers.Contract(\n // nftMarketContractAddress,\n // NFTMarket.abi,\n // provider\n // );\n\n // setInitProvider(provider);\n // setInitPandaContract(pContract);\n // setInitMarketContract(mContract);\n // };\n\n // initContracts();\n checkMetaMask();\n initializeProvider();\n }, []);\n\n const checkMetaMask = async () => {\n if (typeof window.ethereum !== \"undefined\") {\n // console.log(\"MetaMask is installed!\");\n sessionStorage.setItem(\"isMetamask\", true);\n setIsMetaMask(true);\n } else {\n // console.log(\"MetaMask is not installed!\");\n setIsMetaMask(false);\n sessionStorage.setItem(\"isMetamask\", false);\n sessionStorage.removeItem(\"user\");\n }\n };\n\n const initializeProvider = async () => {\n try {\n // const web3Modal = new Web3Modal();\n // const connection = await web3Modal.connect();\n // const provider = new ethers.providers.Web3Provider(connection);\n\n const provider = new ethers.providers.JsonRpcProvider(\n \"https://babel-api.testnet.iotex.io\"\n );\n\n setGlobalProvider(() => provider);\n } catch (error) {\n console.log(\"error in initializeProvider(): \", error);\n sessionStorage.removeItem(\"provider\");\n }\n };\n\n const initializeContracts = () => {\n try {\n } catch (error) {\n console.log(\"error in intializeContracts(): \", error);\n }\n };\n\n useEffect(() => {\n if (\n initPandaContract &&\n Object.keys(initPandaContract).length > 0 &&\n initMarketContract &&\n Object.keys(initMarketContract).length > 0\n ) {\n setLoadState(true);\n } else {\n setLoadState(false);\n }\n }, [userAccount, initPandaContract, initMarketContract]);\n\n useEffect(() => {\n const accountChangeListener = async () => {\n try {\n const ethereum = window.ethereum;\n\n ethereum.on(\"accountsChanged\", async (accounts) => {\n // const accounts = await ethereum.request({\n // method: \"eth_requestAccounts\",\n // });\n // console.log(\"accounts\", accounts);\n const account = accounts[0];\n // console.log(\"account change listener called\", account);\n if (account && accounts.length) {\n sessionStorage.setItem(\"user\", account);\n setUserAccount(sessionStorage.getItem(\"user\"));\n } else {\n sessionStorage.removeItem(\"user\");\n setUserAccount(\"\");\n }\n });\n\n // ethereum.on('disconnect', async (accounts) => {\n\n // console.log(\"disconnect accounts\", accounts);\n // const account = accounts[0];\n // console.log(\"disconnect listener called\", account);\n // });\n } catch (error) {\n console.log(error);\n }\n };\n\n // if (userAccount && userAccount.length > 0) accountChangeListener();\n accountChangeListener();\n }, [userAccount]);\n\n const connectWallet = async () => {\n try {\n if (sessionStorage.getItem(\"isMetamask\") === \"false\") {\n return;\n }\n\n if (userAccount && userAccount.length) {\n return;\n }\n\n const ethereum = window.ethereum;\n const accounts = await ethereum.request({\n method: \"eth_requestAccounts\",\n });\n const account = accounts[0];\n // console.log(\"account\", account);\n sessionStorage.setItem(\"user\", account);\n setUserAccount(sessionStorage.getItem(\"user\"));\n // console.log('try the wallet is: ', walletConnected)\n } catch (error) {\n // console.log('catch the wallet is: ', walletConnected)\n sessionStorage.removeItem(\"user\");\n sessionStorage.clear();\n }\n };\n\n const notification = (theMessage, type) => {\n if (type === \"success\") {\n return toast.success(theMessage, {\n position: \"top-center\",\n autoClose: 5000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n });\n } else if (type === \"error\") {\n return toast.error(theMessage, {\n position: \"top-center\",\n autoClose: 5000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n });\n }\n };\n\n //fetchItemsCreated()\n\n const fetchNFTOnSaleDetails = () => {\n try {\n } catch (error) {\n console.log(\"error: \", error);\n }\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport const useGlobalContext = () => {\n const {\n initProvider,\n initPandaContract,\n initMarketContract,\n loadState,\n userAccount,\n setUserAccount,\n isMetaMask,\n walletConnected,\n connectWallet,\n styled,\n networkChainId,\n showSidebar,\n setShowSidebar,\n showModal,\n setShowModal,\n notificationModalState,\n setNotificationModalState,\n approveSellModalState,\n setApproveSellModalState,\n makeOfferModalState,\n setMakeOfferModalState,\n allNFTs,\n getUserOwnedNFTs,\n notification,\n nftOnSaleDetails,\n setNftOnSaleDetails,\n globalProvider,\n requiredNFT,\n setRequiredNftName,\n currentUserOwnedNFTs,\n iotexUsdRate,\n } = useContext(AppContext);\n\n return {\n initProvider,\n initPandaContract,\n initMarketContract,\n loadState,\n userAccount,\n setUserAccount,\n isMetaMask,\n walletConnected,\n connectWallet,\n styled,\n networkChainId,\n showSidebar,\n setShowSidebar,\n showModal,\n setShowModal,\n notificationModalState,\n setNotificationModalState,\n approveSellModalState,\n setApproveSellModalState,\n makeOfferModalState,\n setMakeOfferModalState,\n allNFTs,\n getUserOwnedNFTs,\n notification,\n nftOnSaleDetails,\n setNftOnSaleDetails,\n globalProvider,\n requiredNFT,\n setRequiredNftName,\n currentUserOwnedNFTs,\n iotexUsdRate,\n };\n};\n\nexport default AppProvider;\n","export default __webpack_public_path__ + \"static/media/logo.bd0dc02d.png\";","import { makeStyles, Typography } from \"@material-ui/core\";\n\nimport logo from \"../assets/images/logo.png\";\n\n// const useStyles = makeStyles((theme) => ({\n// wrapper: {\n// width: \"170px\",\n// minWidth: \"150px\",\n// display: \"flex\",\n// justifyContent: \"center\",\n// alignItems: \"center\",\n// border: \"2px solid white\",\n// position: \"relative\",\n// borderRadius: \"0px 0px 0px 0px\",\n// transition: \"all 0.5s ease\",\n\n// \"&:hover\": {\n// borderRadius: \"20px 0px 0px 20px\",\n// },\n// },\n\n// logo: {\n// color: \"#fff\",\n// fontWeight: \"600\",\n// transition: \"all 0.5s ease\",\n// display: \"flex\",\n// justifyContent: \"center\",\n// alignItems: \"center\",\n// marginLeft: \"0px\",\n\n// \"&:hover\": {\n// color: \"#648bff\",\n// marginLeft: \"10px\",\n// },\n// },\n\n// icon: {\n// marginRight: \"20px\",\n// position: \"absolute\",\n// left: \"-40px\",\n// },\n\n// e: {\n// position: \"relative\",\n// top: \"3.5px\",\n// transform: \"scale(1.5)\",\n// margin: \"0 5px\",\n// },\n// }));\n\n// const Logo = () => {\n// const classes = useStyles();\n// return (\n//
\n// \n// {/* */}\n// iot\n// \n// \n// \n// xart\n// \n//
\n// );\n// };\n\nconst useStyles = makeStyles((theme) => ({\n wrapper: {\n // minWidth: \"150px\",\n display: \"flex\",\n alignItems: \"center\",\n position: \"relative\",\n // border: \"1px solid green\",\n },\n\n iotexart: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n\n fontFamily: \"Inter\",\n fontStyle: \"normal\",\n fontWeight: \"bold\",\n fontSize: \"22px\",\n lineHeight: \"27px\",\n color: \"#FFF\",\n },\n\n logoWrapper: {\n height: \"40px\",\n width: \"40px\",\n marginRight: \"8px\",\n },\n\n logo: {\n height: \"100%\",\n width: \"100%\",\n objecFit: \"cover\",\n },\n\n // dot: {\n // marginLeft: \"2px\",\n // animation: `$bounce 3000ms ${theme.transitions.easing.easeInOut}`,\n // },\n\n // \"@keyframes bounce\": {\n // \"0%\": {\n // opacity: 0,\n // transform: \"translateY(-200%)\",\n // },\n // \"100%\": {\n // opacity: 1,\n // transform: \"translateY(0)\",\n // },\n // },\n}));\n\nconst Logo = () => {\n const classes = useStyles();\n return (\n
\n
\n \"iotexart\"\n
\n \n iotexart.\n \n
\n );\n};\n\nexport default Logo;\n","import React, { useState } from \"react\";\n\nimport { Typography } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nimport styled from \"styled-components\";\n\nconst Button = styled.button`\n transition: all 0.3s ease;\n position: relative;\n top: 0px;\n border: none;\n /* background: #272238; */\n /* background: #223824; */\n background: ${(props) =>\n props.loading === \"true\" ? \"gray\" : props.styleObj.bgColor};\n /* background: #38A8A1; */\n padding: 8px 16px;\n display: flex;\n justify-content: 'center',\n align-items: 'center',\n outline: none;\n border-radius: 100px;\n color: ${(props) => (props.loading === \"true\" ? \"#cfcfcf\" : props.fontColor)};\n cursor: ${(props) => (props.loading === \"true\" ? \"no-drop\" : \"pointer\")};\n overflow: hidden;\n box-shadow: ${(props) => `0 0 10px 1px ${props.styleObj.shadowColor}`};\n \n &:hover {\n color: ${(props) =>\n props.loading === \"true\" ? \"#cfcfcf\" : props.hoverFontColor};\n /* background: #18AA48; */\n /* background: ${(props) =>\n props.loading === \"true\" ? \"gray\" : \"#18AA48\"}; */\n background: ${(props) =>\n props.loading === \"true\" ? \"gray\" : props.styleObj.bgColorHover};\n box-shadow: ${(props) =>\n props.loading === \"true\"\n ? `0 0 10px 1px ${props.styleObj.shadowColor}`\n : `0 0 10px 1px ${props.styleObj.shadowColorHover}`};\n }\n\n\n &:after {\n display: ${(props) => (props.loading === \"true\" ? \"inline\" : \"none\")};\n content: \"\";\n position: absolute;\n width: 16px;\n height: 16px;\n top: 0;\n left: 80%;\n right: 0;\n bottom: 0;\n margin: auto;\n border: 4px solid transparent;\n border-top-color: ${(props) =>\n props.loading === \"true\" ? \"#cfcfcf\" : \"white\"};\n border-radius: 50%;\n animation: button-loading-spinner 1s ease infinite;\n }\n\n @keyframes button-loading-spinner {\n from {\n transform: rotate(0turn);\n }\n\n to {\n transform: rotate(1turn);\n }\n}\n\n`;\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n fontSize: \"15px\",\n },\n icon: {\n fontSize: \"20px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n marginRight: \"5px\",\n },\n secondaryIcon: {\n marginRight: \"5px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n}));\n\nconst StyledLoadingButton = ({\n buttonTextLoaded,\n buttonTextLoading,\n icon,\n secondaryIcon,\n clickFunction,\n connect,\n userAccount,\n color,\n fontColor,\n hoverFontColor,\n bgColor,\n shadowColor,\n bgColorHover,\n shadowColorHover,\n}) => {\n const classes = useStyles();\n\n const [buttonState, setButtonState] = useState(false);\n\n const handleClick = async () => {\n setButtonState(true);\n try {\n if (connect) {\n if (!!!userAccount) {\n await clickFunction();\n }\n } else {\n await clickFunction();\n }\n\n setButtonState(false);\n } catch (error) {\n console.log(\"Error in loading style button's click handler: \", error);\n setButtonState(false);\n }\n };\n\n return (\n \n {userAccount && userAccount.length > 0 ? (\n {secondaryIcon}\n ) : (\n !buttonState && {icon}\n )}\n \n {connect\n ? userAccount && userAccount.length > 0\n ? `${userAccount.substring(0, 4)}....${userAccount.substring(\n userAccount.length - 4,\n userAccount.length\n )}`\n : !!buttonState\n ? buttonTextLoading\n : buttonTextLoaded\n : !!buttonState\n ? buttonTextLoading\n : buttonTextLoaded}\n \n \n );\n};\n\nexport default StyledLoadingButton;\n","import React, { useContext } from \"react\";\nimport { useLocation } from \"react-router\";\nimport { Link } from \"react-router-dom\";\nimport { AppContext } from \"../context/AppProvider\";\nimport Logo from \"../components/Logo\";\n\nimport { makeStyles } from \"@material-ui/styles\";\nimport { FaWallet } from \"react-icons/fa\";\nimport MenuIcon from \"@mui/icons-material/Menu\";\n\nimport { RiErrorWarningFill } from \"react-icons/ri\";\nimport { TiFlowSwitch } from \"react-icons/ti\";\n\nimport StyledLoadingButton from \"../components/StyledLoadingButton/StyledLoadingButton\";\nimport PowerSettingsNewIcon from \"@mui/icons-material/PowerSettingsNew\";\n\nconst NAV_LINKS = [\n {\n id: \"#0\",\n to: \"home\",\n linkText: \"Home\",\n },\n {\n id: \"#1\",\n to: \"my-assets\",\n linkText: \"My Assets\",\n },\n {\n id: \"#2\",\n to: \"sale\",\n linkText: \"NFT Sales\",\n },\n {\n id: \"#3\",\n to: \"marketplace\",\n linkText: \"Marketplace\",\n },\n {\n id: \"#4\",\n to: \"create\",\n linkText: \"Create\",\n },\n];\n\nconst NETWORK_CONFIG = {\n MAINNET: {\n chainName: \"IoTeX Network\",\n currencyName: \"IOTX\",\n chainId: 4689,\n rpcUrl: \"https://babel-api.mainnet.iotex.io/\",\n explorerUrl: \"https://iotexscan.io/\",\n symbol: \"IOTX\",\n },\n TESTNET: {\n chainName: \"IoTeX Testnet\",\n currencyName: \"IOTX\",\n chainId: 4690,\n rpcUrl: \"https://babel-api.testnet.iotex.io\",\n explorerUrl: \"https://testnet.iotexscan.io/\",\n symbol: \"IOTX\",\n },\n RINKEBY: {\n chainName: \"Rinkeby Test Network\",\n currencyName: \"ETH\",\n chainId: 4,\n rpcUrl: \"https://rinkeby.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161\",\n explorerUrl: \"https://rinkeby.etherscan.io\",\n symbol: \"ETH\",\n },\n};\n\nconst CHAIN_ID = 4690;\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n position: \"sticky\",\n top: \"0\",\n left: \"0\",\n zIndex: \"50\",\n borderBottom: \"4px solid teal\",\n height: \"200%\",\n // overflow: \"hidden\",\n },\n\n navbarCrop: {\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n overflow: \"hidden\",\n // border: \"5px solid yellow\",\n width: \"100%\",\n height: \"100%\",\n },\n\n blurredBg: {\n position: \"absolute\",\n bottom: \"0\",\n left: \"-50px\",\n width: \"120%\",\n height: \"200%\",\n // background: \"#232327e4\",\n background: \"rgba(20, 20, 22, 0.9)\",\n // background: \"rgba(242,58,60,.94)\",\n // borderBottom: \"10px solid blue\",\n filter: \"blur(8px)\",\n },\n\n redBackDrop: {\n // background:\n // \"linear-gradient(0deg, rgba(242, 58, 60, 0.94) 0%, rgba(242, 58, 60, 0.94) 60%, rgba(242, 58, 60, 0) 100%)\",\n position: \"absolute\",\n left: \"0\",\n bottom: \"-4px\",\n background:\n \"linear-gradient(0deg, #31beaa 0%, #31beaa 60%, rgba(242, 58, 60, 0) 100%)\",\n zIndex: \"-10\",\n width: \"120%\",\n height: \"100%\",\n opacity: \"0.2\",\n border: \"2px solid green\",\n },\n\n appbar: {\n position: \"sticky\",\n top: \"0\",\n left: \"0\",\n // background: \"#232327\",\n // background: \"#010a1f\",\n padding: \"0.5rem 1rem\",\n color: \"#fff\",\n minHeight: \"80px\",\n height: \"80px\",\n minWidth: \"450px\",\n display: \"flex\",\n // opacity: \"0\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n overflow: \"hidden\",\n zIndex: \"2\",\n boxShadow: \"none\",\n },\n grow: {\n flex: \"1\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n\n blankSpace: {\n flex: \"2\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n\n [theme.breakpoints.down(\"md\")]: {\n display: \"none\",\n },\n },\n\n navItemsWrapper: {\n position: \"relative\",\n flex: 1,\n display: \"flex\",\n // justifyContent: \"space-around\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n // border: \"2px solid green\",\n },\n linkWrapper: {\n // border: \"2px solid blue\",\n width: \"400px\",\n marginRight: \"20px\",\n position: \"relative\",\n top: \"0\",\n bottom: \"0\",\n opacity: \"1\",\n transition: \"0.5s ease\",\n flex: \"1\",\n display: \"flex\",\n justifyContent: \"space-around\",\n alignItems: \"center\",\n listStyle: \"none\",\n [theme.breakpoints.down(\"md\")]: {\n top: \"90px\",\n // bottom: \"90px\",\n // left: \"-90px\",\n opacity: \"0\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n\n // buttonGroup: {\n // display: \"flex\",\n // // justifyContent: \"center\",\n // justifyContent: \"space-between\",\n // alignItems: \"center\",\n // [theme.breakpoints.down(\"sm\")]: {\n // justifyContent: \"space-between\",\n // },\n // },\n\n buttonGroup: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n padding: \"0px\",\n\n width: \"576px\",\n height: \"32px\",\n\n [theme.breakpoints.down(\"sm\")]: {\n justifyContent: \"space-between\",\n },\n },\n\n // link: {\n // border: \"none\",\n // background: \"none\",\n // outline: \"none\",\n // transition: \"all 0.5s ease\",\n // color: \"white\",\n // cursor: \"pointer\",\n // \"&:hover\": {\n // color: \"#31beaa\",\n // },\n // },\n\n link: {\n position: \"static\",\n left: \"0%\",\n right: \"79.69%\",\n top: \"20.31%\",\n bottom: \"20.31%\",\n\n /* Link */\n\n fontFamily: \"Inter\",\n fontStyle: \"normal\",\n fontWeight: \"500\",\n fontSize: \"14px\",\n lineHeight: \"19px\",\n\n /* Light 1 */\n\n border: \"none\",\n background: \"none\",\n outline: \"none\",\n transition: \"all 0.5s ease\",\n color: \"white\",\n cursor: \"pointer\",\n \"&:hover\": {\n color: \"#31beaa\",\n },\n },\n\n visited: {\n color: \"#31beaa\",\n },\n button: {\n color: \"#fff\",\n // fontWeight: \"300\",\n // fontSize: \"0.8rem\",\n height: \"80px\",\n minWidth: \"95px\",\n background: \"transparent\",\n padding: \"0 0.2rem\",\n border: \"none\",\n borderRadius: \"0\",\n borderBottom: \"5px solid rgba(255, 255, 255, 0)\",\n cursor: \"pointer\",\n textTransform: \"uppercase\",\n transition: \"0.2s ease-in-out\",\n \"&:hover\": {\n borderBottom: \"5px solid #648bff\",\n color: \"#648bff\",\n // borderBottom: \"5px solid rgba(255, 255, 255, 1)\",\n },\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n\n icon: {\n marginTop: \"6px\",\n fontSize: \"2.5rem\",\n },\n\n walletBtn: {\n position: \"relative\",\n right: \"0\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n transition: \"0.5s ease\",\n\n [theme.breakpoints.down(\"md\")]: {\n right: \"70px\",\n },\n },\n\n hamburger: {\n border: \"none\",\n background: \"none\",\n cursor: \"pointer\",\n position: \"absolute\",\n top: \"0\",\n bottom: \"0\",\n right: \"0\",\n opacity: \"0\",\n transition: \"0.5s ease\",\n color: \"#fff\",\n\n \"&:hover\": {\n color: \"#31beaa\",\n },\n\n [theme.breakpoints.down(\"md\")]: {\n right: \"10px\",\n opacity: \"1\",\n },\n },\n hamburgerIcon: {\n transform: \"scale(2.5)\",\n },\n\n topMsg: {\n position: \"sticky\",\n top: \"0\",\n left: \"0\",\n width: \"100%\",\n height: \"55px\",\n background: \"maroon\",\n zIndex: \"100\",\n color: \"white\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n fontWeight: \"300\",\n },\n}));\n\nconst Navbar = () => {\n const loc = useLocation();\n const { connectWallet, networkChainId, setShowSidebar } =\n useContext(AppContext);\n const userAccount = sessionStorage.getItem(\"user\");\n\n const classes = useStyles();\n\n const setupNetwork = async (config) => {\n const provider = window.ethereum;\n if (provider) {\n try {\n await provider.request({\n method: \"wallet_addEthereumChain\",\n params: [\n {\n chainId: `0x${config.chainId.toString(16)}`,\n chainName: config.chainName,\n nativeCurrency: {\n name: config.currencyName,\n symbol: config.symbol,\n decimals: 18,\n },\n rpcUrls: [config.rpcUrl],\n blockExplorerUrls: [config.explorerUrl],\n },\n ],\n });\n return true;\n } catch (error) {\n console.error(error);\n return false;\n }\n } else {\n console.error(\n \"Can't setup the network on metamask because window.ethereum is undefined\"\n );\n return false;\n }\n };\n\n return (\n
\n {sessionStorage.getItem(\"isMetamask\") === \"false\" && (\n
\n

\n Enable\n \n MetaMask\n \n plugin to interact with the app!\n

\n
\n )}\n\n {sessionStorage.getItem(\"isMetamask\") === \"true\" &&\n networkChainId !== CHAIN_ID && (\n
\n \n \n \n \n Please switch wallet to Iotex Test Network\n

\n \n }\n connect={false}\n clickFunction={() => setupNetwork(NETWORK_CONFIG.TESTNET)}\n color=\"white\"\n fontColor=\"white\"\n hoverFontColor=\"white\"\n bgColor=\"#630000\"\n shadowColor=\"maroon\"\n bgColorHover=\"#4e0000\"\n shadowColorHover=\"#2c0000\"\n />\n \n
\n )}\n
\n
\n
\n \n \n \n
\n
\n
\n
    \n {NAV_LINKS.filter((navLink) => {\n if (navLink.to === \"my-assets\") {\n if (userAccount && userAccount.length > 0) {\n return true;\n } else return false;\n } else {\n return true;\n }\n }).map((navLink) => (\n
  • \n \n \n {navLink.linkText}\n \n \n
  • \n ))}\n
\n
\n }\n secondaryIcon={}\n connect={true}\n clickFunction={connectWallet}\n userAccount={userAccount}\n color=\"green\"\n hoverFontColor=\"white\"\n fontColor=\"white\"\n bgColor=\"#223824\"\n shadowColor=\"#223824\"\n bgColorHover=\"#18AA48\"\n shadowColorHover=\"#47c270\"\n />\n
\n
\n\n setShowSidebar((prevState) => !prevState)}\n >\n \n \n
\n
\n {/*
\n
\n
*/}\n
\n
\n );\n};\n\nexport default Navbar;\n","export default __webpack_public_path__ + \"static/media/connectWallet.f1472946.png\";","import { Typography } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n display: \"flex\",\n flexDirection: \"column\",\n // justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n border: \"2px solid #0f0f11\",\n padding: \"10px 15px\",\n paddingTop: \"20px\",\n // minHeight: \"300px\",\n height: \"300px\",\n width: \"230px\",\n borderRadius: \"10px\",\n background: \"#232327\",\n boxShadow: \"0.00px 0.00px 30px 0px rgba(0,0,0,0.3)\",\n },\n icon: {\n height: \"50px\",\n width: \"50px\",\n // border: \"1px solid blue\",\n // marginBottom: \"30px\",\n },\n\n iconImg: {\n width: \"100%\",\n height: \"100%\",\n },\n\n cardInfo: {\n flex: \"1\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-end\",\n // border: \"1px solid blue\",\n },\n\n caption: {\n fontSize: \"1rem\",\n // border: \"1px solid blue\",\n marginBottom: \"20px\",\n // color: \"#fd6262\",\n color: \"tomato\",\n },\n description: {\n // border: \"1px solid blue\",\n fontSize: \"12px\",\n },\n\n bottomLine: {\n marginTop: \"15px\",\n width: \"100%\",\n height: \"5px\",\n background: \"teal\",\n },\n}));\n\nconst FeatureItem = ({ icon, caption, description }) => {\n const classes = useStyles();\n return (\n
\n
\n {caption}\n
\n
\n \n {caption}\n \n \n {description}\n \n
\n
\n
\n );\n};\n\nexport default FeatureItem;\n","export default __webpack_public_path__ + \"static/media/customCollections.16c0e2d1.png\";","export default __webpack_public_path__ + \"static/media/decentralizedStorage.8d375a0e.png\";","export default __webpack_public_path__ + \"static/media/nonCustodial.03a2e3ad.png\";","export default __webpack_public_path__ + \"static/media/zeroFees.ef03a2a7.png\";","import { Typography } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n display: \"flex\",\n flexDirection: \"column\",\n // alignItems: \"center\",\n padding: \"0 16px\",\n paddingTop: \"8px\",\n\n height: \"289px\",\n width: \"460px\",\n\n background: \"#111111\",\n borderRadius: \"8px\",\n },\n\n contentWrapper: {\n // display: \"flex\",\n // flexDirection: \"column\",\n // alignItems: \"center\",\n // justifyContent: \"flex-end\",\n height: \"250px\",\n padding: \"16px\",\n paddingBottom: \"0\",\n // border: \"1px solid white\",\n },\n\n info: {\n // border: \"1px solid blue\",\n },\n\n icon: {\n height: \"50px\",\n width: \"50px\",\n // border: \"1px solid blue\",\n marginBottom: \"1.5rem\",\n },\n\n iconImg: {\n width: \"100%\",\n height: \"100%\",\n },\n\n cardInfo: {\n flex: \"1\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-end\",\n // border: \"1px solid blue\",\n },\n\n caption: {\n // fontSize: \"1rem\",\n // border: \"1px solid blue\",\n marginBottom: \"20px\",\n // color: \"#fd6262\",\n\n fontFamily: \"Inter\",\n fontStyle: \"normal\",\n fontWeight: \"500\",\n fontSize: \"22px\",\n lineHeight: \"150%\",\n color: \"#FFF\",\n },\n\n description: {\n // border: \"1px solid blue\",\n fontFamily: \"Inter\",\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fontSize: \"14px\",\n lineHeight: \"150%\",\n color: \"#DDD\",\n },\n\n bottomLine: {\n marginTop: \"5px\",\n width: \"100%\",\n height: \"5px\",\n background: \"teal\",\n },\n}));\n\nconst FeatureCard = ({ icon, caption, description }) => {\n const classes = useStyles();\n\n return (\n <>\n
\n
\n
\n {icon && (\n
\n {caption}\n
\n )}\n
\n \n {caption}\n \n \n {description}\n \n
\n
\n
\n
\n
\n \n );\n};\n\nexport default FeatureCard;\n","import { Typography } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n position: \"relative\",\n display: \"flex\",\n flexDirection: \"column\",\n // alignItems: \"center\",\n padding: \"0 16px\",\n paddingTop: \"8px\",\n\n height: \"289px\",\n width: \"460px\",\n\n background: \"#111111\",\n borderRadius: \"8px\",\n overflow: \"hidden\",\n transition: \"0.3s ease\",\n cursor: \"pointer\",\n\n \"&:hover\": {\n \"& $bgGradient\": {\n right: \"-5px\",\n bottom: \"-5px\",\n },\n \"& $contentWrapper\": {\n color: \"#111\",\n },\n \"& $icon\": {\n marginLeft: \"30px\",\n },\n },\n },\n\n contentWrapper: {\n position: \"absolute\",\n // display: \"flex\",\n // flexDirection: \"column\",\n // alignItems: \"center\",\n // justifyContent: \"flex-end\",\n height: \"250px\",\n padding: \"16px\",\n paddingBottom: \"0\",\n // border: \"1px solid white\",\n transition: \"0.3s ease\",\n color: \"#fff\",\n zIndex: \"10\",\n },\n\n info: {\n // border: \"1px solid blue\",\n },\n\n icon: {\n transition: \"0.3s ease\",\n height: \"120px\",\n width: \"120px\",\n // border: \"1px solid blue\",\n marginBottom: \"1.5rem\",\n marginLeft: \"0px\",\n },\n\n iconImg: {\n width: \"100%\",\n height: \"100%\",\n },\n\n cardInfo: {\n flex: \"1\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-end\",\n // border: \"1px solid blue\",\n },\n\n caption: {\n // fontSize: \"1rem\",\n // border: \"1px solid blue\",\n marginBottom: \"20px\",\n // color: \"#fd6262\",\n\n fontFamily: \"Inter\",\n fontStyle: \"normal\",\n fontWeight: \"500\",\n fontSize: \"22px\",\n lineHeight: \"150%\",\n // color: \"#FFF\",\n },\n\n description: {\n // border: \"1px solid blue\",\n fontFamily: \"Inter\",\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fontSize: \"14px\",\n lineHeight: \"150%\",\n // color: \"#DDD\",\n marginBottom: \"20px\",\n },\n\n bgGradient: {\n transition: \"0.3s ease\",\n position: \"absolute\",\n right: \"-410px\",\n bottom: \"-410px\",\n width: \"800px\",\n height: \"800px\",\n // background: \"teal\",\n // opacity: \"0.3\",\n background:\n \"linear-gradient(135deg, rgba(17, 17, 17, 1) 0%, rgba(17, 17, 17, 1) 50%, rgba(255, 255, 255, 1) 50%, rgba(255, 255, 255, 1) 100%)\",\n },\n}));\n\nconst FeatureCard = ({ icon, caption, description }) => {\n const classes = useStyles();\n\n return (\n <>\n
\n
\n
\n
\n \n {caption}\n \n \n {description}\n \n {icon &&
{icon}
}\n
\n
\n
\n
\n
\n \n );\n};\n\nexport default FeatureCard;\n","import FeatureItem from \"../../components/FeatureItem/FeatureItem\";\n\nimport connectWallet from \"../../assets/images/features/teal/connectWallet.png\";\nimport customCollections from \"../../assets/images/features/teal/customCollections.png\";\nimport decentralizedStorage from \"../../assets/images/features/teal/decentralizedStorage.png\";\nimport nonCustodial from \"../../assets/images/features/teal/nonCustodial.png\";\nimport zeroFees from \"../../assets/images/features/teal/zeroFees.png\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport FeatureCard from \"../../components/FeatureCard/FeatureCard\";\nimport FeatureCardBtn from \"../../components/FeatureCard/FeatureCardBtn\";\n\nimport { FaArrowRight } from \"react-icons/fa\";\nimport { Link } from \"react-router-dom\";\n\nconst features = [\n {\n id: 1,\n icon: connectWallet,\n caption: \"Connect your wallet\",\n description:\n \"Connect via metamask wallet by clicking on wallet icon in the top right corner.\",\n },\n {\n id: 2,\n icon: customCollections,\n caption: \"Custom Collections\",\n description:\n \"We plan to work with wide range of artists, curators and developers to have high qualities digital content for our audience from different genres like Art, GameFi, Avatars and MetaVerse.\",\n },\n {\n id: 3,\n icon: zeroFees,\n caption: \"Zero Fees\",\n description:\n \"We will not charge any fees from artists when they want to launch on iotexart. All the launch, smart contract will be facilitated by iotexart team without any cost.\",\n },\n {\n id: 4,\n icon: nonCustodial,\n caption: \"Non-custodial\",\n description:\n \"All assets remain in your full control - we never take custody any of your digital assets.\",\n },\n {\n id: 5,\n icon: decentralizedStorage,\n caption: \"Decentralized Storage\",\n description:\n \"All the NFTs sold via IoTeX art will be stored on permanent and decentralized storage on IPFS and ICP.\",\n },\n];\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n display: \"grid\",\n placeItems: \"center\",\n // border: \"4px solid white\",\n gridTemplateColumns: \"1fr 1fr 1fr\",\n gap: \"1rem 1rem\",\n padding: \"0 64px\",\n margin: \"1rem 0\",\n },\n}));\n\nconst FeaturesContainer = () => {\n const classes = useStyles();\n\n return (\n
\n {features.map((feature) => (\n
\n \n
\n ))}\n
\n \n }\n caption=\"Get Started\"\n description=\"Visit the sales page to start minting NFTs!\"\n />\n \n
\n
\n );\n};\n\nexport default FeaturesContainer;\n","import { useState } from \"react\";\nimport MailchimpSubscribe from \"react-mailchimp-subscribe\";\n\nimport { ToastContainer, toast } from \"react-toastify\";\nimport \"react-toastify/dist/ReactToastify.css\";\n\nconst CustomForm = ({ status, message, onValidated }) => {\n const [userMail, setUserMail] = useState(\"\");\n\n const toastMsg = (type, msg) => {\n switch (type) {\n case \"warn\":\n return toast.warn(msg, {\n position: \"top-center\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n });\n case \"error\":\n return toast.error(msg, {\n position: \"top-center\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n });\n case \"success\":\n return toast.success(msg, {\n position: \"top-center\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n });\n default:\n return;\n }\n };\n\n const validateEmail = (email) => {\n return String(email)\n .toLowerCase()\n .match(\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n );\n };\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n\n if (!!!userMail) {\n // alert(\"Please enter email\");\n toastMsg(\"warn\", \"Please enter email\");\n return;\n }\n\n if (!validateEmail(userMail)) {\n // alert(\"Please enter valid email\");\n toastMsg(\"warn\", \"Please enter valid email\");\n return;\n }\n\n console.log(\"code reached\");\n\n onValidated({\n MERGE0: userMail,\n });\n\n setUserMail(\"\");\n\n // window.location.reload();\n };\n\n console.log(\"status\", status);\n\n return (\n <>\n {\n \n }\n
handleSubmit(e)}>\n \n\n
\n setUserMail(e.target.value.trim())}\n />\n\n \n
\n {status === \"sending\" && (\n \n )}\n {status === \"error\" && (\n \n )}\n {status === \"success\" && (\n \n )}\n \n \n );\n};\n\nconst MailchimpFormContainer = () => {\n const mailchimpU =\n process.env.REACT_APP_MAILCHIMP_U || \"884b5fe99862ceaa132e2c2aa\";\n const mailchimpID = process.env.REACT_APP_MAILCHIMP_ID || \"2d780c483a\";\n\n const postUrl = `https://gmail.us20.list-manage.com/subscribe/post?u=${mailchimpU}&id=${mailchimpID}`;\n return (\n
\n (\n subscribe(formData)}\n />\n )}\n />\n
\n );\n};\n\nexport default MailchimpFormContainer;\n","import { BsTwitter } from \"react-icons/bs\";\nimport { FaDiscord, FaTelegramPlane } from \"react-icons/fa\";\nimport { RiInstagramFill } from \"react-icons/ri\";\n\nimport { makeStyles } from \"@material-ui/styles\";\n\nconst useStyles = makeStyles({\n linkContainer: {\n // // background: \"#010a1f\",\n padding: \"0.25rem 0.25rem\",\n color: \"#ddd\",\n width: \"150px\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n // marginTop: \"2rem\",\n // border: \"1px solid white\",\n\n \"& a\": {\n color: \"#777777\",\n fontSize: \"20px\",\n \"&:hover\": {\n color: \"#fff\",\n },\n },\n },\n});\n\nconst SocialMediaLinks = () => {\n const classes = useStyles();\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n );\n};\n\nexport default SocialMediaLinks;\n","export default __webpack_public_path__ + \"static/media/dlLogo.d7301263.png\";","import { Typography } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/styles\";\n\nimport MailchimpFormContainer from \"./MailchimpFormContainer\";\nimport SocialMediaLinks from \"./SocialMediaLinks\";\nimport Logo from \"../components/Logo\";\n\nimport dlLogo from \"../assets/logos/dlLogo.png\";\n\nconst useStyles = makeStyles({\n container: {\n // background: \"#010a1f\",\n padding: \"1rem 3rem\",\n color: \"#fff\",\n height: \"250px\",\n // width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n marginTop: \"2rem\",\n // border: \"1px solid white\",\n },\n\n innerContainer: {\n // border: \"1px solid red\",\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n // justifyContent: \"space-between\",\n // alignItems: \"center\",\n },\n\n dlLogoContainer: {\n width: \"75px\",\n height: \"75px\",\n overflow: \"hidden\",\n },\n dlLogo: { height: \"100%\", width: \"100%\", objectFit: \"cover\" },\n\n mainContent: {\n display: \"flex\",\n justifyContent: \"space-between\",\n },\n\n left: {\n // flex: \"1\",\n width: \"180px\",\n height: \"100%\",\n // border: \"1px solid purple\",\n },\n desc: {\n textAlign: \"left\",\n marginTop: \"1rem\",\n marginBottom: \"1rem\",\n color: \"#777\",\n },\n\n right: {\n // border: \"1px solid purple\",\n alignItems: \"right\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-end\",\n },\n\n bottom: {\n display: \"flex\",\n justifyContent: \"space-between\",\n marginTop: \"2rem\",\n },\n});\n\nconst Footer = () => {\n const classes = useStyles();\n\n return (\n
\n
\n
\n
\n \n \n NFT Collection Platform\n \n \n
\n
\n \n
\n
\n
\n \"Descent\n
\n \n Developed by DescentLabs\n \n
\n
\n
\n \n © Copyright 2022 iotexart\n \n \n All Rights Reserved\n \n
\n
\n
\n );\n\n return (\n
\n
\n
\n \n \n NFT Collection Platform\n \n \n
\n
\n \n
\n
\n
\n\n
\n \"Descent\n
\n \n Developed by DescentLabs © All rights reserved 2022\n \n
\n );\n};\n\nexport default Footer;\n","export default __webpack_public_path__ + \"static/media/heroImage.a53b48ab.png\";","import { makeStyles } from \"@material-ui/styles\";\nimport { Typography } from \"@material-ui/core\";\nimport { Link } from \"react-router-dom\";\n\nimport heroImage from \"../assets/images/heroImage.png\";\nimport { useContext } from \"react\";\nimport { AppContext } from \"../context/AppProvider\";\n\nconst useStyles = makeStyles((theme) => ({\n hero: {\n // position: \"absolute\",\n // width: \"100%\",\n height: \"598px\",\n left: \"64px\",\n // top: \"176px\",\n top: \"20px\",\n // border: \"2px solid green\",\n // backgroundImage: `url(${bg})`,\n\n opacity: \"1\",\n transform: \"translateY(0px)\",\n animation: \"$appear 1s ease 1\",\n\n marginBottom: \"1rem\",\n },\n\n intro: {\n // position: \"absolute\",\n // height: \"383px\",\n // left: \"4.21%\",\n // right: \"4.21%\",\n // top: \"176px\",\n // border: \"1px solid green\",\n\n padding: \"100px 100px\",\n },\n\n welcome: {\n // position: \"absolute\",\n width: \"340px\",\n // left: \"0px\",\n // top: \"0%\",\n // bottom: \"94.52%\",\n\n marginBottom: \"12px\",\n\n fontFamily: \"Inter\",\n fontStyle: \"normal\",\n fontWeight: \"500\",\n fontSize: \"14px\",\n lineHeight: \"150%\",\n textTransform: \"uppercase\",\n\n color: \"#777777\",\n },\n\n heading: {\n // position: \"absolute\",\n width: \"340px\",\n // left: \"0px\",\n // top: \"11.75%\",\n // bottom: \"57.96%\",\n\n marginBottom: \"12px\",\n\n fontFamily: \"Inter\",\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fontSize: \"48px\",\n lineHeight: \"58px\",\n\n color: \"#FFFFFF\",\n },\n\n introduction: {\n // position: \"absolute\",\n width: \"340px\",\n // left: \"0px\",\n // top: \"63%\",\n // bottom: \"34.46%\",\n\n marginBottom: \"24px\",\n\n fontFamily: \"Inter\",\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fontSize: \"20px\",\n lineHeight: \"150%\",\n\n color: \"#CCCCCC\",\n },\n\n buttonGroup: {\n display: \"flex\",\n },\n\n primary: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n alignItems: \"center\",\n padding: \"12px\",\n\n // position: \"absolute\",\n width: \"125px\",\n // left: \"0px\",\n // top: \"73.89%\",\n // bottom: \"15.67%\",\n\n background: \"rgba(66, 255, 210, 0)\",\n borderRadius: \"8px\",\n\n transition: \"all 0.3s ease\",\n border: \"2px solid rgba(66, 255, 210, 1)\",\n outline: \"none\",\n color: \"rgba(66, 255, 210, 1)\",\n fontWeight: \"bold\",\n cursor: \"pointer\",\n fontSize: \"12px\",\n\n \"&:hover\": {\n background: \"rgba(66, 255, 210, 1)\",\n color: \"#111111\",\n },\n },\n\n secondary: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n alignItems: \"center\",\n padding: \"12px\",\n\n // position: \"absolute\",\n width: \"125px\",\n // left: \"0px\",\n // top: \"73.89%\",\n // bottom: \"15.67%\",\n\n background: \"rgba(85, 85, 85, 0)\",\n borderRadius: \"8px\",\n\n transition: \"all 0.3s ease\",\n border: \"2px solid rgba(85, 85, 85, 1)\",\n outline: \"none\",\n color: \"rgba(85, 85, 85, 1)\",\n fontWeight: \"bold\",\n cursor: \"pointer\",\n fontSize: \"12px\",\n\n \"&:hover\": {\n background: \"rgba(85, 85, 85, 1)\",\n color: \"#fff\",\n },\n },\n\n heroImageWrapper: {\n position: \"absolute\",\n left: \"48%\",\n // right: \"12.04%\",\n // bottom: \"50px\",\n // top: \"-100px\",\n\n width: \"720px\",\n height: \"598px\",\n transform: \"translateY(0px)\",\n animation: \"$hover 2s ease infinite\",\n // border: \"1px solid aqua\",\n },\n\n heroImage: {\n height: \"100%\",\n width: \"100%\",\n // objectFit: \"cover\",\n objectFit: \"contain\",\n },\n\n \"@keyframes hover\": {\n \"0%\": {\n transform: \"translateY(0px)\",\n },\n \"50%\": {\n transform: \"translateY(10px)\",\n },\n \"100%\": {\n transform: \"translateY(0px)\",\n },\n },\n\n \"@keyframes appear\": {\n \"0%\": {\n opacity: \"0\",\n transform: \"translateY(-30px)\",\n },\n \"100%\": {\n opacity: \"1\",\n transform: \"translateY(0px)\",\n },\n },\n}));\n\nconst Hero = () => {\n const classes = useStyles();\n const { showModal, setShowModal } = useContext(AppContext);\n return (\n
\n {/* \n Where Art Meets Iotex Blockchain!\n \n \n IoTeXArt Enable easy creation and transaction of Limited Editions\n Digital Content secured and powered by IoTeX with blockchain to mass\n users. IoTeXArt is a place where artist can launch their art and user\n can sell and store all NFTs launched on IoTeX Blockchain in a\n decentralized, non-custodial way. Powered by the IoTeX token, IoTeXArt\n enables new use cases and business models evolving NFTs into complete\n media experiences. IoTeXArt mission is to enables creators to choose and\n embed licenses when they mint NFTs. Creators know what they are selling,\n collectors know what they are buying. Join the revolution.\n */}\n
\n \"hero-image\"\n
\n
\n \n welcome to iotexart\n \n \n Where Art Meets Iotex Blockchain!\n \n \n Create and transact limited edition digital content secured and\n powered by IOTEX blockchain\n \n
\n \n \n \n\n \n \n \n
\n
\n
\n );\n};\n\nexport default Hero;\n","import { makeStyles } from \"@material-ui/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n barOne: {\n margin: \"0 auto\",\n marginBottom: \"5px\",\n height: \"1px\",\n width: \"100%\",\n background: \"teal\",\n marginTop: \"2rem\",\n },\n\n barTwo: {\n margin: \"0 auto\",\n height: \"1px\",\n width: \"100%\",\n background: \"teal\",\n marginBottom: \"2rem\",\n },\n}));\n\nconst DoubleBar = () => {\n const classes = useStyles();\n return (\n <>\n
\n
\n \n );\n};\n\nexport default DoubleBar;\n","import FeaturesContainer from \"../containers/Home/FeaturesContainer\";\nimport Footer from \"../containers/Footer\";\nimport Hero from \"../containers/Hero\";\n\nimport DoubleBar from \"../components/DoubleBar\";\n\nconst Home = () => {\n return (\n
\n \n \n \n \n
\n
\n );\n};\n\nexport default Home;\n","// import {\n// Card,\n// CardContent,\n// CardMedia,\n// CardActions,\n// Button,\n// Typography,\n// } from \"@material-ui/core\";\n\nimport { Typography } from \"@material-ui/core\";\nimport { Link } from \"react-router-dom\";\n\nimport styled from \"styled-components\";\n\nimport { makeStyles } from \"@material-ui/styles\";\n\nconst useStyles = makeStyles({\n card: {\n maxWidth: \"345px\",\n color: \"#fff\",\n },\n cardContent: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"space-between\",\n letterSpacing: \"-1px\",\n },\n letterSpace: {\n letterSpacing: \"-0.5px\",\n },\n cardActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n },\n\n cardImage: {\n height: \"100%\",\n width: \"100%\",\n objectFit: \"cover\",\n },\n\n cardTitle: {\n fontWeight: \"bold\",\n textTransform: \"uppercase\",\n color: \"tomato\",\n },\n\n caption: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n background: \"white\",\n marginBottom: \"10px\",\n borderRadius: \"15px\",\n width: \"100%\",\n },\n\n button: {\n border: \"none\",\n background: \"none\",\n outline: \"none\",\n fontSize: \"15px\",\n transition: \"all 0.5s ease\",\n color: \"white\",\n cursor: \"pointer\",\n \"&:hover\": {\n color: \"#31beaa\",\n },\n },\n});\n\nconst Card = styled.div`\n /* position: relative; */\n width: 300px;\n height: 380px;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: center;\n border: 2px solid #0f0f11;\n padding-bottom: 10px;\n border-radius: 10px;\n background: linear-gradient(\n 0deg,\n rgba(38, 35, 44, 1) 0%,\n rgba(38, 35, 44, 1) 76%,\n rgba(0, 128, 128, 0) 100%\n );\n box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.3);\n transition: 0.5s ease;\n\n &:hover {\n background: linear-gradient(\n 0deg,\n rgba(0, 128, 128, 1) 0%,\n rgba(0, 128, 128, 1) 76%,\n rgba(0, 128, 128, 0) 100%\n );\n }\n`;\n\nconst CardMedia = styled.div`\n position: relative;\n flex: 3;\n width: 100%;\n /* background: yellow; */\n /* border-top-left-radius: 10px;\n border-top-right-radius: 10px; */\n border-radius: 10px;\n overflow: hidden;\n`;\n\nconst CardContent = styled.div`\n flex: 1;\n width: 100%;\n /* background: green; */\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding: 0 10px;\n`;\n\nconst SaleCard = ({\n imgLink,\n circularThumbnail,\n nftName,\n tokenName,\n nftDesc,\n link,\n buttonText,\n}) => {\n console.log(nftName);\n const classes = useStyles();\n\n return (\n \n \n \n \n \n \n
\n \n {nftName}\n \n
\n {/* \n {nftDesc}\n */}\n
\n {/*
*/}\n {/*
\n \n {nftName}\n \n
*/}\n \n \n );\n};\n\nexport default SaleCard;\n","// export const nftMarketContractAddress = \"0x5FbDB2315678afecb367f032d93F642f64180aa3\"\n// export const iotexPandaContractAddress = \"0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512\"\n\n//old marketplace\n// export const nftMarketContractAddress = \"0x51271c4216D8934c741f406E883064BC73bCa0B0\"\n// export const nftMarketContractAddress = \"0xe61Bbd33EBF8F9D0Bab058035E5b1551261Db316\"\n// export const nftMarketContractAddress = \"0x41b4c7F229156366F349E7CE6E6655c6F9A813fc\"\n\n//marketplace old addresses\n// export const nftMarketContractAddress = \"0xb9572C30A57cBF87E6dD815a9350679404FC84Bd\"\n\n//latest marketplace\n// export const nftMarketContractAddress = \"0x6E5d662b05087824e28e8E254B186c5dc4EdE8d9\"\n\n//marketplace v12\n// export const nftMarketContractAddress =\n// \"0xcd9F1044cA4E55F3d684e6E4100627F40e9ADe2B\";\n\n//marketplace v13\n// export const nftMarketContractAddress =\n// \"0xDD7e7E7862357f3CD838eb58F206704623B275CF\";\n// export const iotexPandaContractAddress =\n// \"0x85e0eAdBc66EA4d8637d82d04e7b61E471533dA3\";\n// export const maycContractAddress = \"0xc55e426cc38a6Bb98C45F44B682E25C5e4f80171\";\n\n//marketplace v14\nexport const nftMarketContractAddress =\n \"0x7D696726F0BCc25c7b88E632b23fa1196a95c6Ed\";\n","export default __webpack_public_path__ + \"static/media/iotex.34ce2633.png\";","export const shortifyContractAddress = (\n address,\n startingLetters = 4,\n endingLetters = 4\n) => {\n return `${address.substring(0, startingLetters)}....${address.substring(\n address.length - endingLetters,\n address.length\n )}`;\n};\n\nexport const expirationCalculator = (expiresAtInSeconds) => {\n const currentTimestamp = Math.floor(new Date().getTime() / 1000);\n\n let timeDiff = expiresAtInSeconds - currentTimestamp;\n\n let expiresAt =\n timeDiff <= 0\n ? \"Bid Expired\"\n : timeDiff / 86400 > 1\n ? `in about ${Math.floor(timeDiff / 86400)} days`\n : timeDiff / 3600 > 1\n ? `in about ${Math.floor(timeDiff / 3600)} hours`\n : timeDiff / 60 > 1\n ? `in about ${Math.floor(timeDiff / 60)} minutes`\n : `in about ${Math.floor(timeDiff)} seconds`;\n\n return expiresAt;\n};\n","import { useState, useContext } from \"react\";\nimport Web3 from \"web3\";\nimport { useParams } from \"react-router-dom\";\n\nimport Web3Modal from \"web3modal\";\nimport { ethers } from \"ethers\";\n\nimport \"./MarketplaceItemCard.css\";\nimport { Typography } from \"@mui/material\";\nimport { makeStyles } from \"@material-ui/styles\";\n\nimport { AppContext } from \"../../../context/AppProvider\";\nimport { nftMarketContractAddress } from \"../../../config\";\nimport NFTMarket from \"../../../artifacts/contracts/NFTMarket.sol/NFTMarket.json\";\n\nimport iotexIcon from \"../../../assets/icons/iotex.png\";\nimport { shortifyContractAddress } from \"../../../helpers/stringUtilities\";\nimport { useHistory } from \"react-router-dom\";\n\nlet web3 = new Web3(\"https://babel-api.testnet.iotex.io\");\n\n// const useStyles = makeStyles({\n// cardContainer: {\n// // border: \"2px solid blue\",\n// position: \"relative\",\n// width: \"330px\",\n// height: \"365px\",\n\n// background: \"#101A1B\",\n// borderRadius: \"8px\",\n// border: \"2px solid rgba(255, 255, 255, 0)\",\n// // border: \"5px solid rgba(0, 128, 128, 0)\",\n// boxShadow: \"0px 0px 20px 4px rgba(255, 255, 255, 0)\",\n// transform: \"scale(1)\",\n// transition: \"0.2s ease\",\n// overflow: \"hidden\",\n\n// // \"&:hover\": {\n// // // border: \"5px solid rgba(0, 128, 128, 1)\",\n// // boxShadow: \"0px 0px 20px 4px rgba(255, 255, 255, 0.5)\",\n// // transform: \"scale(1.01)\",\n// // },\n\n// \"&:hover\": {\n// transform: \"scale(1.015)\",\n// border: \"2px solid rgba(255, 255, 255, 1)\",\n// },\n// },\n\n// imageWrapper: {\n// position: \"absolute\",\n// // borderRadius: \"8px\",\n// top: \"0\",\n// left: \"0\",\n// width: \"100%\",\n// height: \"100%\",\n// // border: \"2px solid blue\",\n// },\n\n// image: {\n// height: \"100%\",\n// width: \"100%\",\n// objectFit: \"cover\",\n// // opacity: \"0\",\n// },\n\n// overlay: {\n// position: \"absolute\",\n// display: \"flex\",\n// justifyContent: \"center\",\n// alignItems: \"center\",\n// bottom: \"0\",\n// left: \"0\",\n// width: \"100%\",\n// height: \"125px\",\n// background: \"rgba(17, 26, 25, 0.64)\",\n// backdropFilter: \"blur(12px)\",\n// },\n\n// infoContainer: {\n// position: \"relative\",\n// display: \"flex\",\n// justifyContent: \"space-between\",\n// alignItems: \"center\",\n// padding: \"24px\",\n// height: \"100%\",\n// width: \"100%\",\n// // border: \"1px solid blue\",\n// },\n\n// left: {\n// flex: \"1\",\n// height: \"100%\",\n// display: \"flex\",\n// flexDirection: \"column\",\n// justifyContent: \"space-between\",\n// alignItems: \"flex-start\",\n// // border: \"1px solid purple\",\n// },\n\n// leftTop: {\n// fontFamily: \"Inter\",\n// fontStyle: \"normal\",\n// fontWeight: \"500\",\n// fontSize: \"12px\",\n// lineHeight: \"15px\",\n// textTransform: \"uppercase\",\n// color: \"#42FFD2\",\n// },\n\n// center: {\n// fontFamily: \"Inter\",\n// fontStyle: \"normal\",\n// fontWeight: \"500\",\n// fontSize: \"16px\",\n// lineHeight: \"19px\",\n// color: \"#FFF\",\n// },\n\n// right: {\n// flex: \"1\",\n// height: \"100%\",\n// // border: \"1px solid purple\",\n// display: \"flex\",\n// flexDirection: \"column\",\n// justifyContent: \"space-between\",\n// alignItems: \"flex-end\",\n// },\n\n// rightTop: {\n// fontFamily: \"Inter\",\n// fontStyle: \"normal\",\n// fontWeight: \"500\",\n// fontSize: \"12px\",\n// lineHeight: \"15px\",\n// textTransform: \"uppercase\",\n// color: \"#FFF\",\n// textAlign: \"right\",\n// },\n\n// price: {\n// display: \"flex\",\n// alignItems: \"center\",\n// justifyContent: \"center\",\n// },\n\n// button: {\n// display: \"flex\",\n// flexDirection: \"row\",\n// justifyContent: \"center\",\n// alignItems: \"center\",\n// padding: \"5px 2px\",\n// textTransform: \"uppercase\",\n// position: \"relative\",\n\n// zIndex: \"10\",\n\n// width: \"100px\",\n\n// background: \"rgba(66, 255, 210, 0)\",\n// borderRadius: \"8px\",\n\n// transition: \"all 0.3s ease\",\n// // border: \"2px solid rgba(66, 255, 210, 1)\",\n// border: \"2px solid #33f246\",\n// outline: \"none\",\n// color: \"#33f246\",\n// // color: \"rgba(66, 255, 210, 1)\",\n// fontWeight: \"bold\",\n// cursor: \"pointer\",\n// fontSize: \"12px\",\n\n// \"&:hover\": {\n// // background: \"rgba(66, 255, 210, 1)\",\n// background: \"#33f246\",\n// color: \"#111111\",\n// },\n// },\n\n// asterix: {\n// display: \"flex\",\n// justifyContent: \"center\",\n// alignItems: \"center\",\n// position: \"absolute\",\n// right: \"-8px\",\n// top: \"-10px\",\n// fontSize: \"30px\",\n// color: \"#33f246\",\n// animation: \"$blink 1s linear infinite\",\n// },\n\n// \"@keyframes blink\": {\n// \"0%\": {\n// opacity: \"1\",\n// },\n// \"50%\": {\n// opacity: \"0.3\",\n// },\n// \"100%\": {\n// opacity: \"1\",\n// },\n// },\n\n// card: {\n// maxWidth: \"345px\",\n// color: \"#fff\",\n// },\n// cardContent: {\n// display: \"flex\",\n// flexDirection: \"column\",\n// justifyContent: \"center\",\n// alignItems: \"space-between\",\n// letterSpacing: \"-1px\",\n// },\n// letterSpace: {\n// letterSpacing: \"-0.5px\",\n// },\n// cardActions: {\n// display: \"flex\",\n// justifyContent: \"flex-end\",\n// },\n\n// cardImage: {\n// height: \"100%\",\n// width: \"100%\",\n// objectFit: \"cover\",\n// },\n\n// cardTitle: {\n// fontWeight: \"bold\",\n// textTransform: \"uppercase\",\n// color: \"tomato\",\n// },\n\n// caption: {\n// display: \"flex\",\n// justifyContent: \"center\",\n// alignItems: \"center\",\n// background: \"white\",\n// marginBottom: \"10px\",\n// borderRadius: \"15px\",\n// width: \"100%\",\n// },\n\n// blockedButton: {\n// border: \"none\",\n// background: \"none\",\n// outline: \"none\",\n// fontSize: \"15px\",\n// cursor: \"no-drop\",\n// color: \"gray\",\n// },\n\n// detailGroup: {\n// // border: \"1px solid green\",\n// // width: \"100%\",\n// padding: \"0 10px\",\n// display: \"flex\",\n// justifyContent: \"space-between\",\n// alignItems: \"center\",\n// },\n\n// iconWrapper: {\n// height: \"22px\",\n// width: \"22px\",\n// // border: \"1px solid green\",\n// display: \"inline-block\",\n// marginRight: \"5px\",\n// },\n\n// icon: {\n// height: \"100%\",\n// width: \"100%\",\n// // border: \"1px solid purple\",\n// objectFit: \"contain\",\n// },\n// });\n\nconst useStyles = makeStyles({\n container: {\n width: \"270px\",\n height: \"420px\",\n background: \"#212429\",\n border: \"2px solid #212429\",\n borderRadius: \"8px\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n transition: \"0.3s ease\",\n cursor: \"pointer\",\n\n \"&:hover\": {\n transform: \"scale(1.015)\",\n border: \"2px solid #fff\",\n },\n },\n\n info: {\n // height: \"100%\",\n width: \"100%\",\n padding: \"10px\",\n // border: \"1px solid #ccc\",\n },\n\n imageContainer: {\n width: \"100%\",\n height: \"260px\",\n // border: \"1px solid #bbb\",\n borderRadius: \"8px\",\n overflow: \"hidden\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n marginBottom: \"10px\",\n },\n\n tokenImage: {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n },\n\n detailContainer: {\n width: \"100%\",\n height: \"130px\",\n padding: \"10px 10px\",\n background: \"black\",\n borderRadius: \"8px\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n },\n\n detail: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n\n price: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n\n button: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n alignItems: \"center\",\n padding: \"5px 2px\",\n textTransform: \"uppercase\",\n position: \"relative\",\n\n zIndex: \"10\",\n\n width: \"100px\",\n\n background: \"rgba(66, 255, 210, 0)\",\n borderRadius: \"8px\",\n\n transition: \"all 0.3s ease\",\n // border: \"2px solid rgba(66, 255, 210, 1)\",\n border: \"2px solid #33f246\",\n outline: \"none\",\n color: \"#33f246\",\n // color: \"rgba(66, 255, 210, 1)\",\n fontWeight: \"bold\",\n cursor: \"pointer\",\n fontSize: \"12px\",\n\n \"&:hover\": {\n // background: \"rgba(66, 255, 210, 1)\",\n background: \"#33f246\",\n color: \"#111111\",\n },\n },\n\n asterix: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n position: \"absolute\",\n right: \"-8px\",\n top: \"-10px\",\n fontSize: \"30px\",\n color: \"#33f246\",\n animation: \"$blink 1s linear infinite\",\n },\n\n \"@keyframes blink\": {\n \"0%\": {\n opacity: \"1\",\n },\n \"50%\": {\n opacity: \"0.3\",\n },\n \"100%\": {\n opacity: \"1\",\n },\n },\n\n btn: {\n fontWeight: \"bold\",\n color: \"#2de370\",\n textTransform: \"capitalize\",\n borderRadius: \"8px\",\n border: \"2px solid #2de370\",\n outline: \"none\",\n transition: \"0.3s ease\",\n cursor: \"pointer\",\n background: \"rgba(45, 227, 112, 0)\",\n padding: \"5px 8px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n\n \"&:hover\": {\n // color: \"#1fa14e\",\n background: \"rgba(45, 227, 112, 1)\",\n color: \"#fff\",\n },\n },\n\n acceptBtn: {\n fontWeight: \"bold\",\n color: \"#65aceb\",\n textTransform: \"capitalize\",\n borderRadius: \"8px\",\n border: \"2px solid #65aceb\",\n outline: \"none\",\n transition: \"0.3s ease\",\n cursor: \"pointer\",\n background: \"rgba(101, 172, 235, 0)\",\n padding: \"5px 8px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n\n \"&:hover\": {\n // color: \"#1fa14e\",\n background: \"rgba(101, 172, 235, 1)\",\n color: \"#fff\",\n },\n },\n\n delistBtn: {\n fontWeight: \"bold\",\n color: \"#e80000\",\n textTransform: \"capitalize\",\n borderRadius: \"8px\",\n border: \"2px solid #e80000\",\n outline: \"none\",\n transition: \"0.3s ease\",\n cursor: \"pointer\",\n background: \"rgba(232, 0, 0, 0)\",\n padding: \"5px 8px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n\n \"&:hover\": {\n // color: \"#1fa14e\",\n background: \"rgba(232, 0, 0, 1)\",\n color: \"#fff\",\n },\n },\n\n linkBtn: {\n fontWeight: \"bold\",\n color: \"#72b8db\",\n textTransform: \"capitalize\",\n outline: \"none\",\n transition: \"0.3s ease\",\n cursor: \"pointer\",\n background: \"transparent\",\n padding: \"5px 0\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n\n \"&:hover\": {\n color: \"#1182ba\",\n },\n },\n\n displayCenterButton: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n border: \"none\",\n background: \"transparent\",\n outline: \"none\",\n },\n\n delist: {\n fontWeight: \"bold\",\n color: \"#b30000\",\n textTransform: \"capitalize\",\n borderRadius: \"8px\",\n border: \"2px solid #b30000\",\n outline: \"none\",\n transition: \"0.3s ease\",\n cursor: \"pointer\",\n background: \"rgba(179, 0, 0, 0)\",\n padding: \"5px 8px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n\n \"&:hover\": {\n // color: \"#1fa14e\",\n background: \"rgba(179, 0, 0, 1)\",\n color: \"#fff\",\n },\n },\n\n iconWrapper: {\n height: \"22px\",\n width: \"22px\",\n // border: \"1px solid green\",\n display: \"inline-block\",\n marginRight: \"5px\",\n },\n\n icon: {\n height: \"100%\",\n width: \"100%\",\n // border: \"1px solid purple\",\n objectFit: \"contain\",\n },\n});\n\nconst MarketplaceItemCard = ({\n imgLink,\n nftName,\n tokenName,\n price,\n buyNow,\n acceptOffer,\n delist,\n nftContract,\n tokenId,\n itemId,\n seller,\n maxBidData: { bidId, bidder, offerPrice: topBid },\n}) => {\n const classes = useStyles();\n const history = useHistory();\n\n const { nftName: nftUrlText } = useParams();\n\n const [showBidBox, setShowBidBox] = useState(false);\n const [bidAmount, setBidAmount] = useState(0);\n\n const [latestBid, setLatesBid] = useState({});\n\n const userAccount = sessionStorage.getItem(\"user\");\n const { connectWallet, setShowModal, setNotificationModalState } =\n useContext(AppContext);\n\n // const acceptOffer = async (\n // seller,\n // nftContract,\n // tokenId,\n // itemId,\n // bidId,\n // bidder,\n // topBid\n // ) => {\n // try {\n // console.log(\"called acceptOffer()\");\n\n // if (topBid <= 0) {\n // return;\n // }\n\n // if (!!!userAccount || userAccount?.length <= 0) {\n // await connectWallet();\n // }\n\n // if (userAccount !== seller.toLowerCase().trim()) {\n // console.log(\"Only seller can cancel sale!\");\n // return;\n // }\n\n // setShowModal((prevState) => ({\n // ...prevState,\n // visible: true,\n // notification: true,\n // sell: false,\n // }));\n // setNotificationModalState((prevState) => ({\n // ...prevState,\n // loading: true,\n // loadingMessage: {\n // heading: \"Accepting Offer\",\n // subHeading: \"To accept this bid, confirm transaction in your wallet.\",\n // },\n // purpose: \"accept\",\n // }));\n\n // const web3Modal = new Web3Modal();\n // const connection = await web3Modal.connect();\n // const provider = new ethers.providers.Web3Provider(connection);\n\n // const signer = provider.getSigner();\n\n // const marketContract = new ethers.Contract(\n // nftMarketContractAddress,\n // NFTMarket.abi,\n // signer\n // );\n\n // const transaction = await marketContract[\n // \"acceptBid(address,uint256,uint256,bytes,address)\"\n // ](nftContract, tokenId, itemId, bidId, bidder);\n\n // await transaction.wait();\n\n // setNotificationModalState((prevState) => ({\n // ...prevState,\n // loading: false,\n // loadedMessage: {\n // heading: \"Congratulations! \",\n // subHeading: \"You have sucessfully sold your NFT!\",\n // },\n // type: \"success\",\n // primaryBtn: {\n // text: \"Close\",\n // },\n // }));\n\n // console.log(\"accepted offer successfully! Redirecting\");\n // } catch (error) {\n // let errorSubHeading = error.message;\n // if (error.code === 4001) {\n // errorSubHeading = \"User denied transaction!\";\n // }\n // setNotificationModalState((prevState) => ({\n // ...prevState,\n // loading: false,\n // type: \"error\",\n // primaryBtn: {\n // text: \"Close\",\n // },\n // purpose: \"\",\n // loadedMessage: {\n // heading: \"Error!\",\n // subHeading: errorSubHeading,\n // },\n // }));\n // console.log(\"error in acceptOffer(): \", error);\n // }\n // };\n\n const handleAcceptOffer = async (e) => {\n e.stopPropagation();\n await acceptOffer(\n seller,\n nftContract,\n tokenId,\n itemId,\n bidId,\n bidder,\n topBid\n );\n // window.location.reload();\n };\n\n const handleBuy = async (e) => {\n e.stopPropagation();\n await buyNow();\n };\n\n const handleDelist = async (e) => {\n e.stopPropagation();\n await delist();\n // window.location.reload();\n };\n\n const handleDetailPageRedirect = () => {\n history.push(`/marketplace/${tokenName}/${tokenId}`);\n };\n\n return (\n
\n
\n
\n {tokenName}\n
\n
\n
\n \n #{tokenId}\n \n \n
\n \"IOTX\"\n
\n {price}\n \n
\n
\n \n {tokenName}\n \n \n {topBid <= 0 ? \"Top Bid: No Bids\" : `Top Bid: ${topBid} IOTX`}\n \n
\n {/*
\n {userAccount !== seller.toLowerCase().trim() && (\n
\n handleBuy(e)}\n >\n buy now *\n \n
\n )}\n\n {userAccount === seller.toLowerCase().trim() && topBid > 0 && (\n
\n handleAcceptOffer(e)}\n >\n Accept Offer\n \n handleAcceptOffer(e)}\n >\n Delist\n \n
\n )}\n
*/}\n
\n {userAccount === seller.toLowerCase().trim() ? (\n <>\n handleDelist(e)}\n >\n Delist\n \n {topBid > 0 && (\n handleAcceptOffer(e)}\n >\n Accept Offer\n \n )}\n \n ) : (\n \n )}\n
\n
\n
\n
\n );\n};\n\nexport default MarketplaceItemCard;\n","import { Typography } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n // border: \"1px solid green\",\n height: \"70vh\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n },\n\n \"@keyframes loadingPulse\": {\n \"0%\": {\n opacity: \"1\",\n },\n \"50%\": {\n opacity: \"0.5\",\n },\n \"100%\": {\n opacity: \"1\",\n },\n },\n\n loading: {\n textTransform: \"uppercase\",\n fontWeight: \"900\",\n transform: \"scale(2)\",\n color: \"#e0e0e081\",\n // color: \"black\",\n opacity: \"1\",\n marginBottom: \"10px\",\n animation: \"$loadingPulse 2s ease-in-out infinite\",\n },\n animationWrapper: {\n // border: \"1px solid purple\",\n position: \"relative\",\n // background: \"yellow\",\n height: \"38px\",\n width: \"880px\",\n overflow: \"hidden\",\n },\n\n \"@keyframes slider\": {\n \"0%\": {\n transform: \"translateY(0px)\",\n },\n \"25%\": {\n transform: \"translateY(-32px)\",\n },\n \"50%\": {\n transform: \"translateY(-64px)\",\n },\n \"75%\": {\n transform: \"translateY(-96px)\",\n },\n },\n\n attrWrapper: {\n // border: \"1px solid green\",\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n width: \"880px\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-end\",\n alignItems: \"flex-end\",\n transform: \"translateY(0px)\",\n animation: \"$slider 6s ease infinite\",\n textAlign: \"right\",\n },\n}));\n\nconst Loading = () => {\n const classes = useStyles();\n return (\n
\n \n loading\n \n
\n
\n assets\n metadata\n images\n nfts\n
\n
\n
\n );\n};\n\nexport default Loading;\n","export const removeDuplicates = (a) => {\n var seen = {};\n var out = [];\n var len = a.length;\n var j = 0;\n for (var i = 0; i < len; i++) {\n var item = a[i];\n if (seen[item] !== 1) {\n seen[item] = 1;\n out[j++] = item;\n }\n }\n return out;\n}","import { useState, useEffect } from \"react\";\nimport { ethers } from \"ethers\";\n\nimport Web3 from \"web3\";\n\nimport { Link } from \"react-router-dom\";\nimport { Typography, Grid } from \"@material-ui/core\";\nimport SaleCard from \"../components/SaleCard\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nimport { nftMarketContractAddress, iotexPandaContractAddress } from \"../config\";\n// import IotexPanda from \"../artifacts/contracts/IotexPanda.sol/IotexPanda.json\";\nimport NFTMarket from \"../artifacts/contracts/NFTMarket.sol/NFTMarket.json\";\nimport MarketplaceItemCard from \"../components/Marketplace/MarketplaceItemCard/MarketplaceItemCard\";\nimport Loading from \"../components/Loading\";\n\nimport { removeDuplicates } from \"../utils/arrayMethods\";\n\nconst web3 = new Web3(\"https://babel-api.testnet.iotex.io\");\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n padding: theme.spacing(3),\n },\n captionContainer: {\n // border: \"1px solid green\",\n height: \"70vh\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n },\n\n caption: {\n textTransform: \"uppercase\",\n fontWeight: \"900\",\n // transform: \"scale(2)\",\n color: \"#e0e0e081\",\n // color: \"black\",\n opacity: \"1\",\n marginBottom: \"10px\",\n },\n}));\n\nconst Marketplace = () => {\n const classes = useStyles();\n\n const [nfts, setNfts] = useState([]);\n const [loadingState, setLoadingState] = useState(\"not-loaded\");\n\n const teamNFTs = sessionStorage.getItem(\"teamNFTs\");\n const [currentListedNFTs, setCurrentListedNFTs] = useState([]);\n\n const loadListedNFTs = async () => {\n const provider = new ethers.providers.JsonRpcProvider(\n \"https://babel-api.testnet.iotex.io\"\n );\n\n const marketContract = new web3.eth.Contract(\n NFTMarket.abi,\n nftMarketContractAddress\n );\n\n let data = await marketContract.methods.fetchMarketItems().call();\n\n console.log(\"the data from fetchMarketItems: \", data);\n\n // console.log('allContractList: ', allContractList)\n\n let nftContractsListed = data.map((d) => d.nftContract);\n nftContractsListed = removeDuplicates(nftContractsListed);\n\n console.log(\"the list after removing duplicates: \", nftContractsListed);\n\n const allNFTs = JSON.parse(teamNFTs);\n console.log(\"all NFTS: \", allNFTs);\n\n let finalList = allNFTs.filter(\n (NFT) => nftContractsListed.indexOf(NFT.contractAddress) !== -1 && NFT\n );\n\n setCurrentListedNFTs(() => finalList);\n console.log(\"finale: \", finalList);\n\n setLoadingState(() => \"loaded\");\n };\n\n const getListedNFTs = async (items) => {\n try {\n let nftContractsListed = items.map((nft) => nft.nftContract.trim());\n\n console.log(\"the listed nftContracts: \", nftContractsListed);\n\n nftContractsListed = removeDuplicates(nftContractsListed);\n\n console.log(\"the list after removing duplicates: \", nftContractsListed);\n\n const allNFTs = JSON.parse(teamNFTs);\n console.log(\"all NFTS: \", allNFTs);\n\n let finalList = allNFTs.filter((NFT) => {\n console.log(nftContractsListed.indexOf(NFT.contractAddress.trim()));\n console.log(NFT.contractAddress);\n return nftContractsListed.indexOf(NFT.contractAddress.trim());\n });\n\n setCurrentListedNFTs(() => finalList);\n console.log(\"finale: \", finalList);\n } catch (error) {\n console.log(error);\n }\n };\n\n useEffect(() => {\n loadListedNFTs();\n }, []);\n\n return (\n
\n {loadingState !== \"loaded\" ? (\n \n ) : currentListedNFTs && currentListedNFTs?.length > 0 ? (\n <>\n \n WELCOME TO THE MARKETPLACE\n \n \n \n {currentListedNFTs.map(\n ({\n contractAddress,\n cardImage,\n circularThumbnail,\n name,\n shortDescription,\n tokenName,\n }) => (\n \n \n \n )\n )}\n \n
\n \n ) : (\n
\n \n No items in marketplace!\n \n\n \n \n Mint\n {\" \"}\n NFTs and put them on sale!\n \n
\n )}\n
\n );\n\n return (\n
\n {loadingState === \"loaded\" ? (\n nfts && nfts.length ? (\n
\n
\n
\n {nfts.map((nft, i) => {\n // console.log(\"the nader bait nft: \", nft);\n return (\n \n );\n })}\n
\n
\n
\n ) : (\n

No items in marketplace!

\n )\n ) : (\n \n )}\n
\n );\n};\n\nexport default Marketplace;\n","import { useContext } from \"react\";\nimport { AppContext } from \"../context/AppProvider\";\n\nimport { Grid, Typography } from \"@material-ui/core\";\nimport SaleCard from \"../components/SaleCard\";\n\nimport { makeStyles } from \"@material-ui/styles\";\n\nconst useStyles = makeStyles({\n container: {\n marginTop: \"1rem\",\n padding: \"0 30px\",\n },\n});\n\n// const dummyData = [\n// // {\n// // id: 1,\n// // imgLink: \"https://source.unsplash.com/random\",\n// // nftName: \"Hunters\",\n// // nftDesc:\n// // \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Corporis quidem accusantium sunt impedit quis eos?\",\n// // },\n// {\n// id: 2,\n// imgLink: \"https://source.unsplash.com/random\",\n// nftName: \"IotexPanda\",\n// nftDesc:\n// \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Corporis quidem accusantium sunt impedit quis eos?\",\n// },\n// {\n// id: 3,\n// imgLink: \"https://source.unsplash.com/random\",\n// nftName: \"Mutant Ape Yacht Club\",\n// nftDesc:\n// \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Corporis quidem accusantium sunt impedit quis eos?\",\n// },\n// // {\n// // id: 4,\n// // imgLink: \"https://source.unsplash.com/random\",\n// // nftName: \"Fraternity\",\n// // nftDesc:\n// // \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Corporis quidem accusantium sunt impedit quis eos?\",\n// // },\n// ];\n\nconst Sale = () => {\n const classes = useStyles();\n const { allNFTs } = useContext(AppContext);\n\n console.log(\"is this sale comp getting rendered?\", allNFTs, typeof allNFTs);\n return (\n
\n \n Latest NFT Sales!\n \n \n {/* \n {dummyData.map(({ id, imgLink, nftName, nftDesc }) => (\n \n \n \n ))}\n */}\n\n \n {allNFTs.map(\n ({\n contractAddress,\n cardImage,\n name,\n shortDescription,\n circularThumbnail,\n tokenName,\n }) => (\n \n \n \n )\n )}\n \n
\n
\n );\n};\n\nexport default Sale;\n","import { makeStyles } from '@material-ui/core/styles'\n\nexport default makeStyles((theme) => ({\n mintBoard: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n },\n mintButton: {\n width: '200px',\n minWidth: '200px',\n fontWeight: 'bold',\n letterSpacing: '2px',\n color: 'yellow'\n }\n}))","import React from \"react\";\nimport PaidIcon from \"@mui/icons-material/Paid\";\n\nimport useStyles from \"./styles\";\n\nimport StyledLoadingButton from \"../StyledLoadingButton/StyledLoadingButton\";\n\nconst MintBoard = ({ mintPanda, buttonState }) => {\n const classes = useStyles();\n return (\n
\n {/* }\n connect={false}\n clickFunction={buttonState === \"loaded\" ? mintPanda : null}\n color=\"green\"\n fontColor=\"white\"\n /> */}\n }\n connect={false}\n clickFunction={buttonState === \"loaded\" ? mintPanda : null}\n color=\"green\"\n hoverFontColor=\"white\"\n fontColor=\"white\"\n bgColor=\"#223824\"\n shadowColor=\"#223824\"\n bgColorHover=\"#18AA48\"\n shadowColorHover=\"#18AA48\"\n />\n
\n );\n};\n\nexport default MintBoard;\n","import { makeStyles } from \"@material-ui/styles\";\n\nexport default makeStyles((theme) => ({\n hero: {\n maxHeight: \"200px\",\n height: \"200px\",\n overflow: \"hidden\",\n borderTopLeftRadius: \"10px\",\n borderTopRightRadius: \"10px\",\n // border: '1px solid white'\n },\n image: {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n // objectPosition: 'left top'\n },\n}));\n","import useStyles from \"./styles\";\n\nconst Hero = ({ imageUrl, nftName }) => {\n const classes = useStyles();\n return (\n
\n {nftName}\n
\n );\n};\n\nexport default Hero;\n","import { Typography } from \"@material-ui/core\";\n\n// import useStyles from \"./styles\";\n\nimport { makeStyles } from \"@material-ui/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n heading: {\n marginTop: \"2rem\",\n fontWeight: \"bold\",\n },\n description: {\n marginBottom: \"2rem\",\n },\n}));\n\nconst NFTSaleHeader = ({ nftName, longDescription }) => {\n const classes = useStyles();\n return (\n <>\n \n {nftName}\n \n \n {longDescription}\n \n \n );\n};\n\nexport default NFTSaleHeader;\n","import { makeStyles } from \"@material-ui/core/styles\";\n\nexport default makeStyles(theme => ({\n container: {\n position: 'relative',\n top: '0px',\n // background: '#031747',\n // background: '#010a1f',\n background: '#fff',\n borderRadius: '6px',\n textAlign: 'center',\n minWidth: '120px',\n height: '80px',\n padding: '10px',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-around',\n alignItems: 'center',\n color: 'white',\n boxShadow: '0 5px 0 #777',\n transition: '0.2s ease-in-out',\n cursor: 'context-menu',\n\n '&:hover': {\n boxShadow: '0 0 0 #777',\n top: '5px',\n }\n }\n}))","import { Typography } from \"@material-ui/core\";\n\nimport useStyles from \"./styles\";\n\nconst Statistic = ({ stat, value }) => {\n const classes = useStyles();\n return (\n
\n \n {stat}\n \n \n {value}\n \n
\n );\n};\n\nexport default Statistic;\n","import { Grid } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nimport \"react-loading-skeleton/dist/skeleton.css\";\nimport { CircleSpinner } from \"react-spinners-kit\";\nimport Statistic from \"./Statistic/Statistic\";\n\nconst useStyles = makeStyles((theme) => ({\n statsGrid: {\n marginTop: theme.spacing(6),\n marginBottom: theme.spacing(6),\n },\n textContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n minHeight: \"80px\",\n },\n\n label: {\n textTransform: \"uppercase\",\n },\n\n value: {\n color: \"#78081C\",\n fontWeight: \"bold\",\n fontSize: \"2em\",\n },\n}));\n\nconst Statistics = ({ stats: { loading, total, available, price, sold } }) => {\n const classes = useStyles();\n\n return (\n \n \n }\n />\n \n \n }\n />\n \n \n }\n />\n \n \n }\n />\n \n \n );\n};\n\nexport default Statistics;\n","import { useState, useEffect, useContext } from \"react\";\nimport { ethers } from \"ethers\";\n\nimport Web3 from \"web3\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useParams } from \"react-router-dom\";\nimport MintBoard from \"../components/MintBoard/MintBoard\";\nimport Hero from \"../components/NFTSale/Hero\";\nimport NFTSaleHeader from \"../components/NFTSale/NFTSaleHeader/NFTSaleHeader\";\nimport Statistics from \"../components/NFTSale/NFTSaleHeader/Statistics/Statistics\";\n\nimport { AppContext } from \"../context/AppProvider\";\n\nimport { toast } from \"react-toastify\";\nimport \"react-toastify/dist/ReactToastify.css\";\n\nconst IOTEX_RPC_URL = {\n testnet: \"https://babel-api.testnet.iotex.io\",\n mainnet: \"\",\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n padding: theme.spacing(3),\n },\n}));\n\nconst web3 = new Web3(window.ethereum);\nconst CHAIN_ID = 4690;\n\nconst NFTSale = () => {\n const { nftName } = useParams();\n const classes = useStyles();\n\n const userAccount = sessionStorage.getItem(\"user\");\n const teamNFTs = sessionStorage.getItem(\"teamNFTs\");\n\n const {\n isMetaMask,\n connectWallet,\n networkChainId,\n setShowModal,\n setNotificationModalState,\n } = useContext(AppContext);\n\n const [buttonState, setButtonState] = useState(\"loaded\");\n\n const [currentNFT, setCurrentNFT] = useState({});\n\n const [stats, setStats] = useState({\n loading: true,\n total: 0,\n available: 0,\n price: 0,\n sold: 0,\n });\n\n const notification = (theMessage, type) => {\n if (type === \"success\") {\n return toast.success(theMessage, {\n position: \"top-center\",\n autoClose: 5000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n });\n } else if (type === \"error\") {\n return toast.error(theMessage, {\n position: \"top-center\",\n autoClose: 5000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n });\n }\n };\n\n useEffect(() => {\n getStats();\n }, []);\n\n async function getStats() {\n try {\n setStats((prevState) => ({ ...prevState, loading: true }));\n const provider = new ethers.providers.JsonRpcProvider(\n IOTEX_RPC_URL.testnet\n );\n\n console.log(\"the nft name variable: \", nftName);\n\n const requiredNFT = JSON.parse(teamNFTs)?.find(\n (NFT) => NFT.tokenName === nftName && NFT\n );\n\n setCurrentNFT(() => requiredNFT);\n\n console.log(\"requiredNFT: \", requiredNFT);\n\n let contractAddress = requiredNFT?.contractAddress;\n let ABI = requiredNFT?.abi;\n\n console.log(contractAddress);\n console.log(ABI);\n\n // const contract = new ethers.Contract(contractAddress, ABI.abi, provider);\n const contract = new ethers.Contract(contractAddress, ABI.abi, provider);\n\n let total = await contract.maxSupply();\n total = total.toLocaleString();\n let available = await contract.availableTokenCount();\n available = available.toLocaleString();\n let price = await contract.getTokenPrice();\n price = ethers.utils.formatUnits(price.toString(), \"ether\");\n let supply = await contract.totalSupply();\n supply = supply.toLocaleString();\n\n // console.log(\"available: \", available, typeof available);\n // console.log(\"price: \", price, typeof price);\n // console.log(\"supply: \", supply, typeof supply);\n\n setStats((prevState) => ({\n ...prevState,\n loading: false,\n total: total,\n available: available,\n price: price + \" IOTX\",\n sold: supply,\n }));\n } catch (error) {\n console.log(\"error: \", error);\n setStats((prevState) => ({\n ...prevState,\n loading: false,\n total: \"Error\",\n available: \"Error\",\n price: \"Error\",\n sold: \"Error\",\n }));\n }\n }\n\n async function getStatsWeb3() {\n try {\n setStats((prevState) => ({ ...prevState, loading: true }));\n // await window.ethereum.enable();\n // const provider = new ethers.providers.JsonRpcProvider(\n // // \"https://babel-api.testnet.iotex.io\"\n // \"https://babel-api.testnet.iotex.io\"\n // );\n\n const requiredNFT = JSON.parse(teamNFTs)?.find(\n (NFT) => NFT.name === nftName && NFT\n );\n\n setCurrentNFT(() => requiredNFT);\n\n // console.log(\"requiredNFT: \", requiredNFT);\n\n let contractAddress = requiredNFT?.contractAddress;\n let ABI = requiredNFT?.abi;\n\n console.log(contractAddress);\n console.log(ABI);\n\n const contract = new web3.eth.Contract(ABI.abi, contractAddress);\n\n let total = await contract.methods.maxSupply.call((req, res) => {\n if (req) {\n console.log(\"request\");\n } else if (res) {\n console.log(\"response\");\n }\n });\n console.log(\"code reached\");\n // total = total.toLocaleString();\n // total = JSON.stringify(total);\n console.log(\"total:\", total);\n let available = await contract.methods.availableTokenCount().call();\n available = available.toLocaleString();\n let price = contract.methods.getTokenPrice().call();\n // console.log(\"the price: \", await price, typeof (await price));\n // price = ethers.utils.formatUnits(price.toString(), \"ether\");\n let supply = contract.methods.totalSupply().call();\n supply = supply.toLocaleString();\n\n // console.log(\"available: \", available, typeof available);\n // console.log(\"price: \", price, typeof price);\n // console.log(\"supply: \", supply, typeof supply);\n\n setStats((prevState) => ({\n ...prevState,\n loading: false,\n total: total,\n available: available,\n price: price + \" IOTX\",\n sold: supply,\n }));\n } catch (error) {\n console.log(\"error: \", error);\n setStats((prevState) => ({\n ...prevState,\n loading: false,\n total: \"Error\",\n available: \"Error\",\n price: \"Error\",\n sold: \"Error\",\n }));\n }\n }\n\n const handleMessage = () => {\n console.log(\"SOMETHING JUST HAPPENED!\");\n };\n\n const mint = async (signer) => {\n try {\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n sell: false,\n makeOffer: false,\n }));\n // console.log(\"the signer: \", signer, typeof signer);\n // console.log(\"isMetamask: \", isMetaMask);\n // console.log(\"networkChainID: \", networkChainId, typeof networkChainId);\n // console.log(\"CHAIN_ID: \", CHAIN_ID, typeof CHAIN_ID);\n if (!isMetaMask) {\n console.log(\"hit 1\");\n return;\n }\n\n if (parseInt(networkChainId) !== CHAIN_ID) {\n console.log(\"hit 2\");\n return;\n }\n\n if (userAccount && userAccount.length > 0) {\n console.log(\"hit 3\");\n connectWallet();\n }\n\n console.log(\"pulled it off\");\n setButtonState(\"loading\");\n\n // await window.ethereum.enable();\n\n // const requiredNFT = JSON.parse(teamNFTs)?.find(\n // (NFT) => NFT.name === nftName && NFT\n // );\n\n console.log(\"requiredNFT: \", currentNFT);\n\n let contractAddress = currentNFT?.contractAddress;\n let ABI = currentNFT?.abi;\n\n const contract = new web3.eth.Contract(ABI.abi, contractAddress);\n\n let price = await contract.methods.getTokenPrice().call();\n\n console.log(\"the price called from web3: \", price, typeof price);\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: true,\n loadingMessage: {\n heading: \"Confirm this operation in wallet.\",\n subHeading: \"Your NFT is on it's way! Be patient.\",\n },\n }));\n\n await contract.methods\n .buy()\n .send({ from: signer, value: price })\n .on(\"receipt\", (receipt) => {\n console.log(\"tx receipt: \", receipt);\n let successMessage = \"Minted Successfully!\";\n notification(successMessage, \"success\");\n getStats();\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n loadedMessage: {\n heading: \"Success!\",\n subHeading: \"You have purchased this NFT sucessfully.\",\n },\n type: \"success\",\n primaryBtn: {\n text: \"Want to mint more?\",\n },\n secondaryBtn: {\n visible: true,\n text: \"See this NFT\",\n link: `/my-assets/${nftName}/`,\n },\n }));\n });\n\n // .on(\"error\", (error) => console.log(\"trxn error: \", error));\n\n setButtonState(\"loaded\");\n console.log(\"finished waiting for transaction\");\n } catch (error) {\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n secondaryBtn: {\n visible: false,\n text: \"\",\n link: \"\",\n },\n }));\n console.log(\"the mint error: \", error);\n let errorSubHeading = \"Unable to mint!\";\n let errorObj = JSON.parse(JSON.stringify(error));\n console.log(\"code\", JSON.stringify(error));\n if (errorObj?.error?.code === -32603) {\n errorSubHeading = \"Transaction ran out of gas\";\n } else if (errorObj?.error?.code === -32000) {\n errorSubHeading = \"Cannot estimate gas\";\n } else if (errorObj?.code === -32000) {\n errorSubHeading = \"Out of gas\";\n } else if (errorObj?.code === 4001) {\n errorSubHeading = \"User has denied the transcation! Try again.\";\n } else {\n console.log(\"error: \", errorObj?.error?.code);\n }\n setNotificationModalState((prevState) => ({\n ...prevState,\n loadedMessage: {\n heading: \"Error!\",\n subHeading: errorSubHeading,\n },\n }));\n setButtonState(\"loaded\");\n notification(errorSubHeading, \"error\");\n console.log(\"error: \", errorObj?.error?.code);\n }\n };\n\n return (\n
\n \n \n
\n \n mint(userAccount)}\n />\n
\n );\n};\n\nexport default NFTSale;\n","import { Typography } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n toolbar: {\n height: \"80px\",\n marginBottom: theme.spacing(1),\n },\n root: {\n padding: theme.spacing(3),\n },\n}));\n\nconst AboutUs = () => {\n const classes = useStyles();\n return (\n
\n
\n
\n \n About Us\n \n \n Lorem ipsum dolor sit amet consectetur, adipisicing elit. Eos, quo,\n nam aspernatur praesentium quibusdam necessitatibus cumque temporibus\n delectus aliquid neque dolorem amet, nihil eius. Sapiente, reiciendis\n quasi quia, repudiandae natus rerum nobis odio deserunt quisquam\n excepturi illo dolores harum minima ex molestias earum numquam a\n expedita ipsa nam accusantium rem! Tempore minus magnam voluptate,\n asperiores impedit voluptatum expedita quo culpa quasi nulla\n doloremque dolorum neque perferendis, voluptatem fugit! At, maxime\n ducimus error et dolores nulla vel iure qui repellendus nihil! Fugiat\n esse necessitatibus minima natus at tenetur autem, tempore obcaecati\n ducimus quidem eaque nesciunt ut corrupti itaque. Doloribus, est\n dolor.\n \n
\n
\n );\n};\n\nexport default AboutUs;\n","import { makeStyles } from \"@material-ui/styles\";\n\nconst useStyles = makeStyles({\n statContainer: {\n // border: \"2px solid blue\",\n position: \"relative\",\n width: \"212px\",\n height: \"182px\",\n background: \"#111\",\n borderRadius: \"8px\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n\n stat: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n // border: \"1px solid white\",\n marginBottom: \"16px\",\n },\n\n iconWrapper: {\n width: \"44px\",\n height: \"44px\",\n marginRight: \"8px\",\n },\n\n icon: {\n height: \"100%\",\n width: \"100%\",\n objectFit: \"cover\",\n },\n\n figure: {\n fontFamily: \"Inter\",\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fontSize: \"48px\",\n lineHeight: \"58px\",\n color: \"#FFF\",\n },\n\n caption: {\n fontFamily: \"Inter\",\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fontSize: \"16px\",\n lineHeight: \"150%\",\n color: \"#DDD\",\n // border: \"1px solid white\",\n },\n});\n\nconst StatCard = ({ icon, iconAlt, figure, caption }) => {\n const classes = useStyles();\n return (\n
\n
\n {icon && (\n
\n {iconAlt}\n
\n )}\n

{figure}

\n
\n

{caption}

\n
\n );\n};\n\nexport default StatCard;\n","import { makeStyles } from \"@material-ui/core/styles\";\n\nexport default makeStyles(theme => ({\n gridContainer: {\n minHeight: '100px',\n height: '100px',\n position: 'relative',\n top: '-50px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-end'\n },\n gridItem: {\n position: 'relative',\n flex: '1',\n\n },\n middleImage: {\n flex: '1',\n maxWidth: '100px',\n width: '100px',\n height: '100px',\n overflow: 'hidden',\n borderRadius: '50%',\n border: '5px solid white',\n },\n iconImage: {\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n }\n}))","import { makeStyles } from \"@material-ui/styles\";\nimport DoubleBar from \"./DoubleBar\";\n\nconst useStyles = makeStyles({\n infoBoxContainer: {\n position: \"relative\",\n width: \"920px\",\n height: \"475px\",\n // border: \"2px solid blue\",\n },\n\n circularImageWrapper: {\n position: \"absolute\",\n zIndex: \"10\",\n top: \"0\",\n left: \"56px\",\n width: \"116px\",\n height: \"116px\",\n borderRadius: \"100px\",\n overflow: \"hidden\",\n },\n\n circularImage: {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n },\n\n infoBox: {\n position: \"absolute\",\n bottom: \"0\",\n left: \"0\",\n width: \"920px\",\n height: \"387px\",\n borderRadius: \"8px\",\n background: \"#111\",\n padding: \"56px\",\n paddingTop: \"60px\",\n },\n\n nftName: {\n fontFamily: \"Inter\",\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fontSize: \"48px\",\n lineHeight: \"58px\",\n color: \"#FFF\",\n },\n\n creator: {\n fontFamily: \"Inter\",\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fontSize: \"22px\",\n lineHeight: \"150%\",\n color: \"#DDD\",\n },\n\n desc: {\n fontFamily: \"Inter\",\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fontSize: \"16px\",\n lineHeight: \"150%\",\n color: \"#DDD\",\n },\n});\n\nconst InfoBox = ({ nftName, creator, desc, circularThumbnail }) => {\n const classes = useStyles();\n return (\n
\n
\n \n
\n
\n
\n

{nftName}

\n

{`Created by ${creator}`}

\n
\n \n
\n

{desc}

\n
\n
\n
\n );\n};\n\nexport default InfoBox;\n","import { makeStyles } from \"@material-ui/styles\";\nimport StatCard from \"../components/StatCard\";\n\nimport Skeleton from \"react-loading-skeleton\";\nimport \"react-loading-skeleton/dist/skeleton.css\";\n\nimport iotxIcon from \"../assets/icons/iotex.png\";\nimport InfoBox from \"../components/InfoBox\";\n\nconst useStyles = makeStyles({\n infoContainer: {\n // marginTop: \"256px\",\n marginTop: \"40px\",\n padding: \"0 64px\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-end\",\n marginBottom: \"3rem\",\n },\n\n statBoxes: {\n display: \"grid\",\n gridTemplateColumns: \"1fr 1fr\",\n gap: \"1.7rem\",\n // height: \"387px\",\n // width: \"448px\",\n // gap: \"2rem\",\n // border: \"1px solid white\",\n },\n});\n\nconst InfoContainer = ({ requiredNFT }) => {\n const classes = useStyles();\n return (\n
\n \n
\n \n \n \n \n
\n
\n );\n};\n\nexport default InfoContainer;\n","import { makeStyles } from \"@material-ui/styles\";\nimport { Link } from \"react-router-dom\";\nimport MarketplaceItemCard from \"../components/Marketplace/MarketplaceItemCard/MarketplaceItemCard\";\n\nconst useStyles = makeStyles({\n container: {\n marginBottom: \"3rem\",\n padding: \"0 64px\",\n },\n\n nftCards: {\n // border: \"1px solid white\",\n display: \"grid\",\n placeItems: \"center\",\n gridTemplateColumns: \"repeat(4, 1fr)\",\n gap: \"2rem 1rem\",\n },\n});\n\nconst MarketplaceItems = ({\n nfts,\n buyNow,\n acceptOffer,\n delist,\n requiredNFT,\n}) => {\n const classes = useStyles();\n return (\n
\n
subnav
\n
\n {nfts.map((nft) => {\n return (\n buyNow(nft)}\n acceptOffer={acceptOffer}\n delist={() => delist(nft)}\n tokenName={requiredNFT?.tokenName}\n nftContract={nft.nftContract}\n tokenId={nft.tokenId}\n itemId={nft.itemId}\n seller={nft.seller.toLowerCase()}\n maxBidData={nft.maxBidData}\n />\n );\n })}\n
\n
\n );\n};\n\nexport default MarketplaceItems;\n","import { useState, useEffect, useContext } from \"react\";\nimport { useParams, useHistory } from \"react-router-dom\";\nimport { ethers } from \"ethers\";\nimport axios from \"axios\";\nimport Web3 from \"web3\";\nimport Web3Modal from \"web3modal\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { Typography, Grid } from \"@material-ui/core\";\n\nimport { ImpulseSpinner } from \"react-spinners-kit\";\n\nimport { AppContext } from \"../context/AppProvider\";\nimport Hero from \"../components/NFTSale/Hero\";\nimport MarketplaceSaleHeader from \"../components/Marketplace/MarketplaceSaleHeader/MarketplaceSaleHeader\";\nimport MarketplaceItemCard from \"../components/Marketplace/MarketplaceItemCard/MarketplaceItemCard\";\nimport Loading from \"../components/Loading\";\n\nimport { nftMarketContractAddress } from \"../config\";\nimport NFTMarket from \"../artifacts/contracts/NFTMarket.sol/NFTMarket.json\";\nimport InfoContainer from \"../containers/InfoContainer\";\nimport MarketplaceItems from \"../containers/MarketplaceItems\";\n\nconst IOTEX_RPC_URL = {\n testnet: \"https://babel-api.testnet.iotex.io\",\n mainnet: \"\",\n};\n\nlet web3 = new Web3(IOTEX_RPC_URL.testnet);\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n position: \"relative\",\n },\n\n loadingContainer: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"300px\",\n },\n\n root: {\n // padding: theme.spacing(3),\n height: \"100%\",\n },\n captionContainer: {\n // border: \"1px solid green\",\n height: \"70vh\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n },\n\n caption: {\n textTransform: \"uppercase\",\n fontWeight: \"900\",\n // transform: \"scale(2)\",\n color: \"#e0e0e081\",\n // color: \"black\",\n opacity: \"1\",\n marginBottom: \"10px\",\n },\n\n gridItem: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n // border: \"1px solid green\",\n },\n\n mainContent: {\n display: \"flex\",\n height: \"100%\",\n },\n\n filterWrapper: {\n flex: \"3\",\n border: \"1px solid teal\",\n borderLeft: \"none\",\n borderTop: \"none\",\n height: \"500px\",\n },\n\n saleWrapper: {\n flex: \"9\",\n border: \"1px solid teal\",\n borderLeft: \"none\",\n borderTop: \"none\",\n height: \"500px\",\n },\n\n headerWrapper: {\n height: \"100px\",\n borderBottom: \"1px solid teal\",\n },\n\n saleCardWrapper: {\n padding: \"20px 20px\",\n },\n\n heading: {\n padding: \"10px 20px\",\n borderBottom: \"1px solid teal\",\n },\n\n sortWrapper: {\n padding: \"10px 20px\",\n },\n}));\n\nconst MarketplaceSale = () => {\n const classes = useStyles();\n const { nftName } = useParams();\n const history = useHistory();\n\n const [loadingState, setLoadingState] = useState(\"loading\");\n const [cardsLoadingState, setCardsLoadingState] = useState(true);\n\n const teamNFTs = sessionStorage.getItem(\"teamNFTs\");\n const [nfts, setNfts] = useState([]);\n\n const [requiredNFT, setRequiredNFT] = useState({});\n\n const userAccount = sessionStorage.getItem(\"user\");\n\n const {\n connectWallet,\n notification,\n setRequiredNftName,\n // requiredNFT,\n setShowModal,\n setNotificationModalState,\n } = useContext(AppContext);\n\n const loadListedNFTs = async () => {\n setCardsLoadingState(() => true);\n const provider = new ethers.providers.JsonRpcProvider(\n IOTEX_RPC_URL.testnet\n );\n\n const singleNFT = JSON.parse(teamNFTs)?.find(\n (NFT) => NFT.tokenName === nftName && NFT\n );\n\n setRequiredNFT(() => ({\n ...singleNFT,\n maxSupply: 0,\n numOfOwners: 0,\n floorPrice: 0,\n }));\n\n let contractAddress = singleNFT?.contractAddress;\n let ABI = singleNFT?.abi;\n\n const tokenContract = new ethers.Contract(\n contractAddress,\n ABI.abi,\n provider\n );\n\n let total = await tokenContract.maxSupply();\n total = total.toLocaleString();\n setRequiredNFT((prevState) => ({ ...prevState, maxSupply: total }));\n\n const marketContract = new web3.eth.Contract(\n NFTMarket.abi,\n nftMarketContractAddress\n );\n\n let data = await marketContract.methods\n .fetchItemsCreated(contractAddress)\n .call();\n\n console.log(\"the data from fetchItemsCreated: \", data);\n\n let name = await tokenContract.name();\n\n const items = await Promise.all(\n data.map(async (i) => {\n const tokenUri = await tokenContract.tokenURI(i.tokenId);\n console.log(\"tokenUri: \", tokenUri);\n const meta = await axios.get(tokenUri);\n console.log(\"meta: \", meta);\n let price = ethers.utils.formatUnits(i.price.toString(), \"ether\");\n\n const maxBidData = await getMaxBid(marketContract, i.itemId);\n\n console.log(\"the max bid from MarketplaceSale is: \", maxBidData);\n\n let item = {\n itemId: i.itemId,\n nftContract: i.nftContract,\n tokenId: parseInt(i.tokenId),\n seller: i.seller,\n owner: i.owner,\n price: price,\n sold: i.sold,\n removedFromMarketplace: i.removedFromMarketplace,\n image: meta.data.image,\n name: name,\n description: meta.data.description,\n maxBidData: maxBidData,\n };\n return item;\n })\n );\n\n const owners = [...new Set(items.map((item) => item.seller))];\n const floorPrice = Math.min(...items.map((item) => parseInt(item.price)));\n\n console.log(\"the owners Array: \", owners);\n\n setRequiredNFT((prevState) => ({\n ...prevState,\n numOfOwners: owners.length,\n floorPrice: floorPrice,\n }));\n\n // console.log(\"marketItem NFTS: \", items);\n setNfts(() => items);\n setCardsLoadingState(() => false);\n };\n\n const getMaxBid = async (contract, itemId) => {\n try {\n const latestBidData = await contract.methods\n .bidsByItemId(parseInt(itemId))\n .call();\n\n // const coingeckoApi =\n // \"https://api.coingecko.com/api/v3/simple/price?ids=iotex&vs_currencies=usd\";\n // const response = await axios(coingeckoApi);\n // const iotexUsdPrice = await response?.data?.iotex?.usd;\n const iotexUsdPrice = 0.11;\n console.log(\"latestBidData: \", latestBidData);\n\n const currentTimestamp = Math.floor(new Date().getTime() / 1000);\n\n const bidDetails = latestBidData\n .map((bidDatum) => {\n const price = web3.utils.fromWei(bidDatum?.price, \"ether\");\n\n const usdPrice = iotexUsdPrice * price;\n\n let timeDiff = bidDatum.expiresAt - currentTimestamp;\n\n let expiresAt =\n timeDiff <= 0\n ? \"Bid Expired\"\n : timeDiff / 86400 > 1\n ? `in about ${Math.floor(timeDiff / 86400)} days`\n : timeDiff / 3600 > 1\n ? `in about ${Math.floor(timeDiff / 3600)} hours`\n : timeDiff / 60 > 1\n ? `in about ${Math.floor(timeDiff / 60)} minutes`\n : `in about ${Math.floor(timeDiff)} seconds`;\n\n return {\n bidId: bidDatum.bidID,\n offerPrice: parseInt(price),\n usdPrice: usdPrice.toFixed(2),\n expiresAt: expiresAt,\n bidder: bidDatum.bidder,\n };\n })\n .filter((bidDatum) => bidDatum.expiresAt !== \"Bid Expired\");\n\n if (bidDetails.length <= 0) {\n return {\n bidId: \"\",\n bidder: \"\",\n offerPrice: 0,\n };\n }\n\n let maxBidData = {\n bidId: \"\",\n bidder: \"\",\n offerPrice: 0,\n };\n for (let i = 0; i < bidDetails.length; i++) {\n const { offerPrice } = bidDetails[i];\n if (offerPrice > maxBidData.offerPrice) {\n // maxPrice.price = price;\n maxBidData.bidId = bidDetails[i].bidId;\n maxBidData.bidder = bidDetails[i].bidder;\n maxBidData.offerPrice = bidDetails[i].offerPrice;\n }\n }\n\n console.log(\"maxBidData: \", maxBidData);\n\n return maxBidData;\n } catch (error) {\n console.log(\"error fetching bids: \", error);\n }\n };\n\n const buyNow = async ({ seller, nftContract, tokenId, itemId, price }) => {\n try {\n console.log(\"called buyNow()\");\n\n if (!!!userAccount || userAccount?.length <= 0) {\n await connectWallet();\n }\n\n if (userAccount.trim() === seller.toLowerCase().trim()) {\n notification(\"Seller cannot place buy!\", \"error\");\n console.log(\"Seller cannot place buy\");\n return;\n }\n\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n // sell: false,\n }));\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: true,\n loadingMessage: {\n heading: \"Purchase\",\n subHeading:\n \"To continue purchase, confirm transaction from your wallet.\",\n },\n purpose: \"buyNow\",\n }));\n\n web3 = new Web3(window.ethereum);\n await window.ethereum.enable();\n const contract = new web3.eth.Contract(\n NFTMarket.abi,\n nftMarketContractAddress\n );\n\n const weiPrice = web3.utils.toWei(price.toString(), \"ether\");\n console.log(\"bid amount(wei): \", weiPrice);\n\n await contract.methods\n .createMarketSale(nftContract, tokenId, itemId)\n .send({ from: userAccount, value: weiPrice })\n .on(\"receipt\", (receipt) => {\n console.log(\"tx receipt: \", receipt);\n let successMessage = \"Bought Successfully!\";\n notification(successMessage, \"success\");\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n loadedMessage: {\n heading: \"Success! \",\n subHeading: \"You have Sucessfully purchased this NFT.\",\n },\n type: \"success\",\n primaryBtn: {\n text: \"Go to My NFT\",\n },\n }));\n });\n\n // .on(\"error\", (error) => console.log(\"trxn error: \", error));\n\n console.log(\"finished waiting for transaction\");\n } catch (error) {\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n purpose: \"\",\n }));\n // let errorSubHeading = \"Unable to transfer!\";\n let errorSubHeading = error.message;\n if (error.code === 4001) {\n errorSubHeading = \"User denied transaction!\";\n }\n setNotificationModalState((prevState) => ({\n ...prevState,\n loadedMessage: {\n heading: \"Error!\",\n subHeading: errorSubHeading,\n },\n }));\n console.log(\"error in buyNow(): \", error, typeof error);\n }\n };\n\n const acceptOffer = async (\n seller,\n nftContract,\n tokenId,\n itemId,\n bidId,\n bidder,\n topBid\n ) => {\n try {\n console.log(\"called acceptOffer()\");\n\n if (topBid <= 0) {\n return;\n }\n\n if (!!!userAccount || userAccount?.length <= 0) {\n await connectWallet();\n }\n\n if (userAccount !== seller.toLowerCase().trim()) {\n console.log(\"Only seller can cancel sale!\");\n return;\n }\n\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n // sell: false,\n }));\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: true,\n loadingMessage: {\n heading: \"Accepting Offer\",\n subHeading: \"To accept this bid, confirm transaction in your wallet.\",\n },\n purpose: \"accept\",\n }));\n\n const web3Modal = new Web3Modal();\n const connection = await web3Modal.connect();\n const provider = new ethers.providers.Web3Provider(connection);\n\n const signer = provider.getSigner();\n\n const marketContract = new ethers.Contract(\n nftMarketContractAddress,\n NFTMarket.abi,\n signer\n );\n\n const transaction = await marketContract[\n \"acceptBid(address,uint256,uint256,bytes,address)\"\n ](nftContract, tokenId, itemId, bidId, bidder);\n\n await transaction.wait();\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n loadedMessage: {\n heading: \"Congratulations! \",\n subHeading: \"You have sucessfully sold your NFT!\",\n },\n type: \"success\",\n primaryBtn: {\n text: \"Close\",\n },\n }));\n\n console.log(\"accepted offer successfully! Redirecting\");\n } catch (error) {\n let errorSubHeading = error.message;\n if (error.code === 4001) {\n errorSubHeading = \"User denied transaction!\";\n }\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n purpose: \"\",\n loadedMessage: {\n heading: \"Error!\",\n subHeading: errorSubHeading,\n },\n }));\n console.log(\"error in acceptOffer(): \", error);\n }\n };\n\n const cancelSale = async ({ seller, nftContract, tokenId, itemId }) => {\n try {\n console.log(\"called cancelSale()\");\n\n if (!!!userAccount || userAccount?.length <= 0) {\n await connectWallet();\n }\n\n if (userAccount !== seller.toLowerCase().trim()) {\n console.log(\"Only seller can cancel sale!\");\n return;\n }\n\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n // sell: false,\n }));\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: true,\n loadingMessage: {\n heading: \"Delisting Item\",\n subHeading: \"To continue, confirm transaction in your wallet.\",\n },\n purpose: \"cancelSale\",\n }));\n\n const web3Modal = new Web3Modal();\n const connection = await web3Modal.connect();\n const provider = new ethers.providers.Web3Provider(connection);\n\n const signer = provider.getSigner();\n\n const marketContract = new ethers.Contract(\n nftMarketContractAddress,\n NFTMarket.abi,\n signer\n );\n\n const transaction = await marketContract[\n \"removeMarketItem(address,uint256,uint256)\"\n ](nftContract, tokenId, itemId);\n\n await transaction.wait();\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n loadedMessage: {\n heading: \"Success! \",\n subHeading: \"You have sucessfully removed your NFT from sale.\",\n },\n type: \"success\",\n primaryBtn: {\n text: \"Close\",\n },\n }));\n\n console.log(\"cancelled successfully! Redirecting\");\n } catch (error) {\n // let errorSubHeading = \"Unable to transfer!\";\n let errorSubHeading = error.message;\n if (error.code === 4001) {\n errorSubHeading = \"User denied transaction!\";\n }\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n purpose: \"\",\n loadedMessage: {\n heading: \"Error!\",\n subHeading: errorSubHeading,\n },\n }));\n console.log(\"error in cancelSale(): \", error);\n }\n };\n\n useEffect(() => {\n setLoadingState(() => \"loading\");\n setRequiredNftName(() => nftName);\n loadListedNFTs();\n setLoadingState(() => \"loaded\");\n }, [nftName]);\n // }, [nftName, requiredNFT]);\n\n useEffect(() => {}, [nfts]);\n\n return (\n
\n {loadingState === \"loaded\" ? (\n <>\n \n {cardsLoadingState ? (\n
\n \n
\n ) : (\n \n )}\n \n ) : (\n

Loading

\n )}\n
\n );\n\n return (\n
\n {loadingState == \"loaded\" ? (\n nfts && nfts.length ? (\n
\n
\n
\n
\n
\n

{nftName}

\n
\n
SORTBAR
\n
\n
\n \n {nfts.map((nft, i) => {\n return (\n \n buyNft(nft, nft.seller.toLowerCase())}\n tokenName={requiredNFT?.tokenName}\n nftContract={nft.nftContract}\n tokenId={nft.tokenId}\n itemId={nft.itemId}\n seller={nft.seller.toLowerCase()}\n />\n \n );\n })}\n \n
\n
\n
\n ) : (\n
\n \n No {nftName} in\n marketplace!\n \n

\n {setTimeout(() => history.push(\"/marketplace\"), 3000)}\n

\n
\n )\n ) : (\n \n )}\n
\n );\n\n return (\n
\n {loadingState == \"loaded\" ? (\n nfts && nfts.length ? (\n <>\n \n \n \n {nfts.map((nft, i) => {\n console.log(\"the nft in question: \", nft);\n return (\n \n buyNft(nft, nft.seller.toLowerCase())}\n tokenName={requiredNFT?.tokenName}\n nftContract={nft.nftContract}\n tokenId={nft.tokenId}\n itemId={nft.itemId}\n seller={nft.seller.toLowerCase()}\n />\n \n );\n })}\n \n \n ) : (\n
\n \n No {nftName} in\n marketplace!\n \n

\n {setTimeout(() => history.push(\"/marketplace\"), 3000)}\n

\n
\n )\n ) : (\n \n )}\n
\n );\n};\n\nexport default MarketplaceSale;\n","import { Link } from \"react-router-dom\";\nimport { useHistory } from \"react-router-dom\";\n\nimport { makeStyles } from \"@material-ui/styles\";\n\nimport { Typography } from \"@mui/material\";\nimport { shortifyContractAddress } from \"../helpers/stringUtilities\";\n\nimport { BiLinkExternal } from \"react-icons/bi\";\n\nconst BLOCK_EXPLORER_URL = {\n testnet: \"https://testnet.iotexscan.io/address/\",\n mainnet: \"https://iotexscan.io/address/\",\n};\n\nconst useStyles = makeStyles({\n container: {\n width: \"270px\",\n height: \"400px\",\n background: \"#212429\",\n border: \"2px solid #212429\",\n borderRadius: \"8px\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n transition: \"0.3s ease\",\n cursor: \"pointer\",\n\n \"&:hover\": {\n transform: \"scale(1.015)\",\n border: \"2px solid #fff\",\n },\n },\n\n info: {\n // height: \"100%\",\n width: \"100%\",\n padding: \"10px\",\n // border: \"1px solid #ccc\",\n },\n\n imageContainer: {\n width: \"100%\",\n height: \"260px\",\n // border: \"1px solid #bbb\",\n borderRadius: \"8px\",\n overflow: \"hidden\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n marginBottom: \"10px\",\n },\n\n tokenImage: {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n },\n\n detailContainer: {\n width: \"100%\",\n // height: \"40px\",\n padding: \"5px 10px\",\n background: \"black\",\n borderRadius: \"8px\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n\n btnContainer: {\n width: \"100%\",\n height: \"40px\",\n padding: \"5px 10px\",\n background: \"black\",\n borderBottomRightRadius: \"8px\",\n borderBottomLeftRadius: \"8px\",\n // border: \"2px solid #bbb\",\n // borderTop: \"none\",\n },\n\n btn: {\n fontWeight: \"bold\",\n color: \"#2de370\",\n textTransform: \"capitalize\",\n borderRadius: \"8px\",\n border: \"2px solid #2de370\",\n outline: \"none\",\n transition: \"0.3s ease\",\n cursor: \"pointer\",\n background: \"rgba(45, 227, 112, 0)\",\n padding: \"5px 8px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n\n \"&:hover\": {\n // color: \"#1fa14e\",\n background: \"rgba(45, 227, 112, 1)\",\n color: \"#fff\",\n },\n },\n\n linkBtn: {\n fontWeight: \"bold\",\n color: \"#72b8db\",\n textTransform: \"capitalize\",\n outline: \"none\",\n transition: \"0.3s ease\",\n cursor: \"pointer\",\n background: \"transparent\",\n padding: \"5px 0\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n\n \"&:hover\": {\n color: \"#1182ba\",\n },\n },\n\n displayCenterButton: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n border: \"none\",\n background: \"transparent\",\n outline: \"none\",\n },\n});\n\nconst OwnedNFTCard = ({\n tokenName,\n tokenImage,\n tokenId,\n tokenContract,\n sell,\n}) => {\n const classes = useStyles();\n const history = useHistory();\n\n const handleSell = async (e) => {\n e.stopPropagation();\n\n await sell();\n };\n\n const handleDetailPageRedirect = () => {\n history.push(`/my-assets/${tokenName}/${tokenId}`);\n };\n\n return (\n // \n
\n
\n
\n \n {tokenName}\n \n
\n
\n \n
\n
\n
\n \n Unlisted\n \n\n \n
\n\n
\n \n #{tokenId}\n \n {\n e.stopPropagation();\n }}\n >\n \n {shortifyContractAddress(tokenContract, 3, 3)}{\" \"}\n \n \n \n \n \n
\n
\n
\n
\n // \n );\n};\n\nexport default OwnedNFTCard;\n","import { styled } from \"../../styles/styledComponent\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Typography } from \"@mui/material\";\n\nconst useStyles = makeStyles((theme) => ({\n modalButtonEnabled: {\n width: \"100px\",\n height: \"100%\",\n fontWeight: \"bold\",\n padding: \"0 6px\",\n fontSize: \"14px\",\n background: \"#00e100\",\n border: \"none\",\n outline: \"none\",\n textTransform: \"uppercase\",\n borderRadius: \"8px\",\n color: \"white\",\n transition: \"0.3s ease-in-out\",\n cursor: \"pointer\",\n\n \"&:hover\": {\n background: \"#00a800\",\n },\n },\n\n modalButtonDisabled: {\n width: \"100px\",\n height: \"100%\",\n fontWeight: \"bold\",\n padding: \"0 6px\",\n fontSize: \"14px\",\n background: \"#3d3742\",\n border: \"none\",\n outline: \"none\",\n textTransform: \"uppercase\",\n borderRadius: \"8px\",\n color: \"#67606e\",\n transition: \"0.3s ease-in-out\",\n cursor: \"no-drop\",\n },\n\n buttonGroup: {\n width: \"100%\",\n // border: \"1px solid white\",\n display: \"flex\",\n // justifyContent: \"space-evenly\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n height: \"40px\",\n marginBottom: \"10px\",\n },\n\n progressContainer: {\n width: \"100%\",\n // border: \"1px solid white\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"48px\",\n marginBottom: \"20px\",\n },\n\n gradientProgressBar: {\n width: \"100px\",\n height: \"4px\",\n background:\n \"linear-gradient(90deg, rgba(0, 225, 0, 1) 0%, rgba(61, 55, 66, 1) 60%, rgba(61, 55, 66, 1) 100%)\",\n },\n\n gradientProgressBarReverse: {\n width: \"100px\",\n height: \"4px\",\n background:\n \"linear-gradient(90deg, rgba(61, 55, 66, 1) 0%, rgba(61, 55, 66, 1) 40%, rgba(0, 225, 0, 1) 100%)\",\n },\n\n circle: {\n borderRadius: \"100px\",\n width: \"25px\",\n height: \"25px\",\n background: \"#00e100\",\n color: \"white\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n\n circleDisabled: {\n background: \"#3d3742\",\n },\n\n errorMsg: {\n fontWeight: \"bold\",\n color: \"red\",\n marginBottom: \"20px\",\n },\n}));\n\nconst Container = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100vh;\n z-index: 20;\n display: ${(props) => (!props.showModal ? \"none\" : \"inline\")};\n`;\n\nconst ModalBox = styled.div`\n position: absolute;\n left: 0;\n right: 0;\n top: ${(props) => (!props.showModal ? \"-100px\" : \"0\")};\n opacity: ${(props) => (!props.showModal ? \"0\" : \"1\")};\n bottom: 0;\n margin: auto;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 450px;\n height: 400px;\n background-color: #27272d;\n border-radius: 8px;\n border: 2px solid #000;\n box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;\n z-index: 22;\n padding: 50px 50px;\n transition: 0.3s ease;\n`;\n\nconst Wrapper = styled.div`\n // height: 90px;\n margin: auto;\n height: 100%;\n width: 100%;\n // border: 2px solid #000;\n display: flex;\n flex-direction: column;\n justify-content: space-evenly;\n align-items: center;\n`;\n\nconst Price = styled.input`\n border: 5px solid #423e4d;\n outline: none;\n background-color: #6d667d;\n border-radius: 8px;\n // width: 450px;\n width: 100%;\n height: 52px;\n padding: 0px 8px;\n font-size: 20px;\n font-weight: bold;\n margin-bottom: 5px;\n color: white;\n\n &::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: white;\n opacity: 0.5;\n }\n`;\n\nconst ActionForm = styled.form`\ndisplay: flex;\nflex-direction: column;\n justify-content: center;\n align-items: center';\n`;\n\nconst ModalBg = styled.div`\n display: ${(props) => (!props.showModal ? \"none\" : \"block\")};\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 21;\n background-color: rgba(0, 0, 0, 0.5);\n`;\n\nconst CloseBtn = styled.button`\n border: none;\n background: none;\n cursor: pointer;\n color: white;\n position: absolute;\n top: 10px;\n right: 10px;\n font-weight: bold;\n`;\n\nconst SellModal = ({\n sellState: {\n buttonType,\n buttonText,\n seller,\n nftMarketplaceAddress,\n tokenId,\n price,\n errorMsg,\n },\n approve,\n sell,\n setSellState,\n nftId,\n showModal,\n setShowModal,\n}) => {\n const classes = useStyles();\n\n const handleCloseModal = () => {\n setSellState((prevState) => ({ ...prevState, errorMsg: \"\" }));\n setShowModal((prevState) => !prevState);\n };\n\n return (\n \n \n \n \n \n \n \n \n You are about to put NFT{\" \"}\n #{nftId} on sale\n \n \n \n setSellState((prevState) => ({\n ...prevState,\n price: e.target.value.trim(),\n }))\n }\n >\n\n
{errorMsg}
\n\n
\n \n Approve\n \n sell(e) : null}\n className={\n buttonType === \"sell\"\n ? classes.modalButtonEnabled\n : classes.modalButtonDisabled\n }\n type=\"submit\"\n >\n Sell\n \n
\n
\n \n

1

\n
\n
\n \n

2

\n
\n
\n \n \n {buttonType === \"approve\"\n ? \"Note: If you are listing for the first time, you must approve this item for sale, which requires a one-time gas fee.\"\n : \"Note: After tapping on sell, confirm the transaction in your wallet. This lets you sell this item on marketplace. \"}\n \n \n \n \n );\n};\n\nexport default SellModal;\n","import { makeStyles } from \"@material-ui/core\";\n\nconst useStyles = makeStyles({\n headingContainer: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n // border: \"1px solid purple\",\n marginTop: \"50px\",\n // height: \"300px\",\n // zIndex: \"500\",\n },\n\n heading: {\n fontWeight: \"bold\",\n fontSize: \"40px\",\n color: \"teal\",\n },\n});\n\nconst HeadingError = ({ errorMessage }) => {\n const classes = useStyles();\n return (\n
\n

{errorMessage}

\n
\n );\n};\n\nexport default HeadingError;\n","import { useContext, useEffect, useState } from \"react\";\n\nimport Web3Modal from \"web3modal\";\nimport { ethers } from \"ethers\";\n\nimport { makeStyles } from \"@material-ui/styles\";\n\nimport OwnedNFTCard from \"../../components/OwnedNFTCard\";\nimport SellModal from \"../../components/SellModal/SellModal\";\nimport { AppContext } from \"../../context/AppProvider\";\n\nimport { nftMarketContractAddress } from \"../../config\";\nimport NFTMarket from \"../../artifacts/contracts/NFTMarket.sol/NFTMarket.json\";\nimport HeadingError from \"../../components/HeadingError\";\n\nconst useStyles = makeStyles({\n // loadingContainer: {\n // display: \"flex\",\n // justifyContent: \"center\",\n // alignItems: \"center\",\n // height: \"300px\",\n // zIndex: \"500\",\n // },\n\n container: {\n // border: \"10px solid red\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n\n gridContainer: {\n // border: \"1px solid white\",\n display: \"grid\",\n justifyItems: \"center\",\n alignItems: \"center\",\n gridTemplateColumns: \"repeat(4, 1fr)\",\n gap: \"2rem\",\n },\n});\n\nexport const Owned = ({ ownerNfts, userAccount }) => {\n const classes = useStyles();\n\n const { setShowModal, setNotificationModalState } = useContext(AppContext);\n\n const [showSellModal, setShowSellModal] = useState(false);\n\n const [sellState, setSellState] = useState({\n buttonType: \"\",\n buttonText: \"\",\n seller: userAccount,\n nftMarketplaceAddress: nftMarketContractAddress,\n contractInstance: null,\n contractAddress: \"\",\n ABI: null,\n tokenId: \"\",\n price: \"\",\n errorMsg: \"\",\n });\n\n const approve = async () => {\n try {\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n sell: false,\n makeOffer: false,\n }));\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: true,\n loadingMessage: {\n heading: \"Confirm this operation is in wallet.\",\n subHeading: \"Approval is in progress. Be patient!\",\n },\n }));\n\n const web3Modal = new Web3Modal();\n const connection = await web3Modal.connect();\n const provider = new ethers.providers.Web3Provider(connection);\n\n let contractAddress = sellState.contractAddress;\n let ABI = sellState.ABI;\n\n const signer = provider.getSigner();\n\n const contract = new ethers.Contract(contractAddress, ABI.abi, signer);\n\n const transaction = await contract[\"setApprovalForAll(address,bool)\"](\n nftMarketContractAddress,\n true\n );\n\n await transaction.wait();\n\n console.log(\"approval success\");\n setSellState((prevState) => ({\n ...prevState,\n buttonType: \"sell\",\n buttonText: \"Sell\",\n }));\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n loadedMessage: {\n heading: \"Success!\",\n subHeading:\n \"This NFT has been approved. You can now put it on the marketplace.\",\n },\n type: \"success\",\n primaryBtn: {\n text: \"Close\",\n },\n secondaryBtn: {\n visible: false,\n },\n }));\n } catch (error) {\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n secondaryBtn: {\n visible: false,\n text: \"\",\n link: \"\",\n },\n }));\n\n let errorSubHeading = error.message;\n if (error.code === 4001) {\n errorSubHeading = \"User has denied the transcation! Try again.\";\n }\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loadedMessage: {\n heading: \"Error!\",\n subHeading: errorSubHeading,\n },\n }));\n\n setSellState((prevState) => ({\n ...prevState,\n buttonType: \"approve\",\n buttonText: \"Approve\",\n }));\n // console.log(\"error: \", error);\n // console.log(\"approval failed!!!!!!\");\n }\n };\n\n const sell = async (e) => {\n e.preventDefault();\n console.log(\"price here is : \", sellState.price, typeof sellState.price);\n console.log(\n \"contract here is : \",\n sellState.contractAddress,\n sellState.contractAddress\n );\n setSellState((prevState) => ({\n ...prevState,\n errorMsg: \"\",\n }));\n try {\n if (!!!sellState.price) {\n setSellState((prevState) => ({\n ...prevState,\n errorMsg: \"Please enter valid amount\",\n }));\n return;\n }\n if (parseInt(sellState.price) <= 0) {\n setSellState((prevState) => ({\n ...prevState,\n errorMsg: \"Please enter a generous amount ;)\",\n }));\n return;\n }\n\n const web3Modal = new Web3Modal();\n const connection = await web3Modal.connect();\n const provider = new ethers.providers.Web3Provider(connection);\n\n let contractAddress = sellState.contractAddress;\n const signer = provider.getSigner();\n\n const marketContract = new ethers.Contract(\n nftMarketContractAddress,\n NFTMarket.abi,\n signer\n );\n\n let listingFees = await marketContract.getMarketplaceShare();\n listingFees = parseInt(ethers.utils.formatEther(listingFees));\n // console.log(\"listing fees: \", listingFees, typeof listingFees);\n\n if (parseInt(sellState.price) <= listingFees) {\n setSellState((prevState) => ({\n ...prevState,\n errorMsg: `Please enter amount greater than listing fee: ${listingFees} IOTX`,\n }));\n return;\n }\n\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n sell: false,\n makeOffer: false,\n }));\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: true,\n loadingMessage: {\n heading: \"Confirm this operation in wallet.\",\n subHeading: \"Listing is in progress! Be patient!\",\n },\n purpose: \"sell\",\n }));\n\n let price = ethers.utils.parseUnits(sellState.price, \"ether\");\n\n console.log(\"reacde?\");\n\n const transaction = await marketContract[\n \"createMarketItem(address,uint256,uint256)\"\n ](contractAddress, sellState.tokenId, price);\n\n await transaction.wait();\n\n setSellState((prevState) => ({\n ...prevState,\n buttonType: \"success\",\n buttonText: \"Success\",\n }));\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n loadedMessage: {\n heading: \"Success!\",\n subHeading: \"You have sucessfully listed this NFT on marketplace.\",\n },\n type: \"success\",\n primaryBtn: {\n text: \"Visit marketplace!\",\n },\n secondaryBtn: {\n visible: false,\n },\n }));\n } catch (error) {\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n purpose: \"\",\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n secondaryBtn: {\n visible: false,\n text: \"\",\n link: \"\",\n },\n }));\n\n let errorSubHeading = error.message;\n if (error.code === 4001) {\n errorSubHeading = \"User has denied the transcation! Try again.\";\n }\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loadedMessage: {\n heading: \"Error!\",\n subHeading: errorSubHeading,\n },\n }));\n\n setSellState((prevState) => ({\n ...prevState,\n buttonType: \"sell\",\n buttonText: \"Sell\",\n }));\n\n // console.log(\"Sell error: \", error, typeof error);\n }\n };\n\n const handleApproveSell = async (\n tokenId,\n contractInstance,\n contractAddress,\n ABI\n ) => {\n // e.preventPropagation();\n let isApproved = false;\n try {\n await setSellState((prevState) => ({\n ...prevState,\n contractInstance: contractInstance,\n contractAddress: contractAddress,\n ABI: ABI,\n tokenId: parseInt(tokenId),\n errorMsg: \"\",\n }));\n setShowSellModal((prevState) => !prevState);\n\n isApproved = await contractInstance.isApprovedForAll(\n userAccount,\n nftMarketContractAddress\n );\n\n console.log(\"is it approved? :\", isApproved, typeof isApproved);\n\n if (!isApproved) {\n setSellState((prevState) => ({\n ...prevState,\n buttonType: \"approve\",\n buttonText: \"Approve\",\n }));\n } else {\n setSellState((prevState) => ({\n ...prevState,\n buttonType: \"sell\",\n buttonText: \"Sell\",\n }));\n }\n } catch (error) {\n console.log(\"error in handleApproveSell\", error);\n }\n };\n\n useEffect(() => {\n console.log(\"the ownerNFTs from Owned.jsx: \", ownerNfts);\n }, [userAccount]);\n\n return (\n
\n \n
\n {ownerNfts?.length > 0 ? (\n ownerNfts?.map((ownerNft) => (\n \n handleApproveSell(\n ownerNft.tokenId,\n ownerNft.contractInstance,\n ownerNft.tokenContract,\n ownerNft.ABI\n )\n }\n tokenContract={ownerNft.tokenContract}\n />\n ))\n ) : (\n \n )}\n
\n
\n );\n};\n","import { makeStyles } from \"@material-ui/styles\";\nimport { shortifyContractAddress } from \"../helpers/stringUtilities\";\n\nimport iotexIcon from \"../assets/icons/iotex.png\";\n\nimport { BiLinkExternal } from \"react-icons/bi\";\nimport { useContext } from \"react\";\nimport { AppContext } from \"../context/AppProvider\";\n\nconst BLOCK_EXPLORER_URL = {\n testnet: \"https://testnet.iotexscan.io/address/\",\n mainnet: \"https://iotexscan.io/address/\",\n};\n\nconst useStyles = makeStyles({\n bidInfoContainer: {\n width: \"600px\",\n height: \"180px\",\n background: \"#212429\",\n border: \"2px solid #212429\",\n borderRadius: \"8px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n transition: \"0.3s ease\",\n marginBottom: \"1rem\",\n padding: \"12px 12px\",\n\n \"&:hover\": {\n border: \"2px solid #fff\",\n },\n },\n\n left: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n marginRight: \"20px\",\n },\n\n imageContainer: {\n width: \"100px\",\n height: \"100px\",\n borderRadius: \"100px\",\n overflow: \"hidden\",\n marginBottom: \"10px\",\n },\n\n image: {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n },\n\n displayCenterButton: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n border: \"none\",\n background: \"transparent\",\n outline: \"none\",\n },\n\n linkBtn: {\n fontWeight: \"bold\",\n color: \"#72b8db\",\n textTransform: \"capitalize\",\n outline: \"none\",\n transition: \"0.3s ease\",\n cursor: \"pointer\",\n background: \"transparent\",\n padding: \"5px 0\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n\n \"&:hover\": {\n color: \"#1182ba\",\n },\n },\n\n cancelBtn: {\n fontWeight: \"bold\",\n color: \"#b30000\",\n textTransform: \"capitalize\",\n borderRadius: \"8px\",\n border: \"2px solid #b30000\",\n outline: \"none\",\n transition: \"0.3s ease\",\n cursor: \"pointer\",\n background: \"rgba(179, 0, 0, 0)\",\n padding: \"5px 8px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n\n \"&:hover\": {\n // color: \"#1fa14e\",\n background: \"rgba(179, 0, 0, 1)\",\n color: \"#fff\",\n },\n },\n\n bidInfo: {\n width: \"100%\",\n },\n\n price: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n\n iconWrapper: {\n height: \"22px\",\n width: \"22px\",\n // border: \"1px solid green\",\n display: \"inline-block\",\n marginRight: \"5px\",\n },\n\n icon: {\n height: \"100%\",\n width: \"100%\",\n // border: \"1px solid purple\",\n objectFit: \"contain\",\n },\n\n rowDetails: {\n display: \"flex\",\n justifyContent: \"space-between\",\n // justifyContent: \"flex-start\",\n alignItems: \"center\",\n margin: \"20px 0\",\n },\n\n textData: {\n marginRight: \"20px\",\n },\n\n greyText: {\n color: \"grey\",\n },\n});\n\nconst BidInfoBar = ({\n bidData: {\n image,\n price,\n tokenName,\n from,\n to,\n expiresAt,\n itemId,\n contractAddress,\n stillOnSale,\n notInMarketPlace,\n },\n cancelBid,\n}) => {\n const classes = useStyles();\n\n const { setShowModal, setNotificationModalState } = useContext(AppContext);\n\n // console.log(\"the expires at data from BidInfoBar: \", expiresAt);\n\n console.log(\"the factors: \", stillOnSale, notInMarketPlace);\n\n const handleBidCancel = async () => {\n if (expiresAt === \"Bid Expired\") {\n await cancelBid(contractAddress, itemId, from);\n } else {\n if (stillOnSale && !notInMarketPlace) {\n // console.log(\"show error here\");\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n sell: false,\n }));\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n purpose: \"\",\n loadedMessage: {\n heading: \"Error!\",\n subHeading:\n \"Sorry! You can't cancel active bid when NFT is on sale. Wait for it to expire.\",\n },\n }));\n } else {\n await cancelBid(contractAddress, itemId, from);\n }\n }\n };\n\n return (\n
\n
\n
\n {tokenName}\n
\n \n {/* {expiresAt === \"Bid Expired\" ? (\n cancelBid(contractAddress, itemId, from)}\n >\n Cancel\n \n ) : (\n !stillOnSale &&\n notInMarketPlace && (\n cancelBid(contractAddress, itemId, from)}\n >\n Cancel\n \n )\n )} */}\n
\n
\n
\n

\n

\n \"IOTX\"\n
\n {price}\n

\n
\n
\n
\n

{tokenName}

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

\n From:{\" \"}\n \n {shortifyContractAddress(from, 6)}\n \n

\n
\n
\n

\n Token ID: #{to}\n

\n
\n {expiresAt !== \"Bid Expired\" && (\n
\n

\n Expiration: {expiresAt}\n

\n
\n )}\n
\n
\n
\n );\n};\n\nexport default BidInfoBar;\n","import { useContext, useEffect, useState } from \"react\";\n\nimport Web3Modal from \"web3modal\";\nimport { ethers } from \"ethers\";\n\nimport { nftMarketContractAddress } from \"../../config\";\nimport NFTMarket from \"../../artifacts/contracts/NFTMarket.sol/NFTMarket.json\";\n\nimport BidInfoBar from \"../../components/BidInfoBar\";\n\nimport { makeStyles } from \"@material-ui/styles\";\nimport { AppContext } from \"../../context/AppProvider\";\nimport HeadingError from \"../../components/HeadingError\";\n\nconst useStyles = makeStyles({\n offerPaginationBtnGroup: {\n // border: \"1px solid white\",\n height: \"40px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n\n \"& > button\": {\n background: \"#004545\",\n height: \"100%\",\n width: \"150px\",\n fontWeight: \"bold\",\n color: \"white\",\n fontSize: \"20px\",\n outline: \"none\",\n border: \"transparent\",\n cursor: \"pointer\",\n transition: \"0.3s ease\",\n \"&:hover\": {\n background: \"#006e6e\",\n },\n },\n },\n\n leftBtn: {\n borderTopLeftRadius: \"8px\",\n borderBottomLeftRadius: \"8px\",\n },\n\n rightBtn: {\n borderTopRightRadius: \"8px\",\n borderBottomRightRadius: \"8px\",\n },\n\n visited: { background: \"#006e6e\" },\n\n bidInfoList: {\n display: \"grid\",\n justifyItems: \"center\",\n alignItems: \"center\",\n gridTemplateColumns: \"repeat(2, 1fr)\",\n gap: \"2rem\",\n margin: \"4rem 0\",\n },\n\n // bidInfoList: {\n // display: \"flex\",\n // flexDirection: \"column\",\n // justifyContent: \"center\",\n // alignItems: \"center\",\n // margin: \"4rem 0\",\n // },\n});\n\nexport const Offers = ({\n sortedActiveBids,\n sortedExpiredBids,\n getOwnerOffersMade,\n userAccount,\n}) => {\n const classes = useStyles();\n const [offersPage, setOffersPage] = useState(\"active\");\n\n const { connectWallet, setShowModal, setNotificationModalState } =\n useContext(AppContext);\n\n const cancelBid = async (nftContract, itemId, seller) => {\n console.log(\"cancelling bid\");\n try {\n console.log(\"the userAccount: \", userAccount);\n console.log(\"the seller: \", seller);\n if (!!!userAccount || userAccount?.length <= 0) {\n await connectWallet();\n }\n\n if (userAccount !== seller.toLowerCase().trim()) {\n console.log(\"Only Seller can cancel bid!\");\n return;\n }\n\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n sell: false,\n makeOffer: false,\n }));\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: true,\n loadingMessage: {\n heading: \"Cancel Bid\",\n subHeading: \"To cancel bid, confirm transaction in your wallet.\",\n },\n purpose: \"cancelBid\",\n }));\n\n const web3Modal = new Web3Modal();\n const connection = await web3Modal.connect();\n const provider = new ethers.providers.Web3Provider(connection);\n\n const signer = provider.getSigner();\n\n const marketContract = new ethers.Contract(\n nftMarketContractAddress,\n NFTMarket.abi,\n signer\n );\n\n const transaction = await marketContract.cancelBid(nftContract, itemId);\n\n await transaction.wait();\n\n await getOwnerOffersMade();\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n loadedMessage: {\n heading: \"Success! \",\n subHeading: \"You have sucessfully cancelled your bid.\",\n },\n type: \"success\",\n primaryBtn: {\n text: \"Close\",\n },\n }));\n } catch (error) {\n // let errorSubHeading = \"Unable to transfer!\";\n let errorSubHeading = error.message;\n if (error.code === 4001) {\n errorSubHeading = \"User denied transaction!\";\n }\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n purpose: \"\",\n loadedMessage: {\n heading: \"Error!\",\n subHeading: errorSubHeading,\n },\n }));\n console.log(\"error in cancelBid(): \", error);\n }\n console.log(\"finished cancelling bid\");\n };\n\n useEffect(() => {}, [sortedActiveBids, sortedExpiredBids]);\n\n return (\n <>\n
\n setOffersPage(\"active\")}\n >\n Active\n \n
\n setOffersPage(\"expired\")}\n >\n Expired\n \n
\n <>\n {offersPage === \"active\" &&\n (sortedActiveBids?.length > 0 ? (\n
\n {sortedActiveBids?.map((activeBid) => (\n \n ))}\n
\n ) : (\n \n ))}\n \n <>\n {offersPage === \"expired\" &&\n (sortedExpiredBids?.length > 0 ? (\n
\n {sortedExpiredBids?.map((expiredBid) => (\n \n ))}\n
\n ) : (\n \n ))}\n \n \n );\n};\n","export default __webpack_public_path__ + \"static/media/image404.13b27766.jpg\";","import { makeStyles } from \"@material-ui/styles\";\n\nimport { Typography } from \"@mui/material\";\nimport { shortifyContractAddress } from \"../helpers/stringUtilities\";\n\nimport { BiLinkExternal } from \"react-icons/bi\";\n\nconst BLOCK_EXPLORER_URL = {\n testnet: \"https://testnet.iotexscan.io/address/\",\n mainnet: \"https://iotexscan.io/address/\",\n};\n\nconst useStyles = makeStyles({\n container: {\n width: \"270px\",\n height: \"450px\",\n background: \"#212429\",\n border: \"2px solid #212429\",\n borderRadius: \"8px\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n overflow: \"hidden\",\n transition: \"0.3s ease\",\n\n \"&:hover\": {\n transform: \"scale(1.015)\",\n border: \"2px solid #fff\",\n },\n },\n\n info: {\n // height: \"100%\",\n width: \"100%\",\n padding: \"10px\",\n // border: \"1px solid #ccc\",\n },\n\n imageContainer: {\n width: \"100%\",\n height: \"260px\",\n // border: \"1px solid #bbb\",\n borderRadius: \"8px\",\n overflow: \"hidden\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n marginBottom: \"10px\",\n },\n\n tokenImage: {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n },\n\n detailContainer: {\n width: \"100%\",\n height: \"130px\",\n padding: \"10px 10px\",\n background: \"black\",\n borderRadius: \"8px\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n },\n\n detail: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n\n btnContainer: {\n width: \"100%\",\n height: \"40px\",\n padding: \"5px 10px\",\n background: \"black\",\n borderBottomRightRadius: \"8px\",\n borderBottomLeftRadius: \"8px\",\n // border: \"2px solid #bbb\",\n // borderTop: \"none\",\n },\n\n btn: {\n fontWeight: \"bold\",\n color: \"#2de370\",\n textTransform: \"capitalize\",\n borderRadius: \"8px\",\n border: \"2px solid #2de370\",\n outline: \"none\",\n transition: \"0.3s ease\",\n cursor: \"pointer\",\n background: \"rgba(45, 227, 112, 0)\",\n padding: \"5px 8px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n\n \"&:hover\": {\n // color: \"#1fa14e\",\n background: \"rgba(45, 227, 112, 1)\",\n color: \"#fff\",\n },\n },\n\n linkBtn: {\n fontWeight: \"bold\",\n color: \"#72b8db\",\n textTransform: \"capitalize\",\n outline: \"none\",\n transition: \"0.3s ease\",\n cursor: \"pointer\",\n background: \"transparent\",\n padding: \"5px 0\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n\n \"&:hover\": {\n color: \"#1182ba\",\n },\n },\n\n displayCenterButton: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n border: \"none\",\n background: \"transparent\",\n outline: \"none\",\n },\n\n delist: {\n fontWeight: \"bold\",\n color: \"#b30000\",\n textTransform: \"capitalize\",\n borderRadius: \"8px\",\n border: \"2px solid #b30000\",\n outline: \"none\",\n transition: \"0.3s ease\",\n cursor: \"pointer\",\n background: \"rgba(179, 0, 0, 0)\",\n padding: \"5px 8px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n\n \"&:hover\": {\n // color: \"#1fa14e\",\n background: \"rgba(179, 0, 0, 1)\",\n color: \"#fff\",\n },\n },\n});\n\nconst OwnedOnSaleNFTCard = ({\n tokenName,\n tokenImage,\n tokenId,\n tokenContract,\n delist,\n acceptOffer,\n topBid,\n}) => {\n const classes = useStyles();\n return (\n
\n
\n
\n \n {tokenName}\n \n
\n
\n \n
\n
\n
\n \n Listed\n \n\n \n
\n
\n \n #{tokenId}\n \n\n \n {topBid <= 0 ? \"Top Bid: No Bids\" : `Top Bid: ${topBid} IOTX`}\n \n
\n
\n \n \n
\n
\n
\n
\n );\n};\n\nexport default OwnedOnSaleNFTCard;\n","import Web3Modal from \"web3modal\";\nimport { ethers } from \"ethers\";\n\nimport { makeStyles } from \"@material-ui/styles\";\nimport imageNotFound from \"../../assets/images/image404.jpg\";\nimport OwnedOnSaleNFTCard from \"../../components/OwnedOnSaleNFTCard\";\n\nimport { nftMarketContractAddress } from \"../../config\";\nimport NFTMarket from \"../../artifacts/contracts/NFTMarket.sol/NFTMarket.json\";\n\nimport { useContext } from \"react\";\nimport { AppContext } from \"../../context/AppProvider\";\nimport HeadingError from \"../../components/HeadingError\";\n\nconst useStyles = makeStyles({\n loadingContainer: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"300px\",\n },\n\n gridContainer: {\n display: \"grid\",\n justifyItems: \"center\",\n alignItems: \"center\",\n gridTemplateColumns: \"repeat(4, 1fr)\",\n gap: \"2rem\",\n },\n});\n\nexport const OnSale = ({ userItemsOnSale, getOwnerItemsOnSale }) => {\n const classes = useStyles();\n\n const userAccount = sessionStorage.getItem(\"user\");\n\n const { connectWallet, setShowModal, setNotificationModalState } =\n useContext(AppContext);\n\n const cancelSale = async (seller, nftContract, tokenId, itemId) => {\n try {\n console.log(\"called cancelSale()\");\n\n if (!!!userAccount || userAccount?.length <= 0) {\n await connectWallet();\n }\n\n if (userAccount !== seller.toLowerCase().trim()) {\n console.log(\"Only seller can cancel sale!\");\n return;\n }\n\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n sell: false,\n makeOffer: false,\n }));\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: true,\n loadingMessage: {\n heading: \"Delisting Item\",\n subHeading: \"To continue, confirm transaction in your wallet.\",\n },\n purpose: \"cancelSale\",\n }));\n\n const web3Modal = new Web3Modal();\n const connection = await web3Modal.connect();\n const provider = new ethers.providers.Web3Provider(connection);\n\n const signer = provider.getSigner();\n\n const marketContract = new ethers.Contract(\n nftMarketContractAddress,\n NFTMarket.abi,\n signer\n );\n\n const transaction = await marketContract[\n \"removeMarketItem(address,uint256,uint256)\"\n ](nftContract, tokenId, itemId);\n\n await transaction.wait();\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n loadedMessage: {\n heading: \"Success! \",\n subHeading: \"You have sucessfully removed your NFT from sale.\",\n },\n type: \"success\",\n primaryBtn: {\n text: \"Close\",\n },\n }));\n\n console.log(\"cancelled successfully! Redirecting\");\n await getOwnerItemsOnSale();\n\n // setTimeout(() => history.goBack(), 3000);\n } catch (error) {\n // let errorSubHeading = \"Unable to transfer!\";\n let errorSubHeading = error.message;\n if (error.code === 4001) {\n errorSubHeading = \"User denied transaction!\";\n }\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n purpose: \"\",\n loadedMessage: {\n heading: \"Error!\",\n subHeading: errorSubHeading,\n },\n }));\n console.log(\"error in buyNow(): \", error);\n }\n };\n\n const acceptOffer = async (\n seller,\n nftContract,\n tokenId,\n itemId,\n bidId,\n bidder,\n offerPrice\n ) => {\n try {\n console.log(\"called acceptOffer()\");\n\n if (offerPrice <= 0) {\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n sell: false,\n makeOffer: false,\n }));\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n purpose: \"\",\n loadedMessage: {\n heading: \"Error!\",\n subHeading:\n \"Unfortunately, there is no active bid at the moment for this NFT!\",\n },\n }));\n return;\n }\n\n if (!!!userAccount || userAccount?.length <= 0) {\n await connectWallet();\n }\n\n if (userAccount !== seller.toLowerCase().trim()) {\n console.log(\"Only seller can cancel sale!\");\n return;\n }\n\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n sell: false,\n makeOffer: false,\n }));\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: true,\n loadingMessage: {\n heading: \"Accepting Offer\",\n subHeading: \"To accept this bid, confirm transaction in your wallet.\",\n },\n purpose: \"accept\",\n }));\n\n const web3Modal = new Web3Modal();\n const connection = await web3Modal.connect();\n const provider = new ethers.providers.Web3Provider(connection);\n\n const signer = provider.getSigner();\n\n const marketContract = new ethers.Contract(\n nftMarketContractAddress,\n NFTMarket.abi,\n signer\n );\n\n const transaction = await marketContract[\n \"acceptBid(address,uint256,uint256,bytes,address)\"\n ](nftContract, tokenId, itemId, bidId, bidder);\n\n await transaction.wait();\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n loadedMessage: {\n heading: \"Congratulations! \",\n subHeading: \"You have sucessfully sold your NFT!\",\n },\n type: \"success\",\n primaryBtn: {\n text: \"Close\",\n },\n }));\n\n console.log(\"accepted offer successfully! Redirecting\");\n await getOwnerItemsOnSale();\n } catch (error) {\n let errorSubHeading = error.message;\n if (error.code === 4001) {\n errorSubHeading = \"User denied transaction!\";\n }\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n purpose: \"\",\n loadedMessage: {\n heading: \"Error!\",\n subHeading: errorSubHeading,\n },\n }));\n console.log(\"error in acceptOffer(): \", error);\n }\n };\n\n return (\n <>\n {userItemsOnSale?.length > 0 ? (\n
\n {userItemsOnSale?.map((onSaleNft) => {\n return (\n \n cancelSale(\n onSaleNft.seller,\n onSaleNft.tokenContract,\n onSaleNft.tokenId,\n onSaleNft.itemId\n )\n }\n acceptOffer={() =>\n acceptOffer(\n onSaleNft.seller,\n onSaleNft.tokenContract,\n onSaleNft.tokenId,\n onSaleNft.itemId,\n onSaleNft.bidId,\n onSaleNft.bidder,\n onSaleNft.offerPrice\n )\n }\n tokenContract={onSaleNft.tokenContract}\n topBid={onSaleNft.offerPrice}\n />\n );\n })}\n
\n ) : (\n \n )}\n \n );\n};\n","import { useState, useEffect } from \"react\";\nimport axios from \"axios\";\n\nimport { Typography } from \"@mui/material\";\nimport { makeStyles } from \"@material-ui/styles\";\n\nimport { Owned, Offers, OnSale } from \"../containers/MyAssets\";\n\nimport imageNotFound from \"../assets/images/image404.jpg\";\nimport { ImpulseSpinner } from \"react-spinners-kit\";\n\nimport { nftMarketContractAddress } from \"../config\";\nimport NFTMarket from \"../artifacts/contracts/NFTMarket.sol/NFTMarket.json\";\n\nimport Web3Modal from \"web3modal\";\nimport { ethers } from \"ethers\";\nimport Web3 from \"web3\";\n\nimport {\n expirationCalculator,\n shortifyContractAddress,\n} from \"../helpers/stringUtilities\";\n\nconst IOTEX_RPC_URL = \"https://babel-api.testnet.iotex.io\";\nlet web3 = new Web3(IOTEX_RPC_URL);\n\nconst useStyles = makeStyles({\n loadingContainer: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"300px\",\n },\n container: {\n padding: \"0 30px\",\n },\n captionContainer: {\n // border: \"1px solid green\",\n height: \"70vh\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n },\n\n caption: {\n textTransform: \"uppercase\",\n fontWeight: \"900\",\n // transform: \"scale(2)\",\n color: \"#e0e0e081\",\n // color: \"black\",\n opacity: \"1\",\n marginBottom: \"10px\",\n },\n\n profileContainer: {\n // border: \"1px solid white\",\n marginBottom: \"50px\",\n },\n\n profile: {\n height: \"200px\",\n // border: \"1px solid white\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n background:\n \"linear-gradient(180deg, rgba(0, 23, 23, 1) 0%, rgba(0, 23, 23, 1) 50%, rgba(0, 23, 23, 0) 51%, rgba(0, 23, 23, 0) 100%)\",\n },\n\n profileThumbnail: {\n width: \"100px\",\n height: \"100px\",\n borderRadius: \"100px\",\n border: \"5px solid black\",\n background: \"grey\",\n },\n\n address: {\n color: \"white\",\n // fontWeight: 'bold',\n },\n\n carousel: {\n // border: \"1px solid white\",\n height: \"40px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n background: \"#001717\",\n\n \"& > div\": {\n height: \"100%\",\n width: \"80px\",\n },\n },\n\n carouselBtn: {\n height: \"100%\",\n width: \"100%\",\n padding: \"5px 10px\",\n fontWeight: \"bold\",\n color: \"white\",\n textTransform: \"capitalize\",\n border: \"none\",\n outline: \"none\",\n background: \"#002424\",\n transition: \"0.3s ease\",\n cursor: \"pointer\",\n\n \"&:hover\": {\n background: \"#003d3d\",\n },\n },\n\n carouselBtnVisited: {\n borderTop: \"5px solid #004d4d\",\n },\n});\n\n// const dummyData = [\n// {\n// id: 1,\n// imgLink: \"https://source.unsplash.com/random\",\n// nftName: \"Mutant Ape Yacht Club\",\n// nftDesc:\n// \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Corporis quidem accusantium sunt impedit quis eos?\",\n// },\n// {\n// id: 2,\n// imgLink: \"https://source.unsplash.com/random\",\n// nftName: \"IotexPanda\",\n// nftDesc:\n// \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Corporis quidem accusantium sunt impedit quis eos?\",\n// },\n// ];\n\nconst MyAssets = () => {\n const classes = useStyles();\n\n // const { allNFTs } = useContext(AppContext);\n\n const userAccount = sessionStorage.getItem(\"user\");\n const teamNFTs = sessionStorage.getItem(\"teamNFTs\");\n\n const [loadingAssets, setLoadingAssets] = useState(true);\n\n // const [currentUserOwnedNFTs, setCurrentUserOwnedNFTs] = useState([]);\n const [ownerNfts, setOwnerNfts] = useState([]);\n\n const [userOffersMade, setUserOffersMade] = useState({\n activeBids: [],\n expiredBids: [],\n });\n\n const [sortedActiveBids, setSortedActiveBids] = useState([]);\n const [sortedExpiredBids, setSortedExpiredBids] = useState([]);\n\n const [userItemsOnSale, setUserItemsOnSale] = useState([]);\n\n const [carouselPage, setCarouselPage] = useState(\"owned\");\n\n // const getOwnerNFTs = async () => {\n // // console.log(\"calling getOwnerNFTs()\");\n // setLoadingAssets(() => true);\n // let result = await getUserOwnedNFTs(userAccount);\n // setCurrentUserOwnedNFTs(() => result);\n // setLoadingAssets(() => false);\n // };\n\n const getUserOwnedNFTs = async (userAccount) => {\n let allNFTs = JSON.parse(teamNFTs);\n\n try {\n const provider = new ethers.providers.JsonRpcProvider(IOTEX_RPC_URL);\n\n const ownedNftContractAddresses = [];\n\n // console.log(\"the allNFTS: \", allNFTs, typeof allNFTs);\n for (let i = 0; i < allNFTs.length; i++) {\n let contractAddress = allNFTs[i].contractAddress;\n let ABI = allNFTs[i].abi;\n let tokenName = allNFTs[i].tokenName;\n\n const contract = new ethers.Contract(\n contractAddress,\n ABI.abi,\n provider\n );\n\n let tokenIDs = await contract.walletOfOwner(userAccount);\n\n // console.log(\"tokenIDs\", tokenIDs);\n\n if (tokenIDs && tokenIDs.length > 0) {\n let data = {\n contractAddress: contractAddress,\n contractInstance: contract,\n tokenIDs: tokenIDs,\n tokenName: tokenName,\n ABI: ABI,\n };\n ownedNftContractAddresses.push(data);\n }\n }\n\n // console.log(\n // \"this user has the following contracts: \",\n // ownedNftContractAddresses\n // );\n\n if (ownedNftContractAddresses && ownedNftContractAddresses.length) {\n try {\n const assetList = [];\n\n for (let i = 0; i < ownedNftContractAddresses.length; i++) {\n const {\n contractAddress,\n contractInstance,\n tokenIDs,\n tokenName,\n ABI,\n } = ownedNftContractAddresses[i];\n\n // console.log(\n // `the data from array index ${i}: `,\n // contractAddress,\n // contractInstance,\n // tokenIDs,\n // tokenName\n // );\n\n let assets = await Promise.all(\n tokenIDs?.map(async (tokenID) => {\n let asset = {\n tokenName: \"Error in metadata\",\n edition: \"NULL\",\n tokenImage: imageNotFound,\n };\n\n try {\n let id = tokenID.toString();\n id = parseInt(id);\n const tokenURI = await contractInstance.tokenURI(id);\n const meta = await axios.get(tokenURI);\n let imageUri = meta.data.image;\n\n asset = {\n tokenName: tokenName,\n tokenId: id,\n tokenImage: imageUri,\n tokenContract: contractAddress,\n contractInstance: contractInstance,\n ABI: ABI,\n };\n } catch (e) {\n console.error(\"No Metadata found\", e);\n }\n\n return asset;\n })\n );\n\n assetList.push(...assets);\n }\n\n // console.log(\n // \"the final list of assets: \",\n // assetList,\n // typeof assetList\n // );\n setOwnerNfts(() => [...assetList]);\n } catch (e) {\n console.log(\"error in fetching user owned NFTs: \", e);\n }\n }\n } catch (error) {\n console.log(\n \"error in fetching user owned NFT contract addresses: \",\n error\n );\n }\n };\n\n const getUserOwnedNFTsNew = async (userAccount) => {\n let allNFTs = JSON.parse(teamNFTs);\n\n try {\n const provider = new ethers.providers.JsonRpcProvider(IOTEX_RPC_URL);\n\n const ownedNftContractAddresses = [];\n\n // console.log(\"the allNFTS: \", allNFTs, typeof allNFTs);\n for (let i = 0; i < allNFTs.length; i++) {\n let contractAddress = allNFTs[i].contractAddress;\n let ABI = allNFTs[i].abi;\n let tokenName = allNFTs[i].tokenName;\n\n const contract = new ethers.Contract(\n contractAddress,\n ABI.abi,\n provider\n );\n\n let tokenIDs = await contract.walletOfOwner(userAccount);\n\n // console.log(\"tokenIDs\", tokenIDs);\n\n if (tokenIDs && tokenIDs.length > 0) {\n let data = {\n contractAddress: contractAddress,\n contractInstance: contract,\n tokenIDs: tokenIDs,\n tokenName: tokenName,\n ABI: ABI,\n };\n ownedNftContractAddresses.push(data);\n }\n }\n\n // console.log(\n // \"this user has the following contracts: \",\n // ownedNftContractAddresses\n // );\n\n if (ownedNftContractAddresses && ownedNftContractAddresses.length) {\n try {\n const assetList = [];\n\n for (let i = 0; i < ownedNftContractAddresses.length; i++) {\n const {\n contractAddress,\n contractInstance,\n tokenIDs,\n tokenName,\n ABI,\n } = ownedNftContractAddresses[i];\n\n // console.log(\n // `the data from array index ${i}: `,\n // contractAddress,\n // contractInstance,\n // tokenIDs,\n // tokenName\n // );\n\n let assets = await Promise.all(\n tokenIDs?.map(async (tokenID) => {\n let asset = {\n tokenName: \"Error in metadata\",\n edition: \"NULL\",\n tokenImage: imageNotFound,\n };\n\n try {\n let id = tokenID.toString();\n id = parseInt(id);\n const tokenURI = await contractInstance.tokenURI(id);\n const meta = await axios.get(tokenURI);\n let imageUri = meta.data.image;\n\n asset = {\n tokenName: tokenName,\n tokenId: id,\n tokenImage: imageUri,\n tokenContract: contractAddress,\n contractInstance: contractInstance,\n ABI: ABI,\n };\n } catch (e) {\n console.error(\"No Metadata found\", e);\n }\n\n return asset;\n })\n );\n\n assetList.push(...assets);\n }\n\n // console.log(\n // \"the final list of assets: \",\n // assetList,\n // typeof assetList\n // );\n\n // setOwnerNfts(() => [...assetList]);\n return assetList;\n } catch (e) {\n console.log(\"error in fetching user owned NFTs: \", e);\n }\n }\n } catch (error) {\n console.log(\n \"error in fetching user owned NFT contract addresses: \",\n error\n );\n }\n };\n\n const getMaxBid = async (contract, itemId) => {\n try {\n const latestBidData = await contract.methods\n .bidsByItemId(parseInt(itemId))\n .call();\n\n // const coingeckoApi =\n // \"https://api.coingecko.com/api/v3/simple/price?ids=iotex&vs_currencies=usd\";\n // const response = await axios(coingeckoApi);\n // const iotexUsdPrice = await response?.data?.iotex?.usd;\n const iotexUsdPrice = 0.11;\n // console.log(\"latestBidData: \", latestBidData);\n\n const currentTimestamp = Math.floor(new Date().getTime() / 1000);\n\n const bidDetails = latestBidData\n .map((bidDatum) => {\n const price = web3.utils.fromWei(bidDatum?.price, \"ether\");\n\n const usdPrice = iotexUsdPrice * price;\n\n let timeDiff = bidDatum.expiresAt - currentTimestamp;\n\n let expiresAt =\n timeDiff <= 0\n ? \"Bid Expired\"\n : timeDiff / 86400 > 1\n ? `in about ${Math.floor(timeDiff / 86400)} days`\n : timeDiff / 3600 > 1\n ? `in about ${Math.floor(timeDiff / 3600)} hours`\n : timeDiff / 60 > 1\n ? `in about ${Math.floor(timeDiff / 60)} minutes`\n : `in about ${Math.floor(timeDiff)} seconds`;\n\n return {\n bidId: bidDatum.bidID,\n offerPrice: parseInt(price),\n usdPrice: usdPrice.toFixed(2),\n expiresAt: expiresAt,\n bidder: bidDatum.bidder,\n };\n })\n .filter((bidDatum) => bidDatum.expiresAt !== \"Bid Expired\");\n\n if (bidDetails.length <= 0) {\n return {\n bidId: \"\",\n bidder: \"\",\n offerPrice: 0,\n };\n }\n\n let maxBidData = {\n bidId: \"\",\n bidder: \"\",\n offerPrice: 0,\n };\n for (let i = 0; i < bidDetails.length; i++) {\n const { offerPrice } = bidDetails[i];\n if (offerPrice > maxBidData.offerPrice) {\n // maxPrice.price = price;\n maxBidData.bidId = bidDetails[i].bidId;\n maxBidData.bidder = bidDetails[i].bidder;\n maxBidData.offerPrice = bidDetails[i].offerPrice;\n }\n }\n\n console.log(\"maxBidData: \", maxBidData);\n\n return maxBidData;\n } catch (error) {\n console.log(\"error fetching bids: \", error);\n }\n };\n\n const getOwnerItemsOnSale = async () => {\n try {\n const web3Modal = new Web3Modal();\n const connection = await web3Modal.connect();\n const provider = new ethers.providers.Web3Provider(connection);\n\n const signer = provider.getSigner();\n\n const marketContract = new ethers.Contract(\n nftMarketContractAddress,\n NFTMarket.abi,\n signer\n );\n\n const mContract = new web3.eth.Contract(\n NFTMarket.abi,\n nftMarketContractAddress\n );\n\n let response = await marketContract.fetchMarketItemsbyUser();\n\n // console.log(\"getOwnerItemsOnSale data: \", await data);\n\n const rpcProvider = new ethers.providers.JsonRpcProvider(IOTEX_RPC_URL);\n\n let onSaleData = await Promise.all(\n response.map(async (data) => {\n const [itemId, nftContract, tokenId, seller, , price] = data;\n\n let nftItemId = ethers.utils.formatUnits(itemId.toString(), \"wei\");\n\n let nftPrice = ethers.utils.formatUnits(price.toString(), \"ether\");\n\n let nftTokenId = parseInt(\n ethers.utils.formatUnits(tokenId.toString(), \"wei\")\n );\n\n const requiredNFT = JSON.parse(teamNFTs)?.find(\n (NFT) => NFT.contractAddress === nftContract && NFT\n );\n\n let contractAddress = requiredNFT?.contractAddress;\n let ABI = requiredNFT?.abi;\n\n const contract = new ethers.Contract(\n contractAddress,\n ABI.abi,\n rpcProvider\n );\n\n let nftName = requiredNFT?.tokenName;\n\n const tokenURI = await contract.tokenURI(tokenId);\n const meta = await axios.get(tokenURI);\n\n // console.log(\"the metadata here!: \", meta);\n\n let nftImageUri = meta.data.image;\n\n const maxBidData = await getMaxBid(mContract, nftItemId);\n\n let itemOnSale = {\n itemId: nftItemId,\n tokenName: nftName,\n tokenImage: nftImageUri,\n price: nftPrice,\n tokenId: nftTokenId,\n tokenContract: contractAddress,\n seller: seller,\n bidId: maxBidData.bidId,\n bidder: maxBidData.bidder,\n offerPrice: maxBidData.offerPrice,\n };\n\n return itemOnSale;\n })\n );\n\n setUserItemsOnSale(() => onSaleData);\n } catch (error) {\n console.log(\"error in getOwnerItemsOnSale()\", error);\n }\n };\n\n const getOwnerOffersMade = async () => {\n try {\n const web3Modal = new Web3Modal();\n const connection = await web3Modal.connect();\n const provider = new ethers.providers.Web3Provider(connection);\n\n const signer = provider.getSigner();\n\n const marketContract = new ethers.Contract(\n nftMarketContractAddress,\n NFTMarket.abi,\n signer\n );\n\n const activeBids = await marketContract.activeBids();\n const expiredBids = await marketContract.expiredBids();\n\n setUserOffersMade((prevState) => ({\n ...prevState,\n activeBids: [...activeBids],\n expiredBids: [...expiredBids],\n }));\n\n await getBidData(activeBids, expiredBids, marketContract);\n\n // console.log(\"the active bids of user: \", await activeBids);\n // console.log(\"the expired bids of user: \", await expiredBids);\n } catch (error) {\n console.log(\"error in getOwnerOffersMade()\", error);\n }\n };\n\n const getBidData = async (activeBids, expiredBids, marketContract) => {\n // const { activeBids, expiredBids } = await userOffersMade;\n\n // console.log(\"the expiredBids bids of user: \", expiredBids);\n\n const provider = new ethers.providers.JsonRpcProvider(IOTEX_RPC_URL);\n\n let localActiveBids = [];\n //activeBids\n try {\n for (let i = 0; i < activeBids.length; i++) {\n const [itemId, tokenId, nftContract, bidder, price, expiresAt, bidID] =\n activeBids[i];\n\n let nftItemId = ethers.utils.formatUnits(itemId.toString(), \"wei\");\n\n // const idToMarketItemData = await marketContract.idToMarketItem(\n // nftItemId\n // );\n\n // console.log(\"idToMarketItemData: \", idToMarketItemData);\n\n const [, , , , , , sold, removedFromMarketplace] =\n await marketContract.idToMarketItem(nftItemId);\n\n // console.log(\"idToMarketItemData: \", sold, removedFromMarketplace);\n\n let nftPrice = ethers.utils.formatUnits(price.toString(), \"ether\");\n\n let nftTokenId = parseInt(\n ethers.utils.formatUnits(tokenId.toString(), \"wei\")\n );\n\n let saleExpiry = parseInt(\n ethers.utils.formatUnits(expiresAt.toString(), \"wei\")\n );\n\n // console.log(\"the SaleExpiry: \", saleExpiry);\n\n const requiredNFT = JSON.parse(teamNFTs)?.find(\n (NFT) => NFT.contractAddress === nftContract && NFT\n );\n\n let contractAddress = requiredNFT?.contractAddress;\n let ABI = requiredNFT?.abi;\n\n const contract = new ethers.Contract(\n contractAddress,\n ABI.abi,\n provider\n );\n\n const tokenURI = await contract.tokenURI(tokenId);\n const meta = await axios.get(tokenURI);\n\n let imageUri = meta.data.image;\n\n let activeItem = {\n bidId: bidID,\n image: imageUri,\n price: nftPrice,\n tokenName: requiredNFT?.tokenName,\n from: bidder,\n to: nftTokenId,\n expiresAt: expirationCalculator(saleExpiry),\n contractAddress: nftContract,\n stillOnSale: sold,\n notInMarketPlace: removedFromMarketplace,\n itemId: nftItemId,\n };\n\n localActiveBids.push(activeItem);\n\n console.log(\"the activeItem: \", activeItem);\n }\n } catch (error) {\n console.log(\"no expired bids\");\n }\n\n let localExpiredBids = [];\n //expiredBids\n try {\n for (let i = 0; i < expiredBids.length; i++) {\n // const [bidID, bidder, expiresAt, itemId, nftContract, price, tokenId] =\n // activeBids[i];\n\n const [itemId, tokenId, nftContract, bidder, price, expiresAt, bidID] =\n expiredBids[i];\n\n let nftItemId = ethers.utils.formatUnits(itemId.toString(), \"wei\");\n\n const [, , , , , , sold, removedFromMarketplace] =\n await marketContract.idToMarketItem(nftItemId);\n\n let nftPrice = ethers.utils.formatUnits(price.toString(), \"ether\");\n\n // console.log(\"the nftItemIf is data: \", nftItemId, typeof nftItemId);\n\n let nftTokenId = parseInt(\n ethers.utils.formatUnits(tokenId.toString(), \"wei\")\n );\n\n let saleExpiry = parseInt(\n ethers.utils.formatUnits(expiresAt.toString(), \"wei\")\n );\n\n const requiredNFT = JSON.parse(teamNFTs)?.find((NFT) => {\n // console.log(\"NFT: \", NFT.contractAddress, nftContract);\n return NFT.contractAddress === nftContract && NFT;\n });\n\n let contractAddress = requiredNFT?.contractAddress;\n let ABI = requiredNFT?.abi;\n\n const contract = new ethers.Contract(\n contractAddress,\n ABI.abi,\n provider\n );\n\n const tokenURI = await contract.tokenURI(tokenId);\n const meta = await axios.get(tokenURI);\n\n let imageUri = meta.data.image;\n\n let expiredItem = {\n bidId: bidID,\n image: imageUri,\n price: nftPrice,\n tokenName: requiredNFT?.tokenName,\n from: bidder,\n to: nftTokenId,\n expiresAt: expirationCalculator(saleExpiry),\n itemId: nftItemId,\n contractAddress: nftContract,\n // stillOnSale: sold,\n // notInMarketPlace: removedFromMarketplace,\n };\n\n localExpiredBids.push(expiredItem);\n\n // console.log(\"the expiredItem: \", expiredItem);\n }\n } catch (error) {\n console.log(\"no expired bids\");\n }\n\n setSortedActiveBids(() => localActiveBids);\n setSortedExpiredBids(() => localExpiredBids);\n };\n\n useEffect(() => {\n setLoadingAssets(() => true);\n\n getUserOwnedNFTs(userAccount);\n\n getOwnerItemsOnSale();\n getOwnerOffersMade().then(() => setLoadingAssets(() => false));\n }, [userAccount]);\n\n return (\n <>\n
\n
\n
\n
\n \n {shortifyContractAddress(userAccount)}\n \n
\n
\n
\n setCarouselPage(\"owned\")}\n >\n owned\n \n
\n
\n setCarouselPage(\"offers\")}\n >\n offers\n \n
\n
\n setCarouselPage(\"onSale\")}\n >\n on sale\n \n
\n
\n
\n {loadingAssets ? (\n
\n \n
\n ) : (\n <>\n <>\n {carouselPage === \"owned\" && (\n \n )}\n \n {/* \n <>\n {carouselPage === \"owned\" && (\n getUserOwnedNFTs(userAccount)}\n userAccount={userAccount}\n />\n )}\n */}\n\n <>\n {carouselPage === \"offers\" && (\n \n )}\n \n <>\n {carouselPage === \"onSale\" && (\n \n )}\n \n \n )}\n
\n \n );\n};\n\nexport default MyAssets;\n","import { Typography } from \"@material-ui/core\";\nimport { Link } from \"react-router-dom\";\nimport styled from \"styled-components\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nconst NFTCard = ({\n myAsset: { name, tokenId, desc, image },\n link,\n buttonText,\n nftName,\n}) => {\n const classes = useStyles();\n\n // const { name, edition, desc, image } = myAsset;\n // console.log(name, tokenId, desc, image);\n\n return (\n \n \n \n {name}\n \n \n
\n \n {name}\n \n
\n
\n
\n
\n \n \n \n \n \n \n );\n};\n\nconst useStyles = makeStyles({\n card: {\n maxWidth: \"345px\",\n color: \"#fff\",\n },\n cardContent: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"space-between\",\n letterSpacing: \"-1px\",\n },\n letterSpace: {\n letterSpacing: \"-0.5px\",\n },\n cardActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n },\n\n cardImage: {\n height: \"100%\",\n width: \"100%\",\n objectFit: \"cover\",\n },\n\n bottomLine: {\n margin: \"10px 0\",\n width: \"100%\",\n height: \"5px\",\n background: \"teal\",\n },\n\n cardTitle: {\n fontWeight: \"bold\",\n textTransform: \"uppercase\",\n color: \"tomato\",\n },\n\n caption: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n background: \"white\",\n marginBottom: \"10px\",\n borderRadius: \"15px\",\n },\n\n button: {\n border: \"none\",\n background: \"none\",\n outline: \"none\",\n fontSize: \"15px\",\n transition: \"all 0.5s ease\",\n color: \"white\",\n cursor: \"pointer\",\n \"&:hover\": {\n color: \"#31beaa\",\n },\n },\n});\n\nconst Card = styled.div`\n /* position: relative; */\n width: 360px;\n height: 480px;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: center;\n border: 2px solid #0f0f11;\n padding: 10px;\n border-radius: 10px;\n /* background: #232327; */\n background: radial-gradient(\n circle at 50% 47%,\n rgba(26, 26, 27, 1) 0%,\n #343436 20%,\n rgba(35, 35, 39, 1) 100%\n );\n box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.3);\n`;\n\nconst InfoContainer = styled.div`\n position: relative;\n width: 100%;\n height: 400px;\n display: flex;\n flex-direction: column;\n /* padding: 10px; */\n border-radius: 10px;\n /* background: #232327; */\n /* box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.3); */\n`;\n\nconst CardMedia = styled.div`\n position: relative;\n width: 100%;\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n overflow: hidden;\n`;\n\nconst CardContent = styled.div`\n flex: 2;\n width: 100%;\n /* background: green; */\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n padding: 0 10px;\n`;\n\nconst Thumbnail = styled.div`\n position: absolute;\n margin: auto;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n width: 100px;\n height: 100px;\n /* background: tomato; */\n background: url(${(props) => props.circularThumbnail});\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n border: 5px solid #232327;\n /* box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.3); */\n border-radius: 50%;\n z-index: 2;\n overflow: hidden;\n`;\n\nconst CardActions = styled.div`\n /* border: 1px solid #232327; */\n display: flex;\n justify-content: flex-start;\n align-items: center;\n width: 100%;\n`;\n\nexport default NFTCard;\n","import React, { useEffect, useState } from \"react\";\nimport { useParams } from \"react-router\";\nimport { useHistory } from \"react-router-dom\";\nimport NFTCard from \"../components/NFTCard/NFTCard\";\nimport axios from \"axios\";\nimport { ethers } from \"ethers\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { Typography, Grid } from \"@material-ui/core\";\n\nimport { Link } from \"react-router-dom\";\n\nimport imageNotFound from \"../assets/images/image404.jpg\";\nimport Loading from \"../components/Loading\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(1),\n padding: theme.spacing(3),\n minheight: \"100vh\",\n },\n dontOwnContainer: {\n // border: \"1px solid green\",\n height: \"70vh\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n },\n\n dontOwn: {\n textTransform: \"uppercase\",\n fontWeight: \"900\",\n // transform: \"scale(2)\",\n color: \"#e0e0e081\",\n // color: \"black\",\n opacity: \"1\",\n marginBottom: \"10px\",\n },\n}));\n\nconst NFTAsset = () => {\n const { nftName } = useParams();\n const history = useHistory();\n const classes = useStyles();\n // const { allNFTs } = useContext(AppContext);\n const userAccount = sessionStorage.getItem(\"user\");\n const teamNFTs = sessionStorage.getItem(\"teamNFTs\");\n const [loadingAssets, setLoadingAssets] = useState(true);\n const [myAssets, setMyAssets] = useState([]);\n\n useEffect(() => {\n getOwnerAssets();\n }, [userAccount]);\n\n useEffect(() => {\n return () => {\n // history.push(\"/my-assets\");\n };\n }, [userAccount]);\n\n async function getOwnerAssets() {\n try {\n setLoadingAssets(() => true);\n const provider = new ethers.providers.JsonRpcProvider(\n \"https://babel-api.testnet.iotex.io\"\n );\n\n const requiredNFT = JSON.parse(teamNFTs)?.find(\n (NFT) => NFT.name === nftName && NFT\n );\n\n // console.log(\"the required NFT: \", requiredNFT);\n\n let contractAddress = requiredNFT.contractAddress;\n let ABI = requiredNFT.abi;\n\n const contract = new ethers.Contract(contractAddress, ABI.abi, provider);\n\n // let tokenIDs = await contract.walletOfOwner(provider.getAddress());\n let tokenIDs = await contract.walletOfOwner(userAccount);\n\n // console.log(\"tokenIDs of single NFT: \", tokenIDs);\n\n let assets = await Promise.all(\n tokenIDs?.map(async (tokenID) => {\n let asset = {\n name: \"Error in metadata\",\n edition: \"NULL\",\n image: imageNotFound,\n desc: \"No Desc\",\n };\n\n // let asset;\n\n try {\n let id = tokenID.toString();\n id = parseInt(id);\n // console.log(\"tokenID from MyAsset: \", id);\n const tokenURI = await contract.tokenURI(id);\n // console.log(\"tokenURI: \", tokenURI);\n const meta = await axios.get(tokenURI);\n // console.log(meta);\n let imageUri = meta.data.image;\n // console.log(\"the MAYC image URI:\", imageUri);\n // let updatedImagURI = `https://gateway.pinata.cloud/ipfs/${imageUri.substring(\n // 7,\n // imageUri.length\n // )}`;\n\n let updatedImagURI = imageUri;\n\n asset = {\n name: meta.data.name,\n // edition: meta.data.edition,\n tokenId: id,\n image: updatedImagURI,\n desc: meta.data.description,\n };\n } catch (e) {\n console.error(\"No Metadata found\");\n }\n\n return asset;\n })\n );\n\n setMyAssets(assets);\n // console.log(\"assets: \", assets);\n setLoadingAssets(() => false);\n } catch (error) {\n console.log(\"error: \", error);\n setLoadingAssets(() => false);\n }\n }\n\n return (\n
\n {loadingAssets ? (\n \n ) : myAssets && myAssets?.length > 0 ? (\n <>\n {\" \"}\n \n {nftName}\n \n \n {myAssets?.map((myAsset) => {\n // console.log(\"myAsset.tokenId: \", myAsset.tokenId);\n return (\n \n \n \n );\n })}\n \n \n ) : (\n
\n \n You dont own {nftName} yet.\n \n\n \n \n Mint\n {\" \"}\n to get your own!\n \n
\n )}\n
\n );\n};\n\nexport default NFTAsset;\n","import { styled } from \"../../styles/styledComponent\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Typography } from \"@mui/material\";\n\nconst useStyles = makeStyles((theme) => ({\n modalButtonEnabled: {\n width: \"100px\",\n height: \"100%\",\n fontWeight: \"bold\",\n padding: \"0 6px\",\n fontSize: \"14px\",\n background: \"#00e100\",\n border: \"none\",\n outline: \"none\",\n textTransform: \"uppercase\",\n borderRadius: \"8px\",\n color: \"white\",\n transition: \"0.3s ease-in-out\",\n cursor: \"pointer\",\n\n \"&:hover\": {\n background: \"#00a800\",\n },\n },\n\n buttonGroup: {\n width: \"100%\",\n // border: \"1px solid white\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"40px\",\n marginBottom: \"10px\",\n },\n\n errorMsg: {\n fontWeight: \"bold\",\n color: \"red\",\n marginBottom: \"20px\",\n },\n}));\n\nconst Container = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100vh;\n z-index: 20;\n display: ${(props) => (!props.showTransferModal ? \"none\" : \"inline\")};\n`;\n\nconst ModalBox = styled.div`\n position: absolute;\n left: 0;\n right: 0;\n top: ${(props) => (!props.showTransferModal ? \"-100px\" : \"0\")};\n opacity: ${(props) => (!props.showTransferModal ? \"0\" : \"1\")};\n bottom: 0;\n margin: auto;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 670px;\n height: 340px;\n background-color: #27272d;\n border-radius: 8px;\n border: 2px solid #000;\n box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;\n z-index: 22;\n padding: 50px 50px;\n transition: 0.3s ease;\n`;\n\nconst Wrapper = styled.div`\n margin: auto;\n height: 100%;\n width: 100%;\n // border: 2px solid #000;\n display: flex;\n flex-direction: column;\n justify-content: space-evenly;\n align-items: center;\n`;\n\nconst Address = styled.input`\n border: 5px solid #423e4d;\n outline: none;\n background-color: #6d667d;\n border-radius: 8px;\n width: 100%;\n height: 52px;\n padding: 0px 8px;\n font-size: 20px;\n margin-bottom: 10px;\n font-weight: bold;\n color: white;\n\n &::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: white;\n opacity: 0.5;\n }\n`;\n\nconst ActionForm = styled.form`\ndisplay: flex;\nflex-direction: column;\n justify-content: center;\n align-items: center';\n width: 100%;\n padding: 0 20px;\n`;\n\nconst ModalBg = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 21;\n background-color: rgba(0, 0, 0, 0.5);\n`;\n\nconst CloseBtn = styled.button`\n border: none;\n background: none;\n cursor: pointer;\n color: white;\n position: absolute;\n top: 10px;\n right: 10px;\n font-weight: bold;\n`;\n\nconst TransferModal = ({\n transferState: { transferFrom, transferTo, tokenId, errorMsg },\n transfer,\n setTransferState,\n nftId,\n showTransferModal,\n setShowTransferModal,\n}) => {\n const classes = useStyles();\n\n const handleCloseModal = () => {\n setTransferState((prevState) => ({ ...prevState, errorMsg: \"\" }));\n setShowTransferModal((prevState) => !prevState);\n };\n\n return (\n \n \n \n \n \n \n \n \n You are about to transfer NFT{\" \"}\n #{nftId}\n \n \n \n setTransferState((prevState) => ({\n ...prevState,\n transferTo: e.target.value.trim(),\n }))\n }\n >\n
{errorMsg}
\n
\n \n Transfer\n \n
\n {/* transfer(e)\n : null\n }\n startIcon={}\n loading={transferState.buttonState === \"loaded\" ? false : true}\n loadingPosition=\"start\"\n variant=\"contained\"\n disableElevation\n size=\"large\"\n className={classes.transferButton}\n type=\"submit\"\n >\n \n {transferState.buttonState === \"loaded\" ? \"Send\" : \"Sending\"}\n \n */}\n
\n
\n
\n
\n );\n};\n\nexport default TransferModal;\n","import { makeStyles } from \"@material-ui/core/styles\";\n\nexport default makeStyles(theme => ({\n container: {\n position: 'relative',\n top: '0px',\n background: '#010a1f',\n borderRadius: '6px',\n textAlign: 'center',\n height: '80px',\n maxWidth: '200px',\n padding: '10px 0 0 0',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-around',\n alignItems: 'center',\n color: 'white',\n // boxShadow: 'rgba(50, 50, 93, 0.25) 0px 30px 60px -12px inset, rgba(0, 0, 0, 0.3) 0px 18px 36px -18px inset',\n // boxShadow: 'rgba(0, 0, 0, 0.15) 1.95px 1.95px 2.6px',\n boxShadow: '0 5px 0 #777',\n // boxShadow: '0 3px 2px #777',\n transition: '0.2s ease-in-out',\n cursor: 'context-menu',\n\n '&:hover': {\n boxShadow: '0 0 0 #777',\n top: '5px',\n }\n }\n}))","import { shortifyContractAddress } from \"../../../helpers/stringUtilities\";\n\nimport { makeStyles } from \"@material-ui/styles\";\nimport { BiLinkExternal } from \"react-icons/bi\";\nimport { Typography } from \"@mui/material\";\n\nconst BLOCK_EXPLORER_URL = {\n testnet: \"https://testnet.iotexscan.io/address/\",\n mainnet: \"https://iotexscan.io/address/\",\n};\n\nconst useStyles = makeStyles({\n infoContainer: {\n display: \"flex\",\n },\n\n table: {\n height: \"200px\",\n flex: \"1\",\n },\n\n description: {\n height: \"200px\",\n flex: \"1\",\n paddingLeft: \"50px\",\n borderLeft: \"2px solid white\",\n },\n\n header: {\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n marginBottom: \"10px\",\n },\n\n displayCenterButton: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n border: \"none\",\n background: \"transparent\",\n outline: \"none\",\n },\n\n externalLinkBtn: {\n height: \"25px\",\n fontWeight: \"bold\",\n color: \"#\",\n textTransform: \"capitalize\",\n outline: \"none\",\n transition: \"0.3s ease\",\n cursor: \"pointer\",\n background: \"transparent\",\n padding: \"5px 0\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n\n \"&:hover\": {\n color: \"#1182ba\",\n },\n },\n\n iconWrapper: {\n width: \"50px\",\n height: \"50px\",\n overflow: \"hidden\",\n borderRadius: \"8px\",\n background: \"grey\",\n border: \"2px solid #004247\",\n marginRight: \"10px\",\n },\n\n icon: {\n height: \"100%\",\n width: \"100%\",\n objectFit: \"cover\",\n },\n});\n\nconst OnSaleInfo = ({ nftContract, tokenId, name, desc }) => {\n const classes = useStyles();\n return (\n
\n \n \n \n \n {/* */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Contract Address{shortifyContractAddress(nftContract, 6, 4)}\n \n
Token ID{tokenId}
Token StandardXRC721
BlockchainIotex
\n
\n
\n
\n \n
\n \n {name.toLowerCase()}\n \n
\n \n {desc}\n \n
\n
\n );\n};\n\nexport default OnSaleInfo;\n","import { makeStyles } from \"@material-ui/styles\";\nimport { Typography } from \"@mui/material\";\n\nconst useStyles = makeStyles({\n container: {\n width: \"100%\",\n height: \"80px\",\n // background: \"rgba(53, 65, 66, 0.5)\",\n background: \"rgba(0,0,0,0)\",\n borderRadius: \"8px\",\n border: \"2px solid #779699\",\n padding: \"24px\",\n marginBottom: \"10px\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n trait: {\n fontSize: \"14px\",\n textTransform: \"capitalize\",\n color: \"#d4d4d4\",\n margin: \"0\",\n },\n value: {\n fontSize: \"18px\",\n fontWeight: \"bold\",\n marginTop: \"-3px\",\n textTransform: \"capitalize\",\n color: \"#fff\",\n margin: \"0\",\n },\n});\n\nconst AttributeBar = ({ trait_type, value }) => {\n const classes = useStyles();\n return (\n
\n
\n

{trait_type}

\n

{value}

\n
\n
\n );\n};\n\nexport default AttributeBar;\n","import { makeStyles } from \"@material-ui/styles\";\nimport AttributeBar from \"../../components/Marketplace/MarketplaceItemSale/AttributeBar\";\n\nconst useStyles = makeStyles({\n container: {\n // width: \"100%\",\n // height: \"120px\",\n // background: \"#354142\",\n // borderRadius: \"8px\",\n // border: \"2px solid #779699\",\n // padding: \"24px\",\n },\n});\n\nconst AttributeBarContainer = ({ attributes }) => {\n const classes = useStyles();\n return (\n
\n {attributes.map(({ trait_type, value }) => (\n \n ))}\n
\n );\n};\n\nexport default AttributeBarContainer;\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { useParams } from \"react-router\";\nimport axios from \"axios\";\nimport Web3Modal from \"web3modal\";\nimport { ethers } from \"ethers\";\nimport Web3 from \"web3\";\n\nimport StyledLoadingButton from \"../components/StyledLoadingButton/StyledLoadingButton\";\n\nimport { nftMarketContractAddress } from \"../config\";\nimport NFTMarket from \"../artifacts/contracts/NFTMarket.sol/NFTMarket.json\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { Link } from \"react-router-dom\";\nimport TiltCard from \"../components/TiltCard/TiltCard\";\nimport Attributes from \"../components/Attributes/Attributes\";\n\n// import { Button, Typography } from \"@material-ui/core\";\nimport { Button, Typography } from \"@mui/material\";\nimport Loading from \"../components/Loading\";\nimport TransferModal from \"../components/TransferModal/TransferModal\";\n\nimport LoyaltyIcon from \"@mui/icons-material/Loyalty\";\nimport SellModal from \"../components/SellModal/SellModal\";\nimport { AppContext } from \"../context/AppProvider\";\nimport { useHistory } from \"react-router-dom\";\n\nimport { MdKeyboardBackspace } from \"react-icons/md\";\nimport { LayersClear, ThumbUpAlt } from \"@mui/icons-material\";\nimport OnSaleInfo from \"../components/Marketplace/MarketplaceItemSale/OnSaleInfo\";\nimport AttributeBarContainer from \"../containers/Marketplace/AttributeBarContainer\";\n\nconst web3 = new Web3(window.ethereum);\n\n// const useStyles = makeStyles((theme) => ({\n// root: {\n// minHeight: \"500px\",\n// height: \"85vh\",\n// position: \"relative\",\n// },\n// content: {\n// height: \"100%\",\n// // border: \"3px solid blue\",\n// display: \"flex\",\n// alignItems: \"center\",\n// },\n// imageSection: {\n// height: \"100%\",\n// // borderRight: \"2px solid white\",\n// flex: \"1\",\n// display: \"flex\",\n// justifyContent: \"center\",\n// alignItems: \"center\",\n// },\n// descSection: {\n// height: \"100%\",\n// border: \"2px solid green\",\n// flex: \"1\",\n// display: \"flex\",\n// flexDirection: \"column\",\n// justifyContent: \"center\",\n// alignItems: \"center\",\n// },\n\n// information: {\n// // border: \"2px solid magenta\",\n// height: \"100%\",\n// flex: \"10\",\n// padding: \"20px\",\n// overflow: \"auto\",\n// },\n\n// actionBtnContainer: {\n// marginTop: \"10px\",\n// borderTop: \"2px solid rgba(255, 255, 255, 0.5)\",\n// width: \"100%\",\n// flex: \"1\",\n// display: \"flex\",\n// justifyContent: \"space-between\",\n// alignItems: \"center\",\n// padding: \"40px\",\n// },\n\n// dontOwnContainer: {\n// // border: \"1px solid green\",\n// height: \"70vh\",\n// display: \"flex\",\n// flexDirection: \"column\",\n// justifyContent: \"center\",\n// alignItems: \"center\",\n// width: \"100%\",\n// },\n\n// dontOwn: {\n// textTransform: \"uppercase\",\n// fontWeight: \"900\",\n// // transform: \"scale(2)\",\n// color: \"#e0e0e081\",\n// // color: \"black\",\n// opacity: \"1\",\n// marginBottom: \"10px\",\n// },\n// }));\n\nconst useStyles = makeStyles({\n detailsContainer: {\n // border: \"2px solid blue\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"flex-start\",\n // overflow: \"hidden\",\n position: \"relative\",\n marginTop: \"20px\",\n height: \"660px\",\n },\n\n nftInfo: {\n padding: \"20px\",\n // border: \"2px solid blue\",\n },\n\n saleInfo: {\n height: \"100%\",\n padding: \"20px\",\n width: \"920px\",\n // border: \"2px solid blue\",\n overflow: \"auto\",\n },\n\n iconWrapper: {\n height: \"40px\",\n width: \"40px\",\n // border: \"1px solid green\",\n display: \"inline-block\",\n marginRight: \"5px\",\n },\n\n icon: {\n height: \"100%\",\n width: \"100%\",\n // border: \"1px solid purple\",\n objectFit: \"contain\",\n },\n\n imageContainer: {\n position: \"relative\",\n height: \"593px\",\n width: \"448px\",\n background: \"#101A1B\",\n borderRadius: \"8px\",\n overflow: \"hidden\",\n marginBottom: \"20px\",\n },\n\n attributes: {\n width: \"448px\",\n },\n\n infoBoxContainer: {\n height: \"593px\",\n width: \"920px\",\n border: \"1px solid white\",\n },\n\n image: {\n height: \"100%\",\n width: \"100%\",\n objectFit: \"cover\",\n },\n\n headingWrapper: {\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n marginBottom: \"30px\",\n },\n\n backBtn: {\n width: \"50px\",\n height: \"50px\",\n background: \"rgba(53, 65, 66, 0)\",\n borderRadius: \"8px\",\n outline: \"none\",\n border: \"none\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n cursor: \"pointer\",\n transition: \"0.3s ease\",\n marginRight: \"20px\",\n\n \"&:hover\": {\n background: \"rgba(53, 65, 66, 1)\",\n },\n },\n\n actionWrapper: {\n height: \"150px\",\n background: \"#354142\",\n borderRadius: \"8px\",\n border: \"2px solid #779699\",\n padding: \"24px\",\n marginBottom: \"30px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n\n ownerWrapper: {\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n marginBottom: \"30px\",\n },\n\n ownerThumbnailWrapper: {\n width: \"50px\",\n height: \"50px\",\n overflow: \"hidden\",\n borderRadius: \"100px\",\n background: \"grey\",\n border: \"2px solid #004247\",\n marginRight: \"10px\",\n },\n\n ownerThumbnail: {\n height: \"100%\",\n width: \"100%\",\n objectFit: \"cover\",\n },\n\n owner: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n },\n\n displayCenterButton: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n border: \"none\",\n background: \"transparent\",\n outline: \"none\",\n },\n\n externalLinkBtn: {\n height: \"25px\",\n fontWeight: \"bold\",\n color: \"#\",\n textTransform: \"capitalize\",\n outline: \"none\",\n transition: \"0.3s ease\",\n cursor: \"pointer\",\n background: \"transparent\",\n padding: \"5px 0\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n\n \"&:hover\": {\n color: \"#1182ba\",\n },\n },\n\n linkContainer: {\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n height: \"50px\",\n marginBottom: \"10px\",\n },\n\n linkBtn: {\n height: \"30px\",\n width: \"100px\",\n color: \"#fff\",\n fontWeight: \"bold\",\n padding: \"5px 10px\",\n background: \"rgba(53, 65, 66, 0)\",\n borderRadius: \"50px\",\n outline: \"none\",\n border: \"none\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n cursor: \"pointer\",\n transition: \"0.3s ease\",\n marginRight: \"20px\",\n textTransform: \"capitalize\",\n\n \"&:hover\": {\n background: \"rgba(53, 65, 66, 1)\",\n },\n },\n\n visitedLink: {\n background: \"#fff\",\n color: \"#111\",\n },\n\n priceWrapper: {\n display: \"flex\",\n // justifyContent: \"flex-start\",\n justifyContent: \"center\",\n alignItems: \"center\",\n // marginBottom: \"20px\",\n },\n\n iotxPrice: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n fontSize: \"40px\",\n fontWeight: \"bold\",\n marginRight: \"10px\",\n },\n\n buyNowBtn: {\n height: \"54px\",\n width: \"170px\",\n color: \"#fff\",\n fontWeight: \"bold\",\n fontSize: \"20px\",\n // padding: \"5px 10px\",\n background: \"rgba(45, 227, 112, 1)\",\n borderRadius: \"8px\",\n outline: \"none\",\n border: \"none\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n cursor: \"pointer\",\n transition: \"0.3s ease\",\n marginRight: \"20px\",\n textTransform: \"capitalize\",\n\n \"&:hover\": {\n background: \"rgba(30, 156, 76, 1)\",\n },\n },\n\n makeOfferBtn: {\n height: \"54px\",\n width: \"170px\",\n color: \"#fff\",\n fontWeight: \"bold\",\n fontSize: \"20px\",\n // padding: \"5px 10px\",\n background: \"rgba(101, 172, 235, 1)\",\n borderRadius: \"8px\",\n outline: \"none\",\n border: \"none\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n cursor: \"pointer\",\n transition: \"0.3s ease\",\n marginRight: \"20px\",\n textTransform: \"capitalize\",\n\n \"&:hover\": {\n background: \"rgba(72, 123, 168, 1)\",\n },\n },\n\n delistBtn: {\n height: \"54px\",\n width: \"170px\",\n color: \"#fff\",\n fontWeight: \"bold\",\n fontSize: \"20px\",\n // padding: \"5px 10px\",\n background: \"rgba(207, 0, 0, 1)\",\n borderRadius: \"8px\",\n outline: \"none\",\n border: \"none\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n cursor: \"pointer\",\n transition: \"0.3s ease\",\n marginRight: \"20px\",\n textTransform: \"capitalize\",\n\n \"&:hover\": {\n background: \"rgba(168, 0, 0, 1)\",\n },\n },\n});\n\nconst NFT = () => {\n const userAccount = sessionStorage.getItem(\"user\");\n const { nftName, id } = useParams();\n const history = useHistory();\n const classes = useStyles();\n const [nft, setNft] = useState(null);\n\n const [nftLoading, setNftLoading] = useState(true);\n\n const { setShowModal, setNotificationModalState } = useContext(AppContext);\n\n const teamNFTs = sessionStorage.getItem(\"teamNFTs\");\n\n const [showTransferModal, setShowTransferModal] = useState(false);\n const [showSellModal, setShowSellModal] = useState(false);\n\n const [transferState, setTransferState] = useState({\n transferFrom: userAccount,\n transferTo: \"\",\n tokenId: parseInt(id),\n errorMsg: \"\",\n });\n\n const [sellState, setSellState] = useState({\n buttonType: \"approve\",\n buttonText: \"Approve\",\n seller: userAccount,\n nftMarketplaceAddress: \"\",\n tokenId: parseInt(id),\n price: \"\",\n errorMsg: \"\",\n });\n\n const [linkDetail, setLinkDetail] = useState(\"info\");\n\n useEffect(() => {\n setNftLoading(() => true);\n async function getNft() {\n try {\n const web3Modal = new Web3Modal();\n const connection = await web3Modal.connect();\n const provider = new ethers.providers.Web3Provider(connection);\n\n const requiredNFT = JSON.parse(teamNFTs)?.find(\n (NFT) => NFT.tokenName === nftName && NFT\n );\n\n console.log(\"requiredNFT: \", requiredNFT);\n\n let contractAddress = requiredNFT?.contractAddress;\n let ABI = requiredNFT?.abi;\n\n console.log(contractAddress, ABI);\n\n // const contract = new ethers.Contract(contractAddress, ABI.abi, signer);\n const contract = new ethers.Contract(\n contractAddress,\n ABI.abi,\n provider\n );\n\n //code for setting approve/sale button text\n const isApproved = await contract.isApprovedForAll(\n userAccount,\n nftMarketContractAddress\n );\n\n // console.log(\"is it approved? :\", isApproved, typeof isApproved);\n\n if (isApproved) {\n setSellState((prevState) => ({\n ...prevState,\n buttonType: \"sell\",\n buttonText: \"Sell\",\n }));\n }\n ///////////////////////////////////////////\n\n let tokenIDs = await contract.walletOfOwner(userAccount);\n\n let items = await Promise.all(\n tokenIDs.map(async (tokenID) => {\n let id = tokenID.toString();\n id = parseInt(id);\n // console.log(\"the tokenID: \", id, typeof id);\n const tokenURI = await contract.tokenURI(id);\n const meta = await axios.get(tokenURI);\n\n // console.log(\"the metadata: \", meta);\n let imageUri = meta.data.image;\n\n let updatedImagURI = imageUri;\n\n let attributes = meta.data.attributes;\n\n let asset = {\n name: requiredNFT.name,\n nftContract: requiredNFT.contractAddress,\n // edition: meta.data.edition,\n tokenId: id,\n image: updatedImagURI,\n desc: meta.data.description,\n attributes: attributes,\n };\n return asset;\n })\n );\n\n let [item] = items.filter((i) => {\n let tokenId = i.tokenId.toString();\n return tokenId === id;\n });\n\n setNft(() => item);\n } catch (error) {\n console.log(\"error: \", error);\n }\n }\n getNft();\n setNftLoading(() => false);\n }, [userAccount, id]);\n\n const approve = async () => {\n try {\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n sell: false,\n makeOffer: false,\n }));\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: true,\n loadingMessage: {\n heading: \"Confirm this operation is in wallet.\",\n subHeading: \"Approval is in progress. Be patient!\",\n },\n }));\n\n const requiredNFT = JSON.parse(teamNFTs)?.find(\n // (NFT) => NFT.name === nftName && NFT\n (NFT) => NFT.tokenName === nftName && NFT\n );\n\n const web3Modal = new Web3Modal();\n const connection = await web3Modal.connect();\n const provider = new ethers.providers.Web3Provider(connection);\n\n let contractAddress = requiredNFT?.contractAddress;\n let ABI = requiredNFT?.abi;\n\n const signer = provider.getSigner();\n\n const contract = new ethers.Contract(contractAddress, ABI.abi, signer);\n\n const transaction = await contract[\"setApprovalForAll(address,bool)\"](\n nftMarketContractAddress,\n true\n );\n\n await transaction.wait();\n\n console.log(\"approval success\");\n setSellState((prevState) => ({\n ...prevState,\n buttonType: \"sell\",\n buttonText: \"Sell\",\n }));\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n loadedMessage: {\n heading: \"Success!\",\n subHeading:\n \"This NFT has been approved. You can now put it on the marketplace.\",\n },\n type: \"success\",\n primaryBtn: {\n text: \"Close\",\n },\n secondaryBtn: {\n visible: false,\n },\n }));\n } catch (error) {\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n secondaryBtn: {\n visible: false,\n text: \"\",\n link: \"\",\n },\n }));\n\n let errorSubHeading = error.message;\n if (error.code === 4001) {\n errorSubHeading = \"User has denied the transcation! Try again.\";\n }\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loadedMessage: {\n heading: \"Error!\",\n subHeading: errorSubHeading,\n },\n }));\n\n setSellState((prevState) => ({\n ...prevState,\n buttonType: \"approve\",\n buttonText: \"Approve\",\n }));\n console.log(\"error: \", error);\n // console.log(\"approval failed!!!!!!\");\n }\n };\n\n const sell = async (e) => {\n e.preventDefault();\n setSellState((prevState) => ({ ...prevState, errorMsg: \"\" }));\n try {\n if (!!!sellState.price) {\n setSellState((prevState) => ({\n ...prevState,\n errorMsg: \"Please enter valid amount\",\n }));\n return;\n }\n if (parseInt(sellState.price) <= 0) {\n setSellState((prevState) => ({\n ...prevState,\n errorMsg: \"Please enter a generous amount ;)\",\n }));\n return;\n }\n\n const allNFTS = JSON.parse(teamNFTs);\n\n const requiredNFT = allNFTS?.find(\n (NFT) => NFT.tokenName === nftName && NFT\n );\n\n console.log(\"the requiredNFT from putOnSale: \", requiredNFT);\n\n const web3Modal = new Web3Modal();\n const connection = await web3Modal.connect();\n const provider = new ethers.providers.Web3Provider(connection);\n\n let contractAddress = requiredNFT?.contractAddress;\n\n const signer = provider.getSigner();\n\n const marketContract = new ethers.Contract(\n nftMarketContractAddress,\n NFTMarket.abi,\n signer\n );\n\n let listingFees = await marketContract.getMarketplaceShare();\n listingFees = parseInt(ethers.utils.formatEther(listingFees));\n // console.log(\"listing fees: \", listingFees, typeof listingFees);\n\n if (parseInt(sellState.price) <= listingFees) {\n setSellState((prevState) => ({\n ...prevState,\n errorMsg: `Please enter amount greater than listing fee: ${listingFees} IOTX`,\n }));\n return;\n }\n\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n sell: false,\n makeOffer: false,\n }));\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: true,\n loadingMessage: {\n heading: \"Confirm this operation in wallet.\",\n subHeading: \"Listing is in progress! Be patient!\",\n },\n purpose: \"sell\",\n }));\n\n let price = ethers.utils.parseUnits(sellState.price, \"ether\");\n\n const transaction = await marketContract[\n \"createMarketItem(address,uint256,uint256)\"\n ](contractAddress, nft.tokenId, price);\n\n await transaction.wait();\n\n setSellState((prevState) => ({\n ...prevState,\n buttonType: \"success\",\n buttonText: \"Success\",\n }));\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n loadedMessage: {\n heading: \"Success!\",\n subHeading: \"You have sucessfully listed this NFT on marketplace.\",\n },\n type: \"success\",\n primaryBtn: {\n text: \"Visit marketplace!\",\n },\n secondaryBtn: {\n visible: false,\n },\n }));\n } catch (error) {\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n secondaryBtn: {\n visible: false,\n text: \"\",\n link: \"\",\n },\n }));\n\n let errorSubHeading = error.message;\n if (error.code === 4001) {\n errorSubHeading = \"User has denied the transcation! Try again.\";\n }\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loadedMessage: {\n heading: \"Error!\",\n subHeading: errorSubHeading,\n },\n }));\n\n setSellState((prevState) => ({\n ...prevState,\n buttonType: \"sell\",\n buttonText: \"Sell\",\n }));\n\n // console.log(\"Sell error: \", error, typeof error);\n }\n };\n\n const transfer = async (e) => {\n e.preventDefault();\n\n setTransferState((prevState) => ({ ...prevState, errorMsg: \"\" }));\n\n let addressValid = false;\n\n try {\n const web3 = new Web3(window.ethereum);\n web3.utils.toChecksumAddress(transferState.transferTo);\n addressValid = true;\n } catch (e) {\n setTransferState((prevState) => ({\n ...prevState,\n errorMsg: \"Invalid Address entered!\",\n }));\n console.log(\"transfer error:\", e);\n addressValid = false;\n return;\n }\n\n if (addressValid) {\n try {\n setTransferState((prevState) => ({\n ...prevState,\n errorMsg: \"\",\n }));\n\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n sell: false,\n }));\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: true,\n loadingMessage: {\n heading: \"Confirm this operation in wallet.\",\n subHeading: \"Transfer of this NFT is in progress. Be patient.\",\n },\n purpose: \"transfer\",\n }));\n\n const web3Modal = new Web3Modal();\n const connection = await web3Modal.connect();\n const provider = new ethers.providers.Web3Provider(connection);\n\n const requiredNFT = JSON.parse(teamNFTs)?.find(\n (NFT) => NFT.name === nftName && NFT\n );\n\n let contractAddress = requiredNFT?.contractAddress;\n let ABI = requiredNFT?.abi;\n\n const signer = provider.getSigner();\n\n const contract = new ethers.Contract(contractAddress, ABI.abi, signer);\n\n const transaction = await contract[\n \"safeTransferFrom(address,address,uint256)\"\n ](\n transferState.transferFrom,\n transferState.transferTo,\n transferState.tokenId\n );\n\n await transaction.wait();\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n loadedMessage: {\n heading: \"Success! \",\n subHeading:\n \"Your NFT transfer has been successful! You will be redirected to your assets page.\",\n },\n type: \"success\",\n primaryBtn: {\n text: \"OK\",\n },\n }));\n\n setTransferState((prevState) => ({\n ...prevState,\n buttonState: \"loaded\",\n }));\n\n console.log(\"transfer success\");\n } catch (e) {\n setTransferState((prevState) => ({\n ...prevState,\n buttonState: \"loaded\",\n }));\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n purpose: \"\",\n }));\n\n // let errorSubHeading = \"Unable to transfer!\";\n let errorSubHeading = e.message;\n if (e.code === 4001) {\n errorSubHeading = \"User denied transaction!\";\n }\n setNotificationModalState((prevState) => ({\n ...prevState,\n loadedMessage: {\n heading: \"Error!\",\n subHeading: errorSubHeading,\n },\n }));\n }\n }\n };\n\n const handleSell = async () => {\n setShowSellModal((prevState) => !prevState);\n };\n\n const handleTransfer = async () => {\n setShowTransferModal((prevState) => !prevState);\n };\n\n return (\n <>\n \n \n {nft && !nftLoading ? (\n
\n {console.log(\"the nft from render: \", nft)}\n
\n
\n \n
\n
\n\n
\n
\n {\n history.goBack();\n }}\n >\n \n \n \n {nft.name.toLowerCase()}\n \n \n #{nft.tokenId}\n \n
\n
\n {/* \n Current Price\n */}\n
\n {/*
\n
\n
\n \n
\n {nft.price}\n
\n \n ({\"$\"}\n \n {(parseInt(nft.price) * iotexUsdRate).toFixed(2)}\n \n )\n \n
*/}\n
\n \n \n \n \n \n \n Transfer\n \n
\n
\n
\n
\n\n {/*
\n
\n \n
\n
\n \n Owner\n \n \n
\n
*/}\n
\n setLinkDetail(\"info\")}\n >\n info\n \n {/* setLinkDetail(\"desc\")}\n >\n description\n */}\n setLinkDetail(\"attributes\")}\n >\n attributes\n \n
\n <>\n
\n <>\n {linkDetail === \"info\" && (\n \n )}\n \n\n <>\n {linkDetail === \"attributes\" && (\n \n )}\n \n
\n \n
\n
\n ) : (\n

loading

\n )}\n \n );\n\n return (\n
\n \n \n {nftLoading ? (\n \n ) : nft?.name ? (\n
\n {console.log(\"nft detail: \", nft?.image)}\n
\n \n
\n
\n
\n \n {nft.name}\n \n \n {nft.desc}\n \n \n
\n
\n }\n connect={false}\n clickFunction={() =>\n setShowSellModal((prevState) => !prevState)\n }\n color=\"green\"\n hoverFontColor=\"white\"\n fontColor=\"white\"\n bgColor=\"#223824\"\n shadowColor=\"#223824\"\n bgColorHover=\"#18AA48\"\n shadowColorHover=\"#18AA48\"\n />\n setShowTransferModal((prevState) => !prevState)}\n >\n Transfer\n \n
\n
\n
\n ) : (\n
\n \n You dont own this token.\n \n\n \n Go to{\" \"}\n \n My Assets\n \n \n
\n )}\n
\n );\n};\n\nexport default NFT;\n","import { makeStyles } from \"@material-ui/core/styles\";\nimport { Typography } from \"@material-ui/core\";\n\nconst useStyles = makeStyles((theme) => ({\n toolbar: {\n height: \"80px\",\n marginBottom: theme.spacing(1),\n },\n root: {\n padding: theme.spacing(3),\n },\n}));\n\nconst Error = () => {\n const classes = useStyles();\n return (\n
\n
\n Don't act smart!\n
\n );\n};\n\nexport default Error;\n","export default __webpack_public_path__ + \"static/media/envelope.98792f84.png\";","import \"./FormSuccessModal.css\";\nimport envelope from \"../../assets/images/create/envelope.png\";\nimport { useHistory } from \"react-router-dom\";\n\nconst FormSuccessModal = ({ onClose }) => {\n const history = useHistory();\n return (\n
\n
\n
\n \"envelope\"\n
\n

Thank You!

\n

Your submission has been received

\n

We will be in touch!

\n {\n // onClose(false);\n history.push(\"/home\");\n }}\n >\n Close\n \n
\n
\n );\n};\n\nexport default FormSuccessModal;\n","import { useState } from \"react\";\nimport emailjs from \"emailjs-com\";\nimport \"./CreateForm.css\";\nimport FormSuccessModal from \"./FormSuccessModal\";\n\nimport { useHistory } from \"react-router-dom\";\n\n// const CssTextField = styled(TextField)({\n// \"& label.Mui-focused\": {\n// color: \"#31beaa\",\n// },\n// \"& .MuiInput-underline:after\": {\n// borderBottomColor: \"#31beaa\",\n// },\n// \"& .MuiOutlinedInput-root\": {\n// \"& fieldset\": {\n// borderColor: \"white\",\n// },\n// \"&:hover fieldset\": {\n// display: \"flex\",\n// justifyContent: \"flex-start\",\n// alignItems: \"center\",\n// color: \"#31beaa\",\n// borderColor: \"#31beaa\",\n// },\n// \"&.Mui-focused fieldset\": {\n// borderColor: \"#31beaa\",\n// },\n// },\n// });\n\nconst CreateForm = () => {\n const history = useHistory();\n\n const [preferredContactRender, setPreferredContactRender] = useState({\n \"E-mail\": false,\n Twitter: false,\n Telegram: false,\n });\n\n const [showModal, setShowModal] = useState(false);\n\n const preferredContactRadioButtonSelect = (e) => {\n console.log(e.target.value);\n setPreferredContactRender({\n \"E-mail\": false,\n Twitter: false,\n Telegram: false,\n });\n setPreferredContactRender((prevState) => ({\n ...prevState,\n [e.target.value]: true,\n }));\n console.log(preferredContactRender);\n };\n\n const sendEmail = async (e) => {\n e.preventDefault();\n\n emailjs\n .sendForm(\n \"service_dj90ms9\",\n \"template_ca0mepq\",\n e.target,\n \"user_If4uR89ZBNDaNurd4xuKq\"\n )\n .then(\n (result) => {\n console.log(result.text);\n e.target.reset();\n setShowModal(true);\n },\n (error) => {\n console.log(error.text);\n e.target.reset();\n }\n );\n setShowModal(true);\n };\n\n return (\n <>\n {showModal && }\n
\n
sendEmail(e)}>\n
\n
\n \n
\n
    \n
  • \n
    \n
    \n \n IoTeXArt NFT Creator Application\n \n

    \n IoTeXArt by Descent Labs is the first NFT marketplace on\n the IoTeX blockchain (https://iotexart.io/). We are\n looking to expand the number of curated collections\n available on the market. Descent Labs can provide\n assistance with marketing, pricing strategy and the\n minting process! You do not need to know how to create an\n NFT to apply or become a programmer! We are currently\n releasing approximately one new collection per week from\n different artists! In the future it will be an open\n process and we will accept applications from verified\n featured artists!{\" \"}\n \n Currently there is no cost to list on them marketplace!\n {\" \"}\n We looking forward to hearing from you! Bon Voyage!\n

    \n
    \n
    \n
  • \n \n \n Full Name\n * \n \n \n
    \n \n \n \n First Name\n \n \n \n \n \n Last Name\n \n \n
    \n
\n \n \n \n Preferred contact method\n * \n \n \n \n \n \n preferredContactRadioButtonSelect(e)}\n // required=\"\"\n />\n \n \n \n \n preferredContactRadioButtonSelect(e)}\n // required=\"\"\n />\n \n \n \n \n preferredContactRadioButtonSelect(e)}\n // required=\"\"\n />\n \n \n
\n
\n \n {preferredContactRender[\"E-mail\"] && (\n \n \n Email\n * \n \n \n \n \n \n example@example.com\n \n \n
\n \n )}\n {preferredContactRender.Twitter && (\n \n \n Twitter\n * \n \n \n \n
\n \n )}\n {preferredContactRender.Telegram && (\n \n \n Telegram\n * \n \n \n \n
\n \n )}\n \n \n Tell us a little bit about yourself\n * \n \n \n \n \n \n \n \n Have you ever released an NFT before? If yes, please provide a\n link\n * \n \n \n \n \n \n \n \n Describe the collection you would like to list on IoTeXArt (it\n does not need to be ready now! We are happy to hear your\n concept)\n * \n \n \n \n \n \n
  • \n \n How soon would you like to list your collection? (estimate)\n \n
    \n \n
    \n
  • \n
  • \n \n Is there anything else we should know? (Optional)\n \n
    \n \n
    \n
  • \n
  • \n \n If you have any examples pieces link them here (Optional)\n \n
    \n \n
    \n
  • \n
  • \n
    \n \n \n
    \n \n
  • \n \n \n \n \n \n );\n};\n\nexport default CreateForm;\n","import { makeStyles } from \"@material-ui/core/styles\";\nimport CreateForm from \"../components/CreateForm/CreateForm\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n padding: theme.spacing(3),\n },\n}));\n\nconst Create = () => {\n const classes = useStyles();\n return (\n
    \n \n
    \n );\n};\n\nexport default Create;\n","import { styled } from \"../../styles/styledComponent\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Typography } from \"@material-ui/core\";\nimport LoyaltyIcon from \"@mui/icons-material/Loyalty\";\nimport StoreIcon from \"@mui/icons-material/Store\";\nimport ViewModuleIcon from \"@mui/icons-material/ViewModule\";\nimport { Link } from \"react-router-dom\";\nimport { useLocation } from \"react-router\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n link: {\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n padding: \"0 10px\",\n width: \"100%\",\n height: \"100%\",\n },\n linkText: {\n textTransform: \"uppercase\",\n fontWeight: \"bold\",\n color: \"#010a1f\",\n },\n icon: {\n marginRight: \"10px\",\n transform: \"scale(1.5)\",\n color: \"#010a1f\",\n },\n visited: {\n backgroundColor: \"#e6e6e6\",\n },\n}));\n\nconst SidebarDiv = styled.div`\n position: fixed;\n top: 0;\n transition: 0.5s ease;\n left: ${(props) => (props.showSidebar ? \"0px\" : \"-100%\")};\n /* left: -100%; */\n width: 100%;\n height: 100%;\n background-color: #fcfcfc;\n z-index: 200;\n box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;\n /* border: 5px solid green; */\n\n @media (min-width: 960px) {\n left: -100%;\n /* opacity: 0; */\n /* z-index: 0; */\n }\n`;\n\nconst TopBar = styled.div`\n padding: 10px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background-color: #010a1f;\n color: white;\n height: 80px;\n`;\n\nconst CloseBtn = styled.button`\n border: none;\n background: none;\n cursor: pointer;\n color: white;\n`;\n\nconst LinkContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst LinkStyled = styled.div`\n background-color: inherit;\n transition: 0.5s ease;\n height: 80px;\n\n &:hover {\n background-color: white;\n }\n`;\n\nconst Sidebar = ({ showSidebar, setShowSidebar, userAccount }) => {\n const loc = useLocation();\n const classes = useStyles();\n return (\n \n \n \n iotexart\n \n setShowSidebar((prevState) => !prevState)}>\n \n \n \n \n {userAccount && userAccount.length && (\n \n setShowSidebar(() => false)}\n >\n \n \n My NFTs\n \n \n \n )}\n \n setShowSidebar(() => false)}\n >\n \n \n NFT Sales\n \n \n \n \n setShowSidebar(() => false)}\n >\n \n \n Marketplace\n \n \n \n \n setShowSidebar(() => false)}\n >\n \n \n create\n \n \n \n \n \n );\n};\n\nexport default Sidebar;\n","import { shortifyContractAddress } from \"../../../helpers/stringUtilities\";\n\nimport { makeStyles } from \"@material-ui/styles\";\nimport HeadingError from \"../../HeadingError\";\n\nconst useStyles = makeStyles({\n bidDataContainer: {\n width: \"100%\",\n },\n table: {\n width: \"100%\",\n },\n});\n\nconst OnSaleBids = ({ columns, bidData }) => {\n const classes = useStyles();\n return (\n
    \n {bidData && bidData?.length ? (\n \n \n \n {columns &&\n columns?.length &&\n columns.map(({ Header, accessor }) => (\n \n ))}\n \n \n \n {bidData.map((val) => {\n return (\n \n \n \n \n \n \n );\n })}\n \n
    \n {Header}\n
    {val.price} IOTX${val.usdPrice}{val.expiresAt}{shortifyContractAddress(val.bidder, 6, 4)}
    \n ) : (\n \n )}\n
    \n );\n};\n\nexport default OnSaleBids;\n","import { styled } from \"../../styles/styledComponent\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Typography } from \"@mui/material\";\n\nconst useStyles = makeStyles((theme) => ({\n modalButtonEnabled: {\n width: \"100%\",\n height: \"100%\",\n fontWeight: \"bold\",\n padding: \"0 6px\",\n fontSize: \"14px\",\n background: \"#00e100\",\n border: \"none\",\n outline: \"none\",\n textTransform: \"uppercase\",\n borderRadius: \"8px\",\n color: \"white\",\n transition: \"0.3s ease-in-out\",\n cursor: \"pointer\",\n\n \"&:hover\": {\n background: \"#00a800\",\n },\n },\n\n modalButtonDisabled: {\n width: \"100px\",\n height: \"100%\",\n fontWeight: \"bold\",\n padding: \"0 6px\",\n fontSize: \"14px\",\n background: \"#3d3742\",\n border: \"none\",\n outline: \"none\",\n textTransform: \"uppercase\",\n borderRadius: \"8px\",\n color: \"#67606e\",\n transition: \"0.3s ease-in-out\",\n cursor: \"no-drop\",\n },\n\n buttonGroup: {\n width: \"100%\",\n // border: \"1px solid white\",\n display: \"flex\",\n // justifyContent: \"space-evenly\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"40px\",\n marginBottom: \"10px\",\n },\n\n progressContainer: {\n width: \"100%\",\n // border: \"1px solid white\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"48px\",\n marginBottom: \"20px\",\n },\n\n gradientProgressBar: {\n width: \"100px\",\n height: \"4px\",\n background:\n \"linear-gradient(90deg, rgba(0, 225, 0, 1) 0%, rgba(61, 55, 66, 1) 60%, rgba(61, 55, 66, 1) 100%)\",\n },\n\n gradientProgressBarReverse: {\n width: \"100px\",\n height: \"4px\",\n background:\n \"linear-gradient(90deg, rgba(61, 55, 66, 1) 0%, rgba(61, 55, 66, 1) 40%, rgba(0, 225, 0, 1) 100%)\",\n },\n\n circle: {\n borderRadius: \"100px\",\n width: \"25px\",\n height: \"25px\",\n background: \"#00e100\",\n color: \"white\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n\n circleDisabled: {\n background: \"#3d3742\",\n },\n\n errorMsg: {\n fontWeight: \"bold\",\n color: \"red\",\n marginBottom: \"10px\",\n },\n\n expiresInDropDown: {\n border: \"5px solid #423e4d\",\n outline: \"none\",\n backgroundColor: \"#6d667d\",\n borderRadius: \"8px\",\n // width: 450px;\n width: \"100%\",\n height: \"52px\",\n padding: \"0px 8px\",\n fontSize: \"20px\",\n fontWeight: \"bold\",\n marginBottom: \"20px\",\n color: \"#fff\",\n\n \"&:hover\": {\n outline: \"none\",\n },\n },\n}));\n\nconst Container = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100vh;\n z-index: 20;\n display: ${(props) => (!props.showModal ? \"none\" : \"inline\")};\n`;\n\nconst ModalBox = styled.div`\n position: absolute;\n left: 0;\n right: 0;\n top: ${(props) => (!props.showModal ? \"-100px\" : \"0\")};\n opacity: ${(props) => (!props.showModal ? \"0\" : \"1\")};\n bottom: 0;\n margin: auto;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 450px;\n height: 400px;\n background-color: #27272d;\n border-radius: 8px;\n border: 2px solid #000;\n box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;\n z-index: 22;\n padding: 50px 50px;\n transition: 0.3s ease;\n`;\n\nconst Wrapper = styled.div`\n // height: 90px;\n margin: auto;\n height: 100%;\n width: 100%;\n // border: 2px solid #000;\n display: flex;\n flex-direction: column;\n justify-content: space-evenly;\n align-items: center;\n`;\n\nconst Price = styled.input`\n border: 5px solid #423e4d;\n outline: none;\n background-color: #6d667d;\n border-radius: 8px;\n // width: 450px;\n width: 100%;\n height: 52px;\n padding: 0px 8px;\n font-size: 20px;\n font-weight: bold;\n margin-bottom: 10px;\n color: white;\n\n &::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: white;\n opacity: 0.5;\n }\n`;\n\nconst ActionForm = styled.form`\ndisplay: flex;\nflex-direction: column;\n justify-content: center;\n align-items: center';\n`;\n\nconst ModalBg = styled.div`\n display: ${(props) => (!props.showModal ? \"none\" : \"block\")};\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 21;\n background-color: rgba(0, 0, 0, 0.5);\n`;\n\nconst CloseBtn = styled.button`\n border: none;\n background: none;\n cursor: pointer;\n color: white;\n position: absolute;\n top: 10px;\n right: 10px;\n font-weight: bold;\n`;\n\nconst MakeOfferModal = ({\n makeOfferState: { price, expiresIn, errorMsg, tokenId },\n setMakeOfferState,\n makeOffer,\n showModal,\n setShowModal,\n}) => {\n const classes = useStyles();\n\n const handleCloseModal = () => {\n setMakeOfferState((prevState) => ({\n ...prevState,\n price: 0,\n expiresIn: 1,\n errorMsg: \"\",\n }));\n setShowModal((prevState) => !prevState);\n };\n\n const handlePriceInput = (e) => {\n setMakeOfferState((prevState) => ({\n ...prevState,\n price: e.target.value.trim(),\n }));\n // console.log(e.target.value, typeof e.target.value);\n };\n\n const handleExpiresInInput = (e) => {\n setMakeOfferState((prevState) => ({\n ...prevState,\n expiresIn: parseInt(e.target.value.trim()),\n }));\n console.log(e.target.value, typeof e.target.value);\n };\n\n const handleMakeOffer = async (e) => {\n e.preventDefault();\n await makeOffer();\n };\n\n return (\n \n \n \n \n \n \n \n \n You are about to bid on NFT{\" \"}\n #{tokenId}\n \n \n \n handlePriceInput(e)}\n />\n
    {errorMsg}
    \n\n \n\n \n \n \n \n \n \n \n \n\n
    \n handleMakeOffer(e)}\n className={classes.modalButtonEnabled}\n type=\"submit\"\n >\n Make Offer\n \n
    \n
    \n \n Note: Make offer note\n \n
    \n
    \n
    \n );\n};\n\nexport default MakeOfferModal;\n","import { makeStyles } from \"@material-ui/styles\";\nimport { useContext, useState, useMemo, useEffect } from \"react\";\nimport { useHistory, useParams } from \"react-router\";\nimport { AppContext } from \"../context/AppProvider\";\n\nimport Web3Modal from \"web3modal\";\nimport { ethers } from \"ethers\";\nimport axios from \"axios\";\nimport Web3 from \"web3\";\n\nimport { nftMarketContractAddress } from \"../config\";\nimport NFTMarket from \"../artifacts/contracts/NFTMarket.sol/NFTMarket.json\";\n\nimport OnSaleInfo from \"../components/Marketplace/MarketplaceItemSale/OnSaleInfo\";\nimport OnSaleBids from \"../components/Marketplace/MarketplaceItemSale/OnSaleBids\";\n\nimport iotexIcon from \"../assets/icons/iotex.png\";\nimport { Typography } from \"@mui/material\";\nimport { MdKeyboardBackspace } from \"react-icons/md\";\nimport { BiLinkExternal } from \"react-icons/bi\";\nimport {\n AccountBalanceWallet,\n LocalOffer,\n LayersClear,\n ThumbUpAlt,\n} from \"@mui/icons-material\";\nimport { shortifyContractAddress } from \"../helpers/stringUtilities\";\nimport MakeOfferModal from \"../components/MakeOfferModal/MakeOfferModal\";\nimport AttributeBarContainer from \"../containers/Marketplace/AttributeBarContainer\";\n\nlet web3 = new Web3(\"https://babel-api.testnet.iotex.io\");\n\nconst BLOCK_EXPLORER_URL = {\n testnet: \"https://testnet.iotexscan.io/address/\",\n mainnet: \"https://iotexscan.io/address/\",\n};\n\nconst columns = [\n {\n Header: \"Price\",\n accessor: \"price\",\n },\n {\n Header: \"USD Price\",\n accessor: \"usdPrice\",\n },\n {\n Header: \"Expiration\",\n accessor: \"expiration\",\n },\n {\n Header: \"Bidder\",\n accessor: \"bidder\",\n },\n];\n\nconst useStyles = makeStyles({\n detailsContainer: {\n // border: \"2px solid blue\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"flex-start\",\n // overflow: \"hidden\",\n position: \"relative\",\n marginTop: \"20px\",\n height: \"660px\",\n },\n\n nftInfo: {\n padding: \"20px\",\n // border: \"2px solid blue\",\n },\n\n saleInfo: {\n height: \"100%\",\n padding: \"20px\",\n width: \"920px\",\n // border: \"2px solid blue\",\n overflow: \"auto\",\n },\n\n iconWrapper: {\n height: \"40px\",\n width: \"40px\",\n // border: \"1px solid green\",\n display: \"inline-block\",\n marginRight: \"5px\",\n },\n\n icon: {\n height: \"100%\",\n width: \"100%\",\n // border: \"1px solid purple\",\n objectFit: \"contain\",\n },\n\n imageContainer: {\n position: \"relative\",\n height: \"593px\",\n width: \"448px\",\n background: \"#101A1B\",\n borderRadius: \"8px\",\n overflow: \"hidden\",\n marginBottom: \"20px\",\n },\n\n attributes: {\n width: \"448px\",\n },\n\n infoBoxContainer: {\n height: \"593px\",\n width: \"920px\",\n border: \"1px solid white\",\n },\n\n image: {\n height: \"100%\",\n width: \"100%\",\n objectFit: \"cover\",\n },\n\n headingWrapper: {\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n marginBottom: \"30px\",\n },\n\n backBtn: {\n width: \"50px\",\n height: \"50px\",\n background: \"rgba(53, 65, 66, 0)\",\n borderRadius: \"8px\",\n outline: \"none\",\n border: \"none\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n cursor: \"pointer\",\n transition: \"0.3s ease\",\n marginRight: \"20px\",\n\n \"&:hover\": {\n background: \"rgba(53, 65, 66, 1)\",\n },\n },\n\n actionWrapper: {\n height: \"150px\",\n background: \"#354142\",\n borderRadius: \"8px\",\n border: \"2px solid #779699\",\n padding: \"24px\",\n marginBottom: \"30px\",\n },\n\n ownerWrapper: {\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n marginBottom: \"30px\",\n },\n\n ownerThumbnailWrapper: {\n width: \"50px\",\n height: \"50px\",\n overflow: \"hidden\",\n borderRadius: \"100px\",\n background: \"grey\",\n border: \"2px solid #004247\",\n marginRight: \"10px\",\n },\n\n ownerThumbnail: {\n height: \"100%\",\n width: \"100%\",\n objectFit: \"cover\",\n },\n\n owner: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n },\n\n displayCenterButton: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n border: \"none\",\n background: \"transparent\",\n outline: \"none\",\n },\n\n externalLinkBtn: {\n height: \"25px\",\n fontWeight: \"bold\",\n color: \"#\",\n textTransform: \"capitalize\",\n outline: \"none\",\n transition: \"0.3s ease\",\n cursor: \"pointer\",\n background: \"transparent\",\n padding: \"5px 0\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n\n \"&:hover\": {\n color: \"#1182ba\",\n },\n },\n\n linkContainer: {\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n height: \"50px\",\n marginBottom: \"10px\",\n },\n\n linkBtn: {\n height: \"30px\",\n width: \"100px\",\n color: \"#fff\",\n fontWeight: \"bold\",\n padding: \"5px 10px\",\n background: \"rgba(53, 65, 66, 0)\",\n borderRadius: \"50px\",\n outline: \"none\",\n border: \"none\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n cursor: \"pointer\",\n transition: \"0.3s ease\",\n marginRight: \"20px\",\n textTransform: \"capitalize\",\n\n \"&:hover\": {\n background: \"rgba(53, 65, 66, 1)\",\n },\n },\n\n visitedLink: {\n background: \"#fff\",\n color: \"#111\",\n },\n\n priceWrapper: {\n display: \"flex\",\n // justifyContent: \"flex-start\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginBottom: \"20px\",\n },\n\n iotxPrice: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n fontSize: \"40px\",\n fontWeight: \"bold\",\n marginRight: \"10px\",\n },\n\n buyNowBtn: {\n height: \"54px\",\n width: \"170px\",\n color: \"#fff\",\n fontWeight: \"bold\",\n fontSize: \"20px\",\n // padding: \"5px 10px\",\n background: \"rgba(45, 227, 112, 1)\",\n borderRadius: \"8px\",\n outline: \"none\",\n border: \"none\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n cursor: \"pointer\",\n transition: \"0.3s ease\",\n marginRight: \"20px\",\n textTransform: \"capitalize\",\n\n \"&:hover\": {\n background: \"rgba(30, 156, 76, 1)\",\n },\n },\n\n makeOfferBtn: {\n height: \"54px\",\n width: \"170px\",\n color: \"#fff\",\n fontWeight: \"bold\",\n fontSize: \"20px\",\n // padding: \"5px 10px\",\n background: \"rgba(101, 172, 235, 1)\",\n borderRadius: \"8px\",\n outline: \"none\",\n border: \"none\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n cursor: \"pointer\",\n transition: \"0.3s ease\",\n marginRight: \"20px\",\n textTransform: \"capitalize\",\n\n \"&:hover\": {\n background: \"rgba(72, 123, 168, 1)\",\n },\n },\n\n delistBtn: {\n height: \"54px\",\n width: \"170px\",\n color: \"#fff\",\n fontWeight: \"bold\",\n fontSize: \"20px\",\n // padding: \"5px 10px\",\n background: \"rgba(207, 0, 0, 1)\",\n borderRadius: \"8px\",\n outline: \"none\",\n border: \"none\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n cursor: \"pointer\",\n transition: \"0.3s ease\",\n marginRight: \"20px\",\n textTransform: \"capitalize\",\n\n \"&:hover\": {\n background: \"rgba(168, 0, 0, 1)\",\n },\n },\n});\n\nconst MarketplaceSaleItem = () => {\n const classes = useStyles();\n const { nftName, id } = useParams();\n const history = useHistory();\n\n let userAccount = sessionStorage.getItem(\"user\");\n const teamNFTs = sessionStorage.getItem(\"teamNFTs\");\n\n const {\n connectWallet,\n notification,\n showModal,\n setShowModal,\n setNotificationModalState,\n iotexUsdRate,\n } = useContext(AppContext);\n\n const [nftOnSaleDetailsLoading, setNftOnSaleDetailsLoading] = useState(false);\n const [nft, setNft] = useState(null);\n\n const [linkDetail, setLinkDetail] = useState(\"info\");\n\n const [makeOfferState, setMakeOfferState] = useState({\n seller: userAccount,\n nftMarketplaceAddress: \"\",\n tokenId: parseInt(id),\n price: \"\",\n expiresIn: 1,\n errorMsg: \"\",\n });\n\n const [bidData, setBidData] = useState([]);\n\n const [showMakeOfferModal, setShowMakeOfferModal] = useState(false);\n\n const getNftOnSaleDetails = async () => {\n try {\n const requiredNFT = JSON.parse(teamNFTs)?.find(\n (NFT) => NFT.tokenName === nftName && NFT\n );\n\n let contractAddress = requiredNFT?.contractAddress;\n let ABI = requiredNFT?.abi;\n\n const marketContract = new web3.eth.Contract(\n NFTMarket.abi,\n nftMarketContractAddress\n );\n\n let data = await marketContract.methods\n .fetchItemsCreated(contractAddress)\n .call();\n\n data = data?.find((item) => item.tokenId === id);\n\n const provider = new ethers.providers.JsonRpcProvider(\n \"https://babel-api.testnet.iotex.io\"\n );\n\n const contract = new ethers.Contract(contractAddress, ABI.abi, provider);\n\n const tokenURI = await contract.tokenURI(parseInt(id));\n const meta = await axios.get(tokenURI);\n\n let imageUri = meta.data.image;\n let attributes = meta.data.attributes;\n\n setNft((prevState) => ({\n ...prevState,\n ...data,\n image: imageUri,\n attributes: attributes,\n tokenName: requiredNFT?.tokenName,\n price: ethers.utils.formatUnits(data.price.toString(), \"ether\"),\n name: requiredNFT?.name,\n desc: requiredNFT?.longDescription,\n }));\n\n //get bids data\n let iid = parseInt(data.itemId);\n getBids(marketContract, iid);\n const maxBidData = await getMaxBid(marketContract, iid);\n\n setNft((prevState) => ({\n ...prevState,\n bidId: maxBidData.bidId,\n bidder: maxBidData.bidder,\n offerPrice: maxBidData.offerPrice,\n }));\n } catch (error) {\n console.log(\"error in getNftOnSaleDetails(): \", error);\n }\n };\n\n useEffect(() => {\n setNftOnSaleDetailsLoading(() => true);\n getNftOnSaleDetails();\n setNftOnSaleDetailsLoading(() => false);\n }, [id]);\n\n const getBids = async (contract, itemId) => {\n try {\n // const marketContract = new web3.eth.Contract(\n // NFTMarket.abi,\n // nftMarketContractAddress\n // );\n\n const latestBidData = await contract.methods\n .bidsByItemId(parseInt(itemId))\n .call();\n\n // const coingeckoApi =\n // \"https://api.coingecko.com/api/v3/simple/price?ids=iotex&vs_currencies=usd\";\n // const response = await axios(coingeckoApi);\n // const iotexUsdRate = await response?.data?.iotex?.usd;\n // const iotexUsdRate = 0.11;\n\n const currentTimestamp = Math.floor(new Date().getTime() / 1000);\n\n const bidDetails = latestBidData.map((bidDatum) => {\n const price = web3.utils.fromWei(bidDatum?.price, \"ether\");\n\n const usdPrice = iotexUsdRate * price;\n\n let timeDiff = bidDatum.expiresAt - currentTimestamp;\n\n let expiresAt =\n timeDiff <= 0\n ? \"Bid Expired\"\n : timeDiff / 86400 > 1\n ? `in about ${Math.floor(timeDiff / 86400)} days`\n : timeDiff / 3600 > 1\n ? `in about ${Math.floor(timeDiff / 3600)} hours`\n : timeDiff / 60 > 1\n ? `in about ${Math.floor(timeDiff / 60)} minutes`\n : `in about ${Math.floor(timeDiff)} seconds`;\n\n return {\n bidId: bidDatum.bidID,\n price: price,\n usdPrice: usdPrice.toFixed(2),\n expiresAt: expiresAt,\n bidder: bidDatum.bidder,\n };\n });\n\n // console.log(\"bidDetails: \", bidDetails);\n\n let sortedBidData = [];\n\n for (let i = 0; i < bidDetails.length; i++) {\n if (bidDetails[i].expiresAt === \"Bid Expired\") {\n sortedBidData.push(bidDetails[i]);\n } else {\n sortedBidData.unshift(bidDetails[i]);\n }\n }\n\n setBidData(() => sortedBidData);\n } catch (error) {\n console.log(\"error fetching bids: \", error);\n }\n };\n\n const makeOffer = async ({ seller, nftContract, tokenId, itemId }) => {\n try {\n setMakeOfferState((prevState) => ({ ...prevState, errorMsg: \"\" }));\n // console.log(\"the userAccount: \", userAccount);\n // console.log(\"the seller: \", seller);\n\n // const bidder = bidData?.find(\n // (data) =>\n // userAccount === data?.bidder.toLowerCase().trim() &&\n // data?.expiresAt !== \"Bid Expired\"\n // );\n\n // console.log(\n // \"bidData ka expiresAt: \",\n // bidData?.expiresAt,\n // typeof bidData?.expiresAt\n // );\n\n // if (!!bidder) {\n // setMakeOfferState((prevState) => ({\n // ...prevState,\n // errorMsg: \"You have already bid!\",\n // }));\n // console.log(\"You have already bid!\");\n // return;\n // }\n\n // if (bidAmount <= 0 || bidAmount === \"\") {\n // notification(\"Be generous!\", \"error\");\n // console.log(\"be generous\");\n // return;\n // }\n\n // if (!!!userAccount || userAccount?.length <= 0) {\n // await connectWallet();\n // }\n\n web3 = new Web3(window.ethereum);\n await window.ethereum.enable();\n const contract = new web3.eth.Contract(\n NFTMarket.abi,\n nftMarketContractAddress\n );\n\n let minBidDuration = await contract.methods.MIN_BID_DURATION().call();\n\n let maxBidDuration = await contract.methods.MAX_BID_DURATION().call();\n\n console.log(\"minBidDuration: \", minBidDuration, typeof minBidDuration);\n console.log(\"maxBidDuration: \", maxBidDuration);\n\n const { price: priceInput, expiresIn: expiresInDays } = makeOfferState;\n\n let expiresInInput = expiresInDays * 86400;\n\n if (priceInput < 1 || priceInput === \"\") {\n setMakeOfferState((prevState) => ({\n ...prevState,\n errorMsg: \"Be generous!\",\n }));\n console.log(\"be generous\");\n return;\n }\n if (parseInt(priceInput.trim()) === 1) {\n setMakeOfferState((prevState) => ({\n ...prevState,\n errorMsg: \"Place bid greater than 1 IOTX\",\n }));\n console.log(\"Place bid greater than 1 IOTX\");\n return;\n }\n\n if (\n expiresInInput < parseInt(minBidDuration) ||\n expiresInInput === \"\" ||\n expiresInInput > parseInt(maxBidDuration)\n ) {\n setMakeOfferState((prevState) => ({\n ...prevState,\n errorMsg: \"Invalid bid expiration entered\",\n }));\n console.log(\"Invalid bid expiration entered\");\n return;\n }\n\n if (userAccount.trim() === seller.toLowerCase().trim()) {\n setMakeOfferState((prevState) => ({\n ...prevState,\n errorMsg: \"Seller cannot place bid!\",\n }));\n console.log(\"Seller cannot place bid\");\n return;\n }\n\n const bidPriceArray = bidData?.map((data) => parseInt(data.price));\n const highestBid = bidPriceArray?.reduce((acc, val) => {\n acc = acc === undefined || val < acc ? val : acc;\n\n return acc;\n }, []);\n\n console.log(\"highest bid: \", highestBid);\n\n console.log(\"THE BID PRICE: \", bidData?.price, typeof bidData?.price);\n if (parseInt(priceInput) <= parseInt(bidData?.price)) {\n setMakeOfferState((prevState) => ({\n ...prevState,\n errorMsg: \"Place a bid greater than current bid\",\n }));\n return;\n }\n\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n sell: false,\n makeOffer: false,\n }));\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: true,\n loadingMessage: {\n heading: \"Confirm this operation in wallet.\",\n subHeading: \"Your Bid is in progress! Be patient\",\n },\n purpose: \"bid\",\n }));\n\n const weiPrice = web3.utils.toWei(priceInput.toString(), \"ether\");\n console.log(\"bid amount(wei): \", weiPrice);\n await contract.methods\n .placeBid(nftContract, tokenId, itemId, expiresInInput.toString())\n .send({ from: userAccount, value: weiPrice })\n .on(\"receipt\", (receipt) => {\n console.log(\"tx receipt: \", receipt);\n let successMessage = \"Bid successfully submitted!\";\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n loadedMessage: {\n heading: \"Success! \",\n subHeading: \"Your Bid has been sucessfully placed.\",\n },\n type: \"success\",\n primaryBtn: {\n text: \"Close\",\n },\n }));\n notification(successMessage, \"success\");\n });\n\n setMakeOfferState((prevState) => ({\n ...prevState,\n price: 0,\n expiresIn: 1,\n }));\n getBids(contract, parseInt(itemId));\n } catch (error) {\n // let errorSubHeading = \"Unable to transfer!\";\n let errorSubHeading = error.message;\n if (error.code === 4001) {\n errorSubHeading = \"User denied transaction!\";\n }\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n purpose: \"\",\n loadedMessage: {\n heading: \"Error!\",\n subHeading: errorSubHeading,\n },\n }));\n\n console.log(\"error: \", error);\n }\n setShowMakeOfferModal((prevState) => !prevState);\n };\n\n const handleMakeOffer = async () => {\n try {\n const bidder = bidData?.find(\n (data) =>\n userAccount === data?.bidder.toLowerCase().trim() &&\n data?.expiresAt !== \"Bid Expired\"\n );\n\n console.log(\n \"bidData ka expiresAt: \",\n bidData?.expiresAt,\n typeof bidData?.expiresAt\n );\n\n if (!!bidder) {\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n sell: false,\n makeOffer: false,\n }));\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n purpose: \"\",\n loadedMessage: {\n heading: \"Error!\",\n subHeading: \"You have already bid!\",\n },\n }));\n return;\n }\n\n if (!!!userAccount || userAccount?.length <= 0) {\n await connectWallet();\n }\n\n setShowMakeOfferModal((prevState) => !prevState);\n } catch (error) {\n console.log(\"error in handleMakeOffer: \", error);\n }\n };\n\n const getMaxBid = async (contract, itemId) => {\n try {\n const latestBidData = await contract.methods\n .bidsByItemId(parseInt(itemId))\n .call();\n\n // const coingeckoApi =\n // \"https://api.coingecko.com/api/v3/simple/price?ids=iotex&vs_currencies=usd\";\n // const response = await axios(coingeckoApi);\n // const iotexUsdPrice = await response?.data?.iotex?.usd;\n const iotexUsdPrice = 0.11;\n console.log(\"latestBidData: \", latestBidData);\n\n const currentTimestamp = Math.floor(new Date().getTime() / 1000);\n\n const bidDetails = latestBidData\n .map((bidDatum) => {\n const price = web3.utils.fromWei(bidDatum?.price, \"ether\");\n\n const usdPrice = iotexUsdPrice * price;\n\n let timeDiff = bidDatum.expiresAt - currentTimestamp;\n\n let expiresAt =\n timeDiff <= 0\n ? \"Bid Expired\"\n : timeDiff / 86400 > 1\n ? `in about ${Math.floor(timeDiff / 86400)} days`\n : timeDiff / 3600 > 1\n ? `in about ${Math.floor(timeDiff / 3600)} hours`\n : timeDiff / 60 > 1\n ? `in about ${Math.floor(timeDiff / 60)} minutes`\n : `in about ${Math.floor(timeDiff)} seconds`;\n\n return {\n bidId: bidDatum.bidID,\n offerPrice: parseInt(price),\n usdPrice: usdPrice.toFixed(2),\n expiresAt: expiresAt,\n bidder: bidDatum.bidder,\n };\n })\n .filter((bidDatum) => bidDatum.expiresAt !== \"Bid Expired\");\n\n if (bidDetails.length <= 0) {\n return {\n bidId: \"\",\n bidder: \"\",\n offerPrice: 0,\n };\n }\n\n let maxBidData = {\n bidId: \"\",\n bidder: \"\",\n offerPrice: 0,\n };\n for (let i = 0; i < bidDetails.length; i++) {\n const { offerPrice } = bidDetails[i];\n if (offerPrice > maxBidData.offerPrice) {\n // maxPrice.price = price;\n maxBidData.bidId = bidDetails[i].bidId;\n maxBidData.bidder = bidDetails[i].bidder;\n maxBidData.offerPrice = bidDetails[i].offerPrice;\n }\n }\n\n console.log(\"maxBidData: \", maxBidData);\n\n return maxBidData;\n } catch (error) {\n console.log(\"error fetching bids: \", error);\n }\n };\n\n const acceptOffer = async ({\n seller,\n nftContract,\n tokenId,\n itemId,\n bidId,\n bidder,\n offerPrice,\n }) => {\n try {\n console.log(\"called acceptOffer()\");\n\n if (offerPrice <= 0) {\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n sell: false,\n makeOffer: false,\n }));\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n purpose: \"\",\n loadedMessage: {\n heading: \"Error!\",\n subHeading:\n \"Unfortunately, there is no active bid at the moment for this NFT!\",\n },\n }));\n return;\n }\n\n if (!!!userAccount || userAccount?.length <= 0) {\n await connectWallet();\n }\n\n if (userAccount !== seller.toLowerCase().trim()) {\n console.log(\"Only seller can cancel sale!\");\n return;\n }\n\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n // sell: false,\n }));\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: true,\n loadingMessage: {\n heading: \"Accepting Offer\",\n subHeading: \"To accept this bid, confirm transaction in your wallet.\",\n },\n purpose: \"accept\",\n }));\n\n const web3Modal = new Web3Modal();\n const connection = await web3Modal.connect();\n const provider = new ethers.providers.Web3Provider(connection);\n\n const signer = provider.getSigner();\n\n const marketContract = new ethers.Contract(\n nftMarketContractAddress,\n NFTMarket.abi,\n signer\n );\n\n const transaction = await marketContract[\n \"acceptBid(address,uint256,uint256,bytes,address)\"\n ](nftContract, tokenId, itemId, bidId, bidder);\n\n await transaction.wait();\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n loadedMessage: {\n heading: \"Congratulations! \",\n subHeading: \"You have sucessfully sold your NFT!\",\n },\n type: \"success\",\n primaryBtn: {\n text: \"Close\",\n },\n }));\n\n console.log(\"accepted offer successfully! Redirecting\");\n } catch (error) {\n let errorSubHeading = error.message;\n if (error.code === 4001) {\n errorSubHeading = \"User denied transaction!\";\n }\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n purpose: \"\",\n loadedMessage: {\n heading: \"Error!\",\n subHeading: errorSubHeading,\n },\n }));\n console.log(\"error in acceptOffer(): \", error);\n }\n };\n\n const buyNow = async ({ seller, nftContract, tokenId, itemId, price }) => {\n try {\n console.log(\"called buyNow()\");\n\n if (!!!userAccount || userAccount?.length <= 0) {\n await connectWallet();\n }\n\n if (userAccount.trim() === seller.toLowerCase().trim()) {\n notification(\"Seller cannot place buy!\", \"error\");\n console.log(\"Seller cannot place buy\");\n return;\n }\n\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n sell: false,\n makeOffer: false,\n }));\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: true,\n loadingMessage: {\n heading: \"Purchase\",\n subHeading:\n \"To continue purchase, confirm transaction from your wallet.\",\n },\n purpose: \"buyNow\",\n }));\n\n web3 = new Web3(window.ethereum);\n await window.ethereum.enable();\n const contract = new web3.eth.Contract(\n NFTMarket.abi,\n nftMarketContractAddress\n );\n\n const weiPrice = web3.utils.toWei(price.toString(), \"ether\");\n console.log(\"bid amount(wei): \", weiPrice);\n\n await contract.methods\n .createMarketSale(nftContract, tokenId, itemId)\n .send({ from: userAccount, value: weiPrice })\n .on(\"receipt\", (receipt) => {\n console.log(\"tx receipt: \", receipt);\n let successMessage = \"Bought Successfully!\";\n notification(successMessage, \"success\");\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n loadedMessage: {\n heading: \"Success! \",\n subHeading: \"You have Sucessfully purchased this NFT.\",\n },\n type: \"success\",\n primaryBtn: {\n text: \"Go to My NFT\",\n },\n }));\n });\n\n // .on(\"error\", (error) => console.log(\"trxn error: \", error));\n\n console.log(\"finished waiting for transaction\");\n } catch (error) {\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n purpose: \"\",\n }));\n // let errorSubHeading = \"Unable to transfer!\";\n let errorSubHeading = error.message;\n if (error.code === 4001) {\n errorSubHeading = \"User denied transaction!\";\n }\n setNotificationModalState((prevState) => ({\n ...prevState,\n loadedMessage: {\n heading: \"Error!\",\n subHeading: errorSubHeading,\n },\n }));\n console.log(\"error in buyNow(): \", error, typeof error);\n }\n };\n\n const cancelSaleOld = async ({ seller, nftContract, tokenId, itemId }) => {\n try {\n console.log(\"called cancelSale()\");\n\n if (!!!userAccount || userAccount?.length <= 0) {\n await connectWallet();\n }\n\n if (userAccount !== seller.toLowerCase().trim()) {\n notification(\"Only seller can cancel sale!\", \"error\");\n console.log(\"Only seller can cancel sale!\");\n return;\n }\n\n const web3Modal = new Web3Modal();\n const connection = await web3Modal.connect();\n const provider = new ethers.providers.Web3Provider(connection);\n\n const signer = provider.getSigner();\n\n const marketContract = new ethers.Contract(\n nftMarketContractAddress,\n NFTMarket.abi,\n signer\n );\n\n const transaction = await marketContract[\n \"removeMarketItem(address,uint256,uint256)\"\n ](nftContract, tokenId, itemId);\n\n await transaction.wait();\n\n console.log(\"cancelled successfully! Redirecting\");\n\n setTimeout(() => history.goBack(), 3000);\n } catch (error) {\n console.log(\"error in buyNow(): \", error);\n }\n };\n\n const cancelSale = async ({ seller, nftContract, tokenId, itemId }) => {\n try {\n console.log(\"called cancelSale()\");\n\n if (!!!userAccount || userAccount?.length <= 0) {\n await connectWallet();\n }\n\n if (userAccount !== seller.toLowerCase().trim()) {\n console.log(\"Only seller can cancel sale!\");\n return;\n }\n\n setShowModal((prevState) => ({\n ...prevState,\n visible: true,\n notification: true,\n // sell: false,\n }));\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: true,\n loadingMessage: {\n heading: \"Delisting Item\",\n subHeading: \"To continue, confirm transaction in your wallet.\",\n },\n purpose: \"cancelSale\",\n }));\n\n const web3Modal = new Web3Modal();\n const connection = await web3Modal.connect();\n const provider = new ethers.providers.Web3Provider(connection);\n\n const signer = provider.getSigner();\n\n const marketContract = new ethers.Contract(\n nftMarketContractAddress,\n NFTMarket.abi,\n signer\n );\n\n const transaction = await marketContract[\n \"removeMarketItem(address,uint256,uint256)\"\n ](nftContract, tokenId, itemId);\n\n await transaction.wait();\n\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n loadedMessage: {\n heading: \"Success! \",\n subHeading: \"You have sucessfully removed your NFT from sale.\",\n },\n type: \"success\",\n primaryBtn: {\n text: \"Close\",\n },\n }));\n\n console.log(\"cancelled successfully! Redirecting\");\n } catch (error) {\n // let errorSubHeading = \"Unable to transfer!\";\n let errorSubHeading = error.message;\n if (error.code === 4001) {\n errorSubHeading = \"User denied transaction!\";\n }\n setNotificationModalState((prevState) => ({\n ...prevState,\n loading: false,\n type: \"error\",\n primaryBtn: {\n text: \"Close\",\n },\n purpose: \"\",\n loadedMessage: {\n heading: \"Error!\",\n subHeading: errorSubHeading,\n },\n }));\n console.log(\"error in cancelSale(): \", error);\n }\n };\n\n return (\n <>\n makeOffer(nft)}\n showModal={showMakeOfferModal}\n setShowModal={setShowMakeOfferModal}\n />\n {nft && !nftOnSaleDetailsLoading ? (\n
    \n {/* {console.log(\n \"the nft from render: \",\n nft,\n iotexUsdRate,\n typeof iotexUsdRate\n )} */}\n
    \n
    \n \n
    \n
    \n\n
    \n
    \n {\n history.goBack();\n }}\n >\n \n \n \n {nft.name.toLowerCase()}\n \n \n #{nft.tokenId}\n \n
    \n
    \n \n Current Price\n \n
    \n
    \n
    \n
    \n \n
    \n {nft.price}\n
    \n \n ({\"$\"}\n \n {(parseInt(nft.price) * iotexUsdRate).toFixed(2)}\n \n )\n \n
    \n
    \n {userAccount === nft.seller.toLowerCase().trim() ? (\n \n acceptOffer(nft)}\n className={classes.buyNowBtn}\n >\n \n \n \n Accept Offer\n \n cancelSale(nft)}\n className={classes.delistBtn}\n >\n \n \n \n Delist\n \n
    \n ) : (\n \n buyNow(nft)}\n className={classes.buyNowBtn}\n >\n \n \n \n Buy Now\n \n \n \n \n \n Make Offer\n \n
    \n )}\n
    \n
    \n
    \n\n
    \n
    \n \n
    \n
    \n \n Owner\n \n \n
    \n
    \n
    \n setLinkDetail(\"info\")}\n >\n info\n \n setLinkDetail(\"bid\")}\n >\n bids\n \n setLinkDetail(\"attributes\")}\n >\n attributes\n \n setLinkDetail(\"activity\")}\n >\n activity\n \n
    \n <>\n
    \n <>\n {linkDetail === \"info\" && (\n \n )}\n \n <>\n {linkDetail === \"bid\" && (\n \n )}\n \n <>\n {linkDetail === \"attributes\" && (\n \n )}\n \n
    \n \n \n \n ) : (\n

    loading

    \n )}\n \n );\n};\n\nexport default MarketplaceSaleItem;\n","import \"./Modal.css\";\nimport { makeStyles } from \"@material-ui/styles\";\nimport { Typography } from \"@mui/material\";\nimport { CheckCircleOutline, HighlightOff, Close } from \"@mui/icons-material\";\n\nimport { styled } from \"../../styles/styledComponent\";\nimport { AppContext } from \"../../context/AppProvider\";\nimport { useContext, useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { useHistory } from \"react-router-dom/cjs/react-router-dom.min\";\n\nconst Container = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n background: rgba(0, 0, 0, 0.7);\n width: 100%;\n height: 100%;\n opacity: ${(props) => (props.visible ? \"1\" : \"0\")};\n\n transition: 0.3s ease;\n z-index: ${(props) => (props.visible ? \"200\" : \"-100\")};\n\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nconst ModalContent = styled.div`\n transition: 0.3s ease-in-out;\n position: relative;\n bottom: ${(props) => (props.visible ? \"0px\" : \"100px\")};\n opacity: ${(props) => (props.visible ? \"1\" : \"0\")};\n width: 800px;\n height: 400px;\n border-radius: 8px;\n border: 2px solid #000;\n background: #121417;\n padding: 24px 64px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n // justify-content: center;\n align-items: center;\n box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;\n`;\n\nconst Icons = styled.div`\n position: relative;\n width: 110px;\n height: 110px;\n // border: 1px solid white;\n display: flex;\n justify-content: center;\n align-items: center;\n // bottom: 50px;\n`;\n\nconst OkayBtn = styled.button`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 12px;\n\n width: 125px;\n\n background: rgba(66, 255, 210, 0);\n border-radius: 8px;\n\n transition: all 0.3s ease;\n border: 2px solid rgba(66, 255, 210, 1);\n outline: none;\n color: rgba(66, 255, 210, 1);\n font-weight: bold;\n cursor: pointer;\n font-size: 12px;\n\n &:hover {\n background: rgba(66, 255, 210, 1);\n color: #111111;\n }\n`;\n\nconst ButtonContainer = styled.div`\n width: 50%;\n display: flex;\n justify-content: ${(props) =>\n props.twoButtons ? \"space-between\" : \"center\"};\n align-items: center;\n},\n`;\n\nconst useStyles = makeStyles({\n container: {\n background: \"rgba(0,0,0,0.7)\",\n width: \"100%\",\n height: \"100%\",\n opacity: \"1\",\n\n position: \"fixed\",\n top: \"0\",\n transition: \"0.5s ease\",\n left: \"0\",\n zIndex: \"200\",\n\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n\n modal: {\n border: \"1px solid white\",\n width: \"800px\",\n height: \"400px\",\n borderRadius: \"8px\",\n background: \"#111\",\n padding: \"64px\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n\n icons: {\n position: \"relative\",\n width: \"150px\",\n height: \"150px\",\n },\n\n iconWrapper: {\n // border: \"1px solid white\",\n position: \"absolute\",\n left: \"0\",\n bottom: \"0\",\n width: \"110px\",\n height: \"110px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n\n loading: {\n opacity: \"1\",\n },\n\n heading1: {\n color: \"#fcfdfc\",\n textAlign: \"center\",\n },\n\n heading2: {\n position: \"relative\",\n color: \"#a8a9ae\",\n textAlign: \"center\",\n bottom: \"25px\",\n },\n\n primary: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n alignItems: \"center\",\n padding: \"12px\",\n\n // position: \"absolute\",\n width: \"125px\",\n // left: \"0px\",\n // top: \"73.89%\",\n // bottom: \"15.67%\",\n\n background: \"rgba(66, 255, 210, 0)\",\n borderRadius: \"8px\",\n\n transition: \"all 0.3s ease\",\n border: \"2px solid rgba(66, 255, 210, 1)\",\n outline: \"none\",\n color: \"rgba(66, 255, 210, 1)\",\n fontWeight: \"bold\",\n cursor: \"pointer\",\n fontSize: \"12px\",\n\n \"&:hover\": {\n background: \"rgba(66, 255, 210, 1)\",\n color: \"#111111\",\n },\n },\n\n modalButtonEnabled: {\n width: \"100px\",\n height: \"100%\",\n fontWeight: \"bold\",\n padding: \"0 6px\",\n fontSize: \"14px\",\n background: \"#00e100\",\n border: \"none\",\n outline: \"none\",\n textTransform: \"uppercase\",\n borderRadius: \"8px\",\n color: \"white\",\n transition: \"0.3s ease-in-out\",\n cursor: \"pointer\",\n\n \"&:hover\": {\n background: \"#00a800\",\n },\n },\n\n modalButtonDisabled: {\n width: \"100px\",\n height: \"100%\",\n fontWeight: \"bold\",\n padding: \"0 6px\",\n fontSize: \"14px\",\n background: \"#3d3742\",\n border: \"none\",\n outline: \"none\",\n textTransform: \"uppercase\",\n borderRadius: \"8px\",\n color: \"#67606e\",\n transition: \"0.3s ease-in-out\",\n cursor: \"no-drop\",\n },\n\n buttonGroup: {\n width: \"100%\",\n // border: \"1px solid white\",\n display: \"flex\",\n // justifyContent: \"space-evenly\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n height: \"40px\",\n marginBottom: \"10px\",\n },\n\n progressContainer: {\n width: \"100%\",\n // border: \"1px solid white\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"48px\",\n marginBottom: \"20px\",\n },\n\n gradientProgressBar: {\n width: \"100px\",\n height: \"4px\",\n background:\n \"linear-gradient(90deg, rgba(0, 225, 0, 1) 0%, rgba(61, 55, 66, 1) 60%, rgba(61, 55, 66, 1) 100%)\",\n },\n\n gradientProgressBarReverse: {\n width: \"100px\",\n height: \"4px\",\n background:\n \"linear-gradient(90deg, rgba(61, 55, 66, 1) 0%, rgba(61, 55, 66, 1) 40%, rgba(0, 225, 0, 1) 100%)\",\n },\n\n circle: {\n borderRadius: \"100px\",\n width: \"25px\",\n height: \"25px\",\n background: \"#00e100\",\n color: \"white\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n\n circleDisabled: {\n background: \"#3d3742\",\n },\n\n errorMsg: {\n fontWeight: \"bold\",\n color: \"red\",\n marginBottom: \"20px\",\n },\n});\n\nconst Modal = () => {\n const classes = useStyles();\n const history = useHistory();\n\n const notificationModalInitialState = {\n loading: true,\n purpose: \"\",\n loadingMessage: {\n heading: \"\",\n subHeading: \"\",\n },\n loadedMessage: {\n heading: \"\",\n subHeading: \"\",\n },\n type: \"\",\n primaryBtn: {\n text: \"OK\",\n },\n secondaryBtn: {\n visible: false,\n text: \"\",\n link: \"\",\n },\n };\n\n const approveSellModalInitialState = {\n purpose: \"\",\n tokenId: \"\",\n price: \"\",\n heading: \"\",\n buttonText: \"\",\n handleApprove: null,\n handleSell: null,\n errorMsg: \"\",\n };\n\n const makeOfferModalInitialState = {};\n\n const {\n showModal: { visible, notification, sell, makeOffer },\n setShowModal,\n notificationModalState,\n setNotificationModalState,\n approveSellModalState,\n setApproveSellModalState,\n makeOfferModalState,\n setMakeOfferModalState,\n } = useContext(AppContext);\n\n const handleCloseModal = () => {\n console.log(\"calling close modal\");\n setShowModal((prevState) => ({ ...prevState, visible: false }));\n setTimeout(() => {\n if (notification) {\n setNotificationModalState(notificationModalInitialState);\n }\n if (sell) {\n setApproveSellModalState(approveSellModalInitialState);\n }\n if (makeOffer) {\n setMakeOfferModalState(approveSellModalInitialState);\n }\n setShowModal((prevState) => ({\n ...prevState,\n notification: false,\n sell: false,\n makeOffer: false,\n }));\n });\n\n if (\n notificationModalState.purpose === \"transfer\" ||\n notificationModalState.purpose === \"buyNow\"\n ) {\n history.push(\"/my-assets\");\n }\n\n if (notificationModalState.purpose === \"sell\") {\n history.push(\"/marketplace\");\n }\n };\n\n useEffect(() => {}, [notificationModalState]);\n\n return (\n \n \n {notification && (\n \n )}\n {/* {sell && (\n \n )}\n {makeOffer && (\n \n )} */}\n \n \n );\n};\n\nexport default Modal;\n\nconst Notification = ({\n notificationModalState,\n classes,\n handleCloseModal,\n}) => {\n return (\n <>\n \n {!notificationModalState.loading &&\n notificationModalState.type === \"success\" && (\n
    \n \n
    \n )}\n\n {!notificationModalState.loading &&\n notificationModalState.type === \"error\" && (\n
    \n \n
    \n )}\n\n {notificationModalState.loading && (\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n )}\n
    \n
    \n

    \n {notificationModalState.loading\n ? notificationModalState.loadingMessage.heading\n : notificationModalState.loadedMessage.heading}\n

    \n
    \n\n
    \n

    \n {notificationModalState.loading\n ? notificationModalState.loadingMessage.subHeading\n : notificationModalState.loadedMessage.subHeading}\n

    \n
    \n \n {!notificationModalState.loading && (\n <>\n \n\n {notificationModalState.secondaryBtn.visible && (\n \n \n \n )}\n \n )}\n \n \n );\n};\n\nconst Wrapper = styled.div`\n margin: auto;\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: space-evenly;\n align-items: center;\n`;\n\nconst ActionForm = styled.form`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center';\n`;\n\nconst Price = styled.input`\n border: 5px solid #423e4d;\n outline: none;\n background-color: #6d667d;\n border-radius: 8px;\n width: 100%;\n height: 52px;\n padding: 0px 8px;\n font-size: 20px;\n font-weight: bold;\n margin-bottom: 5px;\n color: white;\n\n &::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: white;\n opacity: 0.5;\n }\n`;\n\nconst CloseBtn = styled.button`\n border: none;\n background: none;\n cursor: pointer;\n color: white;\n position: absolute;\n top: 10px;\n right: 10px;\n font-weight: bold;\n`;\n\nconst ApproveSell = ({\n approveSellModalState: {\n purpose,\n tokenId,\n price,\n heading,\n buttonText,\n handleApprove,\n handleSell,\n errorMsg,\n },\n setApproveSellModalState,\n approveSellModalInitialState,\n classes,\n handleCloseModal,\n}) => {\n const handleOnChange = async (e) => {\n console.log(\"cvalue updated??\");\n await setApproveSellModalState((prevState) => ({\n ...prevState,\n price: e.target.value.trim(),\n }));\n };\n\n useEffect(() => {\n return () => {\n setApproveSellModalState(approveSellModalInitialState);\n };\n }, []);\n return (\n <>\n \n \n \n \n \n You are about to put NFT{\" \"}\n #{tokenId} on sale\n \n \n handleOnChange(e)}\n >\n\n
    {errorMsg}
    \n\n
    \n \n Approve\n \n handleSell(e) : null}\n className={\n purpose === \"sell\"\n ? classes.modalButtonEnabled\n : classes.modalButtonDisabled\n }\n type=\"submit\"\n >\n Sell\n \n
    \n
    \n \n

    1

    \n
    \n \n \n

    2

    \n \n \n
    \n \n {purpose === \"approve\"\n ? \"Note: If you are listing for the first time, you must approve this item for sale, which requires a one-time gas fee.\"\n : \"Note: After tapping on sell, confirm the transaction in your wallet. This lets you sell this item on marketplace. \"}\n \n
    \n \n );\n};\n\nconst MakeOffer = ({ makeOfferModalState, classes, handleCloseModal }) => {\n return

    Make Offer Modal

    ;\n};\n","import React, { useContext } from \"react\";\nimport { Switch, Route } from \"react-router-dom\";\nimport Navbar from \"./containers/Navbar.jsx\";\nimport Home from \"./pages/Home.jsx\";\nimport Marketplace from \"./pages/Marketplace\";\nimport Sale from \"./pages/Sale\";\nimport NFTSale from \"./pages/NFTSale.jsx\";\nimport AboutUs from \"./pages/AboutUs\";\nimport MarketplaceSale from \"./pages/MarketplaceSale\";\nimport MyAssets from \"./pages/MyAssets\";\nimport NFTAsset from \"./pages/NFTAsset.jsx\";\nimport NFT from \"./pages/NFT\";\nimport Error from \"./pages/Error\";\nimport Create from \"./pages/Create.jsx\";\nimport { AppContext } from \"./context/AppProvider\";\nimport Sidebar from \"./components/Sidebar/Sidebar\";\nimport MarketplaceSaleItem from \"./pages/MarketplaceSaleItem.jsx\";\nimport Modal from \"./containers/Modals/Modal.jsx\";\n\nconst App = () => {\n const { showSidebar, setShowSidebar } = useContext(AppContext);\n const userAccount = sessionStorage.getItem(\"user\");\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n );\n};\n\nexport default App;\n","// import { createTheme } from '@material-ui/core/styles'\n// import { createTheme } from \"@mui/material/styles\";\nimport { createTheme } from '@material-ui/core/styles'\n\nconst theme = createTheme({\n typography: {\n fontFamily: `\"Poppins\", sans-serif`,\n },\n palette: {\n background: '#00d092',\n primary: {\n main: \"#010a1f\",\n\n }\n },\n breakpoints: {\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n values: {\n xs: 0,\n sm: 450,\n md: 740,\n lg: 960,\n xl: 1200,\n }\n }\n})\n\nexport default theme","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport App from './App.jsx'\nimport './index.css'\nimport AppProvider from './context/AppProvider'\nimport { HashRouter } from 'react-router-dom'\nimport 'semantic-ui-css/semantic.min.css'\n\nimport { ThemeProvider } from '@material-ui/core'\nimport theme from './theme'\n\nReactDOM.render(, document.getElementById('root'))"],"sourceRoot":""}