{"version":3,"sources":["components/icon/DuckIcon.js","components/layout/NavBar.js","components/layout/Layout.js","components/store/listOfWords.js","components/store/ContextSearch.js","components/lyrics/HitPreview.js","components/layout/Spinner.js","components/lyrics/HitsList.js","components/searchForm/SearchForm.js","components/searchForm/Search.js","components/lyrics/LyricPage.js","components/about/About.js","components/artists/ArtistPage.js","App.js","reportWebVitals.js","index.js","components/layout/Layout.module.css","components/lyrics/HitPreview.module.css","components/lyrics/HitsList.module.css","components/artists/ArtistPage.module.css","components/searchForm/SearchForm.module.css","components/about/About.module.css","components/lyrics/LyricPage.module.css"],"names":["DuckIcon","className","version","viewBox","xmlns","fill","fillRule","d","strokeWidth","transform","stroke","strokeLinecap","strokeLinejoin","NavBar","to","replace","Layout","props","styles","MainLayout","Footer","listofWords","randomQuery","Math","floor","random","ContextSearch","react","createContext","songs","trackList","heading","search","loadMore","ContextSearchProvider","useState","searchResponse","setSearchResponse","pageNumber","setPageNumber","currentQuery","setCurrentQuery","isLoading","setIsLoading","isLastPage","setIsLastPage","getSongsResponse","query","pageNum","fetch","then","res","json","prev","response","hits","length","catch","err","console","log","useEffect","Provider","value","children","HitPreview","hitPreviewTitle","hit","title","hitPreviewArtist","primary_artist","name","id","Spinner","LyricsList","contextSearchResult","useContext","hitsList","setHitsList","isLoadingMore","setIsLoadingMore","observerLast","useRef","lastSongElementRef","useCallback","node","current","disconnect","IntersectionObserver","entries","forEach","entry","intersectionRatio","root","rootMargin","threshold","observe","HitListContainer","HitList","map","index","ref","result","LoaderContainer","SearchForm","songTitle","setSongTitle","contextSearch","onSubmit","event","preventDefault","songTitleSubmited","type","onChange","target","autoFocus","Search","formBox","LyricPage","songData","setSongData","useParams","lyrics","setLyrics","duckTranslation","setDuckTranslation","englishTranslation","setEnglishTranslation","albumTrackList","setAlbumTrackList","acessToken","WebPageurl","url","albumUrl","album","api_path","getLyrics","method","song","youtubeLink","media","filter","provider","youtuberLinkEmbed","LyricPageInfoBox","src","song_art_image_thumbnail_url","alt","release_date_for_display","YoutubeContainer","AlbumContainer","AlbumSubText","AlbumTitle","AlbumList","tracks","AlbumItem","LyricsBox","onClick","translation","About","href","ArtistPage","artistData","setArtistData","artist","ImgWrapper","image_url","about","description","plain","App","exact","path","element","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","document","getElementById","module","exports"],"mappings":"uNA2BeA,MAzBf,WACE,OACE,qBAAKC,UAAU,gBAAf,SAA+B,qBAAKC,QAAQ,MAAMC,QAAQ,oBAAoBC,MAAM,6BAArD,SAC/B,oBAAGC,KAAK,OAAOC,SAAS,UAAxB,UACA,sBAAMC,EAAE,mUAAmUF,KAAK,UAAUG,YAAY,WACtW,sBAAMD,EAAE,8NAA8NF,KAAK,YAC3O,sBAAME,EAAE,8NAA8NF,KAAK,YAC3O,sBAAME,EAAE,0JAA0JF,KAAK,SACvK,sBAAME,EAAE,0JAA0JF,KAAK,SACvK,oBAAGI,UAAU,0CAAb,UACA,sBAAMF,EAAE,gtBAAgtBF,KAAK,UAAUG,YAAY,WACnvB,sBAAMD,EAAE,2KAA2KF,KAAK,OAAOG,YAAY,WAC3M,sBAAMD,EAAE,2KAA2KF,KAAK,OAAOG,YAAY,WAC3M,sBAAMD,EAAE,sDAAsDF,KAAK,OAAOK,OAAO,OAAOC,cAAc,QAAQC,eAAe,QAAQJ,YAAY,cAEjJ,sBAAMD,EAAE,yKAAyKF,KAAK,OAAOG,YAAY,WACzM,sBAAMD,EAAE,oKAAoKF,KAAK,UAAUK,OAAO,UAAUC,cAAc,QAAQH,YAAY,mBCqBnOK,MAnCf,WACE,OACE,qBAAKZ,UAAU,gBAAf,SACE,sBAAKA,UAAU,eAAf,UACE,eAAC,IAAD,CAAMa,GAAG,IAAIC,SAAO,EAACd,UAAU,cAA/B,UACE,0CACA,qBACEG,MAAM,6BACNH,UAAU,aACVI,KAAK,OACLF,QAAQ,YACRO,OAAO,eALT,SAOE,sBACEC,cAAc,QACdC,eAAe,QACfJ,YAAY,IACZD,EAAE,qDAIR,cAAC,IAAD,CAAMO,GAAG,IAAIC,SAAO,EAACd,UAAU,aAA/B,SACE,sBAAKA,UAAU,iBAAf,UACE,cAAC,EAAD,CAAUA,UAAU,oBADtB,kBAKF,cAAC,IAAD,CAAMa,GAAG,SAASb,UAAU,aAA5B,yB,OCfOe,MAZf,SAAgBC,GACd,OACE,sBAAKhB,UAAWiB,IAAOF,OAAvB,UACE,cAAC,EAAD,IACA,qBAAKf,UAAWiB,IAAOC,WAAvB,SACA,cAAC,IAAD,MAEA,qBAAKlB,UAAWiB,IAAOE,a,eCXhBC,EAAc,CACzB,UACA,UACA,OACA,WACA,QACA,QACA,SACA,UACA,WACA,SACA,QACA,WACA,cACA,WACA,cACA,WACA,UACA,gBACA,OACA,YACA,OACA,QACA,WACA,QACA,MACA,QACA,OACA,SACA,UACA,cACA,SACA,UACA,SACA,MACA,UACA,SACA,WACA,KACA,QACA,QACA,MACA,SACA,SACA,UACA,SACA,YACA,OACA,YACA,UACA,QACA,QACA,QACA,YACA,OACA,QACA,OACA,OACA,aACA,MACA,QACA,MACA,OACA,UACA,OACA,MACA,OACA,OACA,MACA,SACA,SACA,UACA,OACA,WACA,QACA,YACA,QACA,SACA,aACA,UACA,UACA,SACA,UACA,OACA,MACA,SACA,UACA,SACA,QACA,MACA,OACA,SACA,QACA,QACA,QACA,YACA,SACA,QACA,OACA,SACA,QACA,WACA,SACA,QACA,SACA,OACA,OACA,QACA,QACA,WACA,YACA,UACA,WACA,eACA,SACA,SACA,WACA,UACA,UACA,YACA,iBACA,eACA,SACA,UACA,QACA,QACA,QACA,QACA,UACA,QACA,QACA,UACA,YACA,QACA,UACA,SACA,UACA,WACA,QACA,OACA,OACA,UACA,QACA,aACA,YACA,UACA,WACA,WACA,YACA,WACA,gBACA,UACA,aACA,gBACA,YACA,cACA,eACA,WACA,eACA,gBACA,UACA,aACA,WACA,aACA,aACA,iBACA,YACA,eACA,aACA,UACA,WACA,cACA,UACA,UACA,YACA,eACA,UACA,SACA,YACA,UACA,YACA,UACA,SACA,aACA,aACA,SACA,QACA,UACA,WACA,SACA,YACA,WACA,aACA,cACA,gBACA,OACA,aACA,SACA,YACA,YACA,SACA,aACA,QACA,SACA,SACA,WACA,cACA,SACA,UACA,SACA,WACA,SACA,OACA,YACA,UACA,UACA,cACA,SACA,WACA,SACA,YACA,UACA,aACA,cACA,SACA,SACA,WACA,YACA,YACA,UACA,OACA,UACA,SACA,UACA,YACA,cACA,WACA,SACA,YACA,cACA,aACA,YACA,SACA,MACA,QACA,SACA,UACA,QACA,WACA,WACA,cACA,aACA,UACA,aACA,YACA,gBACA,SACA,WACA,WACA,QACA,cACA,gBACA,UACA,QACA,WACA,YACA,WACA,UACA,SACA,QACA,MACA,QACA,QACA,UACA,QACA,UACA,QACA,QACA,QACA,UACA,WACA,SACA,OACA,OACA,OACA,QACA,UACA,UACA,YACA,OACA,UACA,OACA,SACA,SACA,OACA,OACA,OACA,QACA,SACA,QACA,QACA,OACA,SACA,MACA,QACA,OACA,SACA,YACA,OACA,OACA,WACA,MACA,QACA,QACA,YACA,OACA,UACA,SACA,YACA,QACA,QACA,QACA,QACA,YACA,SACA,MACA,MACA,QACA,UACA,OACA,OACA,OACA,OACA,UACA,SACA,OACA,SACA,QACA,OACA,SACA,MACA,OACA,OACA,KACA,OACA,WACA,eACA,SACA,UACA,OACA,OACA,YACA,SACA,UACA,OACA,MACA,UACA,MACA,OACA,MACA,YACA,WACA,aACA,UACA,MACA,OACA,SACA,YACA,YACA,YACA,SACA,cACA,aACA,UACA,YACA,aACA,SACA,QACA,WACA,UACA,UACA,YACA,YACA,cACA,WACA,aACA,cACA,WACA,gBACA,WACA,YACA,iBACA,eACA,YACA,OACA,YACA,eACA,WACA,SACA,cACA,gBACA,eACA,aACA,WACA,SACA,UACA,WACA,cACA,QACA,QACA,aACA,UACA,OACA,SACA,OACA,QACA,WACA,QACA,UACA,QACA,OACA,MACA,SACA,QACA,SACA,cACA,aACA,OACA,SACA,QACA,aACA,UACA,OACA,OACA,MACA,OACA,OACA,QACA,SACA,WACA,OACA,OACA,YACA,OACA,QACA,OACA,OACA,MACA,SACA,aACA,UACA,SACA,eACA,gBACA,OACA,MACA,SACA,OACA,SACA,YACA,WACA,UACA,QACA,OACA,OACA,UACA,SACA,QACA,WACA,OACA,SACA,MACA,QACA,QACA,KACA,OACA,OACA,UACA,UACA,UACA,UACA,QACA,OACA,OACA,QACA,OACA,WACA,SACA,UACA,OACA,QACA,OACA,YACA,SACA,SACA,WACA,SACA,UACA,WACA,eACA,UACA,QACA,UACA,MACA,UACA,QACA,eACA,MACA,QACA,OACA,YACA,OACA,OACA,QACA,OACA,KACA,SACA,MACA,SACA,QACA,WACA,UACA,eACA,WACA,cACA,SACA,WACA,UACA,UACA,OACA,OACA,UACA,WACA,WACA,aACA,eACA,SACA,UACA,cACA,QACA,OACA,UACA,YACA,UACA,OACA,QACA,OACA,UACA,UACA,QACA,MACA,UACA,KACA,QACA,OACA,OACA,UACA,SACA,SACA,MACA,WACA,aACA,aACA,UACA,YACA,UACA,cACA,UACA,SACA,YACA,QACA,OACA,OACA,OACA,QACA,QACA,OACA,QACA,SACA,WACA,QACA,UACA,QACA,WACA,OACA,SACA,OACA,YACA,OACA,OACA,MACA,UACA,aACA,QACA,OACA,UACA,YACA,UACA,SACA,aACA,YACA,WACA,cACA,UACA,eACA,WACA,UACA,eACA,WACA,YACA,eACA,QACA,WACA,UACA,SACA,UACA,WACA,aACA,QACA,QACA,WACA,UACA,aACA,aACA,eACA,YACA,UACA,SACA,UACA,WACA,UACA,YACA,UACA,UACA,SACA,QACA,aACA,SACA,cACA,WACA,UACA,YACA,OACA,aACA,WACA,OACA,UACA,SACA,OACA,WACA,SACA,cACA,YACA,YACA,iBACA,SACA,YACA,UACA,WACA,UACA,MACA,SACA,YACA,QACA,YACA,UACA,aACA,SACA,UACA,SACA,SACA,YACA,aACA,SACA,SACA,SACA,SACA,aACA,UACA,QACA,SACA,WACA,YACA,iBACA,iBACA,aACA,aACA,UACA,UACA,cACA,WACA,aACA,WACA,cACA,WACA,SACA,aACA,aACA,UACA,SACA,WACA,UACA,UACA,aACA,WACA,iBACA,cACA,OACA,aACA,UACA,cACA,SACA,SACA,SACA,QACA,SACA,SACA,SACA,MACA,SACA,SACA,OACA,SACA,SACA,YACA,UACA,SACA,SACA,WACA,MACA,OACA,OACA,OACA,UACA,QACA,SACA,YACA,OACA,OACA,SACA,UACA,OACA,SACA,QACA,YACA,QACA,QACA,UACA,QACA,QACA,OACA,QACA,OACA,QACA,OACA,QACA,WACA,OACA,WACA,QACA,QACA,UACA,OACA,SACA,WACA,QACA,QACA,QACA,QACA,SACA,WACA,OACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,SACA,OACA,OACA,KACA,YACA,SACA,SACA,QACA,WACA,SACA,QACA,UACA,QACA,UACA,UACA,aACA,UACA,WACA,eACA,SACA,QACA,QACA,WACA,OACA,QACA,UACA,QACA,OACA,UACA,QACA,QACA,QACA,WACA,UACA,WACA,YACA,WACA,SACA,SACA,WACA,aACA,SACA,UACA,SACA,SACA,QACA,SACA,SACA,WACA,YACA,WACA,UACA,SACA,QACA,QACA,SACA,QACA,UACA,SACA,aACA,YACA,cACA,UACA,UACA,aACA,eACA,OACA,SACA,SACA,MACA,SACA,UACA,SACA,QACA,aACA,SACA,OACA,OACA,OACA,SACA,OACA,OACA,OACA,MACA,OACA,SACA,OACA,QACA,MACA,WACA,MACA,QACA,UACA,WACA,OACA,OACA,WACA,YACA,YACA,aACA,OACA,WACA,YACA,YACA,aACA,OACA,cACA,YACA,MACA,OACA,OACA,QACA,OACA,OACA,MACA,OACA,QACA,SACA,QACA,KACA,UACA,QACA,MACA,WACA,SACA,WACA,OACA,SACA,UACA,MACA,QACA,aACA,QACA,QACA,QACA,QACA,OACA,QACA,UACA,QACA,OACA,QACA,QACA,QACA,MACA,OACA,SACA,OACA,KACA,SACA,SACA,QACA,OACA,MACA,OACA,UACA,YACA,OACA,SACA,YACA,WACA,aACA,UACA,SACA,SACA,WACA,QACA,UACA,KACA,OACA,SACA,WACA,QACA,WACA,YACA,UACA,OACA,SACA,UACA,QACA,OACA,QA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","file":"static/js/main.c1c6a59f.chunk.js","sourcesContent":["import './DuckIcon.css';\n\nfunction DuckIcon() {\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n\n\n\n )\n}\n\nexport default DuckIcon; ","import \"./NavBar.css\";\nimport { Link } from \"react-router-dom\";\nimport DuckIcon from \"../icon/DuckIcon\";\n\nfunction NavBar() {\n return (\n
\n \n
\n );\n}\n\nexport default NavBar;\n","import styles from \"./Layout.module.css\";\nimport NavBar from \"./NavBar\";\nimport { Outlet } from \"react-router-dom\";\n\nfunction Layout(props) {\n return (\n
\n \n
\n \n
\n
\n
\n );\n}\n\nexport default Layout;\n","export const listofWords = [\n \"abandon\",\n \"ability\",\n \"able\",\n \"abortion\",\n \"about\",\n \"above\",\n \"abroad\",\n \"absence\",\n \"absolute\",\n \"absorb\",\n \"abuse\",\n \"academic\",\n \"alternative\",\n \"approach\",\n \"appropriate\",\n \"approval\",\n \"approve\",\n \"approximately\",\n \"Arab\",\n \"architect\",\n \"area\",\n \"argue\",\n \"argument\",\n \"arise\",\n \"arm\",\n \"armed\",\n \"army\",\n \"around\",\n \"arrange\",\n \"arrangement\",\n \"arrest\",\n \"arrival\",\n \"arrive\",\n \"art\",\n \"article\",\n \"artist\",\n \"artistic\",\n \"as\",\n \"Asian\",\n \"aside\",\n \"ask\",\n \"asleep\",\n \"aspect\",\n \"assault\",\n \"assert\",\n \"authority\",\n \"auto\",\n \"available\",\n \"average\",\n \"avoid\",\n \"award\",\n \"aware\",\n \"awareness\",\n \"away\",\n \"awful\",\n \"baby\",\n \"back\",\n \"background\",\n \"bad\",\n \"badly\",\n \"bag\",\n \"bake\",\n \"balance\",\n \"ball\",\n \"ban\",\n \"band\",\n \"bank\",\n \"bar\",\n \"barely\",\n \"barrel\",\n \"barrier\",\n \"base\",\n \"baseball\",\n \"basic\",\n \"basically\",\n \"basis\",\n \"basket\",\n \"basketball\",\n \"beneath\",\n \"benefit\",\n \"beside\",\n \"besides\",\n \"best\",\n \"bet\",\n \"better\",\n \"between\",\n \"beyond\",\n \"Bible\",\n \"big\",\n \"bike\",\n \"branch\",\n \"brand\",\n \"bread\",\n \"break\",\n \"breakfast\",\n \"breast\",\n \"brush\",\n \"buck\",\n \"budget\",\n \"build\",\n \"building\",\n \"bullet\",\n \"bunch\",\n \"burden\",\n \"burn\",\n \"bury\",\n \"chain\",\n \"chair\",\n \"chairman\",\n \"challenge\",\n \"chamber\",\n \"champion\",\n \"championship\",\n \"chance\",\n \"change\",\n \"changing\",\n \"channel\",\n \"chapter\",\n \"character\",\n \"characteristic\",\n \"characterize\",\n \"charge\",\n \"charity\",\n \"chart\",\n \"chase\",\n \"cheap\",\n \"check\",\n \"Chinese\",\n \"claim\",\n \"class\",\n \"classic\",\n \"classroom\",\n \"clean\",\n \"closely\",\n \"closer\",\n \"clothes\",\n \"clothing\",\n \"cloud\",\n \"club\",\n \"clue\",\n \"cluster\",\n \"coach\",\n \"confidence\",\n \"confident\",\n \"confirm\",\n \"conflict\",\n \"confront\",\n \"confusion\",\n \"Congress\",\n \"congressional\",\n \"connect\",\n \"connection\",\n \"consciousness\",\n \"consensus\",\n \"consequence\",\n \"conservative\",\n \"consider\",\n \"considerable\",\n \"consideration\",\n \"consist\",\n \"consistent\",\n \"constant\",\n \"constantly\",\n \"constitute\",\n \"constitutional\",\n \"construct\",\n \"construction\",\n \"consultant\",\n \"consume\",\n \"consumer\",\n \"consumption\",\n \"contact\",\n \"contain\",\n \"container\",\n \"contemporary\",\n \"content\",\n \"defend\",\n \"defendant\",\n \"defense\",\n \"defensive\",\n \"deficit\",\n \"define\",\n \"definitely\",\n \"definition\",\n \"degree\",\n \"delay\",\n \"deliver\",\n \"delivery\",\n \"demand\",\n \"democracy\",\n \"Democrat\",\n \"democratic\",\n \"demonstrate\",\n \"demonstration\",\n \"deny\",\n \"department\",\n \"depend\",\n \"dependent\",\n \"depending\",\n \"depict\",\n \"depression\",\n \"depth\",\n \"deputy\",\n \"derive\",\n \"describe\",\n \"description\",\n \"desert\",\n \"deserve\",\n \"design\",\n \"designer\",\n \"desire\",\n \"desk\",\n \"desperate\",\n \"despite\",\n \"destroy\",\n \"destruction\",\n \"detail\",\n \"detailed\",\n \"detect\",\n \"determine\",\n \"develop\",\n \"developing\",\n \"development\",\n \"device\",\n \"devote\",\n \"economic\",\n \"economics\",\n \"economist\",\n \"economy\",\n \"edge\",\n \"edition\",\n \"editor\",\n \"educate\",\n \"education\",\n \"educational\",\n \"educator\",\n \"effect\",\n \"effective\",\n \"effectively\",\n \"efficiency\",\n \"efficient\",\n \"effort\",\n \"egg\",\n \"eight\",\n \"either\",\n \"elderly\",\n \"elect\",\n \"election\",\n \"electric\",\n \"electricity\",\n \"electronic\",\n \"element\",\n \"elementary\",\n \"eliminate\",\n \"entertainment\",\n \"entire\",\n \"entirely\",\n \"entrance\",\n \"entry\",\n \"environment\",\n \"environmental\",\n \"episode\",\n \"equal\",\n \"exciting\",\n \"executive\",\n \"exercise\",\n \"exhibit\",\n \"female\",\n \"fence\",\n \"few\",\n \"fewer\",\n \"fiber\",\n \"fiction\",\n \"field\",\n \"fifteen\",\n \"fifth\",\n \"fifty\",\n \"fight\",\n \"fighter\",\n \"fighting\",\n \"figure\",\n \"file\",\n \"fill\",\n \"film\",\n \"final\",\n \"finally\",\n \"finance\",\n \"financial\",\n \"find\",\n \"finding\",\n \"fine\",\n \"finger\",\n \"finish\",\n \"fire\",\n \"firm\",\n \"flee\",\n \"flesh\",\n \"flight\",\n \"float\",\n \"floor\",\n \"flow\",\n \"flower\",\n \"fly\",\n \"focus\",\n \"folk\",\n \"follow\",\n \"following\",\n \"food\",\n \"foot\",\n \"football\",\n \"for\",\n \"force\",\n \"funny\",\n \"furniture\",\n \"grow\",\n \"growing\",\n \"growth\",\n \"guarantee\",\n \"guard\",\n \"guess\",\n \"guest\",\n \"guide\",\n \"guideline\",\n \"guilty\",\n \"gun\",\n \"guy\",\n \"habit\",\n \"habitat\",\n \"hair\",\n \"half\",\n \"hall\",\n \"hand\",\n \"handful\",\n \"handle\",\n \"hang\",\n \"happen\",\n \"happy\",\n \"hard\",\n \"hardly\",\n \"hat\",\n \"hate\",\n \"have\",\n \"he\",\n \"head\",\n \"headline\",\n \"headquarters\",\n \"health\",\n \"healthy\",\n \"hear\",\n \"high\",\n \"highlight\",\n \"highly\",\n \"highway\",\n \"hill\",\n \"him\",\n \"himself\",\n \"hip\",\n \"hire\",\n \"his\",\n \"historian\",\n \"historic\",\n \"historical\",\n \"history\",\n \"hit\",\n \"hold\",\n \"infant\",\n \"infection\",\n \"inflation\",\n \"influence\",\n \"inform\",\n \"information\",\n \"ingredient\",\n \"initial\",\n \"initially\",\n \"initiative\",\n \"injury\",\n \"inner\",\n \"innocent\",\n \"inquiry\",\n \"intense\",\n \"intensity\",\n \"intention\",\n \"interaction\",\n \"interest\",\n \"interested\",\n \"interesting\",\n \"internal\",\n \"international\",\n \"Internet\",\n \"interpret\",\n \"interpretation\",\n \"intervention\",\n \"interview\",\n \"into\",\n \"introduce\",\n \"introduction\",\n \"invasion\",\n \"invest\",\n \"investigate\",\n \"investigation\",\n \"investigator\",\n \"investment\",\n \"investor\",\n \"invite\",\n \"involve\",\n \"involved\",\n \"involvement\",\n \"Iraqi\",\n \"Irish\",\n \"leadership\",\n \"leading\",\n \"leaf\",\n \"league\",\n \"lean\",\n \"learn\",\n \"learning\",\n \"least\",\n \"leather\",\n \"leave\",\n \"left\",\n \"leg\",\n \"legacy\",\n \"legal\",\n \"legend\",\n \"legislation\",\n \"legitimate\",\n \"like\",\n \"likely\",\n \"limit\",\n \"limitation\",\n \"limited\",\n \"line\",\n \"link\",\n \"lip\",\n \"list\",\n \"loan\",\n \"local\",\n \"locate\",\n \"location\",\n \"lock\",\n \"long\",\n \"long-term\",\n \"look\",\n \"loose\",\n \"male\",\n \"mall\",\n \"man\",\n \"manage\",\n \"management\",\n \"manager\",\n \"manner\",\n \"manufacturer\",\n \"manufacturing\",\n \"many\",\n \"map\",\n \"margin\",\n \"mark\",\n \"market\",\n \"marketing\",\n \"marriage\",\n \"married\",\n \"marry\",\n \"mask\",\n \"mass\",\n \"massive\",\n \"master\",\n \"match\",\n \"material\",\n \"math\",\n \"matter\",\n \"may\",\n \"maybe\",\n \"mayor\",\n \"me\",\n \"meal\",\n \"miss\",\n \"missile\",\n \"mission\",\n \"mistake\",\n \"monitor\",\n \"month\",\n \"mood\",\n \"moon\",\n \"moral\",\n \"more\",\n \"moreover\",\n \"myself\",\n \"mystery\",\n \"myth\",\n \"naked\",\n \"name\",\n \"narrative\",\n \"narrow\",\n \"nation\",\n \"national\",\n \"native\",\n \"natural\",\n \"neighbor\",\n \"neighborhood\",\n \"neither\",\n \"nerve\",\n \"nervous\",\n \"net\",\n \"network\",\n \"never\",\n \"nevertheless\",\n \"new\",\n \"newly\",\n \"news\",\n \"newspaper\",\n \"next\",\n \"nice\",\n \"night\",\n \"nine\",\n \"no\",\n \"nobody\",\n \"nod\",\n \"orange\",\n \"order\",\n \"ordinary\",\n \"organic\",\n \"organization\",\n \"organize\",\n \"orientation\",\n \"origin\",\n \"original\",\n \"outcome\",\n \"outside\",\n \"oven\",\n \"over\",\n \"overall\",\n \"overcome\",\n \"overlook\",\n \"particular\",\n \"particularly\",\n \"partly\",\n \"partner\",\n \"partnership\",\n \"party\",\n \"pass\",\n \"passage\",\n \"passenger\",\n \"passion\",\n \"past\",\n \"patch\",\n \"path\",\n \"patient\",\n \"pattern\",\n \"pause\",\n \"pay\",\n \"payment\",\n \"PC\",\n \"peace\",\n \"peak\",\n \"peer\",\n \"penalty\",\n \"people\",\n \"pepper\",\n \"per\",\n \"perceive\",\n \"percentage\",\n \"perception\",\n \"perfect\",\n \"perfectly\",\n \"perform\",\n \"performance\",\n \"perhaps\",\n \"period\",\n \"permanent\",\n \"pilot\",\n \"pine\",\n \"pink\",\n \"pipe\",\n \"pitch\",\n \"place\",\n \"plan\",\n \"plane\",\n \"planet\",\n \"planning\",\n \"plant\",\n \"plastic\",\n \"plate\",\n \"platform\",\n \"play\",\n \"player\",\n \"poll\",\n \"pollution\",\n \"pool\",\n \"poor\",\n \"pop\",\n \"popular\",\n \"population\",\n \"porch\",\n \"port\",\n \"portion\",\n \"precisely\",\n \"predict\",\n \"prefer\",\n \"preference\",\n \"pregnancy\",\n \"pregnant\",\n \"preparation\",\n \"prepare\",\n \"prescription\",\n \"presence\",\n \"present\",\n \"presentation\",\n \"preserve\",\n \"president\",\n \"presidential\",\n \"press\",\n \"pressure\",\n \"pretend\",\n \"pretty\",\n \"prevent\",\n \"previous\",\n \"previously\",\n \"price\",\n \"pride\",\n \"producer\",\n \"product\",\n \"production\",\n \"profession\",\n \"professional\",\n \"professor\",\n \"profile\",\n \"profit\",\n \"program\",\n \"progress\",\n \"project\",\n \"prominent\",\n \"promise\",\n \"promote\",\n \"prompt\",\n \"proof\",\n \"psychology\",\n \"public\",\n \"publication\",\n \"publicly\",\n \"publish\",\n \"publisher\",\n \"pull\",\n \"punishment\",\n \"purchase\",\n \"pure\",\n \"purpose\",\n \"pursue\",\n \"push\",\n \"recently\",\n \"recipe\",\n \"recognition\",\n \"recognize\",\n \"recommend\",\n \"recommendation\",\n \"record\",\n \"recording\",\n \"recover\",\n \"recovery\",\n \"recruit\",\n \"red\",\n \"reduce\",\n \"reduction\",\n \"refer\",\n \"reference\",\n \"reflect\",\n \"reflection\",\n \"reform\",\n \"refugee\",\n \"refuse\",\n \"regard\",\n \"regarding\",\n \"regardless\",\n \"remind\",\n \"remote\",\n \"remove\",\n \"repeat\",\n \"repeatedly\",\n \"replace\",\n \"reply\",\n \"report\",\n \"reporter\",\n \"represent\",\n \"representation\",\n \"representative\",\n \"Republican\",\n \"reputation\",\n \"request\",\n \"require\",\n \"requirement\",\n \"research\",\n \"researcher\",\n \"resemble\",\n \"reservation\",\n \"resident\",\n \"resist\",\n \"resistance\",\n \"resolution\",\n \"resolve\",\n \"resort\",\n \"resource\",\n \"respect\",\n \"respond\",\n \"respondent\",\n \"response\",\n \"responsibility\",\n \"responsible\",\n \"rest\",\n \"restaurant\",\n \"restore\",\n \"restriction\",\n \"result\",\n \"retain\",\n \"retire\",\n \"score\",\n \"scream\",\n \"screen\",\n \"script\",\n \"sea\",\n \"search\",\n \"season\",\n \"seat\",\n \"second\",\n \"secret\",\n \"secretary\",\n \"section\",\n \"sector\",\n \"secure\",\n \"security\",\n \"see\",\n \"seed\",\n \"seek\",\n \"seem\",\n \"segment\",\n \"seize\",\n \"select\",\n \"selection\",\n \"self\",\n \"sell\",\n \"Senate\",\n \"senator\",\n \"send\",\n \"senior\",\n \"sense\",\n \"sensitive\",\n \"shelf\",\n \"shell\",\n \"shelter\",\n \"shift\",\n \"shine\",\n \"ship\",\n \"shirt\",\n \"shit\",\n \"shock\",\n \"shoe\",\n \"shoot\",\n \"shooting\",\n \"shop\",\n \"shopping\",\n \"shore\",\n \"short\",\n \"shortly\",\n \"shot\",\n \"should\",\n \"shoulder\",\n \"slave\",\n \"sleep\",\n \"slice\",\n \"slide\",\n \"slight\",\n \"slightly\",\n \"slip\",\n \"slow\",\n \"slowly\",\n \"small\",\n \"smart\",\n \"smell\",\n \"smile\",\n \"smoke\",\n \"smooth\",\n \"snap\",\n \"snow\",\n \"so\",\n \"so-called\",\n \"soccer\",\n \"source\",\n \"south\",\n \"southern\",\n \"Soviet\",\n \"space\",\n \"Spanish\",\n \"speak\",\n \"speaker\",\n \"special\",\n \"specialist\",\n \"species\",\n \"specific\",\n \"specifically\",\n \"speech\",\n \"speed\",\n \"spend\",\n \"spending\",\n \"spin\",\n \"stock\",\n \"stomach\",\n \"stone\",\n \"stop\",\n \"storage\",\n \"store\",\n \"storm\",\n \"story\",\n \"straight\",\n \"strange\",\n \"stranger\",\n \"strategic\",\n \"strategy\",\n \"stream\",\n \"street\",\n \"strength\",\n \"strengthen\",\n \"stress\",\n \"stretch\",\n \"strike\",\n \"string\",\n \"strip\",\n \"stroke\",\n \"strong\",\n \"strongly\",\n \"structure\",\n \"struggle\",\n \"student\",\n \"studio\",\n \"study\",\n \"stuff\",\n \"stupid\",\n \"style\",\n \"subject\",\n \"submit\",\n \"subsequent\",\n \"substance\",\n \"substantial\",\n \"succeed\",\n \"success\",\n \"successful\",\n \"successfully\",\n \"suit\",\n \"summer\",\n \"summit\",\n \"sun\",\n \"symbol\",\n \"symptom\",\n \"system\",\n \"table\",\n \"tablespoon\",\n \"tactic\",\n \"tail\",\n \"take\",\n \"tale\",\n \"talent\",\n \"talk\",\n \"tall\",\n \"tank\",\n \"tap\",\n \"tape\",\n \"target\",\n \"task\",\n \"taste\",\n \"tax\",\n \"taxpayer\",\n \"tea\",\n \"teach\",\n \"teacher\",\n \"teaching\",\n \"team\",\n \"tear\",\n \"teaspoon\",\n \"technical\",\n \"technique\",\n \"technology\",\n \"teen\",\n \"teenager\",\n \"telephone\",\n \"telescope\",\n \"television\",\n \"tell\",\n \"temperature\",\n \"temporary\",\n \"ten\",\n \"tend\",\n \"test\",\n \"tight\",\n \"time\",\n \"tiny\",\n \"tip\",\n \"tire\",\n \"tired\",\n \"tissue\",\n \"title\",\n \"to\",\n \"tobacco\",\n \"today\",\n \"toe\",\n \"together\",\n \"tomato\",\n \"tomorrow\",\n \"tone\",\n \"tongue\",\n \"tonight\",\n \"too\",\n \"train\",\n \"tremendous\",\n \"trend\",\n \"trial\",\n \"tribe\",\n \"trick\",\n \"trip\",\n \"troop\",\n \"trouble\",\n \"truck\",\n \"true\",\n \"truly\",\n \"trust\",\n \"truth\",\n \"try\",\n \"tube\",\n \"tunnel\",\n \"turn\",\n \"TV\",\n \"twelve\",\n \"twenty\",\n \"twice\",\n \"twin\",\n \"two\",\n \"type\",\n \"typical\",\n \"typically\",\n \"unit\",\n \"United\",\n \"universal\",\n \"universe\",\n \"university\",\n \"unknown\",\n \"unless\",\n \"unlike\",\n \"unlikely\",\n \"until\",\n \"unusual\",\n \"up\",\n \"upon\",\n \"valley\",\n \"valuable\",\n \"value\",\n \"variable\",\n \"variation\",\n \"variety\",\n \"view\",\n \"viewer\",\n \"village\",\n \"voter\",\n \"wash\",\n \"waste\",\n \"watch\",\n \"water\",\n \"wave\",\n \"way\",\n \"we\",\n \"weak\",\n \"wealth\",\n \"wealthy\",\n \"weapon\",\n \"wear\",\n \"weather\",\n \"wedding\",\n \"week\",\n \"weekend\",\n \"weekly\",\n \"weigh\",\n \"weight\",\n \"welcome\",\n \"welfare\",\n \"well\",\n \"west\",\n \"western\",\n \"wet\",\n \"what\",\n \"whatever\",\n \"will\",\n \"willing\",\n \"win\",\n \"wind\",\n \"would\",\n \"wound\",\n \"wrap\",\n \"yield\",\n \"you\",\n \"young\",\n \"your\",\n \"yours\",\n \"yourself\",\n \"youth\",\n \"zone\"\n];\n\nexport default listofWords;\n","import react, { useState, useEffect } from \"react\";\nimport { listofWords } from \"./listOfWords.js\";\n\n\n\nconst acessToken = \"H7mOLK-kQTzhEeNG2dREp4qwUCnqZnpiwUbQWPSe5PvvlynHK0zKVjJU9Sa-0rxM\";\n\n\n\nlet randomNum = Math.floor(Math.random() * 999);\nconst randomQuery = listofWords[randomNum];\nconst ContextSearch = react.createContext({\n songs: {\n trackList: [],\n heading: \"Random Songs\",\n },\n search: () => {},\n loadMore: () => {}\n});\n\nexport const ContextSearchProvider = (props) => {\n const [searchResponse, setSearchResponse] = useState([]);\n const [pageNumber, setPageNumber] = useState(1);\n const [currentQuery, setCurrentQuery] = useState()\n const [isLoading, setIsLoading] = useState(false)\n const [isLastPage, setIsLastPage] = useState(false)\n\n const getSongsResponse = (query, pageNum) => {\n fetch(`https://api.genius.com/search?q=${query}&per_page=15&page=${pageNum}&access_token=${acessToken}`)\n .then((res) => res.json())\n .then((res) => {\n setSearchResponse((prev) => [...prev, ...res.response.hits]);\n setIsLoading(false);\n if (res.response.hits.length === 0){\n setIsLastPage(true);\n }\n })\n .catch((err) => console.log(err));\n };\n\n // This will be used in the searchForm to search a new songs result using the new search query in the input from the user.\n const searchNewQuery = (query) => {\n setIsLastPage(false);\n setSearchResponse([]);\n setCurrentQuery(query);\n getSongsResponse(query, 1);\n setPageNumber(1);\n }\n // This will search more songs using the current query, it will be called in the hitList to fetch more songs when the user reach the end of the page\n const loadMore = () => {\n getSongsResponse(currentQuery, (pageNumber + 1));\n setPageNumber(prev => prev + 1);\n setIsLoading(true)\n }\n useEffect(() => {\n getSongsResponse(randomQuery, 1);\n setCurrentQuery(randomQuery)\n }, []);\n \n\n return (\n \n {props.children}\n \n );\n};\n\nexport default ContextSearch;\n","import styles from \"./HitPreview.module.css\"\nimport { Link } from 'react-router-dom';\n\nfunction HitPreview(props) {\n return (\n
\n

Title: {props.hit.title}

\n

Artist: {props.hit.primary_artist.name}

\n \n \n \n
\n );\n}\n\nexport default HitPreview;","import \"./Spinner.css\";\n\nfunction Spinner() {\n return (\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
\n
\n
\n );\n}\n\nexport default Spinner;\n","import { useState, useEffect, useContext, useRef, useCallback } from \"react\";\nimport ContextSearch from \"../store/ContextSearch\";\nimport HitPreview from \"./HitPreview\";\nimport styles from \"./HitsList.module.css\";\nimport Spinner from \"../layout/Spinner\";\nimport DuckIcon from \"../icon/DuckIcon\";\n\nfunction LyricsList() {\n const contextSearchResult = useContext(ContextSearch);\n const [hitsList, setHitsList] = useState(\"\");\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n\n const observerLast = useRef();\n const lastSongElementRef = useCallback(\n (node) => {\n let options = {\n root: null,\n rootMargin: '0px 0px 300px 0px',\n threshold: 0\n }\n if (observerLast.current) observerLast.current.disconnect();\n observerLast.current = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.intersectionRatio > 0) {\n setIsLoadingMore(true)\n }\n })\n\n }, options)\n if (node) observerLast.current.observe(node)\n }, [])\n\n useEffect(() => {\n if (!isLoadingMore) return\n if (!contextSearchResult.isLastPage){\n contextSearchResult.loadMore();\n }\n setIsLoadingMore(false);\n \n }, [isLoadingMore, contextSearchResult])\n // Using the context component, add the songs to HitsList the first time the component render, and Load more songs when the user gets to the end of the page.\n useEffect(() => {\n setHitsList(contextSearchResult.songs.trackList);\n }, [contextSearchResult]);\n\n if (hitsList) {\n return (\n
\n
\n {hitsList.map((hit, index) => {\n if (index === hitsList.length - 1) {\n return (\n
\n \n
\n );\n } else {\n return ;\n }\n })}\n
\n
\n {contextSearchResult.isLoading ? (\n
\n ...Loading More songs \n
\n ) : (\n
\n )}\n {contextSearchResult.isLastPage ? (\n
No More songs Found ;-;
\n ) : (\n
\n )} \n
\n
\n );\n } else {\n return ;\n }\n}\n\nexport default LyricsList;\n","import { useContext, useState } from \"react\";\nimport ContextSearch from \"../store/ContextSearch\";\nimport styles from \"./SearchForm.module.css\";\n\nconst SearchForm = (props) => {\n // Hold the input value, it will update everytime the user enter a new keystroke\n const [songTitle, setSongTitle] = useState(\"\");\n\n const contextSearch = useContext(ContextSearch);\n\n // When the user submit the form\n const submitHandler = (event) => {\n event.preventDefault();\n let songTitleSubmited = songTitle;\n contextSearch.search(songTitleSubmited);\n setSongTitle(\"\");\n };\n // Update everytimte the user changes the form\n const updateSongTitle = (event) => {\n setSongTitle(event.target.value);\n };\n\n return (\n
\n \n \n \n \n );\n};\nexport default SearchForm;\n","import SearchForm from \"./SearchForm\";\nimport styles from './Search.module.css';\n\nfunction Search(props) {\n return
\n}\nexport default Search;","import { useState, useEffect } from \"react\";\nimport { Link, useParams } from \"react-router-dom\";\nimport Spinner from \"../layout/Spinner\";\nimport styles from \"./LyricPage.module.css\";\nimport { getLyrics } from \"genius-lyrics-api\";\nimport DuckIcon from \"../icon/DuckIcon\";\n\nfunction LyricPage(props) {\n const [songData, setSongData] = useState(\"\");\n const { id } = useParams();\n const [lyrics, setLyrics] = useState(\"\");\n const [duckTranslation, setDuckTranslation] = useState(\"\");\n const [englishTranslation, setEnglishTranslation] = useState(\"\");\n const [albumTrackList, setAlbumTrackList] = useState();\n const acessToken =\n \"H7mOLK-kQTzhEeNG2dREp4qwUCnqZnpiwUbQWPSe5PvvlynHK0zKVjJU9Sa-0rxM\";\n const WebPageurl = songData.url;\n const albumUrl = songData?.album?.api_path;\n // Get the lyrics and song information after the component is render.\n useEffect(() => {\n //Get lyrics and album information of the song after the song information is fetched.\n if (WebPageurl) {\n // Get the Lyrics using a proxy server\n getLyrics(\n `https://add-cors-to-requests.denny-rodrigues-carmo.workers.dev/?${WebPageurl}`\n ).then((lyrics) => {\n setLyrics(lyrics);\n setEnglishTranslation(lyrics);\n });\n\n // Get the information about the album\n fetch(\n `https://api.genius.com${albumUrl}/tracks?access_token=${acessToken}`,\n {\n method: \"Get\",\n }\n )\n .then((res) => {\n return res.json();\n })\n .then((res) => {\n setAlbumTrackList(res.response);\n })\n .catch((err) => console.log(err));\n }\n //Get Songs information\n fetch(`https://api.genius.com/songs/${id}?access_token=${acessToken}`)\n .then((res) => {\n return res.json();\n })\n .then((res) => {\n setSongData(res.response.song);\n })\n .catch((err) => console.log(err));\n }, [id, WebPageurl, albumUrl]);\n // Replace the lyrics text with duck language (All words will be replace with quack). It will also change the button so when the user click again the lyrics will be back to english.\n const translateToDuck = () => {\n let translation = lyrics.replace(/\\w+/g, \"quack\");\n setLyrics(translation);\n setDuckTranslation(true);\n };\n const translateToEnglish = () => {\n setDuckTranslation(\"\");\n setLyrics(englishTranslation);\n };\n\n if (songData) {\n // Filter to get only the youtube Link from the API response(This is needed beacause the API gives different medias links, like spotify and others)\n const youtubeLink = songData.media.filter(\n (song) => song.provider === \"youtube\"\n )[0];\n // Replace to make a youtuber embbed link instead of a watch(This will allow the url to be placed in the inframe tag).\n var youtuberLinkEmbed = \"\";\n if (youtubeLink) {\n youtuberLinkEmbed = youtubeLink.url.replace(\"watch?v=\", \"embed/\");\n youtuberLinkEmbed = youtuberLinkEmbed.replace(\"http\", \"https\");\n }\n return (\n
\n

{songData.title}

\n
\n \n
    \n
  • \n Title: {songData?.title} \n
  • \n
  • \n Album: {songData.album?.name} \n
  • \n
  • \n Release: {songData?.release_date_for_display} \n
  • \n
  • \n Artist: {songData.primary_artist?.name} \n
  • \n
  • \n \n
  • \n
\n
\n {youtuberLinkEmbed ? (\n
\n \n
\n ) : (\n null\n )}\n {albumTrackList?\n :null}\n
\n

Lyrics

\n {duckTranslation ? (\n \n ) : (\n \n )}\n {lyrics ? (\n
 {lyrics} 
\n ) : (\n
\n Loading Lyrics... {\" \"}\n
\n )}\n
\n
\n );\n } else {\n return ;\n }\n}\n\nexport default LyricPage;\n","import styles from './About.module.css';\n\nfunction About() {\n return (\n
\n

About this Website

\n

It's a website where you can search for songs. You can also translate the lyrics to Duck Language(Even though you are not going to understant a lot).

The information in this site came from the Genius API, and this site was build using React.

\n

\n This site was made by Denny Rodrigues do Carmo. You can see others os my\n projects in my GitHub repository\n

\n
\n );\n}\n\nexport default About;","import { useState, useEffect } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport Spinner from \"../layout/Spinner\";\nimport styles from \"./ArtistPage.module.css\";\n\nconst ArtistPage = () => {\n const [artistData, setArtistData] = useState(\"\");\n const { id } = useParams();\n const acessToken =\n \"4nc-gD-74q1PZMHoTTYG9dqxnPNcqsYmLAvnv7D6NrurElCBikEwrEKcIWXIU2qD\";\n // Fetch data after the page is render.\n useEffect(() => {\n // Get Artist information\n fetch(\n `https://api.genius.com/artists/${id}?access_token=${acessToken}&text_format=plain`\n )\n .then((res) => {\n return res.json();\n })\n .then((res) => {\n // Update Artist Data\n setArtistData(res.response.artist);\n })\n .catch((err) => console.log(err));\n }, [id]);\n\n if (artistData) {\n return (\n
\n

{artistData.name}

\n
\n \"Artist\"\n
\n
\n

About

\n
{artistData.description.plain}
\n
\n
\n );\n } else {\n return ;\n }\n};\n\nexport default ArtistPage;\n","import './App.css';\nimport Layout from './components/layout/Layout';\nimport LyricsList from './components/lyrics/HitsList.js';\nimport Search from './components/searchForm/Search';\nimport { ContextSearchProvider } from './components/store/ContextSearch';\nimport {\n BrowserRouter as Router,\n Route,\n Routes,\n} from \"react-router-dom\";\nimport LyricPage from './components/lyrics/LyricPage';\nimport About from './components/about/About';\nimport ArtistPage from './components/artists/ArtistPage';\n\n\nfunction App() {\n \n return (\n \n \n \n }>\n }/>\n }/>\n }/>\n }/>\n \n \n \n \n );\n}\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\nreportWebVitals();\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"MainLayout\":\"Layout_MainLayout__2DX-V\",\"Layout\":\"Layout_Layout__1iVNg\",\"Footer\":\"Layout_Footer__10e0Q\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"HitPreview\":\"HitPreview_HitPreview__1H-f9\",\"hitPreviewTitle\":\"HitPreview_hitPreviewTitle__g3hka\",\"hitPreviewArtist\":\"HitPreview_hitPreviewArtist__qi5OC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"HitList\":\"HitsList_HitList__QwtRY\",\"LoaderContainer\":\"HitsList_LoaderContainer__3XtRV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ArtistPage\":\"ArtistPage_ArtistPage__35ptE\",\"ImgWrapper\":\"ArtistPage_ImgWrapper__2VcZ6\",\"about\":\"ArtistPage_about__AYCoP\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"SearchForm\":\"SearchForm_SearchForm__ADz5R\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"About\":\"About_About__1dBX1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"LyricPage\":\"LyricPage_LyricPage__3KvJJ\",\"LyricPageInfoBox\":\"LyricPage_LyricPageInfoBox__30k08\",\"YoutubeContainer\":\"LyricPage_YoutubeContainer__lfZs6\",\"AlbumContainer\":\"LyricPage_AlbumContainer__1sdbP\",\"AlbumSubText\":\"LyricPage_AlbumSubText__30FPC\",\"AlbumTitle\":\"LyricPage_AlbumTitle__3xOLu\",\"AlbumList\":\"LyricPage_AlbumList__2oDA1\",\"AlbumItem\":\"LyricPage_AlbumItem__1fhL2\",\"LyricsBox\":\"LyricPage_LyricsBox__P14oA\"};"],"sourceRoot":""}