diff --git a/dist/assets/index-BFhsDQeb.js b/dist/assets/index-Dc12DMQT.js
similarity index 92%
rename from dist/assets/index-BFhsDQeb.js
rename to dist/assets/index-Dc12DMQT.js
index 039392c..92cc5b2 100644
--- a/dist/assets/index-BFhsDQeb.js
+++ b/dist/assets/index-Dc12DMQT.js
@@ -14,4 +14,4 @@
* @vue/runtime-dom v3.4.38
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
-**/const bl="http://www.w3.org/2000/svg",yl="http://www.w3.org/1998/Math/MathML",$e=typeof document<"u"?document:null,Fs=$e&&$e.createElement("template"),vl={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?$e.createElementNS(bl,e):t==="mathml"?$e.createElementNS(yl,e):n?$e.createElement(e,{is:n}):$e.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>$e.createTextNode(e),createComment:e=>$e.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>$e.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{Fs.innerHTML=s==="svg"?``:s==="mathml"?``:e;const c=Fs.content;if(s==="svg"||s==="mathml"){const u=c.firstChild;for(;u.firstChild;)c.appendChild(u.firstChild);c.removeChild(u)}t.insertBefore(c,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Be="transition",Et="animation",yt=Symbol("_vtc"),ro={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},wl=oe({},ui,ro),tt=(e,t=[])=>{L(e)?e.forEach(n=>n(...t)):e&&e(...t)},$s=e=>e?L(e)?e.some(t=>t.length>1):e.length>1:!1;function xl(e){const t={};for(const A in e)A in ro||(t[A]=e[A]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:c=`${n}-enter-to`,appearFromClass:u=o,appearActiveClass:a=i,appearToClass:d=c,leaveFromClass:b=`${n}-leave-from`,leaveActiveClass:v=`${n}-leave-active`,leaveToClass:x=`${n}-leave-to`}=e,T=Cl(r),S=T&&T[0],Q=T&&T[1],{onBeforeEnter:U,onEnter:W,onEnterCancelled:H,onLeave:G,onLeaveCancelled:ne,onBeforeAppear:R=U,onAppear:ae=W,onAppearCancelled:ie=H}=t,N=(A,z,le)=>{De(A,z?d:c),De(A,z?a:i),le&&le()},V=(A,z)=>{A._isLeaving=!1,De(A,b),De(A,x),De(A,v),z&&z()},J=A=>(z,le)=>{const Ye=A?ae:W,se=()=>N(z,A,le);tt(Ye,[z,se]),Ns(()=>{De(z,A?u:o),Fe(z,A?d:c),$s(Ye)||Hs(z,s,S,se)})};return oe(t,{onBeforeEnter(A){tt(U,[A]),Fe(A,o),Fe(A,i)},onBeforeAppear(A){tt(R,[A]),Fe(A,u),Fe(A,a)},onEnter:J(!1),onAppear:J(!0),onLeave(A,z){A._isLeaving=!0;const le=()=>V(A,z);Fe(A,b),Fe(A,v),io(),Ns(()=>{A._isLeaving&&(De(A,b),Fe(A,x),$s(G)||Hs(A,s,Q,le))}),tt(G,[A,le])},onEnterCancelled(A){N(A,!1),tt(H,[A])},onAppearCancelled(A){N(A,!0),tt(ie,[A])},onLeaveCancelled(A){V(A),tt(ne,[A])}})}function Cl(e){if(e==null)return null;if(q(e))return[En(e.enter),En(e.leave)];{const t=En(e);return[t,t]}}function En(e){return wo(e)}function Fe(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[yt]||(e[yt]=new Set)).add(t)}function De(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[yt];n&&(n.delete(t),n.size||(e[yt]=void 0))}function Ns(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let El=0;function Hs(e,t,n,s){const r=e._endId=++El,o=()=>{r===e._endId&&s()};if(n)return setTimeout(o,n);const{type:i,timeout:c,propCount:u}=oo(e,t);if(!i)return s();const a=i+"end";let d=0;const b=()=>{e.removeEventListener(a,v),o()},v=x=>{x.target===e&&++d>=u&&b()};setTimeout(()=>{d(n[T]||"").split(", "),r=s(`${Be}Delay`),o=s(`${Be}Duration`),i=js(r,o),c=s(`${Et}Delay`),u=s(`${Et}Duration`),a=js(c,u);let d=null,b=0,v=0;t===Be?i>0&&(d=Be,b=i,v=o.length):t===Et?a>0&&(d=Et,b=a,v=u.length):(b=Math.max(i,a),d=b>0?i>a?Be:Et:null,v=d?d===Be?o.length:u.length:0);const x=d===Be&&/\b(transform|all)(,|$)/.test(s(`${Be}Property`).toString());return{type:d,timeout:b,propCount:v,hasTransform:x}}function js(e,t){for(;e.lengthBs(n)+Bs(e[s])))}function Bs(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function io(){return document.body.offsetHeight}function Sl(e,t,n){const s=e[yt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Ds=Symbol("_vod"),Tl=Symbol("_vsh"),Ol=Symbol(""),Al=/(^|;)\s*display\s*:/;function Pl(e,t,n){const s=e.style,r=te(n);let o=!1;if(n&&!r){if(t)if(te(t))for(const i of t.split(";")){const c=i.slice(0,i.indexOf(":")).trim();n[c]==null&&Yt(s,c,"")}else for(const i in t)n[i]==null&&Yt(s,i,"");for(const i in n)i==="display"&&(o=!0),Yt(s,i,n[i])}else if(r){if(t!==n){const i=s[Ol];i&&(n+=";"+i),s.cssText=n,o=Al.test(n)}}else t&&e.removeAttribute("style");Ds in e&&(e[Ds]=o?s.display:"",e[Tl]&&(s.display="none"))}const Us=/\s*!important$/;function Yt(e,t,n){if(L(n))n.forEach(s=>Yt(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Ml(e,t);Us.test(n)?e.setProperty(ft(s),n.replace(Us,""),"important"):e[s]=n}}const Vs=["Webkit","Moz","ms"],Sn={};function Ml(e,t){const n=Sn[t];if(n)return n;let s=it(t);if(s!=="filter"&&s in e)return Sn[t]=s;s=sr(s);for(let r=0;rTn||(Nl.then(()=>Tn=0),Tn=Date.now());function jl(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;we(Bl(s,n.value),t,5,[s])};return n.value=e,n.attached=Hl(),n}function Bl(e,t){if(L(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const qs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Dl=(e,t,n,s,r,o)=>{const i=r==="svg";t==="class"?Sl(e,s,i):t==="style"?Pl(e,n,s):rn(t)?Un(t)||Fl(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Ul(e,t,s,i))?(Ll(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ks(e,t,s,i,o,t!=="value")):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Ks(e,t,s,i))};function Ul(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&qs(t)&&F(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return qs(t)&&te(n)?!1:t in e}const lo=new WeakMap,co=new WeakMap,sn=Symbol("_moveCb"),Gs=Symbol("_enterCb"),fo={name:"TransitionGroup",props:oe({},wl,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=ul(),s=fi();let r,o;return Fr(()=>{if(!r.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!ql(r[0].el,n.vnode.el,i))return;r.forEach(Kl),r.forEach(Wl);const c=r.filter(zl);io(),c.forEach(u=>{const a=u.el,d=a.style;Fe(a,i),d.transform=d.webkitTransform=d.transitionDuration="";const b=a[sn]=v=>{v&&v.target!==a||(!v||/transform$/.test(v.propertyName))&&(a.removeEventListener("transitionend",b),a[sn]=null,De(a,i))};a.addEventListener("transitionend",b)})}),()=>{const i=B(e),c=xl(i);let u=i.tag||_e;if(r=[],o)for(let a=0;adelete e.mode;fo.props;const kl=fo;function Kl(e){const t=e.el;t[sn]&&t[sn](),t[Gs]&&t[Gs]()}function Wl(e){co.set(e,e.el.getBoundingClientRect())}function zl(e){const t=lo.get(e),n=co.get(e),s=t.left-n.left,r=t.top-n.top;if(s||r){const o=e.el.style;return o.transform=o.webkitTransform=`translate(${s}px,${r}px)`,o.transitionDuration="0s",e}}function ql(e,t,n){const s=e.cloneNode(),r=e[yt];r&&r.forEach(c=>{c.split(/\s+/).forEach(u=>u&&s.classList.remove(u))}),n.split(/\s+/).forEach(c=>c&&s.classList.add(c)),s.style.display="none";const o=t.nodeType===1?t:t.parentNode;o.appendChild(s);const{hasTransform:i}=oo(s);return o.removeChild(s),i}const Gl=oe({patchProp:Dl},vl);let Js;function Jl(){return Js||(Js=Di(Gl))}const Yl=(...e)=>{const t=Jl().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Zl(s);if(!r)return;const o=t._component;!F(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.innerHTML="";const i=n(r,!1,Xl(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t};function Xl(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Zl(e){return te(e)?document.querySelector(e):e}var Ql=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ec=window.device,_={},Bn=[];window.device=_;var $t=window.document.documentElement,tc=window.navigator.userAgent.toLowerCase(),Ys=["googletv","viera","smarttv","internet.tv","netcast","nettv","appletv","boxee","kylo","roku","dlnadoc","pov_tv","hbbtv","ce-html"];_.macos=function(){return Z("mac")};_.ios=function(){return _.iphone()||_.ipod()||_.ipad()};_.iphone=function(){return!_.windows()&&Z("iphone")};_.ipod=function(){return Z("ipod")};_.ipad=function(){var e=navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1;return Z("ipad")||e};_.android=function(){return!_.windows()&&Z("android")};_.androidPhone=function(){return _.android()&&Z("mobile")};_.androidTablet=function(){return _.android()&&!Z("mobile")};_.blackberry=function(){return Z("blackberry")||Z("bb10")};_.blackberryPhone=function(){return _.blackberry()&&!Z("tablet")};_.blackberryTablet=function(){return _.blackberry()&&Z("tablet")};_.windows=function(){return Z("windows")};_.windowsPhone=function(){return _.windows()&&Z("phone")};_.windowsTablet=function(){return _.windows()&&Z("touch")&&!_.windowsPhone()};_.fxos=function(){return(Z("(mobile")||Z("(tablet"))&&Z(" rv:")};_.fxosPhone=function(){return _.fxos()&&Z("mobile")};_.fxosTablet=function(){return _.fxos()&&Z("tablet")};_.meego=function(){return Z("meego")};_.cordova=function(){return window.cordova&&location.protocol==="file:"};_.nodeWebkit=function(){return Ql(window.process)==="object"};_.mobile=function(){return _.androidPhone()||_.iphone()||_.ipod()||_.windowsPhone()||_.blackberryPhone()||_.fxosPhone()||_.meego()};_.tablet=function(){return _.ipad()||_.androidTablet()||_.blackberryTablet()||_.windowsTablet()||_.fxosTablet()};_.desktop=function(){return!_.tablet()&&!_.mobile()};_.television=function(){for(var e=0;e1};_.landscape=function(){return screen.orientation&&Object.prototype.hasOwnProperty.call(window,"onorientationchange")?os(screen.orientation.type,"landscape"):_.ios()&&Object.prototype.hasOwnProperty.call(window,"orientation")?Math.abs(window.orientation)===90:window.innerHeight/window.innerWidth<1};_.noConflict=function(){return window.device=ec,this};function os(e,t){return e.indexOf(t)!==-1}function Z(e){return os(tc,e)}function uo(e){return $t.className.match(new RegExp(e,"i"))}function ee(e){var t=null;uo(e)||(t=$t.className.replace(/^\s+|\s+$/g,""),$t.className=t+" "+e)}function Xs(e){uo(e)&&($t.className=$t.className.replace(" "+e,""))}_.ios()?_.ipad()?ee("ios ipad tablet"):_.iphone()?ee("ios iphone mobile"):_.ipod()&&ee("ios ipod mobile"):_.macos()?ee("macos desktop"):_.android()?_.androidTablet()?ee("android tablet"):ee("android mobile"):_.blackberry()?_.blackberryTablet()?ee("blackberry tablet"):ee("blackberry mobile"):_.windows()?_.windowsTablet()?ee("windows tablet"):_.windowsPhone()?ee("windows mobile"):ee("windows desktop"):_.fxos()?_.fxosTablet()?ee("fxos tablet"):ee("fxos mobile"):_.meego()?ee("meego mobile"):_.nodeWebkit()?ee("node-webkit"):_.television()?ee("television"):_.desktop()&&ee("desktop");_.cordova()&&ee("cordova");function Xt(){_.landscape()?(Xs("portrait"),ee("landscape"),Zs("landscape")):(Xs("landscape"),ee("portrait"),Zs("portrait")),ao()}function Zs(e){for(var t=0;t{n.value=document.querySelector(".top")});async function u(v){if(await t.value.push(v),n.value.scrollTo({top:n.value.scrollHeight,behavior:"smooth"}),o.value){s.value.currentTime=0,s.value.play();var x=new SpeechSynthesisUtterance(v.tts);x.pitch=1,x.rate=1,window.speechSynthesis.speak(x)}}function a(v){o.value=!o.value,o.value?(s.value.play(),r.value="Disable Sound"):r.value="Enable Sound"}const d=new WebSocket("wss://example.com/ws");function b(v){fetch("https://api.twitch.tv/helix/eventsub/subscriptions",{method:"POST",headers:{Authorization:"Bearer "+c,"Client-Id":"gp762nuuoqcoxypju8c569th9wz7q5","Content-Type":"application/json"},body:JSON.stringify({type:"channel.chat.notification",version:"1",condition:{broadcaster_user_id:"171093413",user_id:"54096715"},transport:{method:"websocket",session_id:v}})}).then(x=>x.json()).then(x=>console.log(x))}return d.onmessage=function(v){const x=JSON.parse(v.data);switch(x.metadata.message_type!="session_keepalive"&&console.log(x),x.metadata.message_type){case"session_welcome":b(x.payload.session.id);break;case"notification":let T=x.payload.event.notice_type,S={id:x.metadata.message_id,user:x.payload.event.chatter_user_name,text:x.payload.event.message.text??"",type:x.payload.event.notice_type};switch(["sub","resub","sub_gift","community_sub_gift"].includes(T)&&(S.tier=x.payload.event[T].sub_tier/1e3),["sub","resub"].includes(T)&&(S.is_prime=x.payload.event[T].is_prime,S.color="-green-600"),["sub_gift","community_sub_gift"].includes(T)&&(S.user_total=x.payload.event[T].cumulative_total??0,S.color="-orange-600"),x.payload.event.notice_type){case"sub":S.nice_name="Sub",S.tts=`${S.user} subbed at tier ${S.tier}: ${S.text}`;break;case"resub":S.nice_name="ReSub",S.months=x.payload.event[T].cumulative_months,S.tts=`${S.user} resubbed at tier ${S.tier}, total ${S.months} months: ${S.text}`;break;case"sub_gift":S.nice_name="Gift x1",S.recipient=x.payload.event[T].recipient_user_name,S.exclude=!!x.payload.event[T].community_gift_id,S.tts=`${S.user} gifted a tier ${S.tier} sub to ${S.recipient}`;break;case"community_sub_gift":S.type="sub_gift",S.nice_name="Gift x"+x.payload.event[T].total,S.text="Gifted "+x.payload.event[T].total+" subs",S.tts=`${S.user} gifted ${x.payload.event[T].total} subs`;break;case"raid":S.color="-purple-600",S.nice_name="Raid x"+x.payload.event[T].viewer_count,S.raider=x.payload.event[T].user_name,S.tts=`${S.raider} raided with ${x.payload.event[T].viewer_count} viewers`;break}S.exclude||u(S);break}},(v,x)=>(Se(),Me(_e,null,[he("audio",{controls:"",class:"hidden",ref_key:"notifyAudio",ref:s},[sc,to(" Your browser does not support the audio element. ")],512),he("button",{onClick:a,class:"bg-purple-700 hover:bg-purple-800 text-white font-bold py-2 px-4 rounded-full m-4 absolute z-40 right-3 top-0 drop-shadow-lg"},Re(r.value),1),he("div",rc,[xe(kl,{name:"notification",tag:"div"},{default:Mr(()=>[(Se(!0),Me(_e,null,xi(t.value,T=>(Se(),Me("div",{key:T.id,class:Mt([T.type+" border"+T.color,"bg-slate-800 rounded-lg p-2 mb-3 w-full border-2"])},[he("div",oc,[he("div",ic,[T.nice_name?(Se(),Me("div",{key:0,class:Mt(["bg"+T.color,"notify-pill-nobg"])},Re(T.nice_name),3)):dt("",!0),T.tier?(Se(),Me("div",lc,"Tier "+Re(T.tier),1)):dt("",!0),T.months?(Se(),Me("div",cc,Re(T.months)+" months",1)):dt("",!0),T.is_prime?(Se(),Me("div",fc,"Prime")):dt("",!0),T.user_total?(Se(),Me("div",uc,Re(T.user_total)+" total",1)):dt("",!0),T.raider?(Se(),Me("div",ac,Re(T.raider),1)):dt("",!0)])]),he("div",dc,Re(T.raider||T.user),1),he("div",hc,Re(T.text||"Gifted to "+T.recipient),1)],2))),128))]),_:1})])],64))}},gc={class:"h-dvh"},mc={class:"resizeable-container"},_c={class:"top"},bc=he("div",{class:"resize"},null,-1),yc=he("div",{class:"bottom"},null,-1),vc={__name:"App",setup(e){return an(()=>{var t=document.querySelector(".resize"),n=document.querySelector(".top"),s=document.querySelector(".resizeable-container"),r=!1,o=0;function i(a){r=!0,_.mobile()?_.landscape()?o=a.touches[0].clientX:o=a.touches[0].clientY:o=a.y}function c(a){_.mobile()?_.landscape()?o=a.touches[0].clientX:o=a.touches[0].clientY:o=a.y,r&&(_.mobile()&&_.landscape()?n.style.width=o-t.getBoundingClientRect().width/2+"px":n.style.height=o-t.getBoundingClientRect().height/2+"px",a.preventDefault())}function u(a){r=!1}t.addEventListener("mousedown",i),t.addEventListener("touchstart",i),s.addEventListener("mousemove",c),s.addEventListener("touchmove",c),s.addEventListener("mouseup",u),s.addEventListener("touchend",u),_.mobile()&&_.landscape()?n.style.width=window.innerWidth/2+"px":n.style.height=window.innerHeight/3+"px",_.onChangeOrientation(a=>{_.mobile()&&(a==="landscape"?(n.scrollTop=n.scrollHeight,n.style.height="",n.style.width=window.innerHeight/2+"px"):(n.style.width="",n.style.height=window.innerWidth/3+"px"))})}),(t,n)=>(Se(),Me("main",gc,[he("div",mc,[he("div",_c,[xe(pc)]),bc,yc])]))}};Yl(vc).mount("#app");
+**/const bl="http://www.w3.org/2000/svg",yl="http://www.w3.org/1998/Math/MathML",$e=typeof document<"u"?document:null,Fs=$e&&$e.createElement("template"),vl={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?$e.createElementNS(bl,e):t==="mathml"?$e.createElementNS(yl,e):n?$e.createElement(e,{is:n}):$e.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>$e.createTextNode(e),createComment:e=>$e.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>$e.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{Fs.innerHTML=s==="svg"?``:s==="mathml"?``:e;const c=Fs.content;if(s==="svg"||s==="mathml"){const u=c.firstChild;for(;u.firstChild;)c.appendChild(u.firstChild);c.removeChild(u)}t.insertBefore(c,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Be="transition",Et="animation",yt=Symbol("_vtc"),ro={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},wl=oe({},ui,ro),tt=(e,t=[])=>{L(e)?e.forEach(n=>n(...t)):e&&e(...t)},$s=e=>e?L(e)?e.some(t=>t.length>1):e.length>1:!1;function xl(e){const t={};for(const A in e)A in ro||(t[A]=e[A]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:c=`${n}-enter-to`,appearFromClass:u=o,appearActiveClass:a=i,appearToClass:d=c,leaveFromClass:b=`${n}-leave-from`,leaveActiveClass:v=`${n}-leave-active`,leaveToClass:x=`${n}-leave-to`}=e,T=Cl(r),S=T&&T[0],Q=T&&T[1],{onBeforeEnter:U,onEnter:W,onEnterCancelled:H,onLeave:G,onLeaveCancelled:ne,onBeforeAppear:R=U,onAppear:ae=W,onAppearCancelled:ie=H}=t,N=(A,z,le)=>{De(A,z?d:c),De(A,z?a:i),le&&le()},V=(A,z)=>{A._isLeaving=!1,De(A,b),De(A,x),De(A,v),z&&z()},J=A=>(z,le)=>{const Ye=A?ae:W,se=()=>N(z,A,le);tt(Ye,[z,se]),Ns(()=>{De(z,A?u:o),Fe(z,A?d:c),$s(Ye)||Hs(z,s,S,se)})};return oe(t,{onBeforeEnter(A){tt(U,[A]),Fe(A,o),Fe(A,i)},onBeforeAppear(A){tt(R,[A]),Fe(A,u),Fe(A,a)},onEnter:J(!1),onAppear:J(!0),onLeave(A,z){A._isLeaving=!0;const le=()=>V(A,z);Fe(A,b),Fe(A,v),io(),Ns(()=>{A._isLeaving&&(De(A,b),Fe(A,x),$s(G)||Hs(A,s,Q,le))}),tt(G,[A,le])},onEnterCancelled(A){N(A,!1),tt(H,[A])},onAppearCancelled(A){N(A,!0),tt(ie,[A])},onLeaveCancelled(A){V(A),tt(ne,[A])}})}function Cl(e){if(e==null)return null;if(q(e))return[En(e.enter),En(e.leave)];{const t=En(e);return[t,t]}}function En(e){return wo(e)}function Fe(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[yt]||(e[yt]=new Set)).add(t)}function De(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[yt];n&&(n.delete(t),n.size||(e[yt]=void 0))}function Ns(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let El=0;function Hs(e,t,n,s){const r=e._endId=++El,o=()=>{r===e._endId&&s()};if(n)return setTimeout(o,n);const{type:i,timeout:c,propCount:u}=oo(e,t);if(!i)return s();const a=i+"end";let d=0;const b=()=>{e.removeEventListener(a,v),o()},v=x=>{x.target===e&&++d>=u&&b()};setTimeout(()=>{d(n[T]||"").split(", "),r=s(`${Be}Delay`),o=s(`${Be}Duration`),i=js(r,o),c=s(`${Et}Delay`),u=s(`${Et}Duration`),a=js(c,u);let d=null,b=0,v=0;t===Be?i>0&&(d=Be,b=i,v=o.length):t===Et?a>0&&(d=Et,b=a,v=u.length):(b=Math.max(i,a),d=b>0?i>a?Be:Et:null,v=d?d===Be?o.length:u.length:0);const x=d===Be&&/\b(transform|all)(,|$)/.test(s(`${Be}Property`).toString());return{type:d,timeout:b,propCount:v,hasTransform:x}}function js(e,t){for(;e.lengthBs(n)+Bs(e[s])))}function Bs(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function io(){return document.body.offsetHeight}function Sl(e,t,n){const s=e[yt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Ds=Symbol("_vod"),Tl=Symbol("_vsh"),Ol=Symbol(""),Al=/(^|;)\s*display\s*:/;function Pl(e,t,n){const s=e.style,r=te(n);let o=!1;if(n&&!r){if(t)if(te(t))for(const i of t.split(";")){const c=i.slice(0,i.indexOf(":")).trim();n[c]==null&&Yt(s,c,"")}else for(const i in t)n[i]==null&&Yt(s,i,"");for(const i in n)i==="display"&&(o=!0),Yt(s,i,n[i])}else if(r){if(t!==n){const i=s[Ol];i&&(n+=";"+i),s.cssText=n,o=Al.test(n)}}else t&&e.removeAttribute("style");Ds in e&&(e[Ds]=o?s.display:"",e[Tl]&&(s.display="none"))}const Us=/\s*!important$/;function Yt(e,t,n){if(L(n))n.forEach(s=>Yt(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Ml(e,t);Us.test(n)?e.setProperty(ft(s),n.replace(Us,""),"important"):e[s]=n}}const Vs=["Webkit","Moz","ms"],Sn={};function Ml(e,t){const n=Sn[t];if(n)return n;let s=it(t);if(s!=="filter"&&s in e)return Sn[t]=s;s=sr(s);for(let r=0;rTn||(Nl.then(()=>Tn=0),Tn=Date.now());function jl(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;we(Bl(s,n.value),t,5,[s])};return n.value=e,n.attached=Hl(),n}function Bl(e,t){if(L(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const qs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Dl=(e,t,n,s,r,o)=>{const i=r==="svg";t==="class"?Sl(e,s,i):t==="style"?Pl(e,n,s):rn(t)?Un(t)||Fl(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Ul(e,t,s,i))?(Ll(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ks(e,t,s,i,o,t!=="value")):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Ks(e,t,s,i))};function Ul(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&qs(t)&&F(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return qs(t)&&te(n)?!1:t in e}const lo=new WeakMap,co=new WeakMap,sn=Symbol("_moveCb"),Gs=Symbol("_enterCb"),fo={name:"TransitionGroup",props:oe({},wl,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=ul(),s=fi();let r,o;return Fr(()=>{if(!r.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!ql(r[0].el,n.vnode.el,i))return;r.forEach(Kl),r.forEach(Wl);const c=r.filter(zl);io(),c.forEach(u=>{const a=u.el,d=a.style;Fe(a,i),d.transform=d.webkitTransform=d.transitionDuration="";const b=a[sn]=v=>{v&&v.target!==a||(!v||/transform$/.test(v.propertyName))&&(a.removeEventListener("transitionend",b),a[sn]=null,De(a,i))};a.addEventListener("transitionend",b)})}),()=>{const i=B(e),c=xl(i);let u=i.tag||_e;if(r=[],o)for(let a=0;adelete e.mode;fo.props;const kl=fo;function Kl(e){const t=e.el;t[sn]&&t[sn](),t[Gs]&&t[Gs]()}function Wl(e){co.set(e,e.el.getBoundingClientRect())}function zl(e){const t=lo.get(e),n=co.get(e),s=t.left-n.left,r=t.top-n.top;if(s||r){const o=e.el.style;return o.transform=o.webkitTransform=`translate(${s}px,${r}px)`,o.transitionDuration="0s",e}}function ql(e,t,n){const s=e.cloneNode(),r=e[yt];r&&r.forEach(c=>{c.split(/\s+/).forEach(u=>u&&s.classList.remove(u))}),n.split(/\s+/).forEach(c=>c&&s.classList.add(c)),s.style.display="none";const o=t.nodeType===1?t:t.parentNode;o.appendChild(s);const{hasTransform:i}=oo(s);return o.removeChild(s),i}const Gl=oe({patchProp:Dl},vl);let Js;function Jl(){return Js||(Js=Di(Gl))}const Yl=(...e)=>{const t=Jl().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Zl(s);if(!r)return;const o=t._component;!F(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.innerHTML="";const i=n(r,!1,Xl(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t};function Xl(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Zl(e){return te(e)?document.querySelector(e):e}var Ql=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ec=window.device,_={},Bn=[];window.device=_;var $t=window.document.documentElement,tc=window.navigator.userAgent.toLowerCase(),Ys=["googletv","viera","smarttv","internet.tv","netcast","nettv","appletv","boxee","kylo","roku","dlnadoc","pov_tv","hbbtv","ce-html"];_.macos=function(){return Z("mac")};_.ios=function(){return _.iphone()||_.ipod()||_.ipad()};_.iphone=function(){return!_.windows()&&Z("iphone")};_.ipod=function(){return Z("ipod")};_.ipad=function(){var e=navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1;return Z("ipad")||e};_.android=function(){return!_.windows()&&Z("android")};_.androidPhone=function(){return _.android()&&Z("mobile")};_.androidTablet=function(){return _.android()&&!Z("mobile")};_.blackberry=function(){return Z("blackberry")||Z("bb10")};_.blackberryPhone=function(){return _.blackberry()&&!Z("tablet")};_.blackberryTablet=function(){return _.blackberry()&&Z("tablet")};_.windows=function(){return Z("windows")};_.windowsPhone=function(){return _.windows()&&Z("phone")};_.windowsTablet=function(){return _.windows()&&Z("touch")&&!_.windowsPhone()};_.fxos=function(){return(Z("(mobile")||Z("(tablet"))&&Z(" rv:")};_.fxosPhone=function(){return _.fxos()&&Z("mobile")};_.fxosTablet=function(){return _.fxos()&&Z("tablet")};_.meego=function(){return Z("meego")};_.cordova=function(){return window.cordova&&location.protocol==="file:"};_.nodeWebkit=function(){return Ql(window.process)==="object"};_.mobile=function(){return _.androidPhone()||_.iphone()||_.ipod()||_.windowsPhone()||_.blackberryPhone()||_.fxosPhone()||_.meego()};_.tablet=function(){return _.ipad()||_.androidTablet()||_.blackberryTablet()||_.windowsTablet()||_.fxosTablet()};_.desktop=function(){return!_.tablet()&&!_.mobile()};_.television=function(){for(var e=0;e1};_.landscape=function(){return screen.orientation&&Object.prototype.hasOwnProperty.call(window,"onorientationchange")?os(screen.orientation.type,"landscape"):_.ios()&&Object.prototype.hasOwnProperty.call(window,"orientation")?Math.abs(window.orientation)===90:window.innerHeight/window.innerWidth<1};_.noConflict=function(){return window.device=ec,this};function os(e,t){return e.indexOf(t)!==-1}function Z(e){return os(tc,e)}function uo(e){return $t.className.match(new RegExp(e,"i"))}function ee(e){var t=null;uo(e)||(t=$t.className.replace(/^\s+|\s+$/g,""),$t.className=t+" "+e)}function Xs(e){uo(e)&&($t.className=$t.className.replace(" "+e,""))}_.ios()?_.ipad()?ee("ios ipad tablet"):_.iphone()?ee("ios iphone mobile"):_.ipod()&&ee("ios ipod mobile"):_.macos()?ee("macos desktop"):_.android()?_.androidTablet()?ee("android tablet"):ee("android mobile"):_.blackberry()?_.blackberryTablet()?ee("blackberry tablet"):ee("blackberry mobile"):_.windows()?_.windowsTablet()?ee("windows tablet"):_.windowsPhone()?ee("windows mobile"):ee("windows desktop"):_.fxos()?_.fxosTablet()?ee("fxos tablet"):ee("fxos mobile"):_.meego()?ee("meego mobile"):_.nodeWebkit()?ee("node-webkit"):_.television()?ee("television"):_.desktop()&&ee("desktop");_.cordova()&&ee("cordova");function Xt(){_.landscape()?(Xs("portrait"),ee("landscape"),Zs("landscape")):(Xs("landscape"),ee("portrait"),Zs("portrait")),ao()}function Zs(e){for(var t=0;t{n.value=document.querySelector(".top")});async function u(v){if(await t.value.push(v),n.value.scrollTo({top:n.value.scrollHeight,behavior:"smooth"}),o.value){s.value.currentTime=0,s.value.play();var x=new SpeechSynthesisUtterance(v.tts);x.pitch=1,x.rate=1,window.speechSynthesis.speak(x)}}function a(v){o.value=!o.value,o.value?(s.value.play(),r.value="Disable Sound"):r.value="Enable Sound"}const d=new WebSocket("wss://example.com/ws");function b(v){fetch("https://api.twitch.tv/helix/eventsub/subscriptions",{method:"POST",headers:{Authorization:"Bearer "+c,"Client-Id":"gp762nuuoqcoxypju8c569th9wz7q5","Content-Type":"application/json"},body:JSON.stringify({type:"channel.chat.notification",version:"1",condition:{broadcaster_user_id:"171093413",user_id:"54096715"},transport:{method:"websocket",session_id:v}})}).then(x=>x.json()).then(x=>console.log(x))}return d.onmessage=function(v){const x=JSON.parse(v.data);switch(x.metadata.message_type!="session_keepalive"&&console.log(x),x.metadata.message_type){case"session_welcome":b(x.payload.session.id);break;case"notification":let T=x.payload.event.notice_type,S={id:x.metadata.message_id,user:x.payload.event.chatter_user_name,text:x.payload.event.message.text??"",type:x.payload.event.notice_type};switch(["sub","resub","sub_gift","community_sub_gift"].includes(T)&&(S.tier=x.payload.event[T].sub_tier/1e3),["sub","resub"].includes(T)&&(S.is_prime=x.payload.event[T].is_prime,S.color="-green-600"),["sub_gift","community_sub_gift"].includes(T)&&(S.user_total=x.payload.event[T].cumulative_total??0,S.color="-orange-600"),x.payload.event.notice_type){case"sub":S.nice_name="Sub",S.tts=`${S.user} subbed at tier ${S.tier}: ${S.text}`;break;case"resub":S.nice_name="ReSub",S.months=x.payload.event[T].cumulative_months,S.tts=`${S.user} resubbed at tier ${S.tier}, total ${S.months} months: ${S.text}`;break;case"sub_gift":S.nice_name="Gift x1",S.recipient=x.payload.event[T].recipient_user_name,S.exclude=!!x.payload.event[T].community_gift_id,S.tts=`${S.user} gifted a tier ${S.tier} sub to ${S.recipient}`;break;case"community_sub_gift":S.type="sub_gift",S.nice_name="Gift x"+x.payload.event[T].total,S.text="Gifted "+x.payload.event[T].total+" subs",S.tts=`${S.user} gifted ${x.payload.event[T].total} subs`;break;case"raid":S.color="-purple-600",S.nice_name="Raid x"+x.payload.event[T].viewer_count,S.raider=x.payload.event[T].user_name,S.tts=`${S.raider} raided with ${x.payload.event[T].viewer_count} viewers`;break}S.exclude||u(S);break}},(v,x)=>(Se(),Me(_e,null,[he("audio",{controls:"",class:"hidden",ref_key:"notifyAudio",ref:s},[sc,to(" Your browser does not support the audio element. ")],512),he("button",{onClick:a,class:"bg-purple-700 hover:bg-purple-800 text-white font-bold py-2 px-4 rounded-full m-4 absolute z-40 right-3 top-0 drop-shadow-lg"},Re(r.value),1),he("div",rc,[xe(kl,{name:"notification",tag:"div"},{default:Mr(()=>[(Se(!0),Me(_e,null,xi(t.value,T=>(Se(),Me("div",{key:T.id,class:Mt([T.type+" border"+T.color,"bg-slate-800 rounded-lg p-2 mb-3 w-full border-2"])},[he("div",oc,[he("div",ic,[T.nice_name?(Se(),Me("div",{key:0,class:Mt(["bg"+T.color,"notify-pill-nobg"])},Re(T.nice_name),3)):dt("",!0),T.tier?(Se(),Me("div",lc,"Tier "+Re(T.tier),1)):dt("",!0),T.months?(Se(),Me("div",cc,Re(T.months)+" months",1)):dt("",!0),T.is_prime?(Se(),Me("div",fc,"Prime")):dt("",!0),T.user_total?(Se(),Me("div",uc,Re(T.user_total)+" total",1)):dt("",!0),T.raider?(Se(),Me("div",ac,Re(T.raider),1)):dt("",!0)])]),he("div",dc,Re(T.raider||T.user),1),he("div",hc,Re(T.text||"Gifted to "+T.recipient),1)],2))),128))]),_:1})])],64))}},gc={class:"h-dvh"},mc={class:"resizeable-container"},_c={class:"top"},bc=he("div",{class:"resize"},null,-1),yc=he("div",{class:"bottom"},null,-1),vc={__name:"App",setup(e){return an(()=>{var t=document.querySelector(".resize"),n=document.querySelector(".top"),s=document.querySelector(".resizeable-container"),r=!1,o=0;function i(a){r=!0,_.mobile()?_.landscape()?o=a.touches[0].clientX:o=a.touches[0].clientY:o=a.y}function c(a){_.mobile()?_.landscape()?o=a.touches[0].clientX:o=a.touches[0].clientY:o=a.y,r&&(_.mobile()&&_.landscape()?n.style.width=o-t.getBoundingClientRect().width/2+"px":n.style.height=o-t.getBoundingClientRect().height/2+"px",a.preventDefault())}function u(a){r=!1}t.addEventListener("mousedown",i),t.addEventListener("touchstart",i),s.addEventListener("mousemove",c),s.addEventListener("touchmove",c),s.addEventListener("mouseup",u),s.addEventListener("touchend",u),_.mobile()&&_.landscape()?n.style.width=window.innerWidth/2+"px":n.style.height=window.innerHeight/3+"px",_.onChangeOrientation(a=>{_.mobile()&&(a==="landscape"?(n.scrollTop=n.scrollHeight,n.style.height="",n.style.width=window.innerHeight/2+"px"):(n.style.width="",n.style.height=window.innerWidth/3+"px"))})}),(t,n)=>(Se(),Me("main",gc,[he("div",mc,[he("div",_c,[xe(pc)]),bc,yc])]))}};Yl(vc).mount("#app");
diff --git a/dist/index.html b/dist/index.html
index bafc2ea..6489282 100644
--- a/dist/index.html
+++ b/dist/index.html
@@ -4,8 +4,8 @@
Split Feed for Twitch by Deleter
-
-
+
+
diff --git a/vite.config.js b/vite.config.js
index 5c45e1d..e976906 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -12,5 +12,6 @@ export default defineConfig({
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))
}
- }
+ },
+ base: '/split-feed/',
})