hyperframes 0.8.142 → 0.8.144

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 (222) hide show
  1. package/dist/{add-YS2RCWEK.js → add-CWRTVGDB.js} +18 -17
  2. package/dist/{animatedGifPrep-SAMCDT7T.js → animatedGifPrep-JTOHIWI4.js} +15 -14
  3. package/dist/{asset-BLWC2NWB.js → asset-KU2Z4UFM.js} +4 -4
  4. package/dist/{assetCataloger-FVNBBRP3.js → assetCataloger-3CS2P7PA.js} +8 -7
  5. package/dist/{auth-DRZB7OAC.js → auth-IDSOIQWG.js} +1 -1
  6. package/dist/{autoUpdate-I5I3BOJK.js → autoUpdate-373B4BA2.js} +2 -2
  7. package/dist/{backgroundChecks-VR2QHGNY.js → backgroundChecks-53Q3NAMG.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-4YUHQI6X.js → batchRender-UKZA6BME.js} +11 -10
  10. package/dist/{beats-7OT7ALV3.js → beats-N5JGEOFR.js} +33 -28
  11. package/dist/{benchmark-Q2XQCRTR.js → benchmark-CUN3LN4V.js} +15 -14
  12. package/dist/{browser-7VAWQQZC.js → browser-NCZT5AP6.js} +40 -56
  13. package/dist/{bundleWithLocalizedFonts-DDMLLL2R.js → bundleWithLocalizedFonts-FWC7PE2D.js} +2 -2
  14. package/dist/{capture-HEJS6M5A.js → capture-QBLG3VJR.js} +26 -25
  15. package/dist/{capture-U7ABPKS5.js → capture-YLS32UHT.js} +2 -2
  16. package/dist/{catalog-DVJ3XPDN.js → catalog-HIWNAFHW.js} +19 -18
  17. package/dist/{catch-up-DF6AVSN2.js → catch-up-HGS7KIAC.js} +5 -5
  18. package/dist/{check-KXORRWAE.js → check-FH6UYYLO.js} +78 -66
  19. package/dist/{checkBrowser-J7HZJTRH.js → checkBrowser-RNWNOMCZ.js} +93 -41
  20. package/dist/{chunk-R2JEKLDZ.js → chunk-2DA2BBNY.js} +3 -3
  21. package/dist/{chunk-TQFG7HTI.js → chunk-3RM2ETQT.js} +0 -168
  22. package/dist/{chunk-YFT3BL7N.js → chunk-3VYNNWVA.js} +30 -12
  23. package/dist/{chunk-7FCDA4RH.js → chunk-3XTEXWNN.js} +8 -5
  24. package/dist/{chunk-PFCFR3KZ.js → chunk-442JNXRM.js} +1 -1
  25. package/dist/{chunk-BPZVDBHY.js → chunk-4LAR447G.js} +1 -1
  26. package/dist/{chunk-AM5L5YIA.js → chunk-4OA4LDTU.js} +1 -1
  27. package/dist/{chunk-DZEVA7DI.js → chunk-4OC7MQNB.js} +2 -2
  28. package/dist/{chunk-75JJVANE.js → chunk-54QISXOC.js} +3 -3
  29. package/dist/{chunk-FZK35GT4.js → chunk-5HJ343GH.js} +1 -1
  30. package/dist/{chunk-IDX52YJN.js → chunk-5VMR4WBS.js} +458 -159
  31. package/dist/{chunk-OSUKETIH.js → chunk-5WADG7PR.js} +1 -1
  32. package/dist/{chunk-JYYOAKHS.js → chunk-6IIGT7BX.js} +1 -1
  33. package/dist/{chunk-6UYZB4TY.js → chunk-7RAYSCYT.js} +4 -4
  34. package/dist/{chunk-WTMUCJ6Z.js → chunk-7SDCIWHQ.js} +11 -2
  35. package/dist/{chunk-LAOCA3MQ.js → chunk-A4Q7W4LV.js} +13 -8
  36. package/dist/{chunk-B6SMSALD.js → chunk-A53CBD24.js} +18 -12
  37. package/dist/{chunk-4PFZPP2N.js → chunk-A6S35NYA.js} +54 -16
  38. package/dist/{chunk-JOTLPC6S.js → chunk-AUBOF2PN.js} +1 -1
  39. package/dist/{chunk-WCJGTLPF.js → chunk-BHVFTYSI.js} +6 -3
  40. package/dist/chunk-BSQ7XANM.js +210 -0
  41. package/dist/{chunk-LCSMOLGX.js → chunk-BYSBRF24.js} +69 -8
  42. package/dist/{chunk-U7E736AJ.js → chunk-DDIVWXN7.js} +32 -14
  43. package/dist/{chunk-KOEWEFHK.js → chunk-DIRJ322I.js} +10 -5
  44. package/dist/{chunk-HMUF7FEO.js → chunk-EX6C672Y.js} +2 -2
  45. package/dist/{chunk-QGRFOOLE.js → chunk-F2SMS24Q.js} +288 -85
  46. package/dist/{chunk-5Z63TBTX.js → chunk-FH7WODJH.js} +1 -1
  47. package/dist/{chunk-XTLBLWOV.js → chunk-GEWKFRFI.js} +1 -1
  48. package/dist/{chunk-RVCWIIZ7.js → chunk-GV5R5B7Q.js} +1 -1
  49. package/dist/{chunk-TY6XOHEM.js → chunk-GZM2EFOE.js} +3 -3
  50. package/dist/chunk-GZVP4TWN.js +76 -0
  51. package/dist/{chunk-QXPCARFE.js → chunk-I5KY7EZP.js} +1 -1
  52. package/dist/{chunk-IW2CKH6A.js → chunk-IEIJRMLZ.js} +94 -59
  53. package/dist/chunk-IR35BCLK.js +13 -0
  54. package/dist/{chunk-JFKL3WAE.js → chunk-IWFLMU2N.js} +104 -19
  55. package/dist/{chunk-EFDXGAAD.js → chunk-JEHFZQYT.js} +1 -1
  56. package/dist/{chunk-IHFUKJOR.js → chunk-K2FLNJVB.js} +8 -2
  57. package/dist/{chunk-KDPYVTEU.js → chunk-KBB4RG6F.js} +6 -1
  58. package/dist/{chunk-LJAU4TPS.js → chunk-KFKZ3ISO.js} +2 -2
  59. package/dist/{sherpa-ZYTNFHD5.js → chunk-L5TUCXWR.js} +11 -44
  60. package/dist/{chunk-KYN364DU.js → chunk-LC3RQURJ.js} +7 -9
  61. package/dist/{chunk-IMY4QQTQ.js → chunk-LFX2HEYP.js} +8 -8
  62. package/dist/{chunk-PXSM4HPB.js → chunk-MAYCCGMQ.js} +12 -3
  63. package/dist/{chunk-OZUQF4NB.js → chunk-MQZVBHEY.js} +123 -8
  64. package/dist/{chunk-FWRNQOLT.js → chunk-MXNDKDFT.js} +3 -3
  65. package/dist/{chunk-A4KQZXZI.js → chunk-NE55C6S5.js} +4 -2
  66. package/dist/{chunk-GYE63V4P.js → chunk-NOPBBSLA.js} +24 -19
  67. package/dist/{chunk-H2X52H2N.js → chunk-NV4RXIQ7.js} +3 -3
  68. package/dist/{chunk-WGVOWWVK.js → chunk-OIDN7G42.js} +3 -3
  69. package/dist/{chunk-DPHJKWP5.js → chunk-OUSLVRO4.js} +107 -108
  70. package/dist/{chunk-JLKMWY2T.js → chunk-P6WH6QTV.js} +8 -5
  71. package/dist/{chunk-7M4KAPAA.js → chunk-PUGIRFPX.js} +2 -2
  72. package/dist/{chunk-6RAD4BCC.js → chunk-QATWIE4K.js} +2 -2
  73. package/dist/{chunk-D2KNWIQ6.js → chunk-QFSCCQIR.js} +1 -1
  74. package/dist/{chunk-XGMNQQTJ.js → chunk-RG3QWWIE.js} +1 -1
  75. package/dist/{chunk-MVTUV4TP.js → chunk-RI53TS2Y.js} +14 -6
  76. package/dist/{chunk-LQASVU3I.js → chunk-RVFEDAUV.js} +12 -4
  77. package/dist/{chunk-GK4AIFIH.js → chunk-SDYDNHEE.js} +34 -3
  78. package/dist/{chunk-WSGY5CDQ.js → chunk-SLCFKB3Y.js} +14 -10
  79. package/dist/{chunk-2NCHQUPX.js → chunk-SQLK7SJL.js} +1 -1
  80. package/dist/{chunk-PMRBLBUP.js → chunk-T42U2W2R.js} +14 -2
  81. package/dist/chunk-UPFUC4DB.js +136 -0
  82. package/dist/{chunk-IXCTG2WY.js → chunk-VYSUZEJG.js} +5 -5
  83. package/dist/chunk-WJB7WI4J.js +3753 -0
  84. package/dist/{chunk-YEIFI443.js → chunk-WPNE5NEP.js} +1 -1
  85. package/dist/{chunk-YHRZQJXH.js → chunk-XGFHYAYN.js} +265 -68
  86. package/dist/{chunk-LBKDQKWV.js → chunk-XU5GGV6R.js} +1 -1
  87. package/dist/{chunk-LTGGTEMA.js → chunk-Y6UPYWJS.js} +2 -2
  88. package/dist/{chunk-OKCR3JTO.js → chunk-YJXHMIZA.js} +13 -10
  89. package/dist/{chunk-JU6Y5TTZ.js → chunk-YUAXFWSQ.js} +3 -3
  90. package/dist/{chunk-TVCRUG2S.js → chunk-ZEUONDQG.js} +1 -1
  91. package/dist/{chunk-THXFSPLV.js → chunk-ZIRIDSDB.js} +1 -1
  92. package/dist/{chunk-6UM3R7PP.js → chunk-ZOA2SC4P.js} +129 -60
  93. package/dist/{clean-KTHTV5G5.js → clean-KPX27IKJ.js} +27 -26
  94. package/dist/cli.js +70 -160
  95. package/dist/{cloud-ARSZWALC.js → cloud-P7DAOISN.js} +4 -4
  96. package/dist/{cloudrun-NM7RXOCL.js → cloudrun-XM56TBOH.js} +13 -12
  97. package/dist/commands/contrast-audit.browser.js +60 -4
  98. package/dist/commands/layout-audit.browser.js +68 -0
  99. package/dist/{compare-CY4UO3RW.js → compare-F6YAFZZM.js} +37 -36
  100. package/dist/{compiler-VTH2D3ID.js → compiler-JZ4GNFMG.js} +16 -10
  101. package/dist/{component-FRUIAXIR.js → component-3CFOGIQA.js} +5 -5
  102. package/dist/{compositions-CUSY6ZYY.js → compositions-CPCMWF24.js} +38 -33
  103. package/dist/{delete-KT3VHP4L.js → delete-GYVKOKB6.js} +4 -4
  104. package/dist/{deterministicFonts-F6WIVL2W.js → deterministicFonts-U2BIMGPG.js} +3 -3
  105. package/dist/{dist-7SZU7MA7.js → dist-KDJTFJHA.js} +7 -6
  106. package/dist/{dist-2GC6XKRQ.js → dist-YPWQDWJ4.js} +42 -40
  107. package/dist/{doctor-4ROTBL5U.js → doctor-GWI3B6JT.js} +21 -20
  108. package/dist/{dom-IROKGVJI.js → dom-37K6YOH4.js} +2 -2
  109. package/dist/{events-QJDVMKSR.js → events-BRRUDPPT.js} +3 -3
  110. package/dist/{events-Q5PXT5UC.js → events-V2QFN4YM.js} +2 -2
  111. package/dist/{feedback-PQ7TWESA.js → feedback-CXMD7FWL.js} +14 -13
  112. package/dist/{ffmpeg-QIUFEFTY.js → ffmpeg-T5SH2EFJ.js} +3 -2
  113. package/dist/{figma-JN5DDBDS.js → figma-YABDWD66.js} +3 -3
  114. package/dist/fontLocalizeCli.js +18 -17
  115. package/dist/{get-KT6OTERO.js → get-L2SOQKHX.js} +4 -4
  116. package/dist/{gpuPolicy-LCBWVGEH.js → gpuPolicy-NBJNWHYS.js} +19 -16
  117. package/dist/{grade-compare-VS3RP73G.js → grade-compare-STXQPKYQ.js} +39 -38
  118. package/dist/{help-AD6FIZIO.js → help-4H6BSFLB.js} +2 -2
  119. package/dist/{history-ZRWYRY7R.js → history-4IQOLTHJ.js} +6 -6
  120. package/dist/hyperframe-runtime.js +56 -56
  121. package/dist/hyperframe.manifest.json +1 -1
  122. package/dist/hyperframe.runtime.iife.js +56 -56
  123. package/dist/hyperframes-player.global.js +3 -3
  124. package/dist/hyperframes-slideshow.global.js +23 -23
  125. package/dist/{info-WBBQA2AX.js → info-2CZOTNBC.js} +17 -16
  126. package/dist/{init-A2XBDFGF.js → init-6BXK42VS.js} +46 -46
  127. package/dist/{inspect-CLTZHA5O.js → inspect-VKU47TBH.js} +38 -37
  128. package/dist/{installer-WQDRVXH4.js → installer-T2BSSUDY.js} +11 -10
  129. package/dist/{keyframes-3FYOK6H6.js → keyframes-IEYVHRPI.js} +10 -10
  130. package/dist/{lambda-Y2PA2BGS.js → lambda-TIKG25CK.js} +12 -11
  131. package/dist/{layout-4KP5O7IJ.js → layout-XOI4PT7A.js} +38 -37
  132. package/dist/{lint-V4GRFHOJ.js → lint-DWCMVIX5.js} +14 -13
  133. package/dist/{lintProject-RG2KGAXB.js → lintProject-UBZ3TDHU.js} +7 -6
  134. package/dist/{list-OQ4VED6E.js → list-7GXKG5QM.js} +5 -5
  135. package/dist/{login-W47NKN5S.js → login-BQ5L2UHX.js} +4 -4
  136. package/dist/{manager-CT3D67CG.js → manager-BPSR6D3V.js} +2 -2
  137. package/dist/{manager-524RPYO7.js → manager-RFZNG5YT.js} +2 -2
  138. package/dist/{manager-DXB7JDHU.js → manager-YKMHR6LN.js} +9 -6
  139. package/dist/{media-treatment-HJYL3EME.js → media-treatment-IFB7OSZ3.js} +24 -22
  140. package/dist/{models-DYBAD2GQ.js → models-TY4PJ545.js} +68 -27
  141. package/dist/{motionShot-7NE2YBB3.js → motionShot-WXMFHICW.js} +33 -33
  142. package/dist/{normalize-IGLHCWTF.js → normalize-U3SL5VG3.js} +19 -8
  143. package/dist/{normalize-audio-INKCLMS2.js → normalize-audio-RFD776HQ.js} +10 -6
  144. package/dist/{open-TYC5THVY.js → open-7IXXGO2E.js} +5 -5
  145. package/dist/parakeetRunner-IHLYYMTZ.js +67 -0
  146. package/dist/{pipeline-EVKEPQEW.js → pipeline-TXKPLL2U.js} +20 -18
  147. package/dist/{play-QMZEM6X3.js → play-J2KP64UK.js} +31 -29
  148. package/dist/{preflight-Y5DN5D37.js → preflight-B4AFK3RG.js} +4 -4
  149. package/dist/{present-Y7IK3C4W.js → present-MHHNRVRA.js} +26 -25
  150. package/dist/{preview-5OQRYE6A.js → preview-CONUOFFQ.js} +28 -27
  151. package/dist/{producer-Q6G6JU7B.js → producer-ZI46K7HH.js} +1 -1
  152. package/dist/{projectConfig-RJN3DKDB.js → projectConfig-FGGVG5MV.js} +13 -12
  153. package/dist/{publication-QCPGGN3U.js → publication-TXFBMW6B.js} +8 -7
  154. package/dist/{publish-VZLFIGYY.js → publish-YZSPBFRD.js} +18 -17
  155. package/dist/{remove-background-TKOEHBA5.js → remove-background-4ATVLHLG.js} +22 -20
  156. package/dist/{render-KIIIF6PS.js → render-6FBYLYGJ.js} +20 -19
  157. package/dist/{render-XTXE5CRU.js → render-GFW5BPES.js} +13 -12
  158. package/dist/{render-X3NFNVEQ.js → render-MH4IUPWB.js} +41 -40
  159. package/dist/{render-batch-M55YZLZ5.js → render-batch-XUCZ2PUJ.js} +13 -12
  160. package/dist/{renderCancellation-X5BEHAZU.js → renderCancellation-XF7M7IUP.js} +18 -16
  161. package/dist/renderSetupWorker.js +37 -48
  162. package/dist/{resolver-GAMXRA42.js → resolver-W7AYCQGS.js} +10 -9
  163. package/dist/sherpa-LDUB5NLY.js +75 -0
  164. package/dist/sherpaWorker.js +2 -1
  165. package/dist/skills/hyperframes-cli/references/doctor-browser.md +24 -1
  166. package/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +1 -1
  167. package/dist/skills/media-use/scripts/lib/cache.mjs +28 -14
  168. package/dist/skills/media-use/scripts/lib/cache.test.mjs +110 -0
  169. package/dist/skills/media-use/scripts/lib/duck.mjs +2 -1
  170. package/dist/skills/media-use/scripts/lib/duck.test.mjs +87 -0
  171. package/dist/skills/media-use/scripts/lib/probe.mjs +6 -1
  172. package/dist/skills/media-use/scripts/lib/probe.test.mjs +73 -0
  173. package/dist/skills/media-use/scripts/lib/words.mjs +1 -1
  174. package/dist/{skills-CZHVAD3J.js → skills-VENERS5X.js} +7 -7
  175. package/dist/{skillsUpdateCheck-6WLLX53A.js → skillsUpdateCheck-UXFYTACG.js} +3 -3
  176. package/dist/{slideshow-EJ4IMY6P.js → slideshow-4OJEPWNZ.js} +1 -1
  177. package/dist/{snapshot-K7BTJPYQ.js → snapshot-C6T74HTI.js} +44 -40
  178. package/dist/{src-YUW26JU5.js → src-FS5RSVEI.js} +17 -16
  179. package/dist/{src-3I3RH3V5.js → src-VUJ2FUFK.js} +18 -13
  180. package/dist/{staticProjectServer-IKCSGN2B.js → staticProjectServer-V2RZ4DWD.js} +23 -22
  181. package/dist/studio/assets/hyperframes-player-Bw_jIaSX.js +473 -0
  182. package/dist/studio/assets/{index-B-wffzRH.js → index-BVM9NuWl.js} +153 -153
  183. package/dist/studio/assets/{index-D3Vij9t1.js → index-Cj7W_c7p.js} +1 -1
  184. package/dist/studio/assets/{index-D5q2_7Gw.js → index-DyH9dT7b.js} +1 -1
  185. package/dist/studio/{chunk-TFLU2MGI.js → chunk-3GHTHPZD.js} +8 -1
  186. package/dist/studio/chunk-3GHTHPZD.js.map +1 -0
  187. package/dist/studio/{chunk-H2DUOXTF.js → chunk-G3EDKRZH.js} +3 -3
  188. package/dist/studio/{chunk-UYWON5AX.js → chunk-PEAKCOUW.js} +7 -3
  189. package/dist/studio/chunk-PEAKCOUW.js.map +1 -0
  190. package/dist/studio/{chunk-LOVBLSMR.js → chunk-Y2OHHNM2.js} +35 -19
  191. package/dist/studio/chunk-Y2OHHNM2.js.map +1 -0
  192. package/dist/studio/{domEditingLayers-KBTPQKGA.js → domEditingLayers-PYST4G45.js} +3 -3
  193. package/dist/studio/index.html +1 -1
  194. package/dist/studio/index.js +261 -230
  195. package/dist/studio/index.js.map +1 -1
  196. package/dist/studio/player.js +3 -3
  197. package/dist/studio/ui.d.ts +4 -5
  198. package/dist/studio/ui.js +1 -1
  199. package/dist/{studio-api-SQ3NXFSM.js → studio-api-TQE7KWKO.js} +22 -17
  200. package/dist/{studioServer-VVEO7XCH.js → studioServer-CYKSQK7L.js} +81 -64
  201. package/dist/{synthesize-77PTU6C5.js → synthesize-UCI4X5O7.js} +6 -6
  202. package/dist/{telemetry-FQDKR5XA.js → telemetry-A23PPRD6.js} +3 -3
  203. package/dist/{timeline-N6ZASFNE.js → timeline-T3QSGT3A.js} +143 -99
  204. package/dist/{tokens-2OIIBBCW.js → tokens-RT5HWA6C.js} +4 -4
  205. package/dist/{transcribe-7YTUCXDX.js → transcribe-FOLNOC5G.js} +116 -52
  206. package/dist/{transcribe-4F6MK73N.js → transcribe-HCF64LQK.js} +23 -20
  207. package/dist/{tts-TOHSPWEG.js → tts-B6AHFQEO.js} +6 -6
  208. package/dist/{updateCheck-AZ2COZFR.js → updateCheck-27PIP3AA.js} +2 -2
  209. package/dist/{upgrade-QAJEYB4X.js → upgrade-TVGXBUPJ.js} +2 -2
  210. package/dist/{urlDownloader-LSMFEO3R.js → urlDownloader-KBLBJKRL.js} +14 -13
  211. package/dist/{validate-GW5MDL36.js → validate-ZMYGK4QI.js} +40 -27
  212. package/dist/{video-PRNOKUK3.js → video-AVE5GIGM.js} +15 -14
  213. package/package.json +1 -1
  214. package/dist/chunk-J4UX3RS3.js +0 -3717
  215. package/dist/studio/assets/hyperframes-player-sAsRuV73.js +0 -473
  216. package/dist/studio/chunk-LOVBLSMR.js.map +0 -1
  217. package/dist/studio/chunk-TFLU2MGI.js.map +0 -1
  218. package/dist/studio/chunk-UYWON5AX.js.map +0 -1
  219. package/dist/{chunk-HBBJFK6I.js → chunk-APDLWWFG.js} +0 -0
  220. package/dist/{screenshotCapture-TEUIWXWN.js → screenshotCapture-3JXXUZND.js} +3 -3
  221. /package/dist/studio/{chunk-H2DUOXTF.js.map → chunk-G3EDKRZH.js.map} +0 -0
  222. /package/dist/studio/{domEditingLayers-KBTPQKGA.js.map → domEditingLayers-PYST4G45.js.map} +0 -0
@@ -1,19 +1,19 @@
1
- "use strict";var HyperframesPlayer=(()=>{var k=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var V=Object.getOwnPropertyNames;var Y=Object.prototype.hasOwnProperty;var X=(i,e)=>{for(var t in e)k(i,t,{get:e[t],enumerable:!0})},J=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of V(e))!Y.call(i,r)&&r!==t&&k(i,r,{get:()=>e[r],enumerable:!(n=j(e,r))||n.enumerable});return i};var Q=i=>J(k({},"__esModule",{value:!0}),i);var Le={};X(Le,{HyperframesSlideshow:()=>b,childrenMayStillArrive:()=>_,dropInvalidSlides:()=>B,locateSlideshowParts:()=>O});var Z="application/hyperframes-slideshow+json";function ee(i="i"){let e=Z.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`<script[^>]*type=["']${e}["'][^>]*>([\\s\\S]*?)<\\/script>`,i)}function P(i){let t=ee("i").exec(i);if(!t||t[1]===void 0)return null;let n=t[1].trim();if(n.length===0)return null;let r=JSON.parse(n);if(!re(r))throw new Error("slideshow island is not a valid SlideshowManifest");return r}function te(i){return i===void 0||Array.isArray(i)&&i.every(e=>typeof e=="number")}function ne(i){return i===void 0||typeof i=="boolean"}function A(i){if(typeof i!="object"||i===null)return!1;let e=i;return!(typeof e.sceneId!="string"||!te(e.fragments)||e.hotspots!==void 0&&!Array.isArray(e.hotspots)||!ne(e.autoplay))}function ie(i){if(typeof i!="object"||i===null)return!1;let e=i;return typeof e.id=="string"&&typeof e.label=="string"&&Array.isArray(e.slides)&&e.slides.every(A)}function re(i){if(typeof i!="object"||i===null||Array.isArray(i))return!1;let e=i;return!(!Array.isArray(e.slides)||!e.slides.every(A)||e.slideSequences!==void 0&&(!Array.isArray(e.slideSequences)||!e.slideSequences.every(ie)))}function se(i,e){return`slide "${i}" sets ${e==="startTime"?"endTime":"startTime"} but ${e} cannot be resolved (no scene "${i}")`}function oe(i,e,t){let{startTime:n,endTime:r,sceneId:s}=i;if(n!==void 0&&r!==void 0)return{start:n,end:r};if(n===void 0&&r===void 0)return e?{start:e.start,end:e.start+e.duration}:(t.push(`slide references unresolved sceneId "${s}"`),{start:0,end:0});if(!e){let a=n===void 0?"startTime":"endTime";t.push(se(s,a));let d=n??r??0;return{start:d,end:d}}return{start:n??e.start,end:r??e.start+e.duration}}function ae(i,e,t,n,r){for(let s of e)(s<t||s>n)&&r.push(`slide "${i}" fragment ${s} is outside range [${t}, ${n}]`)}function I(i,e,t){let n=e.get(i.sceneId),{start:r,end:s}=oe(i,n,t);i.startTime!==void 0&&i.endTime!==void 0&&s<=r&&t.push(`slide "${i.sceneId}" has endTime (${s}) <= startTime (${r})`);let a=[...new Set(i.fragments??[])].sort((d,o)=>d-o);return ae(i.sceneId,a,r,s,t),{...i,start:r,end:s,fragments:a,hotspots:i.hotspots??[]}}function C(i,e){let t=[],n=new Map(e.map(o=>[o.id,o])),r={};for(let o of i.slideSequences??[])Object.prototype.hasOwnProperty.call(r,o.id)&&t.push(`duplicate slideSequence id "${o.id}" \u2014 only the last definition is kept`),r[o.id]={id:o.id,label:o.label,slides:o.slides.map(l=>I(l,n,t))};let s=i.slides.map(o=>I(o,n,t)),a=[...s,...Object.values(r).flatMap(o=>o.slides)];for(let o of a)for(let l of o.hotspots){let u=r[l.target];u?u.slides.length===0&&t.push(`hotspot "${l.id}" targets empty sequence "${l.target}"`):t.push(`hotspot "${l.id}" targets unknown sequence "${l.target}"`)}let d=[...s].sort((o,l)=>o.start-l.start);for(let o=1;o<d.length;o++){let l=d[o-1],u=d[o];l!==void 0&&u!==void 0&&u.start<l.end&&t.push(`main-line slides "${l.sceneId}" and "${u.sceneId}" overlap`)}return{resolved:{slides:s,sequences:r},errors:t}}var f="main",y=class{constructor(e,t){this.player=e;this.show=t;this.enterSlide(0)}player;show;stack=[{sequenceId:f,slideIndex:0,fragmentIndex:-1}];changeCbs=new Set;dispose(){}slidesOf(e){return e===f?this.show.slides:this.show.sequences[e]?.slides??[]}get frame(){return this.stack[this.stack.length-1]}get currentSlide(){return this.slidesOf(this.frame.sequenceId)[this.frame.slideIndex]}get nextSlide(){return this.slidesOf(this.frame.sequenceId)[this.frame.slideIndex+1]??null}get position(){return{...this.frame}}get counter(){return{index:this.frame.slideIndex+1,total:this.slidesOf(this.frame.sequenceId).length}}get canPrev(){return this.frame.slideIndex>0||this.stack.length>1}get canNext(){let e=this.slidesOf(this.frame.sequenceId);return this.frame.slideIndex+1<e.length||this.stack.length>1}get breadcrumb(){return this.stack.map(e=>e.sequenceId===f?{id:f,label:"Main deck"}:{id:e.sequenceId,label:this.show.sequences[e.sequenceId]?.label??e.sequenceId})}onChange(e){return this.changeCbs.add(e),()=>this.changeCbs.delete(e)}emitChange(){for(let e of this.changeCbs)e()}stopSlideMedia(){this.player.stopMedia?.()}enterSlide(e){e!==this.frame.slideIndex&&this.stopSlideMedia(),this.frame.slideIndex=e;let t=this.currentSlide;if(!t){this.frame.fragmentIndex=-1;return}t.fragments.length>0?(this.frame.fragmentIndex=0,this.playTo(t.fragments[0]??t.end)):(this.frame.fragmentIndex=-1,this.playTo(this.restFrame(t))),t.autoplay&&this.player.playSceneMedia?.(t.sceneId),this.emitChange()}restFrame(e){return e.start+(e.end-e.start)*.5}resumeSlide(e,t){this.frame.slideIndex=e,this.frame.fragmentIndex=t;let n=this.currentSlide;if(!n)return;let r=t>=0&&t<n.fragments.length?n.fragments[t]??n.start:n.fragments.length>0?n.start:this.restFrame(n);this.playTo(r),this.emitChange()}playTo(e){this.player.seek(e)}next(){let e=this.currentSlide;if(!e)return;if(this.frame.fragmentIndex+1<e.fragments.length){this.frame.fragmentIndex+=1;let r=e.fragments[this.frame.fragmentIndex]??e.end;this.playTo(r),this.emitChange();return}let n=this.slidesOf(this.frame.sequenceId);this.frame.slideIndex+1<n.length?this.enterSlide(this.frame.slideIndex+1):this.stack.length>1&&this.back()}prev(){if(this.frame.slideIndex>0){this.enterSlide(this.frame.slideIndex-1);return}this.stack.length>1&&this.back()}goToSlide(e){let t=this.slidesOf(this.frame.sequenceId);e>=0&&e<t.length&&this.enterSlide(e)}enterBranch(e){let t=this.show.sequences[e];!t||t.slides.length===0||(this.stopSlideMedia(),this.stack.push({sequenceId:e,slideIndex:0,fragmentIndex:-1}),this.enterSlide(0))}back(){this.stack.length<=1||(this.stopSlideMedia(),this.stack.pop(),this.resumeSlide(this.frame.slideIndex,this.frame.fragmentIndex))}backToMain(){this.stack.length<=1||(this.stopSlideMedia(),this.stack=[this.stack[0]],this.resumeSlide(this.frame.slideIndex,this.frame.fragmentIndex))}syncTo(e,t,n){this.isValidSyncTarget(e,t)&&(this.isCrossSlide(e,t)&&this.stopSlideMedia(),this.rerootStackTo(e)&&this.resumeSlide(t,n))}isValidSyncTarget(e,t){if(!this.stack[0])return!1;let n=e===f?this.show.slides:this.show.sequences[e]?.slides??null;return n?t>=0&&t<n.length:!1}isCrossSlide(e,t){return this.frame.sequenceId!==e||this.frame.slideIndex!==t}rerootStackTo(e){if(this.frame.sequenceId===e)return!0;let t=this.stack[0];if(!t)return!1;if(this.stack=[t],e===f)return!0;let n=this.show.sequences[e];return!n||n.slides.length===0?!1:(this.stack.push({sequenceId:e,slideIndex:0,fragmentIndex:-1}),!0)}};var L="Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",le=new Set(["play","pause","seeking","seeked","ratechange","volumechange","ended","timeupdate"]),de=["currentTime","volume","playbackRate"],ue=["paused","ended","muted"];function $(i){return!(typeof i!="object"||i===null)}function ce(i){if(!$(i))return!1;let e=i;return e.type==="goto"&&typeof e.sequenceId=="string"&&typeof e.slideIndex=="number"&&typeof e.fragmentIndex=="number"}function he(i){return le.has(i)}function pe(i){return i==="presenter"||i==="audience"}function fe(i){return de.every(e=>typeof i[e]=="number")}function me(i){return ue.every(e=>typeof i[e]=="boolean")}function ve(i){if(!$(i))return!1;let e=i;return e.type==="media"&&pe(e.sender)&&typeof e.key=="string"&&he(e.action)&&fe(e)&&me(e)}function ye(){return`hf-slideshow:${typeof location<"u"?location.pathname:""}`}var m=class{constructor(e,t,n=()=>{}){this.mode=e;this.onGoto=t;this.onMedia=n;try{this.channel=new BroadcastChannel(ye())}catch{return}this.channel.onmessage=r=>{if(ce(r.data)){e==="audience"&&this.onGoto(r.data);return}ve(r.data)&&r.data.sender!==e&&this.onMedia(r.data)}}mode;onGoto;onMedia;channel=null;postPosition(e){if(this.mode!=="presenter"||!this.channel)return;let t={type:"goto",...e};this.channel.postMessage(t)}postMedia(e){this.channel&&this.channel.postMessage({type:"media",sender:this.mode,...e})}destroy(){this.channel&&(this.channel.onmessage=null,this.channel.close(),this.channel=null)}};function R(i){let e=s=>s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),t=s=>e(s).replace(/"/g,"&quot;"),n=e(i.notes),r=i.hotspots.length?`<div style="display:flex;flex-direction:column;gap:6px;">
1
+ "use strict";var HyperframesPlayer=(()=>{var k=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var X=Object.prototype.hasOwnProperty;var J=(n,e)=>{for(var t in e)k(n,t,{get:e[t],enumerable:!0})},Q=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Y(e))!X.call(n,r)&&r!==t&&k(n,r,{get:()=>e[r],enumerable:!(i=V(e,r))||i.enumerable});return n};var Z=n=>Q(k({},"__esModule",{value:!0}),n);var Fe={};J(Fe,{HyperframesSlideshow:()=>b,childrenMayStillArrive:()=>B,dropInvalidSlides:()=>K,locateSlideshowParts:()=>_});var ee="application/hyperframes-slideshow+json";function te(n="i"){let e=ee.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`<script[^>]*type=["']${e}["'][^>]*>([\\s\\S]*?)<\\/script>`,n)}function A(n){let t=te("i").exec(n);if(!t||t[1]===void 0)return null;let i=t[1].trim();if(i.length===0)return null;let r=JSON.parse(i);if(!ae(r))throw new Error("slideshow island is not a valid SlideshowManifest");return r}function ne(n){return n===void 0||Array.isArray(n)&&n.every(e=>typeof e=="number")}function ie(n){return n===void 0||typeof n=="boolean"}function S(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function re(n){return S(n)&&[n.x,n.y,n.w,n.h].every(e=>typeof e=="number"&&Number.isFinite(e))}function se(n){return S(n)&&typeof n.id=="string"&&typeof n.label=="string"&&typeof n.target=="string"&&(n.region===void 0||re(n.region))}function C(n){if(!S(n))return!1;let e=n;return!(typeof e.sceneId!="string"||!ne(e.fragments)||e.hotspots!==void 0&&(!Array.isArray(e.hotspots)||!e.hotspots.every(se))||!ie(e.autoplay))}function oe(n){if(typeof n!="object"||n===null)return!1;let e=n;return typeof e.id=="string"&&typeof e.label=="string"&&Array.isArray(e.slides)&&e.slides.every(C)}function ae(n){if(typeof n!="object"||n===null||Array.isArray(n))return!1;let e=n;return!(!Array.isArray(e.slides)||!e.slides.every(C)||e.slideSequences!==void 0&&(!Array.isArray(e.slideSequences)||!e.slideSequences.every(oe)))}function le(n,e){return`slide "${n}" sets ${e==="startTime"?"endTime":"startTime"} but ${e} cannot be resolved (no scene "${n}")`}function de(n,e,t){let{startTime:i,endTime:r,sceneId:s}=n;if(i!==void 0&&r!==void 0)return{start:i,end:r};if(i===void 0&&r===void 0)return e?{start:e.start,end:e.start+e.duration}:(t.push(`slide references unresolved sceneId "${s}"`),{start:0,end:0});if(!e){let a=i===void 0?"startTime":"endTime";t.push(le(s,a));let d=i??r??0;return{start:d,end:d}}return{start:i??e.start,end:r??e.start+e.duration}}function ue(n,e,t,i,r){for(let s of e)(s<t||s>i)&&r.push(`slide "${n}" fragment ${s} is outside range [${t}, ${i}]`)}function P(n,e,t){let i=e.get(n.sceneId),{start:r,end:s}=de(n,i,t);n.startTime!==void 0&&n.endTime!==void 0&&s<=r&&t.push(`slide "${n.sceneId}" has endTime (${s}) <= startTime (${r})`);let a=[...new Set(n.fragments??[])].sort((d,o)=>d-o);return ue(n.sceneId,a,r,s,t),{...n,start:r,end:s,fragments:a,hotspots:n.hotspots??[]}}function L(n,e){let t=[],i=new Map(e.map(o=>[o.id,o])),r={};for(let o of n.slideSequences??[])Object.prototype.hasOwnProperty.call(r,o.id)&&t.push(`duplicate slideSequence id "${o.id}" \u2014 only the last definition is kept`),r[o.id]={id:o.id,label:o.label,slides:o.slides.map(l=>P(l,i,t))};let s=n.slides.map(o=>P(o,i,t)),a=[...s,...Object.values(r).flatMap(o=>o.slides)];for(let o of a)for(let l of o.hotspots){let u=r[l.target];u?u.slides.length===0&&t.push(`hotspot "${l.id}" targets empty sequence "${l.target}"`):t.push(`hotspot "${l.id}" targets unknown sequence "${l.target}"`)}let d=[...s].sort((o,l)=>o.start-l.start);for(let o=1;o<d.length;o++){let l=d[o-1],u=d[o];l!==void 0&&u!==void 0&&u.start<l.end&&t.push(`main-line slides "${l.sceneId}" and "${u.sceneId}" overlap`)}return{resolved:{slides:s,sequences:r},errors:t}}var f="main",y=class{constructor(e,t){this.player=e;this.show=t;this.enterSlide(0)}player;show;stack=[{sequenceId:f,slideIndex:0,fragmentIndex:-1}];changeCbs=new Set;dispose(){}slidesOf(e){return e===f?this.show.slides:this.show.sequences[e]?.slides??[]}get frame(){return this.stack[this.stack.length-1]}get currentSlide(){return this.slidesOf(this.frame.sequenceId)[this.frame.slideIndex]}get nextSlide(){return this.slidesOf(this.frame.sequenceId)[this.frame.slideIndex+1]??null}get position(){return{...this.frame}}get counter(){return{index:this.frame.slideIndex+1,total:this.slidesOf(this.frame.sequenceId).length}}get canPrev(){return this.frame.slideIndex>0||this.stack.length>1}get canNext(){let e=this.slidesOf(this.frame.sequenceId);return this.frame.slideIndex+1<e.length||this.stack.length>1}get breadcrumb(){return this.stack.map(e=>e.sequenceId===f?{id:f,label:"Main deck"}:{id:e.sequenceId,label:this.show.sequences[e.sequenceId]?.label??e.sequenceId})}onChange(e){return this.changeCbs.add(e),()=>this.changeCbs.delete(e)}emitChange(){for(let e of this.changeCbs)e()}stopSlideMedia(){this.player.stopMedia?.()}enterSlide(e){e!==this.frame.slideIndex&&this.stopSlideMedia(),this.frame.slideIndex=e;let t=this.currentSlide;if(!t){this.frame.fragmentIndex=-1;return}t.fragments.length>0?(this.frame.fragmentIndex=0,this.playTo(t.fragments[0]??t.end)):(this.frame.fragmentIndex=-1,this.playTo(this.restFrame(t))),t.autoplay&&this.player.playSceneMedia?.(t.sceneId),this.emitChange()}restFrame(e){return e.start+(e.end-e.start)*.5}resumeSlide(e,t){this.frame.slideIndex=e,this.frame.fragmentIndex=t;let i=this.currentSlide;if(!i)return;let r=t>=0&&t<i.fragments.length?i.fragments[t]??i.start:i.fragments.length>0?i.start:this.restFrame(i);this.playTo(r),this.emitChange()}playTo(e){this.player.seek(e)}next(){let e=this.currentSlide;if(!e)return;if(this.frame.fragmentIndex+1<e.fragments.length){this.frame.fragmentIndex+=1;let r=e.fragments[this.frame.fragmentIndex]??e.end;this.playTo(r),this.emitChange();return}let i=this.slidesOf(this.frame.sequenceId);this.frame.slideIndex+1<i.length?this.enterSlide(this.frame.slideIndex+1):this.stack.length>1&&this.back()}prev(){if(this.frame.slideIndex>0){this.enterSlide(this.frame.slideIndex-1);return}this.stack.length>1&&this.back()}goToSlide(e){let t=this.slidesOf(this.frame.sequenceId);e>=0&&e<t.length&&this.enterSlide(e)}enterBranch(e){let t=this.show.sequences[e];!t||t.slides.length===0||(this.stopSlideMedia(),this.stack.push({sequenceId:e,slideIndex:0,fragmentIndex:-1}),this.enterSlide(0))}back(){this.stack.length<=1||(this.stopSlideMedia(),this.stack.pop(),this.resumeSlide(this.frame.slideIndex,this.frame.fragmentIndex))}backToMain(){this.stack.length<=1||(this.stopSlideMedia(),this.stack=[this.stack[0]],this.resumeSlide(this.frame.slideIndex,this.frame.fragmentIndex))}syncTo(e,t,i){this.isValidSyncTarget(e,t)&&(this.isCrossSlide(e,t)&&this.stopSlideMedia(),this.rerootStackTo(e)&&this.resumeSlide(t,i))}isValidSyncTarget(e,t){if(!this.stack[0])return!1;let i=e===f?this.show.slides:this.show.sequences[e]?.slides??null;return i?t>=0&&t<i.length:!1}isCrossSlide(e,t){return this.frame.sequenceId!==e||this.frame.slideIndex!==t}rerootStackTo(e){if(this.frame.sequenceId===e)return!0;let t=this.stack[0];if(!t)return!1;if(this.stack=[t],e===f)return!0;let i=this.show.sequences[e];return!i||i.slides.length===0?!1:(this.stack.push({sequenceId:e,slideIndex:0,fragmentIndex:-1}),!0)}};var $="Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",ce=new Set(["play","pause","seeking","seeked","ratechange","volumechange","ended","timeupdate"]),he=["currentTime","volume","playbackRate"],pe=["paused","ended","muted"];function R(n){return!(typeof n!="object"||n===null)}function fe(n){if(!R(n))return!1;let e=n;return e.type==="goto"&&typeof e.sequenceId=="string"&&typeof e.slideIndex=="number"&&typeof e.fragmentIndex=="number"}function me(n){return ce.has(n)}function ve(n){return n==="presenter"||n==="audience"}function ye(n){return he.every(e=>typeof n[e]=="number")}function ge(n){return pe.every(e=>typeof n[e]=="boolean")}function be(n){if(!R(n))return!1;let e=n;return e.type==="media"&&ve(e.sender)&&typeof e.key=="string"&&me(e.action)&&ye(e)&&ge(e)}function Me(){return`hf-slideshow:${typeof location<"u"?location.pathname:""}`}var m=class{constructor(e,t,i=()=>{}){this.mode=e;this.onGoto=t;this.onMedia=i;try{this.channel=new BroadcastChannel(Me())}catch{return}this.channel.onmessage=r=>{if(fe(r.data)){e==="audience"&&this.onGoto(r.data);return}be(r.data)&&r.data.sender!==e&&this.onMedia(r.data)}}mode;onGoto;onMedia;channel=null;postPosition(e){if(this.mode!=="presenter"||!this.channel)return;let t={type:"goto",...e};this.channel.postMessage(t)}postMedia(e){this.channel&&this.channel.postMessage({type:"media",sender:this.mode,...e})}destroy(){this.channel&&(this.channel.onmessage=null,this.channel.close(),this.channel=null)}};function F(n){let e=s=>s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),t=s=>e(s).replace(/"/g,"&quot;"),i=e(n.notes),r=n.hotspots.length?`<div style="display:flex;flex-direction:column;gap:6px;">
2
2
  <div style="font-size:12px;text-transform:uppercase;letter-spacing:.12em;opacity:.55;">Branches</div>
3
- ${i.hotspots.map(s=>`<button data-hotspot-id="${t(s.id)}" data-hotspot-target="${t(s.target)}" type="button" title="${t(s.label)}" style="text-align:left;background:rgba(244,183,64,0.14);color:#f4b740;border:1px solid rgba(244,183,64,0.4);border-radius:8px;padding:8px 12px;font-size:15px;cursor:pointer;pointer-events:auto;font-family:inherit;">&#8627; ${e(s.label)}</button>`).join("")}
3
+ ${n.hotspots.map(s=>`<button data-hotspot-id="${t(s.id)}" data-hotspot-target="${t(s.target)}" type="button" title="${t(s.label)}" style="text-align:left;background:rgba(244,183,64,0.14);color:#f4b740;border:1px solid rgba(244,183,64,0.4);border-radius:8px;padding:8px 12px;font-size:15px;cursor:pointer;pointer-events:auto;font-family:inherit;">&#8627; ${e(s.label)}</button>`).join("")}
4
4
  </div>`:"";return`
5
5
  <div data-hf-presenter style="position:absolute;left:0;right:0;bottom:0;height:32%;display:flex;background:#11151f;color:#fff;border-top:2px solid rgba(255,255,255,0.12);box-sizing:border-box;font-family:sans-serif;pointer-events:auto;">
6
- <textarea data-hf-presenter-notes data-hf-presenter-notes-key="${t(i.notesStorageKey??"")}" aria-label="Speaker notes" placeholder="No notes for this slide" spellcheck="true" style="flex:1;min-width:0;padding:24px 36px;overflow:auto;font:inherit;font-size:21px;line-height:1.55;color:#fff;background:transparent;border:0;outline:none;resize:none;white-space:pre-wrap;pointer-events:auto;">${n}</textarea>
6
+ <textarea data-hf-presenter-notes data-hf-presenter-notes-key="${t(n.notesStorageKey??"")}" aria-label="Speaker notes" placeholder="No notes for this slide" spellcheck="true" style="flex:1;min-width:0;padding:24px 36px;overflow:auto;font:inherit;font-size:21px;line-height:1.55;color:#fff;background:transparent;border:0;outline:none;resize:none;white-space:pre-wrap;pointer-events:auto;">${i}</textarea>
7
7
  <div style="width:380px;flex-shrink:0;border-left:1px solid rgba(255,255,255,0.12);padding:24px 28px;display:flex;flex-direction:column;gap:10px;">
8
8
  <div style="font-size:12px;text-transform:uppercase;letter-spacing:.12em;opacity:.55;">Up next</div>
9
- <div data-hf-presenter-next style="font-size:17px;opacity:.9;line-height:1.4;">${e(i.nextText)}</div>
9
+ <div data-hf-presenter-next style="font-size:17px;opacity:.9;line-height:1.4;">${e(n.nextText)}</div>
10
10
  ${r}
11
11
  <div style="display:flex;gap:34px;margin-top:auto;">
12
- <div><div style="font-size:11px;text-transform:uppercase;letter-spacing:.1em;opacity:.5;margin-bottom:3px;">Slide</div><div data-hf-presenter-counter style="font-family:${L};font-size:23px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:0;">${e(i.counterText)}</div></div>
13
- <div><div style="font-size:11px;text-transform:uppercase;letter-spacing:.1em;opacity:.5;margin-bottom:3px;">Elapsed</div><div data-hf-presenter-elapsed style="font-family:${L};font-size:23px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:0;">${e(i.elapsedText)}</div></div>
12
+ <div><div style="font-size:11px;text-transform:uppercase;letter-spacing:.1em;opacity:.5;margin-bottom:3px;">Slide</div><div data-hf-presenter-counter style="font-family:${$};font-size:23px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:0;">${e(n.counterText)}</div></div>
13
+ <div><div style="font-size:11px;text-transform:uppercase;letter-spacing:.1em;opacity:.5;margin-bottom:3px;">Elapsed</div><div data-hf-presenter-elapsed style="font-family:${$};font-size:23px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:0;">${e(n.elapsedText)}</div></div>
14
14
  </div>
15
15
  </div>
16
- </div>`.trim()}function S(i){let e=Math.floor(i/60),t=Math.floor(i%60);return`${String(e).padStart(2,"0")}:${String(t).padStart(2,"0")}`}var g=class{constructor(e,t){this.actions=e;this.onAction=t}actions;onAction;bindings=new WeakMap;owned=new Set;sync(e){let t=new Set,n=[];for(let{key:r,el:s}of e){t.add(s);let a=this.bindings.get(s);if(a?.key===r)continue;a?.controller.abort();let d=s.ownerDocument.defaultView?.AbortController??AbortController,o=new d;this.bindings.set(s,{key:r,controller:o}),n.push(s);for(let l of this.actions)s.addEventListener(l,()=>this.onAction(s,r,l),{signal:o.signal})}for(let r of this.owned)t.has(r)||(this.bindings.get(r)?.controller.abort(),this.bindings.delete(r));return this.owned=t,n}setMuted(e){for(let t of this.owned)t.muted=e||t.defaultMuted}pauseAll(){for(let e of this.owned)e.pause()}clear(){for(let e of this.owned)this.bindings.get(e)?.controller.abort();this.owned.clear(),this.bindings=new WeakMap}};var F=150,ge=6e3,be=["play","pause","seeking","seeked","ratechange","volumechange","ended","timeupdate"];function Me(i){if(!i||typeof i.tagName!="string")return!1;let e=i,t=e.tagName;return t==="INPUT"||t==="TEXTAREA"||t==="SELECT"||e.isContentEditable===!0}function xe(i){return typeof i.seek=="function"&&typeof i.play=="function"&&typeof i.pause=="function"}function O(i){let e=i.querySelector("hyperframes-player");if(!(e instanceof HTMLElement))return{kind:"incomplete",reason:"no-player"};let t;try{t=P(i.innerHTML)}catch{return{kind:"incomplete",reason:"malformed-island"}}return t?{kind:"ready",player:e,manifest:t}:{kind:"incomplete",reason:"no-island"}}function _(i){return i==="loading"}var we="hf-slideshow:presenter-notes:v1:",N=!1;function ke(){if(N)return;N=!0;let i=document.createElement("style");i.textContent=`
16
+ </div>`.trim()}function T(n){let e=Math.floor(n/60),t=Math.floor(n%60);return`${String(e).padStart(2,"0")}:${String(t).padStart(2,"0")}`}var g=class{constructor(e,t){this.actions=e;this.onAction=t}actions;onAction;bindings=new WeakMap;owned=new Set;sync(e){let t=new Set,i=[];for(let{key:r,el:s}of e){t.add(s);let a=this.bindings.get(s);if(a?.key===r)continue;a?.controller.abort();let d=s.ownerDocument.defaultView?.AbortController??AbortController,o=new d;this.bindings.set(s,{key:r,controller:o}),i.push(s);for(let l of this.actions)s.addEventListener(l,()=>this.onAction(s,r,l),{signal:o.signal})}for(let r of this.owned)t.has(r)||(this.bindings.get(r)?.controller.abort(),this.bindings.delete(r));return this.owned=t,i}setMuted(e){for(let t of this.owned)t.muted=e||t.defaultMuted}pauseAll(){for(let e of this.owned)e.pause()}clear(){for(let e of this.owned)this.bindings.get(e)?.controller.abort();this.owned.clear(),this.bindings=new WeakMap}};var H=150,xe=6e3,we=["play","pause","seeking","seeked","ratechange","volumechange","ended","timeupdate"];function ke(n){if(!n||typeof n.tagName!="string")return!1;let e=n,t=e.tagName;return t==="INPUT"||t==="TEXTAREA"||t==="SELECT"||e.isContentEditable===!0}function Se(n){return typeof n.seek=="function"&&typeof n.play=="function"&&typeof n.pause=="function"}function _(n){let e=n.querySelector("hyperframes-player");if(!(e instanceof HTMLElement))return{kind:"incomplete",reason:"no-player"};let t;try{t=A(n.innerHTML)}catch{return{kind:"incomplete",reason:"malformed-island"}}return t?{kind:"ready",player:e,manifest:t}:{kind:"incomplete",reason:"no-island"}}function B(n){return n==="loading"}var Te="hf-slideshow:presenter-notes:v1:",N=!1;function Ee(){if(N)return;N=!0;let n=document.createElement("style");n.textContent=`
17
17
  @keyframes hf-hotspot-pulse {
18
18
  0%, 100% { box-shadow: 0 0 0 0 rgba(255,255,255,0.35), 0 4px 16px rgba(0,0,0,0.35); }
19
19
  50% { box-shadow: 0 0 0 8px rgba(255,255,255,0), 0 4px 20px rgba(0,0,0,0.45); }
@@ -77,14 +77,14 @@
77
77
  [data-hf-muted] [data-hf-mute]:hover {
78
78
  color: rgba(255,255,255,0.6) !important;
79
79
  }
80
- `,document.head.appendChild(i)}var H='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 3H5a2 2 0 0 0-2 2v3M21 8V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3M16 21h3a2 2 0 0 0 2-2v-3"/></svg>',q='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 3v3a2 2 0 0 1-2 2H3M21 8h-3a2 2 0 0 1-2-2V3M3 16h3a2 2 0 0 1 2 2v3M16 21v-3a2 2 0 0 1 2-2h3"/></svg>',Se='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="18" height="13" rx="2"/><path d="M8 21h8"/><path d="M12 17v4"/><path d="M10 8.5v4l4-2-4-2z"/></svg>',Te="Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",b=class extends HTMLElement{controller=null;offChange=null;chrome=null;touchStartX=0;touchStartY=0;channel=null;presenterStartMs=null;presenterInterval=null;presenterPositionTimers=[];disconnected=!1;initTimer=null;initRetry=null;initInFlight=!1;initGeneration=0;keyForwardFrame=null;detachIframeKeys=null;warnedIframeKeyForwardingUnavailable=!1;_muted=!1;mediaWireInterval=null;playerObserver=null;applyingRemoteMedia=!1;lastMediaTimeBroadcastMs=0;audienceMutedPlaybackKeys=new Set;blockedAudienceMedia=new Map;audienceMediaUnlockButton=null;autoplayToken=0;ownedMedia=new g(be,(e,t,n)=>this.publishMediaState(e,t,n));get muted(){return this._muted}resolveMode(){let e=this.getAttribute("mode");if(e)return e;try{return new URLSearchParams(location.search).get("mode")}catch{return null}}static get observedAttributes(){return["sound","mode"]}attributeChangedCallback(){this.controller&&this.render()}connectedCallback(){this.disconnected=!1,this.initInFlight=!1,this.initGeneration+=1,this.tabIndex=0,window.addEventListener("keydown",this.onKey),this.addEventListener("touchstart",this.onTouchStart,{passive:!0}),this.addEventListener("touchend",this.onTouchEnd),window.addEventListener("message",this.onMessage),document.addEventListener("fullscreenchange",this.onFsChange),this.initChannel(),this.observeInteractivePlayers(),this.initTimer=setTimeout(()=>{this.initTimer=null,this.isConnected&&!this.disconnected&&(this.ensureInteractivePlayers(),this.init())},0)}disconnectedCallback(){this.disconnected=!0,this.initGeneration+=1,this.autoplayToken++,this.initTimer!==null&&(clearTimeout(this.initTimer),this.initTimer=null),this.initRetry!==null&&(document.removeEventListener("DOMContentLoaded",this.initRetry),this.initRetry=null),window.removeEventListener("keydown",this.onKey),this.detachIframeKeys?.(),this.removeEventListener("touchstart",this.onTouchStart),this.removeEventListener("touchend",this.onTouchEnd),window.removeEventListener("message",this.onMessage),document.removeEventListener("fullscreenchange",this.onFsChange),this.offChange?.(),this.offChange=null,this.controller?.dispose?.(),this.controller=null,this.chrome=null,this.channel?.destroy(),this.channel=null,this.mediaWireInterval!==null&&(clearInterval(this.mediaWireInterval),this.mediaWireInterval=null),this.playerObserver!==null&&(this.playerObserver.disconnect(),this.playerObserver=null),this.ownedMedia.clear(),this.audienceMediaUnlockButton?.remove(),this.audienceMediaUnlockButton=null,this.audienceMutedPlaybackKeys.clear(),this.blockedAudienceMedia.clear(),this.presenterInterval!==null&&(clearInterval(this.presenterInterval),this.presenterInterval=null),this.clearPresenterPositionTimers()}__setControllerForTest(e){this.bindController(e)}present(){if(this.resolveMode()==="audience"||this.getAttribute("data-hf-presenting")==="true")return;let e=new URL(location.href);if(e.searchParams.set("mode","audience"),!this.openAudienceTab(e.href)){console.warn("[hyperframes-slideshow] present(): browser blocked the audience tab");return}this.setAttribute("data-hf-presenting","true"),this.postCurrentPresenterPositionBurst(),this.presenterStartMs=Date.now(),this.presenterInterval===null&&(this.presenterInterval=setInterval(()=>this.updateElapsed(),1e3)),this.render()}openAudienceTab(e){let t=navigator.userActivation;if(t&&t.isActive===!1)return!1;let n=document.createElement("a");return n.href=e,n.target="_blank",n.rel="noopener noreferrer",n.style.display="none",(document.body??document.documentElement).appendChild(n),n.click(),n.remove(),!0}updateElapsed(){if(this.presenterStartMs===null)return;let e=this.chrome?.querySelector("[data-hf-presenter-elapsed]");e&&(e.textContent=S(Math.floor((Date.now()-this.presenterStartMs)/1e3)))}initChannel(){this.resolveMode()==="audience"?this.channel=new m("audience",t=>{this.controller&&this.controller.syncTo?.(t.sequenceId,t.slideIndex,t.fragmentIndex)},this.onRemoteMedia):this.channel=new m("presenter",()=>{},this.onRemoteMedia)}async init(){if(this.initInFlight)return;this.initInFlight=!0;let e=this.initGeneration;try{let t=O(this);if(t.kind==="incomplete"){this.retryInitWhenParsed(e);return}let{player:n,manifest:r}=t;if(this.renderInitialChrome(r),!xe(n)||(await Ae(n),e!==this.initGeneration))return;this.attachIframeKeyForwarding(n);let s=await Ce(n,2500,()=>e!==this.initGeneration);if(e!==this.initGeneration)return;let{resolved:a,errors:d}=C(r,s);d.length>0&&console.warn("[hyperframes-slideshow] manifest errors:",d);let o=B(a);o.slides.length===0&&r.slides.length>0&&console.error("[hyperframes-slideshow] no main-line slides resolved \u2014 the scene timeline may not have loaded in time, or sceneIds/timing are invalid:",d);let l={seek:u=>n.seek(u),play:()=>n.play(),pause:()=>n.pause(),stopMedia:()=>{n.stopMedia?.(),this.stopDocumentMedia()},playSceneMedia:u=>this.playSceneDocumentMedia(u),get currentTime(){return n.currentTime},onTimeUpdate:u=>{let p=c=>{let M=c.detail;u(M.currentTime)};return n.addEventListener("timeupdate",p),()=>n.removeEventListener("timeupdate",p)}};this.bindController(new y(l,o)),s.length===0&&r.slides.length>0&&n.addEventListener("scenes",()=>{e===this.initGeneration&&this.init()},{once:!0})}finally{this.initInFlight=!1}}retryInitWhenParsed(e){if(this.initRetry!==null||!_(document.readyState))return;let t=()=>{this.initRetry=null,e===this.initGeneration&&this.isConnected&&!this.disconnected&&this.init()};this.initRetry=t,document.addEventListener("DOMContentLoaded",t,{once:!0})}renderInitialChrome(e){if(this.controller||e.slides.length===0)return;let t={index:1,total:e.slides.length};if(this.resolveMode()==="audience"){this.paintChrome(this.buildNavCluster(t,"28px","fs-only"));return}this.paintChrome(this.buildNavCluster(t,"28px","full",{canPrev:!1,canNext:e.slides.length>1,loading:e.slides.length>1}))}bindController(e){this.offChange?.(),this.controller?.dispose?.(),this.controller=e,this.startMediaSync(),this.offChange=e.onChange(()=>{this.resolveMode()!=="audience"&&this.channel&&this.channel.postPosition(e.position),this.render()}),this.resolveMode()!=="audience"&&this.channel&&this.channel.postPosition(e.position),this.render()}postCurrentPresenterPosition(){this.resolveMode()==="audience"||!this.channel||!this.controller||this.channel.postPosition(this.controller.position)}postCurrentPresenterPositionBurst(){this.clearPresenterPositionTimers(),this.postCurrentPresenterPosition();for(let e of[250,750,1500,3e3,5e3]){let t=setTimeout(()=>{this.presenterPositionTimers=this.presenterPositionTimers.filter(n=>n!==t),this.postCurrentPresenterPosition()},e);this.presenterPositionTimers.push(t)}}clearPresenterPositionTimers(){for(let e of this.presenterPositionTimers)clearTimeout(e);this.presenterPositionTimers=[]}startMediaSync(){this.wireSlideshowMedia(),this.mediaWireInterval===null&&(this.mediaWireInterval=setInterval(()=>this.wireSlideshowMedia(),1e3))}mediaPlayerElements(){return Array.from(this.querySelectorAll("hyperframes-player")).filter(e=>e instanceof HTMLElement)}ensureInteractivePlayers(){for(let e of this.querySelectorAll("hyperframes-player"))e.hasAttribute("interactive")||e.setAttribute("interactive","")}observeInteractivePlayers(){typeof MutationObserver>"u"||this.playerObserver===null&&(this.playerObserver=new MutationObserver(()=>this.ensureInteractivePlayers()),this.playerObserver.observe(this,{childList:!0,subtree:!0}))}attachIframeKeyForwarding(e){let t=e.iframeElement;if(!(t instanceof HTMLIFrameElement)||t===this.keyForwardFrame)return;this.detachIframeKeys?.();let n=()=>{try{t.contentWindow?.addEventListener("keydown",this.onKey)}catch{this.warnIframeKeyForwardingUnavailable()}};n(),t.addEventListener("load",n),this.keyForwardFrame=t,this.detachIframeKeys=()=>{t.removeEventListener("load",n);try{t.contentWindow?.removeEventListener("keydown",this.onKey)}catch{this.warnIframeKeyForwardingUnavailable()}this.keyForwardFrame=null,this.detachIframeKeys=null}}warnIframeKeyForwardingUnavailable(){this.warnedIframeKeyForwardingUnavailable||(this.warnedIframeKeyForwardingUnavailable=!0,console.warn("[hyperframes-slideshow] iframe keyboard forwarding is unavailable for this composition, likely because the player iframe is cross-origin. Arrow shortcuts work when focus is outside the iframe."))}playerFrameDocument(e){let t=e.iframeElement;if(!(t instanceof HTMLIFrameElement))return null;try{return t.contentDocument}catch{return null}}mediaKey(e,t,n,r){let s=e.id?`player-id:${e.id}`:`player:${t}`,a=n.id?`id:${n.id}`:`${n.tagName.toLowerCase()}:${r}`;return`${s}|${a}`}mediaEntries(){let e=[];return this.mediaPlayerElements().forEach((t,n)=>{let r=this.playerFrameDocument(t);r&&Array.from(r.querySelectorAll("video,audio")).filter(Ie).forEach((s,a)=>{e.push({key:this.mediaKey(t,n,s,a),el:s})})}),e}wireSlideshowMedia(){let e=this.ownedMedia.sync(this.mediaEntries());for(let t of e)t.muted=this._muted||t.defaultMuted}publishMediaState(e,t,n){if(!(this.applyingRemoteMedia||this.resolveMode()==="audience"||!this.channel)){if(n==="timeupdate"){let r=performance.now();if(r-this.lastMediaTimeBroadcastMs<450&&!e.paused)return;this.lastMediaTimeBroadcastMs=r}this.channel.postMedia({key:t,action:n,currentTime:v(e.currentTime,0),paused:e.paused,ended:e.ended,muted:e.muted,volume:v(e.volume,1),playbackRate:v(e.playbackRate,1)})}}onRemoteMedia=e=>{if(this.resolveMode()!=="audience")return;if(this.blockedAudienceMedia.has(e.key)&&e.action==="timeupdate"){this.blockedAudienceMedia.set(e.key,e),this.showAudienceMediaUnlock();return}this.wireSlideshowMedia();let t=this.mediaEntries().find(n=>n.key===e.key);if(t){this.applyingRemoteMedia=!0;try{this.applyRemoteMedia(t.el,e)}finally{setTimeout(()=>{this.applyingRemoteMedia=!1},300)}}};applyRemoteMedia(e,t){if(t.action==="pause"||t.action==="ended"){this.audienceMutedPlaybackKeys.delete(t.key),this.blockedAudienceMedia.delete(t.key),this.syncRemoteMediaState(e,t,!0),e.pause(),this.hideAudienceMediaUnlockIfClear();return}if(t.action==="play"||t.action==="timeupdate"&&t.paused===!1&&e.paused){this.playAudienceMediaMuted(e,t);return}this.syncRemoteMediaState(e,t,!0)}syncRemoteMediaState(e,t,n){e.playbackRate=v(t.playbackRate,1),e.volume=Math.max(0,Math.min(1,v(t.volume,1))),e.muted=this.audienceMutedPlaybackKeys.has(t.key)?!0:t.muted,n&&Number.isFinite(t.currentTime)&&Math.abs((e.currentTime||0)-t.currentTime)>.35&&(e.currentTime=Math.max(0,t.currentTime))}playAudienceMediaMuted(e,t){this.audienceMutedPlaybackKeys.add(t.key),this.syncRemoteMediaState(e,t,!0),e.muted=!0;try{e.play().then(()=>{this.blockedAudienceMedia.delete(t.key),this.hideAudienceMediaUnlockIfClear()}).catch(()=>{this.blockedAudienceMedia.set(t.key,t),this.showAudienceMediaUnlock()})}catch{this.blockedAudienceMedia.set(t.key,t),this.showAudienceMediaUnlock()}}retryBlockedAudienceMedia=()=>{this.wireSlideshowMedia();let e=new Map(this.mediaEntries().map(t=>[t.key,t.el]));for(let[t,n]of this.blockedAudienceMedia){let r=e.get(t);r&&this.playAudienceMediaMuted(r,n)}};showAudienceMediaUnlock(){if(this.resolveMode()!=="audience"||this.audienceMediaUnlockButton)return;let e=document.createElement("button");e.type="button",e.textContent="Play audience media muted",e.style.cssText="position:fixed;left:50%;bottom:96px;transform:translateX(-50%);z-index:100000;border:0;border-radius:999px;padding:12px 18px;background:#fff;color:#111827;box-shadow:0 10px 32px rgba(0,0,0,.28);font:700 14px/1 system-ui,sans-serif;cursor:pointer;pointer-events:auto;",e.addEventListener("click",this.retryBlockedAudienceMedia),this.appendChild(e),this.audienceMediaUnlockButton=e}hideAudienceMediaUnlockIfClear(){this.blockedAudienceMedia.size>0||!this.audienceMediaUnlockButton||(this.audienceMediaUnlockButton.remove(),this.audienceMediaUnlockButton=null)}onKey=e=>{if(Me(e.target))return;let t=document.activeElement,n=t===this||this.contains(t),r=document.querySelectorAll("hyperframes-slideshow").length>1,s=n||!r&&(t===document.body||t===null);if((e.key==="p"||e.key==="P")&&!e.metaKey&&!e.ctrlKey&&!e.altKey){if(!s||!this.shouldShowPresentControl())return;this.present(),e.preventDefault();return}if(this.controller){if(e.key==="ArrowRight"){if(!s)return;this.controller.next(),e.preventDefault()}else if(e.key==="ArrowLeft"){if(!s)return;this.controller.prev(),e.preventDefault()}else if(e.key===" "){if(!n)return;this.controller.next(),e.preventDefault()}else if(e.key==="Backspace"){if(!n)return;this.controller.prev(),e.preventDefault()}else if((e.key==="f"||e.key==="F")&&!e.metaKey&&!e.ctrlKey&&!e.altKey){if(!n)return;this.toggleFullscreen(),e.preventDefault()}}};onMessage=e=>{if(e.source!==window.parent&&e.source!==window||this.resolveMode()==="audience")return;let t=e.data;!t||!this.controller||(t.type==="next"?this.controller.next():t.type==="prev"?this.controller.prev():t.type==="goto"&&typeof t.slideIndex=="number"?this.controller.goToSlide?.(t.slideIndex):t.type==="back"&&this.controller.back?.())};onTouchStart=e=>{let t=e.touches[0];t&&(this.touchStartX=t.clientX,this.touchStartY=t.clientY)};onTouchEnd=e=>{if(!this.controller)return;let t=e.changedTouches[0];if(!t)return;let n=t.clientX-this.touchStartX,r=t.clientY-this.touchStartY;Math.abs(n)<=40||Math.abs(n)<=Math.abs(r)||(n<0?this.controller.next():this.controller.prev())};render(){if(!this.controller)return;if(this.resolveMode()==="audience"){let{counter:r}=this.controller;this.paintChrome(this.buildNavCluster(r,"28px","fs-only"));return}if(this.getAttribute("data-hf-presenting")==="true"){this.renderPresenter();return}let{counter:e,currentSlide:t}=this.controller;if(!t)return;let n=t.hotspots.map(r=>{let s=r.region?`left:${r.region.x}%;top:${r.region.y}%;`:"right:5%;bottom:18%;";return`<button
80
+ `,document.head.appendChild(n)}var q='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 3H5a2 2 0 0 0-2 2v3M21 8V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3M16 21h3a2 2 0 0 0 2-2v-3"/></svg>',O='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 3v3a2 2 0 0 1-2 2H3M21 8h-3a2 2 0 0 1-2-2V3M3 16h3a2 2 0 0 1 2 2v3M16 21v-3a2 2 0 0 1 2-2h3"/></svg>',Ie='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="18" height="13" rx="2"/><path d="M8 21h8"/><path d="M12 17v4"/><path d="M10 8.5v4l4-2-4-2z"/></svg>',Pe="Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",b=class extends HTMLElement{controller=null;offChange=null;chrome=null;touchStartX=0;touchStartY=0;channel=null;presenterStartMs=null;presenterInterval=null;presenterPositionTimers=[];disconnected=!1;initTimer=null;initRetry=null;initInFlight=!1;initGeneration=0;keyForwardFrame=null;detachIframeKeys=null;warnedIframeKeyForwardingUnavailable=!1;_muted=!1;mediaWireInterval=null;playerObserver=null;applyingRemoteMedia=!1;lastMediaTimeBroadcastMs=0;audienceMutedPlaybackKeys=new Set;blockedAudienceMedia=new Map;audienceMediaUnlockButton=null;autoplayToken=0;ownedMedia=new g(we,(e,t,i)=>this.publishMediaState(e,t,i));get muted(){return this._muted}resolveMode(){let e=this.getAttribute("mode");if(e)return e;try{return new URLSearchParams(location.search).get("mode")}catch{return null}}static get observedAttributes(){return["sound","mode"]}attributeChangedCallback(){this.controller&&this.render()}connectedCallback(){this.disconnected=!1,this.initInFlight=!1,this.initGeneration+=1,this.tabIndex=0,window.addEventListener("keydown",this.onKey),this.addEventListener("touchstart",this.onTouchStart,{passive:!0}),this.addEventListener("touchend",this.onTouchEnd),window.addEventListener("message",this.onMessage),document.addEventListener("fullscreenchange",this.onFsChange),this.initChannel(),this.observeInteractivePlayers(),this.initTimer=setTimeout(()=>{this.initTimer=null,this.isConnected&&!this.disconnected&&(this.ensureInteractivePlayers(),this.init())},0)}disconnectedCallback(){this.disconnected=!0,this.initGeneration+=1,this.autoplayToken++,this.initTimer!==null&&(clearTimeout(this.initTimer),this.initTimer=null),this.initRetry!==null&&(document.removeEventListener("DOMContentLoaded",this.initRetry),this.initRetry=null),window.removeEventListener("keydown",this.onKey),this.detachIframeKeys?.(),this.removeEventListener("touchstart",this.onTouchStart),this.removeEventListener("touchend",this.onTouchEnd),window.removeEventListener("message",this.onMessage),document.removeEventListener("fullscreenchange",this.onFsChange),this.offChange?.(),this.offChange=null,this.controller?.dispose?.(),this.controller=null,this.chrome=null,this.channel?.destroy(),this.channel=null,this.mediaWireInterval!==null&&(clearInterval(this.mediaWireInterval),this.mediaWireInterval=null),this.playerObserver!==null&&(this.playerObserver.disconnect(),this.playerObserver=null),this.ownedMedia.clear(),this.audienceMediaUnlockButton?.remove(),this.audienceMediaUnlockButton=null,this.audienceMutedPlaybackKeys.clear(),this.blockedAudienceMedia.clear(),this.presenterInterval!==null&&(clearInterval(this.presenterInterval),this.presenterInterval=null),this.clearPresenterPositionTimers()}__setControllerForTest(e){this.bindController(e)}present(){if(this.resolveMode()==="audience"||this.getAttribute("data-hf-presenting")==="true")return;let e=new URL(location.href);if(e.searchParams.set("mode","audience"),!this.openAudienceTab(e.href)){console.warn("[hyperframes-slideshow] present(): browser blocked the audience tab");return}this.setAttribute("data-hf-presenting","true"),this.postCurrentPresenterPositionBurst(),this.presenterStartMs=Date.now(),this.presenterInterval===null&&(this.presenterInterval=setInterval(()=>this.updateElapsed(),1e3)),this.render()}openAudienceTab(e){let t=navigator.userActivation;if(t&&t.isActive===!1)return!1;let i=document.createElement("a");return i.href=e,i.target="_blank",i.rel="noopener noreferrer",i.style.display="none",(document.body??document.documentElement).appendChild(i),i.click(),i.remove(),!0}updateElapsed(){if(this.presenterStartMs===null)return;let e=this.chrome?.querySelector("[data-hf-presenter-elapsed]");e&&(e.textContent=T(Math.floor((Date.now()-this.presenterStartMs)/1e3)))}initChannel(){this.resolveMode()==="audience"?this.channel=new m("audience",t=>{this.controller&&this.controller.syncTo?.(t.sequenceId,t.slideIndex,t.fragmentIndex)},this.onRemoteMedia):this.channel=new m("presenter",()=>{},this.onRemoteMedia)}async init(){if(this.initInFlight)return;this.initInFlight=!0;let e=this.initGeneration;try{let t=_(this);if(t.kind==="incomplete"){this.retryInitWhenParsed(e);return}let{player:i,manifest:r}=t;if(this.renderInitialChrome(r),!Se(i)||(await $e(i),e!==this.initGeneration))return;this.attachIframeKeyForwarding(i);let s=await Re(i,2500,()=>e!==this.initGeneration);if(e!==this.initGeneration)return;let{resolved:a,errors:d}=L(r,s);d.length>0&&console.warn("[hyperframes-slideshow] manifest errors:",d);let o=K(a);o.slides.length===0&&r.slides.length>0&&console.error("[hyperframes-slideshow] no main-line slides resolved \u2014 the scene timeline may not have loaded in time, or sceneIds/timing are invalid:",d);let l={seek:u=>i.seek(u),play:()=>i.play(),pause:()=>i.pause(),stopMedia:()=>{i.stopMedia?.(),this.stopDocumentMedia()},playSceneMedia:u=>this.playSceneDocumentMedia(u),get currentTime(){return i.currentTime},onTimeUpdate:u=>{let p=c=>{let M=c.detail;u(M.currentTime)};return i.addEventListener("timeupdate",p),()=>i.removeEventListener("timeupdate",p)}};this.bindController(new y(l,o)),s.length===0&&r.slides.length>0&&i.addEventListener("scenes",()=>{e===this.initGeneration&&this.init()},{once:!0})}finally{this.initInFlight=!1}}retryInitWhenParsed(e){if(this.initRetry!==null||!B(document.readyState))return;let t=()=>{this.initRetry=null,e===this.initGeneration&&this.isConnected&&!this.disconnected&&this.init()};this.initRetry=t,document.addEventListener("DOMContentLoaded",t,{once:!0})}renderInitialChrome(e){if(this.controller||e.slides.length===0)return;let t={index:1,total:e.slides.length};if(this.resolveMode()==="audience"){this.paintChrome(this.buildNavCluster(t,"28px","fs-only"));return}this.paintChrome(this.buildNavCluster(t,"28px","full",{canPrev:!1,canNext:e.slides.length>1,loading:e.slides.length>1}))}bindController(e){this.offChange?.(),this.controller?.dispose?.(),this.controller=e,this.startMediaSync(),this.offChange=e.onChange(()=>{this.resolveMode()!=="audience"&&this.channel&&this.channel.postPosition(e.position),this.render()}),this.resolveMode()!=="audience"&&this.channel&&this.channel.postPosition(e.position),this.render()}postCurrentPresenterPosition(){this.resolveMode()==="audience"||!this.channel||!this.controller||this.channel.postPosition(this.controller.position)}postCurrentPresenterPositionBurst(){this.clearPresenterPositionTimers(),this.postCurrentPresenterPosition();for(let e of[250,750,1500,3e3,5e3]){let t=setTimeout(()=>{this.presenterPositionTimers=this.presenterPositionTimers.filter(i=>i!==t),this.postCurrentPresenterPosition()},e);this.presenterPositionTimers.push(t)}}clearPresenterPositionTimers(){for(let e of this.presenterPositionTimers)clearTimeout(e);this.presenterPositionTimers=[]}startMediaSync(){this.wireSlideshowMedia(),this.mediaWireInterval===null&&(this.mediaWireInterval=setInterval(()=>this.wireSlideshowMedia(),1e3))}mediaPlayerElements(){return Array.from(this.querySelectorAll("hyperframes-player")).filter(e=>e instanceof HTMLElement)}ensureInteractivePlayers(){for(let e of this.querySelectorAll("hyperframes-player"))e.hasAttribute("interactive")||e.setAttribute("interactive","")}observeInteractivePlayers(){typeof MutationObserver>"u"||this.playerObserver===null&&(this.playerObserver=new MutationObserver(()=>this.ensureInteractivePlayers()),this.playerObserver.observe(this,{childList:!0,subtree:!0}))}attachIframeKeyForwarding(e){let t=e.iframeElement;if(!(t instanceof HTMLIFrameElement)||t===this.keyForwardFrame)return;this.detachIframeKeys?.();let i=()=>{try{t.contentWindow?.addEventListener("keydown",this.onKey)}catch{this.warnIframeKeyForwardingUnavailable()}};i(),t.addEventListener("load",i),this.keyForwardFrame=t,this.detachIframeKeys=()=>{t.removeEventListener("load",i);try{t.contentWindow?.removeEventListener("keydown",this.onKey)}catch{this.warnIframeKeyForwardingUnavailable()}this.keyForwardFrame=null,this.detachIframeKeys=null}}warnIframeKeyForwardingUnavailable(){this.warnedIframeKeyForwardingUnavailable||(this.warnedIframeKeyForwardingUnavailable=!0,console.warn("[hyperframes-slideshow] iframe keyboard forwarding is unavailable for this composition, likely because the player iframe is cross-origin. Arrow shortcuts work when focus is outside the iframe."))}playerFrameDocument(e){let t=e.iframeElement;if(!(t instanceof HTMLIFrameElement))return null;try{return t.contentDocument}catch{return null}}mediaKey(e,t,i,r){let s=e.id?`player-id:${e.id}`:`player:${t}`,a=i.id?`id:${i.id}`:`${i.tagName.toLowerCase()}:${r}`;return`${s}|${a}`}mediaEntries(){let e=[];return this.mediaPlayerElements().forEach((t,i)=>{let r=this.playerFrameDocument(t);r&&Array.from(r.querySelectorAll("video,audio")).filter(Ce).forEach((s,a)=>{e.push({key:this.mediaKey(t,i,s,a),el:s})})}),e}wireSlideshowMedia(){let e=this.ownedMedia.sync(this.mediaEntries());for(let t of e)t.muted=this._muted||t.defaultMuted}publishMediaState(e,t,i){if(!(this.applyingRemoteMedia||this.resolveMode()==="audience"||!this.channel)){if(i==="timeupdate"){let r=performance.now();if(r-this.lastMediaTimeBroadcastMs<450&&!e.paused)return;this.lastMediaTimeBroadcastMs=r}this.channel.postMedia({key:t,action:i,currentTime:v(e.currentTime,0),paused:e.paused,ended:e.ended,muted:e.muted,volume:v(e.volume,1),playbackRate:v(e.playbackRate,1)})}}onRemoteMedia=e=>{if(this.resolveMode()!=="audience")return;if(this.blockedAudienceMedia.has(e.key)&&e.action==="timeupdate"){this.blockedAudienceMedia.set(e.key,e),this.showAudienceMediaUnlock();return}this.wireSlideshowMedia();let t=this.mediaEntries().find(i=>i.key===e.key);if(t){this.applyingRemoteMedia=!0;try{this.applyRemoteMedia(t.el,e)}finally{setTimeout(()=>{this.applyingRemoteMedia=!1},300)}}};applyRemoteMedia(e,t){if(t.action==="pause"||t.action==="ended"){this.audienceMutedPlaybackKeys.delete(t.key),this.blockedAudienceMedia.delete(t.key),this.syncRemoteMediaState(e,t,!0),e.pause(),this.hideAudienceMediaUnlockIfClear();return}if(t.action==="play"||t.action==="timeupdate"&&t.paused===!1&&e.paused){this.playAudienceMediaMuted(e,t);return}this.syncRemoteMediaState(e,t,!0)}syncRemoteMediaState(e,t,i){e.playbackRate=v(t.playbackRate,1),e.volume=Math.max(0,Math.min(1,v(t.volume,1))),e.muted=this.audienceMutedPlaybackKeys.has(t.key)?!0:t.muted,i&&Number.isFinite(t.currentTime)&&Math.abs((e.currentTime||0)-t.currentTime)>.35&&(e.currentTime=Math.max(0,t.currentTime))}playAudienceMediaMuted(e,t){this.audienceMutedPlaybackKeys.add(t.key),this.syncRemoteMediaState(e,t,!0),e.muted=!0;try{e.play().then(()=>{this.blockedAudienceMedia.delete(t.key),this.hideAudienceMediaUnlockIfClear()}).catch(()=>{this.blockedAudienceMedia.set(t.key,t),this.showAudienceMediaUnlock()})}catch{this.blockedAudienceMedia.set(t.key,t),this.showAudienceMediaUnlock()}}retryBlockedAudienceMedia=()=>{this.wireSlideshowMedia();let e=new Map(this.mediaEntries().map(t=>[t.key,t.el]));for(let[t,i]of this.blockedAudienceMedia){let r=e.get(t);r&&this.playAudienceMediaMuted(r,i)}};showAudienceMediaUnlock(){if(this.resolveMode()!=="audience"||this.audienceMediaUnlockButton)return;let e=document.createElement("button");e.type="button",e.textContent="Play audience media muted",e.style.cssText="position:fixed;left:50%;bottom:96px;transform:translateX(-50%);z-index:100000;border:0;border-radius:999px;padding:12px 18px;background:#fff;color:#111827;box-shadow:0 10px 32px rgba(0,0,0,.28);font:700 14px/1 system-ui,sans-serif;cursor:pointer;pointer-events:auto;",e.addEventListener("click",this.retryBlockedAudienceMedia),this.appendChild(e),this.audienceMediaUnlockButton=e}hideAudienceMediaUnlockIfClear(){this.blockedAudienceMedia.size>0||!this.audienceMediaUnlockButton||(this.audienceMediaUnlockButton.remove(),this.audienceMediaUnlockButton=null)}onKey=e=>{if(ke(e.target))return;let t=document.activeElement,i=t===this||this.contains(t),r=document.querySelectorAll("hyperframes-slideshow").length>1,s=i||!r&&(t===document.body||t===null);if((e.key==="p"||e.key==="P")&&!e.metaKey&&!e.ctrlKey&&!e.altKey){if(!s||!this.shouldShowPresentControl())return;this.present(),e.preventDefault();return}if(this.controller){if(e.key==="ArrowRight"){if(!s)return;this.controller.next(),e.preventDefault()}else if(e.key==="ArrowLeft"){if(!s)return;this.controller.prev(),e.preventDefault()}else if(e.key===" "){if(!i)return;this.controller.next(),e.preventDefault()}else if(e.key==="Backspace"){if(!i)return;this.controller.prev(),e.preventDefault()}else if((e.key==="f"||e.key==="F")&&!e.metaKey&&!e.ctrlKey&&!e.altKey){if(!i)return;this.toggleFullscreen(),e.preventDefault()}}};onMessage=e=>{if(e.source!==window.parent&&e.source!==window||this.resolveMode()==="audience")return;let t=e.data;!t||!this.controller||(t.type==="next"?this.controller.next():t.type==="prev"?this.controller.prev():t.type==="goto"&&typeof t.slideIndex=="number"?this.controller.goToSlide?.(t.slideIndex):t.type==="back"&&this.controller.back?.())};onTouchStart=e=>{let t=e.touches[0];t&&(this.touchStartX=t.clientX,this.touchStartY=t.clientY)};onTouchEnd=e=>{if(!this.controller)return;let t=e.changedTouches[0];if(!t)return;let i=t.clientX-this.touchStartX,r=t.clientY-this.touchStartY;Math.abs(i)<=40||Math.abs(i)<=Math.abs(r)||(i<0?this.controller.next():this.controller.prev())};render(){if(!this.controller)return;if(this.resolveMode()==="audience"){let{counter:r}=this.controller;this.paintChrome(this.buildNavCluster(r,"28px","fs-only"));return}if(this.getAttribute("data-hf-presenting")==="true"){this.renderPresenter();return}let{counter:e,currentSlide:t}=this.controller;if(!t)return;let i=t.hotspots.map(r=>{let s=r.region?`left:${r.region.x}%;top:${r.region.y}%;`:"right:5%;bottom:18%;";return`<button
81
81
  class="hf-hotspot-pill"
82
82
  data-hotspot-id="${h(r.id)}"
83
83
  data-hotspot-target="${h(r.target)}"
84
84
  type="button"
85
85
  style="position:absolute;${s}display:inline-flex;align-items:center;gap:6px;padding:8px 14px;background:var(--hf-slideshow-accent,rgba(255,255,255,0.92));color:#111;border:none;border-radius:999px;font-size:13px;font-weight:600;letter-spacing:0.01em;cursor:pointer;pointer-events:auto;box-shadow:0 4px 16px rgba(0,0,0,0.35);animation:hf-hotspot-pulse 1.8s ease-in-out infinite;white-space:nowrap;"
86
86
  aria-label="${h(r.label)}"
87
- ><span aria-hidden="true" style="font-size:14px;line-height:1;">\u2295</span>${h(r.label)}</button>`}).join("");this.paintChrome(n+this.buildNavCluster(e,"28px"))}paintChrome(e){ke(),this.chrome||(this.chrome=document.createElement("div"),this.chrome.setAttribute("data-hf-chrome",""),this.appendChild(this.chrome)),this.chrome.style.cssText="position:absolute;inset:0;pointer-events:none;z-index:10;",this.chrome.innerHTML=e,this.wireChromeButtons()}buildNavCluster(e,t,n="full",r={}){let s=this.controller,a=r.canPrev??s?.canPrev??!0,d=r.canNext??s?.canNext??!0,o=r.loading===!0&&d,l=this.hasAttribute("sound"),u="display:flex;align-items:center;justify-content:center;width:34px;height:34px;background:transparent;border:none;border-radius:999px;color:rgba(255,255,255,0.85);font-size:16px;cursor:pointer;transition:background 0.15s,color 0.15s;padding:0;",M=l?`<button
87
+ ><span aria-hidden="true" style="font-size:14px;line-height:1;">\u2295</span>${h(r.label)}</button>`}).join("");this.paintChrome(i+this.buildNavCluster(e,"28px"))}paintChrome(e){Ee(),this.chrome||(this.chrome=document.createElement("div"),this.chrome.setAttribute("data-hf-chrome",""),this.appendChild(this.chrome)),this.chrome.style.cssText="position:absolute;inset:0;pointer-events:none;z-index:10;",this.chrome.innerHTML=e,this.wireChromeButtons()}buildNavCluster(e,t,i="full",r={}){let s=this.controller,a=r.canPrev??s?.canPrev??!0,d=r.canNext??s?.canNext??!0,o=r.loading===!0&&d,l=this.hasAttribute("sound"),u="display:flex;align-items:center;justify-content:center;width:34px;height:34px;background:transparent;border:none;border-radius:999px;color:rgba(255,255,255,0.85);font-size:16px;cursor:pointer;transition:background 0.15s,color 0.15s;padding:0;",M=l?`<button
88
88
  data-hf-mute
89
89
  type="button"
90
90
  aria-label="${this._muted?"Unmute":"Mute"}"
@@ -92,58 +92,58 @@
92
92
  data-hf-tooltip="${this._muted?"Unmute":"Mute"}"
93
93
  aria-pressed="${this._muted?"true":"false"}"
94
94
  style="${u}${this._muted?"color:rgba(255,255,255,0.45);":""}"
95
- >${this._muted?'<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"/><line x1="23" y1="9" x2="17" y2="15"/><line x1="17" y1="9" x2="23" y2="15"/></svg>':'<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"/><path d="M15.54 8.46a5 5 0 0 1 0 7.07"/><path d="M19.07 4.93a10 10 0 0 1 0 14.14"/></svg>'}</button>`:"",K=a?`<button
95
+ >${this._muted?'<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"/><line x1="23" y1="9" x2="17" y2="15"/><line x1="17" y1="9" x2="23" y2="15"/></svg>':'<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"/><path d="M15.54 8.46a5 5 0 0 1 0 7.07"/><path d="M19.07 4.93a10 10 0 0 1 0 14.14"/></svg>'}</button>`:"",D=a?`<button
96
96
  data-hf-prev
97
97
  type="button"
98
98
  aria-label="Previous slide"
99
99
  title="Previous slide"
100
100
  data-hf-tooltip="Previous slide"
101
- style="${u}" >&#8249;</button>`:"",D=o?`<span
101
+ style="${u}" >&#8249;</button>`:"",U=o?`<span
102
102
  data-hf-nav-loading
103
103
  role="status"
104
104
  aria-label="Loading slides"
105
105
  title="Loading slides"
106
106
  style="${u}cursor:progress;color:rgba(255,255,255,0.72);"
107
- ><span class="hf-nav-spinner" aria-hidden="true" style="width:14px;height:14px;border:2px solid rgba(255,255,255,0.32);border-top-color:rgba(255,255,255,0.92);border-radius:999px;animation:hf-nav-spin 0.8s linear infinite;"></span></span>`:"",U=o?D:d?`<button
107
+ ><span class="hf-nav-spinner" aria-hidden="true" style="width:14px;height:14px;border:2px solid rgba(255,255,255,0.32);border-top-color:rgba(255,255,255,0.92);border-radius:999px;animation:hf-nav-spin 0.8s linear infinite;"></span></span>`:"",z=o?U:d?`<button
108
108
  data-hf-next
109
109
  type="button"
110
110
  aria-label="Next slide"
111
111
  title="Next slide"
112
112
  data-hf-tooltip="Next slide"
113
- style="${u}" >&#8250;</button>`:"",z=this.shouldShowPresentControl()?`<button
113
+ style="${u}" >&#8250;</button>`:"",G=this.shouldShowPresentControl()?`<button
114
114
  data-hf-present
115
115
  type="button"
116
116
  aria-label="Present"
117
117
  title="Present"
118
118
  data-hf-tooltip="Present"
119
- style="${u}" >${Se}</button>`:"",x=document.fullscreenElement===this,w=x?"Exit full screen":"Full screen",E=`<button
119
+ style="${u}" >${Ie}</button>`:"",x=document.fullscreenElement===this,w=x?"Exit full screen":"Full screen",I=`<button
120
120
  data-hf-fullscreen
121
121
  type="button"
122
122
  aria-label="${w}"
123
123
  title="${w}"
124
124
  data-hf-tooltip="${w}"
125
125
  aria-pressed="${x?"true":"false"}"
126
- style="${u}" >${x?q:H}</button>`;if(n==="fs-only")return`
126
+ style="${u}" >${x?O:q}</button>`;if(i==="fs-only")return`
127
127
  <div
128
128
  data-hf-nav-cluster
129
129
  style="position:absolute;bottom:${t};right:32px;display:inline-flex;align-items:center;background:rgba(20,20,22,0.55);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,0.12);border-radius:999px;box-shadow:0 4px 24px rgba(0,0,0,0.45);padding:4px;pointer-events:auto;"
130
- >${E}</div>`;let G=a?"4px":"10px",W=d?"4px":"10px";return`
130
+ >${I}</div>`;let W=a?"4px":"10px",j=d?"4px":"10px";return`
131
131
  <div
132
132
  data-hf-nav-cluster
133
133
  style="position:absolute;bottom:${t};right:32px;display:inline-flex;align-items:center;gap:2px;background:rgba(20,20,22,0.55);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,0.12);border-radius:999px;box-shadow:0 4px 24px rgba(0,0,0,0.45);padding:4px;pointer-events:auto;"
134
134
  >
135
135
  ${M}
136
136
  ${l?'<span aria-hidden="true" style="width:1px;height:20px;background:rgba(255,255,255,0.12);margin:0 2px;flex-shrink:0;"></span>':""}
137
- ${K}
137
+ ${D}
138
138
  <span
139
139
  data-hf-counter
140
140
  aria-label="Slide ${e.index} of ${e.total}"
141
- style="min-width:46px;text-align:center;color:rgba(255,255,255,0.9);font-family:${Te};font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:0;padding:0 ${W} 0 ${G};user-select:none;"
141
+ style="min-width:46px;text-align:center;color:rgba(255,255,255,0.9);font-family:${Pe};font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:0;padding:0 ${j} 0 ${W};user-select:none;"
142
142
  >${e.index}&thinsp;/&thinsp;${e.total}</span>
143
- ${U}
144
- <span aria-hidden="true" style="width:1px;height:20px;background:rgba(255,255,255,0.12);margin:0 2px;flex-shrink:0;"></span>
145
143
  ${z}
146
- ${E}
147
- </div>`}wireChromeButtons(){let e=this.chrome;e&&(this.wireChromeClick(e,"[data-hf-mute]",()=>this.toggleMute()),this.wireChromeClick(e,"[data-hf-prev]",()=>this.controller?.prev()),this.wireChromeClick(e,"[data-hf-next]",()=>this.controller?.next()),this.wireChromeClick(e,"[data-hf-present]",()=>this.present()),this.wireChromeClick(e,"[data-hf-fullscreen]",()=>this.toggleFullscreen()),this.wirePresenterNotes(e),this.wireHotspots(e))}wireChromeClick(e,t,n){let r=e.querySelector(t);r&&r.addEventListener("click",n)}wirePresenterNotes(e){let t=e.querySelector("[data-hf-presenter-notes]");if(t instanceof HTMLTextAreaElement){let n=t.getAttribute("data-hf-presenter-notes-key");t.addEventListener("input",()=>this.writePresenterNotes(n,t.value))}}wireHotspots(e){for(let t of e.querySelectorAll("[data-hotspot-id]")){let n=t.getAttribute("data-hotspot-target")??"";t.addEventListener("click",()=>this.controller?.enterBranch?.(n))}}onFsChange=()=>{let e=this.chrome?.querySelector("[data-hf-fullscreen]");if(!e)return;let t=document.fullscreenElement===this;e.innerHTML=t?q:H;let n=t?"Exit full screen":"Full screen";e.setAttribute("aria-label",n),e.setAttribute("title",n),e.setAttribute("data-hf-tooltip",n),e.setAttribute("aria-pressed",t?"true":"false")};toggleFullscreen(){document.fullscreenElement===this?document.exitFullscreen().catch(()=>{}):this.requestFullscreen().catch(()=>{})}shouldShowPresentControl(){return this.resolveMode()!=="audience"&&this.getAttribute("data-hf-presenting")!=="true"}toggleMute(){this._muted=!this._muted,this._muted?this.setAttribute("data-hf-muted",""):this.removeAttribute("data-hf-muted"),this.applyGlobalMute(this._muted),this.dispatchEvent(new CustomEvent("hf-sound",{detail:{muted:this._muted},bubbles:!0,composed:!0})),this.render()}applyGlobalMute(e){for(let t of this.querySelectorAll("hyperframes-player")){if(!(t instanceof HTMLElement))continue;let n=t;"muted"in n?n.muted=e:e?n.setAttribute("muted",""):n.removeAttribute("muted")}this.ownedMedia.sync(this.mediaEntries()),this.ownedMedia.setMuted(e)}stopDocumentMedia(){this.autoplayToken++,this.ownedMedia.sync(this.mediaEntries()),this.ownedMedia.pauseAll()}playSceneDocumentMedia(e){if(this.resolveMode()==="audience")return;let t=e.replace(/["\\]/g,"\\$&"),n=++this.autoplayToken,r={started:!1,lastTime:-1,advancingTicks:0,waited:0,warned:!1},s=()=>{if(n!==this.autoplayToken)return;let a=this.stepAutoplay(t,r);r.waited+=F,!a&&r.waited<=ge&&window.setTimeout(s,F)};s()}findSceneVideo(e){for(let t of this.mediaPlayerElements()){let r=this.playerFrameDocument(t)?.querySelector(`[data-composition-id="${e}"] video`)??null;if(r instanceof HTMLVideoElement)return r}return null}stepAutoplay(e,t){let n=this.findSceneVideo(e);if(!n)return!1;if(!t.started){t.started=!0,n.muted=this._muted||n.defaultMuted;try{n.currentTime=0}catch{}}let r=!n.paused&&n.currentTime>t.lastTime;return t.lastTime=n.currentTime,r?++t.advancingTicks>=2:(t.advancingTicks=0,n.play().catch(s=>{let a=s instanceof DOMException?s.name:"";a!=="AbortError"&&a!=="NotAllowedError"&&!t.warned&&(t.warned=!0,console.warn("[hyperframes-slideshow] autoplay play() failed:",s))}),!1)}presenterNotesDeckKey(){let e=this.getAttribute("notes-storage-key")?.trim();if(e)return e;let t=this.querySelector("hyperframes-player")?.getAttribute("src")??"",n=t;try{let a=typeof location<"u"?location.href:"http://localhost/";n=new URL(t,a).href}catch{}let r=typeof location<"u"?`${location.origin}${location.pathname}`:"",s=this.ownerDocument.title;return`${r}|${s}|${n}`}presenterNotesStorageKey(e){let t=this.controller?.position;return t?`${we}${JSON.stringify([this.presenterNotesDeckKey(),t.sequenceId,t.slideIndex,e.sceneId??""])}`:null}readPresenterNotes(e){if(!e||typeof window>"u")return null;try{return window.localStorage.getItem(e)}catch{return null}}writePresenterNotes(e,t){if(e&&!(typeof window>"u"))try{window.localStorage.setItem(e,t)}catch{}}renderPresenter(){if(!this.controller)return;let{counter:e,currentSlide:t,nextSlide:n}=this.controller;if(!t)return;let r=this.presenterStartMs!==null?Math.floor((Date.now()-this.presenterStartMs)/1e3):0,s=this.querySelector("hyperframes-player");s instanceof HTMLElement&&(s.style.top="0",s.style.bottom="32%",s.style.height="auto");let a=this.presenterNotesStorageKey(t),d=this.readPresenterNotes(a)??t.notes??"";this.paintChrome(R({notes:d,notesStorageKey:a,nextText:Ee(n),counterText:`${e.index} / ${e.total}`,elapsedText:S(r),hotspots:t.hotspots})+this.buildNavCluster(e,"calc(32% + 18px)"))}};function Ee(i){if(i===null)return"End of sequence";let e=i.notes!=null?i.notes.split(`
148
- `)[0]??"":"";return e.length>0?`${h(i.sceneId)}: ${h(e)}`:h(i.sceneId)}function Ie(i){let e=i.ownerDocument.defaultView;return!e||typeof e.HTMLMediaElement!="function"?!1:i instanceof e.HTMLMediaElement}function v(i,e){return Number.isFinite(i)?i:e}function T(i){return"scenes"in i&&Array.isArray(i.scenes)?i.scenes:[]}var Pe=5e3;function Ae(i){return i.ready===!0?Promise.resolve():new Promise(e=>{let t=null,n=()=>{t!==null&&(clearTimeout(t),t=null),e()};i.addEventListener("ready",n,{once:!0}),t=setTimeout(()=>{i.removeEventListener("ready",n),e()},Pe)})}function Ce(i,e,t=()=>!1){let n=T(i);if(n.length>0)return Promise.resolve(n);let r=Math.ceil(e/100);return new Promise(s=>{let a=!1,d=null,o=0,l=c=>{a||(a=!0,d!==null&&clearTimeout(d),i.removeEventListener("scenes",u),s(c))},u=()=>{if(t())return l([]);let c=T(i);c.length>0&&l(c)},p=()=>{if(a)return;if(t())return l([]);let c=T(i);if(c.length>0)return l(c);if(o+=1,o>=r)return l([]);d=setTimeout(p,100)};i.addEventListener("scenes",u),d=setTimeout(p,100)})}function B(i){let e=r=>r.end>r.start,t=i.slides.filter(e),n={};for(let[r,s]of Object.entries(i.sequences))n[r]={...s,slides:s.slides.filter(e)};return{slides:t,sequences:n}}function h(i){return i.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}customElements.get("hyperframes-slideshow")||customElements.define("hyperframes-slideshow",b);return Q(Le);})();
144
+ <span aria-hidden="true" style="width:1px;height:20px;background:rgba(255,255,255,0.12);margin:0 2px;flex-shrink:0;"></span>
145
+ ${G}
146
+ ${I}
147
+ </div>`}wireChromeButtons(){let e=this.chrome;e&&(this.wireChromeClick(e,"[data-hf-mute]",()=>this.toggleMute()),this.wireChromeClick(e,"[data-hf-prev]",()=>this.controller?.prev()),this.wireChromeClick(e,"[data-hf-next]",()=>this.controller?.next()),this.wireChromeClick(e,"[data-hf-present]",()=>this.present()),this.wireChromeClick(e,"[data-hf-fullscreen]",()=>this.toggleFullscreen()),this.wirePresenterNotes(e),this.wireHotspots(e))}wireChromeClick(e,t,i){let r=e.querySelector(t);r&&r.addEventListener("click",i)}wirePresenterNotes(e){let t=e.querySelector("[data-hf-presenter-notes]");if(t instanceof HTMLTextAreaElement){let i=t.getAttribute("data-hf-presenter-notes-key");t.addEventListener("input",()=>this.writePresenterNotes(i,t.value))}}wireHotspots(e){for(let t of e.querySelectorAll("[data-hotspot-id]")){let i=t.getAttribute("data-hotspot-target")??"";t.addEventListener("click",()=>this.controller?.enterBranch?.(i))}}onFsChange=()=>{let e=this.chrome?.querySelector("[data-hf-fullscreen]");if(!e)return;let t=document.fullscreenElement===this;e.innerHTML=t?O:q;let i=t?"Exit full screen":"Full screen";e.setAttribute("aria-label",i),e.setAttribute("title",i),e.setAttribute("data-hf-tooltip",i),e.setAttribute("aria-pressed",t?"true":"false")};toggleFullscreen(){document.fullscreenElement===this?document.exitFullscreen().catch(()=>{}):this.requestFullscreen().catch(()=>{})}shouldShowPresentControl(){return this.resolveMode()!=="audience"&&this.getAttribute("data-hf-presenting")!=="true"}toggleMute(){this._muted=!this._muted,this._muted?this.setAttribute("data-hf-muted",""):this.removeAttribute("data-hf-muted"),this.applyGlobalMute(this._muted),this.dispatchEvent(new CustomEvent("hf-sound",{detail:{muted:this._muted},bubbles:!0,composed:!0})),this.render()}applyGlobalMute(e){for(let t of this.querySelectorAll("hyperframes-player")){if(!(t instanceof HTMLElement))continue;let i=t;"muted"in i?i.muted=e:e?i.setAttribute("muted",""):i.removeAttribute("muted")}this.ownedMedia.sync(this.mediaEntries()),this.ownedMedia.setMuted(e)}stopDocumentMedia(){this.autoplayToken++,this.ownedMedia.sync(this.mediaEntries()),this.ownedMedia.pauseAll()}playSceneDocumentMedia(e){if(this.resolveMode()==="audience")return;let t=e.replace(/["\\]/g,"\\$&"),i=++this.autoplayToken,r={started:!1,lastTime:-1,advancingTicks:0,waited:0,warned:!1},s=()=>{if(i!==this.autoplayToken)return;let a=this.stepAutoplay(t,r);r.waited+=H,!a&&r.waited<=xe&&window.setTimeout(s,H)};s()}findSceneVideo(e){for(let t of this.mediaPlayerElements()){let r=this.playerFrameDocument(t)?.querySelector(`[data-composition-id="${e}"] video`)??null;if(r instanceof HTMLVideoElement)return r}return null}stepAutoplay(e,t){let i=this.findSceneVideo(e);if(!i)return!1;if(!t.started){t.started=!0,i.muted=this._muted||i.defaultMuted;try{i.currentTime=0}catch{}}let r=!i.paused&&i.currentTime>t.lastTime;return t.lastTime=i.currentTime,r?++t.advancingTicks>=2:(t.advancingTicks=0,i.play().catch(s=>{let a=s instanceof DOMException?s.name:"";a!=="AbortError"&&a!=="NotAllowedError"&&!t.warned&&(t.warned=!0,console.warn("[hyperframes-slideshow] autoplay play() failed:",s))}),!1)}presenterNotesDeckKey(){let e=this.getAttribute("notes-storage-key")?.trim();if(e)return e;let t=this.querySelector("hyperframes-player")?.getAttribute("src")??"",i=t;try{let a=typeof location<"u"?location.href:"http://localhost/";i=new URL(t,a).href}catch{}let r=typeof location<"u"?`${location.origin}${location.pathname}`:"",s=this.ownerDocument.title;return`${r}|${s}|${i}`}presenterNotesStorageKey(e){let t=this.controller?.position;return t?`${Te}${JSON.stringify([this.presenterNotesDeckKey(),t.sequenceId,t.slideIndex,e.sceneId??""])}`:null}readPresenterNotes(e){if(!e||typeof window>"u")return null;try{return window.localStorage.getItem(e)}catch{return null}}writePresenterNotes(e,t){if(e&&!(typeof window>"u"))try{window.localStorage.setItem(e,t)}catch{}}renderPresenter(){if(!this.controller)return;let{counter:e,currentSlide:t,nextSlide:i}=this.controller;if(!t)return;let r=this.presenterStartMs!==null?Math.floor((Date.now()-this.presenterStartMs)/1e3):0,s=this.querySelector("hyperframes-player");s instanceof HTMLElement&&(s.style.top="0",s.style.bottom="32%",s.style.height="auto");let a=this.presenterNotesStorageKey(t),d=this.readPresenterNotes(a)??t.notes??"";this.paintChrome(F({notes:d,notesStorageKey:a,nextText:Ae(i),counterText:`${e.index} / ${e.total}`,elapsedText:T(r),hotspots:t.hotspots})+this.buildNavCluster(e,"calc(32% + 18px)"))}};function Ae(n){if(n===null)return"End of sequence";let e=n.notes!=null?n.notes.split(`
148
+ `)[0]??"":"";return e.length>0?`${h(n.sceneId)}: ${h(e)}`:h(n.sceneId)}function Ce(n){let e=n.ownerDocument.defaultView;return!e||typeof e.HTMLMediaElement!="function"?!1:n instanceof e.HTMLMediaElement}function v(n,e){return Number.isFinite(n)?n:e}function E(n){return"scenes"in n&&Array.isArray(n.scenes)?n.scenes:[]}var Le=5e3;function $e(n){return n.ready===!0?Promise.resolve():new Promise(e=>{let t=null,i=()=>{t!==null&&(clearTimeout(t),t=null),e()};n.addEventListener("ready",i,{once:!0}),t=setTimeout(()=>{n.removeEventListener("ready",i),e()},Le)})}function Re(n,e,t=()=>!1){let i=E(n);if(i.length>0)return Promise.resolve(i);let r=Math.ceil(e/100);return new Promise(s=>{let a=!1,d=null,o=0,l=c=>{a||(a=!0,d!==null&&clearTimeout(d),n.removeEventListener("scenes",u),s(c))},u=()=>{if(t())return l([]);let c=E(n);c.length>0&&l(c)},p=()=>{if(a)return;if(t())return l([]);let c=E(n);if(c.length>0)return l(c);if(o+=1,o>=r)return l([]);d=setTimeout(p,100)};n.addEventListener("scenes",u),d=setTimeout(p,100)})}function K(n){let e=r=>r.end>r.start,t=n.slides.filter(e),i={};for(let[r,s]of Object.entries(n.sequences))i[r]={...s,slides:s.slides.filter(e)};return{slides:t,sequences:i}}function h(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}customElements.get("hyperframes-slideshow")||customElements.define("hyperframes-slideshow",b);return Z(Fe);})();
149
149
  //# sourceMappingURL=hyperframes-slideshow.global.js.map
@@ -6,16 +6,16 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveProject
9
- } from "./chunk-LJAU4TPS.js";
9
+ } from "./chunk-KFKZ3ISO.js";
10
10
  import {
11
11
  formatBytes,
12
12
  label
13
- } from "./chunk-IHFUKJOR.js";
13
+ } from "./chunk-K2FLNJVB.js";
14
14
  import {
15
15
  ensureDOMParser
16
- } from "./chunk-PFCFR3KZ.js";
17
- import "./chunk-XGMNQQTJ.js";
18
- import "./chunk-LBKDQKWV.js";
16
+ } from "./chunk-442JNXRM.js";
17
+ import "./chunk-RG3QWWIE.js";
18
+ import "./chunk-XU5GGV6R.js";
19
19
  import "./chunk-VWG7OQKU.js";
20
20
  import "./chunk-GQJZORQP.js";
21
21
  import "./chunk-AMKC3AXA.js";
@@ -25,31 +25,32 @@ import {
25
25
  import "./chunk-54HJ63Q2.js";
26
26
  import "./chunk-PBN6GBJE.js";
27
27
  import "./chunk-USDEMXXL.js";
28
- import "./chunk-YFT3BL7N.js";
28
+ import "./chunk-3VYNNWVA.js";
29
+ import "./chunk-WJB7WI4J.js";
30
+ import "./chunk-VC76R6W2.js";
31
+ import "./chunk-YA62XGXS.js";
29
32
  import {
30
33
  CANVAS_DIMENSIONS,
31
34
  parseHtml
32
- } from "./chunk-OZUQF4NB.js";
33
- import "./chunk-DPVXBVLL.js";
34
- import "./chunk-J4UX3RS3.js";
35
- import "./chunk-VC76R6W2.js";
36
- import "./chunk-YA62XGXS.js";
35
+ } from "./chunk-MQZVBHEY.js";
37
36
  import "./chunk-OFQWTKPW.js";
37
+ import "./chunk-DPVXBVLL.js";
38
38
  import "./chunk-T76PLPD6.js";
39
39
  import "./chunk-FXMKHHPO.js";
40
40
  import "./chunk-RQVDTPGD.js";
41
- import "./chunk-TQFG7HTI.js";
42
- import "./chunk-GK4AIFIH.js";
41
+ import "./chunk-3RM2ETQT.js";
42
+ import "./chunk-BSQ7XANM.js";
43
+ import "./chunk-SDYDNHEE.js";
43
44
  import "./chunk-2PSPARWP.js";
44
- import "./chunk-PMRBLBUP.js";
45
+ import "./chunk-T42U2W2R.js";
45
46
  import {
46
47
  withMeta
47
- } from "./chunk-JLKMWY2T.js";
48
+ } from "./chunk-P6WH6QTV.js";
48
49
  import "./chunk-K4WIOZFP.js";
49
50
  import "./chunk-XUXGIA7H.js";
50
51
  import "./chunk-WERLJGIC.js";
51
52
  import "./chunk-ISN5GRYI.js";
52
- import "./chunk-DZEVA7DI.js";
53
+ import "./chunk-4OC7MQNB.js";
53
54
  import "./chunk-KNU5COPB.js";
54
55
  import {
55
56
  c
@@ -6,12 +6,12 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  gateRegistryItemsCompatibility
9
- } from "./chunk-BPZVDBHY.js";
9
+ } from "./chunk-4LAR447G.js";
10
10
  import {
11
11
  initialModelForLanguage
12
- } from "./chunk-7FCDA4RH.js";
12
+ } from "./chunk-3XTEXWNN.js";
13
13
  import "./chunk-6IHWCZ3W.js";
14
- import "./chunk-FWRNQOLT.js";
14
+ import "./chunk-MXNDKDFT.js";
15
15
  import "./chunk-XT7X6QCP.js";
16
16
  import {
17
17
  writeNewFileSync
@@ -20,27 +20,27 @@ import {
20
20
  listRegistryItems,
21
21
  loadAllItems,
22
22
  resolveItemWithDependencies
23
- } from "./chunk-JOTLPC6S.js";
23
+ } from "./chunk-AUBOF2PN.js";
24
24
  import {
25
25
  installItem
26
- } from "./chunk-75JJVANE.js";
27
- import "./chunk-QXPCARFE.js";
26
+ } from "./chunk-54QISXOC.js";
27
+ import "./chunk-I5KY7EZP.js";
28
28
  import "./chunk-AWDFDFI3.js";
29
29
  import "./chunk-P6LJ4Y32.js";
30
30
  import {
31
31
  DEFAULT_MODEL,
32
32
  hasFFmpeg
33
- } from "./chunk-PXSM4HPB.js";
34
- import "./chunk-WCJGTLPF.js";
33
+ } from "./chunk-MAYCCGMQ.js";
34
+ import "./chunk-BHVFTYSI.js";
35
35
  import {
36
36
  findFFmpeg,
37
37
  findFFprobe,
38
38
  getFFmpegInstallHint
39
- } from "./chunk-TVCRUG2S.js";
39
+ } from "./chunk-ZEUONDQG.js";
40
40
  import {
41
41
  trackInitTemplate
42
- } from "./chunk-XGMNQQTJ.js";
43
- import "./chunk-LBKDQKWV.js";
42
+ } from "./chunk-RG3QWWIE.js";
43
+ import "./chunk-XU5GGV6R.js";
44
44
  import "./chunk-VWG7OQKU.js";
45
45
  import "./chunk-GQJZORQP.js";
46
46
  import "./chunk-AMKC3AXA.js";
@@ -65,46 +65,50 @@ import {
65
65
  failCommand,
66
66
  finishCommand
67
67
  } from "./chunk-PBN6GBJE.js";
68
- import "./chunk-IDX52YJN.js";
69
- import "./chunk-DPHJKWP5.js";
70
- import "./chunk-A4KQZXZI.js";
68
+ import "./chunk-5VMR4WBS.js";
69
+ import "./chunk-OUSLVRO4.js";
70
+ import "./chunk-NE55C6S5.js";
71
71
  import "./chunk-USDEMXXL.js";
72
- import "./chunk-YFT3BL7N.js";
72
+ import "./chunk-3VYNNWVA.js";
73
+ import "./chunk-WJB7WI4J.js";
74
+ import "./chunk-VC76R6W2.js";
75
+ import "./chunk-YA62XGXS.js";
73
76
  import {
74
77
  CANVAS_DIMENSIONS,
75
78
  HTML_BODY_CSS_HEIGHT_FIRST_RE,
76
79
  HTML_BODY_CSS_WIDTH_FIRST_RE,
77
80
  VIEWPORT_META_SIZE_RE,
78
81
  normalizeResolutionFlag
79
- } from "./chunk-OZUQF4NB.js";
80
- import "./chunk-DPVXBVLL.js";
81
- import "./chunk-J4UX3RS3.js";
82
- import "./chunk-VC76R6W2.js";
83
- import "./chunk-YA62XGXS.js";
82
+ } from "./chunk-MQZVBHEY.js";
84
83
  import "./chunk-OFQWTKPW.js";
84
+ import "./chunk-DPVXBVLL.js";
85
85
  import "./chunk-T76PLPD6.js";
86
86
  import "./chunk-FXMKHHPO.js";
87
87
  import "./chunk-RQVDTPGD.js";
88
- import "./chunk-LAOCA3MQ.js";
89
- import "./chunk-LCSMOLGX.js";
88
+ import "./chunk-A4Q7W4LV.js";
89
+ import "./chunk-BYSBRF24.js";
90
90
  import "./chunk-TWWSYAKJ.js";
91
- import "./chunk-IW2CKH6A.js";
92
- import "./chunk-JFKL3WAE.js";
93
- import "./chunk-HBBJFK6I.js";
91
+ import "./chunk-IEIJRMLZ.js";
92
+ import "./chunk-IWFLMU2N.js";
93
+ import "./chunk-APDLWWFG.js";
94
94
  import "./chunk-PJ3HDUCY.js";
95
- import "./chunk-TQFG7HTI.js";
96
- import "./chunk-GK4AIFIH.js";
95
+ import "./chunk-3RM2ETQT.js";
96
+ import "./chunk-BSQ7XANM.js";
97
+ import "./chunk-SDYDNHEE.js";
97
98
  import "./chunk-2PSPARWP.js";
98
- import "./chunk-PMRBLBUP.js";
99
+ import "./chunk-T42U2W2R.js";
99
100
  import "./chunk-K4WIOZFP.js";
100
101
  import "./chunk-XUXGIA7H.js";
101
102
  import "./chunk-WERLJGIC.js";
102
103
  import "./chunk-ISN5GRYI.js";
103
104
  import {
104
105
  VERSION
105
- } from "./chunk-DZEVA7DI.js";
106
+ } from "./chunk-4OC7MQNB.js";
106
107
  import "./chunk-KNU5COPB.js";
107
108
  import "./chunk-UOFAE5RF.js";
109
+ import {
110
+ TRANSCRIPT_FILE
111
+ } from "./chunk-IR35BCLK.js";
108
112
  import "./chunk-3GXQPCJC.js";
109
113
  import {
110
114
  c,
@@ -514,7 +518,7 @@ function patchVideoSrc(dir, media) {
514
518
  }
515
519
  }
516
520
  async function patchTranscript(dir, transcriptPath) {
517
- const { loadTranscript, patchCaptionHtml } = await import("./normalize-IGLHCWTF.js");
521
+ const { loadTranscript, patchCaptionHtml } = await import("./normalize-U3SL5VG3.js");
518
522
  const { words } = loadTranscript(transcriptPath);
519
523
  if (words.length === 0) return;
520
524
  patchCaptionHtml(dir, words);
@@ -671,7 +675,7 @@ async function scaffoldProject(destDir, name, templateId, media, tailwind = fals
671
675
  "utf-8"
672
676
  );
673
677
  if (!existsSync2(resolve(destDir, "hyperframes.json"))) {
674
- const { createProjectConfig, DEFAULT_PROJECT_CONFIG } = await import("./projectConfig-RJN3DKDB.js");
678
+ const { createProjectConfig, DEFAULT_PROJECT_CONFIG } = await import("./projectConfig-FGGVG5MV.js");
675
679
  const { normalizeSkillSlug } = await import("./skill-ZHVLH7KX.js");
676
680
  const skill = normalizeSkillSlug(authoringSkill);
677
681
  createProjectConfig(
@@ -692,7 +696,7 @@ async function scaffoldProject(destDir, name, templateId, media, tailwind = fals
692
696
  }
693
697
  }
694
698
  async function keepSkillsCurrent(destDir) {
695
- const { updateSkills } = await import("./skills-CZHVAD3J.js");
699
+ const { updateSkills } = await import("./skills-VENERS5X.js");
696
700
  console.log();
697
701
  console.log(c.bold("Checking AI coding skills against GitHub..."));
698
702
  try {
@@ -811,10 +815,6 @@ var init_default = defineCommand({
811
815
  failCommand();
812
816
  }
813
817
  const exampleFlag = args.example;
814
- if (exampleFlag?.startsWith("-")) {
815
- console.error(c.error(`--example requires a value; received flag "${exampleFlag}" instead.`));
816
- failCommand();
817
- }
818
818
  const videoFlag = args.video;
819
819
  const audioFlag = args.audio;
820
820
  const skipTranscribe = args["skip-transcribe"] === true;
@@ -893,17 +893,17 @@ var init_default = defineCommand({
893
893
  if (audioPath) {
894
894
  sourceFilePath2 = audioPath;
895
895
  copyFileSync(audioPath, resolve(destDir2, basename(audioPath)));
896
- const { getMediaDurationSeconds } = await import("./transcribe-4F6MK73N.js");
896
+ const { getMediaDurationSeconds } = await import("./transcribe-HCF64LQK.js");
897
897
  videoDuration2 = getMediaDurationSeconds(audioPath) ?? void 0;
898
898
  console.log(`Audio: ${basename(audioPath)}`);
899
899
  }
900
900
  if (sourceFilePath2 && !skipTranscribe) {
901
901
  try {
902
- const { ensureWhisper, ensureModel } = await import("./manager-DXB7JDHU.js");
902
+ const { ensureWhisper, ensureModel } = await import("./manager-YKMHR6LN.js");
903
903
  await ensureWhisper();
904
904
  await ensureModel(initialTranscriptionModel);
905
905
  console.log("Transcribing...");
906
- const { transcribe: runTranscribe } = await import("./transcribe-4F6MK73N.js");
906
+ const { transcribe: runTranscribe } = await import("./transcribe-HCF64LQK.js");
907
907
  const result = await runTranscribe(sourceFilePath2, destDir2, {
908
908
  model: modelFlag,
909
909
  language: languageFlag
@@ -941,7 +941,7 @@ var init_default = defineCommand({
941
941
  failCommand();
942
942
  }
943
943
  trackInitTemplate(templateId2, { tailwind });
944
- const transcriptFile2 = resolve(destDir2, "transcript.json");
944
+ const transcriptFile2 = resolve(destDir2, TRANSCRIPT_FILE);
945
945
  if (existsSync2(transcriptFile2)) {
946
946
  await patchTranscript(destDir2, transcriptFile2);
947
947
  }
@@ -1051,7 +1051,7 @@ var init_default = defineCommand({
1051
1051
  mkdirSync(destDir, { recursive: true });
1052
1052
  sourceFilePath = audioPath;
1053
1053
  copyFileSync(audioPath, resolve(destDir, basename(audioPath)));
1054
- const { getMediaDurationSeconds } = await import("./transcribe-4F6MK73N.js");
1054
+ const { getMediaDurationSeconds } = await import("./transcribe-HCF64LQK.js");
1055
1055
  videoDuration = getMediaDurationSeconds(audioPath) ?? void 0;
1056
1056
  R.info(`Audio copied to ${c.accent(basename(audioPath))}`);
1057
1057
  }
@@ -1061,7 +1061,7 @@ var init_default = defineCommand({
1061
1061
  initialValue: true
1062
1062
  });
1063
1063
  if (!q(transcribeChoice) && transcribeChoice) {
1064
- const { findWhisper } = await import("./manager-DXB7JDHU.js");
1064
+ const { findWhisper } = await import("./manager-YKMHR6LN.js");
1065
1065
  const needsInstall = findWhisper() === void 0;
1066
1066
  if (needsInstall) {
1067
1067
  R.info(c.dim("whisper-cpp not found \u2014 installing automatically..."));
@@ -1071,7 +1071,7 @@ var init_default = defineCommand({
1071
1071
  needsInstall ? "Installing whisper-cpp (this may take a moment)..." : "Preparing transcription..."
1072
1072
  );
1073
1073
  try {
1074
- const { ensureWhisper, ensureModel } = await import("./manager-DXB7JDHU.js");
1074
+ const { ensureWhisper, ensureModel } = await import("./manager-YKMHR6LN.js");
1075
1075
  await ensureWhisper({
1076
1076
  onProgress: (msg) => spin2.message(msg)
1077
1077
  });
@@ -1079,7 +1079,7 @@ var init_default = defineCommand({
1079
1079
  onProgress: (msg) => spin2.message(msg)
1080
1080
  });
1081
1081
  spin2.message("Transcribing audio...");
1082
- const { transcribe: runTranscribe } = await import("./transcribe-4F6MK73N.js");
1082
+ const { transcribe: runTranscribe } = await import("./transcribe-HCF64LQK.js");
1083
1083
  const transcribeResult = await runTranscribe(sourceFilePath, destDir, {
1084
1084
  model: modelFlag,
1085
1085
  language: languageFlag,
@@ -1150,7 +1150,7 @@ ${c.dim("Use --example blank for offline use.")}`
1150
1150
  failCommand();
1151
1151
  }
1152
1152
  trackInitTemplate(templateId, { tailwind });
1153
- const transcriptFile = resolve(destDir, "transcript.json");
1153
+ const transcriptFile = resolve(destDir, TRANSCRIPT_FILE);
1154
1154
  if (existsSync2(transcriptFile)) {
1155
1155
  await patchTranscript(destDir, transcriptFile);
1156
1156
  }
@@ -1161,7 +1161,7 @@ ${c.dim("Use --example blank for offline use.")}`
1161
1161
  }
1162
1162
  R.info("Opening studio preview...");
1163
1163
  try {
1164
- const previewCmd = await import("./preview-5OQRYE6A.js").then((m) => m.default);
1164
+ const previewCmd = await import("./preview-CONUOFFQ.js").then((m) => m.default);
1165
1165
  await runCommand(previewCmd, { rawArgs: [destDir] });
1166
1166
  } catch {
1167
1167
  }