@jokerized/decksmith 0.5.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- "use strict";(()=>{var H="decksmith-deck";function q(e){return typeof e=="object"&&e!==null&&e.channel===H&&typeof e.type=="string"}var $='script[type="application/decksmith-narration+json"]';function R(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function J(e){let r=e,n=R(r?.start),t=R(r?.end);return n===void 0||t===void 0||t<n?null:{start:n,end:t,text:typeof r?.text=="string"?r.text:""}}var U=84;function P(e,r){let n=[],t="";for(let o of e)t===""?t=o:t.length+1+o.length<=r?t+=` ${o}`:(n.push(t),t=o);return t!==""&&n.push(t),n}function K(e,r=U){if(e.text.length<=r)return[e];let n=e.text.split(/\s+/).filter(Boolean),t=P(n,r).length,o=r;for(let s=Math.ceil(e.text.length/t);s<r;s++)if(P(n,s).length<=t){o=s;break}let a=P(n,o);if(a.length<2)return[e];let d=a.reduce((s,c)=>s+c.length,0),p=e.end-e.start,h=e.start;return a.map((s,c)=>{let l=c===a.length-1?e.end:h+p*s.length/d,b={start:h,end:l,text:s};return h=l,b})}function Q(e){let r=e,n=R(r?.stop);if(n===void 0||n<0||!r?.audio||typeof r.audio!="string")return null;let t=Array.isArray(r.cues)?r.cues.map(J).filter(o=>o!==null):[];return t.sort((o,a)=>o.start-a.start),{stop:n,audio:r.audio,cues:t.flatMap(o=>K(o))}}function _(e){if(!e)return null;let r;try{r=JSON.parse(e)}catch{return null}let n=r,t=n?.scenes;if(!t||typeof t!="object"||Array.isArray(t))return null;let o={};for(let[a,d]of Object.entries(t)){if(!Array.isArray(d))continue;let p=d.map(Q).filter(h=>h!==null);p.length>0&&(o[a]=p)}return Object.keys(o).length===0?null:{voice:typeof n?.voice=="string"?n.voice:"",dir:typeof n?.dir=="string"?n.dir:"",scenes:o}}function V(e,r){for(let n of e){if(r<n.start)return null;if(r<n.end)return n}return null}function j(e,r,n){return e?.scenes[r]?.find(t=>t.stop===n)??null}function z(e,r){let n=e.dir.replace(/\/+$/,"");return n===""||/^[a-z][a-z0-9+.-]*:|^\.{0,2}\//i.test(r.audio)?r.audio:`${n}/${r.audio}`}function B(...e){for(let r of e)if(typeof r=="number"&&Number.isFinite(r))return r}function Z(e){let r=[];for(let n of e){let t=B(n.startTime);if(t===void 0)continue;let o=B(n.endTime)??Number.POSITIVE_INFINITY,a=r.length===0?0:r[r.length-1].slide+1,d=n.notes??"",p=[...new Set(n.fragments??[])].filter(l=>Number.isFinite(l)&&l>t&&l<=o).sort((l,b)=>l-b),[h,...s]=p,c=n.sceneId;r.push({t:h??t,slide:a,fragment:0,notes:d,sceneId:c});for(let[l,b]of s.entries())r.push({t:b,slide:a,fragment:l+1,notes:d,sceneId:c})}return r}var ee=2.5;function te(e,r,n={}){let t=r-e;return n.reducedMotion===!0||t<=0||t>ee?{animate:!1,durationMs:0}:{animate:!0,durationMs:t*1e3}}var ne=1500,re=8e3;function oe(e){return!e.playing||e.heard?null:Math.min(re,Math.max(ne,e.gapMs))}function se(e){return e.fragment>0?`#${e.slide+1}.${e.fragment}`:`#${e.slide+1}`}function X(e){let r=/^#?(\d+)(?:\.(\d+))?$/.exec(e.trim());if(!r)return null;let n=Number(r[1]);return n<1?null:{slide:n-1,fragment:r[2]===void 0?0:Number(r[2])}}function W(e,r){let n=e.findIndex(t=>t.slide===r.slide&&t.fragment===r.fragment);return n>=0?n:e.findIndex(t=>t.slide===r.slide)}var ie='script[type="application/hyperframes-slideshow+json"]';function ae(e){let r=e.shadowRoot?.querySelector("iframe")??e.querySelector("iframe")??null;try{let n=r?.contentDocument,t=r?.contentWindow;return n&&t?{doc:n,get timelines(){return t.__timelines??{}}}:null}catch{return null}}function G(e,r,n){for(let t of r){let o=t.startTime??0,a=t.endTime??Number.POSITIVE_INFINITY,d=n>=o&&n<a,p=e.doc.getElementById(t.sceneId);p?.style&&(p.style.display=d?"":"none"),d&&e.timelines[t.sceneId]?.seek(Math.max(0,n-o))}}function le(e){let r=e.querySelector(ie);if(!r?.textContent)return[];try{let t=JSON.parse(r.textContent)?.slides;return Array.isArray(t)?t.filter(o=>typeof o?.sceneId=="string"):[]}catch{return[]}}function ce(e){return e.ready===!0?Promise.resolve():new Promise(r=>{let n=()=>{clearTimeout(t),r()},t=setTimeout(()=>{e.removeEventListener("ready",n),r()},5e3);e.addEventListener("ready",n,{once:!0})})}var de=`
1
+ "use strict";(()=>{var H="decksmith-deck";function q(e){return typeof e=="object"&&e!==null&&e.channel===H&&typeof e.type=="string"}var $='script[type="application/decksmith-narration+json"]';function R(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function J(e){let n=e,r=R(n?.start),t=R(n?.end);return r===void 0||t===void 0||t<r?null:{start:r,end:t,text:typeof n?.text=="string"?n.text:""}}var U=84;function P(e,n){let r=[],t="";for(let o of e)t===""?t=o:t.length+1+o.length<=n?t+=` ${o}`:(r.push(t),t=o);return t!==""&&r.push(t),r}function K(e,n=U){if(e.text.length<=n)return[e];let r=e.text.split(/\s+/).filter(Boolean),t=P(r,n).length,o=n;for(let s=Math.ceil(e.text.length/t);s<n;s++)if(P(r,s).length<=t){o=s;break}let a=P(r,o);if(a.length<2)return[e];let u=a.reduce((s,c)=>s+c.length,0),f=e.end-e.start,h=e.start;return a.map((s,c)=>{let l=c===a.length-1?e.end:h+f*s.length/u,b={start:h,end:l,text:s};return h=l,b})}function Q(e){let n=e,r=R(n?.stop);if(r===void 0||r<0||!n?.audio||typeof n.audio!="string")return null;let t=Array.isArray(n.cues)?n.cues.map(J).filter(o=>o!==null):[];return t.sort((o,a)=>o.start-a.start),{stop:r,audio:n.audio,cues:t.flatMap(o=>K(o))}}function _(e){if(!e)return null;let n;try{n=JSON.parse(e)}catch{return null}let r=n,t=r?.scenes;if(!t||typeof t!="object"||Array.isArray(t))return null;let o={};for(let[a,u]of Object.entries(t)){if(!Array.isArray(u))continue;let f=u.map(Q).filter(h=>h!==null);f.length>0&&(o[a]=f)}return Object.keys(o).length===0?null:{voice:typeof r?.voice=="string"?r.voice:"",dir:typeof r?.dir=="string"?r.dir:"",scenes:o}}function V(e,n){for(let r of e){if(n<r.start)return null;if(n<r.end)return r}return null}function j(e,n,r){return e?.scenes[n]?.find(t=>t.stop===r)??null}function z(e,n){let r=e.dir.replace(/\/+$/,"");return r===""||/^[a-z][a-z0-9+.-]*:|^\.{0,2}\//i.test(n.audio)?n.audio:`${r}/${n.audio}`}function B(...e){for(let n of e)if(typeof n=="number"&&Number.isFinite(n))return n}function Z(e){let n=[];for(let r of e){let t=B(r.startTime);if(t===void 0)continue;let o=B(r.endTime)??Number.POSITIVE_INFINITY,a=n.length===0?0:n[n.length-1].slide+1,u=r.notes??"",f=[...new Set(r.fragments??[])].filter(l=>Number.isFinite(l)&&l>t&&l<=o).sort((l,b)=>l-b),[h,...s]=f,c=r.sceneId;n.push({t:h??t,slide:a,fragment:0,notes:u,sceneId:c});for(let[l,b]of s.entries())n.push({t:b,slide:a,fragment:l+1,notes:u,sceneId:c})}return n}var ee=2.5;function te(e,n,r={}){let t=n-e;return r.reducedMotion===!0||t<=0||t>ee?{animate:!1,durationMs:0}:{animate:!0,durationMs:t*1e3}}var ne=1500,re=8e3;function oe(e){return!e.playing||e.heard?null:Math.min(re,Math.max(ne,e.gapMs))}function se(e){return e.fragment>0?`#${e.slide+1}.${e.fragment}`:`#${e.slide+1}`}function X(e){let n=/^#?(\d+)(?:\.(\d+))?$/.exec(e.trim());if(!n)return null;let r=Number(n[1]);return r<1?null:{slide:r-1,fragment:n[2]===void 0?0:Number(n[2])}}function W(e,n){let r=e.findIndex(t=>t.slide===n.slide&&t.fragment===n.fragment);return r>=0?r:e.findIndex(t=>t.slide===n.slide)}var ie='script[type="application/hyperframes-slideshow+json"]';function ae(e){let n=e.shadowRoot?.querySelector("iframe")??e.querySelector("iframe")??null;try{let r=n?.contentDocument,t=n?.contentWindow;return r&&t?{doc:r,get timelines(){return t.__timelines??{}}}:null}catch{return null}}function le(e,n,r){let t=e.startTime??0,o=Number.isFinite(n)&&n>0?t+n:e.endTime??Number.POSITIVE_INFINITY;return r>=t&&r<o}function G(e,n,r){for(let t of n){let o=e.doc.getElementById(t.sceneId),a=Number(o?.getAttribute?.("data-duration")??Number.NaN),u=le(t,a,r);o?.style&&(o.style.display=u?"":"none"),u&&e.timelines[t.sceneId]?.seek(Math.max(0,r-(t.startTime??0)))}}function ce(e){let n=e.querySelector(ie);if(!n?.textContent)return[];try{let t=JSON.parse(n.textContent)?.slides;return Array.isArray(t)?t.filter(o=>typeof o?.sceneId=="string"):[]}catch{return[]}}function ue(e){return e.ready===!0?Promise.resolve():new Promise(n=>{let r=()=>{clearTimeout(t),n()},t=setTimeout(()=>{e.removeEventListener("ready",r),n()},5e3);e.addEventListener("ready",r,{once:!0})})}var de=`
2
2
  .ds-chrome{position:fixed;inset:auto 0 0 0;z-index:2147483000;pointer-events:none;
3
3
  font:500 13px/1.5 ui-sans-serif,system-ui,sans-serif;color:#fff}
4
4
  .ds-bar{height:3px;background:rgba(255,255,255,.14)}
@@ -80,4 +80,4 @@
80
80
  text-align:center;color:#fff;font-weight:600;font-size:var(--ds-cap-font);
81
81
  line-height:1.35;text-wrap:pretty}
82
82
  .ds-subs[hidden]{visibility:hidden}
83
- `;function ue(e){let r=e.createElement("style");r.textContent=de,e.head.append(r);let n=e.createElement("div");return n.className="ds-chrome",n.innerHTML='<div class="ds-bar"><i></i></div><button class="ds-play" type="button" aria-label="Play the deck"></button><button class="ds-video" type="button" hidden>Video</button><div class="ds-count"></div><div class="ds-flags"></div><div class="ds-subs" hidden></div><div class="ds-notes" hidden></div>',e.body.append(n),{chrome:n,fill:n.querySelector("i"),play:n.querySelector(".ds-play"),video:n.querySelector(".ds-video"),count:n.querySelector(".ds-count"),notes:n.querySelector(".ds-notes"),flags:n.querySelector(".ds-flags"),subs:n.querySelector(".ds-subs")}}var pe={at:()=>!1,hush:()=>{},toggleMute:()=>{},toggleSubtitles:()=>{},onEnded:()=>{},onSettled:()=>{},unlock:()=>{}};function fe(e){return e?.name!=="NotSupportedError"}function he(e,r,n){let t=e.createElement("audio");t.preload="auto",e.body.append(t);let o=!1,a=!0,d=()=>e.documentElement.classList.toggle("ds-cap",a);d();let p=!1,h=!1,s=!1,c=[],l=0,b=null,w=null,E=0,x=()=>{let u=[];p&&s?u.push("press any key for sound"):h?u.push("narration unavailable"):o&&u.push("muted"),a||u.push("subtitles off"),n.flags.textContent=u.join(" \xB7 ")},y=()=>{let u=a?V(c,t.currentTime):null;u!==b&&(b=u,n.subs.textContent=u?.text??"",n.subs.hidden=u===null)},S=()=>{y(),l=t.ended||t.paused&&t.currentTime>0?0:requestAnimationFrame(S)},C=()=>{l&&cancelAnimationFrame(l),l=0,t.pause(),t.removeAttribute("src"),t.load(),c=[],y()},L=()=>{};t.addEventListener("ended",()=>{p||L()});let N=()=>{},k=u=>{let A=++E;w=u,C(),h=!1,x();let g=j(r,u.sceneId,u.fragment);return g?(c=g.cues,t.muted=o,t.src=z(r,g),Promise.resolve(t.play()).then(()=>{A===E&&(p=!1,h=!1,x(),N(!0))},I=>{A===E&&(p=fe(I),h=!p,p&&(s=!0),l&&cancelAnimationFrame(l),l=0,c=[],y(),x(),N(!1))}),l===0&&(l=requestAnimationFrame(S)),!0):!1};return{at:k,hush:C,onEnded:u=>{L=u},onSettled:u=>{N=u},toggleMute:()=>{o=!o,t.muted=o,x()},toggleSubtitles:()=>{a=!a,d(),y(),x()},unlock:()=>{!w||!(p||h)||(p=!1,x(),k(w))}}}var me='script[type="application/decksmith-video+json"]';function ge(e){if(!e)return{};let r={};try{let n=JSON.parse(e);for(let[t,o]of Object.entries(n?.scenes??{}))typeof o?.url=="string"&&/^https:\/\//i.test(o.url)&&(r[t]={url:o.url,title:typeof o.title=="string"?o.title:"Video"})}catch{return{}}return r}var be={at:()=>{},toggle:()=>{},close:()=>!1};function ye(e,r,n,t){let o=null,a=null,d=()=>o?(o.remove(),o=null,!0):!1,p=()=>{if(!a||o)return;t(),o=e.createElement("div"),o.className="ds-film";let s=e.createElement("iframe");s.src=a.url,s.title=a.title,s.allow="fullscreen",s.setAttribute("referrerpolicy","strict-origin-when-cross-origin");let c=e.createElement("button");c.type="button",c.className="ds-shut",c.textContent="\u2715",c.setAttribute("aria-label","Close the video"),c.addEventListener("click",l=>{l.stopPropagation(),d()}),o.append(s,c),n.chrome.append(o),c.focus()},h=()=>{d()||p()};return n.video.addEventListener("click",s=>{s.stopPropagation(),h()}),{at:s=>{d(),a=r[s.sceneId]??null,n.video.hidden=a===null,a&&n.video.setAttribute("aria-label",`Play the video: ${a.title}`)},toggle:h,close:d}}function ve(e){let r=e;return!!r&&(r.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(r.tagName??""))}async function Y(e){let r=le(e),n=e.querySelector("hyperframes-player");if(r.length===0||!n)return;let t=Z(r);if(t.length===0)return;let o=ue(e),a=_(e.querySelector($)?.textContent),d=a?he(e,a,o):pe,p=ge(e.querySelector(me)?.textContent),h=Object.keys(p).length===0?be:ye(e,p,o,()=>{d.hush(),k(!1)}),s=0,c=null,l=0,b=0,w=-1,E=i=>{n.seek(i),c&&G(c,r,i),l=i},x=(i,f,m)=>{let v=l,T=0,M=O=>{T===0&&(T=O);let F=Math.min(1,(O-T)/m);if(F<1){l=v+(f-v)*F,G(i,r,l),b=requestAnimationFrame(M);return}b=0,E(f)};b=requestAnimationFrame(M)},y=!1,S=0,C=()=>{S&&clearTimeout(S),S=0},L=()=>{y&&(s+1<t.length?g(s+1):k(!1))},N=i=>{C();let f=t[s],m=t[s+1],v=oe({playing:y,heard:i,gapMs:m?(m.t-f.t)*1e3:0});v!==null&&(S=setTimeout(L,v))},k=i=>{y=i,C(),o.play.dataset.on=i?"1":"0",o.play.setAttribute("aria-label",i?"Pause the deck":"Play the deck"),i&&(w=-1,g(s,!0))},u=null,A=i=>{u===null||parent===window||parent.postMessage(i,u)};addEventListener("message",i=>{if(i.source!==parent||parent===window||!q(i.data))return;let f=i.data;if(f.type==="hello"){u=i.origin,A({channel:H,type:"ready",stops:t.map((m,v)=>({i:v,label:`${m.slide+1} / ${t[t.length-1].slide+1}`,notes:m.notes})),at:s});return}u===i.origin&&(f.type==="next"?g(s+1):f.type==="prev"?g(s-1):f.type==="go"?g(f.at,!0):f.type==="play"&&k(f.on))});let g=(i,f=!1)=>{s=Math.max(0,Math.min(t.length-1,i));let m=t[s];b&&cancelAnimationFrame(b),b=0;let v=typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches,T=te(l,m.t,{reducedMotion:v});T.animate&&!f&&c?x(c,m.t,T.durationMs):E(m.t);let M=!1;s!==w&&(w=s,M=d.at(m)),h.at(m),N(M),history.replaceState(null,"",se(m)),A({channel:H,type:"stop",at:s,total:t.length,label:`${m.slide+1} / ${t[t.length-1].slide+1}`,notes:m.notes,playing:y}),o.fill.style.transform=`scaleX(${(s+1)/t.length})`,o.count.textContent=`${m.slide+1} / ${t[t.length-1].slide+1}`,o.notes.textContent=m.notes};d.onEnded(L),d.onSettled(N),o.play.addEventListener("click",i=>{i.stopPropagation(),k(!y)}),addEventListener("hashchange",()=>{let i=X(location.hash);if(!i)return;let f=W(t,i);f>=0&&f!==s&&g(f,!0)}),e.addEventListener("keydown",i=>{if(!(i.defaultPrevented||ve(i.target))){switch(i.key){case"ArrowRight":case"PageDown":case" ":g(s+1);break;case"ArrowLeft":case"PageUp":g(s-1);break;case"Home":g(0,!0);break;case"End":g(t.length-1,!0);break;case"n":o.notes.hidden=!o.notes.hidden;break;case"m":d.toggleMute();break;case"s":d.toggleSubtitles();break;case"p":k(!y);break;case"v":h.toggle();break;case"Escape":if(!h.close())return;break;case"f":{(e.fullscreenElement?e.exitFullscreen():e.documentElement.requestFullscreen()).catch(()=>{});break}default:return}i.preventDefault()}}),e.addEventListener("click",i=>{if(o.chrome.contains(i.target))return;let f=(e.documentElement.clientWidth||1)/3;i.clientX>f*2?g(s+1):i.clientX<f&&g(s-1)});let I=()=>d.unlock();if(e.addEventListener("keydown",I),e.addEventListener("click",I),await ce(n),typeof n.seek!="function")return;n.pause?.(),c=ae(n),c?.doc.documentElement.classList.add("ds-live"),c||console.warn("[decksmith] composition unreachable; serve the deck over http, not file://");let D=X(location.hash);g(D?Math.max(0,W(t,D)):0,!0)}typeof document<"u"&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>void Y(document),{once:!0}):Y(document));})();
83
+ `;function pe(e){let n=e.createElement("style");n.textContent=de,e.head.append(n);let r=e.createElement("div");return r.className="ds-chrome",r.innerHTML='<div class="ds-bar"><i></i></div><button class="ds-play" type="button" aria-label="Play the deck"></button><button class="ds-video" type="button" hidden>Video</button><div class="ds-count"></div><div class="ds-flags"></div><div class="ds-subs" hidden></div><div class="ds-notes" hidden></div>',e.body.append(r),{chrome:r,fill:r.querySelector("i"),play:r.querySelector(".ds-play"),video:r.querySelector(".ds-video"),count:r.querySelector(".ds-count"),notes:r.querySelector(".ds-notes"),flags:r.querySelector(".ds-flags"),subs:r.querySelector(".ds-subs")}}var fe={at:()=>!1,hush:()=>{},toggleMute:()=>{},toggleSubtitles:()=>{},onEnded:()=>{},onSettled:()=>{},unlock:()=>{}};function he(e){return e?.name!=="NotSupportedError"}function me(e,n,r){let t=e.createElement("audio");t.preload="auto",e.body.append(t);let o=!1,a=!0,u=()=>e.documentElement.classList.toggle("ds-cap",a);u();let f=!1,h=!1,s=!1,c=[],l=0,b=null,w=null,E=0,x=()=>{let d=[];f&&s?d.push("press any key for sound"):h?d.push("narration unavailable"):o&&d.push("muted"),a||d.push("subtitles off"),r.flags.textContent=d.join(" \xB7 ")},y=()=>{let d=a?V(c,t.currentTime):null;d!==b&&(b=d,r.subs.textContent=d?.text??"",r.subs.hidden=d===null)},S=()=>{y(),l=t.ended||t.paused&&t.currentTime>0?0:requestAnimationFrame(S)},C=()=>{l&&cancelAnimationFrame(l),l=0,t.pause(),t.removeAttribute("src"),t.load(),c=[],y()},L=()=>{};t.addEventListener("ended",()=>{f||L()});let N=()=>{},k=d=>{let A=++E;w=d,C(),h=!1,x();let g=j(n,d.sceneId,d.fragment);return g?(c=g.cues,t.muted=o,t.src=z(n,g),Promise.resolve(t.play()).then(()=>{A===E&&(f=!1,h=!1,x(),N(!0))},I=>{A===E&&(f=he(I),h=!f,f&&(s=!0),l&&cancelAnimationFrame(l),l=0,c=[],y(),x(),N(!1))}),l===0&&(l=requestAnimationFrame(S)),!0):!1};return{at:k,hush:C,onEnded:d=>{L=d},onSettled:d=>{N=d},toggleMute:()=>{o=!o,t.muted=o,x()},toggleSubtitles:()=>{a=!a,u(),y(),x()},unlock:()=>{!w||!(f||h)||(f=!1,x(),k(w))}}}var ge='script[type="application/decksmith-video+json"]';function be(e){if(!e)return{};let n={};try{let r=JSON.parse(e);for(let[t,o]of Object.entries(r?.scenes??{}))typeof o?.url=="string"&&/^https:\/\//i.test(o.url)&&(n[t]={url:o.url,title:typeof o.title=="string"?o.title:"Video"})}catch{return{}}return n}var ye={at:()=>{},toggle:()=>{},close:()=>!1};function ve(e,n,r,t){let o=null,a=null,u=()=>o?(o.remove(),o=null,!0):!1,f=()=>{if(!a||o)return;t(),o=e.createElement("div"),o.className="ds-film";let s=e.createElement("iframe");s.src=a.url,s.title=a.title,s.allow="fullscreen",s.setAttribute("referrerpolicy","strict-origin-when-cross-origin");let c=e.createElement("button");c.type="button",c.className="ds-shut",c.textContent="\u2715",c.setAttribute("aria-label","Close the video"),c.addEventListener("click",l=>{l.stopPropagation(),u()}),o.append(s,c),r.chrome.append(o),c.focus()},h=()=>{u()||f()};return r.video.addEventListener("click",s=>{s.stopPropagation(),h()}),{at:s=>{u(),a=n[s.sceneId]??null,r.video.hidden=a===null,a&&r.video.setAttribute("aria-label",`Play the video: ${a.title}`)},toggle:h,close:u}}function xe(e){let n=e;return!!n&&(n.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(n.tagName??""))}async function Y(e){let n=ce(e),r=e.querySelector("hyperframes-player");if(n.length===0||!r)return;let t=Z(n);if(t.length===0)return;let o=pe(e),a=_(e.querySelector($)?.textContent),u=a?me(e,a,o):fe,f=be(e.querySelector(ge)?.textContent),h=Object.keys(f).length===0?ye:ve(e,f,o,()=>{u.hush(),k(!1)}),s=0,c=null,l=0,b=0,w=-1,E=i=>{r.seek(i),c&&G(c,n,i),l=i},x=(i,p,m)=>{let v=l,T=0,M=O=>{T===0&&(T=O);let F=Math.min(1,(O-T)/m);if(F<1){l=v+(p-v)*F,G(i,n,l),b=requestAnimationFrame(M);return}b=0,E(p)};b=requestAnimationFrame(M)},y=!1,S=0,C=()=>{S&&clearTimeout(S),S=0},L=()=>{y&&(s+1<t.length?g(s+1):k(!1))},N=i=>{C();let p=t[s],m=t[s+1],v=oe({playing:y,heard:i,gapMs:m?(m.t-p.t)*1e3:0});v!==null&&(S=setTimeout(L,v))},k=i=>{y=i,C(),o.play.dataset.on=i?"1":"0",o.play.setAttribute("aria-label",i?"Pause the deck":"Play the deck"),i&&(w=-1,g(s,!0))},d=null,A=i=>{d===null||parent===window||parent.postMessage(i,d)};addEventListener("message",i=>{if(i.source!==parent||parent===window||!q(i.data))return;let p=i.data;if(p.type==="hello"){d=i.origin,A({channel:H,type:"ready",stops:t.map((m,v)=>({i:v,label:`${m.slide+1} / ${t[t.length-1].slide+1}`,notes:m.notes})),at:s});return}d===i.origin&&(p.type==="next"?g(s+1):p.type==="prev"?g(s-1):p.type==="go"?g(p.at,!0):p.type==="play"&&k(p.on))});let g=(i,p=!1)=>{s=Math.max(0,Math.min(t.length-1,i));let m=t[s];b&&cancelAnimationFrame(b),b=0;let v=typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches,T=te(l,m.t,{reducedMotion:v});T.animate&&!p&&c?x(c,m.t,T.durationMs):E(m.t);let M=!1;s!==w&&(w=s,M=u.at(m)),h.at(m),N(M),history.replaceState(null,"",se(m)),A({channel:H,type:"stop",at:s,total:t.length,label:`${m.slide+1} / ${t[t.length-1].slide+1}`,notes:m.notes,playing:y}),o.fill.style.transform=`scaleX(${(s+1)/t.length})`,o.count.textContent=`${m.slide+1} / ${t[t.length-1].slide+1}`,o.notes.textContent=m.notes};u.onEnded(L),u.onSettled(N),o.play.addEventListener("click",i=>{i.stopPropagation(),k(!y)}),addEventListener("hashchange",()=>{let i=X(location.hash);if(!i)return;let p=W(t,i);p>=0&&p!==s&&g(p,!0)}),e.addEventListener("keydown",i=>{if(!(i.defaultPrevented||xe(i.target))){switch(i.key){case"ArrowRight":case"PageDown":case" ":g(s+1);break;case"ArrowLeft":case"PageUp":g(s-1);break;case"Home":g(0,!0);break;case"End":g(t.length-1,!0);break;case"n":o.notes.hidden=!o.notes.hidden;break;case"m":u.toggleMute();break;case"s":u.toggleSubtitles();break;case"p":k(!y);break;case"v":h.toggle();break;case"Escape":if(!h.close())return;break;case"f":{(e.fullscreenElement?e.exitFullscreen():e.documentElement.requestFullscreen()).catch(()=>{});break}default:return}i.preventDefault()}}),e.addEventListener("click",i=>{if(o.chrome.contains(i.target))return;let p=(e.documentElement.clientWidth||1)/3;i.clientX>p*2?g(s+1):i.clientX<p&&g(s-1)});let I=()=>u.unlock();if(e.addEventListener("keydown",I),e.addEventListener("click",I),await ue(r),typeof r.seek!="function")return;r.pause?.(),c=ae(r),c?.doc.documentElement.classList.add("ds-live"),c||console.warn("[decksmith] composition unreachable; serve the deck over http, not file://");let D=X(location.hash);g(D?Math.max(0,W(t,D)):0,!0)}typeof document<"u"&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>void Y(document),{once:!0}):Y(document));})();