{"version":3,"sources":["assets/img/loader.svg","components/RaffleWork.js","statics/Faq.js","statics/index.js","service/config.js","service/raffle.service.js","assets/img/default-dark.png","assets/img/default-light.png","components/Erg.js","components/ErgDisplay.js","components/ErgProgressBar.js","context/index.js","components/Day.js","components/RemainingBox.js","components/Raffle.js","components/Title.js","assets/img/piggy-dark.png","assets/img/piggy.png","assets/img/hand-heart-dark.png","assets/img/hand-heart.png","components/Carousel.js","pages/Home/BootstrapCarouselNavigation.js","pages/Home/CarouselElement.js","pages/Home/BootstrapCarousel.js","pages/Home/CarouselBar.js","webparts/Shared/HeadingTitle.js","components/Tabs.js","assets/img/home-hand.png","assets/img/home-hand-dark.png","pages/Home/HomeLeftColumn.js","pages/Home/HomeHeader.js","webparts/Modal/BetaModal.js","pages/Home/Home.js","components/FaqAccordion.js","pages/Faq/SupportLink.js","pages/Faq/FaqPage.js","assets/img/about-us.png","components/Captcha.js","pages/About/AboutUsForm.js","service/support.service.js","pages/About/AboutUsText.js","pages/About/About.js","components/CircleTabs.js","webparts/Shared/Pagination.js","pages/Raffles.js","components/multi-step/MultiStepBar.js","components/multi-step/MultiStepLeft.js","pages/CreateRaffle/steps/RaffleTitle.js","pages/CreateRaffle/steps/CreateButtons.js","pages/CreateRaffle/steps/RaffleDescription.js","webparts/Raffle/RaffleImgFileUploader.js","assets/img/preview.png","pages/CreateRaffle/steps/RafflePhotos.js","pages/CreateRaffle/steps/RaffleAddress.js","pages/CreateRaffle/steps/RaffleDonationGoal.js","components/TicketPriceBadge.js","pages/CreateRaffle/steps/RaffleTicketPrice.js","webparts/Raffle/EstimationBox.js","pages/CreateRaffle/steps/RaffleDeadline.js","pages/CreateRaffle/steps/RaffleShare.js","webparts/Raffle/RecaptchaAndAgree.js","webparts/Modal/finish-modal/CopiableAddress.js","webparts/Modal/finish-modal/CountDown.js","webparts/Modal/finish-modal/StepDisplay.js","webparts/Modal/finish-modal/FinishModal.js","webparts/Modal/TermsModal.js","pages/CreateRaffle/CreateRaffle.js","pages/Dashboard/DashboardFaq.js","utils/utils.js","pages/Dashboard/PinnedRaffles.js","pages/Dashboard/DashboardRaffles.js","pages/Dashboard/EmptyPinnedRaffles.js","pages/Dashboard/Dashboard.js","pages/raffle/DetailInfo.js","assets/img/default.jpg","pages/raffle/GalleryNavigation.js","pages/raffle/Gallery.js","pages/raffle/Header.js","pages/raffle/DestinationInfo.js","pages/raffle/TotalRaiseMoney.js","pages/raffle/StatusInfo.js","pages/raffle/IconBox.js","assets/img/ticket-dark.png","assets/img/ticket.png","pages/raffle/TransactionRow.js","pages/raffle/Transactions.js","pages/raffle/donate/TicketCountBadge.js","pages/raffle/donate/DonateTicketCount.js","pages/raffle/donate/Donation.js","pages/raffle/donate/DonationHeader.js","webparts/Raffle/RaffleTicket.js","pages/raffle/Tickets.js","pages/raffle/Raffle.js","pages/Test.js","Routes/index.js","webparts/Modal/WalletModal.js","assets/img/logo.png","assets/img/logo-dark.png","webparts/Shared/Footer.js","assets/img/logo-beta.png","assets/img/logo-dart-beta.png","webparts/Shared/Logo.js","webparts/Shared/MobileHeader.js","webparts/Shared/HeaderLayout.js","webparts/Shared/Header.js","webparts/Shared/Navigation.js","webparts/Shared/SideBar.js","Layout/index.js","service/info.service.js","App.js","reportWebVitals.js","index.js"],"names":["RaffleWork","className","style","padding","SupportFaq","question","answer","Faq","RAFFLE_SORTING_TABS","title","sorting","status","RAFFLE_STATUS_TABS","label","value","TICKET_PRICES","ERG_FACTOR","PAGE_SIZE","DONATION_TICKET_COUNT","DASHBOARD_TABS","IS_BETA","staticText","faq","homeTabs","navigations","link","privateLink","publicLink","socials","shareInfo","url","ERG_SCALE","DAY_CONVERSION_SCALE","FILE_SIZE_LIMITATION","UPLOAD_API_URL","FILE_URL_PREVIEW","FILE_TO_SEND_PREFIX","winnerStateType","charityStateType","ticketStateType","descriptionLimit","deadlineLimit","donationTickets","config","baseUrl","getAllYourDonations","address","offset","limit","axios","get","postRaffle","charity","wallet","photo","goal","ticket","percent","deadline","description","recaptcha","post","name","picture","ticketPrice","charityPercent","getAllYourRafflesYouWin","donateRaffle","id","walletAddr","ticketCounts","getYourActiveRaffleTickets","console","log","getRaffle","getSingleRaffle","getRaffleTransactions","getRaffleDonationStatus","donationId","getRaffleStatus","Erg","memo","erg","shouldDisplay","ErgDisplay","raffle","isNaN","ErgProgressBar","width","parseFloat","textAlign","LIGHT_THEME","DARK_THEME","ThemeContext","createContext","Day","add_suffix","remaining_block","info","useContext","suffix","height","to_str_result","amount","unit","display_suffix","plural_sign","undefined","Math","abs","days","floor","hours","minutes","RemainingBox","Raffle","raffle_class","theme","defaultDark","defaultLight","Array","isArray","length","to","src","alt","Title","Carousel","context","piggyDark","piggy","ceil","handHeartDark","handHeart","donatedPeople","BootsrapCarouselNavigation","type","CarouselElement","children","BootstrapCarousel","CarouselBar","raffles","map","item","key","HeadingTitle","Tabs","tabs","activeTab","setActiveTab","onClick","HomeLeftColumn","showBeta","Consumer","hasWallet","HomeHeader","handDark","hand","BetaModal","close","show","Fragment","tabIndex","display","href","Home","state","successStories","progress","rafflesTab","show_beta","fetch_data","setState","tab","then","response","data","items","componentDidUpdate","componentDidMount","render","tabsContent","loader","fallback","React","Component","FaqAccordion","elemKey","parent","SupportLink","props","support_url","supportUrl","window","open","FaqPage","Captcha","verifyCallback","required","sitekey","pubKey","onChange","onExpired","AboutUsForm","useState","email","setEmail","message","setMessage","shouldDisable","setShouldDisable","setResponse","validateMessage","sDisable","test","action","placeholder","e","target","htmlFor","disabled","preventDefault","aboutFormSubmission","toast","catch","msg","AboutUsText","About","aboutImg","CircleTabs","changeTabContent","Pagination","currentPage","totalPages","prevPage","nextPage","Raffles","total","page","check_changed","sortingIndex","params","URLSearchParams","location","search","indexOf","RaffleBarStep","steps","active","showStep","index","MultiStepLeft","RaffleTitle","setValid","init","setValue","CreateRaffleButtonBar","is_first","is_last","valid","step_forward","step_backward","RaffleDescription","editor","DecoupledEditor","onReady","ui","getEditableElement","parentElement","insertBefore","view","toolbar","element","onError","willEditorRestart","remove","event","changeEditor","getData","RaffleImgFileUploader","loading","setLoading","file","file_value","files","split","size","form","FormData","append","fetch","method","body","res","json","cid","replace","RafflePhotos","imgs","validate","setValidate","set_image_index","img","new_imgs","push","filter","new_validate","set_validate_index","RaffleAddress","RaffleDonationGoal","Number","min","step","join","TicketPriceBadge","handleChange","checked","RaffleTicketPrice","constant","EstimationBox","RaffleDeadline","RaffleShare","service_fee","serviceFee","RecaptchaAndAgree","showTerms","termsAccepted","setTermsAccepted","CopiableAddress","text","onCopy","CountDown","remainingSeconds","colorClass","current_dash_array","viewBox","xmlns","cx","cy","r","strokeDasharray","d","SORTED_STATUS","StepDisplay","totalStatus","stepTitle","statusIndex","intervalItem","FinishModal","interval","closeModal","clearInterval","setInterval","max","Date","now","start","TermsModal","interval_item","CreateRaffle","subStep","stepValid","share","requestId","MultiStep","subs","set_valid","render_sub_state","is_last_step","create_raffle","render_buttons","CreateButtons","contextType","DashboardFaq","faqs","getPinnedRaffles","pinned","localStorage","getItem","PinnedRaffles","loaded","load_data","a","pinnedStr","raffleId","DashboardRaffles","loadedWallet","loadedPage","rafflesValid","showEmpty","walletAddress","urlLoader","EmptyPinnedRaffles","Dashboard","isDonationEmpty","isWinnerEmpty","isPinnedEmpty","history","DetailInfo","reverse","includes","setItem","setPinnedRaffles","GalleryNavigation","row","Gallery","images","isOpen","setIsOpen","startIndex","setStartIndex","pictures","defaultImg","mainSrc","nextSrc","prevSrc","onCloseRequest","onMovePrevRequest","onMoveNextRequest","Header","DestinationInfo","winner","TotalRaisedMoney","StatusInfo","IconBox","sold","TransactionRow","txType","transaction","border_class","rel","tickets","Transactions","transactions","txs","forEach","total_page","TicketCountBadge","ticketCount","DonateTicketCount","parseInt","Donation","donation","setContext","donate","MultiStepBar","DonationHeader","remainingErg","collectedErg","RaffleTicket","Tickets","loadedAddress","transactionValid","exp","setTimeout","this","match","price","Test","Routes","component","path","exact","WalletModal","walletProp","setWallet","useEffect","removeItem","setHasWallet","btoa","Footer","logoDark","logo","Logo","siteLogo","logoBeta","logoBetaDark","MobileHeader","mobileHeaderRef","ref","role","HeaderLayout","desktopHeaderRef","headerRef","wrapperRef","forwardRef","walletPassed","wall","setWall","useRef","bodyRef","current","document","useImperativeHandle","handleScroll","header","top","scrollTop","classList","add","setTheme","Navigation","SideBar","toggleNight","ScrollTop","pathname","useLocation","scrollToTop","useCallback","scrollTo","Layout","atob","setInfo","pinnedRaffles","debounce","require","fetchInfo","Provider","onScroll","FallbackComponent","App","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.884a574a.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/loader.162c108c.svg\";","import React from \"react\";\r\n\r\nconst RaffleWork = () => {\r\n return (\r\n
\r\n

\r\n Ergo Raffle is a crowdfunding service that aims to enable anyone to raise enough money needed for a\r\n project. The project can be a direct donation to a charity, an academic or business plan, or anything\r\n else the creator can convince people to part with their hard-earned ERG for. As an added bonus, after\r\n finishing the Raffle, a lottery takes place at the end of the Raffle, and one lucky participant wins a\r\n set percent of the Raffle as the 'Raffle reward'.\r\n

\r\n
\r\n )\r\n}\r\n\r\nexport default RaffleWork;\r\n","import React from \"react\";\n\nconst Faq = [\n {\n question: 'What is a Raffle?',\n answer: (\n
\n A Raffle is a crowdfunding service that aims to enable anyone to raise enough money\n needed for a project. The project can be a direct donation to a charity, an academic\n or business plan, or anything else the creator can convince people to part with their hard-earned ERG\n for.\n
\n As an added bonus, after finishing the Raffle, a lottery takes place, and a lucky participant wins the\n Raffle reward.\n
\n The probability of winning the Raffle reward is proportional to the participation;\n the more donations to the crowdfunding campaign, the more chance of winning the prize!\n
\n This Raffle service is based on the Ergo network and raises Ergs for the projects.\n Other Raffle settings are adaptable and can be customized by the Raffle creator.\n
\n )\n }, {\n question: 'How to create a new Raffle?',\n answer: (\n
\n This service is open for anyone who wants to start a legal crowdfunding campaign!\n
\n To start a new Raffle, visit the \"Create Raffle\" page and fill in the specified information,\n including a description, price, funding goal, Raffle deadline, and a winner reward percentage.\n
\n An address is then created based on the provided information, and you pay a small network fee to\n start the Raffle. The proxy contract working behind the scenes for the Raffle creation guarantees\n that the Raffle is created with your specified information. In case of any issues, you can refund your\n creation fee before the Raffle is created.\n
\n
\n )\n }, {\n question: 'How to participate in a Raffle?',\n answer: (\n
\n Anyone can participate in the active Raffles by buying tickets. The Raffle creator sets the ticket\n price, and the number of tickets you purchase will determine your chance of winning the prize pool.\n However, there is no benefit to splitting your orders to try and garner a higher chance of winning and\n it is best to buy at once.\n
\n You set the wallet address and specify the number of tickets you want to buy on the Raffle page. An\n address is generated to which you send funds to complete your order.\n Please pay close attention to the wallet address you've set \n as any rewards will also be sent to this address if you win the Raffle. Or in the case of an\n unsuccessful Raffle or any problems, refunds will also be sent to this address.\n
\n )\n }, {\n question: 'How do Raffles finish?',\n answer: (\n
\n Each Raffle has a deadline set based on the network height and a goal set by the Raffle creator for\n raised funds. If the Raffle can raise enough money within the deadline, it will be marked as successful\n and funded. At the same time, the Raffle prize-pool winner will also be announced and rewarded.\n
\n If the Raffle can not raise enough money within the deadline, the Raffle is unsuccessful, and all\n donators will be refunded. You are free to submit again with improvements or based on feedback from the\n community.\n
\n )\n }, {\n question: 'What are Raffle fees?',\n answer: (\n
\n There are three types of fees within Raffles. A Raffle creation fee, a Raffle donation fee, and a\n service fee. The first two fees are just network transaction fees; we do not charge any more for the\n service than facilitating the Raffle creation and donation.\n
\n Currently, 5% of the total raised money by a successful Raffle is paid as a service fee.\n
\n It is worth mentioning that the service is fully decentralized; anyone can join the Raffle or mark a\n Raffle as successful or unsuccessful and take the needed actions. However, this service is designed such\n that anyone with any amount of knowledge can use it. The service uses proxy contracts for its\n activities; an advanced user can use this service through raw scripts and reduce the proxy transaction\n fees. You can read more technical details on the documentation page.\n
\n )\n }, {\n question: \"Do I need a license to host a raffle on your platform?\",\n answer: \"No. All Raffles on our platform are legally classed as 'prize competitions' which do not require a license.\"\n }, {\n question: \"What should I put in my description?\",\n answer: \"Your description should ideally provide an external link to verify authenticity if required.\"\n }, {\n question: \"Can I host a raffle in my business name?\",\n answer: \"Yes. You can host a raffle in your personal name or your business name.\"\n }, {\n question: \"What is the minimum ticket price I can charge for my raffle?\",\n answer: \"Technically, 0.XX ERG, however, we recommend looking through previous successful raffles to gauge the best level for your raffle.\"\n }, {\n question: \"What is the maximum ticket price I can charge for my raffle?\",\n answer: \"There is no maximum price. However, if the ticket is too expensive people may be discouraged from entering.\"\n }, {\n question: \"Can entrants purchase more than one raffle ticket?\",\n answer: \"Yes, entrants can purchase as many tickets as they like.\"\n }, {\n question: \"What happens if the Raffle isn’t funded by the draw date?\",\n answer: \"Entrants will have their funds refunded and your Raffle will be marked as unsuccessful.\"\n }\n]\n\nconst SupportFaq = [\n {\n question: \"I put in the wrong date - can I cancel my Raffle?\",\n answer: \"Unfortunately, raffles cannot be altered after creation. Your best bet is to create a second raffle and distribute the new link instead.\",\n }\n]\n\nexport default Faq\n\nexport {\n SupportFaq\n}\n","import Faq, { SupportFaq } from './Faq';\r\n\r\n\r\nconst RAFFLE_SORTING_TABS = [\r\n {title: \"Newest\", sorting: \"createTime\", status: \"active\"},\r\n {title: \"Last Activity\", sorting: \"\", status: \"active\"},\r\n {title: \"Nearing Deadline\", sorting: \"-deadline\", status: \"active\"},\r\n]\r\nconst RAFFLE_STATUS_TABS = [\r\n {label: 'Active', value: 'active'},\r\n {label: 'Successful', value: 'succeed'},\r\n {label: 'Failed', value: 'failed'},\r\n {label: 'All Raffles', value: 'all'},\r\n];\r\n\r\nconst staticText = {\r\n faq: Faq,\r\n homeTabs: ['Newest', 'Last Activity', 'Nearing Deadline'],\r\n navigations: [\r\n {title: 'Home', link: '/'},\r\n {title: 'All Raffles', link: '/raffle/list'},\r\n {title: 'FAQ', link: '/faq'},\r\n {title: 'About/Contact', link: '/about'}\r\n ],\r\n privateLink: [\r\n {\"link\": 'https://github.com/ErgoRaffle', \"title\": \"Github\"},\r\n {\"link\": 'https://github.com/ErgoRaffle/raffle-documentation', \"title\": \"Whitepaper\"},\r\n {\"link\": 'https://github.com/ErgoRaffle', \"title\": \"Raffle Beta\"},\r\n ],\r\n publicLink: [\r\n {\"link\": 'https://t.me/ergoplatform', \"title\": \"Telegram\"},\r\n {\"link\": 'https://twitter.com/ergoplatformorg', \"title\": \"Twitter\"},\r\n {\"link\": 'https://discord.gg/ahktsCT9TM', \"title\": \"Discord\"},\r\n {\"link\": 'https://www.ergoforum.org/', \"title\": \"Ergo Platform\"},\r\n {\"link\": 'https://www.ergoforum.org/', \"title\": \"Ergo Forum\"},\r\n ],\r\n socials: {\r\n 'Telegram': 'https://t.me/ergoplatform',\r\n 'Twitter': 'https://twitter.com/ergoplatformorg',\r\n 'Github': 'https://github.com/ErgoRaffle',\r\n 'Discord': \"https://discord.gg/ahktsCT9TM\",\r\n 'Docs': \"https://github.com/ErgoRaffle/raffle-documentation\",\r\n 'Ergo Forum': \"https://www.ergoforum.org/\",\r\n 'Ergo Platform': \"https://www.ergoforum.org/\"\r\n },\r\n shareInfo: {\r\n 'Telegram': (url) => (`https://t.me/share/url?url=${url}&text=Ergo Raffle`),\r\n 'WhatsApp': (url) => (`whatsapp://send?text=${url}`),\r\n 'Twitter': (url) => (`http://twitter.com/share?text=Ergo Raffle&url=${url}`)\r\n },\r\n PAGE_SIZE: 12,\r\n ERG_SCALE: 1000000000,\r\n DAY_CONVERSION_SCALE: 720,\r\n FILE_SIZE_LIMITATION: 150000,\r\n UPLOAD_API_URL: 'https://ergoutilsupload.azurewebsites.net/ipfs/',\r\n FILE_URL_PREVIEW: 'https://cloudflare-ipfs.com/ipfs/',\r\n FILE_TO_SEND_PREFIX: 'ipfs://',\r\n winnerStateType: 'winner',\r\n charityStateType: 'charity',\r\n ticketStateType: 'ticket',\r\n descriptionLimit: 250,\r\n deadlineLimit: 262800,\r\n donationTickets: [5, 10, 20, 30]\r\n}\r\n\r\nconst HOUR_BLOCKS_COUNT = 30;\r\nconst DAY_BLOCK_COUNT = 720;\r\nconst MINUTE_BLOCK_COUNT = 0.5;\r\nconst FILE_SIZE_LIMITATION = 150000;\r\nconst UPLOAD_API_URL = 'https://ergoutilsupload.azurewebsites.net/ipfs/';\r\nconst FILE_URL_PREVIEW = 'https://cloudflare-ipfs.com/ipfs/';\r\nconst FILE_TO_SEND_PREFIX = 'ipfs://';\r\nconst TICKET_PRICES = [0.25, 0.5, 1, 3, 5];\r\nconst DEADLINE_LIMIT = 365 * DAY_BLOCK_COUNT;\r\nconst ERG_FACTOR = 1000000000;\r\nconst PAGE_SIZE = 12;\r\nconst DESCRIPTION_SIZE_LIMIT = 1000;\r\nconst TITLE_LENGTH = 70;\r\nconst DONATION_TICKET_COUNT = [5, 10, 20, 30];\r\nconst DASHBOARD_TABS = ['Ask For Help', 'FAQ and Problems'];\r\nconst PIN_KEY = \"pin\";\r\nconst IS_BETA = true;\r\nconst DEFAULT_SUPPORT_URL = \"https://discord.gg/4CPBVyDt\";\r\nexport default staticText;\r\n\r\nexport {\r\n Faq,\r\n SupportFaq,\r\n RAFFLE_SORTING_TABS,\r\n RAFFLE_STATUS_TABS,\r\n HOUR_BLOCKS_COUNT,\r\n DAY_BLOCK_COUNT,\r\n MINUTE_BLOCK_COUNT,\r\n FILE_SIZE_LIMITATION,\r\n UPLOAD_API_URL,\r\n FILE_URL_PREVIEW,\r\n FILE_TO_SEND_PREFIX,\r\n TICKET_PRICES,\r\n DEADLINE_LIMIT,\r\n ERG_FACTOR,\r\n PAGE_SIZE,\r\n DESCRIPTION_SIZE_LIMIT,\r\n DONATION_TICKET_COUNT,\r\n DASHBOARD_TABS,\r\n PIN_KEY,\r\n TITLE_LENGTH,\r\n IS_BETA,\r\n DEFAULT_SUPPORT_URL\r\n}\r\n","import { IS_BETA } from \"../statics\";\r\nexport const config = {\r\n baseUrl: IS_BETA ? \"https://api-beta.ergoraffle.com/api\" : \"https://api.ergoraffle.com/api\"\r\n}\r\n","import axios from 'axios';\r\nimport { config } from './config';\r\n\r\nexport const getTopRaffle = (offset, limit) => {\r\n return axios.get(config.baseUrl + `/raffle?offset=${offset}&limit=${limit}&sorting=-activity&status=active`)\r\n}\r\nexport const getAllYourDonations = (address, offset, limit) => {\r\n return axios.get(config.baseUrl + `/wallet/${address}/donation?offset=${offset}&limit=${limit}`)\r\n}\r\nexport const postRaffle = (title, charity, wallet, photo, goal, ticket, percent, deadline, description, recaptcha) => {\r\n return axios.post(config.baseUrl + `/raffle`, {\r\n name: title,\r\n charity: charity,\r\n wallet: wallet,\r\n picture: photo,\r\n goal: goal,\r\n ticketPrice: ticket,\r\n charityPercent: percent,\r\n deadline: deadline,\r\n description: description,\r\n recaptcha: recaptcha\r\n })\r\n}\r\nexport const getAllYourRafflesYouWin = (address, offset, limit) => {\r\n return axios.get(config.baseUrl + `/wallet/${address}/win?limit=${limit}&offset=${offset}`)\r\n}\r\nexport const donateRaffle = (id, walletAddr, ticketCounts, recaptcha) => {\r\n return axios.post(config.baseUrl + `/raffle/${id}/donate`, { walletAddr: walletAddr, ticketCounts: ticketCounts, recaptcha: recaptcha })\r\n}\r\nexport const getYourActiveRaffleTickets = (id, wallet) => {\r\n console.log(wallet)\r\n return axios.get(config.baseUrl + `/raffle/${id}/address/${wallet}/donation`)\r\n}\r\nexport const getNearDeadlineRaffle = (offset, limit) => {\r\n return axios.get(config.baseUrl + `/raffle?offset=${offset}&limit=${limit}&sorting=-deadline&status=active`)\r\n}\r\n\r\nexport const getRaffle = (offset, limit, sorting, status) => {\r\n return axios.get(`${config.baseUrl}/raffle?offset=${offset}&limit=${limit}&sorting=${sorting}&status=${status}`)\r\n}\r\n\r\n\r\nexport const getLatestRaffle = (offset, limit) => {\r\n return axios.get(config.baseUrl + `/raffle?offset=${offset}&limit=${limit}&sorting=-createTime&status=active`)\r\n}\r\nexport const getSucceedRaffle = (offset, limit) => {\r\n return axios.get(config.baseUrl + `/raffle?offset=${offset}&limit=${limit}&status=succeed`)\r\n}\r\nexport const getFailedRaffle = (offset, limit) => {\r\n return axios.get(config.baseUrl + `/raffle?offset=${offset}&limit=${limit}&status=failed`)\r\n}\r\nexport const getActiveRaffle = (offset, limit) => {\r\n return axios.get(config.baseUrl + `/raffle?offset=${offset}&limit=${limit}&status=active`)\r\n}\r\nexport const getAllRaffle = (offset, limit) => {\r\n return axios.get(config.baseUrl + `/raffle?offset=${offset}&limit=${limit}&status=all`)\r\n}\r\n\r\nexport const getRafflesByState = (offset, limit, status, sort) => {\r\n const sortItem = sort === 0 ? '-createTime' : sort === 1 ? '-activity' : '-deadline';\r\n return axios.get(config.baseUrl + `/raffle?offset=${offset}&limit=${limit}&sorting=${sortItem}&status=${status}`)\r\n}\r\n\r\nexport const getSingleRaffle = (id) => {\r\n return axios.get(config.baseUrl + `/raffle/${id}`)\r\n}\r\nexport const getRaffleTransactions = (id, offset, limit) => {\r\n return axios.get(config.baseUrl + `/raffle/${id}/transaction?limit=${limit}&offset=${offset}`);\r\n}\r\nexport const getRaffleDonationStatus = (id, donationId) => {\r\n return axios.get(config.baseUrl + `/raffle/${id}/donate/${donationId}/status`);\r\n}\r\nexport const getRaffleStatus = (id) => {\r\n return axios.get(config.baseUrl + `/raffle/${id}/status`);\r\n}\r\n","export default __webpack_public_path__ + \"static/media/default-dark.51aeceb8.png\";","export default __webpack_public_path__ + \"static/media/default-light.b83a180a.png\";","import { memo } from \"react\";\r\nimport staticText from \"../statics\";\r\n\r\nconst Erg = memo(({ erg, shouldDisplay }) => {\r\n return (<>{erg / staticText.ERG_SCALE}{shouldDisplay ? ' ERG' : ''})\r\n});\r\n\r\nexport default Erg;","import Erg from \"./Erg\";\r\n\r\nconst ErgDisplay = ({ raffle }) => {\r\n return (

\r\n \r\n raised of \r\n \r\n \r\n \r\n

)\r\n}\r\n\r\nexport default ErgDisplay;\r\n","import staticText from \"../statics\";\r\nimport ErgDisplay from \"./ErgDisplay\";\r\n\r\nconst ErgProgressBar = ({raffle}) => {\r\n const fillPercent = () => {\r\n return (parseFloat((!isNaN(raffle.erg) ?\r\n (raffle.erg / staticText.ERG_SCALE) / (raffle.goal / staticText.ERG_SCALE) :\r\n (((raffle && raffle.ticket && raffle.ticket.erg)) / raffle.goal)) * 100))\r\n }\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default ErgProgressBar;\r\n","import { createContext } from \"react\";\r\n\r\nexport const LIGHT_THEME = 'LIGHT_THEME';\r\nexport const DARK_THEME = 'DARK_THEME';\r\n\r\nconst ThemeContext = createContext(LIGHT_THEME);\r\n\r\nexport default ThemeContext;","import { useContext } from \"react\";\r\nimport ThemeContext from \"../context\";\r\nimport * as constants from '../statics';\r\n\r\nconst Day = ({deadline, add_suffix, remaining_block}) => {\r\n const { info } = useContext(ThemeContext);\r\n const suffix = deadline > info.height ? \"to Go\" : \"Passed\"\r\n const to_str_result = (amount, unit) => {\r\n const display_suffix = add_suffix ? suffix : \"\"\r\n const plural_sign = (amount > 1 ? \"s\": \"\")\r\n return `${amount} ${unit}${plural_sign} ${display_suffix}`\r\n }\r\n remaining_block = remaining_block === undefined ? Math.abs(deadline - info.height) : remaining_block;\r\n const days = Math.floor(remaining_block / constants.DAY_BLOCK_COUNT);\r\n remaining_block -= days * constants.DAY_BLOCK_COUNT;\r\n const hours = Math.floor(remaining_block / constants.HOUR_BLOCKS_COUNT);\r\n remaining_block -= hours * constants.HOUR_BLOCKS_COUNT;\r\n const minutes = Math.floor(remaining_block / constants.MINUTE_BLOCK_COUNT);\r\n if(days > 0) return to_str_result(days, \"Day\")\r\n if(hours > 0) return to_str_result(hours, \"Hour\")\r\n return to_str_result(minutes, \"Minute\")\r\n}\r\n\r\n\r\nexport default Day;\r\n","import Day from \"./Day\";\r\n\r\nconst RemainingBox = ({raffle}) => {\r\n return (\r\n
\r\n

\r\n \r\n

\r\n
\r\n )\r\n}\r\n\r\nexport default RemainingBox;\r\n","import { Link } from \"react-router-dom\";\r\nimport defaultDark from '../assets/img/default-dark.png'\r\nimport defaultLight from '../assets/img/default-light.png'\r\nimport ErgProgressBar from \"./ErgProgressBar\";\r\nimport RemainingBox from \"./RemainingBox\";\r\nimport { useContext } from \"react\";\r\nimport ThemeContext, { DARK_THEME } from \"../context\";\r\n\r\nconst Raffle = ({raffle}) => {\r\n const context = useContext(ThemeContext);\r\n let raffle_class = \"\";\r\n let picture = context.theme === DARK_THEME ? defaultDark : defaultLight;\r\n if(raffle) {\r\n raffle_class = ((raffle.status === 'succeed') ? \" raffle-success\" : (raffle.status === 'failed') ? \"raffle-unsuccess\" : \"\")\r\n picture = Array.isArray(raffle.picture) && raffle.picture.length > 0 ? raffle.picture[0] : picture\r\n }\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
\r\n \"\"/\r\n
\r\n
\r\n

\r\n {raffle && raffle.name}\r\n

\r\n

\r\n {raffle && raffle.description}\r\n

\r\n \r\n \r\n
\r\n
\r\n )\r\n};\r\n\r\nexport default Raffle;\r\n","import { memo } from \"react\";\r\nimport { Helmet, HelmetProvider } from 'react-helmet-async';\r\n\r\nconst Title = ({title}) => {\r\n return (\r\n \r\n {title}\r\n \r\n );\r\n};\r\n\r\nexport default Title;\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABPCAYAAABrs9IqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGhmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDYgNzkuMTY0NjQ4LCAyMDIxLzAxLzEyLTE1OjUyOjI5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjEtMTEtMDlUMTk6MTU6NTErMDM6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDIxLTExLTA5VDE5OjI4OjI2KzAzOjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIxLTExLTA5VDE5OjI4OjI2KzAzOjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiBwaG90b3Nob3A6SGlzdG9yeT0iMjAyMS0xMS0wOVQxOToyNzoxOCswMzozMCYjeDk7RmlsZSBHcm91cCAxODEucG5nIG9wZW5lZCYjeEE7MjAyMS0xMS0wOVQxOToyODoyNiswMzozMCYjeDk7RmlsZSBHcm91cCAxODEtMDEucG5nIHNhdmVkJiN4QTsiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MWRlYTE2MTctMTA2Ny00MWMyLWI2ZTEtZWExNmI5OGQ3YmI3IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZjRjMDFkZGYtMDViZS1hMzQ4LTgxMDItZDhlMTJhYWMxMDc1IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MjVhNzM0MzctMjY3NS00MTVlLTk3ZGUtYWIwZjc5ZjQ0NjViIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDoyNWE3MzQzNy0yNjc1LTQxNWUtOTdkZS1hYjBmNzlmNDQ2NWIiIHN0RXZ0OndoZW49IjIwMjEtMTEtMDlUMTk6MTU6NTErMDM6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMi4yIChNYWNpbnRvc2gpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDoxZGVhMTYxNy0xMDY3LTQxYzItYjZlMS1lYTE2Yjk4ZDdiYjciIHN0RXZ0OndoZW49IjIwMjEtMTEtMDlUMTk6Mjg6MjYrMDM6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMi4yIChNYWNpbnRvc2gpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pvrt3yYAAAicSURBVHic5V3tlaO4Er3TZ/8/bQSriWDZCFYTQXsisCeC9kTQ7gjGG4F7I3BPBHgjwC8CeBGYjaDej4Kh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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEMAAABGCAYAAACXBynAAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGhmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDYgNzkuMTY0NjQ4LCAyMDIxLzAxLzEyLTE1OjUyOjI5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjEtMTEtMDlUMTk6MTU6NTUrMDM6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDIxLTExLTA5VDE5OjI4OjM4KzAzOjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIxLTExLTA5VDE5OjI4OjM4KzAzOjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiBwaG90b3Nob3A6SGlzdG9yeT0iMjAyMS0xMS0wOVQxOToyNzoxNyswMzozMCYjeDk7RmlsZSBHcm91cCAxODMucG5nIG9wZW5lZCYjeEE7MjAyMS0xMS0wOVQxOToyODozOCswMzozMCYjeDk7RmlsZSBHcm91cCAxODMtMDEucG5nIHNhdmVkJiN4QTsiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OGI4N2E4ZTAtZDg1OC00MTc0LWFkNTAtN2MzNDdjNjU1Zjk5IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6M2U0YzkyYzQtMDE5ZS0xODRjLTg4ZWEtMmI4ZTQ5ZjM5ODQzIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YzExZWEwYzAtNDkxOS00ZjgzLTkzYzUtZmFhMDI2YTllN2RjIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpjMTFlYTBjMC00OTE5LTRmODMtOTNjNS1mYWEwMjZhOWU3ZGMiIHN0RXZ0OndoZW49IjIwMjEtMTEtMDlUMTk6MTU6NTUrMDM6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMi4yIChNYWNpbnRvc2gpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Yjg3YThlMC1kODU4LTQxNzQtYWQ1MC03YzM0N2M2NTVmOTkiIHN0RXZ0OndoZW49IjIwMjEtMTEtMDlUMTk6Mjg6MzgrMDM6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMi4yIChNYWNpbnRvc2gpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkDquMcAAAZ/SURBVHic5VvtldtEFL3m8B9tGkCbBlAogBgoIA4NxKEBmwZYpYI1DbAbCoiTAsCbBlhvAbGXAliJAvDl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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEMAAABGCAYAAACXBynAAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAVbSURBVHgB5VuJddtGEP1KBUoayCoVSC4gQiqwU4GQCqQOhA7ECkJWECcNWG4gllVAQqWAxGnABz6BfdxjFtwFsCAg//dGj6SIPT7m2sHwBONC1fKylqKW8/a9xvtanmp5W8sf7eshOG3neFXLZTvXafu//9v5Hmv5vZ1zMhS13NfyOUH4/Sukgxu+reVDwlzbWq6RGVzYa6SR4AqvV3HT7TaUQoIrf6PRpNGh0DAu3fGqnVS1QnUu2s8fhGu4wZuOuc4gax6vW9dSYm+Wqp2LxEk36hMazRoNCj4R9+0iYsCFbxC3yDNhLpJQYe8jDq21QiZClLC4G/RD6YzlLlIi4g5xJLg4E+YabDIb2IsrMQwK/obXtaxg+wcuvi/pGi4h/6EfsTso2IuuMA4UZP9jElFiHJAQk+QKPbGBHa7GhGQS+u4N1QgXFUbQDnOxV8gD2jFNhKbCiNBbjTvwLfbaQa17iUQUsO9YjkVOhRPYWk6njG8SBjg3Xr9Fk/IuFSTg0Xh/yT8pZCjj9ROWj/fGa8U/KWSYZvEPlo8n4/VubylkPHt8zWR4ASCFDNNhfo/lwyRjt7cUMkyHc47lw9zDbm9DyFh6nvGj8f4RPWDm9GOnyFOCqb957inQAyvY9Yul4hfY1a9eKGCn5LnOJznhHgh/xQDcw644Lcl3uGcSaoXCACjYvmNJ5kI/N3o9xh30DvPHBfxK+WjYOIPfYr4gEaY2DzYPF/QVbtl/jhpSwiaCla0sSaNECN8rzAMV/BJi1uxZImSL46bsLOuZUW8SIkys4Bdzj+FHfoJfWB7dR8Sggk/IdqKFUEPvhPl/wxFzIQW55J9TSyRtyPGIoRd4JySzGVtLQtrwDjMsM5SQHxqPcccuIGvgrBNABT9Bo6T0Zbi4EcajkyywEJTw72RqCJZCptaGxRWbFGQtiTEb6VnsorQhhApp0UbyD0cNmWOD5mFusKtzx+3jqvAMoeATYpqM1G1T4hlDQe7cucZXRoSGQnfnzhDTKNCYHwlmIniFBSDUudOXiALhRl1GoQuMBIVGjck2j+9So+oD9j2hRcK4JZqEjNeukB46FeTw7cqgI71uUz6kziHhdWvkO8GGzikUfVM2aHyP+XnSBAXS+8IPCce7wjjo6iWXkrICtlMuDk3AL6zQ3aet1biE3aqsYLdHdxG5RX9tOURCiGw+O9GVuWCE4uDXBxaf0qbsjl1C7hvXQj/xKnKsEAkx6yMZeo8kwyLtvF1ISAv4eR9HFoLUNy7dVSVcW0L2WSk36QVsM7k0/7lF2Axy9WESCuHNaVm33/sZw0k4accxb/pf7pe2wuBTV4kKhLWlrzmYIBFuDeQjhH0qpOUCOaHQrCVGW2JxAv+U/C8c85gzuAG3hvoG6VGHxaANfJ+kcEToSHWFeBPkRkxHp5AGpvcPzhjvcGQiiHv4Ns8IRoKKwDXmU3NuJMWR/wD/xDubYpBLRih60TSYa7jRI7Z9gObFZyjuj3ZmVTFXaGy3K+kKiZcYBSBFDF6b/SecQ6DPOxUabTj008wqYkwpYvBUGkPi7ECnWmKvPTSRNeLCfShizO6JWm58B9/0mFUqTIRT2CdUheN4aSlivMm5Fn3apJcPVbTMcKkjQk4VpX94gQkjRoHhBR1eP7YDIxEl/IhxiwxQiCfhA+J+pL9FQ8pQ9Z08YkhEcDNmRUvalA6XXcUhHSEU0iGdVbJHjNewT4cF+uFQAWeN+I0wYrgETxYxmA4XGAcKDSnUii6/4tZQVftZBd9R/omFP3DWUSlESoyQiDWeGUqkRSqSQEc56zPGUGi/4maQn7AngPWHW0xkFl8ADFqYE7dUyPgAAAAASUVORK5CYII=\"","import { memo, useContext } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ThemeContext, { DARK_THEME } from \"../context\";\r\nimport piggyDark from \"../assets/img/piggy-dark.png\";\r\nimport piggy from \"../assets/img/piggy.png\";\r\nimport handHeartDark from \"../assets/img/hand-heart-dark.png\";\r\nimport handHeart from \"../assets/img/hand-heart.png\";\r\nimport defaultDark from '../assets/img/default-dark.png'\r\nimport defaultLight from '../assets/img/default-light.png'\r\n\r\nconst Carousel = memo(({raffle}) => {\r\n const context = useContext(ThemeContext);\r\n let picture = context.theme === DARK_THEME ? defaultDark : defaultLight;\r\n return (\r\n \r\n
\r\n
\r\n 0 ? raffle.picture[0] : picture}\r\n className=\"d-block w-100\"\r\n alt={raffle.name}\r\n />\r\n
\r\n
\r\n
\r\n

What's the story

\r\n

\r\n {raffle.description}\r\n

\r\n
\r\n
\r\n \r\n {'ticket\r\n \r\n {/**/}\r\n

{Math.ceil(raffle.erg / raffle.goal * 100)}% Funded

\r\n
\r\n
\r\n \r\n {'people\r\n \r\n {/**/}\r\n\r\n

{raffle.donatedPeople} Backers

\r\n
\r\n
\r\n
\r\n \r\n )\r\n});\r\n\r\nexport default Carousel;\r\n","const BootsrapCarouselNavigation = () => {\r\n return (<>\r\n \r\n \r\n Previous\r\n \r\n \r\n \r\n Next\r\n \r\n )\r\n}\r\n\r\nexport default BootsrapCarouselNavigation;","import BootsrapCarouselNavigation from \"./BootstrapCarouselNavigation\";\r\n\r\nconst CarouselElement = ({ children }) => {\r\n return (\r\n
\r\n {children}\r\n
\r\n \r\n )\r\n}\r\n\r\nexport default CarouselElement;","import CarouselElement from \"./CarouselElement\";\r\n\r\nconst BootstrapCarousel = ({ children }) => {\r\n return (<>\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\nexport default BootstrapCarousel;","import { memo } from 'react';\r\nimport Carousel from '../../components/Carousel';\r\nimport BootstrapCarousel from './BootstrapCarousel';\r\n\r\nconst CarouselBar = memo(({raffles}) => {\r\n return (
\r\n
\r\n \r\n {\r\n raffles.map((item, key) => (\r\n
\r\n
\r\n )\r\n )\r\n }\r\n
\r\n
\r\n
)\r\n});\r\n\r\nexport default CarouselBar;\r\n","const HeadingTitle = ({ title }) => {\r\n return (
\r\n
\r\n
\r\n

{title}

\r\n
\r\n
\r\n
)\r\n}\r\n\r\nexport default HeadingTitle;","import React from \"react\";\r\n\r\nconst Tabs = ({tabs, activeTab, setActiveTab}) => {\r\n return (\r\n
    \r\n {\r\n tabs.map(\r\n (item, key) => (\r\n
  • \r\n setActiveTab(key)}\r\n className={activeTab === key ? \"raffle-link nav-link active-link\" : \"raffle-link nav-link\"}>\r\n {item}\r\n \r\n
  • \r\n )\r\n )\r\n }\r\n
\r\n )\r\n}\r\n\r\nexport default Tabs;\r\n","export default __webpack_public_path__ + \"static/media/home-hand.575c23eb.png\";","export default __webpack_public_path__ + \"static/media/home-hand-dark.fcf7984d.png\";","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ThemeContext from \"../../context\";\r\nimport { IS_BETA } from \"../../statics\";\r\n\r\nconst HomeLeftColumn = ({showBeta}) => {\r\n return (\r\n \r\n {({hasWallet}) => (\r\n
\r\n
\r\n

\r\n No act of kindness, no matter how small, is ever wasted\r\n

\r\n
James Joyce
\r\n\r\n
\r\n {IS_BETA ? (\r\n \r\n ) : hasWallet.length > 5 ? (\r\n \r\n \r\n \r\n ) : (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n )\r\n};\r\n\r\nexport default HomeLeftColumn;\r\n","import hand from '../../assets/img/home-hand.png';\r\nimport handDark from '../../assets/img/home-hand-dark.png';\r\nimport ThemeContext, { DARK_THEME } from '../../context';\r\nimport { memo } from 'react';\r\nimport HomeLeftColumn from './HomeLeftColumn';\r\n\r\nconst HomeHeader = ({showBeta}) => {\r\n return (\r\n \r\n {({theme}) => (\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default HomeHeader;\r\n","import React from \"react\";\n\nconst BetaModal = ({close, show}) => {\n return (\n \n \n
\n
\n
\n \n
\n
\n This is the Ergo Raffle Beta. No new raffles can be created anymore. The Beta version is\n being maintained in order to complete running raffles.\n
\n \n
\n
\n \n
\n \n )\n}\n\nexport default BetaModal;\n","import React from \"react\";\r\nimport loader from '../../assets/img/loader.svg';\r\nimport RaffleWork from '../../components/RaffleWork';\r\nimport { Suspense } from 'react';\r\nimport { getRaffle } from '../../service/raffle.service';\r\nimport Raffle from '../../components/Raffle';\r\nimport Title from '../../components/Title';\r\nimport { IS_BETA, RAFFLE_SORTING_TABS } from '../../statics';\r\nimport CarouselBar from './CarouselBar';\r\nimport HeadingTitle from '../../webparts/Shared/HeadingTitle';\r\nimport Tabs from '../../components/Tabs';\r\nimport HomeHeader from './HomeHeader';\r\nimport { Link } from \"react-router-dom\";\r\nimport BetaModal from \"../../webparts/Modal/BetaModal\";\r\n\r\nclass Home extends React.Component {\r\n state = {\r\n raffles: [],\r\n successStories: [],\r\n progress: false,\r\n activeTab: 0,\r\n rafflesTab: -1,\r\n show_beta: IS_BETA,\r\n }\r\n\r\n fetch_data = () => {\r\n if (!this.state.progress && this.state.rafflesTab !== this.state.activeTab) {\r\n const activeTab = this.state.activeTab\r\n this.setState({progress: true});\r\n const tab = RAFFLE_SORTING_TABS[activeTab];\r\n getRaffle(0, 6, tab.sorting, tab.status).then(response => {\r\n this.setState({\r\n raffles: response.data.items,\r\n progress: false,\r\n rafflesTab: activeTab\r\n })\r\n })\r\n }\r\n }\r\n\r\n componentDidUpdate = () => {\r\n this.fetch_data();\r\n }\r\n\r\n componentDidMount = () => {\r\n this.fetch_data();\r\n getRaffle(0, 6, \"\", \"succeed\").then(response => {\r\n this.setState({successStories: response.data.items});\r\n }\r\n )\r\n }\r\n\r\n render = () => {\r\n const tabsContent = RAFFLE_SORTING_TABS.map(item => item.title);\r\n const tab = RAFFLE_SORTING_TABS[this.state.activeTab];\r\n return (\r\n \r\n \r\n <HomeHeader showBeta={()=>this.setState({show_beta: true})}/>\r\n <section>\r\n <div className=\"container raffle-links-container mt-5\">\r\n <Tabs tabs={tabsContent}\r\n setActiveTab={tabIndex => this.setState({activeTab: tabIndex})}\r\n activeTab={this.state.activeTab}/>\r\n </div>\r\n </section>\r\n <section id=\"raffle-cards\" className=\"p-lg-5 mt-5\">\r\n <div className=\"container\">\r\n <div className=\"row g-4\">\r\n {this.state.progress ?\r\n <div className={'loading-wrapper'}><img src={loader} alt={'loading spinner'}/></div> :\r\n this.state.raffles.map((item, key) =>\r\n (\r\n <div key={key + item.name + '-raffle-card'} className=\"col-6 col-lg-4\">\r\n <Raffle raffle={item}/>\r\n </div>\r\n )\r\n )\r\n }\r\n </div>\r\n <div className=\"see-more-raffles text-center mt-5\">\r\n <Link\r\n to={\"/raffle/list?sorting=\" + tab.sorting}\r\n className=\"nav-link see-more-link\">\r\n See More >\r\n </Link>\r\n </div>\r\n </div>\r\n </section>\r\n <HeadingTitle title={'Success Stories'}/>\r\n <Suspense fallback={''}>\r\n {this.state.successStories && this.state.successStories.length > 0 ?\r\n <CarouselBar raffles={this.state.successStories}/> :\r\n <div className={'loading-wrapper'}><img src={loader} alt={'loading spinner'}/></div>\r\n }\r\n </Suspense>\r\n <section>\r\n <div className=\"container\">\r\n <RaffleWork/>\r\n </div>\r\n </section>\r\n <BetaModal show={this.state.show_beta} close={() => this.setState({show_beta: false})}/>\r\n </React.Fragment>\r\n )\r\n }\r\n}\r\n\r\n\r\nexport default Home;\r\n","import { memo } from \"react\";\r\n\r\nconst FaqAccordion = memo(({item, elemKey, parent}) => {\r\n return (<div className=\"accordion-item\">\r\n <h2 className=\"accordion-header\">\r\n <button\r\n className=\"accordion-button collapsed\"\r\n type=\"button\"\r\n data-bs-toggle=\"collapse\"\r\n data-bs-target={\"#question-\" + elemKey}\r\n >\r\n {item.question}\r\n </button>\r\n </h2>\r\n <div\r\n id={\"question-\" + elemKey}\r\n className=\"accordion-collapse collapse\"\r\n data-bs-parent={'#' + parent}\r\n >\r\n <div className=\"accordion-body\">\r\n {item.answer}\r\n </div>\r\n </div>\r\n </div>)\r\n});\r\n\r\nexport default FaqAccordion;\r\n","import React, { useContext } from \"react\";\nimport ThemeContext from \"../../context\";\nimport { DEFAULT_SUPPORT_URL } from \"../../statics\";\n\nconst SupportLink = props => {\n const context = useContext(ThemeContext);\n const openSupportBot = () => {\n const support_url = context.info.supportUrl ? context.info.supportUrl : DEFAULT_SUPPORT_URL;\n window.open(support_url, \"_blank\")\n }\n return (\n <div>\n <div className=\"submit-btn-container text-center\">\n <button type=\"Submit\" className=\"btn support-submit mt-5\" onClick={openSupportBot}>\n Go to Support Bot in Discord\n </button>\n </div>\n </div>\n )\n}\n\n\nexport default SupportLink\n","import FaqAccordion from '../../components/FaqAccordion';\r\nimport Title from '../../components/Title';\r\nimport { Faq } from '../../statics'\r\nimport SupportLink from \"./SupportLink\";\r\n\r\nconst FaqPage = () => {\r\n return (<>\r\n <Title title={'Ergo Raffle - FAQ'}/>\r\n <main>\r\n <section id=\"questions\" className=\"p-lg-5 mt-header\">\r\n <div className=\"container\">\r\n <h2 className=\"faq-title text-center mb-4\">Have any Questions?</h2>\r\n <div className=\"accordion\" id=\"questions\">\r\n {Faq.map((item, key) => (\r\n <FaqAccordion key={key + '-faq-row'} item={item} elemKey={key} parent={'questions'}/>\r\n ))}\r\n </div>\r\n </div>\r\n <SupportLink/>\r\n </section>\r\n </main>\r\n </>)\r\n}\r\n\r\nexport default FaqPage;\r\n","export default __webpack_public_path__ + \"static/media/about-us.caf31712.png\";","import { useContext } from \"react\";\r\nimport ThemeContext from \"../context\";\r\nimport ReCAPTCHA from \"react-google-recaptcha\";\r\n\r\nconst Captcha = ({verifyCallback}) => {\r\n const context = useContext(ThemeContext);\r\n if (context.info.required)\r\n return <ReCAPTCHA sitekey={context.info.pubKey} onChange={verifyCallback} onExpired={() => verifyCallback('')}/>\r\n return null\r\n\r\n}\r\n\r\nexport default Captcha;\r\n","import { memo, useState } from \"react\"\r\nimport { toast } from 'react-toastify';\r\nimport { aboutFormSubmission } from \"../../service/support.service\";\r\nimport Captcha from \"../../components/Captcha\";\r\n\r\nconst AboutUsForm = memo(() => {\r\n const [email, setEmail] = useState('')\r\n const [message, setMessage] = useState('')\r\n const [shouldDisable, setShouldDisable] = useState(true);\r\n const [response, setResponse] = useState('');\r\n const notify = (msg) => toast(msg);\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n aboutFormSubmission(email, message, response).then(\r\n ({data}) => {\r\n setEmail('')\r\n setMessage('');\r\n if (data.state === 'success') {\r\n setShouldDisable(true);\r\n toast('Form Fubmitted');\r\n } else {\r\n setShouldDisable(false);\r\n toast(data.message);\r\n }\r\n }\r\n ).catch((e) => {\r\n setShouldDisable(false);\r\n notify(e.response.data.message);\r\n });\r\n }\r\n const validateMessage = () => {\r\n let sDisable = true;\r\n let re = /^(([^<>()[\\]\\\\.,;:\\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,}))$/;\r\n\r\n if (re.test(email)) {\r\n if (message.length > 2) {\r\n sDisable = false;\r\n } else {\r\n sDisable = true;\r\n }\r\n } else {\r\n sDisable = true;\r\n }\r\n setShouldDisable(sDisable);\r\n }\r\n const handleChangeEmail = (e) => {\r\n validateMessage();\r\n setEmail(e.target.value);\r\n }\r\n const handleChangeMessage = (e) => {\r\n validateMessage();\r\n setMessage(e.target.value);\r\n }\r\n\r\n function verifyCallback(value) {\r\n setResponse(value);\r\n }\r\n\r\n return (<>\r\n <h2 className=\"about-us-title text-center mb-4\">Contact Us</h2>\r\n <div className=\"contact-form-container\">\r\n <form action=\"\">\r\n <h4 className=\"about-form-subtitle about-email\">\r\n Your Email Address:\r\n </h4>\r\n <div className=\"form-floating about-email-form\">\r\n <input\r\n type=\"email\"\r\n className=\"form-control\"\r\n id=\"floatingInput\"\r\n placeholder=\"Email Address\"\r\n value={email}\r\n onChange={handleChangeEmail}\r\n />\r\n <label htmlFor=\"floatingInput\">Email</label>\r\n </div>\r\n <h4 className=\"about-form-subtitle about-message mt-5\">\r\n Your Message:\r\n </h4>\r\n <div className=\"form-floating\">\r\n <textarea\r\n value={message}\r\n className=\"form-control\"\r\n placeholder=\"Leave a comment here\"\r\n id=\"floatingTextarea2\"\r\n onChange={handleChangeMessage}/>\r\n <label htmlFor=\"floatingTextarea2\">Your Message</label>\r\n </div>\r\n <div className=\"recaptcha-cont\">\r\n <Captcha verifyCallback={(response) => verifyCallback(response)}/>\r\n </div>\r\n <div className=\"text-center\">\r\n <button type=\"submit\" disabled={shouldDisable} className=\"btn contact-us-btn\"\r\n onClick={handleSubmit}>Send\r\n </button>\r\n </div>\r\n </form>\r\n </div>\r\n </>)\r\n});\r\n\r\nexport default AboutUsForm;\r\n","import axios from 'axios';\r\nimport { config } from './config';\r\n\r\nexport const aboutFormSubmission = (email, message, response) => {\r\n return axios.post(config.baseUrl + `/contact`, { email: email, message: message, recaptcha: response });\r\n}\r\n","import { memo } from \"react\";\r\n\r\nconst AboutUsText = memo(() => {\r\n return (\r\n <p className=\"about-us-text\">\r\n <h1>Welcome to ErgoRaffle!</h1>\r\n <br/>\r\n ErgoRaffle is a crowdfunding service built on Ergo Platform that enables anyone to raise money for a\r\n project. This project can range from a direct donation to a charity, an academic or business plan, or\r\n anything you can convince people to part with their hard-earned ERG for! As an added bonus, after finishing\r\n the Raffle, a lottery takes place, and one lucky participant wins a set percent of the Raffle as a 'raffle\r\n reward'.\r\n <br/>\r\n Each Raffle has a deadline and a set fundraising goal; if the Raffle reaches this goal within its deadline,\r\n the Raffle is successful, and the project, winner, and service will be paid accordingly. Otherwise, the\r\n Raffle is unsuccessful, and all collected funds will be returned to the raffle participants. If the Raffle\r\n achieves its goal before the deadline, it will continue operating till the deadline and can be overfunded.\r\n <br/>\r\n The Raffle is managed by smart contracts built on Ergo Platform. This means that no middlemen are involved,\r\n and no one can alter or disrupt the Raffle, including the raffle service operator. This website simply acts\r\n as an interface for the smart contract and was created to provide a better user experience by caching some\r\n information. The system is designed in a way that anyone can create new raffles or donate to existing\r\n raffles using the raw scripts, and the raffle service functionality is disjoint from the raffle service\r\n backend. Although the service backend and frontend are designed in such a way that anyone with any amount of\r\n knowledge can use the service.\r\n </p>\r\n )\r\n});\r\n\r\nexport default AboutUsText;\r\n","import aboutImg from \"../../assets/img/about-us.png\";\r\nimport Title from '../../components/Title';\r\nimport AboutUsForm from './AboutUsForm';\r\nimport AboutUsText from './AboutUsText';\r\n\r\nfunction About() {\r\n return (<>\r\n <Title title={'Ergo Raffle - About'}/>\r\n <main>\r\n <section id=\"about-us\" className=\"mt-header\">\r\n <div className=\"container\">\r\n <h2 className=\"about-us-title text-center mb-4\">About Us</h2>\r\n <div className=\"about-us-container row p-lg-4\">\r\n <div className=\"col-lg-7 order-2 order-lg-1\">\r\n <AboutUsText/>\r\n </div>\r\n <div className=\"col-lg-5 order-1 order-lg-2\">\r\n <img src={aboutImg} alt=\"Ergo Raffle About Us\" className=\"about-us-img full-width\"/>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n <section id=\"contact-us\" className=\"my-5\">\r\n <div className=\"contact-us-container container\">\r\n <AboutUsForm/>\r\n </div>\r\n </section>\r\n </main>\r\n </>)\r\n}\r\n\r\nexport default About;\r\n","import React, { useState } from \"react\";\r\n\r\nconst CircleTabs = ({tabs, changeTabContent, activeTab}) => {\r\n const changeTab = (tabIndex) => {\r\n changeTabContent(tabIndex)\r\n }\r\n return (\r\n <React.Fragment>\r\n {\r\n tabs.map((item, key) => (\r\n <button key={key + '-circle-tab'} type=\"button\"\r\n onClick={() => changeTab(item.value)}\r\n className={\"btn btn-outline-raffle\" + (activeTab === item.value ? \" btn-raffle-active\" : \"\")}\r\n >\r\n {item.label}\r\n </button>\r\n )\r\n )\r\n }\r\n </React.Fragment>)\r\n};\r\n\r\nexport default CircleTabs;\r\n","import { memo } from \"react\";\r\n\r\nconst Pagination = memo(({currentPage, totalPages, prevPage, nextPage}) => {\r\n return (\r\n <nav aria-label=\"Page navigation example\">\r\n <ul className=\"pagination justify-content-center\">\r\n <li className={currentPage > 1 ? \"page-item\" : \"page-item disabled\"}>\r\n <button className=\"page-link\" tabIndex=\"-1\" onClick={prevPage}>\r\n <span className=\"icon-prev-page-01 prev-page\"/>\r\n </button>\r\n </li>\r\n <li className=\"page-item page-number disabled\">\r\n <button className=\"page-link page-number\">{currentPage} / {totalPages}</button>\r\n </li>\r\n\r\n <li className={currentPage !== totalPages ? \"page-item\" : \"page-item disabled\"}>\r\n <button className=\"page-link\" onClick={nextPage}>\r\n <span className=\"icon-next-page next-page\"/>\r\n </button>\r\n </li>\r\n </ul>\r\n </nav>\r\n );\r\n});\r\n\r\nexport default Pagination;\r\n","import React from 'react';\r\nimport loader from '../assets/img/loader.svg';\r\nimport Raffle from '../components/Raffle';\r\nimport { getRaffle, getRafflesByState } from '../service/raffle.service';\r\nimport Title from '../components/Title';\r\nimport staticText from '../statics';\r\nimport ThemeContext from '../context';\r\nimport CircleTabs from '../components/CircleTabs';\r\nimport Pagination from '../webparts/Shared/Pagination';\r\nimport Tabs from '../components/Tabs';\r\nimport { RAFFLE_SORTING_TABS, RAFFLE_STATUS_TABS, PAGE_SIZE } from '../statics';\r\n\r\nclass Raffles extends React.Component {\r\n state = {\r\n status: 'active',\r\n total: 0,\r\n sorting: 0,\r\n page: 0,\r\n progress: false,\r\n raffle: {\r\n status: '',\r\n sorting: -1,\r\n page: -1,\r\n },\r\n raffles: []\r\n }\r\n\r\n check_changed = () => {\r\n return this.state.raffle.status !== this.state.status ||\r\n this.state.raffle.sorting !== this.state.sorting ||\r\n this.state.raffle.page !== this.state.page\r\n }\r\n\r\n fetch_data = () => {\r\n if (!this.state.progress && this.check_changed()) {\r\n this.setState({progress: true});\r\n const status = this.state.status\r\n const sortingIndex = this.state.sorting;\r\n const page = this.state.page;\r\n let sorting = status !== 'active' ? \"\" : RAFFLE_SORTING_TABS[sortingIndex].sorting\r\n getRaffle(page * PAGE_SIZE, PAGE_SIZE, sorting, status).then(response => {\r\n this.setState({\r\n total: response.data.total,\r\n raffles: response.data.items,\r\n progress: false,\r\n raffle: {status: status, sorting: sortingIndex, page: page}\r\n })\r\n })\r\n }\r\n }\r\n\r\n prevPage = () => {\r\n if (this.state.page > 0) {\r\n this.setState(state => ({...state, page: state.page - 1}))\r\n }\r\n }\r\n nextPage = () => {\r\n if (this.state.page < Math.ceil(this.state.total / PAGE_SIZE) - 1) {\r\n this.setState(state => ({...state, page: state.page + 1}))\r\n }\r\n }\r\n\r\n componentDidMount = () => {\r\n const params = new URLSearchParams(window.location.search) // id=123\r\n const sortingIndex = RAFFLE_SORTING_TABS.map(item =>item.sorting).indexOf(params.get('sorting'));\r\n if (sortingIndex > 0 && sortingIndex < RAFFLE_SORTING_TABS.length) {\r\n this.setState({sorting: sortingIndex});\r\n }\r\n this.fetch_data()\r\n }\r\n\r\n componentDidUpdate = () => {\r\n this.fetch_data()\r\n }\r\n\r\n render = () => {\r\n const tabsContent = RAFFLE_SORTING_TABS.map(item => item.title);\r\n return (\r\n <React.Fragment>\r\n <Title title={'Ergo Raffle - All Raffles'}/>\r\n <main>\r\n <section id=\"Raffles-title-box\" className=\"p-lg-5 mb-3 mt-header\">\r\n <div className=\"container\">\r\n <div className=\"row category-box\">\r\n <div className=\"col-12 pt-2 category-box-col\">\r\n <div className=\"text-center\">\r\n <CircleTabs\r\n tabs={RAFFLE_STATUS_TABS}\r\n activeTab={this.state.status}\r\n changeTabContent={(tabIndex) => this.setState({\r\n status: tabIndex,\r\n sorting: 0,\r\n page: 0\r\n })}/>\r\n </div>\r\n <br/>\r\n {this.state.status === 'active' ? (\r\n <div className=\"text-center\">\r\n <Tabs tabs={tabsContent}\r\n setActiveTab={tabIndex => this.setState({sorting: tabIndex, page: 0})}\r\n activeTab={this.state.sorting}/>\r\n </div>\r\n ) : null}\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n <section id=\"raffle-cards\">\r\n <div className=\"container\">\r\n <div className=\"row g-4\">\r\n {this.state.progress ? (\r\n <div className={'loading-wrapper'}>\r\n <img src={loader} alt={'Loading Spinner'}/>\r\n </div>\r\n ) : this.state.raffles.map((item, key) => (\r\n <div className=\"col-6 col-lg-4\" key={item.name + `1000-item${key}`}>\r\n <div className=\"card raffle-card\">\r\n <Raffle raffle={item}/>\r\n </div>\r\n </div>\r\n )\r\n )}\r\n </div>\r\n </div>\r\n </section>\r\n <section id=\"pagination\" className=\"p-5\">\r\n {this.state.total < PAGE_SIZE ? null : (\r\n <Pagination\r\n currentPage={this.state.page + 1}\r\n totalPages={Math.ceil(this.state.total / PAGE_SIZE)}\r\n prevPage={() => this.prevPage()}\r\n nextPage={() => this.nextPage()}/>\r\n )}\r\n </section>\r\n </main>\r\n </React.Fragment>\r\n );\r\n }\r\n}\r\nexport default Raffles;\r\n","import React from \"react\";\nimport { memo } from \"react\";\n\nconst RaffleBarStep = ({title, steps, active, showStep}) => {\n return (\n <React.Fragment>\n <h3 className=\"help-request create-raffle-title text-center mt-3\">\n {title}\n </h3>\n <ul className=\"multi-step\">\n {steps.map((title, index) => (\n <li className={active >= index ? \"active\": \"\"}>\n <span className=\"circle\"/>\n {showStep ? `Step ${index + 1}:`: ''} {title}\n </li>\n ))}\n </ul>\n </React.Fragment>\n )\n};\n\nexport default RaffleBarStep;\n","import React from \"react\";\n\nconst MultiStepLeft = ({steps, active}) => {\n return (\n <React.Fragment>\n <div className=\"d-md-block d-none\">\n <ul className=\"multi-step-left\">\n {steps.map((item, index) => (\n <li className={index <= active ? \"active\" : \"\"}>{item}</li>\n ))}\n </ul>\n </div>\n <div className=\"d-md-none d-block\">\n field\n <span className=\"substep-number\"> {active + 1}</span> of {steps.length}: {steps[active]}\n </div>\n </React.Fragment>\n )\n}\n\nexport default MultiStepLeft;\n","import React from \"react\";\nimport { TITLE_LENGTH } from '../../../statics';\n\nconst RaffleTitle = ({setValid, init, setValue}) => {\n setValid(!!init && init.length < TITLE_LENGTH)\n return (\n <div className=\"first-step step-1-a\">\n <div className=\"step-content text-center text-lg-start\">\n <h3 className=\"step-title mb-4\">\n Set Raffle's Title.\n </h3>\n <form>\n <div\n className=\"form-floating create-raffle-input raffle-name-input\">\n <input\n type=\"text\"\n className=\"form-control\"\n id=\"floatingInput\"\n placeholder=\"Title\"\n required\n value={init}\n onChange={e => setValue(e.target.value)}\n />\n <label htmlFor=\"floatingInput\">Title</label>\n </div>\n </form>\n </div>\n </div>\n )\n};\n\nexport default RaffleTitle;\n","const CreateRaffleButtonBar = ({is_first, is_last, valid, step_forward, step_backward}) => {\n return (\n <div className=\"row action-button mb-5 justify-content-center\">\n <div id=\"back-container\" className=\"col-6\">\n {is_first ? null : (\n <button className=\"btn create-back back-btn mt-3\" onClick={step_backward}>\n Back\n </button>\n )}\n </div>\n <div id=\"next-container\" className=\"col-6 text-end\">\n <button className=\"btn create-next next-btn mt-3\" disabled={!valid} onClick={step_forward}>\n {is_last ? \"Finish\" : \"Next\"}\n </button>\n </div>\n </div>\n )\n}\n\nexport default CreateRaffleButtonBar;\n","import { CKEditor } from '@ckeditor/ckeditor5-react';\r\nimport DecoupledEditor from '@ckeditor/ckeditor5-build-decoupled-document';\r\nimport { DESCRIPTION_SIZE_LIMIT } from \"../../../statics\";\r\n\r\n\r\nconst RaffleDescription = ({setValid, init, setValue}) => {\r\n const changeEditor = (data) => {\r\n setValue(data);\r\n }\r\n setValid(!!init && init.length < DESCRIPTION_SIZE_LIMIT)\r\n return (\r\n <div className=\"first-step step-1-c\">\r\n <div className=\"step-content text-center text-lg-start\">\r\n <h3 className=\"step-title mb-4\">\r\n Write the Raffle's Description. <small>({DESCRIPTION_SIZE_LIMIT} characters)</small>\r\n </h3>\r\n <form>\r\n <div className=\"editor-bordered-box\">\r\n <div>\r\n <CKEditor\r\n data={init}\r\n editor={DecoupledEditor}\r\n onReady={editor => {\r\n editor.ui.getEditableElement().parentElement.insertBefore(\r\n editor.ui.view.toolbar.element,\r\n editor.ui.getEditableElement()\r\n );\r\n }}\r\n onError={({willEditorRestart}) => {\r\n // This is why you need to remove the older toolbar.\r\n if (willEditorRestart) {\r\n this.editor.ui.view.toolbar.element.remove();\r\n }\r\n }}\r\n config={{\r\n toolbar: {\r\n items: [\r\n 'heading',\r\n '|',\r\n 'bold',\r\n 'italic',\r\n 'link',\r\n '|',\r\n 'alignment',\r\n 'indent',\r\n 'outdent',\r\n 'numberedList',\r\n 'bulletedList',\r\n '|',\r\n 'blockQuote',\r\n '|',\r\n 'undo',\r\n 'redo'\r\n ]\r\n },\r\n // plugins: [Markdown]\r\n }}\r\n onChange={(event, editor) => {\r\n let data = editor.getData();\r\n changeEditor(data);\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>)\r\n};\r\n\r\nexport default RaffleDescription;\r\n","import { memo, useState } from \"react\";\r\nimport * as constant from \"../../statics\";\r\nimport preview from '../../assets/img/preview.png';\r\nimport { toast } from \"react-toastify\";\r\nimport { FILE_SIZE_LIMITATION } from \"../../statics\";\r\n\r\nconst isFileImage = (file) => {\r\n return file && file['type'].split('/')[0] === 'image';\r\n}\r\n\r\nconst RaffleImgFileUploader = ({setValid, setValue, url}) => {\r\n const [loading, setLoading] = useState(false)\r\n const upload_file = (e) => {\r\n const file_value = e.target.files[0]\r\n if (!loading) {\r\n debugger\r\n if(!isFileImage(file_value)){\r\n toast(\"File type is not supported.\")\r\n }else if(file_value.size > constant.FILE_SIZE_LIMITATION) {\r\n toast(\"File is too big\")\r\n }else{\r\n setLoading(true)\r\n let form = new FormData();\r\n form.append('file', file_value);\r\n return fetch(constant.UPLOAD_API_URL, {\r\n method: 'POST',\r\n body: form,\r\n }).then(res => res.json()).then(res => {\r\n debugger\r\n setValue(`ipfs://${res.value.cid}`)\r\n setLoading(false)\r\n })\r\n }\r\n }\r\n }\r\n setValid(!loading)\r\n return (\r\n <div className=\"col-md-3 col-xs-6\">\r\n <form>\r\n <div className=\"mb-3 overflow-hidden\">\r\n <label className=\"upload-image\">\r\n <input\r\n disabled={loading}\r\n className={loading ? \"pt-4 disabled\" : \"pt-4\"}\r\n type=\"file\"\r\n onChange={upload_file}/>\r\n </label>\r\n <img\r\n src={url ? url.replace(constant.FILE_TO_SEND_PREFIX, constant.FILE_URL_PREVIEW) : preview}\r\n className='image-preview'\r\n alt='raffle image preview'/>\r\n </div>\r\n </form>\r\n </div>\r\n )\r\n};\r\n\r\nexport default RaffleImgFileUploader;\r\n","export default \"data:image/png;base64,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\"","import { memo, useState } from \"react\";\r\nimport { toast } from \"react-toastify\";\r\nimport * as constant from \"../../../statics\";\r\nimport RaffleImgFileUploader from \"../../../webparts/Raffle/RaffleImgFileUploader\";\r\n\r\n\r\nconst RafflePhotos = ({setValid, init, setValue}) => {\r\n const imgs = init.length < 4 ? [...init, null] : [...init]\r\n const [validate, setValidate] = useState([])\r\n const set_image_index = (index, img) => {\r\n let new_imgs = [...imgs]\r\n while(new_imgs.length <= index){\r\n new_imgs.push(null)\r\n }\r\n new_imgs[index] = img;\r\n setValue(new_imgs.filter(item => !!item))\r\n }\r\n const set_validate_index = (index, valid) => {\r\n let new_validate = [...validate]\r\n while(new_validate.length <= index){\r\n new_validate.push(true)\r\n }\r\n new_validate[index] = valid;\r\n if(new_validate.length !== validate.length || new_validate[index] !== validate[index]) {\r\n setValidate(new_validate)\r\n }\r\n }\r\n setValid(validate.filter(item => !item).length === 0);\r\n return (\r\n <div className=\"first-step step-1-b\">\r\n <div className=\"step-content text-center text-lg-start\">\r\n <h3 className=\"step-title mb-4\">\r\n Upload Up to 4 Photos.\r\n </h3>\r\n <div className=\"row\">\r\n {imgs.map((img, index) => <RaffleImgFileUploader\r\n setValue={(url) => set_image_index(index, url)}\r\n url={img}\r\n setValid={valid => set_validate_index(index, valid)}/>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default RafflePhotos;\r\n","import React from \"react\";\r\n\r\nconst RaffleAddress = ({label, setValue, setValid, init}) => {\r\n setValid(!!init)\r\n return (\r\n <div className=\"first-step step-1-d\">\r\n <div className=\"step-content text-center text-lg-start\">\r\n <h3 className=\"step-title mb-4\">{label}</h3>\r\n <form>\r\n <div className=\"form-floating create-raffle-input raffle-charity-input\">\r\n <input\r\n type=\"text\"\r\n value={init}\r\n className=\"form-control\"\r\n id=\"floatingInput\"\r\n placeholder=\"Address\"\r\n onChange={e => setValue(e.target.value)}\r\n required\r\n />\r\n <label htmlFor=\"floatingInput\">Address</label>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n )\r\n};\r\n\r\nexport default RaffleAddress;\r\n","import React from \"react\";\r\n\r\nconst RaffleDonationGoal = ({init, setValue, setValid}) => {\r\n const handleChange = (e) => {\r\n const {value} = e.target;\r\n console.log(value);\r\n setValue(value.split('-').join(''));\r\n }\r\n setValid(!isNaN(init) && Number(init) > 0)\r\n return (\r\n <div className=\"step-content text-center text-lg-start\">\r\n <h3 className=\"step-title mb-4\">\r\n How Many ERG to Collect?\r\n </h3>\r\n <form>\r\n <div className=\"form-floating create-raffle-input raffle-donation-input\">\r\n <input\r\n type=\"number\"\r\n min={1}\r\n step={1}\r\n className=\"form-control\"\r\n id=\"floatingInput\"\r\n placeholder=\"Donation Amount\"\r\n onChange={handleChange}\r\n // onKeyDown={handleChange}\r\n value={init}\r\n />\r\n <label htmlFor=\"floatingInput\">Amount (ERG)</label>\r\n </div>\r\n </form>\r\n </div>\r\n )\r\n};\r\n\r\nexport default RaffleDonationGoal;\r\n","import React from \"react\";\r\n\r\nconst TicketPriceBadge = ({value, handleChange, ticketPrice}) => {\r\n return (\r\n <React.Fragment>\r\n <input\r\n type=\"radio\"\r\n className=\"btn-check\"\r\n name=\"options-outlined\"\r\n id={`erg${ticketPrice}`}\r\n onChange={() => handleChange(ticketPrice)}\r\n checked={ticketPrice === value}\r\n />\r\n <label className=\"btn btn-outline-danger\" htmlFor={`erg${ticketPrice}`}>{ticketPrice} ERG</label>\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default TicketPriceBadge;\r\n","import React from \"react\";\r\nimport TicketPriceBadge from \"../../../components/TicketPriceBadge\";\r\nimport * as constant from '../../../statics';\r\n\r\nconst RaffleTicketPrice = ({init, setValue, setValid}) => {\r\n setValid(!isNaN(init) && Number(init) > 0);\r\n return (\r\n <div className=\"step-content text-center text-lg-start\">\r\n <h3 className=\"step-title mb-4\">\r\n Set each Ticket's Price.\r\n </h3>\r\n <div className=\"row mt-3\">\r\n <div className=\"text-center text-lg-start ticket-options-container\">\r\n {constant.TICKET_PRICES.map(item =>\r\n <TicketPriceBadge\r\n ticketPrice={Number(item)}\r\n handleChange={() => setValue(item)}\r\n value={init}/>\r\n )}\r\n </div>\r\n </div>\r\n <form>\r\n <div className=\"form-floating create-raffle-input raffle-donation-input mt-4\">\r\n <input\r\n value={init}\r\n type=\"number\"\r\n className=\"form-control\"\r\n id=\"ticket-price\"\r\n placeholder=\"Custom Price\"\r\n onChange={(e) => setValue(e.target.value + '')}\r\n />\r\n <label htmlFor=\"ticket-price\">Custom Price</label>\r\n </div>\r\n </form>\r\n </div>\r\n )\r\n};\r\n\r\nexport default RaffleTicketPrice;\r\n","import staticText from \"../../statics\";\r\nimport Day from \"../../components/Day\";\r\n\r\nconst EstimationBox = ({deadline}) => {\r\n if(isNaN(deadline)) {\r\n return <div className=\"col-md-6 mt-3\">No Estimation</div>\r\n }\r\n return (\r\n <div className=\"col-6 mt-3\">\r\n Estimation: Almost <Day add_suffix={false} remaining_block={deadline}/>\r\n </div>\r\n )\r\n}\r\n\r\nexport default EstimationBox;\r\n","import React from \"react\";\r\nimport EstimationBox from \"../../../webparts/Raffle/EstimationBox\";\r\nimport * as constant from '../../../statics'\r\n\r\n\r\nconst RaffleDeadline = ({setValue, init, setValid}) => {\r\n const handleChange = (e) => {\r\n const {value} = e.target;\r\n setValue(Number(value.split('.').join('').split('-').join('')));\r\n }\r\n setValid(!isNaN(init) && init > 0 && init < constant.DEADLINE_LIMIT)\r\n return (\r\n <div className=\"step-content text-center text-lg-start\">\r\n <h3 className=\"step-title mb-4\">Set Raffle's Deadline.</h3>\r\n <div className=\"row\">\r\n <div className=\"col-6\">\r\n <form>\r\n <div className=\"form-floating create-raffle-input raffle-deadline-input\">\r\n <input\r\n value={init}\r\n type=\"number\"\r\n min={0}\r\n step={1}\r\n className=\"form-control\"\r\n id=\"raffle-deadline\"\r\n placeholder=\"Blocks to Go\"\r\n required\r\n onChange={handleChange}\r\n />\r\n <label htmlFor=\"raflfle-deadline\">Blocks to Go</label>\r\n </div>\r\n </form>\r\n </div>\r\n <EstimationBox deadline={init}/>\r\n </div>\r\n </div>\r\n )\r\n};\r\n\r\nexport default RaffleDeadline;\r\n","import { memo, useContext, useState } from \"react\";\r\nimport ThemeContext from \"../../../context\";\r\n\r\nconst RaffleShare = ({init, setValue, setValid}) => {\r\n const context = useContext(ThemeContext);\r\n const service_fee = context.info.serviceFee;\r\n const handleChange = (e) => {\r\n const value = Number(e.target.value)\r\n if(!isNaN(value)){\r\n if(value > 0 && value + service_fee < 100){\r\n setValue(value);\r\n }\r\n }\r\n }\r\n setValid(!isNaN(init) && init + service_fee < 100 && init > 0);\r\n return (\r\n <div className=\"step-content text-center text-lg-start\">\r\n <h3 className=\"step-title mb-4\">\r\n Set the Charity Share.\r\n </h3>\r\n <div className=\"row\">\r\n <div className=\"col-4\">\r\n <form>\r\n <div className=\"form-floating create-raffle-input charity-share-input\">\r\n <input\r\n value={init}\r\n type=\"number\"\r\n className=\"form-control\"\r\n id=\"charity-share\"\r\n placeholder=\"Ticket Share Percent\"\r\n required\r\n onChange={handleChange}\r\n />\r\n <label htmlFor=\"charity-share\">Charity Share</label>\r\n </div>\r\n </form>\r\n </div>\r\n <div className=\"col-4\">\r\n <p className=\"raffle-sharing winner-share\">Winner\r\n Percent: {100 - (isNaN(init) ? 0 : init) - context.info.serviceFee}%</p>\r\n </div>\r\n <div className=\"col-4\">\r\n <p className=\"raffle-sharing service-share\">Service: {context.info.serviceFee}%</p>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n};\r\n\r\nexport default RaffleShare;\r\n","import { useContext, useState } from \"react\";\r\nimport ThemeContext from \"../../context\";\r\nimport { Link } from \"react-router-dom\";\r\nimport Captcha from \"../../components/Captcha\";\r\n\r\n\r\nconst RecaptchaAndAgree = ({setValue, setValid, init, showTerms}) => {\r\n const context = useContext(ThemeContext);\r\n const [termsAccepted, setTermsAccepted] = useState(false)\r\n const handleTerms = (e) => {\r\n setTermsAccepted(e.target.checked);\r\n }\r\n\r\n function verifyCallback(value) {\r\n setValue(value)\r\n }\r\n setValid(termsAccepted && (!context.info.required || !!init))\r\n return (\r\n <div className=\"row\">\r\n <h3 className=\"step-title text-center\">Read the Terms of Use.</h3>\r\n <div className=\"row accept-terms\">\r\n <div\r\n className=\"my-5 col-xs-12 verify-terms d-flex align-items-center justify-content-center\">\r\n <div className=\"form-check\">\r\n <input\r\n className=\"form-check-input\"\r\n type=\"checkbox\"\r\n value=\"on\"\r\n checked={termsAccepted}\r\n id=\"flexCheckDefault\"\r\n onChange={handleTerms}\r\n />\r\n <label className=\"form-check-label\" htmlFor=\"flexCheckDefault\">\r\n I agree to the <a onClick={() => showTerms()} className=\"terms-link cursor-pointer\"> terms of use</a>\r\n </label>\r\n </div>\r\n </div>\r\n <div className=\"xs-12 verify-recaptcha text-center\">\r\n <Captcha verifyCallback={(response) => verifyCallback(response)}/>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n};\r\n\r\nexport default RecaptchaAndAgree;\r\n","import React from \"react\";\r\nimport { toast } from \"react-toastify\";\r\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\r\nimport QRCode from \"react-qr-code\";\r\n\r\nconst CopiableAddress = ({address}) => {\r\n return (\r\n <React.Fragment>\r\n <p className=\"charity-address text-start\">Address</p>\r\n <div className=\"row charity-address-box\">\r\n <div className=\"col-lg-9\">\r\n <div className=\"charity-address-field\">\r\n <p className=\"charity-address-text cursor-pointer\">\r\n <CopyToClipboard text={address} onCopy={() => toast('Copied')}>\r\n <span>{address}</span>\r\n </CopyToClipboard>\r\n </p>\r\n </div>\r\n </div>\r\n <div className=\"col-lg-3\">\r\n <QRCode value={address} size={200}/>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n )\r\n};\r\n\r\nexport default CopiableAddress;\r\n","import React from \"react\";\r\n\r\nconst WARNING_THRESHOLD = 80;\r\nconst ALERT_THRESHOLD = 20;\r\n\r\nconst CountDown = ({percent, remainingSeconds}) => {\r\n const colorClass = percent < ALERT_THRESHOLD ? \"red\" : percent < WARNING_THRESHOLD ? \"orange\" : \"green\";\r\n let FULL_DASH_ARRAY = 283;\r\n let current_dash_array = percent * FULL_DASH_ARRAY / 100;\r\n return (\r\n <React.Fragment>\r\n <div className=\"text-center operation-text mt-5\">\r\n <p>\r\n The operation will be done automatically afterward. It is safe to close this window. Keeping it open\r\n will show the donation process.\r\n </p>\r\n </div>\r\n <div className=\"timer-container d-flex justify-content-center align-items-center\">\r\n <div className=\"timer text-center mt-3\">\r\n <div id=\"timer-countdown\">\r\n <div className=\"base-timer\">\r\n <svg className=\"base-timer__svg\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g className=\"base-timer__circle\">\r\n <circle className=\"base-timer__path-elapsed\" cx=\"50\" cy=\"50\" r=\"45\"/>\r\n <path\r\n id=\"base-timer-path-remaining\"\r\n strokeDasharray={`${current_dash_array} 283`}\r\n className={`base-timer__path-remaining timer-${colorClass}`}\r\n d=\"M 50, 50 m -45, 0 a 45,45 0 1,0 90,0 a 45,45 0 1,0 -90,0\"\r\n />\r\n </g>\r\n </svg>\r\n <span id=\"base-timer-label\" className=\"base-timer__label\">\r\n {remainingSeconds} Second{remainingSeconds > 1 ? \"s\" : \"\"}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n )\r\n};\r\n\r\nexport default CountDown;\r\n","import React from \"react\";\n\nconst SORTED_STATUS = [\n 'waiting',\n 'createdWaiting',\n 'done'\n]\nconst StepDisplay = ({totalStatus, status, stepTitle}) => {\n const statusIndex = SORTED_STATUS.indexOf(status) + 1\n return (\n <div className=\"modal-footer d-flex justify-content-center\">\n <div className=\"donation-steps-description\">\n <div className=\"donation-steps-box p-3\">\n <p className=\"donation-text\">\n {stepTitle}: <span>{status} {totalStatus ? `(${statusIndex} of ${totalStatus})` : ''}</span>\n </p>\n </div>\n </div>\n <div className=\"donation-fine-print mt-2\">\n In case of any failure, your funds are safe and will be sent back to your address.\n </div>\n </div>\n )\n};\n\nexport default StepDisplay;\n\n// {window.location.href.indexOf('raffle/donate') >= 0 ? 'Donation Steps' : 'Create Raffle Steps'}:\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport Erg from \"../../../components/Erg\";\r\nimport CopiableAddress from \"./CopiableAddress\";\r\nimport CountDown from \"./CountDown\";\r\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\r\nimport { toast } from \"react-toastify\";\r\nimport * as constant from \"../../../statics\";\r\nimport StepDisplay from \"./StepDisplay\";\r\n\r\nlet intervalItem = null\r\n\r\nclass FinishModal extends React.Component {\r\n state = {\r\n interval: 0,\r\n }\r\n closeModal = () => {\r\n this.props.close();\r\n if (intervalItem) {\r\n clearInterval(intervalItem)\r\n intervalItem = null;\r\n }\r\n }\r\n\r\n componentDidUpdate = () => {\r\n if (!intervalItem) {\r\n intervalItem = setInterval(() => {\r\n this.setState(state => ({...state, interval: state.interval + 1}));\r\n }, 1000)\r\n }\r\n }\r\n\r\n render = () => {\r\n const remainingSeconds = Math.max(0, Math.floor(this.props.deadline - (Date.now() - this.props.start) / 1000));\r\n if (remainingSeconds === 0) {\r\n clearInterval(intervalItem);\r\n intervalItem = null;\r\n }\r\n const percent = 100 * remainingSeconds / this.props.deadline;\r\n return (\r\n <React.Fragment>\r\n <div\r\n className={\"modal fade\" + (this.props.show ? \" show\" : \"\")}\r\n tabIndex=\"-1\"\r\n style={{display: this.props.show ? \"block\" : \"none\"}}\r\n aria-labelledby=\"donationModalLabel\"\r\n aria-hidden=\"true\">\r\n <div className=\"modal-dialog modal-dialog-centered\">\r\n <div className=\"modal-content p-3\">\r\n <div className=\"modal-header\">\r\n <p className=\"donation-modal-instruction\">\r\n Copy the Address from below and Send \r\n <CopyToClipboard text={this.props.amount / constant.ERG_FACTOR}\r\n onCopy={() => toast('Copied')}>\r\n <b className={'cursor-pointer'}>\r\n exactly <Erg erg={this.props.amount} shouldDisplay={true}/>\r\n </b>\r\n </CopyToClipboard>\r\n  to it.\r\n </p>\r\n\r\n <button\r\n onClick={this.closeModal}\r\n type=\"button\"\r\n className=\"btn-close\"\r\n data-bs-dismiss=\"modal\"\r\n aria-label=\"Close\"/>\r\n </div>\r\n <div className=\"modal-body\">\r\n <CopiableAddress address={this.props.address}/>\r\n {this.props.children}\r\n <CountDown\r\n remainingSeconds={remainingSeconds}\r\n percent={percent}\r\n />\r\n <StepDisplay\r\n stepTitle={this.props.stepTitle}\r\n status={this.props.status}\r\n totalStatus={this.props.status === 'expired' ? null : 3}/>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div className={\"modal-backdrop fade\" + (this.props.show ? \" show\" : \"\")} onClick={this.closeModal}/>\r\n </React.Fragment>\r\n )\r\n }\r\n}\r\n\r\nexport default FinishModal;\r\n","import React from \"react\";\n\nconst TermsModal = ({close, show}) => {\n return (\n <React.Fragment>\n <div\n className={\"modal fade\" + (show ? \" show\" : \"\")}\n tabIndex=\"-1\"\n style={{display: show ? \"block\" : \"none\"}}\n aria-labelledby=\"donationModalLabel\"\n aria-hidden=\"true\">\n <div className=\"modal-dialog modal-dialog-centered\">\n <div className=\"modal-content p-3\">\n <div className=\"modal-header\">\n <h3 className=\"donation-modal-instruction\">\n Terms of Use\n </h3>\n <button\n onClick={close}\n type=\"button\"\n className=\"btn-close\"\n data-bs-dismiss=\"modal\"\n aria-label=\"Close\"/>\n </div>\n <div className=\"modal-body\">\n <ul>\n <li>\n Creating or participating in raffles and receiving donations is not illegal in your\n country.\n </li>\n <li>\n You are over the legal age required to use financial services such as running\n raffles and are not creating a raffle on behalf of an underage person or anyone who\n is not legally allowed to create raffles.\n </li>\n <li>\n You are solely responsible for all legal or moral obligations and liabilities, and\n the service does not have any obligations or liabilities.\n </li>\n <li>\n You are participating in a raffle to the described purpose and making donations\n solely for supporting the project and without any intent to win the prize.\n </li>\n <li>\n The raised funds will be used solely for the described purpose of the raffle.\n </li>\n <li>\n You are solely responsible for any due taxes and legal reports.\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n <div className={\"modal-backdrop fade\" + (show ? \" show\" : \"\")} onClick={close}/>\n </React.Fragment>\n )\n}\n\nexport default TermsModal;\n","import React from \"react\";\r\nimport Title from \"../../components/Title\";\r\nimport ThemeContext from \"../../context\";\r\nimport MultiStepBar from \"../../components/multi-step/MultiStepBar\";\r\nimport MultiStepLeft from \"../../components/multi-step/MultiStepLeft\";\r\nimport RaffleTitle from \"./steps/RaffleTitle\";\r\nimport CreateButtons from \"./steps/CreateButtons\";\r\nimport RaffleDescription from \"./steps/RaffleDescription\";\r\nimport RafflePhotos from \"./steps/RafflePhotos\";\r\nimport RaffleAddress from \"./steps/RaffleAddress\";\r\nimport RaffleDonationGoal from \"./steps/RaffleDonationGoal\";\r\nimport RaffleTicketPrice from \"./steps/RaffleTicketPrice\";\r\nimport RaffleDeadline from \"./steps/RaffleDeadline\";\r\nimport RaffleShare from \"./steps/RaffleShare\";\r\nimport RecaptchaAndAgree from \"../../webparts/Raffle/RecaptchaAndAgree\";\r\nimport FinishModal from \"../../webparts/Modal/finish-modal/FinishModal\";\r\nimport * as constant from '../../statics';\r\nimport { getRaffleStatus, postRaffle } from \"../../service/raffle.service\";\r\nimport { toast } from \"react-toastify\";\r\nimport TermsModal from \"../../webparts/Modal/TermsModal\";\r\nimport { IS_BETA } from \"../../statics\";\r\n\r\nlet interval_item = null;\r\n\r\nclass CreateRaffle extends React.Component {\r\n state = {\r\n step: 0,\r\n subStep: 0,\r\n stepValid: false,\r\n title: '',\r\n description: '',\r\n photo: [],\r\n charity: '',\r\n goal: '',\r\n ticketPrice: '',\r\n deadline: '',\r\n share: '',\r\n recaptcha: '',\r\n showTerms: false,\r\n response: {\r\n address: '',\r\n amount: 0,\r\n deadline: 0,\r\n requestId: 0,\r\n show: false,\r\n start: 0,\r\n status: ''\r\n }\r\n }\r\n MultiStep = [\r\n {\r\n title: \"Raffle’s Specifications\",\r\n subs: [\r\n {\r\n title: \"Title\",\r\n render: () => <RaffleTitle\r\n setValid={this.set_valid}\r\n init={this.state.title}\r\n setValue={value => this.setState({title: value})}/>\r\n\r\n }, {\r\n title: \"Description\",\r\n render: () => <RaffleDescription\r\n setValid={this.set_valid}\r\n init={this.state.description}\r\n setValue={value => this.setState({description: value})}/>\r\n\r\n }, {\r\n title: \"Upload Photos\",\r\n render: () => <RafflePhotos\r\n setValid={this.set_valid}\r\n init={this.state.photo}\r\n setValue={value => this.setState({photo: value})}/>\r\n\r\n }, {\r\n title: \"Charity Address\",\r\n render: () => <RaffleAddress\r\n init={this.state.charity}\r\n label=\"Set a Charity Address.\"\r\n setValue={value => this.setState({charity: value})}\r\n setValid={this.set_valid}/>\r\n // }, {\r\n // title: \"Wallet Address\",\r\n // render: () => <RaffleAddress\r\n // init={this.context.hasWallet}\r\n // label=\"Confirm Your Wallet Address.\"\r\n // setValue={value => this.setContext({wallet: value})}\r\n // setValid={this.set_valid}/>\r\n },\r\n ],\r\n }, {\r\n title: \"Donation Goal\",\r\n subs: [\r\n {\r\n title: \"Donation Goal\",\r\n render: () => <RaffleDonationGoal\r\n setValue={value => this.setState({goal: value})}\r\n setValid={this.set_valid}\r\n init={this.state.goal}/>\r\n }, {\r\n title: \"Ticket Price\",\r\n render: () => <RaffleTicketPrice\r\n setValid={this.set_valid}\r\n setValue={value => this.setState({ticketPrice: value})}\r\n init={this.state.ticketPrice}/>\r\n }, {\r\n title: \"Deadline\",\r\n render: () => <RaffleDeadline\r\n setValue={value => this.setState({deadline: value})}\r\n setValid={this.set_valid}\r\n init={this.state.deadline}/>\r\n }, {\r\n title: \"Distribution\",\r\n render: () => <RaffleShare\r\n setValue={value => this.setState({share: value})}\r\n setValid={this.set_valid}\r\n init={this.state.share}/>\r\n },\r\n ]\r\n }, {\r\n title: \"Agreement\",\r\n render: () => <RecaptchaAndAgree\r\n init={this.state.recaptcha}\r\n setValid={this.set_valid}\r\n showTerms={() => this.setState({showTerms: true})}\r\n setValue={recaptcha => this.setState({recaptcha: recaptcha})}/>\r\n }\r\n ]\r\n\r\n set_valid = valid => {\r\n if (this.state.stepValid !== valid) {\r\n this.setState({stepValid: valid})\r\n }\r\n }\r\n render_sub_state = () => {\r\n const step = this.MultiStep[this.state.step]\r\n if (step.subs) {\r\n return step.subs[this.state.subStep].render()\r\n }\r\n return step.render()\r\n }\r\n is_last_step = () => {\r\n if (this.state.step === this.MultiStep.length - 1) {\r\n const step = this.MultiStep[this.state.step];\r\n if (step.subs) return this.state.subStep === step.subs.length - 1\r\n return true\r\n }\r\n return false\r\n }\r\n step_forward = () => {\r\n if (this.state.stepValid) {\r\n const step = this.MultiStep[this.state.step];\r\n if (!step.subs || step.subs.length - 1 === this.state.subStep) {\r\n if (this.state.step === this.MultiStep.length - 1) {\r\n this.create_raffle();\r\n } else {\r\n this.setState(state => ({...state, step: state.step + 1, subStep: 0}));\r\n }\r\n } else {\r\n this.setState(state => ({...state, subStep: state.subStep + 1}))\r\n }\r\n }\r\n }\r\n step_backward = () => {\r\n if (this.state.step !== 0 || this.state.subStep !== 0) {\r\n if (this.state.subStep === 0) {\r\n this.setState(state => {\r\n const step = this.MultiStep[state.step - 1]\r\n return {...state, step: this.state.step - 1, subStep: step.subs ? step.subs.length - 1 : 0}\r\n })\r\n } else {\r\n this.setState(state => ({...state, subStep: state.subStep - 1}));\r\n }\r\n }\r\n }\r\n render_buttons = () => {\r\n return <CreateButtons\r\n step_backward={this.step_backward}\r\n step_forward={this.step_forward}\r\n valid={this.state.stepValid}\r\n is_last={this.is_last_step()}\r\n is_first={this.state.step === 0 && this.state.subStep === 0}\r\n />\r\n }\r\n\r\n create_raffle = () => {\r\n postRaffle(\r\n this.state.title,\r\n this.state.charity,\r\n this.context.hasWallet,\r\n this.state.photo,\r\n Math.floor(Number(this.state.goal) * constant.ERG_FACTOR),\r\n Math.floor(Number(this.state.ticketPrice) * constant.ERG_FACTOR),\r\n this.state.share,\r\n this.state.deadline,\r\n this.state.description,\r\n this.state.recaptcha\r\n ).then(({data}) => {\r\n toast('Creation Performed!');\r\n this.setState({\r\n response: {\r\n address: data.address,\r\n deadline: data.deadline,\r\n amount: data.erg,\r\n requestId: data.requestId,\r\n show: true,\r\n status: 'waiting',\r\n start: Date.now(),\r\n }\r\n });\r\n interval_item = setInterval(() => {\r\n getRaffleStatus(this.state.response.requestId).then(\r\n ({data}) => {\r\n this.setState(state => ({\r\n ...state,\r\n response: {\r\n ...state.response,\r\n status: data.status\r\n }\r\n }))\r\n }\r\n )\r\n }, 10000);\r\n }).catch((e) => {\r\n try {\r\n toast(e.response.data.message);\r\n } catch (e) {\r\n }\r\n })\r\n }\r\n closeModal = () => {\r\n this.setState(state => ({...state, showTerms: false, response: {...state.response, show: false}}));\r\n if (interval_item) {\r\n clearInterval(interval_item);\r\n }\r\n }\r\n\r\n render = () => {\r\n const step_image = this.state.step === 0 ? \"first-step-img\" : \"second-step-img\";\r\n const sub_steps = this.MultiStep[this.state.step].subs\r\n return (\r\n <main>\r\n <Title title={'Ergo Raffle - Create Raffle'}/>\r\n {IS_BETA ? (\r\n <section id=\"create-raffle\">\r\n <div className=\"container mt-header text-center pt-5\">\r\n <h3 className={\"mt-5\"}>\r\n This is the Ergo Raffle Beta. No new raffles can be created anymore. The Beta version is\r\n being maintained in order to complete running raffles.\r\n </h3>\r\n <a className=\"btn btn-create-raffle\" href={\"http://ergoraffle.com\"}>\r\n Go to ergoraffle.com\r\n </a>\r\n </div>\r\n </section>\r\n ) : (\r\n <section id=\"create-raffle\">\r\n <div className=\"container mt-header\">\r\n <div className={`create-raffle-img-container text-center ${step_image}`}/>\r\n <MultiStepBar\r\n steps={this.MultiStep.map(item => item.title)}\r\n active={this.state.step}\r\n showStep={true}\r\n title=\"Ready to Create a New Raffle?\"/>\r\n <div className=\"row pt-4\">\r\n {sub_steps ? (\r\n <React.Fragment>\r\n <div className=\"col-md-4 col-xs-12\">\r\n <MultiStepLeft\r\n active={this.state.subStep}\r\n steps={sub_steps.map(item => item.title)}/>\r\n </div>\r\n <div className=\"col-md-8 col-xs-12\">\r\n {this.render_sub_state()}\r\n {this.render_buttons()}\r\n </div>\r\n </React.Fragment>\r\n ) : (\r\n <div className=\"col-xs-8\">\r\n {this.render_sub_state()}\r\n {this.render_buttons()}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </section>\r\n )}\r\n <FinishModal {...this.state.response} stepTitle=\"Create Raffle Steps\" close={this.closeModal}/>\r\n <TermsModal show={this.state.showTerms} close={this.closeModal}/>\r\n </main>\r\n )\r\n }\r\n}\r\n\r\nCreateRaffle.contextType = ThemeContext;\r\n\r\nexport default CreateRaffle;\r\n","import React from \"react\";\r\nimport FaqAccordion from '../../components/FaqAccordion';\r\n\r\nconst DashboardFaq = ({faqs}) => {\r\n return (\r\n <section id=\"questions\" className=\"p-lg-5 mt-header\">\r\n <div className=\"container\">\r\n <h2 className=\"dashboard-title text-center mb-4\">\r\n Do You Have Any Issues?\r\n </h2>\r\n <div className=\"accordion mt-5\" id=\"questions\">\r\n {faqs.map((item, key) => (\r\n <FaqAccordion key={key + '-faq-row'} item={item} elemKey={key} parent={'questions'}/>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n )\r\n};\r\n\r\nexport default DashboardFaq;\r\n","import { PIN_KEY } from \"../statics\";\n\nconst getPinnedRaffles = () => {\n const pinned = localStorage.getItem(PIN_KEY)\n if(pinned){\n return pinned.split(\",\").filter(item => !!item)\n }\n return []\n}\n\nconst setPinnedRaffles = (pinned) => {\n pinned = pinned.filter((item, index) => index < 8)\n localStorage.setItem(PIN_KEY, pinned.join(\",\"))\n}\n\nexport {\n getPinnedRaffles,\n setPinnedRaffles,\n}\n","import React from \"react\";\r\nimport Raffle from \"../../components/Raffle\"\r\nimport { PIN_KEY } from \"../../statics\";\r\nimport { getSingleRaffle } from \"../../service/raffle.service\";\r\nimport loader from \"../../assets/img/loader.svg\";\r\nimport { getPinnedRaffles } from \"../../utils/utils\";\r\n\r\nclass PinnedRaffles extends React.Component {\r\n state = {\r\n loading: false,\r\n raffles: [],\r\n loaded: '',\r\n }\r\n load_data = async () => {\r\n const pinned = getPinnedRaffles();\r\n const pinnedStr = pinned.join(\",\")\r\n if(!this.state.loading && this.state.loaded !== pinnedStr){\r\n this.setState({loading: true});\r\n let raffles = []\r\n for(let raffleId of pinned){\r\n if(raffleId) {\r\n let raffle = await getSingleRaffle(raffleId)\r\n raffles.push(raffle.data)\r\n }\r\n }\r\n this.setState({\r\n raffles: raffles,\r\n loaded: pinned,\r\n loading: false\r\n })\r\n }\r\n }\r\n\r\n componentDidUpdate = () => {\r\n this.load_data().then(() => null)\r\n }\r\n\r\n componentDidMount = () => {\r\n this.load_data().then(() => null)\r\n }\r\n\r\n render = () => {\r\n const pinned = getPinnedRaffles()\r\n if(pinned.length === 0){\r\n return null\r\n }\r\n return (\r\n <section id=\"all-your-donations-container\" className=\"mt-header\">\r\n <div className=\"container\">\r\n <h2 className=\"dashboard-title text-center mb-4\">Pinned Raffles</h2>\r\n <div id=\"all-your-donations\" className=\"row g-4\">\r\n {this.state.loading ? (\r\n <div className={'loading-wrapper'}><img src={loader} alt={'loading spinner'}/></div>\r\n ) : this.state.raffles.map((item, key) => (\r\n <div className=\"col-6 col-lg-3\" key={key + 12000 + ' - elem'}>\r\n <Raffle raffle={item}/>\r\n </div>\r\n )\r\n )}\r\n </div>\r\n </div>\r\n </section>\r\n )\r\n }\r\n}\r\n\r\n\r\nexport default PinnedRaffles;\r\n","import React from \"react\";\nimport Raffle from \"../../components/Raffle\";\nimport loader from \"../../assets/img/loader.svg\";\nimport ThemeContext from \"../../context\";\nimport { PAGE_SIZE } from \"../../statics\";\n\nclass DashboardRaffles extends React.Component {\n state = {\n raffles: [],\n loading: false,\n loadedWallet: '',\n page: 0,\n loadedPage: -1,\n total: 0,\n }\n\n load_data = () => {\n const rafflesValid = this.context.hasWallet === this.state.loadedWallet && this.state.page === this.state.loadedPage;\n if (!this.state.loading && !rafflesValid && !this.props.showEmpty) {\n this.setState({loading: true});\n const walletAddress = this.context.hasWallet;\n const page = this.state.page\n this.props.urlLoader(walletAddress, page * PAGE_SIZE, PAGE_SIZE).then(({data}) => {\n this.setState({\n raffles: data.items,\n total: data.total,\n loading: false,\n loadedWallet: walletAddress,\n loadedPage: page\n });\n })\n }\n }\n\n componentDidUpdate = () => {\n this.load_data();\n }\n\n componentDidMount = () => {\n this.load_data();\n }\n\n render = () => {\n return (\n <section id=\"all-your-donations-container\" className=\"mt-header\">\n <div className=\"container\">\n <h2 className=\"dashboard-title text-center mb-4\">{this.props.title}</h2>\n {this.state.loading ? (\n <div className={'loading-wrapper'}><img src={loader} alt={'loading spinner'}/></div>\n ) : (\n <div id=\"all-your-donations\" className=\"row g-4\">\n {this.state.raffles.length === 0 ? (\n <p className=\"text-center mb-4\">No Raffles Found</p>\n ) : (\n this.state.raffles.map((item, index) => (\n <div className=\"col-6 col-lg-3\" key={index + '4000-elem'}>\n <Raffle raffle={item}/>\n </div>\n )))}\n </div>\n )}\n </div>\n </section>\n )\n }\n}\n\nDashboardRaffles.contextType = ThemeContext;\n\n\nexport default DashboardRaffles\n","import React from \"react\";\nimport { getPinnedRaffles } from \"../../utils/utils\";\n\nconst EmptyPinnedRaffles = () => {\n const pinned = getPinnedRaffles()\n if(pinned.length > 0){\n return null\n }\n return (\n <section id=\"all-your-donations-container\" className=\"mt-header\">\n <div className=\"container\">\n <h2 className=\"dashboard-title text-center mb-4\">Pinned Raffles</h2>\n <div id=\"all-your-donations\" className=\"row g-4\">\n <p className=\"text-center mb-4\">No Raffles Found</p>\n </div>\n </div>\n </section>\n )\n}\n\n\nexport default EmptyPinnedRaffles\n","import React from 'react';\r\nimport Title from '../../components/Title';\r\nimport { getAllYourDonations, getAllYourRafflesYouWin } from '../../service/raffle.service';\r\nimport DashboardFaq from './DashboardFaq';\r\nimport Tabs from '../../components/Tabs';\r\nimport PinnedRaffles from './PinnedRaffles';\r\nimport ThemeContext from '../../context';\r\nimport { DASHBOARD_TABS, SupportFaq } from \"../../statics\";\r\nimport DashboardRaffles from \"./DashboardRaffles\";\r\nimport EmptyPinnedRaffles from './EmptyPinnedRaffles';\r\n\r\nclass Dashboard extends React.Component{\r\n state = {\r\n isDonationEmpty: false,\r\n isWinnerEmpty: false,\r\n isPinnedEmpty: false\r\n }\r\n render = () => {\r\n return(\r\n <React.Fragment>\r\n <Title title={'Ergo Raffle - Dashboard'}/>\r\n <main>\r\n <PinnedRaffles/>\r\n <DashboardRaffles\r\n urlLoader={getAllYourDonations}\r\n title=\"Your Donations\"/>\r\n <DashboardRaffles\r\n urlLoader={getAllYourRafflesYouWin}\r\n title=\"Raffles You Won\"/>\r\n <EmptyPinnedRaffles/>\r\n <div className=\"dashboard-support-choice d-flex justify-content-around mt-4\">\r\n <Tabs\r\n tabs={DASHBOARD_TABS}\r\n activeTab={1}\r\n setActiveTab={tab => this.props.history.push(\"/faq\")}/>\r\n </div>\r\n <DashboardFaq faqs={SupportFaq}/>\r\n </main>\r\n </React.Fragment>\r\n )\r\n }\r\n}\r\n\r\nDashboard.contextType = ThemeContext;\r\n\r\nexport default Dashboard;\r\n","import React, { useContext } from \"react\";\r\nimport { toast } from \"react-toastify\";\r\nimport Day from \"../../components/Day\";\r\nimport { getPinnedRaffles, setPinnedRaffles } from \"../../utils/utils\";\r\n\r\nconst DetailInfo = ({raffle}) => {\r\n const tagRaffle = () => {\r\n let pinned = getPinnedRaffles().reverse();\r\n if(pinned.includes(raffle.id)){\r\n pinned = pinned.filter(item => item !== raffle.id)\r\n toast('Raffle Un Pinned');\r\n }else{\r\n pinned.push(raffle.id)\r\n toast('Raffle Pinned');\r\n }\r\n setPinnedRaffles(pinned.reverse())\r\n }\r\n return (\r\n <React.Fragment>\r\n <h2 className=\"raffle-title\">{raffle.name}</h2>\r\n <p className=\"raffle-full-text my-1\">\r\n {raffle.description}\r\n </p>\r\n <div className=\"raffle-bottom-container d-flex align-items-center\">\r\n <span className=\"icon-deadline deadline\"/>\r\n <p className=\"deadline-date\">Deadline: <Day deadline={raffle.deadline} add_suffix={true}/></p>\r\n <div className=\"raffle-icons flex-grow-1 d-flex justify-content-end\">\r\n <button className=\"tag\" id=\"tag-icon\" onClick={tagRaffle}>\r\n <span className=\"icon-tag tag-icon\"/>\r\n </button>\r\n <button className=\"share\" id=\"share-icon\" data-bs-toggle=\"modal\" data-bs-target=\"#shareModal\">\r\n <span className=\"icon-share share-icon\"/>\r\n </button>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n )\r\n};\r\n\r\nexport default DetailInfo;\r\n","export default __webpack_public_path__ + \"static/media/default.1c629057.jpg\";","import React from \"react\";\r\n\r\nconst GalleryNavigation = ({row}) => {\r\n if (row === 0)\r\n return <button\r\n type=\"button\"\r\n data-bs-target=\"#carouselExampleIndicators\"\r\n data-bs-slide-to={row}\r\n className=\"active\"\r\n aria-current=\"true\"\r\n aria-label={\"Slide \" + row}/>\r\n return <button\r\n type=\"button\"\r\n data-bs-target=\"#carouselExampleIndicators\"\r\n data-bs-slide-to={row}\r\n aria-label={\"Slide \" + row}/>\r\n};\r\n\r\nexport default GalleryNavigation;\r\n","import React, { useContext, useState } from 'react';\r\nimport defaultImg from '../../assets/img/default.jpg';\r\nimport Lightbox from 'lightbox-react';\r\nimport GalleryNavigation from './GalleryNavigation';\r\nimport defaultDark from '../../assets/img/default-dark.png'\r\nimport defaultLight from '../../assets/img/default-light.png'\r\nimport 'lightbox-react/style.css';\r\nimport ThemeContext, { DARK_THEME } from \"../../context\"; // This only needs to be imported once in your app\r\n\r\nconst Gallery = ({raffle}) => {\r\n const context = useContext(ThemeContext);\r\n let picture = context.theme === DARK_THEME ? defaultDark : defaultLight;\r\n const images = raffle.picture && raffle.picture.length > 0 ? raffle.picture : [picture];\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [startIndex, setStartIndex] = useState(0);\r\n\r\n const pictures = (raffle.picture && raffle.picture.length > 0 ? raffle.picture : [picture])\r\n return (\r\n <React.Fragment>\r\n <div id=\"carouselExampleIndicators\" className={\"carousel slide \" + (raffle.status === 'succeed' ? 'raffle-success-image' : raffle.status === 'failed' ? 'raffle-unsuccess-image' : '')} data-bs-ride=\"carousel\">\r\n <div className=\"carousel-indicators\">\r\n {pictures.map((item, key) => (\r\n <span key={item + key + '-8000-arrows'}>\r\n <GalleryNavigation row={key}/>\r\n </span>\r\n ))}\r\n </div>\r\n <div className={\"carousel-inner\"}>\r\n {pictures.map((item, key) => (\r\n <div className={key === 0 ? \"carousel-item active\" : \"carousel-item\"}\r\n key={key + item + '12000-gallery-image-item'}>\r\n <div\r\n onClick={() => {\r\n setIsOpen(true)\r\n }}\r\n className={raffle.status === 'succeed' ? 'raffle-success' : raffle.status === 'failed' ? 'raffle-unsuccess' : ''}>\r\n <div className='raffle-img-container no-stamp'>\r\n <div className={'raffle-image-inner'}>\r\n <img\r\n src={item || defaultImg}\r\n className=\"d-block w-100\"\r\n alt={raffle.name}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n {isOpen ?\r\n <Lightbox\r\n mainSrc={images[startIndex]}\r\n nextSrc={images[(startIndex + 1) % images.length]}\r\n prevSrc={images[(startIndex + images.length - 1) % images.length]}\r\n onCloseRequest={() => setIsOpen(false)}\r\n onMovePrevRequest={() => setStartIndex((startIndex + images.length - 1) % images.length)}\r\n onMoveNextRequest={() => setStartIndex((startIndex + 1) % images.length)}\r\n />\r\n : null}\r\n </React.Fragment>)\r\n}\r\n\r\nexport default Gallery;\r\n","import React from 'react';\r\nimport DetailInfo from \"./DetailInfo\"\r\nimport Gallery from \"./Gallery\"\r\n\r\nconst Header = ({raffle}) => {\r\n return (\r\n <section id=\"raffle-intorduction\" className=\"p-2 p-lg-5 mb-4 mt-header\">\r\n <div className=\"container\">\r\n <div className=\"row\">\r\n <div className=\"col-lg-5\">\r\n <Gallery raffle={raffle}/>\r\n </div>\r\n <div className=\"col-lg-7 raffle-intorduction-right\">\r\n <DetailInfo raffle={raffle}/>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n )\r\n}\r\n\r\nexport default Header;\r\n","import React, { useContext } from \"react\";\r\nimport Erg from \"../../components/Erg\";\r\nimport ThemeContext from \"../../context\";\r\n\r\nconst DestinationInfo = ({raffle}) => {\r\n const context = useContext(ThemeContext);\r\n return (\r\n <React.Fragment>\r\n <div className=\"col-lg-5\">\r\n <div className={\"donation-goal-box bordered-field \" + (raffle.status !== 'active' ? \"\" : \"bordered-field-orange\")}>\r\n <p className=\"total-donation\">\r\n Donation Goal:  \r\n <span className=\"total-donation-number\">\r\n <Erg erg={isNaN(raffle.goal) ? 0 : raffle.goal} shouldDisplay={true}/>\r\n </span>\r\n </p>\r\n </div>\r\n <div className=\"raffle-shares-box d-flex bordered-field\">\r\n <div className=\"charity-share flex-grow-1\">\r\n <p>Charity: <span\r\n className=\"charity-share-text\">{raffle.percent && raffle.percent.charity}%</span>\r\n </p>\r\n </div>\r\n <div className=\"winner-share flex-grow-1\">\r\n <p>Winner: <span className=\"winner-share-text\">{raffle.percent && raffle.percent.winner}%</span>\r\n </p>\r\n </div>\r\n <div className=\"service-share flex-grow-1\">\r\n <p>Service: <span className=\"service-share-text\">{context.info.serviceFee}%</span></p>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"col-lg-7 raffle-keys\">\r\n <div className=\"raffle-id-box bordered-field\">\r\n <p>\r\n Raffle ID:\r\n <span className=\"raffle-id-text\"> {raffle.id}</span>\r\n </p>\r\n </div>\r\n <div className=\"charity-address-box bordered-field\">\r\n <p>\r\n Charity Address: \r\n <span className=\"charity-address-text\">{raffle.charity}</span>\r\n </p>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n )\r\n};\r\n\r\nexport default DestinationInfo;\r\n","import Erg from \"../../components/Erg\";\r\n\r\nconst TotalRaisedMoney = ({ raffle }) => {\r\n return (\r\n <p>\r\n Total Raised Money: \r\n <span className=\"total-raised\">\r\n <Erg erg={(raffle.ticket && raffle.ticket.erg) || 0} shouldDisplay={true} />\r\n </span>\r\n </p>)\r\n}\r\n\r\nexport default TotalRaisedMoney;\r\n","import RaffleDestinationInfo from \"./DestinationInfo\";\r\nimport TotalRaisedMoney from \"./TotalRaiseMoney\";\r\n\r\nconst StatusInfo = ({raffle}) => {\r\n\r\n return (\r\n <section id=\"raffle-details\">\r\n <div className=\"container\">\r\n <div className=\"row g-1 g-md-2 align-items-center justify-content-between\">\r\n <RaffleDestinationInfo raffle={raffle}/>\r\n </div>\r\n {raffle.status === 'succeed' || raffle.status === 'failed' ? (\r\n <div id=\"total-raised\"\r\n className={\"text-center \" + (raffle.status === 'succeed' ? \"raffle-successful-total\" : \"raffle-unsuccessful-total\")}>\r\n <TotalRaisedMoney raffle={raffle}/>\r\n </div>\r\n ) : null}\r\n </div>\r\n </section>\r\n )\r\n}\r\n\r\nexport default StatusInfo;\r\n","import React, { useContext } from \"react\";\r\nimport Erg from \"../../components/Erg\";\r\nimport piggy from '../../assets/img/piggy.png'\r\nimport handHeart from '../../assets/img/hand-heart.png'\r\nimport ticket from '../../assets/img/ticket.png'\r\nimport piggyDark from '../../assets/img/piggy-dark.png'\r\nimport handHeartDark from '../../assets/img/hand-heart-dark.png'\r\nimport ticketDark from '../../assets/img/ticket-dark.png'\r\nimport ThemeContext, { DARK_THEME } from \"../../context\";\r\n\r\nconst IconBox = ({raffle}) => {\r\n const context = useContext(ThemeContext);\r\n return (\r\n <div className=\"row\">\r\n <div className=\"col-4 text-center\">\r\n <span className=\"slider-icon raffle-icon\">\r\n <img src={context.theme === DARK_THEME ? handHeartDark : handHeart} alt={'people donation'}/>\r\n </span>\r\n <p className=\"ico-text mt-2\">\r\n <span className=\"people-number\">{raffle.donatedPeople}</span><br/>\r\n Backers\r\n </p>\r\n </div>\r\n\r\n <div className=\"col-4 text-center\">\r\n <span className=\"slider-icon raffle-icon\">\r\n <img src={context.theme === DARK_THEME ? piggyDark : piggy} alt={'ticket price'}/>\r\n </span>\r\n\r\n <p className=\"ico-text mt-2\">\r\n <span className=\"people-number\">\r\n <Erg shouldDisplay={false} erg={((raffle.ticket && raffle.ticket.erg) || 0)}/>\r\n </span><br/>\r\n ERG Collected\r\n </p>\r\n </div>\r\n <div className=\"col-4 text-center\">\r\n <span className=\"slider-icon raffle-icon\">\r\n <img src={context.theme === DARK_THEME ? ticketDark : ticket} alt={'ticket sold'}/>\r\n </span>\r\n <p className=\"ico-text mt-2\">\r\n <span className=\"people-number\">{(raffle.ticket && raffle.ticket.sold)}</span><br/>\r\n Tickets\r\n </p>\r\n </div>\r\n </div>\r\n )\r\n};\r\n\r\nexport default IconBox;\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAAA4CAYAAAB9lO9TAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGhmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDYgNzkuMTY0NjQ4LCAyMDIxLzAxLzEyLTE1OjUyOjI5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjEtMTEtMDlUMTk6MTU6NDYrMDM6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDIxLTExLTA5VDE5OjI4OjE0KzAzOjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIxLTExLTA5VDE5OjI4OjE0KzAzOjMwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiBwaG90b3Nob3A6SGlzdG9yeT0iMjAyMS0xMS0wOVQxOToyNzoxOCswMzozMCYjeDk7RmlsZSBHcm91cCAxODIucG5nIG9wZW5lZCYjeEE7MjAyMS0xMS0wOVQxOToyODoxNCswMzozMCYjeDk7RmlsZSBHcm91cCAxODItMDEucG5nIHNhdmVkJiN4QTsiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTM1MzY5OTctNzRlOS00NjIwLWFhOGMtMDY2ZjU2YmJmZjk3IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6MTQxMGZkNDQtZjljNi1kMDRmLThlM2YtODExMTQ0YzEzZjE1IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6NDVhZGRhODgtMjZjMS00ZGZkLWFhYTEtMTI1MzExMTNjMTM4Ij4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NWFkZGE4OC0yNmMxLTRkZmQtYWFhMS0xMjUzMTExM2MxMzgiIHN0RXZ0OndoZW49IjIwMjEtMTEtMDlUMTk6MTU6NDYrMDM6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMi4yIChNYWNpbnRvc2gpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo1MzUzNjk5Ny03NGU5LTQ2MjAtYWE4Yy0wNjZmNTZiYmZmOTciIHN0RXZ0OndoZW49IjIwMjEtMTEtMDlUMTk6Mjg6MTQrMDM6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMi4yIChNYWNpbnRvc2gpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjdQvRMAAAObSURBVHic7ZvtddMwFIafcPiPs4GzgdsFCBOQTtDAArBBAwPQdoKWCVoWaMICtCzQhAWIWYDLDyUnihxHsuyY2NZzjk5zZUn2eXOjj3vdnoigMQWGBCrnxf9+gK4QhK6Jl5brs5Ljx6sCkAJPJcdrEgkQrQ2b0G9K3uyWjdD3wLuS4zWJrfUuTB01YfPosizYTD9PB77XUXNooScHHr8xhKmjJoLQNRGErokgdE0EoWvCtuuIUVs0X2K6eTKM0E6FYPfoOeUieuNV/ylw6TlGkxgCdyjdEv2Cy9QxRAl1x8Y7A9tEKEeaAiMMb4as0L/2DDYCHld/AxsSlC4f97RJTaHHQB8VTLomOz9HKM++KP98rSBBeXFs1Kco/c6AAdBHRGxlLCJzyXLu0HckIjerMnFo36QSi8hyhy5XIhKZ7XtGKiuPeMc3lwInlNuVNJk5WT3OyInhu+6jF2RFjYCbQo/WHi7IivyGPYkSV49eE6Mm/kir23uDFhKjvFlnDHzd16noyXABfDLqurYwjg37FovIUNyj1yzZ9uo+6ufTBcy5eYDDOuUb67g27JHnOE0jZlvkGY6bAV+hZ4ad5LT7gPKAOe1YOBPD/u7a0TeV9WTYcU67vnYtr02TSAz70bWjr0enhv3Kc5ym88e1YYhH14Sv0FGVD9EgUsN2/iX7Cp0Y9s+cdhOgtypl33o6BlLDPnHt6Cv02LCnnuM0jZlhv3bt6Cu0eYM8j24bC7b3zUMcs08+Qk/Y3qp9o1sRPPO47RSCKHoEHwDPRl3XgkoR6gAWaXVjKgwqDYAHo+6ObokMm+yJzhX5p2PA3aPXIsda3RI4xT5t9LTPXhGsIyRCnQpjrS5Fvf99v6vDPo/uoY7QE+AH2SP0e+win6O+oAfgi6Vtk0hRU2aq1UWoX/gNu8INRm6rJyIDETlb5b525cT+Fsj/TbR+0yPI81VdkhyNRFSedLRqkxF6mtNpzW9RyVrXB2m70IhK0s4tui1dF0NBHUpOURmFIgjtmZt3sUCdEM0FUicyF0Pz9S9B7So+47e7SNisxik5C0WLiFFr2luMeJBN6C6lqKrmEW3LZ5s60kM+SctJdSPEo2siCF0TQeiaCELXxKH/obPPZpuTouIjneTQHn2JCqs+065YR2HC1FETtqmjZ7lelDLjNfoYbxPaDPQXJdE+DysYr0kkumETeljhjWPa8VqYF2GOrgnTo485pFn1elEr/wCsAPnJlxMqWAAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAAA4CAYAAAB9lO9TAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALjSURBVHgB7ZvhcdQwEIXfMfzn6EB0EKjAVECoINcB6QBVQKCCSwVABblQQaABCA1wRwNJvLGd2LJsy7KlibX7zexkcvbJ43erd9qVb4UmuzwyCLPzDEIUROhIPB84folpqDKIQx4/wYejPNZdB8mjb2sxlfPaWFvwoqGlWEckhqxjKtd4tB9OttEitNAawj1iHZEQoSMhQkdChI6ECB2JoVWHQrFE80WBZ2W4Rk9VSJiV4S2mdfS0MU7qZHl8y2OPto4NbEJXQQMojEODh9CUvWfo1q5Vgv/tGew4j6vyr/AINY9Il9Oecw62F+nTyfL4nMcf2D+hj3BDI+2MJpFtNkGvkX6UlMp1sA3sgp84vJcutC1DIy0U7CKTwGt4otAWe4/xnp0SNj0yzMDaMniKduACWacp8hFmRKE9XTLwQsHPRkdzCt5ZrdG8/y0CYma1t/kvENM+FQKijYttwAMFz9ns21S6NP7v+iL4gCIDKIJOsUiY9/kDjvhuZZnNIdVx3svasa5zloQp9BUc8c1os6R8AZ78dz1R+tGR8BWa0yqjjvdM9hXa9KpfHefpPFZlvMXyMYV+jcCco7nMeQceKEQu1qIu2p8Y5r1nCIQ2LvQdvNCIkNWv0G6oZOAFLQTMFsQJZoRENqfNV/BEI1Cb1CbyP7h586oWqWDrzZPYXvupJAyV0Br2LRuXQWlK7co4Q1oo2HXZwiEBSVzK3vco9r5sA93Aff9PI+2+ddfmbCX4MTosZYeeZxNQ2MUG7mikLTSh0P20wIOtuFaGlVBvUBQrY6gulirXKCrELz3ntFoWZkaTTVzAfwlH02ZTBocHbxSKRBz9SBjX5tEcUK/6Qcsh6zhA8KWhnfSjIyFCR0KEjoQIHYnQP+ikEr5audCXwx5MCZ3R1N/4XcYnMEasIxJD1jF3a3PKeIsu44eEvsA06p2rbIbxlkSjazckdIb5UGD8CwHx6EiYGf2UW5qL3gq7AzQlKyj8yMraAAAAAElFTkSuQmCC\"","import React from 'react'\r\n\r\nconst type_label = txType => {\r\n if (txType === 'ticket') return \"Donation\"\r\n if (txType === 'refund') return \"Refund\"\r\n return \"\"\r\n}\r\nconst TransactionRow = ({transaction, row, status}) => {\r\n const border_class = status === 'winner' || status === 'charity' ? 'bordered-field-orange' : 'gray-field';\r\n return (\r\n <div className=\"transaction-container my-5\">\r\n <div className=\"row g-1 g-md-2 mb-2\">\r\n {row ? (\r\n <div className=\"col-1\">\r\n <div className=\"transaction-id gray-field text-center row-number-box\">\r\n <p>\r\n <span className=\"row-number\">{row}</span>\r\n </p>\r\n </div>\r\n </div>\r\n ) : null}\r\n <div className={row ? \"col-11\" : \"col-12\"}>\r\n <div className={`wallet-address-box ${border_class}`}>\r\n <p>\r\n Wallet Address : <span className=\"tickets-number\">{transaction.address}</span>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"row g-1 g-md-2 justify-content-start justify-content-lg-end\">\r\n <div className={row ? \"col-11 col-lg-8 offset-1 offset-lg-0\" : \"col-12\"}>\r\n <div className={`transaction-id ${border_class}`}>\r\n <p>\r\n {type_label(transaction.type)}\r\n  Transaction ID: <a href={transaction.link} target=\"_blank\" rel=\"noreferrer\">\r\n <span className=\"transaction-id-text\">{transaction.id}</span></a>\r\n </p>\r\n </div>\r\n </div>\r\n {row ? (\r\n <div className=\"col-6 col-lg-3 offset-1 offset-lg-0\">\r\n <div className=\"transaction-id gray-field\">\r\n <p>\r\n Number of Tickets : <span className=\"tickets-number\"> {transaction.tickets} </span>\r\n </p>\r\n </div>\r\n </div>\r\n ) : null}\r\n </div>\r\n </div>\r\n )\r\n};\r\n\r\nexport default TransactionRow;\r\n","import React, { useState } from \"react\";\nimport { getRaffleTransactions } from \"../../service/raffle.service\";\nimport { PAGE_SIZE } from \"../../statics\";\nimport TransactionRow from \"./TransactionRow\";\nimport Pagination from \"../../webparts/Shared/Pagination\";\n\nclass Transactions extends React.Component {\n state = {\n transactions: [],\n winner: {},\n charity: {},\n page: 0,\n loading: false,\n loadedPage: -1,\n total: 0\n }\n\n fetch_data = () => {\n if (!this.state.loading && this.state.loadedPage !== this.state.page) {\n const page = this.state.page\n this.setState({loading: true})\n getRaffleTransactions(\n this.props.id,\n page === 0 ? 0 : page * PAGE_SIZE + (this.props.status === 'failed' ? 0 : 2),\n page === 0 ? PAGE_SIZE + (this.props.status === 'failed' ? 0 : 2) : PAGE_SIZE\n ).then(({data}) => {\n let charity = {...this.state.charity};\n let winner = {...this.state.winner};\n let txs = [];\n data.items.forEach(item => {\n if (item.type === 'winner') {\n winner = item;\n } else if (item.type === 'charity') {\n charity = item;\n } else {\n txs.push(item)\n }\n })\n this.setState({\n transactions: txs,\n loading: false,\n loadedPage: page,\n total: data.total,\n charity: charity,\n winner: winner\n });\n }\n )\n }\n }\n prevPage = () => {\n if (this.state.page > 0) {\n this.setState(state => ({...state, page: state.page - 1}))\n }\n }\n nextPage = () => {\n if (this.state.page < Math.ceil(this.state.total / PAGE_SIZE) - 1) {\n this.setState(state => ({...state, page: state.page + 1}))\n }\n }\n\n componentDidMount = () => {\n this.fetch_data();\n }\n\n componentDidUpdate = () => {\n this.fetch_data();\n }\n\n render = () => {\n const total_page = Math.ceil(this.state.total / (PAGE_SIZE + (this.props.status === 'failed' ? 0 : 2)))\n return (\n <div className=\"container all-transactions mt-5\">\n <h2 className=\"transaction-title text-center mb-4\">Details of Transactions</h2>\n <div className=\"container mt-5\">\n {this.props.status !== 'failed' ? (\n <React.Fragment>\n <h2 className=\"winner-title text-left mb-4\">Winner Payment</h2>\n <TransactionRow transaction={this.state.winner} status=\"winner\"/>\n <h2 className=\"winner-title text-left mb-4\">Charity Payment</h2>\n <TransactionRow transaction={this.state.charity} status=\"charity\"/>\n </React.Fragment>\n ) : null}\n {this.state.transactions.map((item, index) => (\n <TransactionRow\n transaction={item}\n status=\"ticket\"\n row={this.state.page * PAGE_SIZE + index + 1}/>\n ))}\n </div>\n <section id=\"pagination\" className=\"p-5\">\n {total_page > 0 ? (\n <Pagination\n currentPage={this.state.page + 1}\n totalPages={total_page}\n prevPage={() => this.prevPage()}\n nextPage={() => this.nextPage()}/>\n ) : null}\n </section>\n </div>\n )\n }\n}\n\nexport default Transactions\n","import React from \"react\";\r\n\r\nconst TicketCountBadge = ({value, handleChange, ticketCount}) => {\r\n return (\r\n <React.Fragment>\r\n <input\r\n type=\"radio\"\r\n className=\"btn-check\"\r\n name=\"options-outlined\"\r\n id={`erg${ticketCount}`}\r\n onChange={() => handleChange(ticketCount)}\r\n checked={ticketCount === value}\r\n />\r\n <label className=\"btn btn-outline-danger\" htmlFor={`erg${ticketCount}`}>\r\n {ticketCount} Ticket{ticketCount > 1 ? \"s\" : \"\"}\r\n </label>\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default TicketCountBadge;\r\n","import React, { useState } from \"react\";\r\nimport Erg from \"../../../components/Erg\";\r\nimport { DONATION_TICKET_COUNT } from \"../../../statics\";\r\nimport TicketCountBadge from \"./TicketCountBadge\";\r\n\r\nconst DonateTicketCount = ({init, setValid, setValue, ticketPrice}) => {\r\n setValid(!!init);\r\n return (\r\n <React.Fragment>\r\n <h3 className=\"step-title\">How Many Tickets to Buy?</h3>\r\n <form className={'my-5'}>\r\n <div className=\"row mt-3\">\r\n <div className=\"col-lg-12 text-center ticket-options-container\">\r\n {DONATION_TICKET_COUNT.map(item => (\r\n <TicketCountBadge\r\n key={item + '-'}\r\n ticketCount={item}\r\n handleChange={() => setValue(item)}\r\n value={init}/>\r\n ))}\r\n </div>\r\n <div className=\"col-lg-12\">\r\n <p className=\"ticket-price-text text-center mt-2 mb-lg-0\">\r\n Ticket Price: \r\n <span className=\"ticket-price-number\">\r\n <Erg erg={ticketPrice} shouldDisplay={true}/>\r\n </span>\r\n </p>\r\n </div>\r\n\r\n <div className=\"form-floating ticket-count-input\">\r\n <input\r\n onChange={e => setValue(Number(e.target.value + ''))}\r\n type=\"number\"\r\n min={0}\r\n step={1}\r\n className=\"form-control\"\r\n id=\"floatingInput\"\r\n placeholder=\"Ticket Counts\"\r\n value={parseInt(init)}\r\n />\r\n <label htmlFor=\"floatingInput\">Ticket Counts</label>\r\n </div>\r\n <p className=\"text-center mb-4\">Total Donation:\r\n <Erg erg={init * ticketPrice} shouldDisplay={true}/>\r\n </p>\r\n </div>\r\n </form>\r\n </React.Fragment>)\r\n};\r\n\r\nexport default DonateTicketCount;\r\n","import React from \"react\";\nimport RaffleAddress from \"../../CreateRaffle/steps/RaffleAddress\";\nimport RecaptchaAndAgree from \"../../../webparts/Raffle/RecaptchaAndAgree\";\nimport MultiStepBar from \"../../../components/multi-step/MultiStepBar\";\nimport FinishModal from \"../../../webparts/Modal/finish-modal/FinishModal\";\nimport TermsModal from \"../../../webparts/Modal/TermsModal\";\nimport CreateButtons from \"../../CreateRaffle/steps/CreateButtons\";\nimport ThemeContext from \"../../../context\";\nimport DonationTicketCount from './DonateTicketCount';\nimport { donateRaffle, getRaffleDonationStatus, getRaffleStatus } from \"../../../service/raffle.service\";\nimport { toast } from \"react-toastify\";\n\n\nlet interval_item = null;\n\nclass Donation extends React.Component {\n state = {\n step: 0,\n stepValid: true,\n donation: 0,\n recaptcha: '',\n showTerms: false,\n response: {\n address: '',\n amount: 0,\n deadline: 0,\n requestId: 0,\n show: false,\n start: 0,\n status: ''\n }\n }\n MultiStep = [\n {\n title: \"Wallet Address\",\n render: () => <RaffleAddress\n init={this.context.hasWallet}\n label=\"What is Your Wallet Address?\"\n setValue={value => this.setContext({wallet: value})}\n setValid={this.set_valid}/>,\n }, {\n title: \"Donation Amount\",\n render: () => <DonationTicketCount\n init={this.state.donation}\n setValid={this.set_valid}\n ticketPrice={this.props.ticketPrice}\n setValue={value => this.setState({donation: value})}/>\n }, {\n title: \"Agreement\",\n render: () => <RecaptchaAndAgree\n init={this.state.recaptcha}\n setValid={this.set_valid}\n showTerms={() => this.setState({showTerms: true})}\n setValue={recaptcha => this.setState({recaptcha: recaptcha})}/>\n }\n ]\n\n donate = () => {\n donateRaffle(this.props.id, this.context.hasWallet, this.state.donation, this.state.recaptcha).then(\n ({data}) => {\n toast('Donation Performed!');\n this.setState({\n response: {\n address: data.address,\n deadline: data.deadline,\n amount: data.erg,\n requestId: data.requestId,\n show: true,\n status: 'waiting',\n start: Date.now(),\n }\n });\n interval_item = setInterval(() => {\n getRaffleDonationStatus(this.props.id, this.state.response.requestId).then(\n ({data}) => {\n this.setState(state => ({\n ...state,\n response: {\n ...state.response,\n status: data.status\n }\n }))\n }\n )\n }, 10000);\n }\n ).catch((e) => {\n try {\n toast(e && e.response && e.response.data && e.response.data.message);\n } catch (e) {\n }\n })\n }\n\n step_forward = () => {\n if (this.state.stepValid) {\n if (this.state.step === this.MultiStep.length - 1) {\n this.donate();\n } else {\n this.setState(state => ({...state, step: state.step + 1}));\n }\n }\n }\n step_backward = () => {\n if (this.state.step !== 0) {\n this.setState(state => ({...state, step: state.step - 1}))\n }\n }\n set_valid = valid => {\n if (this.state.stepValid !== valid) {\n this.setState({stepValid: valid})\n }\n }\n\n closeModal = () => {\n this.setState(state => ({...state, showTerms: false, response: {...state.response, show: false}}));\n if (interval_item) {\n clearInterval(interval_item);\n }\n }\n\n render = () => {\n const step = this.MultiStep[this.state.step]\n return (\n <main>\n <section id=\"create-raffle\">\n <div className=\"container mt-header\">\n <MultiStepBar\n steps={this.MultiStep.map(item => item.title)}\n active={this.state.step}\n showStep={true}\n title=\"Get Your Tickets!\"/>\n <div className=\"row pt-4\">\n <div className=\"col-8 offset-2\">\n {step.render()}\n <CreateButtons\n step_backward={this.step_backward}\n step_forward={this.step_forward}\n valid={this.state.stepValid}\n is_last={this.state.step === this.MultiStep.length - 1}\n is_first={this.state.step === 0}\n />\n </div>\n </div>\n </div>\n </section>\n <FinishModal {...this.state.response} stepTitle=\"Create Raffle Steps\" close={this.closeModal}/>\n <TermsModal show={this.state.showTerms} close={this.closeModal}/>\n </main>\n )\n }\n}\n\nDonation.contextType = ThemeContext;\n\nexport default Donation;\n","import React from \"react\";\r\nimport Erg from \"../../../components/Erg\";\r\n\r\nconst DonationHeader = ({raffle}) => {\r\n const remainingErg = ((raffle.goal) || 0) - ((raffle.ticket && raffle.ticket.erg) || 0) > 0 ? (raffle.goal - (raffle.ticket && raffle.ticket.erg) || 0) : 0\r\n const collectedErg = ((raffle.ticket && raffle.ticket.erg) || 0);\r\n const progress = () => {\r\n return ((1 - (raffle.goal - ((raffle.ticket && raffle.ticket.erg) || 0)) / raffle.goal)) * 100;\r\n }\r\n return (\r\n <div className=\"ask-for-donation-box text-center mt-5\">\r\n <div className=\"heart-jar\"/>\r\n\r\n <div className=\"progress-container mb-5\">\r\n <div className=\"progress-bar\" style={{width: progress() + '%'}}/>\r\n <div className=\"raised\">\r\n <p className=\"mt-1\">\r\n {collectedErg === 0 ? \"No ERG\" : (\r\n <span className=\"collected-erg\"><Erg erg={collectedErg} shouldDisplay={true}/></span>\r\n )}\r\n  {collectedErg === 0 ? \"Has\" : \"Have\"} Been Collected So Far. \r\n <br className=\"d-lg-none\"/>\r\n <span className=\"total-erg\">\r\n <Erg erg={remainingErg} shouldDisplay={true}/>\r\n </span>\r\n  to Go!\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n};\r\n\r\nexport default DonationHeader;\r\n","import React from \"react\"\r\n\r\nconst RaffleTicket = ({transaction}) => {\r\n return (\r\n <div className=\"row mb-2\">\r\n <div className=\"col-md-1\">\r\n <div className=\"\"/>\r\n </div>\r\n <div className=\"col-lg-8\">\r\n <div className=\"wallet-address-box text-start\">\r\n <a href={transaction.link} target=\"_blank\" className=\"wallet-address-title\">Transaction ID: {transaction.id}</a>\r\n </div>\r\n </div>\r\n <div className=\"d-none d-lg-block col-lg-3\">\r\n <div className=\"transaction-id text-start\">\r\n <p className=\"tickets-number-title\">Number of Tickets: {transaction.tickets}</p>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n};\r\n\r\nexport default RaffleTicket;\r\n","import React from \"react\";\r\nimport RaffleTicket from \"../../webparts/Raffle/RaffleTicket\";\r\nimport { getYourActiveRaffleTickets } from \"../../service/raffle.service\";\r\nimport { PAGE_SIZE } from \"../../statics\";\r\nimport ThemeContext from \"../../context\";\r\nimport loader from \"../../assets/img/loader.svg\";\r\nimport { toast } from \"react-toastify\";\r\n\r\nclass Tickets extends React.Component {\r\n state = {\r\n transactions: [],\r\n loading: false,\r\n page: 0,\r\n loadedPage: -1,\r\n loadedAddress: '',\r\n total: 0,\r\n }\r\n\r\n fetch_data = () => {\r\n const transactionValid = this.state.loadedPage === this.state.page && this.state.loadedAddress === this.context.hasWallet;\r\n if (!this.state.loading && !transactionValid && this.context.hasWallet) {\r\n const page = this.state.page;\r\n const walletAddress = this.context.hasWallet\r\n this.setState({loading: true})\r\n console.log(walletAddress);\r\n getYourActiveRaffleTickets(this.props.id, walletAddress).then(response => {\r\n this.setState({\r\n transactions: response.data.items,\r\n loading: false,\r\n loadedPage: page,\r\n total: response.data.total,\r\n loadedAddress: walletAddress\r\n });\r\n }).catch(exp => {\r\n toast(exp.message);\r\n setTimeout(() => this.setState({loading: false}), 10000)\r\n\r\n })\r\n }\r\n }\r\n\r\n componentDidUpdate = () => {\r\n this.fetch_data();\r\n }\r\n\r\n componentDidMount = () => {\r\n this.fetch_data();\r\n }\r\n\r\n prevPage = () => {\r\n if (this.state.page > 0) {\r\n this.setState(state => ({...state, page: state.page - 1}))\r\n }\r\n }\r\n nextPage = () => {\r\n if (this.state.page < Math.ceil(this.state.total / PAGE_SIZE) - 1) {\r\n this.setState(state => ({...state, page: state.page + 1}))\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <section id=\"your-tickets\" className=\"my-5\">\r\n <div className=\"container\">\r\n <div className=\"your-tickets-box text-center p-3\">\r\n {window.localStorage.getItem('wallet') !== null ? this.state.loading ? (\r\n <div className={'loading-wrapper'}><img src={loader} alt={'loading spinner'}/></div>\r\n ) : (\r\n <React.Fragment>\r\n <h3 className=\"your-tickets-title mt-3\">\r\n {this.state.transactions.length === 0 ? \"No Tickets Yet\" : \"Your Tickets\"}\r\n </h3>\r\n {this.state.transactions.map((item, key) => <RaffleTicket\r\n transaction={item}\r\n key={item.id + key + '-transaction-raffle'}/>)}\r\n </React.Fragment>\r\n ) : null}\r\n </div>\r\n </div>\r\n </section>\r\n )\r\n }\r\n}\r\nTickets.contextType = ThemeContext;\r\n\r\nexport default Tickets;\r\n","import React from 'react';\r\nimport Title from '../../components/Title';\r\nimport { getSingleRaffle } from '../../service/raffle.service';\r\nimport Header from './Header';\r\nimport StatusInfo from './StatusInfo';\r\nimport IconBox from \"./IconBox\";\r\nimport Transactions from \"./Transactions\";\r\nimport Donation from \"./donate/Donation\";\r\nimport DonationHeader from \"./donate/DonationHeader\";\r\nimport Tickets from \"./Tickets\";\r\nimport ThemeContext from \"../../context\";\r\n\r\nclass Raffle extends React.Component {\r\n state = {\r\n raffle: {}\r\n }\r\n\r\n componentDidMount = () => {\r\n getSingleRaffle(this.props.match.params.id).then(\r\n ({data}) => {\r\n this.setState({raffle: data});\r\n }\r\n )\r\n }\r\n\r\n render = () => {\r\n return (\r\n <React.Fragment>\r\n {this.state.raffle ? <Title title={'Ergo Raffle - ' + this.state.raffle.name}/> : null}\r\n <main>\r\n <Header raffle={this.state.raffle}/>\r\n <StatusInfo raffle={this.state.raffle}/>\r\n <section id=\"raffle-icons\" className=\"mt-5\">\r\n <div className=\"container\">\r\n <IconBox raffle={this.state.raffle}/>\r\n </div>\r\n </section>\r\n {this.state.raffle && this.state.raffle.id ? (\r\n <React.Fragment>\r\n {this.state.raffle.status === 'active' ? (\r\n <React.Fragment>\r\n <section id=\"ask-for-donation\" className=\"mt-5\">\r\n <div className=\"container\">\r\n <DonationHeader raffle={this.state.raffle}/>\r\n </div>\r\n </section>\r\n <Donation ticketPrice={this.state.raffle.ticket.price} id={this.state.raffle.id}/>\r\n {this.context.hasWallet ? <Tickets id={this.state.raffle.id}/> : null}\r\n </React.Fragment>\r\n ) : (\r\n <React.Fragment>\r\n <Transactions status={this.state.raffle.status} id={this.state.raffle.id}/>\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n ) : null}\r\n {/*<ShareModalPortal/>*/}\r\n </main>\r\n </React.Fragment>\r\n )\r\n }\r\n}\r\n\r\nRaffle.contextType = ThemeContext;\r\n\r\nexport default Raffle;\r\n","import React from \"react\";\nimport MultiStepBar from \"../components/multi-step/MultiStepBar\";\nimport MultiStepLeft from \"../components/multi-step/MultiStepLeft\";\n\nconst steps = [\n \"Raffle's Specifications\",\n \"Donation Goal\",\n \"Agreement\",\n]\nconst Test = () => {\n return (\n <div className=\"container mt-header\">\n <section>\n <br/>\n <br/>\n <br/>\n <br/>\n <br/>\n <br/>\n <MultiStepBar title=\"Ready to Create a New Raffle?\" steps={steps} active={0} showStep={true}/>\n <MultiStepLeft steps={steps} active={0}/>\n </section>\n </div>\n )\n}\n\nexport default Test\n","import { Route, Switch } from 'react-router-dom';\r\nimport Home from '../pages/Home/Home.js';\r\nimport FaqPage from '../pages/Faq/FaqPage.js';\r\nimport About from '../pages/About/About.js';\r\nimport Raffles from '../pages/Raffles.js';\r\nimport CreateRaffle from '../pages/CreateRaffle/CreateRaffle.js';\r\nimport Dashboard from '../pages/Dashboard/Dashboard.js';\r\nimport Raffle from '../pages/raffle/Raffle.js';\r\nimport Test from \"../pages/Test\";\r\n\r\nconst Routes = () => {\r\n return (<>\r\n <Switch>\r\n <Route component={Test} path={'/test'} exact/>\r\n <Route component={Home} path={'/'} exact/>\r\n <Route component={FaqPage} path={'/faq'}/>\r\n <Route component={About} path={'/about'}/>\r\n <Route component={Dashboard} path={'/Dashboard'}/>\r\n <Route component={Raffles} path={'/raffle/list'}/>\r\n <Route component={CreateRaffle} path={'/raffle/create'}/>\r\n <Route component={Raffle} path={'/raffle/show/:id'}/>\r\n </Switch>\r\n </>)\r\n}\r\n\r\nexport default Routes;\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport ThemeContext from '../../context';\r\n\r\nconst WalletModal = ({walletProp}) => {\r\n const context = useContext(ThemeContext);\r\n const [wallet, setWallet] = useState(walletProp);\r\n const setWalletAddress = () => {\r\n if (wallet.length > 5) {\r\n window.localStorage.setItem('wallet', window.btoa(wallet));\r\n } else {\r\n window.localStorage.removeItem('wallet');\r\n }\r\n context.setHasWallet(wallet);\r\n toast('wallet submitted');\r\n }\r\n const clearWalletAddress = () => {\r\n window.localStorage.removeItem('wallet');\r\n context.setHasWallet('');\r\n setWallet('')\r\n toast('wallet removed');\r\n }\r\n const handleChange = (e) => {\r\n setWallet(e.target.value);\r\n }\r\n useEffect(() => {\r\n setWallet(context.hasWallet);\r\n }, [context.hasWallet])\r\n return (\r\n <div\r\n className=\"modal fade\"\r\n id=\"walletModal\"\r\n tabIndex=\"-1\"\r\n aria-labelledby=\"walletModalLabel\"\r\n aria-hidden=\"true\">\r\n <div className=\"modal-dialog modal-dialog-centered\">\r\n <div className=\"modal-content\">\r\n <div className=\"modal-header\">\r\n <label htmlFor=\"Wallet-address\" className=\"col-form-label\">\r\n Set your Ergo address here. In case of refunding or winning a Raffle, the funds will be sent\r\n to this address.\r\n </label>\r\n <button type=\"button\" className=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"/>\r\n </div>\r\n <div className=\"modal-body\">\r\n <form>\r\n <div className=\"mb-3\">\r\n <input\r\n value={wallet}\r\n type=\"text\"\r\n className=\"form-control\"\r\n id=\"Wallet-address\"\r\n placeholder=\"Wallet address\"\r\n onChange={handleChange}\r\n />\r\n </div>\r\n </form>\r\n </div>\r\n <div className=\"modal-footer mt-3 d-flex justify-content-center\">\r\n <button type=\"button\" className=\"btn clear-modal\" onClick={() => clearWalletAddress()}\r\n data-bs-dismiss=\"modal\">Clear\r\n </button>\r\n <button type=\"button\" className=\"btn set-modal\" data-bs-dismiss=\"modal\"\r\n onClick={() => setWalletAddress()}>Set\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>)\r\n};\r\n\r\nexport default WalletModal;\r\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import { memo, useContext } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport staticText from \"../../statics\";\r\nimport logo from '../../assets/img/logo.png'\r\nimport logoDark from '../../assets/img/logo-dark.png'\r\nimport ThemeContext, { DARK_THEME } from \"../../context\";\r\n\r\nconst Footer = memo(() => {\r\n const context = useContext(ThemeContext);\r\n return (<footer>\r\n <div className=\"container\">\r\n <div className=\"footer-body\">\r\n <div className=\"orange-circle orange-circle6\"/>\r\n <div className=\"orange-circle orange-circle7\"/>\r\n <div className=\"footer-body-branding p-lg-5 p-3 mb-4\">\r\n <Link className=\"navbar-brand mt-2 me-0 mt-lg-0\" to={\"/\"}>\r\n <span><img src={context.theme === DARK_THEME ? logoDark : logo} alt={'footer logo'}/></span>\r\n </Link>\r\n <div className=\"footer-links mt-3 pt-3\">\r\n {staticText.privateLink.map((item, key) => (\r\n <a\r\n key={key + '-footer-elem'}\r\n className=\"nav-link nav-link-offcanvas\"\r\n href={item.link}>\r\n {item.title}\r\n </a>))\r\n }\r\n </div>\r\n <div className=\"footer-links footer-sublinks mt-4\">\r\n {staticText.publicLink.map((item, index) => (\r\n <a\r\n key={index}\r\n target=\"_blank\"\r\n className=\"nav-link nav-sublink\"\r\n href={item.link}>\r\n {item.title}\r\n </a>\r\n ))}\r\n </div>\r\n </div>\r\n <div className=\"footer-copyright text-center mb-4\">\r\n <h6>Copyright © ErgoRaffle 2021</h6>\r\n </div>\r\n </div>\r\n </div>\r\n </footer>)\r\n})\r\n\r\nexport default Footer;\r\n","export default __webpack_public_path__ + \"static/media/logo-beta.456dc056.png\";","export default __webpack_public_path__ + \"static/media/logo-dart-beta.010256f9.png\";","import React, { useContext } from 'react'\nimport ThemeContext, { DARK_THEME } from \"../../context\";\nimport logo from \"../../assets/img/logo.png\";\nimport { IS_BETA } from \"../../statics\";\nimport logoBeta from \"../../assets/img/logo-beta.png\";\nimport logoBetaDark from \"../../assets/img/logo-dart-beta.png\";\nimport logoDark from \"../../assets/img/logo-dark.png\";\n\nconst Logo = ({theme}) => {\n let siteLogo = logo;\n if (IS_BETA) {\n siteLogo = logoBeta;\n }\n if (theme === DARK_THEME) {\n if (IS_BETA) {\n siteLogo = logoBetaDark;\n } else {\n siteLogo = logoDark;\n }\n }\n console.log(theme);\n return (\n <img width={194} src={siteLogo} alt={'ergoraffle'}/>\n )\n}\n\n\nexport default Logo;\n","import { useContext } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ThemeContext from \"../../context\";\r\nimport Logo from \"./Logo\";\r\n\r\nconst MobileHeader = ({mobileHeaderRef}) => {\r\n const context = useContext(ThemeContext);\r\n return (\r\n <div ref={mobileHeaderRef} className=\"fixed-top\">\r\n <section id=\"mobile-nav\" className=\"d-flex d-lg-none px-4 py-2 align-items-center justify-content-between\">\r\n <div className=\"mobile-navbar-buttons\">\r\n <a\r\n href=\"#sidebar\"\r\n className=\"mobile-nav-toggler\"\r\n data-bs-toggle=\"offcanvas\"\r\n role=\"button\"\r\n aria-controls=\"sidebar\">\r\n <span className=\"navbar-toggler-icon icon-navbarToggle\"/>\r\n </a>\r\n <button\r\n type=\"button\"\r\n className=\"btn set-wallet set-wallet-mobile\"\r\n data-bs-toggle=\"modal\"\r\n data-bs-target=\"#walletModal\"\r\n >\r\n {\r\n !context.hasWallet ?\r\n 'Set Wallet'\r\n :\r\n <span className={'smaller-wallet-set'}>Wallet : {context.hasWallet}</span>\r\n }\r\n </button>\r\n </div>\r\n <Link className=\"mt-3 mt-lg-0\" to={\"/\"}>\r\n <span className=\"site-logo\"><Logo theme={context.theme}/></span>\r\n </Link>\r\n </section>\r\n </div>)\r\n}\r\n\r\nexport default MobileHeader;\r\n","import MobileHeader from \"./MobileHeader\";\r\n\r\nconst HeaderLayout = ({ children, desktopHeaderRef, headerRef, wrapperRef, mobileHeaderRef }) => {\r\n return (<header>\r\n <div ref={desktopHeaderRef} className=\"fixed-top\">\r\n <nav\r\n id=\"desktop-nav\"\r\n className=\"\r\n d-none d-lg-flex\r\n navbar navbar-expand-lg navbar-light\r\n container\r\n \"\r\n >\r\n <div className=\"container-fluid\">\r\n {children}\r\n </div>\r\n </nav>\r\n </div>\r\n <MobileHeader headerRef={headerRef} wrapperRef={wrapperRef} mobileHeaderRef={mobileHeaderRef} />\r\n </header>\r\n\r\n )\r\n}\r\n\r\nexport default HeaderLayout;","import { useRef, forwardRef, useImperativeHandle, useEffect, useContext, useState } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ThemeContext, { DARK_THEME, LIGHT_THEME } from \"../../context\";\r\nimport staticText from \"../../statics\";\r\nimport HeaderLayout from \"./HeaderLayout\";\r\nimport logo from '../../assets/img/logo.png';\r\nimport logoDark from '../../assets/img/logo-dark.png';\r\nimport Logo from \"./Logo\";\r\n\r\nconst Header = forwardRef((props, headerRef) => {\r\n const [wall, setWall] = useState(props.walletPassed);\r\n const context = useContext(ThemeContext);\r\n const desktopHeaderRef = useRef();\r\n const mobileHeaderRef = useRef();\r\n const wrapperRef = useRef();\r\n const bodyRef = useRef();\r\n bodyRef.current = document.body;\r\n const setContextTheme = (e) => {\r\n e.preventDefault();\r\n context.setTheme(context.theme === LIGHT_THEME ? DARK_THEME : LIGHT_THEME)\r\n }\r\n useImperativeHandle(headerRef, () => ({\r\n handleScroll(e) {\r\n let header = null;\r\n const top = e.target.scrollTop;\r\n header = desktopHeaderRef.current;\r\n if (top > 50) {\r\n header.classList.add(\"scrolled-header\");\r\n } else {\r\n header.classList.remove(\"scrolled-header\")\r\n }\r\n header = mobileHeaderRef.current;\r\n if (top > 50) {\r\n header.classList.add(\"scrolled-header\");\r\n } else {\r\n header.classList.remove(\"scrolled-header\")\r\n }\r\n }\r\n }))\r\n useEffect(() => {\r\n if (context.theme === DARK_THEME) {\r\n bodyRef.current.classList.add('night-mode');\r\n window.localStorage.setItem('theme', DARK_THEME);\r\n } else {\r\n bodyRef.current.classList.remove('night-mode');\r\n window.localStorage.setItem('theme', LIGHT_THEME);\r\n }\r\n }, [context.theme]);\r\n useEffect(() => {\r\n setWall(props.walletPassed);\r\n }, [props.walletPassed])\r\n return (<HeaderLayout headerRef={headerRef} wrapperRef={wrapperRef}\r\n mobileHeaderRef={mobileHeaderRef} desktopHeaderRef={desktopHeaderRef}>\r\n <Link className=\"navbar-brand mt-2 mt-lg-0\" to={\"/\"}>\r\n <span className=\"site-logo\"><Logo theme={context.theme}/></span>\r\n </Link>\r\n <div className=\"collapse navbar-collapse\" id=\"navbarToggler\">\r\n <ul className=\"navbar-nav mb-2 mb-lg-0 nav-links\">\r\n {staticText.navigations.map((item, key) => (\r\n <li key={key + '-nav-items'} className=\"nav-item\">\r\n <Link className=\"nav-link\" to={item.link}>{item.title}</Link>\r\n </li>\r\n ))}\r\n {wall ? (\r\n <li className=\"nav-item\">\r\n <Link className=\"nav-link\" to={\"/dashboard\"}>Dashboard</Link>\r\n </li>\r\n ) : null}\r\n </ul>\r\n <div className=\"d-flex align-items-center nav-buttons\">\r\n <a\r\n href={\"/\"}\r\n className=\"night-mode-link\"\r\n id=\"night-mode\"\r\n role=\"button\"\r\n >\r\n <span onClick={setContextTheme}\r\n className=\"icon-moon night-mode-icon\"></span>\r\n </a>\r\n <button\r\n type=\"button\"\r\n className=\"btn set-wallet\"\r\n data-bs-toggle=\"modal\"\r\n data-bs-target=\"#walletModal\"\r\n >\r\n {\r\n !wall\r\n ?\r\n 'Set Wallet' :\r\n <span className={'smaller-wallet-set'}>Wallet : {wall}</span>\r\n }\r\n </button>\r\n </div>\r\n </div>\r\n </HeaderLayout>)\r\n});\r\n\r\nexport default Header;\r\n","import { memo } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ThemeContext from \"../../context\";\r\nimport staticText from \"../../statics\";\r\n\r\nconst Navigation = memo(() => {\r\n return (<ThemeContext.Consumer>\r\n {({ hasWallet }) => (<ul className=\"navbar-nav nav-links ps-3 pt-3\">\r\n {staticText.navigations.map((item, key) => (<li key={key + '-nav-items'} className=\"nav-item\">\r\n <Link className=\"nav-link\" to={item.link}>{item.title}</Link>\r\n </li>))}\r\n {\r\n hasWallet ?\r\n <li className=\"nav-item\">\r\n <Link className=\"nav-link\" to={\"/dashboard\"}>Dashboard</Link>\r\n </li> :\r\n null\r\n }\r\n </ul>)}\r\n </ThemeContext.Consumer>)\r\n});\r\n\r\nexport default Navigation;","import React, { useContext } from \"react\";\r\nimport Navigation from './Navigation';\r\nimport ThemeContext, { DARK_THEME, LIGHT_THEME } from \"../../context\";\r\n\r\nconst SideBar = () => {\r\n const context = useContext(ThemeContext);\r\n const toggleMode = (e) => {\r\n e.preventDefault();\r\n toggleNight();\r\n }\r\n const toggleNight = function () {\r\n if(context.theme === DARK_THEME){\r\n context.setTheme(LIGHT_THEME)\r\n }else{\r\n context.setTheme(DARK_THEME)\r\n }\r\n };\r\n return (\r\n <section id=\"offcanvas-sidebar\">\r\n <div className=\"offcanvas offcanvas-start\" tabIndex=\"-1\" id=\"sidebar\" aria-labelledby=\"sidebar-label\">\r\n <Navigation/>\r\n <div className=\"night-mode-btn-offcanvas text-center mt-5\">\r\n <button\r\n className=\"night-mode-link night-mode-link-offcanvas\"\r\n rel=\"noreferrer\"\r\n id=\"night-mode\"\r\n onClick={toggleMode}>\r\n <span className=\"icon-moon\"/>\r\n Night Mode\r\n </button>\r\n </div>\r\n </div>\r\n </section>)\r\n};\r\n\r\nexport default SideBar;\r\n","import { useEffect, useState, useRef, useCallback, useContext } from 'react';\r\nimport { BrowserRouter as Router, useLocation } from 'react-router-dom';\r\nimport { ToastContainer } from 'react-toastify';\r\nimport { ErrorBoundary } from 'react-error-boundary'\r\nimport ThemeContext, { DARK_THEME, LIGHT_THEME } from '../context';\r\nimport { getInfo } from '../service/info.service';\r\nimport WalletModal from '../webparts/Modal/WalletModal';\r\nimport Footer from '../webparts/Shared/Footer';\r\nimport Header from '../webparts/Shared/Header';\r\nimport SideBar from '../webparts/Shared/SideBar';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\nimport { toast } from 'react-toastify';\r\n\r\nconst ScrollTop = () => {\r\n const context = useContext(ThemeContext);\r\n const {pathname} = useLocation();\r\n const scrollToTop = useCallback(() => {\r\n context.wrapperRef.current.scrollTo(0, 0);\r\n }, [context.wrapperRef])\r\n useEffect(() => {\r\n scrollToTop()\r\n }, [pathname, scrollToTop]);\r\n return (null);\r\n}\r\n\r\nconst Layout = ({children}) => {\r\n const [hasWallet, setHasWallet] = useState((window.localStorage.getItem('wallet') !== null &&\r\n typeof window.localStorage.getItem('wallet') !== 'undefined') ?\r\n window.atob(window.localStorage.getItem('wallet')) :\r\n '');\r\n const wrapperRef = useRef();\r\n const [theme, setTheme] = useState(window.localStorage.getItem('theme') !== null ?\r\n window.localStorage.getItem('theme') === DARK_THEME ?\r\n DARK_THEME :\r\n LIGHT_THEME :\r\n LIGHT_THEME);\r\n const [info, setInfo] = useState({\r\n \"pubKey\": \"not-set\",\r\n \"required\": false,\r\n \"height\": 83670,\r\n supportUrl: '',\r\n \"serviceFee\": 5\r\n });\r\n const [pinnedRaffles, setPinnedRaffles] = useState([]);\r\n const debounce = require('lodash.debounce');\r\n const headerRef = useRef();\r\n const notify = (msg) => toast(msg);\r\n const fetchInfo = useCallback(() => {\r\n getInfo().then(\r\n ({data}) => {\r\n setInfo(data);\r\n }\r\n )\r\n }, [])\r\n const ErrorFallback = () => {\r\n notify('Something Goes Wrong! Please Try Again Later');\r\n }\r\n\r\n useEffect(() => {\r\n fetchInfo();\r\n }, [fetchInfo])\r\n return (\r\n <ThemeContext.Provider value={{\r\n theme,\r\n setTheme,\r\n wrapperRef,\r\n info,\r\n hasWallet,\r\n setHasWallet,\r\n pinnedRaffles,\r\n setPinnedRaffles\r\n }}>\r\n <div id=\"main-content-all-wrapper\" ref={wrapperRef}\r\n onScroll={debounce((e) => headerRef.current.handleScroll(e), 100)}>\r\n <Router>\r\n <SideBar/>\r\n <Header ref={headerRef} walletPassed={hasWallet}/>\r\n <ErrorBoundary FallbackComponent={ErrorFallback}>\r\n {children}\r\n </ErrorBoundary>\r\n <Footer/>\r\n <ScrollTop/>\r\n </Router>\r\n </div>\r\n <WalletModal walletProp={hasWallet}/>\r\n <div id=\"finish-modal\"/>\r\n <div id=\"share-modal\"/>\r\n <ToastContainer/>\r\n </ThemeContext.Provider>\r\n )\r\n};\r\n\r\nexport default Layout;\r\n","import axios from 'axios';\r\nimport { config } from './config';\r\n\r\nexport const getInfo = () => {\r\n return axios.get(config.baseUrl + `/info`);\r\n}\r\n","import Routes from \"./Routes\";\nimport Layout from \"./Layout\";\nimport \"bootstrap/dist/css/bootstrap.min.css\";\nimport \"bootstrap/dist/js/bootstrap.min.js\";\nimport \"./App.css\";\nimport \"./assets/style/style.css\";\nimport { memo } from \"react\";\nimport { HelmetProvider } from \"react-helmet-async\";\n\nconst App = memo(() => {\n return (\n <HelmetProvider>\n <Layout>\n <div id=\"main-content\">\n <Routes/>\n </div>\n </Layout>\n </HelmetProvider>\n );\n});\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n <React.StrictMode>\n <App />\n </React.StrictMode>,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}