@editframe/elements 0.24.1-beta.0 → 0.25.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/dist/DelayedLoadingState.js +31 -0
  2. package/dist/DelayedLoadingState.js.map +1 -0
  3. package/dist/EF_FRAMEGEN.d.ts +50 -46
  4. package/dist/EF_FRAMEGEN.js +5 -1
  5. package/dist/EF_FRAMEGEN.js.map +1 -0
  6. package/dist/EF_INTERACTIVE.js +4 -0
  7. package/dist/EF_INTERACTIVE.js.map +1 -0
  8. package/dist/EF_RENDERING.js +4 -0
  9. package/dist/EF_RENDERING.js.map +1 -0
  10. package/dist/_virtual/_@oxc-project_runtime@0.94.0/helpers/decorate.js +4 -1
  11. package/dist/attachContextRoot.js +6 -1
  12. package/dist/attachContextRoot.js.map +1 -0
  13. package/dist/elements/CrossUpdateController.js +4 -0
  14. package/dist/elements/CrossUpdateController.js.map +1 -0
  15. package/dist/elements/EFAudio.d.ts +24 -16
  16. package/dist/elements/EFAudio.js +10 -1
  17. package/dist/elements/EFAudio.js.map +1 -0
  18. package/dist/elements/EFCaptions.d.ts +118 -109
  19. package/dist/elements/EFCaptions.js +11 -6
  20. package/dist/elements/EFCaptions.js.map +1 -0
  21. package/dist/elements/EFImage.d.ts +31 -20
  22. package/dist/elements/EFImage.js +6 -1
  23. package/dist/elements/EFImage.js.map +1 -0
  24. package/dist/elements/EFMedia/AssetIdMediaEngine.js +5 -0
  25. package/dist/elements/EFMedia/AssetIdMediaEngine.js.map +1 -0
  26. package/dist/elements/EFMedia/AssetMediaEngine.js +12 -0
  27. package/dist/elements/EFMedia/AssetMediaEngine.js.map +1 -0
  28. package/dist/elements/EFMedia/BaseMediaEngine.js +53 -0
  29. package/dist/elements/EFMedia/BaseMediaEngine.js.map +1 -0
  30. package/dist/elements/EFMedia/BufferedSeekingInput.d.ts +47 -46
  31. package/dist/elements/EFMedia/BufferedSeekingInput.js +6 -1
  32. package/dist/elements/EFMedia/BufferedSeekingInput.js.map +1 -0
  33. package/dist/elements/EFMedia/JitMediaEngine.js +12 -0
  34. package/dist/elements/EFMedia/JitMediaEngine.js.map +1 -0
  35. package/dist/elements/EFMedia/audioTasks/makeAudioBufferTask.d.ts +9 -13
  36. package/dist/elements/EFMedia/audioTasks/makeAudioBufferTask.js +5 -0
  37. package/dist/elements/EFMedia/audioTasks/makeAudioBufferTask.js.map +1 -0
  38. package/dist/elements/EFMedia/audioTasks/makeAudioFrequencyAnalysisTask.js +6 -1
  39. package/dist/elements/EFMedia/audioTasks/makeAudioFrequencyAnalysisTask.js.map +1 -0
  40. package/dist/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.js +5 -0
  41. package/dist/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.js.map +1 -0
  42. package/dist/elements/EFMedia/audioTasks/makeAudioInputTask.js +5 -0
  43. package/dist/elements/EFMedia/audioTasks/makeAudioInputTask.js.map +1 -0
  44. package/dist/elements/EFMedia/audioTasks/makeAudioSeekTask.js +5 -0
  45. package/dist/elements/EFMedia/audioTasks/makeAudioSeekTask.js.map +1 -0
  46. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentFetchTask.js +5 -0
  47. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentFetchTask.js.map +1 -0
  48. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentIdTask.js +5 -0
  49. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentIdTask.js.map +1 -0
  50. package/dist/elements/EFMedia/audioTasks/makeAudioTimeDomainAnalysisTask.js +6 -1
  51. package/dist/elements/EFMedia/audioTasks/makeAudioTimeDomainAnalysisTask.js.map +1 -0
  52. package/dist/elements/EFMedia/shared/AudioSpanUtils.js +18 -2
  53. package/dist/elements/EFMedia/shared/AudioSpanUtils.js.map +1 -0
  54. package/dist/elements/EFMedia/shared/BufferUtils.d.ts +9 -67
  55. package/dist/elements/EFMedia/shared/BufferUtils.js +15 -0
  56. package/dist/elements/EFMedia/shared/BufferUtils.js.map +1 -0
  57. package/dist/elements/EFMedia/shared/GlobalInputCache.js +29 -0
  58. package/dist/elements/EFMedia/shared/GlobalInputCache.js.map +1 -0
  59. package/dist/elements/EFMedia/shared/MediaTaskUtils.d.ts +11 -17
  60. package/dist/elements/EFMedia/shared/PrecisionUtils.js +25 -0
  61. package/dist/elements/EFMedia/shared/PrecisionUtils.js.map +1 -0
  62. package/dist/elements/EFMedia/shared/ThumbnailExtractor.js +22 -0
  63. package/dist/elements/EFMedia/shared/ThumbnailExtractor.js.map +1 -0
  64. package/dist/elements/EFMedia/tasks/makeMediaEngineTask.js +13 -0
  65. package/dist/elements/EFMedia/tasks/makeMediaEngineTask.js.map +1 -0
  66. package/dist/elements/EFMedia/videoTasks/MainVideoInputCache.js +21 -0
  67. package/dist/elements/EFMedia/videoTasks/MainVideoInputCache.js.map +1 -0
  68. package/dist/elements/EFMedia/videoTasks/ScrubInputCache.js +18 -0
  69. package/dist/elements/EFMedia/videoTasks/ScrubInputCache.js.map +1 -0
  70. package/dist/elements/EFMedia/videoTasks/makeScrubVideoBufferTask.js +10 -0
  71. package/dist/elements/EFMedia/videoTasks/makeScrubVideoBufferTask.js.map +1 -0
  72. package/dist/elements/EFMedia/videoTasks/makeScrubVideoInitSegmentFetchTask.js +5 -0
  73. package/dist/elements/EFMedia/videoTasks/makeScrubVideoInitSegmentFetchTask.js.map +1 -0
  74. package/dist/elements/EFMedia/videoTasks/makeScrubVideoInputTask.js +5 -0
  75. package/dist/elements/EFMedia/videoTasks/makeScrubVideoInputTask.js.map +1 -0
  76. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSeekTask.js +6 -1
  77. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSeekTask.js.map +1 -0
  78. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentFetchTask.js +5 -0
  79. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentFetchTask.js.map +1 -0
  80. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentIdTask.js +5 -0
  81. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentIdTask.js.map +1 -0
  82. package/dist/elements/EFMedia/videoTasks/makeUnifiedVideoSeekTask.js +16 -2
  83. package/dist/elements/EFMedia/videoTasks/makeUnifiedVideoSeekTask.js.map +1 -0
  84. package/dist/elements/EFMedia/videoTasks/makeVideoBufferTask.d.ts +9 -13
  85. package/dist/elements/EFMedia/videoTasks/makeVideoBufferTask.js +5 -0
  86. package/dist/elements/EFMedia/videoTasks/makeVideoBufferTask.js.map +1 -0
  87. package/dist/elements/EFMedia.d.ts +115 -104
  88. package/dist/elements/EFMedia.js +25 -1
  89. package/dist/elements/EFMedia.js.map +1 -0
  90. package/dist/elements/EFSourceMixin.d.ts +10 -11
  91. package/dist/elements/EFSourceMixin.js +5 -0
  92. package/dist/elements/EFSourceMixin.js.map +1 -0
  93. package/dist/elements/EFSurface.d.ts +35 -27
  94. package/dist/elements/EFSurface.js +6 -1
  95. package/dist/elements/EFSurface.js.map +1 -0
  96. package/dist/elements/EFTemporal.d.ts +200 -213
  97. package/dist/elements/EFTemporal.js +24 -4
  98. package/dist/elements/EFTemporal.js.map +1 -0
  99. package/dist/elements/EFThumbnailStrip.d.ts +91 -83
  100. package/dist/elements/EFThumbnailStrip.js +49 -4
  101. package/dist/elements/EFThumbnailStrip.js.map +1 -0
  102. package/dist/elements/EFTimegroup.d.ts +107 -101
  103. package/dist/elements/EFTimegroup.js +58 -3
  104. package/dist/elements/EFTimegroup.js.map +1 -0
  105. package/dist/elements/EFVideo.d.ts +120 -108
  106. package/dist/elements/EFVideo.js +46 -2
  107. package/dist/elements/EFVideo.js.map +1 -0
  108. package/dist/elements/EFWaveform.d.ts +48 -41
  109. package/dist/elements/EFWaveform.js +6 -1
  110. package/dist/elements/EFWaveform.js.map +1 -0
  111. package/dist/elements/FetchMixin.d.ts +8 -6
  112. package/dist/elements/FetchMixin.js +4 -0
  113. package/dist/elements/FetchMixin.js.map +1 -0
  114. package/dist/elements/SampleBuffer.d.ts +18 -13
  115. package/dist/elements/SampleBuffer.js +5 -0
  116. package/dist/elements/SampleBuffer.js.map +1 -0
  117. package/dist/elements/TargetController.d.ts +23 -24
  118. package/dist/elements/TargetController.js +8 -3
  119. package/dist/elements/TargetController.js.map +1 -0
  120. package/dist/elements/TimegroupController.d.ts +17 -12
  121. package/dist/elements/TimegroupController.js +4 -0
  122. package/dist/elements/TimegroupController.js.map +1 -0
  123. package/dist/elements/durationConverter.js +9 -4
  124. package/dist/elements/durationConverter.js.map +1 -0
  125. package/dist/elements/parseTimeToMs.js +4 -0
  126. package/dist/elements/parseTimeToMs.js.map +1 -0
  127. package/dist/elements/renderTemporalAudio.js +4 -0
  128. package/dist/elements/renderTemporalAudio.js.map +1 -0
  129. package/dist/elements/updateAnimations.js +29 -8
  130. package/dist/elements/updateAnimations.js.map +1 -0
  131. package/dist/getRenderInfo.d.ts +53 -47
  132. package/dist/getRenderInfo.js +5 -0
  133. package/dist/getRenderInfo.js.map +1 -0
  134. package/dist/gui/ContextMixin.d.ts +19 -20
  135. package/dist/gui/ContextMixin.js +32 -1
  136. package/dist/gui/ContextMixin.js.map +1 -0
  137. package/dist/gui/Controllable.d.ts +13 -14
  138. package/dist/gui/Controllable.js +5 -0
  139. package/dist/gui/Controllable.js.map +1 -0
  140. package/dist/gui/EFConfiguration.d.ts +18 -14
  141. package/dist/gui/EFConfiguration.js +6 -1
  142. package/dist/gui/EFConfiguration.js.map +1 -0
  143. package/dist/gui/EFControls.d.ts +35 -31
  144. package/dist/gui/EFControls.js +8 -3
  145. package/dist/gui/EFControls.js.map +1 -0
  146. package/dist/gui/EFDial.d.ts +23 -16
  147. package/dist/gui/EFDial.js +6 -1
  148. package/dist/gui/EFDial.js.map +1 -0
  149. package/dist/gui/EFFilmstrip.d.ts +183 -177
  150. package/dist/gui/EFFilmstrip.js +30 -25
  151. package/dist/gui/EFFilmstrip.js.map +1 -0
  152. package/dist/gui/EFFitScale.d.ts +30 -24
  153. package/dist/gui/EFFitScale.js +6 -1
  154. package/dist/gui/EFFitScale.js.map +1 -0
  155. package/dist/gui/EFFocusOverlay.d.ts +22 -14
  156. package/dist/gui/EFFocusOverlay.js +6 -1
  157. package/dist/gui/EFFocusOverlay.js.map +1 -0
  158. package/dist/gui/EFPause.d.ts +24 -18
  159. package/dist/gui/EFPause.js +6 -1
  160. package/dist/gui/EFPause.js.map +1 -0
  161. package/dist/gui/EFPlay.d.ts +24 -18
  162. package/dist/gui/EFPlay.js +6 -1
  163. package/dist/gui/EFPlay.js.map +1 -0
  164. package/dist/gui/EFPreview.d.ts +22 -15
  165. package/dist/gui/EFPreview.js +9 -1
  166. package/dist/gui/EFPreview.js.map +1 -0
  167. package/dist/gui/EFResizableBox.d.ts +39 -32
  168. package/dist/gui/EFResizableBox.js +8 -3
  169. package/dist/gui/EFResizableBox.js.map +1 -0
  170. package/dist/gui/EFScrubber.d.ts +31 -25
  171. package/dist/gui/EFScrubber.js +6 -1
  172. package/dist/gui/EFScrubber.js.map +1 -0
  173. package/dist/gui/EFTimeDisplay.d.ts +21 -14
  174. package/dist/gui/EFTimeDisplay.js +6 -1
  175. package/dist/gui/EFTimeDisplay.js.map +1 -0
  176. package/dist/gui/EFToggleLoop.d.ts +19 -13
  177. package/dist/gui/EFToggleLoop.js +6 -1
  178. package/dist/gui/EFToggleLoop.js.map +1 -0
  179. package/dist/gui/EFTogglePlay.d.ts +23 -17
  180. package/dist/gui/EFTogglePlay.js +6 -1
  181. package/dist/gui/EFTogglePlay.js.map +1 -0
  182. package/dist/gui/EFWorkbench.d.ts +24 -16
  183. package/dist/gui/EFWorkbench.js +6 -1
  184. package/dist/gui/EFWorkbench.js.map +1 -0
  185. package/dist/gui/PlaybackController.d.ts +54 -50
  186. package/dist/gui/PlaybackController.js +18 -0
  187. package/dist/gui/PlaybackController.js.map +1 -0
  188. package/dist/gui/TWMixin.js +5 -1
  189. package/dist/gui/TWMixin.js.map +1 -0
  190. package/dist/gui/TWMixin2.js +6 -1
  191. package/dist/gui/TWMixin2.js.map +1 -0
  192. package/dist/gui/TargetOrContextMixin.js +5 -0
  193. package/dist/gui/TargetOrContextMixin.js.map +1 -0
  194. package/dist/gui/currentTimeContext.js +5 -0
  195. package/dist/gui/currentTimeContext.js.map +1 -0
  196. package/dist/gui/durationContext.js +5 -0
  197. package/dist/gui/durationContext.js.map +1 -0
  198. package/dist/gui/efContext.js +5 -0
  199. package/dist/gui/efContext.js.map +1 -0
  200. package/dist/gui/fetchContext.js +5 -0
  201. package/dist/gui/fetchContext.js.map +1 -0
  202. package/dist/gui/focusContext.d.ts +6 -5
  203. package/dist/gui/focusContext.js +5 -0
  204. package/dist/gui/focusContext.js.map +1 -0
  205. package/dist/gui/focusedElementContext.js +5 -0
  206. package/dist/gui/focusedElementContext.js.map +1 -0
  207. package/dist/gui/playingContext.js +5 -0
  208. package/dist/gui/playingContext.js.map +1 -0
  209. package/dist/index.d.ts +27 -26
  210. package/dist/index.js +5 -1
  211. package/dist/index.js.map +1 -0
  212. package/dist/msToTimeCode.js +4 -0
  213. package/dist/msToTimeCode.js.map +1 -0
  214. package/dist/otel/BridgeSpanExporter.js +5 -0
  215. package/dist/otel/BridgeSpanExporter.js.map +1 -0
  216. package/dist/otel/setupBrowserTracing.js +7 -2
  217. package/dist/otel/setupBrowserTracing.js.map +1 -0
  218. package/dist/otel/tracingHelpers.d.ts +7 -34
  219. package/dist/otel/tracingHelpers.js +34 -2
  220. package/dist/otel/tracingHelpers.js.map +1 -0
  221. package/dist/style.css +867 -2
  222. package/dist/transcoding/cache/RequestDeduplicator.js +25 -0
  223. package/dist/transcoding/cache/RequestDeduplicator.js.map +1 -0
  224. package/dist/transcoding/cache/URLTokenDeduplicator.js +23 -0
  225. package/dist/transcoding/cache/URLTokenDeduplicator.js.map +1 -0
  226. package/dist/transcoding/types/index.d.ts +96 -270
  227. package/dist/transcoding/utils/UrlGenerator.d.ts +30 -25
  228. package/dist/transcoding/utils/UrlGenerator.js +19 -0
  229. package/dist/transcoding/utils/UrlGenerator.js.map +1 -0
  230. package/dist/utils/LRUCache.js +44 -0
  231. package/dist/utils/LRUCache.js.map +1 -0
  232. package/package.json +34 -25
  233. package/scripts/build-css.js +41 -0
  234. package/tsdown.config.ts +57 -0
  235. package/dist/DelayedLoadingState.d.ts +0 -48
  236. package/dist/DelayedLoadingState.integration.test.d.ts +0 -1
  237. package/dist/DelayedLoadingState.test.d.ts +0 -1
  238. package/dist/EF_INTERACTIVE.d.ts +0 -1
  239. package/dist/EF_RENDERING.d.ts +0 -1
  240. package/dist/LoadingDebounce.test.d.ts +0 -1
  241. package/dist/LoadingIndicator.browsertest.d.ts +0 -0
  242. package/dist/ManualScrubTest.test.d.ts +0 -1
  243. package/dist/ScrubResolvedFlashing.test.d.ts +0 -1
  244. package/dist/ScrubTrackManager.test.d.ts +0 -1
  245. package/dist/VideoSeekFlashing.browsertest.d.ts +0 -0
  246. package/dist/VideoStuckDiagnostic.test.d.ts +0 -1
  247. package/dist/attachContextRoot.d.ts +0 -1
  248. package/dist/elements/ContextProxiesController.d.ts +0 -39
  249. package/dist/elements/CrossUpdateController.d.ts +0 -8
  250. package/dist/elements/EFAudio.browsertest.d.ts +0 -0
  251. package/dist/elements/EFCaptions.browsertest.d.ts +0 -0
  252. package/dist/elements/EFImage.browsertest.d.ts +0 -0
  253. package/dist/elements/EFMedia/AssetIdMediaEngine.d.ts +0 -19
  254. package/dist/elements/EFMedia/AssetIdMediaEngine.test.d.ts +0 -1
  255. package/dist/elements/EFMedia/AssetMediaEngine.browsertest.d.ts +0 -0
  256. package/dist/elements/EFMedia/AssetMediaEngine.d.ts +0 -56
  257. package/dist/elements/EFMedia/BaseMediaEngine.browsertest.d.ts +0 -1
  258. package/dist/elements/EFMedia/BaseMediaEngine.d.ts +0 -103
  259. package/dist/elements/EFMedia/BufferedSeekingInput.browsertest.d.ts +0 -1
  260. package/dist/elements/EFMedia/JitMediaEngine.browsertest.d.ts +0 -0
  261. package/dist/elements/EFMedia/JitMediaEngine.d.ts +0 -46
  262. package/dist/elements/EFMedia/audioTasks/makeAudioBufferTask.browsertest.d.ts +0 -9
  263. package/dist/elements/EFMedia/audioTasks/makeAudioFrequencyAnalysisTask.d.ts +0 -3
  264. package/dist/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.browsertest.d.ts +0 -9
  265. package/dist/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.d.ts +0 -4
  266. package/dist/elements/EFMedia/audioTasks/makeAudioInputTask.browsertest.d.ts +0 -9
  267. package/dist/elements/EFMedia/audioTasks/makeAudioInputTask.d.ts +0 -3
  268. package/dist/elements/EFMedia/audioTasks/makeAudioSeekTask.chunkboundary.regression.browsertest.d.ts +0 -0
  269. package/dist/elements/EFMedia/audioTasks/makeAudioSeekTask.d.ts +0 -7
  270. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentFetchTask.d.ts +0 -4
  271. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentIdTask.d.ts +0 -4
  272. package/dist/elements/EFMedia/audioTasks/makeAudioTasksVideoOnly.browsertest.d.ts +0 -1
  273. package/dist/elements/EFMedia/audioTasks/makeAudioTimeDomainAnalysisTask.d.ts +0 -3
  274. package/dist/elements/EFMedia/shared/AudioSpanUtils.d.ts +0 -7
  275. package/dist/elements/EFMedia/shared/GlobalInputCache.d.ts +0 -39
  276. package/dist/elements/EFMedia/shared/PrecisionUtils.d.ts +0 -28
  277. package/dist/elements/EFMedia/shared/RenditionHelpers.browsertest.d.ts +0 -1
  278. package/dist/elements/EFMedia/shared/RenditionHelpers.d.ts +0 -11
  279. package/dist/elements/EFMedia/shared/ThumbnailExtractor.d.ts +0 -27
  280. package/dist/elements/EFMedia/tasks/makeMediaEngineTask.browsertest.d.ts +0 -9
  281. package/dist/elements/EFMedia/tasks/makeMediaEngineTask.d.ts +0 -17
  282. package/dist/elements/EFMedia/videoTasks/MainVideoInputCache.d.ts +0 -29
  283. package/dist/elements/EFMedia/videoTasks/ScrubInputCache.d.ts +0 -25
  284. package/dist/elements/EFMedia/videoTasks/makeScrubVideoBufferTask.d.ts +0 -8
  285. package/dist/elements/EFMedia/videoTasks/makeScrubVideoInitSegmentFetchTask.d.ts +0 -4
  286. package/dist/elements/EFMedia/videoTasks/makeScrubVideoInputTask.d.ts +0 -3
  287. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSeekTask.d.ts +0 -6
  288. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentFetchTask.d.ts +0 -4
  289. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentIdTask.d.ts +0 -4
  290. package/dist/elements/EFMedia/videoTasks/makeUnifiedVideoSeekTask.d.ts +0 -6
  291. package/dist/elements/EFMedia.browsertest.d.ts +0 -10
  292. package/dist/elements/EFSurface.browsertest.d.ts +0 -0
  293. package/dist/elements/EFTemporal.browsertest.d.ts +0 -22
  294. package/dist/elements/EFThumbnailStrip.browsertest.d.ts +0 -0
  295. package/dist/elements/EFThumbnailStrip.media-engine.browsertest.d.ts +0 -0
  296. package/dist/elements/EFTimegroup.browsertest.d.ts +0 -41
  297. package/dist/elements/EFVideo.browsertest.d.ts +0 -0
  298. package/dist/elements/FetchContext.browsertest.d.ts +0 -0
  299. package/dist/elements/TargetController.browsertest.d.ts +0 -19
  300. package/dist/elements/durationConverter.d.ts +0 -16
  301. package/dist/elements/parseTimeToMs.d.ts +0 -1
  302. package/dist/elements/printTaskStatus.d.ts +0 -2
  303. package/dist/elements/renderTemporalAudio.d.ts +0 -10
  304. package/dist/elements/updateAnimations.browsertest.d.ts +0 -13
  305. package/dist/elements/updateAnimations.d.ts +0 -24
  306. package/dist/elements/util.d.ts +0 -3
  307. package/dist/gui/ContextMixin.browsertest.d.ts +0 -15
  308. package/dist/gui/Controllable.browsertest.d.ts +0 -0
  309. package/dist/gui/EFControls.browsertest.d.ts +0 -11
  310. package/dist/gui/EFDial.browsertest.d.ts +0 -0
  311. package/dist/gui/EFFilmstrip.browsertest.d.ts +0 -11
  312. package/dist/gui/EFPause.browsertest.d.ts +0 -0
  313. package/dist/gui/EFPlay.browsertest.d.ts +0 -0
  314. package/dist/gui/EFResizableBox.browsertest.d.ts +0 -0
  315. package/dist/gui/EFTimeDisplay.browsertest.d.ts +0 -0
  316. package/dist/gui/TWMixin.d.ts +0 -2
  317. package/dist/gui/TargetOrContextMixin.d.ts +0 -10
  318. package/dist/gui/currentTimeContext.d.ts +0 -3
  319. package/dist/gui/durationContext.d.ts +0 -3
  320. package/dist/gui/efContext.d.ts +0 -4
  321. package/dist/gui/fetchContext.d.ts +0 -3
  322. package/dist/gui/focusedElementContext.d.ts +0 -3
  323. package/dist/gui/playingContext.d.ts +0 -6
  324. package/dist/msToTimeCode.d.ts +0 -1
  325. package/dist/otel/BridgeSpanExporter.d.ts +0 -13
  326. package/dist/otel/setupBrowserTracing.d.ts +0 -12
  327. package/dist/transcoding/cache/RequestDeduplicator.d.ts +0 -29
  328. package/dist/transcoding/cache/RequestDeduplicator.test.d.ts +0 -1
  329. package/dist/transcoding/cache/URLTokenDeduplicator.d.ts +0 -38
  330. package/dist/transcoding/cache/URLTokenDeduplicator.test.d.ts +0 -1
  331. package/dist/transcoding/utils/MediaUtils.d.ts +0 -9
  332. package/dist/transcoding/utils/constants.d.ts +0 -27
  333. package/dist/utils/LRUCache.d.ts +0 -80
  334. package/dist/utils/LRUCache.test.d.ts +0 -1
@@ -1,3 +1,4 @@
1
+ //#region src/DelayedLoadingState.ts
1
2
  var DelayedLoadingState = class {
2
3
  constructor(delayMs = 250, onStateChange) {
3
4
  this.operations = /* @__PURE__ */ new Map();
@@ -6,6 +7,9 @@ var DelayedLoadingState = class {
6
7
  this.loadingDelayMs = delayMs;
7
8
  this.onStateChange = onStateChange;
8
9
  }
10
+ /**
11
+ * Start a delayed loading operation
12
+ */
9
13
  startLoading(operationId, message, options = {}) {
10
14
  const isBackground = options.background || false;
11
15
  const existingOp = this.operations.get(operationId);
@@ -31,6 +35,9 @@ var DelayedLoadingState = class {
31
35
  isBackground: false
32
36
  });
33
37
  }
38
+ /**
39
+ * Clear a loading operation
40
+ */
34
41
  clearLoading(operationId) {
35
42
  const operation = this.operations.get(operationId);
36
43
  if (!operation) return;
@@ -38,21 +45,36 @@ var DelayedLoadingState = class {
38
45
  this.operations.delete(operationId);
39
46
  this.updateLoadingState();
40
47
  }
48
+ /**
49
+ * Clear all loading operations
50
+ */
41
51
  clearAllLoading() {
42
52
  for (const operation of this.operations.values()) if (operation.timeout) clearTimeout(operation.timeout);
43
53
  this.operations.clear();
44
54
  this.updateLoadingState();
45
55
  }
56
+ /**
57
+ * Get current loading state
58
+ */
46
59
  get isLoading() {
47
60
  return this.isCurrentlyLoading;
48
61
  }
62
+ /**
63
+ * Get current loading message
64
+ */
49
65
  get message() {
50
66
  return this.currentMessage;
51
67
  }
68
+ /**
69
+ * Check if any non-background operations are active
70
+ */
52
71
  hasActiveOperations() {
53
72
  for (const operation of this.operations.values()) if (!operation.isBackground) return true;
54
73
  return false;
55
74
  }
75
+ /**
76
+ * Get the message for the most recent non-background operation
77
+ */
56
78
  getCurrentMessage() {
57
79
  let latestTime = 0;
58
80
  let latestMessage = "";
@@ -62,6 +84,9 @@ var DelayedLoadingState = class {
62
84
  }
63
85
  return latestMessage;
64
86
  }
87
+ /**
88
+ * Trigger loading state (called by timeout)
89
+ */
65
90
  triggerLoadingState() {
66
91
  if (this.hasActiveOperations() && !this.isCurrentlyLoading) {
67
92
  this.isCurrentlyLoading = true;
@@ -69,6 +94,9 @@ var DelayedLoadingState = class {
69
94
  this.onStateChange?.(true, this.currentMessage);
70
95
  }
71
96
  }
97
+ /**
98
+ * Update loading state based on current operations
99
+ */
72
100
  updateLoadingState() {
73
101
  const shouldBeLoading = this.hasActiveOperations();
74
102
  if (shouldBeLoading !== this.isCurrentlyLoading) {
@@ -83,4 +111,7 @@ var DelayedLoadingState = class {
83
111
  }
84
112
  }
85
113
  };
114
+
115
+ //#endregion
86
116
  export { DelayedLoadingState };
117
+ //# sourceMappingURL=DelayedLoadingState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DelayedLoadingState.js","names":[],"sources":["../src/DelayedLoadingState.ts"],"sourcesContent":["interface LoadingOperation {\n id: string;\n message: string;\n startTime: number;\n timeout?: NodeJS.Timeout;\n isBackground: boolean;\n}\n\ninterface LoadingOptions {\n background?: boolean;\n}\n\nexport class DelayedLoadingState {\n private operations = new Map<string, LoadingOperation>();\n private loadingDelayMs: number;\n private isCurrentlyLoading = false;\n private currentMessage = \"\";\n private onStateChange?: (isLoading: boolean, message: string) => void;\n\n constructor(\n delayMs = 250,\n onStateChange?: (isLoading: boolean, message: string) => void,\n ) {\n this.loadingDelayMs = delayMs;\n this.onStateChange = onStateChange;\n }\n\n /**\n * Start a delayed loading operation\n */\n startLoading(\n operationId: string,\n message: string,\n options: LoadingOptions = {},\n ): void {\n const isBackground = options.background || false;\n\n // Clear existing timeout for this operation if it exists\n const existingOp = this.operations.get(operationId);\n if (existingOp?.timeout) {\n clearTimeout(existingOp.timeout);\n }\n\n // Don't create timeout for background operations\n if (isBackground) {\n this.operations.set(operationId, {\n id: operationId,\n message,\n startTime: Date.now(),\n isBackground: true,\n });\n return;\n }\n\n // Create timeout to show loading after delay\n const timeout = setTimeout(() => {\n // Only trigger if operation still exists and is not background\n const operation = this.operations.get(operationId);\n if (operation && !operation.isBackground) {\n this.triggerLoadingState();\n }\n }, this.loadingDelayMs);\n\n this.operations.set(operationId, {\n id: operationId,\n message,\n startTime: Date.now(),\n timeout,\n isBackground: false,\n });\n }\n\n /**\n * Clear a loading operation\n */\n clearLoading(operationId: string): void {\n const operation = this.operations.get(operationId);\n if (!operation) return;\n\n // Clear timeout if it exists\n if (operation.timeout) {\n clearTimeout(operation.timeout);\n }\n\n this.operations.delete(operationId);\n\n // Update loading state\n this.updateLoadingState();\n }\n\n /**\n * Clear all loading operations\n */\n clearAllLoading(): void {\n for (const operation of this.operations.values()) {\n if (operation.timeout) {\n clearTimeout(operation.timeout);\n }\n }\n this.operations.clear();\n this.updateLoadingState();\n }\n\n /**\n * Get current loading state\n */\n get isLoading(): boolean {\n return this.isCurrentlyLoading;\n }\n\n /**\n * Get current loading message\n */\n get message(): string {\n return this.currentMessage;\n }\n\n /**\n * Check if any non-background operations are active\n */\n private hasActiveOperations(): boolean {\n for (const operation of this.operations.values()) {\n if (!operation.isBackground) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Get the message for the most recent non-background operation\n */\n private getCurrentMessage(): string {\n let latestTime = 0;\n let latestMessage = \"\";\n\n for (const operation of this.operations.values()) {\n if (!operation.isBackground && operation.startTime > latestTime) {\n latestTime = operation.startTime;\n latestMessage = operation.message;\n }\n }\n\n return latestMessage;\n }\n\n /**\n * Trigger loading state (called by timeout)\n */\n private triggerLoadingState(): void {\n if (this.hasActiveOperations() && !this.isCurrentlyLoading) {\n this.isCurrentlyLoading = true;\n this.currentMessage = this.getCurrentMessage();\n this.onStateChange?.(true, this.currentMessage);\n }\n }\n\n /**\n * Update loading state based on current operations\n */\n private updateLoadingState(): void {\n const shouldBeLoading = this.hasActiveOperations();\n\n if (shouldBeLoading !== this.isCurrentlyLoading) {\n this.isCurrentlyLoading = shouldBeLoading;\n\n if (shouldBeLoading) {\n this.currentMessage = this.getCurrentMessage();\n this.onStateChange?.(true, this.currentMessage);\n } else {\n this.currentMessage = \"\";\n this.onStateChange?.(false, \"\");\n }\n }\n }\n}\n"],"mappings":";AAYA,IAAa,sBAAb,MAAiC;CAO/B,YACE,UAAU,KACV,eACA;oCATmB,IAAI,KAA+B;4BAE3B;wBACJ;AAOvB,OAAK,iBAAiB;AACtB,OAAK,gBAAgB;;;;;CAMvB,aACE,aACA,SACA,UAA0B,EAAE,EACtB;EACN,MAAM,eAAe,QAAQ,cAAc;EAG3C,MAAM,aAAa,KAAK,WAAW,IAAI,YAAY;AACnD,MAAI,YAAY,QACd,cAAa,WAAW,QAAQ;AAIlC,MAAI,cAAc;AAChB,QAAK,WAAW,IAAI,aAAa;IAC/B,IAAI;IACJ;IACA,WAAW,KAAK,KAAK;IACrB,cAAc;IACf,CAAC;AACF;;EAIF,MAAM,UAAU,iBAAiB;GAE/B,MAAM,YAAY,KAAK,WAAW,IAAI,YAAY;AAClD,OAAI,aAAa,CAAC,UAAU,aAC1B,MAAK,qBAAqB;KAE3B,KAAK,eAAe;AAEvB,OAAK,WAAW,IAAI,aAAa;GAC/B,IAAI;GACJ;GACA,WAAW,KAAK,KAAK;GACrB;GACA,cAAc;GACf,CAAC;;;;;CAMJ,aAAa,aAA2B;EACtC,MAAM,YAAY,KAAK,WAAW,IAAI,YAAY;AAClD,MAAI,CAAC,UAAW;AAGhB,MAAI,UAAU,QACZ,cAAa,UAAU,QAAQ;AAGjC,OAAK,WAAW,OAAO,YAAY;AAGnC,OAAK,oBAAoB;;;;;CAM3B,kBAAwB;AACtB,OAAK,MAAM,aAAa,KAAK,WAAW,QAAQ,CAC9C,KAAI,UAAU,QACZ,cAAa,UAAU,QAAQ;AAGnC,OAAK,WAAW,OAAO;AACvB,OAAK,oBAAoB;;;;;CAM3B,IAAI,YAAqB;AACvB,SAAO,KAAK;;;;;CAMd,IAAI,UAAkB;AACpB,SAAO,KAAK;;;;;CAMd,AAAQ,sBAA+B;AACrC,OAAK,MAAM,aAAa,KAAK,WAAW,QAAQ,CAC9C,KAAI,CAAC,UAAU,aACb,QAAO;AAGX,SAAO;;;;;CAMT,AAAQ,oBAA4B;EAClC,IAAI,aAAa;EACjB,IAAI,gBAAgB;AAEpB,OAAK,MAAM,aAAa,KAAK,WAAW,QAAQ,CAC9C,KAAI,CAAC,UAAU,gBAAgB,UAAU,YAAY,YAAY;AAC/D,gBAAa,UAAU;AACvB,mBAAgB,UAAU;;AAI9B,SAAO;;;;;CAMT,AAAQ,sBAA4B;AAClC,MAAI,KAAK,qBAAqB,IAAI,CAAC,KAAK,oBAAoB;AAC1D,QAAK,qBAAqB;AAC1B,QAAK,iBAAiB,KAAK,mBAAmB;AAC9C,QAAK,gBAAgB,MAAM,KAAK,eAAe;;;;;;CAOnD,AAAQ,qBAA2B;EACjC,MAAM,kBAAkB,KAAK,qBAAqB;AAElD,MAAI,oBAAoB,KAAK,oBAAoB;AAC/C,QAAK,qBAAqB;AAE1B,OAAI,iBAAiB;AACnB,SAAK,iBAAiB,KAAK,mBAAmB;AAC9C,SAAK,gBAAgB,MAAM,KAAK,eAAe;UAC1C;AACL,SAAK,iBAAiB;AACtB,SAAK,gBAAgB,OAAO,GAAG"}
@@ -1,53 +1,57 @@
1
- import { VideoRenderOptions } from '../../assets/src/index.ts';
2
- import { TraceContext } from './otel/tracingHelpers.js';
1
+ import { TraceContext } from "./otel/tracingHelpers.js";
2
+ import { VideoRenderOptions } from "@editframe/assets";
3
+
4
+ //#region src/EF_FRAMEGEN.d.ts
3
5
  interface Bridge {
4
- onInitialize: (callback: (renderOptions: VideoRenderOptions, traceContext?: TraceContext, otelEndpoint?: string) => void) => void;
5
- initialized(): void;
6
- onBeginFrame(callback: (frameNumber: number, isLast: boolean, traceContext?: TraceContext) => void): void;
7
- onTriggerCanvas(callback: (traceContext?: TraceContext) => void): void;
8
- frameReady(frameNumber: number, audioSamples: ArrayBuffer): void;
9
- error(error: Error): void;
10
- syncLog(sequence: number, message: string, callback: () => void): void;
11
- exportSpans?: (endpoint: string, payload: string) => void;
6
+ onInitialize: (callback: (renderOptions: VideoRenderOptions, traceContext?: TraceContext, otelEndpoint?: string) => void) => void;
7
+ initialized(): void;
8
+ onBeginFrame(callback: (frameNumber: number, isLast: boolean, traceContext?: TraceContext) => void): void;
9
+ onTriggerCanvas(callback: (traceContext?: TraceContext) => void): void;
10
+ frameReady(frameNumber: number, audioSamples: ArrayBuffer): void;
11
+ error(error: Error): void;
12
+ syncLog(sequence: number, message: string, callback: () => void): void;
13
+ exportSpans?: (endpoint: string, payload: string) => void;
12
14
  }
13
15
  declare global {
14
- interface Window {
15
- EF_FRAMEGEN?: EFFramegen;
16
- FRAMEGEN_BRIDGE?: Bridge;
17
- FRAMEGEN_BINDING?: any;
18
- FRAMEGEN_BINDING_error?: (error: Error) => void;
19
- EF_RENDERING?: () => boolean;
20
- }
16
+ interface Window {
17
+ EF_FRAMEGEN?: EFFramegen;
18
+ FRAMEGEN_BRIDGE?: Bridge;
19
+ FRAMEGEN_BINDING?: any;
20
+ FRAMEGEN_BINDING_error?: (error: Error) => void;
21
+ EF_RENDERING?: () => boolean;
22
+ }
21
23
  }
22
24
  declare class TriggerCanvas {
23
- private canvas;
24
- private ctx;
25
- private canvasInitialized;
26
- constructor();
27
- initialize(): void;
28
- trigger(): void;
25
+ private canvas;
26
+ private ctx;
27
+ private canvasInitialized;
28
+ constructor();
29
+ initialize(): void;
30
+ trigger(): void;
29
31
  }
30
- export declare class EFFramegen {
31
- time: number;
32
- frameDurationMs: number;
33
- audioBufferPromise?: Promise<AudioBuffer>;
34
- renderOptions?: VideoRenderOptions;
35
- frameBox: HTMLDivElement;
36
- BRIDGE: typeof window.FRAMEGEN_BRIDGE;
37
- triggerCanvas: TriggerCanvas;
38
- verificationCanvas?: HTMLCanvasElement;
39
- verificationCtx?: CanvasRenderingContext2D;
40
- private logSequence;
41
- frameTasksInProgress: boolean;
42
- currentFrameNumber: number;
43
- trace(...args: any[]): void;
44
- syncLog(...args: any[]): Promise<void>;
45
- private initializeVerificationCanvas;
46
- private drawVerificationStrip;
47
- constructor();
48
- connectToBridge(): void;
49
- get showFrameBox(): boolean;
50
- initialize(renderOptions: VideoRenderOptions): Promise<void>;
51
- beginFrame(frameNumber: number, isLast: boolean): Promise<string | ArrayBuffer | null | undefined>;
32
+ declare class EFFramegen {
33
+ time: number;
34
+ frameDurationMs: number;
35
+ audioBufferPromise?: Promise<AudioBuffer>;
36
+ renderOptions?: VideoRenderOptions;
37
+ frameBox: HTMLDivElement;
38
+ BRIDGE: typeof window.FRAMEGEN_BRIDGE;
39
+ triggerCanvas: TriggerCanvas;
40
+ verificationCanvas?: HTMLCanvasElement;
41
+ verificationCtx?: CanvasRenderingContext2D;
42
+ private logSequence;
43
+ frameTasksInProgress: boolean;
44
+ currentFrameNumber: number;
45
+ trace(...args: any[]): void;
46
+ syncLog(...args: any[]): Promise<void>;
47
+ private initializeVerificationCanvas;
48
+ private drawVerificationStrip;
49
+ constructor();
50
+ connectToBridge(): void;
51
+ get showFrameBox(): boolean;
52
+ initialize(renderOptions: VideoRenderOptions): Promise<void>;
53
+ beginFrame(frameNumber: number, isLast: boolean): Promise<string | ArrayBuffer | null | undefined>;
52
54
  }
53
- export {};
55
+ //#endregion
56
+ export { EFFramegen };
57
+ //# sourceMappingURL=EF_FRAMEGEN.d.ts.map
@@ -1,6 +1,8 @@
1
1
  import { clearCurrentFrameSpan, enableTracing, extractParentContext, setCurrentFrameSpan, withSpan, withSpanAndContext } from "./otel/tracingHelpers.js";
2
2
  import { shallowGetTimegroups } from "./elements/EFTimegroup.js";
3
3
  import { setupBrowserTracing } from "./otel/setupBrowserTracing.js";
4
+
5
+ //#region src/EF_FRAMEGEN.ts
4
6
  var TriggerCanvas = class {
5
7
  constructor() {
6
8
  this.canvasInitialized = false;
@@ -220,4 +222,6 @@ var EFFramegen = class {
220
222
  }
221
223
  };
222
224
  if (typeof window !== "undefined") window.EF_FRAMEGEN = new EFFramegen();
223
- export {};
225
+
226
+ //#endregion
227
+ //# sourceMappingURL=EF_FRAMEGEN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EF_FRAMEGEN.js","names":[],"sources":["../src/EF_FRAMEGEN.ts"],"sourcesContent":["import type { VideoRenderOptions } from \"@editframe/assets\";\n\nimport { shallowGetTimegroups } from \"./elements/EFTimegroup.js\";\nimport { setupBrowserTracing } from \"./otel/setupBrowserTracing.js\";\nimport {\n clearCurrentFrameSpan,\n enableTracing,\n extractParentContext,\n setCurrentFrameSpan,\n type TraceContext,\n withSpan,\n withSpanAndContext,\n} from \"./otel/tracingHelpers.js\";\n\ninterface Bridge {\n onInitialize: (\n callback: (\n renderOptions: VideoRenderOptions,\n traceContext?: TraceContext,\n otelEndpoint?: string,\n ) => void,\n ) => void;\n\n initialized(): void;\n\n onBeginFrame(\n callback: (\n frameNumber: number,\n isLast: boolean,\n traceContext?: TraceContext,\n ) => void,\n ): void;\n\n onTriggerCanvas(callback: (traceContext?: TraceContext) => void): void;\n\n frameReady(frameNumber: number, audioSamples: ArrayBuffer): void;\n\n error(error: Error): void;\n\n syncLog(sequence: number, message: string, callback: () => void): void;\n\n exportSpans?: (endpoint: string, payload: string) => void;\n}\n\ndeclare global {\n interface Window {\n EF_FRAMEGEN?: EFFramegen;\n FRAMEGEN_BRIDGE?: Bridge;\n FRAMEGEN_BINDING?: any;\n FRAMEGEN_BINDING_error?: (error: Error) => void;\n EF_RENDERING?: () => boolean;\n }\n}\n\nclass TriggerCanvas {\n private canvas: HTMLCanvasElement;\n private ctx: CanvasRenderingContext2D;\n\n private canvasInitialized = false;\n\n constructor() {\n this.canvas = document.createElement(\"canvas\");\n const ctx = this.canvas.getContext(\"2d\", { willReadFrequently: true });\n if (!ctx) throw new Error(\"Canvas 2d context not ready\");\n this.ctx = ctx;\n this.ctx.fillStyle = \"transparent\";\n }\n\n initialize() {\n if (this.canvasInitialized) return;\n this.canvasInitialized = true;\n this.canvas.width = 1;\n this.canvas.height = 1;\n Object.assign(this.canvas.style, {\n position: \"fixed\",\n top: \"0px\",\n left: \"0px\",\n width: \"100%\",\n height: \"100%\",\n zIndex: \"100000\",\n });\n document.body.appendChild(this.canvas);\n }\n\n trigger() {\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n}\n\nexport class EFFramegen {\n time = 0;\n frameDurationMs = 0;\n audioBufferPromise?: Promise<AudioBuffer>;\n renderOptions?: VideoRenderOptions;\n frameBox = document.createElement(\"div\");\n BRIDGE: typeof window.FRAMEGEN_BRIDGE;\n triggerCanvas = new TriggerCanvas();\n verificationCanvas?: HTMLCanvasElement;\n verificationCtx?: CanvasRenderingContext2D;\n private logSequence = 0;\n\n // Frame sequence coordination\n public frameTasksInProgress = false;\n public currentFrameNumber = 0;\n\n trace(...args: any[]) {\n console.trace(\"[EF_FRAMEGEN]\", ...args);\n }\n\n async syncLog(...args: any[]): Promise<void> {\n if (!this.BRIDGE) {\n // Fallback to regular console.log if no bridge\n console.log(\"[EF_FRAMEGEN]\", ...args);\n return;\n }\n\n const sequence = ++this.logSequence;\n const message = args\n .map((arg) =>\n typeof arg === \"object\" ? JSON.stringify(arg) : String(arg),\n )\n .join(\" \");\n\n return new Promise<void>((resolve) => {\n // biome-ignore lint/style/noNonNullAssertion: We know BRIDGE is set due to the guard above\n this.BRIDGE!.syncLog(sequence, message, () => {\n resolve();\n });\n });\n }\n\n private initializeVerificationCanvas() {\n if (this.verificationCanvas) {\n return;\n }\n\n this.verificationCanvas = document.createElement(\"canvas\");\n const ctx = this.verificationCanvas.getContext(\"2d\");\n if (!ctx) throw new Error(\"Verification canvas 2d context not ready\");\n this.verificationCtx = ctx;\n\n // Size to match the workbench width, 1 pixel height for verification strip\n const workbench = document.querySelector(\"ef-workbench\") as HTMLElement;\n if (workbench) {\n this.verificationCanvas.width = workbench.clientWidth;\n this.verificationCanvas.height = 1;\n\n // Position at the bottom of the workbench (beyond content height)\n Object.assign(this.verificationCanvas.style, {\n position: \"fixed\",\n left: \"0px\",\n bottom: \"0px\",\n width: `${workbench.clientWidth}px`,\n height: \"1px\",\n zIndex: \"99999\", // Above trigger canvas\n });\n\n document.body.appendChild(this.verificationCanvas);\n }\n }\n\n private drawVerificationStrip(frameNumber: number) {\n this.initializeVerificationCanvas();\n\n if (!this.verificationCanvas || !this.verificationCtx) {\n return;\n }\n\n const width = this.verificationCanvas.width;\n const height = this.verificationCanvas.height;\n\n // Clear the strip\n this.verificationCtx.clearRect(0, 0, width, height);\n\n // Encode frame number into RGB (24-bit)\n // R=high byte, G=middle byte, B=low byte\n const red = Math.floor(frameNumber / (256 * 256)) % 256;\n const green = Math.floor(frameNumber / 256) % 256;\n const blue = frameNumber % 256;\n\n // Fill the entire strip with the encoded frame number\n this.verificationCtx.fillStyle = `rgb(${red}, ${green}, ${blue})`;\n this.verificationCtx.fillRect(0, 0, width, height);\n }\n\n constructor() {\n this.BRIDGE = window.FRAMEGEN_BRIDGE;\n if (this.BRIDGE) {\n this.connectToBridge();\n }\n }\n\n connectToBridge() {\n const BRIDGE = this.BRIDGE;\n if (!BRIDGE) {\n throw new Error(\"No BRIDGE when attempting to connect to bridge\");\n }\n\n BRIDGE.onInitialize(async (renderOptions, traceContext, otelEndpoint) => {\n // Only enable tracing if explicitly requested in renderOptions\n if (renderOptions.enableTracing && otelEndpoint) {\n enableTracing();\n await setupBrowserTracing({\n otelEndpoint,\n serviceName: \"telecine-browser\",\n bridge: BRIDGE,\n useBatching: true, // Batch spans to reduce overhead during rendering\n });\n }\n\n const parentContext = extractParentContext(traceContext);\n\n await withSpan(\n \"browser.initialize\",\n {\n width: renderOptions.encoderOptions.video.width,\n height: renderOptions.encoderOptions.video.height,\n fps: renderOptions.encoderOptions.video.framerate,\n durationMs:\n renderOptions.encoderOptions.toMs -\n renderOptions.encoderOptions.fromMs,\n },\n parentContext,\n async () => {\n await this.initialize(renderOptions).catch((error) => {\n console.error(\n \"[EF_FRAMEGEN.connectToBridge] error initializing\",\n error,\n );\n throw error;\n });\n },\n );\n\n BRIDGE.initialized();\n });\n\n BRIDGE.onBeginFrame((frameNumber, isLast, traceContext) => {\n const parentContext = extractParentContext(traceContext);\n withSpanAndContext(\n \"browser.frame.render\",\n {\n frameNumber,\n isLast,\n },\n parentContext,\n async (span, _spanContext) => {\n // Store the span itself for child operations\n // This allows spans created in Lit Tasks to use it as their parent\n setCurrentFrameSpan(span);\n\n try {\n await this.beginFrame(frameNumber, isLast);\n } finally {\n clearCurrentFrameSpan();\n }\n },\n ).catch((error) => {\n console.error(\"[EF_FRAMEGEN.beginFrame] error:\", error);\n clearCurrentFrameSpan();\n throw error;\n });\n });\n\n BRIDGE.onTriggerCanvas((traceContext) => {\n const parentContext = extractParentContext(traceContext);\n\n withSpan(\"browser.canvas.trigger\", {}, parentContext, async () => {\n this.triggerCanvas.trigger();\n }).catch((error) => {\n console.error(\"[EF_FRAMEGEN.triggerCanvas] error:\", error);\n });\n });\n }\n\n get showFrameBox() {\n return this.renderOptions?.showFrameBox ?? false;\n }\n\n async initialize(renderOptions: VideoRenderOptions) {\n this.renderOptions = renderOptions;\n\n const workbench = document.querySelector(\"ef-workbench\");\n if (!workbench) {\n throw new Error(\"No workbench found\");\n }\n workbench.rendering = true;\n workbench.playing = false;\n const timegroups = shallowGetTimegroups(workbench);\n const firstGroup = timegroups[0];\n if (!firstGroup) {\n throw new Error(\"No temporal elements found\");\n }\n const startingTimeMs = renderOptions.encoderOptions.fromMs;\n await firstGroup.waitForMediaDurations();\n await firstGroup.waitForFrameTasks();\n\n this.frameDurationMs = 1000 / renderOptions.encoderOptions.video.framerate;\n\n this.time = startingTimeMs;\n if (this.showFrameBox) {\n Object.assign(this.frameBox.style, {\n width: \"200px\",\n height: \"100px\",\n font: \"10px Arial\",\n backgroundColor: \"white\",\n position: \"absolute\",\n top: \"0px\",\n right: \"0px\",\n zIndex: \"100000\",\n });\n document.body.prepend(this.frameBox);\n }\n\n this.triggerCanvas.initialize();\n\n // These times are aligned to the audio frame boundaries\n // And they include padding if any.\n this.audioBufferPromise = firstGroup.renderAudio(\n renderOptions.encoderOptions.alignedFromUs / 1000,\n renderOptions.encoderOptions.alignedToUs / 1000,\n );\n }\n\n async beginFrame(frameNumber: number, isLast: boolean) {\n if (this.renderOptions === undefined) {\n throw new Error(\"No renderOptions\");\n }\n const workbench = document.querySelector(\"ef-workbench\");\n if (!workbench) {\n throw new Error(\"No workbench found\");\n }\n workbench.rendering = true;\n const timegroups = shallowGetTimegroups(workbench);\n const firstGroup = timegroups[0];\n if (!firstGroup) {\n throw new Error(\"No temporal elements found\");\n }\n\n // Calculate base frame time using normal progression\n const frameTime =\n this.renderOptions.encoderOptions.fromMs +\n frameNumber * this.frameDurationMs;\n firstGroup.currentTimeMs = Number(Number(frameTime).toFixed(5));\n await firstGroup.waitForFrameTasks();\n if (this.showFrameBox) {\n this.frameBox.innerHTML = `\n <div>🖼️ Frame: ${frameNumber}</div>\n <div>🕛 Segment: ${this.time.toFixed(4)}</div>\n <div>🕛 Frame: ${firstGroup.currentTimeMs.toFixed(4)}</div>\n <div> from-to: ${this.renderOptions.encoderOptions.fromMs.toFixed(4)} - ${this.renderOptions.encoderOptions.toMs.toFixed(4)}</div>\n `;\n }\n\n // Draw verification pixel strip for frame verification\n this.drawVerificationStrip(frameNumber);\n\n if (isLast && this.audioBufferPromise) {\n // Currently we emit the audio in one belch at the end of the render.\n // This is not ideal, but it's the simplest thing that could possibly work.\n // We could either emit it slices, or in parallel with the video.\n // But in any case, it's fine for now.\n const renderedAudio = await this.audioBufferPromise;\n\n const channelCount = renderedAudio.numberOfChannels;\n\n const interleavedSamples = new Float32Array(\n channelCount * renderedAudio.length,\n );\n\n for (let i = 0; i < renderedAudio.length; i++) {\n for (let j = 0; j < channelCount; j++) {\n interleavedSamples.set(\n renderedAudio.getChannelData(j).slice(i, i + 1),\n i * channelCount + j,\n );\n }\n }\n\n if (this.BRIDGE) {\n this.BRIDGE.frameReady(frameNumber, interleavedSamples.buffer);\n } else {\n const fileReader = new FileReader();\n fileReader.readAsDataURL(new Blob([interleavedSamples.buffer]));\n await new Promise((resolve, reject) => {\n fileReader.onload = resolve;\n fileReader.onerror = reject;\n });\n return fileReader.result;\n }\n } else {\n if (this.BRIDGE) {\n this.BRIDGE.frameReady(frameNumber, new ArrayBuffer(0));\n } else {\n const fileReader = new FileReader();\n fileReader.readAsDataURL(new Blob([]));\n await new Promise((resolve, reject) => {\n fileReader.onload = resolve;\n fileReader.onerror = reject;\n });\n return fileReader.result;\n }\n }\n }\n}\n\nif (typeof window !== \"undefined\") {\n window.EF_FRAMEGEN = new EFFramegen();\n}\n"],"mappings":"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"}
@@ -1,3 +1,7 @@
1
+ //#region src/EF_INTERACTIVE.ts
1
2
  let EF_INTERACTIVE = false;
2
3
  if (typeof window !== "undefined") EF_INTERACTIVE = !window.location?.search.includes("EF_NONINTERACTIVE");
4
+
5
+ //#endregion
3
6
  export { EF_INTERACTIVE };
7
+ //# sourceMappingURL=EF_INTERACTIVE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EF_INTERACTIVE.js","names":[],"sources":["../src/EF_INTERACTIVE.ts"],"sourcesContent":["export let EF_INTERACTIVE = false;\n\nif (typeof window !== \"undefined\") {\n EF_INTERACTIVE = !window.location?.search.includes(\"EF_NONINTERACTIVE\");\n}\n"],"mappings":";AAAA,IAAW,iBAAiB;AAE5B,IAAI,OAAO,WAAW,YACpB,kBAAiB,CAAC,OAAO,UAAU,OAAO,SAAS,oBAAoB"}
@@ -1,2 +1,6 @@
1
+ //#region src/EF_RENDERING.ts
1
2
  const EF_RENDERING = () => typeof window !== "undefined" && "FRAMEGEN_BRIDGE" in window;
3
+
4
+ //#endregion
2
5
  export { EF_RENDERING };
6
+ //# sourceMappingURL=EF_RENDERING.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EF_RENDERING.js","names":[],"sources":["../src/EF_RENDERING.ts"],"sourcesContent":["export const EF_RENDERING = () =>\n typeof window !== \"undefined\" && \"FRAMEGEN_BRIDGE\" in window;\n"],"mappings":";AAAA,MAAa,qBACX,OAAO,WAAW,eAAe,qBAAqB"}
@@ -1,7 +1,10 @@
1
+ //#region \0@oxc-project+runtime@0.94.0/helpers/decorate.js
1
2
  function __decorate(decorators, target, key, desc) {
2
3
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
4
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
7
  }
7
- export { __decorate };
8
+
9
+ //#endregion
10
+ export { __decorate };
@@ -1,9 +1,14 @@
1
1
  import { ContextRoot } from "@lit/context";
2
- var contextRoot = null;
2
+
3
+ //#region src/attachContextRoot.ts
4
+ let contextRoot = null;
3
5
  const attachContextRoot = () => {
4
6
  if (typeof window === "undefined") return;
5
7
  if (contextRoot !== null) return;
6
8
  contextRoot = new ContextRoot();
7
9
  contextRoot.attach(document.body);
8
10
  };
11
+
12
+ //#endregion
9
13
  export { attachContextRoot };
14
+ //# sourceMappingURL=attachContextRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachContextRoot.js","names":["contextRoot: ContextRoot | null"],"sources":["../src/attachContextRoot.ts"],"sourcesContent":["import { ContextRoot } from \"@lit/context\";\n\nlet contextRoot: ContextRoot | null = null;\nexport const attachContextRoot = () => {\n if (typeof window === \"undefined\") {\n return;\n }\n if (contextRoot !== null) {\n return;\n }\n contextRoot = new ContextRoot();\n contextRoot.attach(document.body);\n};\n"],"mappings":";;;AAEA,IAAIA,cAAkC;AACtC,MAAa,0BAA0B;AACrC,KAAI,OAAO,WAAW,YACpB;AAEF,KAAI,gBAAgB,KAClB;AAEF,eAAc,IAAI,aAAa;AAC/B,aAAY,OAAO,SAAS,KAAK"}
@@ -1,3 +1,4 @@
1
+ //#region src/elements/CrossUpdateController.ts
1
2
  var CrossUpdateController = class {
2
3
  constructor(host, target) {
3
4
  this.host = host;
@@ -11,4 +12,7 @@ var CrossUpdateController = class {
11
12
  this.host.removeController(this);
12
13
  }
13
14
  };
15
+
16
+ //#endregion
14
17
  export { CrossUpdateController };
18
+ //# sourceMappingURL=CrossUpdateController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CrossUpdateController.js","names":["host: ReactiveControllerHost","target: LitElement"],"sources":["../../src/elements/CrossUpdateController.ts"],"sourcesContent":["import type {\n LitElement,\n ReactiveController,\n ReactiveControllerHost,\n} from \"lit\";\n\nexport class CrossUpdateController implements ReactiveController {\n constructor(\n private host: ReactiveControllerHost,\n private target: LitElement,\n ) {\n this.host.addController(this);\n }\n\n hostUpdate(): void {\n this.target.requestUpdate();\n }\n\n remove(): void {\n this.host.removeController(this);\n }\n}\n"],"mappings":";AAMA,IAAa,wBAAb,MAAiE;CAC/D,YACE,AAAQA,MACR,AAAQC,QACR;EAFQ;EACA;AAER,OAAK,KAAK,cAAc,KAAK;;CAG/B,aAAmB;AACjB,OAAK,OAAO,eAAe;;CAG7B,SAAe;AACb,OAAK,KAAK,iBAAiB,KAAK"}
@@ -1,20 +1,28 @@
1
- import { Task } from '@lit/task';
2
- import { EFMedia } from './EFMedia.js';
1
+ import { MediaEngine } from "../transcoding/types/index.js";
2
+ import { EFMedia } from "./EFMedia.js";
3
+ import * as _lit_task8 from "@lit/task";
4
+ import { Task } from "@lit/task";
5
+ import * as lit_html2 from "lit-html";
6
+ import * as lit_html_directives_ref_js2 from "lit-html/directives/ref.js";
7
+
8
+ //#region src/elements/EFAudio.d.ts
3
9
  declare const EFAudio_base: typeof EFMedia;
4
- export declare class EFAudio extends EFAudio_base {
5
- private _propertyHack;
6
- audioElementRef: import('lit-html/directives/ref.js').Ref<HTMLAudioElement>;
7
- render(): import('lit-html').TemplateResult<1>;
8
- frameTask: Task<readonly [import('@lit/task').TaskStatus, import('@lit/task').TaskStatus, import('@lit/task').TaskStatus, import('@lit/task').TaskStatus], void>;
9
- /**
10
- * Legacy getter for fragment index task (maps to audioSegmentIdTask)
11
- * Still used by EFCaptions
12
- */
13
- get fragmentIndexTask(): Task<readonly [import('../transcoding/types/index.js').MediaEngine | undefined, number], number | undefined>;
10
+ declare class EFAudio extends EFAudio_base {
11
+ private _propertyHack;
12
+ audioElementRef: lit_html_directives_ref_js2.Ref<HTMLAudioElement>;
13
+ render(): lit_html2.TemplateResult<1>;
14
+ frameTask: Task<readonly [_lit_task8.TaskStatus, _lit_task8.TaskStatus, _lit_task8.TaskStatus, _lit_task8.TaskStatus], void>;
15
+ /**
16
+ * Legacy getter for fragment index task (maps to audioSegmentIdTask)
17
+ * Still used by EFCaptions
18
+ */
19
+ get fragmentIndexTask(): Task<readonly [MediaEngine | undefined, number], number | undefined>;
14
20
  }
15
21
  declare global {
16
- interface HTMLElementTagNameMap {
17
- "ef-audio": EFAudio;
18
- }
22
+ interface HTMLElementTagNameMap {
23
+ "ef-audio": EFAudio;
24
+ }
19
25
  }
20
- export {};
26
+ //#endregion
27
+ export { EFAudio };
28
+ //# sourceMappingURL=EFAudio.d.ts.map
@@ -6,7 +6,9 @@ import { Task } from "@lit/task";
6
6
  import { html } from "lit";
7
7
  import { customElement, property } from "lit/decorators.js";
8
8
  import { createRef, ref } from "lit/directives/ref.js";
9
- var EFAudio = class EFAudio$1 extends TWMixin(EFMedia) {
9
+
10
+ //#region src/elements/EFAudio.ts
11
+ let EFAudio = class EFAudio$1 extends TWMixin(EFMedia) {
10
12
  constructor(..._args) {
11
13
  super(..._args);
12
14
  this._propertyHack = false;
@@ -31,6 +33,10 @@ var EFAudio = class EFAudio$1 extends TWMixin(EFMedia) {
31
33
  render() {
32
34
  return html`<audio ${ref(this.audioElementRef)}></audio>`;
33
35
  }
36
+ /**
37
+ * Legacy getter for fragment index task (maps to audioSegmentIdTask)
38
+ * Still used by EFCaptions
39
+ */
34
40
  get fragmentIndexTask() {
35
41
  return this.audioSegmentIdTask;
36
42
  }
@@ -40,4 +46,7 @@ __decorate([property({
40
46
  attribute: "dummy-property"
41
47
  })], EFAudio.prototype, "_propertyHack", void 0);
42
48
  EFAudio = __decorate([customElement("ef-audio")], EFAudio);
49
+
50
+ //#endregion
43
51
  export { EFAudio };
52
+ //# sourceMappingURL=EFAudio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EFAudio.js","names":["EFAudio"],"sources":["../../src/elements/EFAudio.ts"],"sourcesContent":["import { Task } from \"@lit/task\";\nimport { html } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\nimport { EF_INTERACTIVE } from \"../EF_INTERACTIVE.js\";\nimport { TWMixin } from \"../gui/TWMixin.js\";\nimport { EFMedia } from \"./EFMedia.js\";\n\n@customElement(\"ef-audio\")\nexport class EFAudio extends TWMixin(EFMedia) {\n // HACK: This dummy property is needed to activate Lit's property processing system\n // Without it, inherited properties from EFMedia don't work correctly\n // TODO: Remove this as soon as we have an audio-specific property that needs @property\n @property({ type: Boolean, attribute: \"dummy-property\" })\n // @ts-expect-error - This is a hack to activate Lit's property processing system\n // biome-ignore lint/correctness/noUnusedPrivateClassMembers: Used to activate Lit's property processing\n private _propertyHack = false;\n\n audioElementRef = createRef<HTMLAudioElement>();\n\n render() {\n return html`<audio ${ref(this.audioElementRef)}></audio>`;\n }\n\n frameTask = new Task(this, {\n autoRun: EF_INTERACTIVE,\n args: () =>\n [\n this.audioBufferTask.status,\n this.audioSeekTask.status,\n this.audioSegmentFetchTask.status,\n this.mediaEngineTask.status,\n ] as const,\n task: async () => {\n await this.mediaEngineTask.taskComplete;\n await this.audioSegmentFetchTask.taskComplete;\n await this.audioSeekTask.taskComplete;\n await this.audioBufferTask.taskComplete;\n this.rootTimegroup?.requestUpdate();\n },\n });\n\n /**\n * Legacy getter for fragment index task (maps to audioSegmentIdTask)\n * Still used by EFCaptions\n */\n get fragmentIndexTask() {\n return this.audioSegmentIdTask;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-audio\": EFAudio;\n }\n}\n"],"mappings":";;;;;;;;;;AASO,oBAAMA,kBAAgB,QAAQ,QAAQ,CAAC;;;uBAOpB;yBAEN,WAA6B;mBAMnC,IAAI,KAAK,MAAM;GACzB,SAAS;GACT,YACE;IACE,KAAK,gBAAgB;IACrB,KAAK,cAAc;IACnB,KAAK,sBAAsB;IAC3B,KAAK,gBAAgB;IACtB;GACH,MAAM,YAAY;AAChB,UAAM,KAAK,gBAAgB;AAC3B,UAAM,KAAK,sBAAsB;AACjC,UAAM,KAAK,cAAc;AACzB,UAAM,KAAK,gBAAgB;AAC3B,SAAK,eAAe,eAAe;;GAEtC,CAAC;;CApBF,SAAS;AACP,SAAO,IAAI,UAAU,IAAI,KAAK,gBAAgB,CAAC;;;;;;CAyBjD,IAAI,oBAAoB;AACtB,SAAO,KAAK;;;YAlCb,SAAS;CAAE,MAAM;CAAS,WAAW;CAAkB,CAAC;sBAL1D,cAAc,WAAW"}