From 0cabc582995f9e108387bec90b871fbe4ed3bfc4 Mon Sep 17 00:00:00 2001 From: yaxu Date: Thu, 21 Dec 2023 18:29:52 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20toplap/m?= =?UTF-8?q?uxy-frontend@af09edda9a92a903c9d3e9bc4c84bcd01e7cdeba=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- asset-manifest.json | 6 +++--- index.html | 2 +- .../js/{main.703a9ab7.chunk.js => main.2a3ce1ed.chunk.js} | 4 ++-- static/js/main.2a3ce1ed.chunk.js.map | 1 + static/js/main.703a9ab7.chunk.js.map | 1 - 5 files changed, 7 insertions(+), 7 deletions(-) rename static/js/{main.703a9ab7.chunk.js => main.2a3ce1ed.chunk.js} (82%) create mode 100644 static/js/main.2a3ce1ed.chunk.js.map delete mode 100644 static/js/main.703a9ab7.chunk.js.map diff --git a/asset-manifest.json b/asset-manifest.json index b529e69..c7442e5 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,8 +1,8 @@ { "files": { "main.css": "/static/css/main.21eab907.chunk.css", - "main.js": "/static/js/main.703a9ab7.chunk.js", - "main.js.map": "/static/js/main.703a9ab7.chunk.js.map", + "main.js": "/static/js/main.2a3ce1ed.chunk.js", + "main.js.map": "/static/js/main.2a3ce1ed.chunk.js.map", "runtime-main.js": "/static/js/runtime-main.d47ba287.js", "runtime-main.js.map": "/static/js/runtime-main.d47ba287.js.map", "static/js/2.5c145cab.chunk.js": "/static/js/2.5c145cab.chunk.js", @@ -16,6 +16,6 @@ "static/js/runtime-main.d47ba287.js", "static/js/2.5c145cab.chunk.js", "static/css/main.21eab907.chunk.css", - "static/js/main.703a9ab7.chunk.js" + "static/js/main.2a3ce1ed.chunk.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index aaf6e07..b090ad1 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -TOPLAP Solstice Stream 2023
\ No newline at end of file +TOPLAP Solstice Stream 2023
\ No newline at end of file diff --git a/static/js/main.703a9ab7.chunk.js b/static/js/main.2a3ce1ed.chunk.js similarity index 82% rename from static/js/main.703a9ab7.chunk.js rename to static/js/main.2a3ce1ed.chunk.js index fd9b6ec..f776b08 100644 --- a/static/js/main.703a9ab7.chunk.js +++ b/static/js/main.2a3ce1ed.chunk.js @@ -1,2 +1,2 @@ -(this["webpackJsonpmuxy-frontend"]=this["webpackJsonpmuxy-frontend"]||[]).push([[0],{12:function(e,t,n){},13:function(e,t,n){},14:function(e,t,n){},19:function(e,t,n){"use strict";n.r(t);var r=n(1),a=n.n(r),c=n(6),o=n.n(c),s=(n(12),n(2)),i=(n(13),n(14),n(0));var l=function(e){var t=e.eventUrl,n=e.startsAt,a=e.endsAt,c=Object(r.useState)(""),o=Object(s.a)(c,2),l=o[0],u=o[1],d=Object(r.useState)(""),m=Object(s.a)(d,2),j=m[0],b=m[1],h=Object(r.useState)(""),p=Object(s.a)(h,2),O=p[0],f=p[1],y=Object(r.useState)(""),v=Object(s.a)(y,2),x=v[0],g=v[1],S=Object(r.useState)(""),C=Object(s.a)(S,2),N=C[0],A=C[1];return Object(i.jsxs)(i.Fragment,{children:[x&&Object(i.jsxs)("div",{children:[Object(i.jsxs)("p",{children:["You have successfully registered for the event. Your streamkey is ",Object(i.jsx)("b",{children:x})," "]}),Object(i.jsx)("p",{children:"You should have received this as an email too. "}),Object(i.jsx)("p",{children:"Save this key well, you will need it for the event and also to delete your slot again. "}),Object(i.jsx)("p",{children:"When this page is reloaded, the key will no longer be displayed. "})]}),!x&&Object(i.jsxs)("form",{className:"PerformanceCreateForm",onSubmit:function(e){e.preventDefault(),fetch("".concat("https://muxy.tidalcycles.org","/streams/"),{method:"post",headers:new Headers({Authorization:"Api-Key ".concat("S4b965QU.UuQmHexKmvXjVlFtOSUCWqxDNblqgHaq"),"Content-Type":"application/json",Accept:"application/json"}),body:JSON.stringify({publisher_name:l,publisher_email:j,description:O,location:N,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,event:t,starts_at:n,ends_at:a})}).then((function(e){return e.json()})).then((function(e){g(e.key)})).catch(console.error)},children:[Object(i.jsx)("input",{id:"name",type:"text",placeholder:"Name",value:l,onChange:function(e){return u(e.target.value)},required:!0}),Object(i.jsx)("input",{id:"email",type:"text",placeholder:"E-Mail",value:j,onChange:function(e){return b(e.target.value)},required:!0}),Object(i.jsx)("input",{id:"description",type:"text",placeholder:"Description",value:O,onChange:function(e){return f(e.target.value)},required:!0}),Object(i.jsx)("input",{id:"location",type:"text",placeholder:"Location",value:N,onChange:function(e){return A(e.target.value)},required:!0}),Object(i.jsx)("input",{type:"submit",className:"card-button",value:"Rave On"})]})]})};var u=function(e){var t=e.streamUrl,n=e.onRemove,a=Object(r.useState)(""),c=Object(s.a)(a,2),o=c[0],l=c[1],u=Object(r.useState)(!1),d=Object(s.a)(u,2),m=d[0],j=d[1];return Object(i.jsx)(i.Fragment,{children:Object(i.jsxs)("form",{className:"PerformanceCreateForm",onSubmit:function(e){e.preventDefault(),j(!1);var r=new Headers({Authorization:"Api-Key ".concat("S4b965QU.UuQmHexKmvXjVlFtOSUCWqxDNblqgHaq"),"X-Stream-Key":o,"Content-Type":"application/json",Accept:"application/json"});fetch(t,{method:"DELETE",headers:r}).then((function(e){e.ok?(l(""),n&&n()):j(!0)})).catch((function(e){console.error(e),j(!0)}))},children:[Object(i.jsx)("p",{children:"Enter your streaming key to confirm you want to remove your slot. If you do not remember your streaming key, please contact the event organizer."}),m&&Object(i.jsx)("p",{style:{color:"red"},children:"Something went wrong, did you entered the incorrect stream key? Please try again."}),Object(i.jsx)("input",{id:"key",type:"text",placeholder:"Stream key",value:o,onChange:function(e){return l(e.target.value)},required:!0}),Object(i.jsx)("input",{type:"submit",className:"card-button",value:"Remove slot"})]})})},d=n(3),m=n(5);var j=function(e){var t=e.streamUrl,n=e.currMuxyStream,a=e.onSetInEditMode,c=e.setCurrMuxyStream,o=Object(r.useState)(n.publisher_name),l=Object(s.a)(o,2),u=l[0],d=l[1],j=Object(r.useState)(n.description),b=Object(s.a)(j,2),h=b[0],p=b[1],O=Object(r.useState)(""),f=Object(s.a)(O,2),y=f[0],v=f[1],x=Object(r.useState)(n.location),g=Object(s.a)(x,2),S=g[0],C=g[1],N=Object(r.useState)(!1),A=Object(s.a)(N,2),H=A[0],U=A[1];return Object(i.jsx)("div",{className:"PerformanceEditForm",children:Object(i.jsxs)("form",{className:"PerformanceCreateForm",onSubmit:function(e){e.preventDefault(),U(!1);var r=new Headers({Authorization:"Api-Key ".concat("S4b965QU.UuQmHexKmvXjVlFtOSUCWqxDNblqgHaq"),"X-Stream-Key":y,"Content-Type":"application/json",Accept:"application/json"}),o=JSON.stringify({publisher_name:u,description:h,location:S,ends_at:n.ends_at,starts_at:n.starts_at,event:n.event});fetch(t,{method:"PUT",headers:r,body:o}).then((function(e){e.ok?(v(""),a(!1),c(Object(m.a)(Object(m.a)({},n),{},{publisher_name:u,description:h,location:S}))):U(!0)})).catch((function(e){console.error(e),U(!0)}))},children:[Object(i.jsx)("p",{children:"Enter your streaming key to confirm you want to edit your slot. If you do not remember your streaming key, please contact the event organizer."}),H&&Object(i.jsx)("p",{style:{color:"red"},children:"Something went wrong, did you entered the incorrect stream key? Please try again."}),Object(i.jsx)("input",{id:"key",type:"text",placeholder:"Stream-Key",value:y,onChange:function(e){return v(e.target.value)},required:!0}),Object(i.jsx)("p",{children:"Here you find your stream information that you can edit. The email address can not displayed for security reasons. If you have problems with your e-mail adress, please contace the event organizer. The information will only be updated if you have entered the correct stream key."}),Object(i.jsx)("input",{id:"name",type:"text",placeholder:"Name",value:u,onChange:function(e){return d(e.target.value)},required:!0}),Object(i.jsx)("input",{id:"description",type:"text",placeholder:"Description",value:h,onChange:function(e){return p(e.target.value)},required:!0}),Object(i.jsx)("input",{id:"location",type:"text",placeholder:"Location",value:S,onChange:function(e){return C(e.target.value)},required:!0}),Object(i.jsx)("input",{type:"submit",className:"card-button",value:"Save"})]})})},b=function(e){var t=e.muxyStream,n=e.cycleNo,a=e.eventUrl,c=Object(r.useState)(!1),o=Object(s.a)(c,2),m=o[0],b=o[1],h=Object(r.useState)(t),p=Object(s.a)(h,2),O=p[0],f=p[1],y=Object(r.useState)(!1),v=Object(s.a)(y,2),x=v[0],g=v[1],S=Object(r.useState)(!1),C=Object(s.a)(S,2),N=C[0],A=C[1],H=Object(r.useState)(!1),U=Object(s.a)(H,2),_=U[0],q=U[1],T=d.DateTime.fromISO(t.starts_at).toFormat("HH:mm LLL dd"),k=d.DateTime.fromISO(t.ends_at).toFormat("HH:mm LLL dd"),F=null;"publisher_name"in O&&(F=[O.publisher_name,O.location,O.description,O.timezone].join(" / "));var w=function(){b(!1),g(!1),A(!1)};return Object(i.jsx)("div",{className:"card",children:Object(i.jsxs)("div",{className:"card-body",children:[Object(i.jsxs)("p",{className:"card-header",children:["Cycle #",n]}),Object(i.jsxs)("p",{className:"card-time",children:[T,"-",k," ",!m&&!F&&Object(i.jsx)("button",{className:"card-button-plus",onClick:function(){return b(!0)},children:"+"})]}),_&&Object(i.jsx)("p",{children:"You have removed your slot succesfully."}),m?Object(i.jsx)(l,{eventUrl:a,startsAt:O.starts_at,endsAt:O.ends_at}):Object(i.jsxs)(i.Fragment,{children:[Object(i.jsx)("p",{className:"card-text",children:_?"":F||""}),!_&&F&&Object(i.jsxs)(i.Fragment,{children:[Object(i.jsx)("button",{onClick:function(){w(),A((function(e){return!e}))},className:"card-button",children:"Edit"}),Object(i.jsx)("button",{onClick:function(){w(),g((function(e){return!e}))},className:"card-button",children:"Remove"}),N&&"url"in O&&Object(i.jsx)(j,{streamUrl:O.url,currMuxyStream:O,onSetInEditMode:A,setCurrMuxyStream:f}),x&&"url"in O&&Object(i.jsx)(u,{streamUrl:O.url,onRemove:function(){return q(!0)}})]})]}),Object(i.jsx)("hr",{})]})})},h=function(e){var t=e.slug,n=e.eventUrl,a=e.startsAt,c=e.endsAt,o=e.setReservedStreamCount,l=e.setTotalStreamCount,u=Object(r.useState)(null),m=Object(s.a)(u,2),j=m[0],h=m[1];Object(r.useEffect)((function(){fetch("".concat("https://muxy.tidalcycles.org","/streams/?event__slug=").concat(t),{method:"get",headers:new Headers({Authorization:"Api-Key ".concat("S4b965QU.UuQmHexKmvXjVlFtOSUCWqxDNblqgHaq")})}).then((function(e){return e.json()})).then((function(e){h(e)})).catch(console.error)}),[t]);var p=Object(r.useMemo)((function(){if(!a||!c)return[];if(!j)return[];var e=d.DateTime.fromISO(a),t=d.DateTime.fromISO(c).diff(e,["minute"]).toObject(),n=(null===t||void 0===t?void 0:t.minutes)?t.minutes/15:0,r=(null===j||void 0===j?void 0:j.results)||[];return Array.from(Array(n)).map((function(t,n){var a=e.plus({minutes:15*n}),c=a.plus({minutes:15}),o=a.toUTC().toFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"),s=c.toUTC().toFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");return r.find((function(e){return e.starts_at==o&&e.ends_at==s}))||{starts_at:o,ends_at:s}}))}),[j]);return o(j?j.results.length:0),l(p?p.length:0),Object(i.jsx)("div",{className:"performance-list",children:p&&p.map((function(e,t){return Object(i.jsx)(b,{eventUrl:n,muxyStream:e,cycleNo:t+1},t)}))})},p=n.p+"static/media/longestnight-sunset-2.0.74a19890.svg",O=n(7),f=n.n(O);var y=function(e){var t=e.event,n=function(e,t){return null===e||null===t?{reserved:0,total:0,percent:0}:{reserved:e,total:t,percent:100*e/t}}(e.reservedStreamCount,e.totalStreamCount);return Object(i.jsxs)("header",{className:"App-header",children:[Object(i.jsx)("img",{src:p,className:"App-logo",alt:"logo"}),Object(i.jsx)("h4",{children:"TOPLAP Presents ..."}),Object(i.jsx)("h1",{children:"Solstice Stream 2023"}),Object(i.jsxs)("h2",{children:[" ",t&&d.DateTime.fromISO(t.starts_at).toFormat("dd. LLLL HH:mm")," - ",t&&d.DateTime.fromISO(t.ends_at).toFormat("dd. LLLL HH:mm")," ",t&&d.DateTime.fromISO(t.starts_at).toFormat("yyyy")]}),Object(i.jsx)("hr",{}),Object(i.jsx)(f.a,{className:"wrapper",bgColor:"#a9c27c",baseBgColor:"#ffffff",labelClassName:"label",labelAlignment:"outside",width:"100%",height:"28px",margin:"8px",customLabel:"".concat(n.reserved,"/").concat(n.total," slots are filled"),completed:n.percent}),Object(i.jsx)("hr",{}),Object(i.jsxs)("p",{children:["Your timezone: ",Intl.DateTimeFormat().resolvedOptions().timeZone]}),Object(i.jsx)("p",{className:"link-paragraph",children:Object(i.jsx)("a",{href:"https://eulerroom.com",children:"https://eulerroom.com/"})})]})};var v=function(){var e=Object(r.useState)(null),t=Object(s.a)(e,2),n=t[0],a=t[1],c=Object(r.useState)(null),o=Object(s.a)(c,2),l=o[0],u=o[1],d=Object(r.useState)(null),m=Object(s.a)(d,2),j=m[0],b=m[1],p="latesolstice2023";Object(r.useEffect)((function(){fetch("".concat("https://muxy.tidalcycles.org","/events/?slug=").concat(p),{method:"get",headers:new Headers({Authorization:"Api-Key ".concat("S4b965QU.UuQmHexKmvXjVlFtOSUCWqxDNblqgHaq")})}).then((function(e){return e.json()})).then((function(e){a(e)})).catch(console.error)}),[p]);var O=null===n||void 0===n?void 0:n.results[0];return Object(i.jsxs)("main",{className:"App",children:[Object(i.jsx)(y,{event:O,reservedStreamCount:l,totalStreamCount:j}),O&&Object(i.jsx)(h,{slug:O.slug,eventUrl:O.url,startsAt:O.starts_at,endsAt:O.ends_at,setReservedStreamCount:u,setTotalStreamCount:b})]})};var x=function(){return Object(i.jsx)(v,{})};o.a.render(Object(i.jsx)(a.a.StrictMode,{children:Object(i.jsx)(x,{})}),document.getElementById("root"))}},[[19,1,2]]]); -//# sourceMappingURL=main.703a9ab7.chunk.js.map \ No newline at end of file +(this["webpackJsonpmuxy-frontend"]=this["webpackJsonpmuxy-frontend"]||[]).push([[0],{12:function(e,t,n){},13:function(e,t,n){},14:function(e,t,n){},19:function(e,t,n){"use strict";n.r(t);var r=n(1),a=n.n(r),c=n(6),o=n.n(c),s=(n(12),n(2)),i=(n(13),n(14),n(0));var l=function(e){var t=e.eventUrl,n=e.startsAt,a=e.endsAt,c=Object(r.useState)(""),o=Object(s.a)(c,2),l=o[0],u=o[1],d=Object(r.useState)(""),m=Object(s.a)(d,2),j=m[0],b=m[1],h=Object(r.useState)(""),p=Object(s.a)(h,2),O=p[0],f=p[1],v=Object(r.useState)(""),y=Object(s.a)(v,2),x=y[0],g=y[1],S=Object(r.useState)(""),C=Object(s.a)(S,2),N=C[0],A=C[1];return Object(i.jsxs)(i.Fragment,{children:[x&&Object(i.jsxs)("div",{children:[Object(i.jsxs)("p",{children:["You have successfully registered for the event. Your streamkey is ",Object(i.jsx)("b",{children:x})," "]}),Object(i.jsx)("p",{children:"You should have received this as an email too. "}),Object(i.jsx)("p",{children:"Save this key well, you will need it for the event and also to delete your slot again. "}),Object(i.jsx)("p",{children:"When this page is reloaded, the key will no longer be displayed. "})]}),!x&&Object(i.jsxs)("form",{className:"PerformanceCreateForm",onSubmit:function(e){e.preventDefault(),fetch("".concat("https://muxy.tidalcycles.org","/streams/"),{method:"post",headers:new Headers({Authorization:"Api-Key ".concat("S4b965QU.UuQmHexKmvXjVlFtOSUCWqxDNblqgHaq"),"Content-Type":"application/json",Accept:"application/json"}),body:JSON.stringify({publisher_name:l,publisher_email:j,description:O,location:N,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,event:t,starts_at:n,ends_at:a})}).then((function(e){return e.json()})).then((function(e){g(e.key)})).catch(console.error)},children:[Object(i.jsx)("input",{id:"name",type:"text",placeholder:"Name",value:l,onChange:function(e){return u(e.target.value)},required:!0}),Object(i.jsx)("input",{id:"email",type:"text",placeholder:"E-Mail",value:j,onChange:function(e){return b(e.target.value)},required:!0}),Object(i.jsx)("input",{id:"description",type:"text",placeholder:"Description",value:O,onChange:function(e){return f(e.target.value)},required:!0}),Object(i.jsx)("input",{id:"location",type:"text",placeholder:"Location",value:N,onChange:function(e){return A(e.target.value)},required:!0}),Object(i.jsx)("input",{type:"submit",className:"card-button",value:"Rave On"})]})]})};var u=function(e){var t=e.streamUrl,n=e.onRemove,a=Object(r.useState)(""),c=Object(s.a)(a,2),o=c[0],l=c[1],u=Object(r.useState)(!1),d=Object(s.a)(u,2),m=d[0],j=d[1];return Object(i.jsx)(i.Fragment,{children:Object(i.jsxs)("form",{className:"PerformanceCreateForm",onSubmit:function(e){e.preventDefault(),j(!1);var r=new Headers({Authorization:"Api-Key ".concat("S4b965QU.UuQmHexKmvXjVlFtOSUCWqxDNblqgHaq"),"X-Stream-Key":o,"Content-Type":"application/json",Accept:"application/json"});fetch(t,{method:"DELETE",headers:r}).then((function(e){e.ok?(l(""),n&&n()):j(!0)})).catch((function(e){console.error(e),j(!0)}))},children:[Object(i.jsx)("p",{children:"Enter your streaming key to confirm you want to remove your slot. If you do not remember your streaming key, please contact the event organizer."}),m&&Object(i.jsx)("p",{style:{color:"red"},children:"Something went wrong, did you entered the incorrect stream key? Please try again."}),Object(i.jsx)("input",{id:"key",type:"text",placeholder:"Stream key",value:o,onChange:function(e){return l(e.target.value)},required:!0}),Object(i.jsx)("input",{type:"submit",className:"card-button",value:"Remove slot"})]})})},d=n(3),m=n(5);var j=function(e){var t=e.streamUrl,n=e.currMuxyStream,a=e.onSetInEditMode,c=e.setCurrMuxyStream,o=Object(r.useState)(n.publisher_name),l=Object(s.a)(o,2),u=l[0],d=l[1],j=Object(r.useState)(n.description),b=Object(s.a)(j,2),h=b[0],p=b[1],O=Object(r.useState)(""),f=Object(s.a)(O,2),v=f[0],y=f[1],x=Object(r.useState)(n.location),g=Object(s.a)(x,2),S=g[0],C=g[1],N=Object(r.useState)(!1),A=Object(s.a)(N,2),H=A[0],U=A[1];return Object(i.jsx)("div",{className:"PerformanceEditForm",children:Object(i.jsxs)("form",{className:"PerformanceCreateForm",onSubmit:function(e){e.preventDefault(),U(!1);var r=new Headers({Authorization:"Api-Key ".concat("S4b965QU.UuQmHexKmvXjVlFtOSUCWqxDNblqgHaq"),"X-Stream-Key":v,"Content-Type":"application/json",Accept:"application/json"}),o=JSON.stringify({publisher_name:u,description:h,location:S,ends_at:n.ends_at,starts_at:n.starts_at,event:n.event});fetch(t,{method:"PUT",headers:r,body:o}).then((function(e){e.ok?(y(""),a(!1),c(Object(m.a)(Object(m.a)({},n),{},{publisher_name:u,description:h,location:S}))):U(!0)})).catch((function(e){console.error(e),U(!0)}))},children:[Object(i.jsx)("p",{children:"Enter your streaming key to confirm you want to edit your slot. If you do not remember your streaming key, please contact the event organizer."}),H&&Object(i.jsx)("p",{style:{color:"red"},children:"Something went wrong, did you entered the incorrect stream key? Please try again."}),Object(i.jsx)("input",{id:"key",type:"text",placeholder:"Stream-Key",value:v,onChange:function(e){return y(e.target.value)},required:!0}),Object(i.jsx)("p",{children:"Here you find your stream information that you can edit. The email address can not displayed for security reasons. If you have problems with your e-mail adress, please contace the event organizer. The information will only be updated if you have entered the correct stream key."}),Object(i.jsx)("input",{id:"name",type:"text",placeholder:"Name",value:u,onChange:function(e){return d(e.target.value)},required:!0}),Object(i.jsx)("input",{id:"description",type:"text",placeholder:"Description",value:h,onChange:function(e){return p(e.target.value)},required:!0}),Object(i.jsx)("input",{id:"location",type:"text",placeholder:"Location",value:S,onChange:function(e){return C(e.target.value)},required:!0}),Object(i.jsx)("input",{type:"submit",className:"card-button",value:"Save"})]})})},b=function(e){var t=e.muxyStream,n=e.cycleNo,a=e.eventUrl,c=Object(r.useState)(!1),o=Object(s.a)(c,2),m=o[0],b=o[1],h=Object(r.useState)(t),p=Object(s.a)(h,2),O=p[0],f=p[1],v=Object(r.useState)(!1),y=Object(s.a)(v,2),x=y[0],g=y[1],S=Object(r.useState)(!1),C=Object(s.a)(S,2),N=C[0],A=C[1],H=Object(r.useState)(!1),U=Object(s.a)(H,2),_=U[0],q=U[1],T=d.DateTime.fromISO(t.starts_at).toFormat("HH:mm LLL dd"),k=d.DateTime.fromISO(t.ends_at).toFormat("HH:mm LLL dd"),F=null;"publisher_name"in O&&(F=[O.publisher_name,O.location,O.description,O.timezone].join(" / "));var w=function(){b(!1),g(!1),A(!1)};return Object(i.jsx)("div",{className:"card",children:Object(i.jsxs)("div",{className:"card-body",children:[Object(i.jsxs)("p",{className:"card-header",children:["Cycle #",n]}),Object(i.jsxs)("p",{className:"card-time",children:[T,"-",k," ",!m&&!F&&Object(i.jsx)("button",{className:"card-button-plus",onClick:function(){return b(!0)},children:"+"})]}),_&&Object(i.jsx)("p",{children:"You have removed your slot succesfully."}),m?Object(i.jsx)(l,{eventUrl:a,startsAt:O.starts_at,endsAt:O.ends_at}):Object(i.jsxs)(i.Fragment,{children:[Object(i.jsx)("p",{className:"card-text",children:_?"":F||""}),!_&&F&&Object(i.jsxs)(i.Fragment,{children:[Object(i.jsx)("button",{onClick:function(){w(),A((function(e){return!e}))},className:"card-button",children:"Edit"}),Object(i.jsx)("button",{onClick:function(){w(),g((function(e){return!e}))},className:"card-button",children:"Remove"}),N&&"url"in O&&Object(i.jsx)(j,{streamUrl:O.url,currMuxyStream:O,onSetInEditMode:A,setCurrMuxyStream:f}),x&&"url"in O&&Object(i.jsx)(u,{streamUrl:O.url,onRemove:function(){return q(!0)}})]})]}),Object(i.jsx)("hr",{})]})})},h=function(e){var t=e.slug,n=e.eventUrl,a=e.startsAt,c=e.endsAt,o=e.setReservedStreamCount,l=e.setTotalStreamCount,u=Object(r.useState)(null),m=Object(s.a)(u,2),j=m[0],h=m[1];Object(r.useEffect)((function(){fetch("".concat("https://muxy.tidalcycles.org","/streams/?event__slug=").concat(t),{method:"get",headers:new Headers({Authorization:"Api-Key ".concat("S4b965QU.UuQmHexKmvXjVlFtOSUCWqxDNblqgHaq")})}).then((function(e){return e.json()})).then((function(e){h(e)})).catch(console.error)}),[t]);var p=Object(r.useMemo)((function(){if(!a||!c)return[];if(!j)return[];var e=d.DateTime.fromISO(a),t=d.DateTime.fromISO(c).diff(e,["minute"]).toObject(),n=(null===t||void 0===t?void 0:t.minutes)?t.minutes/15:0,r=(null===j||void 0===j?void 0:j.results)||[];return Array.from(Array(n)).map((function(t,n){var a=e.plus({minutes:15*n}),c=a.plus({minutes:15}),o=a.toUTC().toFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"),s=c.toUTC().toFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");return r.find((function(e){return e.starts_at==o&&e.ends_at==s}))||{starts_at:o,ends_at:s}}))}),[j]);return o(j?j.results.length:0),l(p?p.length:0),Object(i.jsx)("div",{className:"performance-list",children:p&&p.map((function(e,t){return Object(i.jsx)(b,{eventUrl:n,muxyStream:e,cycleNo:t+1},t)}))})},p=n.p+"static/media/longestnight-sunset-2.0.74a19890.svg",O=n(7),f=n.n(O);var v=function(e){var t=e.event,n=function(e,t){return null===e||null===t?{reserved:0,total:0,percent:0}:{reserved:e,total:t,percent:100*e/t}}(e.reservedStreamCount,e.totalStreamCount);return Object(i.jsxs)("header",{className:"App-header",children:[Object(i.jsx)("img",{src:p,className:"App-logo",alt:"logo"}),Object(i.jsx)("h4",{children:"TOPLAP Presents ..."}),Object(i.jsx)("h1",{children:"Solstice Stream 2023"}),Object(i.jsxs)("h2",{children:[" ",t&&d.DateTime.fromISO(t.starts_at).toFormat("dd. LLLL HH:mm")," - ",t&&d.DateTime.fromISO(t.ends_at).toFormat("dd. LLLL HH:mm")," ",t&&d.DateTime.fromISO(t.starts_at).toFormat("yyyy")]}),Object(i.jsx)("hr",{}),Object(i.jsx)(f.a,{className:"wrapper",bgColor:"#a9c27c",baseBgColor:"#ffffff",labelClassName:"label",labelAlignment:"outside",width:"100%",height:"28px",margin:"8px",customLabel:"".concat(n.reserved,"/").concat(n.total," slots are filled"),completed:n.percent}),Object(i.jsx)("hr",{}),Object(i.jsxs)("p",{children:["Your timezone: ",Intl.DateTimeFormat().resolvedOptions().timeZone]}),Object(i.jsx)("p",{className:"link-paragraph",children:Object(i.jsxs)("b",{children:["Watch live here >>> ",Object(i.jsx)("a",{href:"https://eulerroom.com",children:"https://eulerroom.com/"})]})})]})};var y=function(){var e=Object(r.useState)(null),t=Object(s.a)(e,2),n=t[0],a=t[1],c=Object(r.useState)(null),o=Object(s.a)(c,2),l=o[0],u=o[1],d=Object(r.useState)(null),m=Object(s.a)(d,2),j=m[0],b=m[1],p="latesolstice2023";Object(r.useEffect)((function(){fetch("".concat("https://muxy.tidalcycles.org","/events/?slug=").concat(p),{method:"get",headers:new Headers({Authorization:"Api-Key ".concat("S4b965QU.UuQmHexKmvXjVlFtOSUCWqxDNblqgHaq")})}).then((function(e){return e.json()})).then((function(e){a(e)})).catch(console.error)}),[p]);var O=null===n||void 0===n?void 0:n.results[0];return Object(i.jsxs)("main",{className:"App",children:[Object(i.jsx)(v,{event:O,reservedStreamCount:l,totalStreamCount:j}),O&&Object(i.jsx)(h,{slug:O.slug,eventUrl:O.url,startsAt:O.starts_at,endsAt:O.ends_at,setReservedStreamCount:u,setTotalStreamCount:b})]})};var x=function(){return Object(i.jsx)(y,{})};o.a.render(Object(i.jsx)(a.a.StrictMode,{children:Object(i.jsx)(x,{})}),document.getElementById("root"))}},[[19,1,2]]]); +//# sourceMappingURL=main.2a3ce1ed.chunk.js.map \ No newline at end of file diff --git a/static/js/main.2a3ce1ed.chunk.js.map b/static/js/main.2a3ce1ed.chunk.js.map new file mode 100644 index 0000000..51339d5 --- /dev/null +++ b/static/js/main.2a3ce1ed.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["app/components/PerformanceCreateForm.tsx","app/components/PerformanceDestroyForm.tsx","app/components/PerformanceEditForm.tsx","app/components/PerformanceCard.tsx","app/components/PerformanceList.tsx","assets/images/longestnight-sunset-2.0.svg","app/components/EventHeader.tsx","app/components/EventPage.tsx","app/App.tsx","index.tsx"],"names":["PerformanceCreateForm","eventUrl","startsAt","endsAt","useState","name","setName","email","setEmail","description","setDescription","streamkey","setStreamKey","location","setLocation","className","onSubmit","e","preventDefault","fetch","process","method","headers","Headers","Authorization","Accept","body","JSON","stringify","publisher_name","publisher_email","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","event","starts_at","ends_at","then","res","json","data","key","catch","console","error","id","type","placeholder","value","onChange","target","required","PerformanceDestroyForm","streamUrl","onRemove","streamKey","failed","setFailed","ok","err","style","color","PerformanceEditForm","currMuxyStream","onSetInEditMode","setCurrMuxyStream","PerformanceCard","muxyStream","cycleNo","inCreateMode","setInCreateMode","inRemoveMode","setInRemoveMode","inEditMode","setInEditMode","removed","setRemoved","startsAtHs","DateTime","fromISO","toFormat","endsAtHs","text","join","resetFormStates","onClick","prevState","url","PerformanceList","slug","setReservedStreamCount","setTotalStreamCount","muxyStreams","setMuxyStreams","useEffect","allStreams","useMemo","startsAtDt","diff","toObject","numSlots","minutes","results","Array","from","map","_","i","streamStartsAtDt","plus","streamEndsAtDt","streamStartsAt","toUTC","streamEndsAt","find","stream","length","index","EventHeader","progressBarValues","reservedStreamCount","totalStreamCount","reserved","total","percent","calcProgressbar","src","logo","alt","bgColor","baseBgColor","labelClassName","labelAlignment","width","height","margin","customLabel","completed","href","EventPage","muxyEvents","setMuxyEvents","eventSlug","App","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"mQAuEeA,MA/Df,YAAmF,IAAnDC,EAAkD,EAAlDA,SAAUC,EAAwC,EAAxCA,SAAUC,EAA8B,EAA9BA,OAChD,EAAwBC,mBAAiB,IAAzC,mBAAOC,EAAP,KAAaC,EAAb,KACA,EAA0BF,mBAAiB,IAA3C,mBAAOG,EAAP,KAAcC,EAAd,KACA,EAAsCJ,mBAAiB,IAAvD,mBAAOK,EAAP,KAAoBC,EAApB,KACA,EAAkCN,mBAAiB,IAAnD,mBAAOO,EAAP,KAAkBC,EAAlB,KACA,EAAgCR,mBAAiB,IAAjD,mBAAOS,EAAP,KAAiBC,EAAjB,KA+BA,OACI,qCACCH,GACG,gCACI,mGAAqE,4BAAIA,IAAzE,OACA,gFACA,wHACA,sGAGNA,GACC,uBAAMI,UAAU,wBAAwBC,SAtC1B,SAACC,GAClBA,EAAEC,iBACFC,MAAM,GAAD,OAJgBC,+BAIhB,aAAwB,CAC3BC,OAAQ,OACRC,QAAS,IAAIC,QAAQ,CACnBC,cAAc,WAAD,OAROJ,6CASpB,eAAgB,mBAChBK,OAAQ,qBAEVC,KAAMC,KAAKC,UAAU,CACnBC,eAAgBxB,EAChByB,gBAAiBvB,EACjBE,YAAaA,EACbI,SAAUA,EACVkB,SAAUC,KAAKC,iBAAiBC,kBAAkBC,SAClDC,MAAOnC,EACPoC,UAAWnC,EACXoC,QAASnC,MAGVoC,MAAK,SAACC,GAAD,OAASA,EAAIC,UAClBF,MAAK,SAACG,GACL9B,EAAa8B,EAAKC,QAEnBC,MAAMC,QAAQC,QAcd,UACK,uBAAOC,GAAG,OAAOC,KAAK,OAAOC,YAAY,OAAOC,MAAO7C,EACnD8C,SAAU,SAAAlC,GAAC,OAAIX,EAAQW,EAAEmC,OAAOF,QAAQG,UAAQ,IACpD,uBAAON,GAAG,QAAQC,KAAK,OAAOC,YAAY,SAASC,MAAO3C,EACtD4C,SAAU,SAAAlC,GAAC,OAAIT,EAASS,EAAEmC,OAAOF,QAAQG,UAAQ,IACrD,uBAAON,GAAG,cAAcC,KAAK,OAAOC,YAAY,cAAcC,MAAOzC,EAC9D0C,SAAU,SAAAlC,GAAC,OAAIP,EAAeO,EAAEmC,OAAOF,QAAQG,UAAQ,IAC9D,uBAAON,GAAG,WAAWC,KAAK,OAAOC,YAAY,WAAWC,MAAOrC,EACxDsC,SAAU,SAAAlC,GAAC,OAAIH,EAAYG,EAAEmC,OAAOF,QAAQG,UAAQ,IAC3D,uBAAOL,KAAK,SAASjC,UAAU,cAAcmC,MAAM,mBCOpDI,MAhEf,YAA+E,IAA7CC,EAA4C,EAA5CA,UAAWC,EAAiC,EAAjCA,SAC3C,EAAkCpD,mBAAiB,IAAnD,mBAAOqD,EAAP,KAAkB7C,EAAlB,KACA,EAA4BR,oBAAkB,GAA9C,mBAAOsD,EAAP,KAAeC,EAAf,KAgCA,OACE,mCAEI,uBAAM5C,UAAU,wBAAwBC,SAhCzB,SAACC,GACpBA,EAAEC,iBACFyC,GAAU,GAEV,IAAMrC,EAAU,IAAIC,QAAQ,CAC1BC,cAAc,WAAD,OAPUJ,6CAQvB,eAAgBqC,EAChB,eAAgB,mBAChBhC,OAAQ,qBAGVN,MAAMoC,EAAW,CACflC,OAAQ,SACRC,YAECiB,MAAK,SAACC,GACDA,EAAIoB,IACNhD,EAAa,IACb4C,GAAYA,KAEZG,GAAU,MAGbf,OAAM,SAACiB,GACNhB,QAAQC,MAAMe,GACdF,GAAU,OAOV,UACE,iLAMCD,GACC,mBAAGI,MAAO,CAAEC,MAAO,OAAnB,+FAIF,uBACEhB,GAAG,MACHC,KAAK,OACLC,YAAY,aACZC,MAAOO,EACPN,SAAU,SAAClC,GAAD,OAAOL,EAAaK,EAAEmC,OAAOF,QACvCG,UAAQ,IAEV,uBAAOL,KAAK,SAASjC,UAAU,cAAcmC,MAAM,sB,cCkC9Cc,MAxFf,YAAsH,IAAvFT,EAAsF,EAAtFA,UAAWU,EAA2E,EAA3EA,eAAgBC,EAA2D,EAA3DA,gBAAiBC,EAA0C,EAA1CA,kBACvE,EAAwB/D,mBAAiB6D,EAAepC,gBAAxD,mBAAOxB,EAAP,KAAaC,EAAb,KACA,EAAsCF,mBAAiB6D,EAAexD,aAAtE,mBAAOA,EAAP,KAAoBC,EAApB,KACA,EAAkCN,mBAAiB,IAAnD,mBAAOqD,EAAP,KAAkB7C,EAAlB,KACA,EAAgCR,mBAAiB6D,EAAepD,UAAhE,mBAAOA,EAAP,KAAiBC,EAAjB,KACA,EAA4BV,oBAAkB,GAA9C,mBAAOsD,EAAP,KAAeC,EAAf,KAiDA,OACI,qBAAK5C,UAAU,sBAAf,SACI,uBAAMA,UAAU,wBAAwBC,SAhD3B,SAACC,GAElBA,EAAEC,iBACFyC,GAAU,GAEV,IAAMrC,EAAU,IAAIC,QAAQ,CACxBC,cAAc,WAAD,OARMJ,6CASnB,eAAgBqC,EAChB,eAAgB,mBAChBhC,OAAQ,qBAGNC,EAAOC,KAAKC,UAAU,CACxBC,eAAgBxB,EAChBI,YAAaA,EACbI,SAAUA,EACVyB,QAAS2B,EAAe3B,QACxBD,UAAW4B,EAAe5B,UAC1BD,MAAO6B,EAAe7B,QAG1BjB,MAAMoC,EAAW,CACblC,OAAQ,MACRC,UACAI,SAEHa,MAAK,SAACC,GACCA,EAAIoB,IACJhD,EAAa,IACbsD,GAAgB,GAChBC,EAAkB,2BACXF,GADU,IAEbpC,eAAgBxB,EAChBI,YAAaA,EACbI,SAAUA,MAGd8C,GAAU,MAGjBf,OAAM,SAACiB,GACJhB,QAAQC,MAAMe,GACdF,GAAU,OAMV,UACI,+KAKCD,GACG,mBAAGI,MAAO,CAAEC,MAAO,OAAnB,+FAKJ,uBAAOhB,GAAG,MAAMC,KAAK,OAAOC,YAAY,aAAaC,MAAOO,EACrDN,SAAU,SAAAlC,GAAC,OAAIL,EAAaK,EAAEmC,OAAOF,QAAQG,UAAQ,IAC5D,sTAMA,uBAAON,GAAG,OAAOC,KAAK,OAAOC,YAAY,OAAOC,MAAO7C,EAChD8C,SAAU,SAAAlC,GAAC,OAAIX,EAAQW,EAAEmC,OAAOF,QAAQG,UAAQ,IACvD,uBAAON,GAAG,cAAcC,KAAK,OAAOC,YAAY,cAAcC,MAAOzC,EAC9D0C,SAAU,SAAAlC,GAAC,OAAIP,EAAeO,EAAEmC,OAAOF,QAAQG,UAAQ,IAC9D,uBAAON,GAAG,WAAWC,KAAK,OAAOC,YAAY,WAAWC,MAAOrC,EACxDsC,SAAU,SAAAlC,GAAC,OAAIH,EAAYG,EAAEmC,OAAOF,QAAQG,UAAQ,IAC3D,uBAAOL,KAAK,SAASjC,UAAU,cAAcmC,MAAM,eCiBpDkB,EA/FS,SAAC,GAIG,IAH1BC,EAGyB,EAHzBA,WACAC,EAEyB,EAFzBA,QACArE,EACyB,EADzBA,SAEA,EAAwCG,oBAAkB,GAA1D,mBAAOmE,EAAP,KAAqBC,EAArB,KACA,EAA4CpE,mBAAuCiE,GAAnF,mBAAOJ,EAAP,KAAuBE,EAAvB,KACA,EAAwC/D,oBAAkB,GAA1D,mBAAOqE,EAAP,KAAqBC,EAArB,KACA,EAAoCtE,oBAAkB,GAAtD,mBAAOuE,EAAP,KAAmBC,EAAnB,KACA,EAA8BxE,oBAAkB,GAAhD,mBAAOyE,EAAP,KAAgBC,EAAhB,KAEMC,EAAaC,WAASC,QAAQZ,EAAWhC,WAAW6C,SAAS,gBAC7DC,EAAWH,WAASC,QAAQZ,EAAW/B,SAAS4C,SAAS,gBAE3DE,EAAO,KACP,mBAAoBnB,IAEtBmB,EAAO,CADqDnB,EAApDpC,eAAoDoC,EAApCpD,SAAoCoD,EAA1BxD,YAA0BwD,EAAblC,UACUsD,KAAK,QAGhE,IAAMC,EAAkB,WACtBd,GAAgB,GAChBE,GAAgB,GAChBE,GAAc,IAchB,OACE,qBAAK7D,UAAU,OAAf,SACE,sBAAKA,UAAU,YAAf,UACE,oBAAGA,UAAU,cAAb,oBAAmCuD,KACnC,oBAAGvD,UAAU,YAAb,UACGgE,EADH,IACgBI,EAAU,KACtBZ,IAAiBa,GACjB,wBACErE,UAAU,mBACVwE,QAAS,kBAAMf,GAAgB,IAFjC,kBAQHK,GAAW,wEACXN,EACC,cAAC,EAAD,CACEtE,SAAUA,EACVC,SAAU+D,EAAe5B,UACzBlC,OAAQ8D,EAAe3B,UAGzB,qCACE,mBAAGvB,UAAU,YAAb,SAA0B8D,EAAU,GAAKO,GAAQ,MAC/CP,GAAWO,GACX,qCACE,wBAAQG,QAtCE,WACtBD,IACAV,GAAc,SAACY,GAAD,OAAgBA,MAoCgBzE,UAAU,cAA5C,kBAGA,wBAAQwE,QApCI,WACxBD,IACAZ,GAAgB,SAACc,GAAD,OAAgBA,MAkCgBzE,UAAU,cAA9C,oBAGC4D,GAAc,QAASV,GACpB,cAAC,EAAD,CACIV,UAAWU,EAAewB,IAC1BxB,eAAgBA,EAChBC,gBAAiBU,EACjBT,kBAAmBA,IAG1BM,GAAgB,QAASR,GACxB,cAAC,EAAD,CACEV,UAAWU,EAAewB,IAC1BjC,SA9CG,kBAAMsB,GAAW,YAsDhC,6BCfOY,EAvES,SAAC,GAA0G,IAAzGC,EAAwG,EAAxGA,KAAM1F,EAAkG,EAAlGA,SAAUC,EAAwF,EAAxFA,SAAUC,EAA8E,EAA9EA,OAAQyF,EAAsE,EAAtEA,uBAAwBC,EAA8C,EAA9CA,oBAGhF,EAAsCzF,mBAA6B,MAAnE,mBAAO0F,EAAP,KAAoBC,EAApB,KAEAC,qBAAU,WACR7E,MAAM,GAAD,OAJkBC,+BAIlB,iCAAoCuE,GAAQ,CAC/CtE,OAAQ,MACRC,QAAS,IAAIC,QAAQ,CACnBC,cAAc,WAAD,OARSJ,iDAWvBmB,MAAK,SAACC,GAAD,OAASA,EAAIC,UAClBF,MAAK,SAACG,GACLqD,EAAerD,MAEhBE,MAAMC,QAAQC,SAChB,CAAC6C,IAEN,IAAMM,EAA+CC,mBAAQ,WAC3D,IAAKhG,IAAaC,EAAQ,MAAO,GACjC,IAAK2F,EAAa,MAAO,GAGzB,IAAMK,EAAanB,WAASC,QAAQ/E,GAG9BkG,EAFWpB,WAASC,QAAQ9E,GAEZiG,KAAKD,EAAY,CAAC,WAAWE,WAC7CC,GAAe,OAAJF,QAAI,IAAJA,OAAA,EAAAA,EAAMG,SAAUH,EAAKG,QA9BhB,GA8B8C,EAE9DC,GAAqB,OAAXV,QAAW,IAAXA,OAAA,EAAAA,EAAaU,UAAW,GAqBxC,OAlBcC,MAAMC,KAAKD,MAAMH,IAAWK,KAAI,SAACC,EAAGC,GAChD,IAAMC,EAAmBX,EAAWY,KAAK,CACvCR,QArCkB,GAqCTM,IAELG,EAAiBF,EAAiBC,KAAK,CAC3CR,QAxCkB,KA2CdU,EAAiBH,EAAiBI,QAAQhC,SAAS,4BACnDiC,EAAeH,EAAeE,QAAQhC,SAAS,4BAMrD,OALesB,EAAQY,MACrB,SAACC,GAAD,OACEA,EAAOhF,WAAa4E,GAAkBI,EAAO/E,SAAW6E,MAG3C,CAAE9E,UAAW4E,EAAgB3E,QAAS6E,QAIxD,CAACrB,IAKJ,OAHAF,EAAuBE,EAAcA,EAAYU,QAAQc,OAAQ,GACjEzB,EAAoBI,EAAaA,EAAWqB,OAAQ,GAGlD,qBAAKvG,UAAU,mBAAf,SACGkF,GACCA,EAAWU,KAAI,SAACtC,EAAYkD,GAAb,OACb,cAAC,EAAD,CAEEtH,SAAUA,EACVoE,WAAYA,EACZC,QAASiD,EAAQ,GAHZA,SC/EF,MAA0B,oD,gBC0D1BC,MAxCf,YAA0F,IAApEpF,EAAmE,EAAnEA,MAUZqF,EARkB,SAACC,EAAoCC,GACzD,OAA4B,OAAxBD,GAAqD,OAArBC,EACzB,CAACC,SAAU,EAAGC,MAAO,EAAGC,QAAS,GAGrC,CAACF,SAAUF,EAAqBG,MAAOF,EAAkBG,QAAgC,IAAtBJ,EAA6BC,GAGjFI,CAV2D,EAA5DL,oBAA4D,EAAvCC,kBAY9C,OACI,yBAAQ5G,UAAU,aAAlB,UACI,qBAAKiH,IAAKC,EAAMlH,UAAU,WAAWmH,IAAI,SACzC,qDACA,sDACA,mCAAM9F,GAAS4C,WAASC,QAAQ7C,EAAMC,WAAW6C,SAAS,kBAA1D,MAAgF9C,GAAS4C,WAASC,QAAQ7C,EAAME,SAAS4C,SAAS,kBAAlI,IAAsJ9C,GAAS4C,WAASC,QAAQ7C,EAAMC,WAAW6C,SAAS,WAC1M,uBAEA,cAAC,IAAD,CACInE,UAAU,UACVoH,QAAS,UACTC,YAAa,UACbC,eAAe,QACfC,eAAgB,UAChBC,MAAO,OACPC,OAAQ,OACRC,OAAQ,MACRC,YAAW,UAAKjB,EAAkBG,SAAvB,YAAmCH,EAAkBI,MAArD,qBACXc,UAAWlB,EAAkBK,UAGjC,uBACA,gDAAmB9F,KAAKC,iBAAiBC,kBAAkBC,YAC3D,mBAAGpB,UAAU,iBAAb,SAA8B,qDAAgC,mBAAG6H,KAAM,wBAAT,6CCN3DC,MA1Cf,WACI,MAAoCzI,mBAA4B,MAAhE,mBAAO0I,EAAP,KAAmBC,EAAnB,KACA,EAAsD3I,mBAAwB,MAA9E,mBAAOsH,EAAP,KAA4B9B,EAA5B,KACA,EAAgDxF,mBAAwB,MAAxE,mBAAOuH,EAAP,KAAyB9B,EAAzB,KAIMmD,EAAqB5H,mBAE3B4E,qBAAU,WACR7E,MAAM,GAAD,OAJkBC,+BAIlB,yBAA4B4H,GAAa,CAC5C3H,OAAQ,MACRC,QAAS,IAAIC,QAAQ,CACnBC,cAAc,WAAD,OARSJ,iDAWvBmB,MAAK,SAACC,GAAD,OAASA,EAAIC,UAClBF,MAAK,SAACG,GACLqG,EAAcrG,MAEfE,MAAMC,QAAQC,SAChB,CAACkG,IAEJ,IAAM5G,EAAK,OAAG0G,QAAH,IAAGA,OAAH,EAAGA,EAAYtC,QAAQ,GAElC,OACE,uBAAMzF,UAAU,MAAhB,UACE,cAAC,EAAD,CAAaqB,MAAOA,EAAOsF,oBAAqBA,EAAqBC,iBAAkBA,IACtFvF,GACC,cAAC,EAAD,CACEuD,KAAMvD,EAAMuD,KACZ1F,SAAUmC,EAAMqD,IAChBvF,SAAUkC,EAAMC,UAChBlC,OAAQiC,EAAME,QACdsD,uBAAwBA,EACxBC,oBAAqBA,QCjClBoD,MAJf,WACE,OAAO,cAAC,EAAD,KCCTC,IAASC,OACP,cAAC,IAAMC,WAAP,UACE,cAAC,EAAD,MAEFC,SAASC,eAAe,W","file":"static/js/main.2a3ce1ed.chunk.js","sourcesContent":["import React, { ReactElement, useState } from 'react';\n\ninterface Props {\n eventUrl: string,\n startsAt: string,\n endsAt: string\n}\n\nfunction PerformanceCreateForm({eventUrl, startsAt, endsAt}: Props): ReactElement {\n const [name, setName] = useState(\"\");\n const [email, setEmail] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [streamkey, setStreamKey] = useState(\"\");\n const [location, setLocation] = useState(\"\");\n const muxyApiKey: string = (process.env.REACT_APP_MUXY_API_KEY as string);\n const muxyUrl: string = (process.env.REACT_APP_MUXY_URL as string);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n fetch(`${muxyUrl}/streams/`, {\n method: \"post\",\n headers: new Headers({\n Authorization: `Api-Key ${muxyApiKey}`,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n publisher_name: name,\n publisher_email: email,\n description: description,\n location: location,\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n event: eventUrl, // This needs to come from the muxy event (isn't available right now)\n starts_at: startsAt, // This needs to be calculated before\n ends_at: endsAt, // This needs to be calculated before\n }),\n })\n .then((res) => res.json())\n .then((data) => {\n setStreamKey(data.key);\n })\n .catch(console.error);\n }\n\n return (\n <>\n {streamkey && (\n
\n

You have successfully registered for the event. Your streamkey is {streamkey}

\n

You should have received this as an email too.

\n

Save this key well, you will need it for the event and also to delete your slot again.

\n

When this page is reloaded, the key will no longer be displayed.

\n
\n )}\n {!streamkey && (\n
\n setName(e.target.value)} required />\n setEmail(e.target.value)} required />\n setDescription(e.target.value)} required />\n setLocation(e.target.value)} required />\n \n
\n )}\n \n );\n}\n\nexport default PerformanceCreateForm;\n","import React, { ReactElement, useState } from \"react\";\n\ninterface Props {\n streamUrl: string;\n onRemove: () => void;\n}\n\nfunction PerformanceDestroyForm({ streamUrl, onRemove }: Props): ReactElement {\n const [streamKey, setStreamKey] = useState(\"\");\n const [failed, setFailed] = useState(false);\n const muxyApiKey: string = process.env.REACT_APP_MUXY_API_KEY as string;\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n setFailed(false);\n\n const headers = new Headers({\n Authorization: `Api-Key ${muxyApiKey}`,\n \"X-Stream-Key\": streamKey,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n });\n\n fetch(streamUrl, {\n method: \"DELETE\",\n headers,\n })\n .then((res) => {\n if (res.ok) {\n setStreamKey(\"\");\n onRemove && onRemove();\n } else {\n setFailed(true);\n }\n })\n .catch((err) => {\n console.error(err);\n setFailed(true);\n });\n };\n\n return (\n <>\n {\n
\n

\n Enter your streaming key to confirm you want to remove your slot. If\n you do not remember your streaming key, please contact the event\n organizer.\n

\n\n {failed && (\n

\n Something went wrong, did you entered the incorrect stream key? Please try again.\n

\n )}\n setStreamKey(e.target.value)}\n required\n />\n \n \n }\n \n );\n}\n\nexport default PerformanceDestroyForm;\n","import React, { ReactElement, useState } from 'react';\nimport { MuxyStream } from \"../types\";\n\ninterface Props {\n streamUrl: string;\n currMuxyStream: MuxyStream;\n onSetInEditMode: (inEditMode: boolean) => void;\n setCurrMuxyStream: (muxyStream: MuxyStream) => void;\n}\n\nfunction PerformanceEditForm({ streamUrl, currMuxyStream, onSetInEditMode, setCurrMuxyStream }: Props): ReactElement {\n const [name, setName] = useState(currMuxyStream.publisher_name);\n const [description, setDescription] = useState(currMuxyStream.description);\n const [streamKey, setStreamKey] = useState(\"\");\n const [location, setLocation] = useState(currMuxyStream.location);\n const [failed, setFailed] = useState(false);\n const muxyApiKey: string = process.env.REACT_APP_MUXY_API_KEY as string;\n\n const handleSubmit = (e: React.FormEvent) => {\n\n e.preventDefault();\n setFailed(false);\n\n const headers = new Headers({\n Authorization: `Api-Key ${muxyApiKey}`,\n \"X-Stream-Key\": streamKey,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n });\n\n const body = JSON.stringify({\n publisher_name: name,\n description: description,\n location: location,\n ends_at: currMuxyStream.ends_at,\n starts_at: currMuxyStream.starts_at,\n event: currMuxyStream.event,\n });\n\n fetch(streamUrl, {\n method: \"PUT\",\n headers,\n body\n })\n .then((res) => {\n if (res.ok) {\n setStreamKey(\"\");\n onSetInEditMode(false);\n setCurrMuxyStream({\n ...currMuxyStream,\n publisher_name: name,\n description: description,\n location: location\n })\n } else {\n setFailed(true);\n }\n })\n .catch((err) => {\n console.error(err);\n setFailed(true);\n });\n };\n\n return (\n
\n
\n

\n Enter your streaming key to confirm you want to edit your slot. If\n you do not remember your streaming key, please contact the event\n organizer.\n

\n {failed && (\n

\n Something went wrong, did you entered the incorrect stream key? Please try again.\n

\n )}\n\n setStreamKey(e.target.value)} required />\n

\n Here you find your stream information that you can edit.\n The email address can not displayed for security reasons. If you have problems\n with your e-mail adress, please contace the event organizer.\n The information will only be updated if you have entered the correct stream key.\n

\n setName(e.target.value)} required />\n setDescription(e.target.value)} required />\n setLocation(e.target.value)} required />\n \n
\n
\n );\n}\n\nexport default PerformanceEditForm;\n","import React, { ReactElement, useState } from \"react\";\nimport \"../../assets/css/PerformanceCard.css\";\nimport { EmptyMuxyStream, MuxyStream } from \"../types\";\nimport PerformanceCreateForm from \"./PerformanceCreateForm\";\nimport PerformanceDestroyForm from \"./PerformanceDestroyForm\";\nimport { DateTime } from \"luxon\";\nimport PerformanceEditForm from \"./PerformanceEditForm\";\n\ninterface Props {\n muxyStream: MuxyStream | EmptyMuxyStream;\n cycleNo: number;\n eventUrl: string;\n}\n\nconst PerformanceCard = ({\n muxyStream,\n cycleNo,\n eventUrl,\n}: Props): ReactElement => {\n const [inCreateMode, setInCreateMode] = useState(false);\n const [currMuxyStream, setCurrMuxyStream] = useState(muxyStream);\n const [inRemoveMode, setInRemoveMode] = useState(false);\n const [inEditMode, setInEditMode] = useState(false);\n const [removed, setRemoved] = useState(false);\n\n const startsAtHs = DateTime.fromISO(muxyStream.starts_at).toFormat(\"HH:mm LLL dd\");\n const endsAtHs = DateTime.fromISO(muxyStream.ends_at).toFormat(\"HH:mm LLL dd\");\n\n let text = null;\n if (\"publisher_name\" in currMuxyStream) {\n const { publisher_name, location, description, timezone } = currMuxyStream;\n text = [publisher_name, location, description, timezone].join(\" / \");\n }\n\n const resetFormStates = () => {\n setInCreateMode(false);\n setInRemoveMode(false);\n setInEditMode(false);\n }\n\n const handleEditClick = () => {\n resetFormStates();\n setInEditMode((prevState) => !prevState)\n };\n\n const handleRemoveClick = () => {\n resetFormStates();\n setInRemoveMode((prevState) => !prevState);\n }\n const handleRemove = () => setRemoved(true);\n\n return (\n
\n
\n

Cycle #{cycleNo}

\n

\n {startsAtHs}-{endsAtHs}{\" \"}\n {!inCreateMode && !text && (\n setInCreateMode(true)}\n >\n +\n \n )}\n

\n {removed &&

You have removed your slot succesfully.

}\n {inCreateMode ? (\n \n ) : (\n <>\n

{removed ? \"\" : text || \"\"}

\n {!removed && text && (\n <>\n \n \n {inEditMode && \"url\" in currMuxyStream && (\n \n )}\n {inRemoveMode && \"url\" in currMuxyStream && (\n \n )}\n \n )}\n \n )}\n\n
\n
\n
\n );\n};\n\nexport default PerformanceCard;\n","import React, { ReactElement, useEffect, useState, useMemo } from \"react\";\nimport \"../../assets/css/PerformanceList.css\";\nimport { MuxyStreams, MuxyStream, EmptyMuxyStream } from \"../types\";\nimport PerformanceCard from \"./PerformanceCard\";\nimport { DateTime } from \"luxon\";\n\ninterface Props {\n slug: string;\n eventUrl: string;\n startsAt: string;\n endsAt: string;\n setReservedStreamCount: (reservedStreamCount: number | null) => void;\n setTotalStreamCount: (ttalStreamCount: number | null) => void;\n}\n\nconst SLOT_DURATION_MIN = 15;\n\nconst PerformanceList = ({slug, eventUrl, startsAt, endsAt, setReservedStreamCount, setTotalStreamCount}: Props): ReactElement => {\n const muxyApiKey: string = (process.env.REACT_APP_MUXY_API_KEY as string);\n const muxyUrl: string = (process.env.REACT_APP_MUXY_URL as string);\n const [muxyStreams, setMuxyStreams] = useState(null);\n\n useEffect(() => {\n fetch(`${muxyUrl}/streams/?event__slug=${slug}`, {\n method: \"get\",\n headers: new Headers({\n Authorization: `Api-Key ${muxyApiKey}`,\n }),\n })\n .then((res) => res.json())\n .then((data) => {\n setMuxyStreams(data);\n })\n .catch(console.error);\n }, [slug]);\n\n const allStreams: (MuxyStream | EmptyMuxyStream)[] = useMemo(() => {\n if (!startsAt || !endsAt) return [];\n if (!muxyStreams) return [];\n\n // eslint-disable-next-line no-debugger\n const startsAtDt = DateTime.fromISO(startsAt);\n const endsAtDt = DateTime.fromISO(endsAt);\n\n const diff = endsAtDt.diff(startsAtDt, [\"minute\"]).toObject();\n const numSlots = diff?.minutes ? diff.minutes / SLOT_DURATION_MIN : 0;\n\n const results = muxyStreams?.results || [];\n\n // Build slots array\n const slots = Array.from(Array(numSlots)).map((_, i) => {\n const streamStartsAtDt = startsAtDt.plus({\n minutes: i * SLOT_DURATION_MIN,\n });\n const streamEndsAtDt = streamStartsAtDt.plus({\n minutes: SLOT_DURATION_MIN,\n });\n\n const streamStartsAt = streamStartsAtDt.toUTC().toFormat(\"yyyy-MM-dd'T'HH:mm:ss'Z'\");\n const streamEndsAt = streamEndsAtDt.toUTC().toFormat(\"yyyy-MM-dd'T'HH:mm:ss'Z'\")\n const stream = results.find(\n (stream) =>\n stream.starts_at == streamStartsAt && stream.ends_at == streamEndsAt\n );\n\n return stream || { starts_at: streamStartsAt, ends_at: streamEndsAt };\n });\n\n return slots\n }, [muxyStreams]);\n\n setReservedStreamCount(muxyStreams ? muxyStreams.results.length: 0);\n setTotalStreamCount(allStreams ? allStreams.length: 0);\n\n return (\n
\n {allStreams &&\n allStreams.map((muxyStream, index) => (\n \n ))}\n
\n );\n};\nexport default PerformanceList;\n","export default __webpack_public_path__ + \"static/media/longestnight-sunset-2.0.74a19890.svg\";","import React, { ReactElement } from 'react';\nimport logo from \"../../assets/images/longestnight-sunset-2.0.svg\";\nimport { MuxyEvent } from \"../types\";\nimport { DateTime } from \"luxon\";\nimport ProgressBar from \"@ramonak/react-progress-bar\";\n\ninterface Props {\n event: MuxyEvent | undefined\n reservedStreamCount: number | null\n totalStreamCount: number | null\n}\n\ninterface ProgressType {\n reserved: number,\n total: number\n percent: number;\n}\n\nfunction EventHeader({event, reservedStreamCount, totalStreamCount}:Props): ReactElement {\n\n const calcProgressbar = (reservedStreamCount: number | null, totalStreamCount: number | null) : ProgressType => {\n if (reservedStreamCount === null || totalStreamCount === null) {\n return {reserved: 0, total: 0, percent: 0};\n }\n\n return {reserved: reservedStreamCount, total: totalStreamCount, percent: (reservedStreamCount * 100) / totalStreamCount};\n }\n\n const progressBarValues = calcProgressbar(reservedStreamCount, totalStreamCount);\n\n return (\n
\n \"logo\"\n

TOPLAP Presents ...

\n

Solstice Stream 2023

\n

{event && DateTime.fromISO(event.starts_at).toFormat(\"dd. LLLL HH:mm\")} - {event && DateTime.fromISO(event.ends_at).toFormat(\"dd. LLLL HH:mm\")} {event && DateTime.fromISO(event.starts_at).toFormat(\"yyyy\")}

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

Your timezone: {Intl.DateTimeFormat().resolvedOptions().timeZone}

\n

Watch live here >>> https://eulerroom.com/

\n
\n );\n}\n\nexport default EventHeader;\n","import React, { ReactElement, useEffect, useState } from 'react';\nimport PerformanceList from \"../components/PerformanceList\";\nimport { MuxyEvents } from \"../types\";\nimport EventHeader from \"./EventHeader\";\n\nfunction EventPage(): ReactElement {\n const [muxyEvents, setMuxyEvents] = useState(null);\n const [reservedStreamCount, setReservedStreamCount] = useState(null);\n const [totalStreamCount, setTotalStreamCount] = useState(null);\n\n const muxyApiKey: string = (process.env.REACT_APP_MUXY_API_KEY as string);\n const muxyUrl: string = (process.env.REACT_APP_MUXY_URL as string);\n const eventSlug: string = (process.env.REACT_APP_EVENT_SLUG as string);\n\n useEffect(() => {\n fetch(`${muxyUrl}/events/?slug=${eventSlug}`, {\n method: \"get\",\n headers: new Headers({\n Authorization: `Api-Key ${muxyApiKey}`,\n }),\n })\n .then((res) => res.json())\n .then((data) => {\n setMuxyEvents(data);\n })\n .catch(console.error);\n }, [eventSlug]);\n\n const event = muxyEvents?.results[0];\n\n return (\n
\n \n {event && (\n \n )}\n
\n );\n}\n\nexport default EventPage;\n","import React, { ReactElement } from 'react';\nimport EventPage from \"./components/EventPage\";\n\nfunction App(): ReactElement {\n return \n}\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './assets/css/styles.css';\nimport App from './app/App';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/main.703a9ab7.chunk.js.map b/static/js/main.703a9ab7.chunk.js.map deleted file mode 100644 index 081e5c4..0000000 --- a/static/js/main.703a9ab7.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["app/components/PerformanceCreateForm.tsx","app/components/PerformanceDestroyForm.tsx","app/components/PerformanceEditForm.tsx","app/components/PerformanceCard.tsx","app/components/PerformanceList.tsx","assets/images/longestnight-sunset-2.0.svg","app/components/EventHeader.tsx","app/components/EventPage.tsx","app/App.tsx","index.tsx"],"names":["PerformanceCreateForm","eventUrl","startsAt","endsAt","useState","name","setName","email","setEmail","description","setDescription","streamkey","setStreamKey","location","setLocation","className","onSubmit","e","preventDefault","fetch","process","method","headers","Headers","Authorization","Accept","body","JSON","stringify","publisher_name","publisher_email","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","event","starts_at","ends_at","then","res","json","data","key","catch","console","error","id","type","placeholder","value","onChange","target","required","PerformanceDestroyForm","streamUrl","onRemove","streamKey","failed","setFailed","ok","err","style","color","PerformanceEditForm","currMuxyStream","onSetInEditMode","setCurrMuxyStream","PerformanceCard","muxyStream","cycleNo","inCreateMode","setInCreateMode","inRemoveMode","setInRemoveMode","inEditMode","setInEditMode","removed","setRemoved","startsAtHs","DateTime","fromISO","toFormat","endsAtHs","text","join","resetFormStates","onClick","prevState","url","PerformanceList","slug","setReservedStreamCount","setTotalStreamCount","muxyStreams","setMuxyStreams","useEffect","allStreams","useMemo","startsAtDt","diff","toObject","numSlots","minutes","results","Array","from","map","_","i","streamStartsAtDt","plus","streamEndsAtDt","streamStartsAt","toUTC","streamEndsAt","find","stream","length","index","EventHeader","progressBarValues","reservedStreamCount","totalStreamCount","reserved","total","percent","calcProgressbar","src","logo","alt","bgColor","baseBgColor","labelClassName","labelAlignment","width","height","margin","customLabel","completed","href","EventPage","muxyEvents","setMuxyEvents","eventSlug","App","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.703a9ab7.chunk.js","sourcesContent":["import React, { ReactElement, useState } from 'react';\n\ninterface Props {\n eventUrl: string,\n startsAt: string,\n endsAt: string\n}\n\nfunction PerformanceCreateForm({eventUrl, startsAt, endsAt}: Props): ReactElement {\n const [name, setName] = useState(\"\");\n const [email, setEmail] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [streamkey, setStreamKey] = useState(\"\");\n const [location, setLocation] = useState(\"\");\n const muxyApiKey: string = (process.env.REACT_APP_MUXY_API_KEY as string);\n const muxyUrl: string = (process.env.REACT_APP_MUXY_URL as string);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n fetch(`${muxyUrl}/streams/`, {\n method: \"post\",\n headers: new Headers({\n Authorization: `Api-Key ${muxyApiKey}`,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n publisher_name: name,\n publisher_email: email,\n description: description,\n location: location,\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n event: eventUrl, // This needs to come from the muxy event (isn't available right now)\n starts_at: startsAt, // This needs to be calculated before\n ends_at: endsAt, // This needs to be calculated before\n }),\n })\n .then((res) => res.json())\n .then((data) => {\n setStreamKey(data.key);\n })\n .catch(console.error);\n }\n\n return (\n <>\n {streamkey && (\n
\n

You have successfully registered for the event. Your streamkey is {streamkey}

\n

You should have received this as an email too.

\n

Save this key well, you will need it for the event and also to delete your slot again.

\n

When this page is reloaded, the key will no longer be displayed.

\n
\n )}\n {!streamkey && (\n
\n setName(e.target.value)} required />\n setEmail(e.target.value)} required />\n setDescription(e.target.value)} required />\n setLocation(e.target.value)} required />\n \n
\n )}\n \n );\n}\n\nexport default PerformanceCreateForm;\n","import React, { ReactElement, useState } from \"react\";\n\ninterface Props {\n streamUrl: string;\n onRemove: () => void;\n}\n\nfunction PerformanceDestroyForm({ streamUrl, onRemove }: Props): ReactElement {\n const [streamKey, setStreamKey] = useState(\"\");\n const [failed, setFailed] = useState(false);\n const muxyApiKey: string = process.env.REACT_APP_MUXY_API_KEY as string;\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n setFailed(false);\n\n const headers = new Headers({\n Authorization: `Api-Key ${muxyApiKey}`,\n \"X-Stream-Key\": streamKey,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n });\n\n fetch(streamUrl, {\n method: \"DELETE\",\n headers,\n })\n .then((res) => {\n if (res.ok) {\n setStreamKey(\"\");\n onRemove && onRemove();\n } else {\n setFailed(true);\n }\n })\n .catch((err) => {\n console.error(err);\n setFailed(true);\n });\n };\n\n return (\n <>\n {\n
\n

\n Enter your streaming key to confirm you want to remove your slot. If\n you do not remember your streaming key, please contact the event\n organizer.\n

\n\n {failed && (\n

\n Something went wrong, did you entered the incorrect stream key? Please try again.\n

\n )}\n setStreamKey(e.target.value)}\n required\n />\n \n \n }\n \n );\n}\n\nexport default PerformanceDestroyForm;\n","import React, { ReactElement, useState } from 'react';\nimport { MuxyStream } from \"../types\";\n\ninterface Props {\n streamUrl: string;\n currMuxyStream: MuxyStream;\n onSetInEditMode: (inEditMode: boolean) => void;\n setCurrMuxyStream: (muxyStream: MuxyStream) => void;\n}\n\nfunction PerformanceEditForm({ streamUrl, currMuxyStream, onSetInEditMode, setCurrMuxyStream }: Props): ReactElement {\n const [name, setName] = useState(currMuxyStream.publisher_name);\n const [description, setDescription] = useState(currMuxyStream.description);\n const [streamKey, setStreamKey] = useState(\"\");\n const [location, setLocation] = useState(currMuxyStream.location);\n const [failed, setFailed] = useState(false);\n const muxyApiKey: string = process.env.REACT_APP_MUXY_API_KEY as string;\n\n const handleSubmit = (e: React.FormEvent) => {\n\n e.preventDefault();\n setFailed(false);\n\n const headers = new Headers({\n Authorization: `Api-Key ${muxyApiKey}`,\n \"X-Stream-Key\": streamKey,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n });\n\n const body = JSON.stringify({\n publisher_name: name,\n description: description,\n location: location,\n ends_at: currMuxyStream.ends_at,\n starts_at: currMuxyStream.starts_at,\n event: currMuxyStream.event,\n });\n\n fetch(streamUrl, {\n method: \"PUT\",\n headers,\n body\n })\n .then((res) => {\n if (res.ok) {\n setStreamKey(\"\");\n onSetInEditMode(false);\n setCurrMuxyStream({\n ...currMuxyStream,\n publisher_name: name,\n description: description,\n location: location\n })\n } else {\n setFailed(true);\n }\n })\n .catch((err) => {\n console.error(err);\n setFailed(true);\n });\n };\n\n return (\n
\n
\n

\n Enter your streaming key to confirm you want to edit your slot. If\n you do not remember your streaming key, please contact the event\n organizer.\n

\n {failed && (\n

\n Something went wrong, did you entered the incorrect stream key? Please try again.\n

\n )}\n\n setStreamKey(e.target.value)} required />\n

\n Here you find your stream information that you can edit.\n The email address can not displayed for security reasons. If you have problems\n with your e-mail adress, please contace the event organizer.\n The information will only be updated if you have entered the correct stream key.\n

\n setName(e.target.value)} required />\n setDescription(e.target.value)} required />\n setLocation(e.target.value)} required />\n \n
\n
\n );\n}\n\nexport default PerformanceEditForm;\n","import React, { ReactElement, useState } from \"react\";\nimport \"../../assets/css/PerformanceCard.css\";\nimport { EmptyMuxyStream, MuxyStream } from \"../types\";\nimport PerformanceCreateForm from \"./PerformanceCreateForm\";\nimport PerformanceDestroyForm from \"./PerformanceDestroyForm\";\nimport { DateTime } from \"luxon\";\nimport PerformanceEditForm from \"./PerformanceEditForm\";\n\ninterface Props {\n muxyStream: MuxyStream | EmptyMuxyStream;\n cycleNo: number;\n eventUrl: string;\n}\n\nconst PerformanceCard = ({\n muxyStream,\n cycleNo,\n eventUrl,\n}: Props): ReactElement => {\n const [inCreateMode, setInCreateMode] = useState(false);\n const [currMuxyStream, setCurrMuxyStream] = useState(muxyStream);\n const [inRemoveMode, setInRemoveMode] = useState(false);\n const [inEditMode, setInEditMode] = useState(false);\n const [removed, setRemoved] = useState(false);\n\n const startsAtHs = DateTime.fromISO(muxyStream.starts_at).toFormat(\"HH:mm LLL dd\");\n const endsAtHs = DateTime.fromISO(muxyStream.ends_at).toFormat(\"HH:mm LLL dd\");\n\n let text = null;\n if (\"publisher_name\" in currMuxyStream) {\n const { publisher_name, location, description, timezone } = currMuxyStream;\n text = [publisher_name, location, description, timezone].join(\" / \");\n }\n\n const resetFormStates = () => {\n setInCreateMode(false);\n setInRemoveMode(false);\n setInEditMode(false);\n }\n\n const handleEditClick = () => {\n resetFormStates();\n setInEditMode((prevState) => !prevState)\n };\n\n const handleRemoveClick = () => {\n resetFormStates();\n setInRemoveMode((prevState) => !prevState);\n }\n const handleRemove = () => setRemoved(true);\n\n return (\n
\n
\n

Cycle #{cycleNo}

\n

\n {startsAtHs}-{endsAtHs}{\" \"}\n {!inCreateMode && !text && (\n setInCreateMode(true)}\n >\n +\n \n )}\n

\n {removed &&

You have removed your slot succesfully.

}\n {inCreateMode ? (\n \n ) : (\n <>\n

{removed ? \"\" : text || \"\"}

\n {!removed && text && (\n <>\n \n \n {inEditMode && \"url\" in currMuxyStream && (\n \n )}\n {inRemoveMode && \"url\" in currMuxyStream && (\n \n )}\n \n )}\n \n )}\n\n
\n
\n
\n );\n};\n\nexport default PerformanceCard;\n","import React, { ReactElement, useEffect, useState, useMemo } from \"react\";\nimport \"../../assets/css/PerformanceList.css\";\nimport { MuxyStreams, MuxyStream, EmptyMuxyStream } from \"../types\";\nimport PerformanceCard from \"./PerformanceCard\";\nimport { DateTime } from \"luxon\";\n\ninterface Props {\n slug: string;\n eventUrl: string;\n startsAt: string;\n endsAt: string;\n setReservedStreamCount: (reservedStreamCount: number | null) => void;\n setTotalStreamCount: (ttalStreamCount: number | null) => void;\n}\n\nconst SLOT_DURATION_MIN = 15;\n\nconst PerformanceList = ({slug, eventUrl, startsAt, endsAt, setReservedStreamCount, setTotalStreamCount}: Props): ReactElement => {\n const muxyApiKey: string = (process.env.REACT_APP_MUXY_API_KEY as string);\n const muxyUrl: string = (process.env.REACT_APP_MUXY_URL as string);\n const [muxyStreams, setMuxyStreams] = useState(null);\n\n useEffect(() => {\n fetch(`${muxyUrl}/streams/?event__slug=${slug}`, {\n method: \"get\",\n headers: new Headers({\n Authorization: `Api-Key ${muxyApiKey}`,\n }),\n })\n .then((res) => res.json())\n .then((data) => {\n setMuxyStreams(data);\n })\n .catch(console.error);\n }, [slug]);\n\n const allStreams: (MuxyStream | EmptyMuxyStream)[] = useMemo(() => {\n if (!startsAt || !endsAt) return [];\n if (!muxyStreams) return [];\n\n // eslint-disable-next-line no-debugger\n const startsAtDt = DateTime.fromISO(startsAt);\n const endsAtDt = DateTime.fromISO(endsAt);\n\n const diff = endsAtDt.diff(startsAtDt, [\"minute\"]).toObject();\n const numSlots = diff?.minutes ? diff.minutes / SLOT_DURATION_MIN : 0;\n\n const results = muxyStreams?.results || [];\n\n // Build slots array\n const slots = Array.from(Array(numSlots)).map((_, i) => {\n const streamStartsAtDt = startsAtDt.plus({\n minutes: i * SLOT_DURATION_MIN,\n });\n const streamEndsAtDt = streamStartsAtDt.plus({\n minutes: SLOT_DURATION_MIN,\n });\n\n const streamStartsAt = streamStartsAtDt.toUTC().toFormat(\"yyyy-MM-dd'T'HH:mm:ss'Z'\");\n const streamEndsAt = streamEndsAtDt.toUTC().toFormat(\"yyyy-MM-dd'T'HH:mm:ss'Z'\")\n const stream = results.find(\n (stream) =>\n stream.starts_at == streamStartsAt && stream.ends_at == streamEndsAt\n );\n\n return stream || { starts_at: streamStartsAt, ends_at: streamEndsAt };\n });\n\n return slots\n }, [muxyStreams]);\n\n setReservedStreamCount(muxyStreams ? muxyStreams.results.length: 0);\n setTotalStreamCount(allStreams ? allStreams.length: 0);\n\n return (\n
\n {allStreams &&\n allStreams.map((muxyStream, index) => (\n \n ))}\n
\n );\n};\nexport default PerformanceList;\n","export default __webpack_public_path__ + \"static/media/longestnight-sunset-2.0.74a19890.svg\";","import React, { ReactElement } from 'react';\nimport logo from \"../../assets/images/longestnight-sunset-2.0.svg\";\nimport { MuxyEvent } from \"../types\";\nimport { DateTime } from \"luxon\";\nimport ProgressBar from \"@ramonak/react-progress-bar\";\n\ninterface Props {\n event: MuxyEvent | undefined\n reservedStreamCount: number | null\n totalStreamCount: number | null\n}\n\ninterface ProgressType {\n reserved: number,\n total: number\n percent: number;\n}\n\nfunction EventHeader({event, reservedStreamCount, totalStreamCount}:Props): ReactElement {\n\n const calcProgressbar = (reservedStreamCount: number | null, totalStreamCount: number | null) : ProgressType => {\n if (reservedStreamCount === null || totalStreamCount === null) {\n return {reserved: 0, total: 0, percent: 0};\n }\n\n return {reserved: reservedStreamCount, total: totalStreamCount, percent: (reservedStreamCount * 100) / totalStreamCount};\n }\n\n const progressBarValues = calcProgressbar(reservedStreamCount, totalStreamCount);\n\n return (\n
\n \"logo\"\n

TOPLAP Presents ...

\n

Solstice Stream 2023

\n

{event && DateTime.fromISO(event.starts_at).toFormat(\"dd. LLLL HH:mm\")} - {event && DateTime.fromISO(event.ends_at).toFormat(\"dd. LLLL HH:mm\")} {event && DateTime.fromISO(event.starts_at).toFormat(\"yyyy\")}

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

Your timezone: {Intl.DateTimeFormat().resolvedOptions().timeZone}

\n

https://eulerroom.com/

\n
\n );\n}\n\nexport default EventHeader;\n","import React, { ReactElement, useEffect, useState } from 'react';\nimport PerformanceList from \"../components/PerformanceList\";\nimport { MuxyEvents } from \"../types\";\nimport EventHeader from \"./EventHeader\";\n\nfunction EventPage(): ReactElement {\n const [muxyEvents, setMuxyEvents] = useState(null);\n const [reservedStreamCount, setReservedStreamCount] = useState(null);\n const [totalStreamCount, setTotalStreamCount] = useState(null);\n\n const muxyApiKey: string = (process.env.REACT_APP_MUXY_API_KEY as string);\n const muxyUrl: string = (process.env.REACT_APP_MUXY_URL as string);\n const eventSlug: string = (process.env.REACT_APP_EVENT_SLUG as string);\n\n useEffect(() => {\n fetch(`${muxyUrl}/events/?slug=${eventSlug}`, {\n method: \"get\",\n headers: new Headers({\n Authorization: `Api-Key ${muxyApiKey}`,\n }),\n })\n .then((res) => res.json())\n .then((data) => {\n setMuxyEvents(data);\n })\n .catch(console.error);\n }, [eventSlug]);\n\n const event = muxyEvents?.results[0];\n\n return (\n
\n \n {event && (\n \n )}\n
\n );\n}\n\nexport default EventPage;\n","import React, { ReactElement } from 'react';\nimport EventPage from \"./components/EventPage\";\n\nfunction App(): ReactElement {\n return \n}\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './assets/css/styles.css';\nimport App from './app/App';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n"],"sourceRoot":""} \ No newline at end of file