diff --git a/asset-manifest.json b/asset-manifest.json
index 48e6418..b1e759e 100644
--- a/asset-manifest.json
+++ b/asset-manifest.json
@@ -1,8 +1,8 @@
{
"files": {
"main.css": "/100-tunes/static/css/main.ea1455b2.chunk.css",
- "main.js": "/100-tunes/static/js/main.b450c9cf.chunk.js",
- "main.js.map": "/100-tunes/static/js/main.b450c9cf.chunk.js.map",
+ "main.js": "/100-tunes/static/js/main.b8fb8b8a.chunk.js",
+ "main.js.map": "/100-tunes/static/js/main.b8fb8b8a.chunk.js.map",
"runtime-main.js": "/100-tunes/static/js/runtime-main.e30cb5bf.js",
"runtime-main.js.map": "/100-tunes/static/js/runtime-main.e30cb5bf.js.map",
"static/js/2.57bfccce.chunk.js": "/100-tunes/static/js/2.57bfccce.chunk.js",
@@ -17,6 +17,6 @@
"static/js/runtime-main.e30cb5bf.js",
"static/js/2.57bfccce.chunk.js",
"static/css/main.ea1455b2.chunk.css",
- "static/js/main.b450c9cf.chunk.js"
+ "static/js/main.b8fb8b8a.chunk.js"
]
}
\ No newline at end of file
diff --git a/index.html b/index.html
index cf183a1..910c517 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-
React App You need to enable JavaScript to run this app.
\ No newline at end of file
+React App You need to enable JavaScript to run this app.
\ No newline at end of file
diff --git a/static/js/main.b450c9cf.chunk.js b/static/js/main.b450c9cf.chunk.js
deleted file mode 100644
index 32c2373..0000000
--- a/static/js/main.b450c9cf.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(this["webpackJsonp100-tunes"]=this["webpackJsonp100-tunes"]||[]).push([[0],{34:function(e,t,n){},35:function(e,t,n){},41:function(e,t,n){"use strict";n.r(t);var c=n(3),r=n(1),a=n.n(r),s=n(19),i=n.n(s),j=(n(34),n(58)),u=(n(35),n(17)),o=n.n(u),l=n(20),b=n(25),h=n(53),d=n(54),x=n(55),O=n(56),p=n(57),f=n(59),g=function(e){return Object(c.jsx)(c.Fragment,{children:e.url})},v=function(){var e=Object(r.useState)([]),t=Object(b.a)(e,2),n=t[0],a=t[1];return Object(r.useEffect)((function(){(function(){var e=Object(l.a)(o.a.mark((function e(){var t;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch("https://raw.githubusercontent.com/fergalmoran/100-tunes/develop/public/data/tunes.json");case 3:return e.next=5,e.sent.json();case 5:t=e.sent,a(t),e.next=12;break;case 9:e.prev=9,e.t0=e.catch(0),console.error("TuneList","getData",e.t0);case 12:case"end":return e.stop()}}),e,null,[[0,9]])})));return function(){return e.apply(this,arguments)}})()()}),[]),Object(c.jsxs)("div",{children:[Object(c.jsxs)(h.a,{size:"small",children:[Object(c.jsx)(d.a,{children:Object(c.jsxs)(x.a,{children:[Object(c.jsx)(O.a,{children:"Link"}),Object(c.jsx)(O.a,{children:"Title"}),Object(c.jsx)(O.a,{align:"right",children:"Preview"})]})}),Object(c.jsx)(p.a,{children:n.map((function(e){return Object(c.jsxs)(x.a,{children:[Object(c.jsx)(O.a,{children:e.url}),Object(c.jsx)(O.a,{children:Object(c.jsx)(g,{url:e.title})}),Object(c.jsx)(O.a,{align:"right",children:Object(c.jsx)(f.a,{alt:e.title,src:e.image})})]},e.id)}))})]}),n.map((function(e){return Object(c.jsxs)("pre",{children:["Fart: ",e.url]},e.id)}))]})};var m=function(){return Object(c.jsx)(j.a,{variant:"body2",color:"textSecondary",children:Object(c.jsxs)("div",{className:"App",children:[Object(c.jsx)(j.a,{component:"h2",variant:"h6",color:"primary",gutterBottom:!0,children:"100 Tunes"}),Object(c.jsx)(v,{})]})})},w=function(e){e&&e instanceof Function&&n.e(3).then(n.bind(null,60)).then((function(t){var n=t.getCLS,c=t.getFID,r=t.getFCP,a=t.getLCP,s=t.getTTFB;n(e),c(e),r(e),a(e),s(e)}))};i.a.render(Object(c.jsx)(a.a.StrictMode,{children:Object(c.jsx)(m,{})}),document.getElementById("root")),w()}},[[41,1,2]]]);
-//# sourceMappingURL=main.b450c9cf.chunk.js.map
\ No newline at end of file
diff --git a/static/js/main.b450c9cf.chunk.js.map b/static/js/main.b450c9cf.chunk.js.map
deleted file mode 100644
index 790b8d6..0000000
--- a/static/js/main.b450c9cf.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["components/TuneTitle.tsx","components/TuneList.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["TuneTitle","props","url","MixList","useState","tunes","setTunes","useEffect","a","fetch","json","mixes","console","error","getData","Table","size","TableHead","TableRow","TableCell","align","TableBody","map","row","title","Avatar","alt","src","image","id","m","App","Typography","variant","color","className","component","gutterBottom","TuneList","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"mTAMeA,EAJG,SAACC,GACf,OAAO,mCAAGA,EAAMC,OC4DLC,EAnDC,WAAO,IAAD,EACQC,mBAAiB,IADzB,mBACXC,EADW,KACJC,EADI,KAkBlB,OAhBAC,qBAAU,YACO,uCAAG,4BAAAC,EAAA,+EAGEC,MACF,0FAJA,8BAMNC,OANM,OAEFC,EAFE,OAORL,EAASK,GAPD,gDASRC,QAAQC,MAAM,WAAY,UAA1B,MATQ,yDAAH,qDAYbC,KACD,IAGC,gCACI,eAACC,EAAA,EAAD,CAAOC,KAAK,QAAZ,UACI,cAACC,EAAA,EAAD,UACI,eAACC,EAAA,EAAD,WACI,cAACC,EAAA,EAAD,mBACA,cAACA,EAAA,EAAD,oBACA,cAACA,EAAA,EAAD,CAAWC,MAAM,QAAjB,0BAGR,cAACC,EAAA,EAAD,UACKhB,EAAMiB,KAAI,SAACC,GAAD,OACP,eAACL,EAAA,EAAD,WACI,cAACC,EAAA,EAAD,UAAYI,EAAIrB,MAChB,cAACiB,EAAA,EAAD,UACI,cAAC,EAAD,CAAWjB,IAAKqB,EAAIC,UAExB,cAACL,EAAA,EAAD,CAAWC,MAAM,QAAjB,SACI,cAACK,EAAA,EAAD,CACIC,IAAKH,EAAIC,MACTG,IAAKJ,EAAIK,YARNL,EAAIM,YAe9BxB,EAAMiB,KAAI,SAACQ,GAAD,OACP,yCAAuBA,EAAE5B,MAAf4B,EAAED,WClCbE,MAnBf,WACI,OACI,cAACC,EAAA,EAAD,CAAYC,QAAQ,QAAQC,MAAM,gBAAlC,SACI,sBAAKC,UAAU,MAAf,UACI,cAACH,EAAA,EAAD,CACII,UAAU,KACVH,QAAQ,KACRC,MAAM,UACNG,cAAY,EAJhB,uBASA,cAACC,EAAD,UCJDC,EAZS,SAACC,GACnBA,GAAeA,aAAuBC,UACxC,6BAAqBC,MAAK,YAAkD,IAA/CC,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC3DJ,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAON,GACPO,EAAQP,OCHdQ,IAASC,OACP,cAAC,IAAMC,WAAP,UACE,cAAC,EAAD,MAEFC,SAASC,eAAe,SAM1Bb,M","file":"static/js/main.b450c9cf.chunk.js","sourcesContent":["import React from \"react\";\n\nconst TuneTitle = (props: { url: string }) => {\n return <>{props.url}>;\n};\n\nexport default TuneTitle;\n","import {\n Avatar,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n} from \"@material-ui/core\";\nimport React, { useEffect, useState } from \"react\";\nimport Tune from \"../models/tune\";\nimport TuneTitle from \"./TuneTitle\";\n\nconst MixList = () => {\n const [tunes, setTunes] = useState([]);\n useEffect(() => {\n const getData = async () => {\n try {\n const mixes: Tune[] = await (\n await fetch(\n \"https://raw.githubusercontent.com/fergalmoran/100-tunes/develop/public/data/tunes.json\"\n )\n ).json();\n setTunes(mixes);\n } catch (err) {\n console.error(\"TuneList\", \"getData\", err);\n }\n };\n getData();\n }, []);\n\n return (\n \n
\n \n \n Link \n Title \n Preview \n \n \n \n {tunes.map((row) => (\n \n {row.url} \n \n \n \n \n \n \n \n ))}\n \n
\n {tunes.map((m) => (\n
Fart: {m.url} \n ))}\n
\n );\n};\nexport default MixList;\n","import { Typography } from \"@material-ui/core\";\nimport React from \"react\";\nimport \"./App.css\";\nimport TuneList from \"./components/TuneList\";\n\nfunction App() {\n return (\n \n \n \n 100 Tunes\n \n\n \n
\n \n );\n}\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\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\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":""}
\ No newline at end of file
diff --git a/static/js/main.b8fb8b8a.chunk.js b/static/js/main.b8fb8b8a.chunk.js
new file mode 100644
index 0000000..ec178c2
--- /dev/null
+++ b/static/js/main.b8fb8b8a.chunk.js
@@ -0,0 +1,2 @@
+(this["webpackJsonp100-tunes"]=this["webpackJsonp100-tunes"]||[]).push([[0],{34:function(e,t,n){},35:function(e,t,n){},41:function(e,t,n){"use strict";n.r(t);var c=n(3),r=n(1),s=n.n(r),a=n(19),i=n.n(a),j=(n(34),n(58)),u=(n(35),n(17)),l=n.n(u),o=n(20),h=n(25),b=n(53),d=n(54),x=n(55),O=n(56),f=n(57),p=n(59),g=function(e){return Object(c.jsx)(c.Fragment,{children:e.url})},v=function(){var e=Object(r.useState)([]),t=Object(h.a)(e,2),n=t[0],s=t[1];return Object(r.useEffect)((function(){(function(){var e=Object(o.a)(l.a.mark((function e(){var t;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch("".concat("/100-tunes","/data/tunes.json"));case 3:return e.next=5,e.sent.json();case 5:t=e.sent,s(t),e.next=12;break;case 9:e.prev=9,e.t0=e.catch(0),console.error("TuneList","getData",e.t0);case 12:case"end":return e.stop()}}),e,null,[[0,9]])})));return function(){return e.apply(this,arguments)}})()()}),[]),Object(c.jsx)("div",{children:Object(c.jsxs)(b.a,{size:"small",children:[Object(c.jsx)(d.a,{children:Object(c.jsxs)(x.a,{children:[Object(c.jsx)(O.a,{children:"Link"}),Object(c.jsx)(O.a,{children:"Title"}),Object(c.jsx)(O.a,{align:"right",children:"Preview"})]})}),Object(c.jsx)(f.a,{children:n.map((function(e){return Object(c.jsxs)(x.a,{children:[Object(c.jsx)(O.a,{children:e.url}),Object(c.jsx)(O.a,{children:Object(c.jsx)(g,{url:e.title})}),Object(c.jsx)(O.a,{align:"right",children:Object(c.jsx)(p.a,{alt:e.title,src:e.image})})]},e.id)}))})]})})};var m=function(){return Object(c.jsxs)("div",{className:"App",children:[Object(c.jsx)(j.a,{component:"h2",variant:"h6",color:"primary",gutterBottom:!0,children:"100 Tunes"}),Object(c.jsx)(v,{})]})},k=function(e){e&&e instanceof Function&&n.e(3).then(n.bind(null,60)).then((function(t){var n=t.getCLS,c=t.getFID,r=t.getFCP,s=t.getLCP,a=t.getTTFB;n(e),c(e),r(e),s(e),a(e)}))};i.a.render(Object(c.jsx)(s.a.StrictMode,{children:Object(c.jsx)(m,{})}),document.getElementById("root")),k()}},[[41,1,2]]]);
+//# sourceMappingURL=main.b8fb8b8a.chunk.js.map
\ No newline at end of file
diff --git a/static/js/main.b8fb8b8a.chunk.js.map b/static/js/main.b8fb8b8a.chunk.js.map
new file mode 100644
index 0000000..105dc6a
--- /dev/null
+++ b/static/js/main.b8fb8b8a.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["components/TuneTitle.tsx","components/TuneList.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["TuneTitle","props","url","MixList","useState","tunes","setTunes","useEffect","a","fetch","process","json","mixes","console","error","getData","Table","size","TableHead","TableRow","TableCell","align","TableBody","map","row","title","Avatar","alt","src","image","id","App","className","Typography","component","variant","color","gutterBottom","TuneList","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"mTAMeA,EAJG,SAACC,GACf,OAAO,mCAAGA,EAAMC,OCoDLC,EA3CC,WAAO,IAAD,EACQC,mBAAiB,IADzB,mBACXC,EADW,KACJC,EADI,KAgBlB,OAdAC,qBAAU,YACO,uCAAG,4BAAAC,EAAA,+EAGEC,MAAM,GAAD,OAAIC,aAAJ,qBAHP,8BAINC,OAJM,OAEFC,EAFE,OAKRN,EAASM,GALD,gDAORC,QAAQC,MAAM,WAAY,UAA1B,MAPQ,yDAAH,qDAUbC,KACD,IAGC,8BACI,eAACC,EAAA,EAAD,CAAOC,KAAK,QAAZ,UACI,cAACC,EAAA,EAAD,UACI,eAACC,EAAA,EAAD,WACI,cAACC,EAAA,EAAD,mBACA,cAACA,EAAA,EAAD,oBACA,cAACA,EAAA,EAAD,CAAWC,MAAM,QAAjB,0BAGR,cAACC,EAAA,EAAD,UACKjB,EAAMkB,KAAI,SAACC,GAAD,OACP,eAACL,EAAA,EAAD,WACI,cAACC,EAAA,EAAD,UAAYI,EAAItB,MAChB,cAACkB,EAAA,EAAD,UACI,cAAC,EAAD,CAAWlB,IAAKsB,EAAIC,UAExB,cAACL,EAAA,EAAD,CAAWC,MAAM,QAAjB,SACI,cAACK,EAAA,EAAD,CAAQC,IAAKH,EAAIC,MAAOG,IAAKJ,EAAIK,YAN1BL,EAAIM,eCnB5BC,MAhBf,WACI,OACI,sBAAKC,UAAU,MAAf,UACI,cAACC,EAAA,EAAD,CACIC,UAAU,KACVC,QAAQ,KACRC,MAAM,UACNC,cAAY,EAJhB,uBAQA,cAACC,EAAD,QCFGC,EAZS,SAACC,GACnBA,GAAeA,aAAuBC,UACxC,6BAAqBC,MAAK,YAAkD,IAA/CC,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC3DJ,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAON,GACPO,EAAQP,OCHdQ,IAASC,OACP,cAAC,IAAMC,WAAP,UACE,cAAC,EAAD,MAEFC,SAASC,eAAe,SAM1Bb,M","file":"static/js/main.b8fb8b8a.chunk.js","sourcesContent":["import React from \"react\";\n\nconst TuneTitle = (props: { url: string }) => {\n return <>{props.url}>;\n};\n\nexport default TuneTitle;\n","import {\n Avatar,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n} from \"@material-ui/core\";\nimport React, { useEffect, useState } from \"react\";\nimport Tune from \"../models/tune\";\nimport TuneTitle from \"./TuneTitle\";\n\nconst MixList = () => {\n const [tunes, setTunes] = useState([]);\n useEffect(() => {\n const getData = async () => {\n try {\n const mixes: Tune[] = await(\n await fetch(`${process.env.PUBLIC_URL}/data/tunes.json`)\n ).json();\n setTunes(mixes);\n } catch (err) {\n console.error(\"TuneList\", \"getData\", err);\n }\n };\n getData();\n }, []);\n\n return (\n \n
\n \n \n Link \n Title \n Preview \n \n \n \n {tunes.map((row) => (\n \n {row.url} \n \n \n \n \n \n \n \n ))}\n \n
\n
\n );\n};\nexport default MixList;\n","import { Typography } from \"@material-ui/core\";\nimport React from \"react\";\nimport \"./App.css\";\nimport TuneList from \"./components/TuneList\";\n\nfunction App() {\n return (\n \n \n 100 Tunes\n \n \n
\n );\n}\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\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\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":""}
\ No newline at end of file