@jokerized/decksmith 0.9.5 → 0.9.7

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.
Files changed (50) hide show
  1. package/dist/cli.js +20862 -10094
  2. package/dist/deck-runtime.js +2 -2
  3. package/dist/index.js +11586 -1429
  4. package/dist/mcp.js +10868 -1089
  5. package/dist/types/bespoke/pipeline.d.ts +1 -1
  6. package/dist/types/bespoke/scene.d.ts +18 -2
  7. package/dist/types/emit/archetypes/index.d.ts +15 -0
  8. package/dist/types/emit/composition.d.ts +16 -1
  9. package/dist/types/emit/kit.d.ts +33 -0
  10. package/dist/types/emit/svg.d.ts +19 -0
  11. package/dist/types/emit/tex.d.ts +13 -0
  12. package/dist/types/literal/check.d.ts +45 -0
  13. package/dist/types/literal/formula.d.ts +78 -0
  14. package/dist/types/literal/index.d.ts +133 -0
  15. package/dist/types/literal/kind.d.ts +121 -0
  16. package/dist/types/literal/kinds/common.d.ts +280 -0
  17. package/dist/types/literal/kinds/evolve.d.ts +58 -0
  18. package/dist/types/literal/kinds/flow.d.ts +13 -0
  19. package/dist/types/literal/kinds/operate.d.ts +27 -0
  20. package/dist/types/literal/kinds/place-combos.d.ts +33 -0
  21. package/dist/types/literal/kinds/place-lengths.d.ts +36 -0
  22. package/dist/types/literal/kinds/place-margins.d.ts +44 -0
  23. package/dist/types/literal/kinds/place-sets.d.ts +31 -0
  24. package/dist/types/literal/kinds/place.d.ts +69 -0
  25. package/dist/types/literal/kinds/prior-work.d.ts +29 -0
  26. package/dist/types/literal/kinds/read.d.ts +33 -0
  27. package/dist/types/literal/kinds/recap.d.ts +16 -0
  28. package/dist/types/literal/kinds/region.d.ts +56 -0
  29. package/dist/types/literal/kinds/stage.d.ts +108 -0
  30. package/dist/types/literal/kinds/svg.d.ts +65 -0
  31. package/dist/types/literal/kinds/table.d.ts +19 -0
  32. package/dist/types/literal/kinds/tex.d.ts +6 -0
  33. package/dist/types/literal/kinds-shared.d.ts +15 -0
  34. package/dist/types/literal/kit.d.ts +86 -0
  35. package/dist/types/literal/ops.d.ts +56 -0
  36. package/dist/types/literal/registry.d.ts +20 -0
  37. package/dist/types/plan/codex.d.ts +17 -4
  38. package/dist/types/plan/coverage.d.ts +179 -0
  39. package/dist/types/plan/duration.d.ts +2 -0
  40. package/dist/types/plan/locate.d.ts +46 -0
  41. package/dist/types/plan/prompt.d.ts +14 -1
  42. package/dist/types/plan/variety.d.ts +35 -1
  43. package/dist/types/render/timing.d.ts +7 -1
  44. package/dist/types/source/harvest.d.ts +1 -0
  45. package/dist/types/types.d.ts +21451 -933
  46. package/dist/types/verify/fidelity.d.ts +7 -2
  47. package/dist/types/verify/fill.d.ts +70 -9
  48. package/dist/types/verify/overprint.d.ts +46 -0
  49. package/dist/types/verify/scenes.d.ts +61 -2
  50. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- "use strict";(()=>{var Ee='script[type="application/decksmith-motion+json"]';function Se(e){if(!e)return null;try{let t=JSON.parse(e),n={};if(t.holds&&typeof t.holds=="object")for(let[r,o]of Object.entries(t.holds)){if(!Array.isArray(o))continue;let i=o.filter(a=>typeof a=="object"&&a!==null&&[a.at,a.from,a.to].every(y=>typeof y=="number"&&Number.isFinite(y))&&a.to>a.at);i.length&&(n[r]=i)}return{seams:t.seams===!0,holds:n}}catch{return null}}function ke(e,t){return e.holds[t.sceneId]?.find(n=>Math.abs(n.at-t.t)<.002)}function Me(e,t){let n=e.from+Math.max(0,t);return Math.min(e.to,Math.max(e.at,n))}var pt=4;function Te(e,t,n,r,o){if(!t||n.fragment!==0||n.slide!==t.slide+1||n.t-e<=o)return null;let i=r.find(a=>a.sceneId===n.sceneId)?.startTime;return typeof i!="number"||!Number.isFinite(i)||i<=e||n.t-i>pt||n.t<=i?null:i}function ft(e){return Math.round(1920**.5*e.width**(1-.5))}function Ae(e){return Math.round(e.height*ft(e)/e.width)}var le="decksmith-player",fn=`<meta name="${le}" content="2" />`;var j=[.75,1,1.25,1.5,1.75,2],W=["s","m","l","xl"],ht={s:.8,m:1,l:1.3,xl:1.6},bt={speed:1,cc:!0,ccsize:"m"},ce="decksmith.prefs.v1",ue="decksmith:prefs";function He(e){let t=typeof e=="string"&&e.trim()!==""?Number(e):e;if(typeof t!="number"||!Number.isFinite(t)||t<=0)return;let n=j[0];for(let r of j)Math.abs(r-t)<Math.abs(n-t)&&(n=r);return n}function gt(e){if(typeof e=="boolean")return e;if(typeof e=="number")return e===1?!0:e===0?!1:void 0;if(typeof e!="string")return;let t=e.trim().toLowerCase();if(t==="1"||t==="on"||t==="true"||t==="yes")return!0;if(t==="0"||t==="off"||t==="false"||t==="no")return!1}function yt(e){let t=typeof e=="string"?e.trim().toLowerCase():"";return W.includes(t)?t:void 0}function Q(e){if(typeof e!="object"||e===null)return{};let t=e,n={},r=He(t.speed);r!==void 0&&(n.speed=r);let o=gt(t.cc);o!==void 0&&(n.cc=o);let i=yt(t.ccsize);return i!==void 0&&(n.ccsize=i),n}function Fe(e){let t=new URLSearchParams(e);return Q({speed:t.get("speed")??void 0,cc:t.get("cc")??void 0,ccsize:t.get("ccsize")??void 0})}function Re(e){if(!e)return{};try{return Q(JSON.parse(e))}catch{return{}}}function de(e,t){return{...bt,...e,...t}}function _e(e,t){let n=j.indexOf(He(e)??1);return j[Math.max(0,Math.min(j.length-1,n+t))]}function ee(e){return`${e}\xD7`}var xt=.03,Le=13,wt=56,vt={s:Le,m:Le,l:16,xl:19},Ce=3,Ie=1.25,Y=40,Pe=52,X=8,ie=12,ae=4.6,Et=1.2,St=24,kt=.88,Ne=44;function $e(e,t,n,r,o={}){let i=n>0&&Number.isFinite(n)?n:1.7777777777777777,a=Math.max(0,e),y=Math.max(0,t),d=Math.min(i,1),c=Math.max(0,Math.min(.25,o.safeBottom??0)),b=0,f=0;if(r.on){let E=xt*ht[r.size]*d,P=Math.min(a/i,y/(1+Ce*E));b=Math.min(wt,Math.max(vt[r.size],E*P)),f=Ce*b}let v=Math.max(ie,.04*a),S=E=>b>0?Math.min(Ne,2*kt*Math.max(0,E)/b):Ne,m=Math.max(0,Math.min(a/i,y-f)),M=y-m-f;if(M>=Y+X){let E=m*i,P=Math.min(Pe,Math.max(Y,E/10),M-X),N=P+X,I=(a-E)/2,H=Math.max(0,(y-m-f-N)/2);return{slideW:E,slideH:m,slideX:I,slideY:H,capFont:b,capH:f,dock:"letterbox",bar:{x:I,y:H+m+f,w:E,h:N},btn:P,compact:E<2*ae*P,barInset:6,strip:{x:0,y:H+m,w:a,h:f},stripPad:v,cueEm:S(a-2*v)}}let k=Math.min(Pe+X,c*m);if(k>=Y+X){let E=m*i,P=(a-E)/2,N=Math.max(0,(y-m-f)/2);return{slideW:E,slideH:m,slideX:P,slideY:N,capFont:b,capH:f,dock:"pad",bar:{x:P,y:N+m-k,w:E,h:k},btn:k-X,compact:E<2*ae*Y,barInset:6,strip:{x:0,y:N+m,w:a,h:f},stripPad:v,cueEm:S(a-2*v)}}let x=Y,F=(E,P)=>{let N=Math.max(f,x),I=Math.max(0,Math.min(a/i,y-N)),H=I*i,p=P?4:Math.max(4,(a-H)/2),$=p+E*x+ie/2;return{bandH:N,slideH:I,slideW:H,inset:p,pad:$,measure:a-2*$}},A=!1,w=F(ae,!1);(r.on?w.measure<St*b:w.measure<ie*2)&&(A=!0,w=F(Et,!0));let T=(a-w.slideW)/2,_=Math.max(0,(y-w.slideH-w.bandH)/2),B=_+w.slideH;return{slideW:w.slideW,slideH:w.slideH,slideX:T,slideY:_,capFont:b,capH:r.on?w.bandH:0,dock:"band",bar:{x:0,y:B,w:a,h:w.bandH},btn:x,compact:A,barInset:w.inset,strip:{x:0,y:B,w:a,h:r.on?w.bandH:0},stripPad:w.pad,cueEm:S(w.measure)}}function ze(e,t){if(!(e>0&&t>0))return 0;let n=Ae({width:e,height:t});return Math.max(0,(84-Mt)/n)}var Mt=16;function Oe(e){if(e.metaKey||e.ctrlKey||e.altKey)return null;let t=Tt(e),n=At[t];return n||(e.repeat?null:Lt[t]??null)}function Tt(e){if(!(e.key==="Process"||e.isComposing===!0||[...e.key].some(r=>r.charCodeAt(0)>127)))return e.key;let n=/^Key([A-Z])$/.exec(e.code??"");return n?n[1].toLowerCase():e.key}var At={ArrowRight:"next",PageDown:"next"," ":"next",ArrowLeft:"prev",PageUp:"prev"},Lt={Home:"first",End:"last",Enter:"play",p:"play",k:"play",c:"captions",s:"captions",">":"faster","<":"slower","+":"bigger","=":"bigger","-":"smaller",m:"mute",n:"notes",v:"video",Escape:"escape",f:"fullscreen"};function De(e,t){let n=W.indexOf(e);return W[Math.max(0,Math.min(W.length-1,n+t))]}var te="decksmith-deck";function Be(e){return typeof e=="object"&&e!==null&&e.channel===te&&typeof e.type=="string"}var Ve='script[type="application/decksmith-narration+json"]';function me(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function Ct(e){let t=e,n=me(t?.start),r=me(t?.end);return n===void 0||r===void 0||r<n?null:{start:n,end:r,text:typeof t?.text=="string"?t.text:""}}var Pt=84;function pe(e,t){let n=[],r="";for(let o of e)r===""?r=o:r.length+1+o.length<=t?r+=` ${o}`:(n.push(r),r=o);return r!==""&&n.push(r),n}function Nt(e,t=Pt){if(e.text.length<=t)return[e];let n=e.text.split(/\s+/).filter(Boolean),r=pe(n,t).length,o=t;for(let c=Math.ceil(e.text.length/r);c<t;c++)if(pe(n,c).length<=r){o=c;break}let i=pe(n,o);if(i.length<2)return[e];let a=i.reduce((c,b)=>c+b.length,0),y=e.end-e.start,d=e.start;return i.map((c,b)=>{let f=b===i.length-1?e.end:d+y*c.length/a,v={start:d,end:f,text:c};return d=f,v})}var je=/[\u2E80-\u2FFF\u3000-\u30FF\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF\uFE30-\uFE4F\uFF00-\uFF60\uFFE0-\uFFE6]/u,Ht=/[\u1100-\u11FF\u3130-\u318F\uAC00-\uD7AF]/u,Ft=/^[、。,.,.!?!?:;:;))」』】〕〉》・ーぁぃぅぇぉっゃゅょァィゥェォッャュョ]/u;function Rt(e){return je.test(e)?1:Ht.test(e)?.92:.56}var _t=.28,be=44;function It(e){let t=[],n="",r=!1,o=()=>{n!==""&&(t.push({text:n,spaced:r,em:[...n].reduce((i,a)=>i+Rt(a),0)}),n="",r=!1)};for(let i of e)/\s/.test(i)?(o(),r=t.length>0):je.test(i)?(o(),t.push({text:i,spaced:r,em:1}),r=!1):n+=i;return o(),t}function he(e){return e.reduce((t,n,r)=>t+n.em+(r>0&&n.spaced?_t:0),0)}function $t(e){return e.map((t,n)=>n>0&&t.spaced?` ${t.text}`:t.text).join("")}function fe(e,t){let n=[],r=[];for(let o of e){let i=he([...r,o])<=t;r.length===0||i||Ft.test(o.text)?r.push(o):(n.push(r),r=[o])}return r.length>0&&n.push(r),n}function qe(e,t=be){let n=It(e.text),r=he(n);if(r<=t||n.length<2)return[e];let o=fe(n,t).length,i=t;for(let f=Math.ceil(r/o*2)/2;f<t;f+=.5)if(fe(n,f).length<=o){i=f;break}let a=fe(n,i);if(a.length<2)return[e];let y=a.map(he),d=y.reduce((f,v)=>f+v,0),c=e.end-e.start,b=e.start;return a.map((f,v)=>{let S=v===a.length-1?e.end:b+c*y[v]/d,m={start:b,end:S,text:$t(f)};return b=S,m})}function zt(e,t=n=>Nt(n)){let n=e,r=me(n?.stop);if(r===void 0||r<0||!n?.audio||typeof n.audio!="string")return null;let o=Array.isArray(n.cues)?n.cues.map(Ct).filter(i=>i!==null):[];return o.sort((i,a)=>i.start-a.start),{stop:r,audio:n.audio,cues:o.flatMap(t)}}function Ke(e,t={}){if(!e)return null;let n;try{n=JSON.parse(e)}catch{return null}let r=n,o=r?.scenes;if(!o||typeof o!="object"||Array.isArray(o))return null;let i={};for(let[a,y]of Object.entries(o)){if(!Array.isArray(y))continue;let d=y.map(c=>zt(c,t.split)).filter(c=>c!==null);d.length>0&&(i[a]=d)}return Object.keys(i).length===0?null:{voice:typeof r?.voice=="string"?r.voice:"",dir:typeof r?.dir=="string"?r.dir:"",scenes:i}}function Xe(e,t){for(let n of e){if(t<n.start)return null;if(t<n.end)return n}return null}function ne(e,t,n){return e?.scenes[t]?.find(r=>r.stop===n)??null}function We(e,t){let n=e.dir.replace(/\/+$/,"");return n===""||/^[a-z][a-z0-9+.-]*:|^\.{0,2}\//i.test(t.audio)?t.audio:`${n}/${t.audio}`}function Ue(...e){for(let t of e)if(typeof t=="number"&&Number.isFinite(t))return t}function Ot(e){let t=[];for(let n of e){let r=Ue(n.startTime);if(r===void 0)continue;let o=Ue(n.endTime)??Number.POSITIVE_INFINITY,i=t.length===0?0:t[t.length-1].slide+1,a=n.notes??"",y=[...new Set(n.fragments??[])].filter(f=>Number.isFinite(f)&&f>r&&f<=o).sort((f,v)=>f-v),[d,...c]=y,b=n.sceneId;t.push({t:d??r,slide:i,fragment:0,notes:a,sceneId:b});for(let[f,v]of c.entries())t.push({t:v,slide:i,fragment:f+1,notes:a,sceneId:b})}return t}var et=2.5;function Dt(e,t,n={}){let r=t-e;return n.reducedMotion===!0||r<=0||r>et?{animate:!1,durationMs:0}:{animate:!0,durationMs:r*1e3/tt(n.rate)}}function tt(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:1}var Bt=1500,Vt=8e3;function jt(e){if(!e.playing||e.heard)return null;let t=tt(e.rate);if(e.silent===!0){let n=Math.max(0,e.revealMs??0);return Math.min(Ye(e.gapMs)/t,n+qt/t)}return Ye(e.gapMs)/t}function Ye(e){return Math.min(Vt,Math.max(Bt,e))}var qt=1500;function Kt(e){return e.fragment>0?`#${e.slide+1}.${e.fragment}`:`#${e.slide+1}`}function Ge(e){let t=/^#?(\d+)(?:\.(\d+))?$/.exec(e.trim());if(!t)return null;let n=Number(t[1]);return n<1?null:{slide:n-1,fragment:t[2]===void 0?0:Number(t[2])}}function Je(e,t){let n=e.findIndex(r=>r.slide===t.slide&&r.fragment===t.fragment);return n>=0?n:e.findIndex(r=>r.slide===t.slide)}var Xt='script[type="application/hyperframes-slideshow+json"]';function Wt(e){let t=e.shadowRoot?.querySelector("iframe")??e.querySelector("iframe")??null;try{let n=t?.contentDocument,r=t?.contentWindow;return n&&r?{doc:n,get timelines(){return r.__timelines??{}}}:null}catch{return null}}function Ut(e,t,n){let r=e.startTime??0,o=Number.isFinite(t)&&t>0?r+t:e.endTime??Number.POSITIVE_INFINITY;return n>=r&&n<o}function ge(e,t,n){for(let r of t){let o=e.doc.getElementById(r.sceneId),i=Number(o?.getAttribute?.("data-duration")??Number.NaN),a=Ut(r,i,n);o?.style&&(o.style.display=a?"":"none"),a&&e.timelines[r.sceneId]?.seek(Math.max(0,n-(r.startTime??0)))}}function Yt(e){let t=e.querySelector(Xt);if(!t?.textContent)return[];try{let r=JSON.parse(t.textContent)?.slides;return Array.isArray(r)?r.filter(o=>typeof o?.sceneId=="string"):[]}catch{return[]}}function Gt(e){return e.ready===!0?Promise.resolve():new Promise(t=>{let n=()=>{clearTimeout(r),t()},r=setTimeout(()=>{e.removeEventListener("ready",n),t()},5e3);e.addEventListener("ready",n,{once:!0})})}var Jt=`
1
+ "use strict";(()=>{var Se='script[type="application/decksmith-motion+json"]';function Ee(e){if(!e)return null;try{let t=JSON.parse(e),n={};if(t.holds&&typeof t.holds=="object")for(let[r,o]of Object.entries(t.holds)){if(!Array.isArray(o))continue;let i=o.filter(a=>typeof a=="object"&&a!==null&&[a.at,a.from,a.to].every(y=>typeof y=="number"&&Number.isFinite(y))&&a.to>a.at);i.length&&(n[r]=i)}return{seams:t.seams===!0,holds:n}}catch{return null}}function ke(e,t){return e.holds[t.sceneId]?.find(n=>Math.abs(n.at-t.t)<.002)}function Me(e,t){let n=e.from+Math.max(0,t);return Math.min(e.to,Math.max(e.at,n))}var pt=4;function Te(e,t,n,r,o){if(!t||n.fragment!==0||n.slide!==t.slide+1||n.t-e<=o)return null;let i=r.find(a=>a.sceneId===n.sceneId)?.startTime;return typeof i!="number"||!Number.isFinite(i)||i<=e||n.t-i>pt||n.t<=i?null:i}function ft(e){return Math.round(1920**.5*e.width**(1-.5))}function Ae(e){return Math.round(e.height*ft(e)/e.width)}var le="decksmith-player",fn=`<meta name="${le}" content="2" />`;var j=[.75,1,1.25,1.5,1.75,2],X=["s","m","l","xl"],ht={s:.8,m:1,l:1.3,xl:1.6},bt={speed:1,cc:!0,ccsize:"m"},ce="decksmith.prefs.v1",ue="decksmith:prefs";function He(e){let t=typeof e=="string"&&e.trim()!==""?Number(e):e;if(typeof t!="number"||!Number.isFinite(t)||t<=0)return;let n=j[0];for(let r of j)Math.abs(r-t)<Math.abs(n-t)&&(n=r);return n}function gt(e){if(typeof e=="boolean")return e;if(typeof e=="number")return e===1?!0:e===0?!1:void 0;if(typeof e!="string")return;let t=e.trim().toLowerCase();if(t==="1"||t==="on"||t==="true"||t==="yes")return!0;if(t==="0"||t==="off"||t==="false"||t==="no")return!1}function yt(e){let t=typeof e=="string"?e.trim().toLowerCase():"";return X.includes(t)?t:void 0}function Q(e){if(typeof e!="object"||e===null)return{};let t=e,n={},r=He(t.speed);r!==void 0&&(n.speed=r);let o=gt(t.cc);o!==void 0&&(n.cc=o);let i=yt(t.ccsize);return i!==void 0&&(n.ccsize=i),n}function Fe(e){let t=new URLSearchParams(e);return Q({speed:t.get("speed")??void 0,cc:t.get("cc")??void 0,ccsize:t.get("ccsize")??void 0})}function Re(e){if(!e)return{};try{return Q(JSON.parse(e))}catch{return{}}}function de(e,t){return{...bt,...e,...t}}function _e(e,t){let n=j.indexOf(He(e)??1);return j[Math.max(0,Math.min(j.length-1,n+t))]}function ee(e){return`${e}\xD7`}var xt=.03,Le=13,wt=56,vt={s:Le,m:Le,l:16,xl:19},Ce=3,Ie=1.25,Y=40,Pe=52,W=8,ie=12,ae=4.6,St=1.2,Et=24,kt=.88,Ne=44;function ze(e,t,n,r,o={}){let i=n>0&&Number.isFinite(n)?n:1.7777777777777777,a=Math.max(0,e),y=Math.max(0,t),d=Math.min(i,1),c=Math.max(0,Math.min(.25,o.safeBottom??0)),b=0,f=0;if(r.on){let S=xt*ht[r.size]*d,P=Math.min(a/i,y/(1+Ce*S));b=Math.min(wt,Math.max(vt[r.size],S*P)),f=Ce*b}let v=Math.max(ie,.04*a),E=S=>b>0?Math.min(Ne,2*kt*Math.max(0,S)/b):Ne,m=Math.max(0,Math.min(a/i,y-f)),M=y-m-f;if(M>=Y+W){let S=m*i,P=Math.min(Pe,Math.max(Y,S/10),M-W),N=P+W,I=(a-S)/2,H=Math.max(0,(y-m-f-N)/2);return{slideW:S,slideH:m,slideX:I,slideY:H,capFont:b,capH:f,dock:"letterbox",bar:{x:I,y:H+m+f,w:S,h:N},btn:P,compact:S<2*ae*P,barInset:6,strip:{x:0,y:H+m,w:a,h:f},stripPad:v,cueEm:E(a-2*v)}}let k=Math.min(Pe+W,c*m);if(k>=Y+W){let S=m*i,P=(a-S)/2,N=Math.max(0,(y-m-f)/2);return{slideW:S,slideH:m,slideX:P,slideY:N,capFont:b,capH:f,dock:"pad",bar:{x:P,y:N+m-k,w:S,h:k},btn:k-W,compact:S<2*ae*Y,barInset:6,strip:{x:0,y:N+m,w:a,h:f},stripPad:v,cueEm:E(a-2*v)}}let x=Y,F=(S,P)=>{let N=Math.max(f,x),I=Math.max(0,Math.min(a/i,y-N)),H=I*i,p=P?4:Math.max(4,(a-H)/2),z=p+S*x+ie/2;return{bandH:N,slideH:I,slideW:H,inset:p,pad:z,measure:a-2*z}},A=!1,w=F(ae,!1);(r.on?w.measure<Et*b:w.measure<ie*2)&&(A=!0,w=F(St,!0));let T=(a-w.slideW)/2,_=Math.max(0,(y-w.slideH-w.bandH)/2),B=_+w.slideH;return{slideW:w.slideW,slideH:w.slideH,slideX:T,slideY:_,capFont:b,capH:r.on?w.bandH:0,dock:"band",bar:{x:0,y:B,w:a,h:w.bandH},btn:x,compact:A,barInset:w.inset,strip:{x:0,y:B,w:a,h:r.on?w.bandH:0},stripPad:w.pad,cueEm:E(w.measure)}}function $e(e,t){if(!(e>0&&t>0))return 0;let n=Ae({width:e,height:t});return Math.max(0,(84-Mt)/n)}var Mt=16;function Oe(e){if(e.metaKey||e.ctrlKey||e.altKey)return null;let t=Tt(e),n=At[t];return n||(e.repeat?null:Lt[t]??null)}function Tt(e){if(!(e.key==="Process"||e.isComposing===!0||[...e.key].some(r=>r.charCodeAt(0)>127)))return e.key;let n=/^Key([A-Z])$/.exec(e.code??"");return n?n[1].toLowerCase():e.key}var At={ArrowRight:"next",PageDown:"next"," ":"next",ArrowLeft:"prev",PageUp:"prev"},Lt={Home:"first",End:"last",Enter:"play",p:"play",k:"play",c:"captions",s:"captions",">":"faster","<":"slower","+":"bigger","=":"bigger","-":"smaller",m:"mute",n:"notes",v:"video",Escape:"escape",f:"fullscreen"};function De(e,t){let n=X.indexOf(e);return X[Math.max(0,Math.min(X.length-1,n+t))]}var te="decksmith-deck";function Be(e){return typeof e=="object"&&e!==null&&e.channel===te&&typeof e.type=="string"}var Ve='script[type="application/decksmith-narration+json"]';function me(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function Ct(e){let t=e,n=me(t?.start),r=me(t?.end);return n===void 0||r===void 0||r<n?null:{start:n,end:r,text:typeof t?.text=="string"?t.text:""}}var Pt=84;function pe(e,t){let n=[],r="";for(let o of e)r===""?r=o:r.length+1+o.length<=t?r+=` ${o}`:(n.push(r),r=o);return r!==""&&n.push(r),n}function Nt(e,t=Pt){if(e.text.length<=t)return[e];let n=e.text.split(/\s+/).filter(Boolean),r=pe(n,t).length,o=t;for(let c=Math.ceil(e.text.length/r);c<t;c++)if(pe(n,c).length<=r){o=c;break}let i=pe(n,o);if(i.length<2)return[e];let a=i.reduce((c,b)=>c+b.length,0),y=e.end-e.start,d=e.start;return i.map((c,b)=>{let f=b===i.length-1?e.end:d+y*c.length/a,v={start:d,end:f,text:c};return d=f,v})}var je=/[\u2E80-\u2FFF\u3000-\u30FF\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF\uFE30-\uFE4F\uFF00-\uFF60\uFFE0-\uFFE6]/u,Ht=/[\u1100-\u11FF\u3130-\u318F\uAC00-\uD7AF]/u,Ft=/^[、。,.,.!?!?:;:;))」』】〕〉》・ーぁぃぅぇぉっゃゅょァィゥェォッャュョ]/u;function Rt(e){return je.test(e)?1:Ht.test(e)?.92:.56}var _t=.28,be=44;function It(e){let t=[],n="",r=!1,o=()=>{n!==""&&(t.push({text:n,spaced:r,em:[...n].reduce((i,a)=>i+Rt(a),0)}),n="",r=!1)};for(let i of e)/\s/.test(i)?(o(),r=t.length>0):je.test(i)?(o(),t.push({text:i,spaced:r,em:1}),r=!1):n+=i;return o(),t}function he(e){return e.reduce((t,n,r)=>t+n.em+(r>0&&n.spaced?_t:0),0)}function zt(e){return e.map((t,n)=>n>0&&t.spaced?` ${t.text}`:t.text).join("")}function fe(e,t){let n=[],r=[];for(let o of e){let i=he([...r,o])<=t;r.length===0||i||Ft.test(o.text)?r.push(o):(n.push(r),r=[o])}return r.length>0&&n.push(r),n}function qe(e,t=be){let n=It(e.text),r=he(n);if(r<=t||n.length<2)return[e];let o=fe(n,t).length,i=t;for(let f=Math.ceil(r/o*2)/2;f<t;f+=.5)if(fe(n,f).length<=o){i=f;break}let a=fe(n,i);if(a.length<2)return[e];let y=a.map(he),d=y.reduce((f,v)=>f+v,0),c=e.end-e.start,b=e.start;return a.map((f,v)=>{let E=v===a.length-1?e.end:b+c*y[v]/d,m={start:b,end:E,text:zt(f)};return b=E,m})}function $t(e,t=n=>Nt(n)){let n=e,r=me(n?.stop);if(r===void 0||r<0||!n?.audio||typeof n.audio!="string")return null;let o=Array.isArray(n.cues)?n.cues.map(Ct).filter(i=>i!==null):[];return o.sort((i,a)=>i.start-a.start),{stop:r,audio:n.audio,cues:o.flatMap(t)}}function Ke(e,t={}){if(!e)return null;let n;try{n=JSON.parse(e)}catch{return null}let r=n,o=r?.scenes;if(!o||typeof o!="object"||Array.isArray(o))return null;let i={};for(let[a,y]of Object.entries(o)){if(!Array.isArray(y))continue;let d=y.map(c=>$t(c,t.split)).filter(c=>c!==null);d.length>0&&(i[a]=d)}return Object.keys(i).length===0?null:{voice:typeof r?.voice=="string"?r.voice:"",dir:typeof r?.dir=="string"?r.dir:"",scenes:i}}function We(e,t){for(let n of e){if(t<n.start)return null;if(t<n.end)return n}return null}function ne(e,t,n){return e?.scenes[t]?.find(r=>r.stop===n)??null}function Xe(e,t){let n=e.dir.replace(/\/+$/,"");return n===""||/^[a-z][a-z0-9+.-]*:|^\.{0,2}\//i.test(t.audio)?t.audio:`${n}/${t.audio}`}function Ue(...e){for(let t of e)if(typeof t=="number"&&Number.isFinite(t))return t}function Ot(e){let t=[];for(let n of e){let r=Ue(n.startTime);if(r===void 0)continue;let o=Ue(n.endTime)??Number.POSITIVE_INFINITY,i=t.length===0?0:t[t.length-1].slide+1,a=n.notes??"",y=[...new Set(n.fragments??[])].filter(f=>Number.isFinite(f)&&f>r&&f<=o).sort((f,v)=>f-v),[d,...c]=y,b=n.sceneId;t.push({t:d??r,slide:i,fragment:0,notes:a,sceneId:b});for(let[f,v]of c.entries())t.push({t:v,slide:i,fragment:f+1,notes:a,sceneId:b})}return t}var et=2.5;function Dt(e,t,n={}){let r=t-e;return n.reducedMotion===!0||r<=0||r>et?{animate:!1,durationMs:0}:{animate:!0,durationMs:r*1e3/tt(n.rate)}}function tt(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:1}var Bt=1500,Vt=8e3;function jt(e){if(!e.playing||e.heard)return null;let t=tt(e.rate);if(e.silent===!0){let n=Math.max(0,e.revealMs??0);return Math.min(Ye(e.gapMs)/t,n+qt/t)}return Ye(e.gapMs)/t}function Ye(e){return Math.min(Vt,Math.max(Bt,e))}var qt=1500;function Kt(e){return e.fragment>0?`#${e.slide+1}.${e.fragment}`:`#${e.slide+1}`}function Ge(e){let t=/^#?(\d+)(?:\.(\d+))?$/.exec(e.trim());if(!t)return null;let n=Number(t[1]);return n<1?null:{slide:n-1,fragment:t[2]===void 0?0:Number(t[2])}}function Je(e,t){let n=e.findIndex(r=>r.slide===t.slide&&r.fragment===t.fragment);return n>=0?n:e.findIndex(r=>r.slide===t.slide)}var Wt='script[type="application/hyperframes-slideshow+json"]';function Xt(e){let t=e.shadowRoot?.querySelector("iframe")??e.querySelector("iframe")??null;try{let n=t?.contentDocument,r=t?.contentWindow;return n&&r?{doc:n,get timelines(){return r.__timelines??{}}}:null}catch{return null}}function Ut(e,t,n){let r=e.startTime??0,o=Number.isFinite(t)&&t>0?r+t:e.endTime??Number.POSITIVE_INFINITY;return n>=r&&n<o}function ge(e,t,n){for(let r of t){let o=e.doc.getElementById(r.sceneId),i=Number(o?.getAttribute?.("data-duration")??Number.NaN),a=Ut(r,i,n);o?.style&&(o.style.display=a?"":"none"),a&&e.timelines[r.sceneId]?.seek(Math.max(0,n-(r.startTime??0)))}}function Yt(e){let t=e.querySelector(Wt);if(!t?.textContent)return[];try{let r=JSON.parse(t.textContent)?.slides;return Array.isArray(r)?r.filter(o=>typeof o?.sceneId=="string"):[]}catch{return[]}}function Gt(e){return e.ready===!0?Promise.resolve():new Promise(t=>{let n=()=>{clearTimeout(r),t()},r=setTimeout(()=>{e.removeEventListener("ready",n),t()},5e3);e.addEventListener("ready",n,{once:!0})})}var Jt=`
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)}
@@ -148,4 +148,4 @@ html:not(.ds-compact) .ds-morewrap{display:none}
148
148
  line-height:${Ie};text-wrap:pretty}
149
149
  .ds-subs[hidden]{visibility:hidden}
150
150
  .ds-say{position:fixed;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
151
- `;function Qt(e){let t=e.createElement("style");t.textContent=Zt,e.head.append(t),e.documentElement.classList.add("ds-v2");let n=(d,c,b)=>`<button class="${d}" type="button" role="menuitemradio" data-value="${c}" aria-checked="false">${b}</button>`,r=j.map(d=>n("ds-rate",String(d),ee(d))).join(""),o=W.map(d=>n("ds-sz",d,d.toUpperCase())).join(""),i=e.createElement("div");i.className="ds-chrome",i.innerHTML=`<div class="ds-subs" hidden></div><div class="ds-bar"><i></i></div><div class="ds-flags"></div><div class="ds-controls" role="toolbar" aria-label="Deck controls" data-shown="1"><button class="ds-play" type="button" aria-label="Play the deck" aria-keyshortcuts="Enter"></button><span class="ds-count"></span><span class="ds-gap"></span><button class="ds-video" type="button" hidden>Video</button><span class="ds-wrap ds-full"><button class="ds-speed" type="button" aria-haspopup="menu" aria-expanded="false" aria-label="Narration speed" aria-keyshortcuts="Shift+. Shift+,">1\xD7</button><span class="ds-menu" role="menu" aria-label="Narration speed" hidden>${r}</span></span><button class="ds-cc ds-full" type="button" aria-pressed="true" aria-label="Captions" aria-keyshortcuts="C">CC</button><span class="ds-wrap ds-full ds-sizewrap"><button class="ds-size" type="button" aria-haspopup="menu" aria-expanded="false" aria-label="Caption size">Aa</button><span class="ds-menu" role="menu" aria-label="Caption size" hidden>${o}</span></span><button class="ds-fs ds-full" type="button" aria-label="Full screen" aria-keyshortcuts="F"></button><span class="ds-wrap ds-morewrap"><button class="ds-more" type="button" aria-haspopup="menu" aria-expanded="false" aria-label="Settings">\u22EF</button><span class="ds-menu" role="menu" aria-label="Settings" hidden><span class="ds-mlabel">Speed</span>${r}<span class="ds-mlabel">Captions</span><button class="ds-cc2" type="button" role="menuitemcheckbox" aria-checked="true">CC</button>${o}<button class="ds-fs2" type="button" role="menuitem">Full screen</button></span></span></div><div class="ds-notes" hidden></div><div class="ds-say" aria-live="polite"></div>`,e.body.append(i);let a=d=>i.querySelector(d),y=i.querySelectorAll(".ds-menu");return{chrome:i,fill:a(".ds-bar>i"),play:a(".ds-play"),video:a(".ds-video"),count:a(".ds-count"),notes:a(".ds-notes"),flags:a(".ds-flags"),subs:a(".ds-subs"),controls:a(".ds-controls"),speed:a(".ds-speed"),speedMenu:y[0],cc:a(".ds-cc"),size:a(".ds-size"),sizeMenu:y[1],fs:a(".ds-fs"),more:a(".ds-more"),moreMenu:y[2],say:a(".ds-say")}}function en(e){return e.querySelector(`meta[name="${le}"]`)?.getAttribute("content")==="2"}function tn(e){let t=e.createElement("style");t.textContent=Jt,e.head.append(t);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 nn={at:()=>!1,hush:()=>{},toggleMute:()=>{},toggleSubtitles:()=>{},setSubtitles:()=>{},setRate:()=>{},onEnded:()=>{},onSettled:()=>{},unlock:()=>{},onProgress:()=>{},pause:()=>{},resume:()=>!1,refit:()=>{}};function rn(e){return e?.name!=="NotSupportedError"}function sn(e,t,n,r={}){let o=e.createElement("audio");o.preload="auto",e.body.append(o);let i=r.v2===!0,a=r.cut??(p=>p),y=1,d=()=>{i&&(o.defaultPlaybackRate=y,o.playbackRate=y,o.preservesPitch=!0)};d();let c=!1,b=!1,f=!0,v=()=>e.documentElement.classList.toggle("ds-cap",f);v();let S=!1,m=!1,M=!1,k=[],x=0,F=null,A=null,w=0,R=()=>{let p=[];S&&M?p.push("press any key for sound"):m?p.push("narration unavailable"):b&&p.push("muted"),!f&&r.flagSubtitles!==!1&&p.push("subtitles off"),n.flags.textContent=p.join(" \xB7 ")},T=()=>{let p=f?Xe(k,o.currentTime):null;p!==F&&(F=p,n.subs.textContent=p?.text??"",n.subs.hidden=p===null)},_=()=>{},B=()=>{T(),i&&_(o.currentTime),x=o.ended||o.paused&&o.currentTime>0?0:requestAnimationFrame(B)},E=()=>{x&&cancelAnimationFrame(x),x=0,c=!1,o.pause(),o.removeAttribute("src"),o.load(),k=[],T()},P=()=>{};o.addEventListener("ended",()=>{S||P()});let N=()=>{},I=p=>{let $=++w;A=p,E(),m=!1,R();let q=ne(t,p.sceneId,p.fragment);return q?(k=a(q.cues),o.muted=b,o.src=We(t,q),d(),H($),x===0&&(x=requestAnimationFrame(B)),!0):!1};function H(p){Promise.resolve(o.play()).then(()=>{p===w&&(S=!1,m=!1,R(),N(!0))},$=>{p===w&&(S=rn($),m=!S,S&&(M=!0),x&&cancelAnimationFrame(x),x=0,k=[],T(),R(),N(!1))})}return{at:I,hush:E,onEnded:p=>{P=p},onSettled:p=>{N=p},onProgress:p=>{_=p},pause:()=>{!A||!o.getAttribute("src")||o.ended||(c=!0,o.pause(),x&&cancelAnimationFrame(x),x=0)},resume:()=>!c||!A||!o.getAttribute("src")||o.ended?!1:(c=!1,d(),H(w),x===0&&(x=requestAnimationFrame(B)),!0),refit:()=>{if(!A||k.length===0)return;let p=ne(t,A.sceneId,A.fragment);p&&(k=a(p.cues),F=null,T())},toggleMute:()=>{b=!b,o.muted=b,R()},toggleSubtitles:()=>{f=!f,v(),T(),R()},setSubtitles:p=>{p!==f&&(f=p,v(),T(),R())},setRate:p=>{y=p>0&&Number.isFinite(p)?p:1,d()},unlock:()=>{!A||!(S||m)||(S=!1,R(),I(A))}}}var on='script[type="application/decksmith-video+json"]';function an(e){if(!e)return{};let t={};try{let n=JSON.parse(e);for(let[r,o]of Object.entries(n?.scenes??{}))typeof o?.url=="string"&&/^https:\/\//i.test(o.url)&&(t[r]={url:o.url,title:typeof o.title=="string"?o.title:"Video"})}catch{return{}}return t}var ln={at:()=>{},toggle:()=>{},close:()=>!1};function cn(e,t,n,r){let o=null,i=null,a=()=>o?(o.remove(),o=null,!0):!1,y=()=>{if(!i||o)return;r(),o=e.createElement("div"),o.className="ds-film";let c=e.createElement("iframe");c.src=i.url,c.title=i.title,c.allow="fullscreen",c.setAttribute("referrerpolicy","strict-origin-when-cross-origin");let b=e.createElement("button");b.type="button",b.className="ds-shut",b.textContent="\u2715",b.setAttribute("aria-label","Close the video"),b.addEventListener("click",f=>{f.stopPropagation(),a()}),o.append(c,b),n.chrome.append(o),b.focus()},d=()=>{a()||y()};return n.video.addEventListener("click",c=>{c.stopPropagation(),d()}),{at:c=>{a(),i=t[c.sceneId]??null,n.video.hidden=i===null,i&&n.video.setAttribute("aria-label",`Play the video: ${i.title}`)},toggle:d,close:a}}function Ze(e){let t=e;return!!t&&(t.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(t.tagName??""))}async function Qe(e){let t=Yt(e),n=e.querySelector("hyperframes-player");if(t.length===0||!n)return;let r=Ot(t);if(r.length===0)return;let o=en(e),i=o?Qt(e):tn(e),a=be,y=Ke(e.querySelector(Ve)?.textContent,o?{split:s=>[s]}:{}),d=y?sn(e,y,i,{flagSubtitles:!o,v2:o,...o?{cut:s=>s.flatMap(l=>qe(l,a))}:{}}):nn,c=de({},{}),b=()=>o?c.speed:1,f=an(e.querySelector(on)?.textContent),v=Se(e.querySelector(Ee)?.textContent),S=Object.keys(f).length===0?ln:cn(e,f,i,()=>{d.hush(),p(!1)}),m=0,M=null,k=0,x=0,F=-1,A=null,w=s=>{n.seek(s),M&&ge(M,t,s),k=s},R=(s,l,g)=>{let u=k;A=l;let C=0,O=V=>{C===0&&(C=V);let U=Math.min(1,(V-C)/g);if(U<1){k=u+(l-u)*U,ge(s,t,k),x=requestAnimationFrame(O);return}x=0,A=null,w(l)};x=requestAnimationFrame(O)},T=!1,_=0,B=()=>{_&&clearTimeout(_),_=0},E=()=>{T&&(m+1<r.length?L(m+1):p(!1))},P=!1,N=s=>!!ne(y,s.sceneId,s.fragment),I=0,H=s=>{B(),P=s;let l=r[m],g=r[m+1],u=o&&!N(l),C=jt({playing:T,heard:s,gapMs:g?(g.t-l.t)*1e3:0,rate:b(),silent:u,revealMs:I});C!==null&&(_=setTimeout(E,C))},p=s=>{if(T=s,B(),i.play.dataset.on=s?"1":"0",i.play.setAttribute("aria-label",s?"Pause the deck":"Play the deck"),o){if(!s){d.pause();return}if(d.resume()){H(!0);return}}s&&(F=-1,L(m,!0))},$=null,q=s=>{$===null||parent===window||parent.postMessage(s,$)};addEventListener("message",s=>{if(o&&s.source===parent&&parent!==window&&s.data?.type===ue){z(Q(s.data),"host");return}if(s.source!==parent||parent===window||!Be(s.data))return;let l=s.data;if(l.type==="hello"){$=s.origin,q({channel:te,type:"ready",stops:r.map((g,u)=>({i:u,label:`${g.slide+1} / ${r[r.length-1].slide+1}`,notes:g.notes})),at:m});return}$===s.origin&&(l.type==="next"?L(m+1):l.type==="prev"?L(m-1):l.type==="go"?L(l.at,!0):l.type==="play"&&p(l.on))});let L=(s,l=!1)=>{let g=r[m];m=Math.max(0,Math.min(r.length-1,s));let u=r[m];x&&cancelAnimationFrame(x),x=0,A=null;let C=typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches,O=v?.seams&&M&&!l&&!C?Te(k,g,u,t,et):null;O!==null&&w(O);let V=O!==null?{animate:!0,durationMs:(u.t-O)*1e3/b()}:Dt(k,u.t,{reducedMotion:C,rate:b()});I=V.animate&&!l&&M?V.durationMs:0,V.animate&&!l&&M?R(M,u.t,V.durationMs):w(u.t);let U=!1;m!==F&&(F=m,o&&!T?(d.hush(),F=-1):U=d.at(u)),S.at(u),H(U),history.replaceState(null,"",Kt(u)),q({channel:te,type:"stop",at:m,total:r.length,label:`${u.slide+1} / ${r[r.length-1].slide+1}`,notes:u.notes,playing:T}),i.fill.style.transform=`scaleX(${(m+1)/r.length})`,i.count.textContent=`${u.slide+1} / ${r[r.length-1].slide+1}`,i.notes.textContent=u.notes};d.onEnded(E),d.onSettled(H),d.onProgress(s=>{if(!v||x!==0||!M||typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches)return;let l=r[m],g=ke(v,l);if(!g)return;let u=Me(g,s);Math.abs(u-k)<1e-4||(ge(M,t,u),k=u)}),i.play.addEventListener("click",s=>{s.stopPropagation(),p(!T)}),addEventListener("hashchange",()=>{let s=Ge(location.hash);if(!s)return;let l=Je(r,s);l>=0&&l!==m&&L(l,!0)});let G=()=>{(e.fullscreenElement?e.exitFullscreen():e.documentElement.requestFullscreen()).catch(()=>{})},h=o?i:null,J=y!==null,nt=(Number(n.getAttribute("width"))||16)/(Number(n.getAttribute("height"))||9),rt=ze(Number(n.getAttribute("width"))||0,Number(n.getAttribute("height"))||0),re="band",ye=()=>{if(!o)return;let s=$e(innerWidth,innerHeight,nt,{on:c.cc&&J,size:c.ccsize},{safeBottom:rt}),l=e.documentElement,g=l.style,u=(O,V)=>g.setProperty(O,`${V}px`);u("--ds-sx",s.slideX),u("--ds-sy",s.slideY),u("--ds-sw",s.slideW),u("--ds-sh",s.slideH),u("--ds-bx",s.bar.x),u("--ds-by",s.bar.y),u("--ds-bw",s.bar.w),u("--ds-bh",s.bar.h),u("--ds-bi",s.barInset),u("--ds-btn",s.btn),u("--ds-tx",s.strip.x),u("--ds-ty",s.strip.y),u("--ds-tw",s.strip.w),u("--ds-th",s.strip.h),u("--ds-tp",s.stripPad),u("--ds-cap-font",s.capFont),l.dataset.dock=s.dock,l.classList.toggle("ds-compact",s.compact),re=s.dock;let C=Math.round(s.cueEm*10)/10;l.dataset.dsCueEm=String(C),C!==a&&(a=C,d.refit()),h&&re!=="pad"&&(h.controls.dataset.shown="1")},st=()=>{try{localStorage.setItem(ce,JSON.stringify(c))}catch{}},ot=()=>{try{return Re(localStorage.getItem(ce))}catch{return{}}},it=()=>{if(parent===window)return;let s={type:ue,...c};parent.postMessage(s,"*")},at=()=>{if(h){h.speed.textContent=ee(c.speed);for(let s of i.chrome.querySelectorAll(".ds-rate"))s.setAttribute("aria-checked",String(Number(s.dataset.value)===c.speed));h.cc.setAttribute("aria-pressed",String(c.cc)),h.cc.hidden=!J,h.size.hidden=!J;for(let s of i.chrome.querySelectorAll(".ds-sz, .ds-cc2, .ds-mlabel:nth-of-type(2)"))s.hidden=!J;for(let s of i.chrome.querySelectorAll(".ds-sz"))s.setAttribute("aria-checked",String(s.dataset.value===c.ccsize));i.chrome.querySelector(".ds-cc2")?.setAttribute("aria-checked",String(c.cc))}},lt=()=>{if(x&&M&&A!==null){let s=A;cancelAnimationFrame(x),x=0,R(M,s,Math.max(1,(s-k)*1e3/b()))}_&&H(P)},z=(s,l)=>{if(!o)return;let g=c;c={...c,...s},d.setRate(c.speed),d.setSubtitles(c.cc),ye(),at(),c.speed!==g.speed&&lt(),l!=="boot"&&st(),l==="user"&&it(),h&&l!=="boot"&&(h.say.textContent=`Speed ${ee(c.speed)}, captions ${c.cc?"on":"off"}, size ${c.ccsize.toUpperCase()}`)},ct=2500,Z=0,se=()=>!!h&&(!h.speedMenu.hidden||!h.sizeMenu.hidden||!h.moreMenu.hidden),ut=()=>!!h&&(se()||h.controls.matches(":hover")||h.controls.contains(e.activeElement)),xe=()=>{Z&&clearTimeout(Z),Z=setTimeout(()=>{Z=0,h&&(re!=="pad"||!T||(ut()?xe():h.controls.dataset.shown="0"))},ct)},D=()=>{h&&(h.controls.dataset.shown="1",xe())},K=()=>{if(h)for(let[s,l]of[[h.speed,h.speedMenu],[h.size,h.sizeMenu],[h.more,h.moreMenu]])l.hidden=!0,s.setAttribute("aria-expanded","false")},oe=(s,l,g)=>{let u=l.hidden;K(),u&&(l.hidden=!1,s.setAttribute("aria-expanded","true"),g&&l.querySelector('[aria-checked="true"]')?.focus()),D()};if(h){z(de(ot(),Fe(location.search)),"boot"),addEventListener("resize",ye),i.chrome.addEventListener("click",l=>{l.detail>0&&l.target?.closest?.("button")?.blur()},!0);let s=(l,g)=>l.addEventListener("click",u=>{u.stopPropagation(),g(u),D()});s(h.speed,l=>oe(h.speed,h.speedMenu,l.detail===0)),s(h.size,l=>oe(h.size,h.sizeMenu,l.detail===0)),s(h.speedMenu,l=>{let g=l.target?.closest?.("button")?.dataset.value;g!==void 0&&(z({speed:Number(g)},"user"),K())}),s(h.sizeMenu,l=>{let g=l.target?.closest?.("button")?.dataset.value;g!==void 0&&(z({ccsize:g},"user"),K())}),s(h.cc,()=>z({cc:!c.cc},"user")),s(h.fs,G),s(h.more,l=>oe(h.more,h.moreMenu,l.detail===0)),s(h.moreMenu,l=>{let g=l.target?.closest?.("button");if(g){if(g.classList.contains("ds-rate"))z({speed:Number(g.dataset.value)},"user");else if(g.classList.contains("ds-sz"))z({ccsize:g.dataset.value},"user");else if(g.classList.contains("ds-cc2"))z({cc:!c.cc},"user");else if(g.classList.contains("ds-fs2"))G();else return;K()}}),h.controls.addEventListener("focusin",D),e.addEventListener("pointermove",D,{passive:!0}),e.addEventListener("pointerdown",D,{passive:!0}),D()}let dt=s=>{if(s.defaultPrevented||Ze(s.target))return;let l=Oe(s);if(!l)return;let g=s.target;if((s.key===" "||s.key==="Enter")&&g?.closest?.("button"))return;let u=g?.closest?.(".ds-menu");if(u&&(l==="next"||l==="prev")){let C=[...u.querySelectorAll("button")],O=C.indexOf(g);C[Math.max(0,Math.min(C.length-1,O+(l==="next"?1:-1)))]?.focus(),s.preventDefault();return}switch(l){case"next":L(m+1);break;case"prev":L(m-1);break;case"first":L(0,!0);break;case"last":L(r.length-1,!0);break;case"play":p(!T),D();break;case"captions":z({cc:!c.cc},"user"),D();break;case"faster":case"slower":z({speed:_e(c.speed,l==="faster"?1:-1)},"user"),D();break;case"bigger":case"smaller":z({ccsize:De(c.ccsize,l==="bigger"?1:-1)},"user"),D();break;case"mute":d.toggleMute();break;case"notes":i.notes.hidden=!i.notes.hidden;break;case"video":S.toggle();break;case"escape":if(se())K();else if(!S.close())return;break;case"fullscreen":G();break}s.preventDefault()};o?e.addEventListener("keydown",dt):e.addEventListener("keydown",s=>{if(!(s.defaultPrevented||Ze(s.target))){switch(s.key){case"ArrowRight":case"PageDown":case" ":L(m+1);break;case"ArrowLeft":case"PageUp":L(m-1);break;case"Home":L(0,!0);break;case"End":L(r.length-1,!0);break;case"n":i.notes.hidden=!i.notes.hidden;break;case"m":d.toggleMute();break;case"s":d.toggleSubtitles();break;case"p":p(!T);break;case"v":S.toggle();break;case"Escape":if(!S.close())return;break;case"f":G();break;default:return}s.preventDefault()}}),e.addEventListener("click",s=>{if(i.chrome.contains(s.target))return;if(se()){K();return}let l=(e.documentElement.clientWidth||1)/3;s.clientX>l*2?L(m+1):s.clientX<l&&L(m-1)});let we=()=>d.unlock();if(e.addEventListener("keydown",we),e.addEventListener("click",we),await Gt(n),typeof n.seek!="function")return;n.pause?.(),M=Wt(n),M?.doc.documentElement.classList.add("ds-live"),M||console.warn("[decksmith] composition unreachable; serve the deck over http, not file://");let ve=Ge(location.hash);L(ve?Math.max(0,Je(r,ve)):0,!0)}typeof document<"u"&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>void Qe(document),{once:!0}):Qe(document));})();
151
+ `;function Qt(e){let t=e.createElement("style");t.textContent=Zt,e.head.append(t),e.documentElement.classList.add("ds-v2");let n=(d,c,b)=>`<button class="${d}" type="button" role="menuitemradio" data-value="${c}" aria-checked="false">${b}</button>`,r=j.map(d=>n("ds-rate",String(d),ee(d))).join(""),o=X.map(d=>n("ds-sz",d,d.toUpperCase())).join(""),i=e.createElement("div");i.className="ds-chrome",i.innerHTML=`<div class="ds-subs" hidden></div><div class="ds-bar"><i></i></div><div class="ds-flags"></div><div class="ds-controls" role="toolbar" aria-label="Deck controls" data-shown="1"><button class="ds-play" type="button" aria-label="Play the deck" aria-keyshortcuts="Enter"></button><span class="ds-count"></span><span class="ds-gap"></span><button class="ds-video" type="button" hidden>Video</button><span class="ds-wrap ds-full"><button class="ds-speed" type="button" aria-haspopup="menu" aria-expanded="false" aria-label="Narration speed" aria-keyshortcuts="Shift+. Shift+,">1\xD7</button><span class="ds-menu" role="menu" aria-label="Narration speed" hidden>${r}</span></span><button class="ds-cc ds-full" type="button" aria-pressed="true" aria-label="Captions" aria-keyshortcuts="C">CC</button><span class="ds-wrap ds-full ds-sizewrap"><button class="ds-size" type="button" aria-haspopup="menu" aria-expanded="false" aria-label="Caption size">Aa</button><span class="ds-menu" role="menu" aria-label="Caption size" hidden>${o}</span></span><button class="ds-fs ds-full" type="button" aria-label="Full screen" aria-keyshortcuts="F"></button><span class="ds-wrap ds-morewrap"><button class="ds-more" type="button" aria-haspopup="menu" aria-expanded="false" aria-label="Settings">\u22EF</button><span class="ds-menu" role="menu" aria-label="Settings" hidden><span class="ds-mlabel">Speed</span>${r}<span class="ds-mlabel">Captions</span><button class="ds-cc2" type="button" role="menuitemcheckbox" aria-checked="true">CC</button>${o}<button class="ds-fs2" type="button" role="menuitem">Full screen</button></span></span></div><div class="ds-notes" hidden></div><div class="ds-say" aria-live="polite"></div>`,e.body.append(i);let a=d=>i.querySelector(d),y=i.querySelectorAll(".ds-menu");return{chrome:i,fill:a(".ds-bar>i"),play:a(".ds-play"),video:a(".ds-video"),count:a(".ds-count"),notes:a(".ds-notes"),flags:a(".ds-flags"),subs:a(".ds-subs"),controls:a(".ds-controls"),speed:a(".ds-speed"),speedMenu:y[0],cc:a(".ds-cc"),size:a(".ds-size"),sizeMenu:y[1],fs:a(".ds-fs"),more:a(".ds-more"),moreMenu:y[2],say:a(".ds-say")}}function en(e){return e.querySelector(`meta[name="${le}"]`)?.getAttribute("content")==="2"}function tn(e){let t=e.createElement("style");t.textContent=Jt,e.head.append(t);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 nn={at:()=>!1,hush:()=>{},toggleMute:()=>{},toggleSubtitles:()=>{},setSubtitles:()=>{},setRate:()=>{},onEnded:()=>{},onSettled:()=>{},unlock:()=>{},onProgress:()=>{},pause:()=>{},resume:()=>!1,refit:()=>{}};function rn(e){return e?.name!=="NotSupportedError"}function sn(e,t,n,r={}){let o=e.createElement("audio");o.preload="auto",e.body.append(o);let i=r.v2===!0,a=r.cut??(p=>p),y=1,d=()=>{i&&(o.defaultPlaybackRate=y,o.playbackRate=y,o.preservesPitch=!0)};d();let c=!1,b=!1,f=!0,v=()=>e.documentElement.classList.toggle("ds-cap",f);v();let E=!1,m=!1,M=!1,k=[],x=0,F=null,A=null,w=0,R=()=>{let p=[];E&&M?p.push("press any key for sound"):m?p.push("narration unavailable"):b&&p.push("muted"),!f&&r.flagSubtitles!==!1&&p.push("subtitles off"),n.flags.textContent=p.join(" \xB7 ")},T=()=>{let p=f?We(k,o.currentTime):null;p!==F&&(F=p,n.subs.textContent=p?.text??"",n.subs.hidden=p===null)},_=()=>{},B=()=>{T(),i&&_(o.currentTime),x=o.ended||o.paused&&o.currentTime>0?0:requestAnimationFrame(B)},S=()=>{x&&cancelAnimationFrame(x),x=0,c=!1,o.pause(),o.removeAttribute("src"),o.load(),k=[],T()},P=()=>{};o.addEventListener("ended",()=>{E||P()});let N=()=>{},I=p=>{let z=++w;A=p,S(),m=!1,R();let q=ne(t,p.sceneId,p.fragment);return q?(k=a(q.cues),o.muted=b,o.src=Xe(t,q),d(),H(z),x===0&&(x=requestAnimationFrame(B)),!0):!1};function H(p){Promise.resolve(o.play()).then(()=>{p===w&&(E=!1,m=!1,R(),N(!0))},z=>{p===w&&(E=rn(z),m=!E,E&&(M=!0),x&&cancelAnimationFrame(x),x=0,k=[],T(),R(),N(!1))})}return{at:I,hush:S,onEnded:p=>{P=p},onSettled:p=>{N=p},onProgress:p=>{_=p},pause:()=>{!A||!o.getAttribute("src")||o.ended||(c=!0,o.pause(),x&&cancelAnimationFrame(x),x=0)},resume:()=>!c||!A||!o.getAttribute("src")||o.ended?!1:(c=!1,d(),H(w),x===0&&(x=requestAnimationFrame(B)),!0),refit:()=>{if(!A||k.length===0)return;let p=ne(t,A.sceneId,A.fragment);p&&(k=a(p.cues),F=null,T())},toggleMute:()=>{b=!b,o.muted=b,R()},toggleSubtitles:()=>{f=!f,v(),T(),R()},setSubtitles:p=>{p!==f&&(f=p,v(),T(),R())},setRate:p=>{y=p>0&&Number.isFinite(p)?p:1,d()},unlock:()=>{!A||!(E||m)||(E=!1,R(),I(A))}}}var on='script[type="application/decksmith-video+json"]';function an(e){if(!e)return{};let t={};try{let n=JSON.parse(e);for(let[r,o]of Object.entries(n?.scenes??{}))typeof o?.url=="string"&&/^https:\/\//i.test(o.url)&&(t[r]={url:o.url,title:typeof o.title=="string"?o.title:"Video"})}catch{return{}}return t}var ln={at:()=>{},toggle:()=>{},close:()=>!1};function cn(e,t,n,r){let o=null,i=null,a=()=>o?(o.remove(),o=null,!0):!1,y=()=>{if(!i||o)return;r(),o=e.createElement("div"),o.className="ds-film";let c=e.createElement("iframe");c.src=i.url,c.title=i.title,c.allow="fullscreen",c.setAttribute("referrerpolicy","strict-origin-when-cross-origin");let b=e.createElement("button");b.type="button",b.className="ds-shut",b.textContent="\u2715",b.setAttribute("aria-label","Close the video"),b.addEventListener("click",f=>{f.stopPropagation(),a()}),o.append(c,b),n.chrome.append(o),b.focus()},d=()=>{a()||y()};return n.video.addEventListener("click",c=>{c.stopPropagation(),d()}),{at:c=>{a(),i=t[c.sceneId]??null,n.video.hidden=i===null,i&&n.video.setAttribute("aria-label",`Play the video: ${i.title}`)},toggle:d,close:a}}function Ze(e){let t=e;return!!t&&(t.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(t.tagName??""))}async function Qe(e){let t=Yt(e),n=e.querySelector("hyperframes-player");if(t.length===0||!n)return;let r=Ot(t);if(r.length===0)return;let o=en(e),i=o?Qt(e):tn(e),a=be,y=Ke(e.querySelector(Ve)?.textContent,o?{split:s=>[s]}:{}),d=y?sn(e,y,i,{flagSubtitles:!o,v2:o,...o?{cut:s=>s.flatMap(l=>qe(l,a))}:{}}):nn,c=de({},{}),b=()=>o?c.speed:1,f=an(e.querySelector(on)?.textContent),v=Ee(e.querySelector(Se)?.textContent),E=Object.keys(f).length===0?ln:cn(e,f,i,()=>{d.hush(),p(!1)}),m=0,M=null,k=0,x=0,F=-1,A=null,w=s=>{n.seek(s),M&&ge(M,t,s),k=s},R=(s,l,g)=>{let u=k;A=l;let C=0,O=V=>{C===0&&(C=V);let U=Math.min(1,(V-C)/g);if(U<1){k=u+(l-u)*U,ge(s,t,k),x=requestAnimationFrame(O);return}x=0,A=null,w(l)};x=requestAnimationFrame(O)},T=!1,_=0,B=()=>{_&&clearTimeout(_),_=0},S=()=>{T&&(m+1<r.length?L(m+1):p(!1))},P=!1,N=s=>!!ne(y,s.sceneId,s.fragment),I=0,H=s=>{B(),P=s;let l=r[m],g=r[m+1],u=o&&!N(l),C=jt({playing:T,heard:s,gapMs:g?(g.t-l.t)*1e3:0,rate:b(),silent:u,revealMs:I});C!==null&&(_=setTimeout(S,C))},p=s=>{if(T=s,B(),i.play.dataset.on=s?"1":"0",i.play.setAttribute("aria-label",s?"Pause the deck":"Play the deck"),o){if(!s){d.pause();return}if(d.resume()){H(!0);return}}s&&(F=-1,L(m,!0))},z=null,q=s=>{z===null||parent===window||parent.postMessage(s,z)};addEventListener("message",s=>{if(o&&s.source===parent&&parent!==window&&s.data?.type===ue){$(Q(s.data),"host");return}if(s.source!==parent||parent===window||!Be(s.data))return;let l=s.data;if(l.type==="hello"){z=s.origin,q({channel:te,type:"ready",stops:r.map((g,u)=>({i:u,label:`${g.slide+1} / ${r[r.length-1].slide+1}`,notes:g.notes})),at:m});return}z===s.origin&&(l.type==="next"?L(m+1):l.type==="prev"?L(m-1):l.type==="go"?L(l.at,!0):l.type==="play"&&p(l.on))});let L=(s,l=!1)=>{let g=r[m];m=Math.max(0,Math.min(r.length-1,s));let u=r[m];x&&cancelAnimationFrame(x),x=0,A=null;let C=typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches,O=v?.seams&&M&&!l&&!C?Te(k,g,u,t,et):null;O!==null&&w(O);let V=O!==null?{animate:!0,durationMs:(u.t-O)*1e3/b()}:Dt(k,u.t,{reducedMotion:C,rate:b()});I=V.animate&&!l&&M?V.durationMs:0,V.animate&&!l&&M?R(M,u.t,V.durationMs):w(u.t);let U=!1;m!==F&&(F=m,o&&!T?(d.hush(),F=-1):U=d.at(u)),E.at(u),H(U),history.replaceState(null,"",Kt(u)),q({channel:te,type:"stop",at:m,total:r.length,label:`${u.slide+1} / ${r[r.length-1].slide+1}`,notes:u.notes,playing:T}),i.fill.style.transform=`scaleX(${(m+1)/r.length})`,i.count.textContent=`${u.slide+1} / ${r[r.length-1].slide+1}`,i.notes.textContent=u.notes};d.onEnded(S),d.onSettled(H),d.onProgress(s=>{if(!v||x!==0||!M||typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches)return;let l=r[m],g=ke(v,l);if(!g)return;let u=Me(g,s);Math.abs(u-k)<1e-4||(ge(M,t,u),k=u)}),i.play.addEventListener("click",s=>{s.stopPropagation(),p(!T)}),addEventListener("hashchange",()=>{let s=Ge(location.hash);if(!s)return;let l=Je(r,s);l>=0&&l!==m&&L(l,!0)});let G=()=>{(e.fullscreenElement?e.exitFullscreen():e.documentElement.requestFullscreen()).catch(()=>{})},h=o?i:null,J=y!==null,nt=(Number(n.getAttribute("width"))||16)/(Number(n.getAttribute("height"))||9),rt=$e(Number(n.getAttribute("width"))||0,Number(n.getAttribute("height"))||0),re="band",ye=()=>{if(!o)return;let s=ze(innerWidth,innerHeight,nt,{on:c.cc&&J,size:c.ccsize},{safeBottom:rt}),l=e.documentElement,g=l.style,u=(O,V)=>g.setProperty(O,`${V}px`);u("--ds-sx",s.slideX),u("--ds-sy",s.slideY),u("--ds-sw",s.slideW),u("--ds-sh",s.slideH),u("--ds-bx",s.bar.x),u("--ds-by",s.bar.y),u("--ds-bw",s.bar.w),u("--ds-bh",s.bar.h),u("--ds-bi",s.barInset),u("--ds-btn",s.btn),u("--ds-tx",s.strip.x),u("--ds-ty",s.strip.y),u("--ds-tw",s.strip.w),u("--ds-th",s.strip.h),u("--ds-tp",s.stripPad),u("--ds-cap-font",s.capFont),l.dataset.dock=s.dock,l.classList.toggle("ds-compact",s.compact),re=s.dock;let C=Math.round(s.cueEm*10)/10;l.dataset.dsCueEm=String(C),C!==a&&(a=C,d.refit()),h&&re!=="pad"&&(h.controls.dataset.shown="1")},st=()=>{try{localStorage.setItem(ce,JSON.stringify(c))}catch{}},ot=()=>{try{return Re(localStorage.getItem(ce))}catch{return{}}},it=()=>{if(parent===window)return;let s={type:ue,...c};parent.postMessage(s,"*")},at=()=>{if(h){h.speed.textContent=ee(c.speed);for(let s of i.chrome.querySelectorAll(".ds-rate"))s.setAttribute("aria-checked",String(Number(s.dataset.value)===c.speed));h.cc.setAttribute("aria-pressed",String(c.cc)),h.cc.hidden=!J,h.size.hidden=!J;for(let s of i.chrome.querySelectorAll(".ds-sz, .ds-cc2, .ds-mlabel:nth-of-type(2)"))s.hidden=!J;for(let s of i.chrome.querySelectorAll(".ds-sz"))s.setAttribute("aria-checked",String(s.dataset.value===c.ccsize));i.chrome.querySelector(".ds-cc2")?.setAttribute("aria-checked",String(c.cc))}},lt=()=>{if(x&&M&&A!==null){let s=A;cancelAnimationFrame(x),x=0,R(M,s,Math.max(1,(s-k)*1e3/b()))}_&&H(P)},$=(s,l)=>{if(!o)return;let g=c;c={...c,...s},d.setRate(c.speed),d.setSubtitles(c.cc),ye(),at(),c.speed!==g.speed&&lt(),l!=="boot"&&st(),l==="user"&&it(),h&&l!=="boot"&&(h.say.textContent=`Speed ${ee(c.speed)}, captions ${c.cc?"on":"off"}, size ${c.ccsize.toUpperCase()}`)},ct=2500,Z=0,se=()=>!!h&&(!h.speedMenu.hidden||!h.sizeMenu.hidden||!h.moreMenu.hidden),ut=()=>!!h&&(se()||h.controls.matches(":hover")||h.controls.contains(e.activeElement)),xe=()=>{Z&&clearTimeout(Z),Z=setTimeout(()=>{Z=0,h&&(re!=="pad"||!T||(ut()?xe():h.controls.dataset.shown="0"))},ct)},D=()=>{h&&(h.controls.dataset.shown="1",xe())},K=()=>{if(h)for(let[s,l]of[[h.speed,h.speedMenu],[h.size,h.sizeMenu],[h.more,h.moreMenu]])l.hidden=!0,s.setAttribute("aria-expanded","false")},oe=(s,l,g)=>{let u=l.hidden;K(),u&&(l.hidden=!1,s.setAttribute("aria-expanded","true"),g&&l.querySelector('[aria-checked="true"]')?.focus()),D()};if(h){$(de(ot(),Fe(location.search)),"boot"),addEventListener("resize",ye),i.chrome.addEventListener("click",l=>{l.detail>0&&l.target?.closest?.("button")?.blur()},!0);let s=(l,g)=>l.addEventListener("click",u=>{u.stopPropagation(),g(u),D()});s(h.speed,l=>oe(h.speed,h.speedMenu,l.detail===0)),s(h.size,l=>oe(h.size,h.sizeMenu,l.detail===0)),s(h.speedMenu,l=>{let g=l.target?.closest?.("button")?.dataset.value;g!==void 0&&($({speed:Number(g)},"user"),K())}),s(h.sizeMenu,l=>{let g=l.target?.closest?.("button")?.dataset.value;g!==void 0&&($({ccsize:g},"user"),K())}),s(h.cc,()=>$({cc:!c.cc},"user")),s(h.fs,G),s(h.more,l=>oe(h.more,h.moreMenu,l.detail===0)),s(h.moreMenu,l=>{let g=l.target?.closest?.("button");if(g){if(g.classList.contains("ds-rate"))$({speed:Number(g.dataset.value)},"user");else if(g.classList.contains("ds-sz"))$({ccsize:g.dataset.value},"user");else if(g.classList.contains("ds-cc2"))$({cc:!c.cc},"user");else if(g.classList.contains("ds-fs2"))G();else return;K()}}),h.controls.addEventListener("focusin",D),e.addEventListener("pointermove",D,{passive:!0}),e.addEventListener("pointerdown",D,{passive:!0}),D()}let dt=s=>{if(s.defaultPrevented||Ze(s.target))return;let l=Oe(s);if(!l)return;let g=s.target;if((s.key===" "||s.key==="Enter")&&g?.closest?.("button"))return;let u=g?.closest?.(".ds-menu");if(u&&(l==="next"||l==="prev")){let C=[...u.querySelectorAll("button")],O=C.indexOf(g);C[Math.max(0,Math.min(C.length-1,O+(l==="next"?1:-1)))]?.focus(),s.preventDefault();return}switch(l){case"next":L(m+1);break;case"prev":L(m-1);break;case"first":L(0,!0);break;case"last":L(r.length-1,!0);break;case"play":p(!T),D();break;case"captions":$({cc:!c.cc},"user"),D();break;case"faster":case"slower":$({speed:_e(c.speed,l==="faster"?1:-1)},"user"),D();break;case"bigger":case"smaller":$({ccsize:De(c.ccsize,l==="bigger"?1:-1)},"user"),D();break;case"mute":d.toggleMute();break;case"notes":i.notes.hidden=!i.notes.hidden;break;case"video":E.toggle();break;case"escape":if(se())K();else if(!E.close())return;break;case"fullscreen":G();break}s.preventDefault()};o?e.addEventListener("keydown",dt):e.addEventListener("keydown",s=>{if(!(s.defaultPrevented||Ze(s.target))){switch(s.key){case"ArrowRight":case"PageDown":case" ":L(m+1);break;case"ArrowLeft":case"PageUp":L(m-1);break;case"Home":L(0,!0);break;case"End":L(r.length-1,!0);break;case"n":i.notes.hidden=!i.notes.hidden;break;case"m":d.toggleMute();break;case"s":d.toggleSubtitles();break;case"p":p(!T);break;case"v":E.toggle();break;case"Escape":if(!E.close())return;break;case"f":G();break;default:return}s.preventDefault()}}),e.addEventListener("click",s=>{if(i.chrome.contains(s.target))return;if(se()){K();return}let l=(e.documentElement.clientWidth||1)/3;s.clientX>l*2?L(m+1):s.clientX<l&&L(m-1)});let we=()=>d.unlock();if(e.addEventListener("keydown",we),e.addEventListener("click",we),await Gt(n),typeof n.seek!="function")return;n.pause?.(),M=Xt(n),M?.doc.documentElement.classList.add("ds-live"),M||console.warn("[decksmith] composition unreachable; serve the deck over http, not file://");let ve=Ge(location.hash);L(ve?Math.max(0,Je(r,ve)):0,!0)}typeof document<"u"&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>void Qe(document),{once:!0}):Qe(document));})();