PageSourceSearch

https://ar3mus.pages.dev/_astro/MusicPlayer.astro_astro_type_script_index_0_lang.D8HgWTza.js

js ar3mus.pages.dev collected 2026-10-03 06:29:24 UTC 17,259 bytes, 2 lines download raw bytes

1/*! The Letter · design and original code © 2026 Gunyakit Sukkasem (Ar3mus), first published 2026-07-17, not licensed for reuse · bundled third-party and Fuwari-derived code keeps its own license · https://ar3mus.pages.dev/colophon/ · canary tl-e99b-57c7-c3d8-8653 */
2var e={"/audio/l-no-theme-hideki-taniuchi.m4a":{duration:184.088,peaks:[.326,.361,.383,.403,.379,.387,.382,.36,.406,.386,.388,.432,.447,.464,.422,.482,.459,.491,.525,.523,.53,.796,.732,.751,.74,.736,.721,.642,.734,.739,.738,.754,.723,.716,.743,.762,.729,.715,.759,.781,.761,.73,.707,.741,.746,.731,.764,.736,.742,.71,.698,.725,.789,.738,.743,.765,.782,.741,.71,.705,.707,.713,.792,.833,1,.926,.871,.949,.905,.907,.835,.862,.863,.891,.858,.888,.892,.935,.858,.993,.867,.876,.939,.849,.843,.86,.876,.871,.884,.877,.871,.921,.563,.355,.372,.342,.348,.391,.4,.401,.459,.473,.503,.428,.493,.504,.483,.529,.723,.726,.702,.787,.695,.875,.892,.894,.892,.909,.973,.879,.88,.902,.871,.892,.906,.863,.977,.901,.848,.97,.939,.853,.899,.884,.906,.903,.849,.883,.883,.865,.865,.932,.615,.218,.185,.192,.25,.308,.371,.394,.417,.41,.374,.103,.034,.009,.002,0,0,0]},"/audio/l-no-theme-b-hideki-taniuchi.m4a":{duration:174.01,peaks:[.072,.115,.106,.141,.073,.115,.107,.142,.243,.292,.306,.304,.284,.299,.316,.309,.403,.425,.436,.431,.414,.427,.441,.435,.61,.87,.768,.653,.566,.791,.77,.647,.538,.739,.758,.647,.59,.803,.756,.636,.669,.768,.774,.631,.605,.768,.763,.685,.612,.822,.742,.676,.595,.766,.714,.689,.709,.882,.995,.838,.919,.863,.776,.859,.861,.906,.984,.829,.91,.789,.863,.185,.855,.902,.816,.782,.775,.805,.817,.813,.803,.85,.835,.801,.756,.813,.865,.799,.838,.861,.867,.814,.743,.838,.822,.801,.775,.845,.872,.816,.779,.789,.91,.793,.828,.995,1,.819,.848,.777,.825,.78,.873,.936,.988,.823,.862,.847,.913,.821,.909,.977,.996,.814,.902,.746,.865,.084,.796,.396,.347,.303,.331,.328,.349,.313,.555,.801,.917,.821,.789,.776,.89,.838,.759,.759,.875,.775,.755,.764,.887,.82,.648,.096,.02,.006,.001,0,0,0]},"/audio/kyrie-yoshihisa-hirano.m4a":{duration:83.07,peaks:[.135,.244,.225,.247,.31,.289,.212,.256,.33,.364,.361,.374,.504,.588,.585,.58,.621,.751,.633,.609,.518,.516,.431,.483,.463,.429,.417,.519,.457,.307,.338,.31,.281,.277,.296,.241,.283,.336,.336,.415,.391,.407,.307,.406,.554,.554,.534,.513,.488,.687,.607,.585,.584,.609,.621,.495,.482,.648,.782,.608,.541,.489,.515,.473,.416,.44,.449,.423,.361,.301,.483,.646,.885,.691,.685,.851,.808,.853,.877,.918,.867,.742,.864,.792,.758,.784,.883,.727,.745,.727,.716,.599,.709,.68,.754,.658,.548,.462,.404,.426,.455,.568,.732,1,.978,.666,.632,.608,.632,.655,.753,.782,.789,.665,.773,.728,.581,.583,.525,.608,.582,.47,.431,.459,.47,.471,.38,.421,.395,.438,.408,.346,.345,.258,.222,.21,.238,.245,.246,.275,.274,.197,.147,.09,.074,.075,.065,.04,.019,.011,.005,.002,.001,0,0,0,0,0,0,0]},"/audio/low-of-solipsism-yoshihisa-hirano.m4a":{duration:144.01,peaks:[.03,.124,.146,.259,.285,.166,.212,.327,.225,.236,.396,.762,.86,.22,.171,.16,.153,.149,.176,.183,.16,.205,.151,.171,.203,.363,.465,.525,.58,.365,.317,.352,.283,.306,.426,.549,.458,.499,.816,.859,.806,.566,.531,.476,.738,.582,.498,.459,.696,.498,.453,.496,.678,.523,.53,.467,.709,.554,.508,.451,.659,.719,.512,.44,.692,.517,.439,.408,.62,.578,.644,.827,.95,.912,.67,.713,.816,1,.906,.594,.495,.339,.331,.287,.277,.286,.432,.473,.533,.388,.233,.187,.182,.208,.263,.352,.54,.477,.238,.103,.084,.288,.445,.491,.764,.451,.571,.442,.601,.757,.495,.537,.341,.537,.72,.441,.477,.282,.522,.687,.531,.454,.533,.532,.546,.614,.714,.868,.852,.816,.878,.877,.915,.932,.988,.942,.836,.792,.696,.749,.677,.592,.59,.575,.464,.561,.562,.488,.409,.382,.311,.147,.135,.025,.003,.001,0,0,0,0]},"/audio/jiken-hideki-taniuchi.m4a":{duration:169.459,peaks:[.422,.514,.545,.529,.47,.478,.523,.548,.483,.523,.544,.521,.458,.484,.542,.544,.783,.886,.891,.972,.933,.948,.932,.947,.903,.886,.904,.943,.904,.915,.939,.924,.89,.886,.907,.942,.893,.907,.93,.933,.886,.915,.917,.901,.915,.894,.908,.9,.882,.879,.939,.929,.946,.948,.951,.949,.875,.843,.937,.803,.858,.86,.966,1,.811,.757,.871,.817,.94,.879,.948,.91,.906,.922,.976,.97,.885,.904,.938,.937,.886,.881,.971,.972,.899,.898,.948,.958,.896,.933,.939,.949,.872,.894,.933,.953,.936,.945,.912,.965,.87,.837,.847,.877,.893,.873,.866,.877,.84,.913,.878,.897,.896,.907,.894,.915,.87,.873,.852,.826,.884,.868,.873,.885,.868,.912,.871,.902,.894,.905,.883,.896,.883,.914,.887,.916,.899,.921,.909,.914,.92,.896,.927,.93,.964,.942,.945,.981,.927,.902,.957,.998,.922,.971,.943,.965,.464,0,0,0]}};function t(e){let t=Number.isFinite(e)&&e>0?Math.floor(e):0,r=Math.floor(t/60);return`${String(r).padStart(2,"0")}
2:${String(t%60).padStart(2,"0")}`}function n(e){let t=Number.isFinite(e)&&e>0?Math.floor(e):0;return`${Math.floor(t/60)}:${String(t%60).padStart(2,"0")}`}function r(e,t){return`${n(e)} of ${n(t)}`}function i(e,t){return t>0&&Number.isFinite(e)?Math.min(1,Math.max(0,e/t)):0}function a(e,t){let r=Math.floor(t);if(r<=0||r>=e.length)return e.slice();let a=[];for(let t=0;t<r;t++){let i=Math.floor(t*e.length/r),n=Math.max(Math.floor((t+1)*e.length/r),i+1),s=0;for(let t=i;t<n;t++)s=Math.max(s,e[t]??0);a.push(s)}return a}function o(e,t,r){return r>0?Math.min(1,Math.max(0,(e-t)/r)):0}function s(e,t,r){let a,i=r>0?r:0;switch(e){case"ArrowLeft":case"ArrowDown":a=t-5;break;case"ArrowRight":case"ArrowUp":a=t+5;break;case"PageDown":a=t-15;break;case"PageUp":a=t+15;break;case"Home":a=0;break;case"End":a=i;break;default:return null}return Math.min(i,Math.max(0,a))}function c(e,t,r){let a=Math.min(1,Math.max(0,Number.isFinite(e)?e:0)),i=r*r-t*t;return{supply:Math.sqrt(r*r-a*i),takeup:Math.sqrt(t*t+a*i)}}function l(e,t,r,a,i,n){let s=a-e,u=i-t,o=Math.hypot(s,u),l=Math.atan2(u,s);if(o<=r)return{x:e+r*Math.cos(l),y:t+r*Math.sin(l)};let d=l+n*Math.acos(r/o);return{x:e+r*Math.cos(d),y:t+r*Math.sin(d)}}var u={width:44,height:40,cy:20,flange:19,hub:6.5,full:17,takeupCx:20,supplyCx:24,postInset:1.4};function d(e){let t=e-u.hub;return t<2?0:u.hub+.55*t}var f=e=>Math.round(100*e)/100;function p(e,t,r,a,i){let n=l(e,u.cy,t,r.x,r.y,i);return`M${f(n.x)} ${f(n.y)}L${f(r.x)} ${f(r.y)}L${f(a)} ${f(r.y)}`}function m(e,t){let r=e=>String(e).padStart(2,"0");return`TAPE ${r(e+1)}/${r(t)}`}function ee(e){return e.error?"error":e.ended?"end":e.paused?e.time>.05?"pause":"stop":e.waiting||e.readyState<3?"wait":"play"}var te=e,ne="http://www.w3.org/2000/svg",re=3,ie=1500,ae={play:"PLAY",wait:"WAIT",pause:"PAUSE",stop:"STOP",end:"END",error:"ERROR"};function h(){let e=document.getElementById("music-deck");if(!e||"1"===e.dataset.bound)return;e.dataset.bound="1";let l=e.querySelector("audio"),h=document.getElementById("music-panel"),y=document.getElementById("music-playpause"),g=document.getElementById("music-mute"),f=document.getElementById("music-prev"),b=document.getElementById("music-next"),w=document.getElementById("music-seek"),v=document.getElementById("music-state"),x=document.getElementById("music-counter"),S=e.querySelector(".tape-label"),k=e.querySelector(".tape-wave"),A=e.querySelector(".wave-rest"),E=e.querySelector(".wave-done"),M=e.querySelector(".wave-tape"),L=e.querySelector(".wave-head"),q=e.querySelector(".tape-played-rect"),$=e.querySelector('[data-reel="takeup"]'),F=e.querySelector('[data-reel="supply"]');if(!(l&&h&&y&&g&&w&&v&&x&&S&&k&&A&&E&&M&&L&&q&&$&&F))return;let N=[];try{N=JSON.parse(e.dataset.tracks||"[]")}catch{N=[]}if(!N.length)return;let I="1"===e.dataset.loop,B="music-paused",C="music-muted",P="music-track-idx",_="music-track-time",T=e=>{try{return localStorage.getItem(e)}catch{return null}},R=(e,t)=>{try{localStorage.setItem(e,t)}catch{}},W=Math.floor(Number(T(P)||"0")),H=Number.isFinite(W)?Math.min(Math.max(0,W),N.length-1):0;l.volume=Number(e.dataset.volume||"0.5"),l.muted="1"===T(C);let D=window.matchMedia?.("(prefers-reduced-motion: reduce)"),z=()=>!!D?.matches,O=()=>e.classList.contains("is-expanded"),X=null,U=e=>{if(l.readyState>=1){X=null;try{l.currentTime=e}catch{}}else X={src:l.src,t:e}};l.addEventListener("loadedmetadata",()=>{let e=X;if(X=null,e&&l.src===e.src)try{l.currentTime=e.t}catch{}});let K=()=>{let e=l.duration;return Number.isFinite(e)&&e>0?e:te[N[H].src]?.duration??0},j=null,J=()=>null===j?X&&X.src===l.src&&l.readyState<1?X.t:l.currentTime||0:j,Y=!1,G=()=>ee({paused:l.paused,ended:l.ended,error:!!l.error,waiting:Y,readyState:l.readyState,time:J()}),Q=e=>({pack:e.querySelector(".reel-pack"),wind:e.querySelector(".reel-wind"),tape:e.querySelector(".reel-tape"),spin:e.querySelector(".reel-spin"),post:e.querySelector(".reel-post")}),V={...Q($),cx:u.takeupCx,postX:u.width-u.postInset,edge:u.width,side:1},Z={...Q(F),cx:u.supplyCx,postX:u.postInset,edge:0,side:-1},se=34,ue=0,oe=e=>{for(let[t,r]of[[V,e.takeup],[Z,e.supply]])t.pack?.setAttribute("r",r.toFixed(2)),t.wind?.setAttribute("r",d(r).toFixed(2)),t.tape?.setAttribute("d",p(t.cx,r,{x:t.postX,y:se},t.edge,t.side))}
2,le={counter:"",now:-1,max:-1,state:""},de=()=>{if(!O())return;let e=K(),a=e>0?Math.min(J(),e):J(),s=i(a,e),o=s*ue;q.setAttribute("width",o.toFixed(2)),L.setAttribute("x",Math.max(0,Math.min(ue-1.2,o-.6)).toFixed(2)),oe(c(s,u.hub,u.full));let l=`${t(a)} / ${e>0?t(e):"--:--"}`;l!==le.counter&&(x.textContent=l,le.counter=l);let d=Math.floor(a),m=Math.floor(e);(d!==le.now||m!==le.max)&&(w.setAttribute("aria-valuemax",String(m)),w.setAttribute("aria-valuenow",String(Math.min(d,m))),w.setAttribute("aria-valuetext",e>0?r(a,e):n(a)),le.now=d,le.max=m);let p=G();p!==le.state&&(h.dataset.tape=p,v.textContent=ae[p],le.state=p)},ce=(e=!1)=>{let t=w.clientWidth,r=w.clientHeight;if(!t||!r)return;ue=t,k.setAttribute("viewBox",`0 0 ${t} ${r}`),q.setAttribute("height",String(r)),L.setAttribute("height",String(r)),M.setAttribute("y",String(r-1)),M.setAttribute("width",String(t));let i=$.clientHeight||r;se=Math.min(u.height-1.2,u.cy+(r/2-.5)*(u.height/i)),V.post?.setAttribute("cy",se.toFixed(2)),Z.post?.setAttribute("cy",se.toFixed(2));let n=te[N[H].src]?.peaks,s=[];if(n?.length){let e=a(n,Math.floor(t/re)),i=t/e.length,u=r-4;e.forEach((e,t)=>{let a=Math.max(.08,e)*u,n=document.createElementNS(ne,"rect");n.setAttribute("x",(t*i+.5).toFixed(2)),n.setAttribute("y",((r-1-a)/2).toFixed(2)),n.setAttribute("width",Math.max(1,i-1).toFixed(2)),n.setAttribute("height",a.toFixed(2)),n.setAttribute("rx","0.6"),s.push(n)})}else{let e=document.createElementNS(ne,"rect");e.setAttribute("x","0"),e.setAttribute("y",String(r/2-1)),e.setAttribute("width",String(t)),e.setAttribute("height","2"),s.push(e)}if(A.replaceChildren(...s),E.replaceChildren(...s.map(e=>e.cloneNode(!1))),w.classList.toggle("has-peaks",!!n?.length),e&&!z())for(let e of[A,E])e.animate?.([{opacity:0},{opacity:1}],{duration:250,easing:"ease"});
2le={counter:"",now:-1,max:-1,state:""},de()},me=0,pe=0,he=0,ye={takeup:0,supply:0},ge=()=>O()&&!document.hidden&&!z(),fe=()=>"play"===G(),be=e=>{me=0;let t=Math.min(.1,Math.max(0,(e-pe)/1e3));pe=e;let r=+!!fe();he+=(r-he)*(1-Math.exp(-t/(r?.16:.06))),!r&&he<.02&&(he=0),de();let a=K(),n=c(i(J(),a),u.hub,u.full);ye.takeup=(ye.takeup+he*ie*t/n.takeup)%360,ye.supply=(ye.supply+he*ie*t/n.supply)%360,V.spin?.setAttribute("transform",`rotate(${ye.takeup.toFixed(2)} ${V.cx} ${u.cy})`),Z.spin?.setAttribute("transform",`rotate(${ye.supply.toFixed(2)} ${Z.cx} ${u.cy})`),ge()&&(r||he>0)&&(me=requestAnimationFrame(be))},we=()=>{if(!ge())return me&&cancelAnimationFrame(me),me=0,void(he=0);!me&&(fe()||he>0)&&(pe=performance.now(),me=requestAnimationFrame(be))},ve=()=>{de(),we()},xe="music-open",Se=e.querySelector("#music-toggle"),ke=t=>{e.classList.toggle("is-expanded",t),Se?.setAttribute("aria-expanded",String(t)),Se?.setAttribute("aria-label",t?"Hide music controls":"Show music controls"),t&&(le={counter:"",now:-1,max:-1,state:""}),ve()};ke("1"===T(xe)),Se&&"1"!==Se.dataset.bound&&(Se.dataset.bound="1",Se.addEventListener("click",()=>{let t=!e.classList.contains("is-expanded");ke(t),R(xe,t?"1":"0")}),document.addEventListener("keydown",t=>{if("Escape"!==t.key||!e.classList.contains("is-expanded"))return;let r=t.target;r&&("INPUT"===r.tagName||"TEXTAREA"===r.tagName||r.isContentEditable)||document.querySelector(".book.is-open")||(ke(!1),R(xe,"0"),Se.focus())}));let Ae=(t,r)=>e.querySelector(t)?.classList.toggle("deck-hidden",r),Ee=()=>S.querySelector(".tape-label-layer:not(.is-leaving)"),Me=()=>{let e=Ee()?.querySelector(".tape-name"),t=e?.querySelector(".deck-marquee");if(!e||!t)return;e.classList.remove("is-scroll"),t.style.removeProperty("--marquee-shift");let r=e.scrollWidth-e.clientWidth;r>0&&(t.style.setProperty("--marquee-shift",`-${r+8}px`),e.classList.add("is-scroll"))},Le=e=>{let t=N[H],r=e.querySelector(".tape-no"),a=e.querySelector(".deck-title"),i=e.querySelector(".deck-artist");r&&(r.textContent=m(H,N.length)),a&&(a.textContent=t.title),i&&(i.textContent=t.artist??""),e.querySelector(".tape-sep-artist")?.toggleAttribute("hidden",!t.artist)},qe=(e=0)=>{(e=>{let t=Ee();if(!t)return;if(!e||z())return void Le(t);let r=t.cloneNode(!0);t.querySelector("#music-title")?.removeAttribute("id"),t.setAttribute("aria-hidden","true"),Le(r),r.querySelector(".tape-name")?.classList.remove("is-scroll"),r.style.setProperty("--dx",8*e+"px"),r.classList.add("is-entering"),S.append(r),t.style.setProperty("--dx",-8*e+"px"),t.classList.add("is-leaving"),r.getBoundingClientRect(),r.classList.remove("is-entering"),window.setTimeout(()=>t.remove(),300)})(e),ce(0!==e),(()=>{if(!("mediaSession"in navigator))return;let e=N[H];try{navigator.mediaSession.metadata=new MediaMetadata({title:e.title||"Ar3mus",artist:e.artist||"Ar3mus",album:"ar3mus.pages.dev",artwork:[{src:"/media-art.png",sizes:"256x256",type:"image/png"},{src:"/media-art.png",sizes:"512x512",type:"image/png"}]})}catch{}})(),requestAnimationFrame(Me)},$e=()=>{let t=!l.paused;e.classList.toggle("is-playing",t),Ae(".deck-icon-play",t),Ae(".deck-icon-pause",!t),e.classList.toggle("is-muted",l.muted),y.setAttribute("aria-label",t?"Pause music":"Play music"),y.setAttribute("aria-pressed",String(t)),g.setAttribute("aria-label",l.muted?"Unmute music":"Mute music"),g.setAttribute("aria-pressed",String(l.muted))},Fe=()=>{l.currentTime>0&&R(_,String(l.currentTime))},Ne=(e,t,r)=>{H=(e%N.length+N.length)%N.length,R(P,String(H)),R(_,"0"),X=null,Y=!1,l.src=N[H].src,qe(r),t&&l.play().catch(()=>{}),ve()};y.addEventListener("click",()=>{l.paused?(R(B,"0"),l.play().catch(()=>{})):(R(B,"1"),l.pause())}),f?.addEventListener("click",()=>Ne(H-1,!l.paused,-1)),b?.addEventListener("click",()=>Ne(H+1,!l.paused,1)),g.addEventListener("click",()=>{l.muted=!l.muted,R(C,l.muted?"1":"0"),$e()});let Ie=e=>{let t=K();if(!(t>0))return;let r=Math.min(t,Math.max(0,e));U(r),R(_,String(r)),ve()},Be=e=>{let t=w.getBoundingClientRect();return o(e,t.left,t.width)*K()};w.addEventListener("pointerdown",e=>{if(0===e.button&&K()>0){e.preventDefault(),w.focus({preventScroll:!0});try{w.setPointerCapture(e.pointerId)}catch{}j=Be(e.clientX),w.classList.add("is-scrubbing"),de()}}),w.addEventListener("pointermove",e=>{null!==j&&(j=Be(e.clientX),de())});let Ce=e=>{if(null===j)return;let t=j;j=null,w.classList.remove("is-scrubbing"),e?Ie(t):de()};if(w.addEventListener("pointerup",()=>Ce(!0)),w.addEventListener("pointercancel",()=>Ce(!1)),w.addEventListener("lostpointercapture",()=>Ce(!0)),w.addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.metaKey)return;let t=s(e.key,J(),K());null!==t&&(e.preventDefault(),e.stopPropagation(),Ie(t))}),"mediaSession"in navigator){let e=navigator.mediaSession;try{e.setActionHandler("play",()=>{l.play().catch(()=>{})}),e.setActionHandler("pause",()=>l.pause()),e.setActionHandler("previoustrack",N.length>1?()=>Ne(H-1,!l.paused,-1):null),e.setActionHandler("nexttrack",N.length>1?()=>Ne(H+1,!l.paused,1):null)}catch{}}l.addEventListener("play",()=>{$e(),ve()}),l.addEventListener("pause",()=>{Y=!1,$e(),Fe(),ve()}),l.addEventListener("waiting",()=>{Y=!0,ve()}),l.addEventListener("playing",()=>{Y=!1,ve()}),l.addEventListener("emptied",()=>{Y=!1,ve()});for(let e of["stalled","canplay","seeked","error","durationchange","loadedmetadata"])l.addEventListener(e,ve);let Pe=0;
2if(l.addEventListener("timeupdate",()=>{++Pe%12==0&&Fe(),me||de()}),l.addEventListener("ended",()=>{H<N.length-1?Ne(H+1,!0,1):I?Ne(0,!0,1):($e(),ve())}),window.__musicWindowBound||(window.__musicWindowBound=!0,window.addEventListener("pagehide",Fe),window.addEventListener("resize",Me),document.addEventListener("visibilitychange",we),D?.addEventListener?.("change",ve)),"ResizeObserver"in window){new ResizeObserver(()=>ce()).observe(w);let e=-1;new ResizeObserver(t=>{let r=Math.round(t[t.length-1]?.contentRect.width??0);r!==e&&(e=r,Me())}).observe(S)}0!==H&&(l.src=N[H].src);let _e=Number(T(_)||"0");if(_e>1&&U(_e),"1"===e.dataset.autoplay){"1"!==T(B)&&l.play().catch(()=>{});let t=t=>{if(!e.contains(t.target)){if("1"===T(B))return void r();l.paused&&l.play().catch(()=>{}),l.paused||r()}},r=()=>{document.removeEventListener("pointerdown",t),document.removeEventListener("touchstart",t),window.__musicWaiting=!1};window.__musicWaiting||(window.__musicWaiting=!0,document.addEventListener("pointerdown",t),document.addEventListener("touchstart",t,{passive:!0}))}qe(),$e(),ve(),document.fonts?.ready.then(Me).catch(()=>{})}h(),window.__musicDeckBound||(window.__musicDeckBound=!0,document.addEventListener("astro:after-swap",h));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.