-
Notifications
You must be signed in to change notification settings - Fork 0
/
.eslintcache
1 lines (1 loc) · 24.2 KB
/
.eslintcache
1
[{"F:\\Programacion\\React\\sudofy\\src\\index.js":"1","F:\\Programacion\\React\\sudofy\\src\\App.js":"2","F:\\Programacion\\React\\sudofy\\src\\reportWebVitals.js":"3","F:\\Programacion\\React\\sudofy\\src\\components\\Trademark\\Trademark.js":"4","F:\\Programacion\\React\\sudofy\\src\\components\\Login\\Login.js":"5","F:\\Programacion\\React\\sudofy\\src\\components\\Main\\Main.js":"6","F:\\Programacion\\React\\sudofy\\src\\components\\Menu\\Menu.js":"7","F:\\Programacion\\React\\sudofy\\src\\components\\Profile\\Profile.js":"8","F:\\Programacion\\React\\sudofy\\src\\components\\Main\\Spotify\\Playlist\\Playlist.js":"9","F:\\Programacion\\React\\sudofy\\src\\components\\Menu\\Selector\\Selector.js":"10","F:\\Programacion\\React\\sudofy\\src\\components\\AppContext\\AppContext.js":"11","F:\\Programacion\\React\\sudofy\\src\\components\\Wrapper\\Wrapper.js":"12","F:\\Programacion\\React\\sudofy\\src\\components\\Main\\Spotify\\User\\User.js":"13","F:\\Programacion\\React\\sudofy\\src\\FlagIcon.js":"14"},{"size":500,"mtime":1606497664988,"results":"15","hashOfConfig":"16"},{"size":311,"mtime":1607456400348,"results":"17","hashOfConfig":"16"},{"size":362,"mtime":1606497664988,"results":"18","hashOfConfig":"16"},{"size":686,"mtime":1607540313684,"results":"19","hashOfConfig":"16"},{"size":1370,"mtime":1607571099734,"results":"20","hashOfConfig":"16"},{"size":1071,"mtime":1607568722203,"results":"21","hashOfConfig":"16"},{"size":2215,"mtime":1607529540403,"results":"22","hashOfConfig":"16"},{"size":404,"mtime":1607401939937,"results":"23","hashOfConfig":"16"},{"size":5450,"mtime":1607615538072,"results":"24","hashOfConfig":"16"},{"size":548,"mtime":1607529972587,"results":"25","hashOfConfig":"16"},{"size":344,"mtime":1607454716029,"results":"26","hashOfConfig":"16"},{"size":655,"mtime":1607454709134,"results":"27","hashOfConfig":"16"},{"size":3291,"mtime":1607617701539,"results":"28","hashOfConfig":"16"},{"size":638,"mtime":1607541698607,"results":"29","hashOfConfig":"16"},{"filePath":"30","messages":"31","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"32"},"aiopfo",{"filePath":"33","messages":"34","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"35","usedDeprecatedRules":"32"},{"filePath":"36","messages":"37","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"32"},{"filePath":"38","messages":"39","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"40","usedDeprecatedRules":"32"},{"filePath":"41","messages":"42","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"43","usedDeprecatedRules":"32"},{"filePath":"44","messages":"45","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"46","usedDeprecatedRules":"32"},{"filePath":"47","messages":"48","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"32"},{"filePath":"49","messages":"50","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"32"},{"filePath":"51","messages":"52","errorCount":0,"warningCount":10,"fixableErrorCount":0,"fixableWarningCount":0,"source":"53","usedDeprecatedRules":"32"},{"filePath":"54","messages":"55","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"56"},{"filePath":"57","messages":"58","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"32"},{"filePath":"59","messages":"60","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"61","usedDeprecatedRules":"32"},{"filePath":"62","messages":"63","errorCount":0,"warningCount":6,"fixableErrorCount":0,"fixableWarningCount":0,"source":"64","usedDeprecatedRules":"32"},{"filePath":"65","messages":"66","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"32"},"F:\\Programacion\\React\\sudofy\\src\\index.js",[],["67","68"],"F:\\Programacion\\React\\sudofy\\src\\App.js",["69"],"import { useState } from 'react';\r\nimport './App.css';\r\nimport Wrapper from './components/Wrapper/Wrapper';\r\nimport AppContext from './components/AppContext/AppContext';\r\n\r\n\r\nfunction App() {\r\n\r\n return (<AppContext>\r\n <Wrapper/>\r\n </AppContext>\r\n )\r\n \r\n}\r\n\r\nexport default App;\r\n","F:\\Programacion\\React\\sudofy\\src\\reportWebVitals.js",[],"F:\\Programacion\\React\\sudofy\\src\\components\\Trademark\\Trademark.js",["70"],"import React from 'react';\nimport { AiFillGithub, AiFillLinkedin, AiOutlineMail } from 'react-icons/ai'\nimport './Trademark.css';\nimport waifu from '../../img/wsv.png';\nexport default function Trademark(){\n\n\tconst style = {\n\t\tcolor: 'white',\n\t\tfontSize: '.9rem',\n\t\tfontWeight:300,\n\t}\n\n\tconst icon = {\n\t\tfontSize:'1.5rem',\n\t\tmargin:'0 5px'\n\t}\n\n\treturn(\n\t\t\t<div className=\"trademark\">\n\t\t\t\t{/*<img id ='waifu'src={waifu} alt=\"\"/>*/}\n\t\t\t\t<div className=\"icons-container\">\n\t\t\t\t\t<AiFillGithub style={icon}/>\n\t\t\t\t\t<AiFillLinkedin style={icon}/>\n\t\t\t\t\t<AiOutlineMail style={icon}/>\n\t\t\t\t</div>\n\t\t\t\t<div className='trademark-name' style={style}>Created by Mariano L. Acosta</div>\n\t\t\t</div>\n\t\t\t)\n}\n","F:\\Programacion\\React\\sudofy\\src\\components\\Login\\Login.js",["71"],"import React from 'react';\r\nimport logo from '../../img/logo2.jpg';\r\nimport 'react-spotify-auth/dist/index.css';\r\nimport { SpotifyAuth, Scopes } from 'react-spotify-auth';\r\nimport { useSpring, animated } from 'react-spring';\r\n\r\n\r\nexport default function Login(){\r\n\r\n\tconst props = useSpring({\r\n\t\topacity: 1, \r\n\t\tfrom: {opacity: 0},\r\n\t\tconfig:{duration:2500}\r\n\t})\r\n\r\n\tconst propsh1 = useSpring({\r\n\t\ttransform: 'translate3d(0,0,0)',\r\n\t\topacity: 1,\r\n\t\tfrom: {transform: 'translate3d(0,200px,0)',opacity:0},\r\n\t\tconfig:{duration:1000}\r\n\t })\r\n\t\r\n\t const propsh2 = useSpring({\r\n\t\ttransform: 'translate3d(0,0,0)',\r\n\t\topacity: 1,\r\n\t\tfrom: {transform: 'translate3d(-200px,0,0)',opacity:0},\r\n\t\tconfig:{duration:1000}\r\n\t })\r\n\t\r\n\r\n\treturn(\r\n\t\t<>\r\n\t\t\t<animated.h1 className=\"app-title\" style={propsh1}>Sudofy!</animated.h1>\r\n \t<animated.h2 className='app-subtitle' style={propsh2}>Visualize all your Spotify data</animated.h2>\r\n\t\t\t<animated.img className = \"hatsune\" src={'https://i.pinimg.com/originals/cb/39/26/cb3926914e31158f04e7d04ede2f5d3a.gif'} style={props}></animated.img>\r\n\t\t\t<div className='log-wrapper'>\r\n\t\t\t<SpotifyAuth\r\n\t\t\t\tredirectUri = {process.env.REACT_APP_SPOTIFY_REDIRECT_URI}\r\n\t\t\t\tclientID = {process.env.REACT_APP_SPOTIFY_CLIENT_ID}\r\n\t\t\t\tscopes = {[Scopes.userReadPrivate, Scopes.userReadEmail, Scopes.userTopRead]}\r\n\t\t\t/>\r\n\t\t\t</div>\r\n\t </>\r\n\t)\r\n}\r\n","F:\\Programacion\\React\\sudofy\\src\\components\\Main\\Main.js",["72"],"import React from 'react';\nimport Menu from '../Menu/Menu';\nimport Profile from '../Profile/Profile';\nimport Playlist from './Spotify/Playlist/Playlist';\nimport User from './Spotify/User/User';\nimport {\n\tBrowserRouter as Router,\n\tSwitch,\n\tRoute,\n\tLink\n } from \"react-router-dom\";\n\n\nexport default function Main(props){\n\treturn( <Router>\n\t\t\t \t<Menu/>\n\t\t\t\t<Profile/>\n\t\t\t\t<h1 className=\"app-title\" style={{fontSize:'3rem'}}>Sudofy!</h1>\n\n\t\t\t\t<Switch>\n\t\t\t\t\t<Route path='/callback'>\n\t\t\t\t\t\t{/*<h1 style={{fontSize:'1.5rem'}}>Profile Stats</h1>*/} \n\t\t\t\t\t\t<User/>\n\t\t\t\t\t</Route>\n\t\t\t\t\t<Route exact path='/playlist'>\n\t\t\t\t\t\t<h1 style={{fontSize:'1.5rem'}}>Playlist Analyzer</h1>\n\t\t\t\t\t\t<Playlist/>\n\t\t\t\t\t</Route>\n\t\t\t\t\t<Route exact path='/artist'>\n\t\t\t\t\t\t<h1 style={{fontSize:'1.5rem'}}>Artist Analyzer</h1>\n\n\t\t\t\t\t</Route>\n\t\t\t\t\t<Route exact path='/track'>\n\t\t\t\t\t\t<h1 style={{fontSize:'1.5rem'}}>Track Analyzer</h1>\n\n\t\t\t\t\t</Route>\n\t\t\t\t\t<Route exact path='/synesthesia'>\n\t\t\t\t\t\t<h1 style={{fontSize:'1.5rem'}}>Synesthesia Player</h1>\n\n\t\t\t\t\t</Route>\n\t\t\t\t\t\n\t\t\t\t</Switch>\n\n\t\t\t</Router>\n\t)\n}\n","F:\\Programacion\\React\\sudofy\\src\\components\\Menu\\Menu.js",[],"F:\\Programacion\\React\\sudofy\\src\\components\\Profile\\Profile.js",[],"F:\\Programacion\\React\\sudofy\\src\\components\\Main\\Spotify\\Playlist\\Playlist.js",["73","74","75","76","77","78","79","80","81","82"],"import { useState, useEffect, useContext } from 'react';\r\nimport { UserPlaylists, PlaylistTracks, SpotifyApiContext, Track } from 'react-spotify-api';\r\nimport { useAppContext } from '../../../AppContext/AppContext';\r\nimport { RadarChart, PolarGrid,PolarAngleAxis, PolarRadiusAxis, Radar,Legend } from 'recharts';\r\nimport './Playlist.css' ;\r\nimport { Ellipsis, DualRing } from 'react-css-spinners';\r\nimport { RiPlayList2Fill } from 'react-icons/ri';\r\n\r\nfunction processing(features) {\r\n\t\r\n\tconst len = features.length;\r\n\r\n\tlet max = 0;\r\n\r\n\tfeatures.forEach((feature)=>{ max = (feature.acousticness > max ) ? feature.acousticness : max});\r\n\r\n\tlet acousticness = features.reduce((acc,curr)=>{\r\n\t\treturn acc + curr.acousticness/len;\r\n\t},0) / max\r\n\r\n\tmax = 0;\r\n\r\n\tfeatures.forEach((feature)=>{ max = (feature.danceability > max ) ? feature.danceability : max});\r\n\r\n\tlet danceability = features.reduce((acc,curr)=>{\r\n\t\treturn acc + curr.danceability/len;\r\n\t},0) / max\r\n\r\n\tmax = 0;\r\n\tfeatures.forEach((feature)=>{ max = (feature.energy > max ) ? feature.energy : max});\r\n\r\n\tlet energy = features.reduce((acc,curr)=>{\r\n\t\treturn acc + curr.energy/len;\r\n\t},0) / max\r\n\r\n\tmax = 0;\r\n\tfeatures.forEach((feature)=>{ max = (feature.instrumentalness > max ) ? feature.instrumentalness : max});\r\n\r\n\tlet instrumentalness = features.reduce((acc,curr)=>{\r\n\t\treturn acc + curr.instrumentalness/len;\r\n\t},0) / max\r\n\r\n\tlet loudness = features.reduce((acc,curr)=>{\r\n\t\treturn acc + curr.loudness/len;\r\n\t},0) / max\r\n\r\n\tmax = 0;\r\n\tfeatures.forEach((feature)=>{ max = (feature.liveness > max ) ? feature.liveness : max});\r\n\r\n\tlet liveness = features.reduce((acc,curr)=>{\r\n\t\treturn acc + curr.liveness/len;\r\n\t},0) / max\r\n\r\n\tmax = 0;\r\n\tfeatures.forEach((feature)=>{ max = (feature.tempo > max ) ? feature.tempo : max});\r\n\r\n\tlet tempo = features.reduce((acc,curr)=>{\r\n\t\treturn acc + curr.tempo/len;\r\n\t},0) / 200\r\n\r\n\tlet result = [\r\n\t\t{\"description\": \"Acousticness\",\r\n\t\t 'value': acousticness},\r\n\t\t{\"description\": \"Danceability\",\r\n\t\t 'value': danceability},\r\n\t\t{\"description\": \"Energy\",\r\n\t\t 'value': energy},\r\n\t\t{\"description\": \"Instrumentalness\",\r\n\t\t 'value': instrumentalness},\r\n\t\t{\"description\": \"Liveness\",\r\n\t\t 'value': liveness},\r\n\t\t {\"description\": \"Tempo\",\r\n\t\t 'value': tempo},\r\n\t]\r\n\r\n\treturn result;\r\n\r\n}\r\n\r\n\r\nexport default function Playlist( ){\r\n\r\n\tlet [playlistIds, setIds] = useState(null);\r\n\tlet [currentId, setCurrentId] = useState(null); //playlist ID\r\n\tlet [tracks, setTracks] = useState(null);\r\n\tlet [currentCover, setCurrentCover] = useState(null);\r\n\tlet [data,setData] = useState([\r\n\t\t{\"description\": \"Acousticness\",\r\n\t\t 'value': 0},\r\n\t\t{\"description\": \"Danceability\",\r\n\t\t 'value': 0},\r\n\t\t{\"description\": \"Energy\",\r\n\t\t 'value': 0},\r\n\t\t{\"description\": \"Instrumentalness\",\r\n\t\t 'value': 0},\r\n\t\t{\"description\": \"Liveness\",\r\n\t\t 'value': 0},\r\n\t\t{\"description\": \"Tempo\",\r\n\t\t 'value': 0},\r\n\t]);\r\n\r\n\tlet [loading, setLoading] = useState(false); \r\n\r\n\tconst { token } = useAppContext();\r\n\r\n\tconst fetchTrackFeatures = async ()=>{\r\n\t\tlet features = [];\r\n\t\tlet songs = '';\r\n\t\ttracks.forEach((track)=>{songs+= track + ','});\r\n\t\tsongs = songs.slice(0, -1);\r\n\r\n\t\tawait fetch(`https://api.spotify.com/v1/audio-features/?ids=${songs}`,\r\n\t\t{headers: {'Authorization': `Bearer ${token}`}})\t\t\t\t\t \r\n\t\t.then((res)=>{return res.json()})\r\n\t\t.then((res)=>{features = res.audio_features});;\r\n\t\treturn features;\r\n\t\r\n\t}\r\n\r\n\r\n\tuseEffect(async ()=>{\r\n\t\tif(tracks){\r\n\t\t\ttry{\r\n\t\t\t\tlet temp = await fetchTrackFeatures();\r\n\t\t\t\tsetData(processing(temp));\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t}catch(err){\r\n\t\t\t\talert(err);\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t},[tracks]);\r\n\r\n\tuseEffect( async()=>{\r\n\t\tif (currentId){\r\n\t\t\tawait fetch(`https://api.spotify.com/v1/playlists/${currentId}/tracks`, \r\n\t\t\t\t\t {headers: {'Authorization': `Bearer ${token}`}})\r\n\t\t\t\t\t .then((res)=>{return res.json()})\r\n\t\t\t\t\t .then((res)=>{setTracks(res.items.map((track)=>{return track.track.id}))});\r\n\t\t}\r\n\t\t\r\n\t},[currentId])\r\n\r\n\r\n\treturn(<div className = 'playlist-container'>\r\n\t\t\t\t{loading && <Ellipsis style={{position:'absolute', margin:'auto'}}/>}\r\n\t\t\t\t<UserPlaylists>\r\n\t\t\t\t\t{({ data }) => {\r\n\t\t\t\t\t\tif (data){\r\n\t\t\t\t\t\t\tsetIds(data[\"items\"]);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t{!loading && currentId && <img id='playlist-cover'src={currentCover} alt=\"\" className=\"cover\"/>}\r\n\t\t\t\t\t\t\t\t<div className=\"playlist-list\">\r\n\t\t\t\t\t\t\t\t\t<h2>Your Playlists: </h2>\r\n\t\t\t\t\t\t\t\t\t{playlistIds ? (<ul>\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tplaylistIds\r\n\t\t\t\t\t\t\t\t\t\t\t.map(playlist=>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li className = 'playlist-element'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle = {playlist.id == currentId ? {color:'orange'}:null}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={()=>{setCurrentId(playlist.id); setCurrentCover(playlist.images[0].url); setLoading(true)}}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<RiPlayList2Fill style={{marginRight:10}}/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{playlist.name}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</ul>) : (<DualRing style={{position:'absolute', top:200, left:60}}/>)}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t)}}\r\n\t\t\t\t</UserPlaylists>\r\n\t\t\t\t<RadarChart outerRadius={300} width={750} height={700} data={data} style={{position:'relative',top:30,left:50, color:'white'}}>\r\n\t\t\t\t\t<PolarGrid />\r\n\t\t\t\t\t<PolarAngleAxis dataKey='description' stroke='#37ffa8'/>\r\n\t\t\t\t\t<PolarRadiusAxis angle={30} domain={[0, 1]} />\r\n\t\t\t\t\t<Radar name={`ID: ${currentId}`} dataKey=\"value\" stroke=\"#8884d8\" fill=\"#8884d8\" fillOpacity={0.6} />\r\n\t\t\t\t\t<Legend />\r\n\t\t\t\t</RadarChart>\r\n\t\t\t</div>\r\n\t\t)\r\n}\r\n","F:\\Programacion\\React\\sudofy\\src\\components\\Menu\\Selector\\Selector.js",[],["83","84"],"F:\\Programacion\\React\\sudofy\\src\\components\\AppContext\\AppContext.js",[],"F:\\Programacion\\React\\sudofy\\src\\components\\Wrapper\\Wrapper.js",["85"],"import { useState } from 'react';\nimport Main from '../Main/Main';\nimport Cookies from 'js-cookie';\nimport Trademark from '../Trademark/Trademark';\nimport Login from '../Login/Login';\nimport { SpotifyApiContext } from 'react-spotify-api';\nimport { useAppContext } from '../AppContext/AppContext';\n\n\nexport default function Wrapper(){\n\tconst { token, setToken } = useAppContext();\n\n\tsetToken(Cookies.get('spotifyAuthToken'));\n\n\treturn (\n \n\t\t <SpotifyApiContext.Provider value={token}>\n\t\t\t<div className=\"App\">\n\t\t\t <div className=\"mask\" >\n\t\t\t\t{token ? <Main/> : <Login/>}\n\t\t\t\t<Trademark/>\n\t\t\t </div>\n\t\t\t</div>\n\t\t </SpotifyApiContext.Provider>\n \n\t);\n}\n","F:\\Programacion\\React\\sudofy\\src\\components\\Main\\Spotify\\User\\User.js",["86","87","88","89","90","91"],"import './User.css';\nimport { useAppContext } from '../../../AppContext/AppContext';\nimport { useUser, UserTop } from 'react-spotify-api'\nimport { Ellipsis, DualRing } from 'react-css-spinners';\nimport { useSpring, animated } from 'react-spring';\nimport { FaSpotify } from 'react-icons/fa';\nimport FlagIcon from '../../../../FlagIcon';\n\nexport default function User(){\n\n\tconst { token } = useAppContext();\n\tconst { data, loading, error } = useUser();\n\t\n\tconst props1 = useSpring({\n\t\ttransform: 'translate3d(0,0,0)',\n\t\topacity: 1,\n\t\tfrom: {opacity:0},\n\t\tconfig:{duration:1000}\n\t })\n\t\n\tconst props2 = useSpring({\n\t\ttransform: 'translate3d(0,0,0)',\n\t\topacity: 1,\n\t\tfrom: {transform:'translate3d(0,600px,0)',opacity:0},\n\t\tconfig:{duration:1500}\n\t})\n\n\tconst props3 = useSpring({\n\t\ttransform: 'translate3d(0,0,0)',\n\t\topacity: 1,\n\t\tfrom: {opacity:0},\n\t\tconfig:{duration:6000}\n\t})\n\n\tif (data){\n\t\treturn(\n\t\t\t<div className='user-wrapper'>\n\t\t\t\t<div className=\"user-grid\">\n\t\t\t\t\t<animated.div className=\"info-box info-wrap\" style={props1}>\n\t\t\t\t\t\t<div className=\"profile-wrap\" >\n\t\t\t\t\t\t\t<img className='user-img' src={data.images[0].url} alt=\"\"/>\n\t\t\t\t\t\t\t<h2 className='user-name'>{data.display_name}</h2>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<ul className = 'user-info'>\n\t\t\t\t\t\t\t<li><strong>Country:</strong> {data.country} <FlagIcon code={data.country.toLowerCase()} size={'1g'}/></li>\n\t\t\t\t\t\t\t<li><strong>Membership:</strong> {data.product}<FaSpotify style={{position:'relative',top:2,left:4, color:'green'}}/></li>\n\t\t\t\t\t\t\t<li><strong>Followers: </strong>{data.followers.total}</li>\n\t\t\t\t\t\t\t<li><strong>Email: </strong>{data.email}</li>\n\t\t\t\t\t\t\t<li><strong>URI:</strong> {data.uri}</li>\n\t\t\t\t\t\t\t<li></li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</animated.div>\n\t\t\t\t\t<animated.div className=\"info-box user-artist-wrap\" style={props1}>\n\t\t\t\t\t\t<h2 style={{position:'absolute',top:18, left:50}}>Top Artists</h2>\n\t\t\t\t\t\t<UserTop type=\"artists\">\n\t\t\t\t\t\t\t{({data:artists}) =>\n\t\t\t\t\t\t\t\tartists ? (\n\t\t\t\t\t\t\t\t\tartists.items.map(artist => (\n\t\t\t\t\t\t\t\t\t\t<div className='artist-top-wrap'>\n\t\t\t\t\t\t\t\t\t\t\t<img className='user-top-img'src={artist.images[0].url} alt=\"\"/>\n\t\t\t\t\t\t\t\t\t\t\t<span key={artist.id} style={{color:'white'}}>{artist.name}</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t\t) : <DualRing style={{position:'relative',top:140}}/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</UserTop>\n\t\t\t\t\t</animated.div>\n\t\t\t\t\t<animated.div className=\"info-box user-tracks-wrap\" style={props1}>\n\t\t\t\t\t\t<h2 style={{position:'absolute',top:20, right:125}}>Top Tracks</h2>\n\t\t\t\t\t\t<UserTop type=\"tracks\">\n\t\t\t\t\t\t\t{({data:tracks}) =>\n\t\t\t\t\t\t\t\ttracks ? (\n\t\t\t\t\t\t\t\t\ttracks.items.map( (track, key )=> (\n\t\t\t\t\t\t\t\t\t\t<div className='tracks-top-wrap'>\n\t\t\t\t\t\t\t\t\t\t\t{`#${key+1} `}\n\t\t\t\t\t\t\t\t\t\t\t<img className='user-top-tracks-img'src={track.album.images[0].url} alt=\"\"/>\n\t\t\t\t\t\t\t\t\t\t\t<span key={track.id} style={{color:'white',fontWeight:300, fontSize:'.9rem'}}>{track.name.slice(0,34)}</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t\t) : <DualRing style={{position:'relative',top:240,left:85}}/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</UserTop>\n\t\t\t\t\t</animated.div>\n\t\t\t\t\t<animated.div className=\"info-box user-search\" style={props1}>\n\t\t\t\t\t\t\t<img src=\"https://i.pinimg.com/originals/e2/45/27/e24527408cab572eb4a5adc8aec3afb5.gif\" style={{height:'210px',margin:0}}/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t</animated.div>\n\t\t\t\t</div>\n\t\t\t\t\n\t\t\t</div>)\n\t}else{\n\t\treturn <Ellipsis/>;\n\t}\n\n}\n","F:\\Programacion\\React\\sudofy\\src\\FlagIcon.js",[],{"ruleId":"92","replacedBy":"93"},{"ruleId":"94","replacedBy":"95"},{"ruleId":"96","severity":1,"message":"97","line":1,"column":10,"nodeType":"98","messageId":"99","endLine":1,"endColumn":18},{"ruleId":"96","severity":1,"message":"100","line":4,"column":8,"nodeType":"98","messageId":"99","endLine":4,"endColumn":13},{"ruleId":"96","severity":1,"message":"101","line":2,"column":8,"nodeType":"98","messageId":"99","endLine":2,"endColumn":12},{"ruleId":"96","severity":1,"message":"102","line":10,"column":2,"nodeType":"98","messageId":"99","endLine":10,"endColumn":6},{"ruleId":"96","severity":1,"message":"103","line":1,"column":31,"nodeType":"98","messageId":"99","endLine":1,"endColumn":41},{"ruleId":"96","severity":1,"message":"104","line":2,"column":25,"nodeType":"98","messageId":"99","endLine":2,"endColumn":39},{"ruleId":"96","severity":1,"message":"105","line":2,"column":41,"nodeType":"98","messageId":"99","endLine":2,"endColumn":58},{"ruleId":"96","severity":1,"message":"106","line":2,"column":60,"nodeType":"98","messageId":"99","endLine":2,"endColumn":65},{"ruleId":"96","severity":1,"message":"107","line":43,"column":6,"nodeType":"98","messageId":"99","endLine":43,"endColumn":14},{"ruleId":"108","severity":1,"message":"109","line":121,"column":12,"nodeType":"110","endLine":134,"endColumn":3},{"ruleId":"108","severity":1,"message":"111","line":134,"column":4,"nodeType":"112","endLine":134,"endColumn":12,"suggestions":"113"},{"ruleId":"108","severity":1,"message":"109","line":136,"column":13,"nodeType":"110","endLine":144,"endColumn":3},{"ruleId":"108","severity":1,"message":"114","line":144,"column":4,"nodeType":"112","endLine":144,"endColumn":15,"suggestions":"115"},{"ruleId":"116","severity":1,"message":"117","line":165,"column":37,"nodeType":"118","messageId":"119","endLine":165,"endColumn":39},{"ruleId":"92","replacedBy":"120"},{"ruleId":"94","replacedBy":"121"},{"ruleId":"96","severity":1,"message":"97","line":1,"column":10,"nodeType":"98","messageId":"99","endLine":1,"endColumn":18},{"ruleId":"96","severity":1,"message":"122","line":11,"column":10,"nodeType":"98","messageId":"99","endLine":11,"endColumn":15},{"ruleId":"96","severity":1,"message":"123","line":12,"column":16,"nodeType":"98","messageId":"99","endLine":12,"endColumn":23},{"ruleId":"96","severity":1,"message":"124","line":12,"column":25,"nodeType":"98","messageId":"99","endLine":12,"endColumn":30},{"ruleId":"96","severity":1,"message":"125","line":21,"column":8,"nodeType":"98","messageId":"99","endLine":21,"endColumn":14},{"ruleId":"96","severity":1,"message":"126","line":28,"column":8,"nodeType":"98","messageId":"99","endLine":28,"endColumn":14},{"ruleId":"127","severity":1,"message":"128","line":85,"column":8,"nodeType":"129","endLine":85,"endColumn":131},"no-native-reassign",["130"],"no-negated-in-lhs",["131"],"no-unused-vars","'useState' is defined but never used.","Identifier","unusedVar","'waifu' is defined but never used.","'logo' is defined but never used.","'Link' is defined but never used.","'useContext' is defined but never used.","'PlaylistTracks' is defined but never used.","'SpotifyApiContext' is defined but never used.","'Track' is defined but never used.","'loudness' is assigned a value but never used.","react-hooks/exhaustive-deps","Effect callbacks are synchronous to prevent race conditions. Put the async function inside:\n\nuseEffect(() => {\n async function fetchData() {\n // You can await here\n const response = await MyAPI.getData(someId);\n // ...\n }\n fetchData();\n}, [someId]); // Or [] if effect doesn't need props or state\n\nLearn more about data fetching with Hooks: https://reactjs.org/link/hooks-data-fetching","ArrowFunctionExpression","React Hook useEffect has a missing dependency: 'fetchTrackFeatures'. Either include it or remove the dependency array.","ArrayExpression",["132"],"React Hook useEffect has a missing dependency: 'token'. Either include it or remove the dependency array.",["133"],"eqeqeq","Expected '===' and instead saw '=='.","BinaryExpression","unexpected",["130"],["131"],"'token' is assigned a value but never used.","'loading' is assigned a value but never used.","'error' is assigned a value but never used.","'props2' is assigned a value but never used.","'props3' is assigned a value but never used.","jsx-a11y/alt-text","img elements must have an alt prop, either with meaningful text, or an empty string for decorative images.","JSXOpeningElement","no-global-assign","no-unsafe-negation",{"desc":"134","fix":"135"},{"desc":"136","fix":"137"},"Update the dependencies array to be: [fetchTrackFeatures, tracks]",{"range":"138","text":"139"},"Update the dependencies array to be: [currentId, token]",{"range":"140","text":"141"},[3609,3617],"[fetchTrackFeatures, tracks]",[3941,3952],"[currentId, token]"]