@editframe/elements 0.16.8-beta.0 → 0.18.3-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 (267) hide show
  1. package/README.md +30 -0
  2. package/dist/DecoderResetFrequency.test.d.ts +1 -0
  3. package/dist/DecoderResetRecovery.test.d.ts +1 -0
  4. package/dist/DelayedLoadingState.d.ts +48 -0
  5. package/dist/DelayedLoadingState.integration.test.d.ts +1 -0
  6. package/dist/DelayedLoadingState.js +113 -0
  7. package/dist/DelayedLoadingState.test.d.ts +1 -0
  8. package/dist/EF_FRAMEGEN.d.ts +10 -1
  9. package/dist/EF_FRAMEGEN.js +199 -179
  10. package/dist/EF_INTERACTIVE.js +2 -6
  11. package/dist/EF_RENDERING.js +1 -3
  12. package/dist/LoadingDebounce.test.d.ts +1 -0
  13. package/dist/LoadingIndicator.browsertest.d.ts +0 -0
  14. package/dist/ManualScrubTest.test.d.ts +1 -0
  15. package/dist/ScrubResolvedFlashing.test.d.ts +1 -0
  16. package/dist/ScrubTrackManager.d.ts +96 -0
  17. package/dist/ScrubTrackManager.test.d.ts +1 -0
  18. package/dist/VideoSeekFlashing.browsertest.d.ts +0 -0
  19. package/dist/VideoStuckDiagnostic.test.d.ts +1 -0
  20. package/dist/elements/CrossUpdateController.js +13 -15
  21. package/dist/elements/EFAudio.browsertest.d.ts +0 -0
  22. package/dist/elements/EFAudio.d.ts +22 -3
  23. package/dist/elements/EFAudio.js +60 -43
  24. package/dist/elements/EFCaptions.js +337 -373
  25. package/dist/elements/EFImage.d.ts +1 -0
  26. package/dist/elements/EFImage.js +73 -91
  27. package/dist/elements/EFMedia/AssetIdMediaEngine.d.ts +18 -0
  28. package/dist/elements/EFMedia/AssetIdMediaEngine.js +41 -0
  29. package/dist/elements/EFMedia/AssetIdMediaEngine.test.d.ts +1 -0
  30. package/dist/elements/EFMedia/AssetMediaEngine.d.ts +47 -0
  31. package/dist/elements/EFMedia/AssetMediaEngine.js +116 -0
  32. package/dist/elements/EFMedia/BaseMediaEngine.d.ts +55 -0
  33. package/dist/elements/EFMedia/BaseMediaEngine.js +96 -0
  34. package/dist/elements/EFMedia/BaseMediaEngine.test.d.ts +1 -0
  35. package/dist/elements/EFMedia/BufferedSeekingInput.browsertest.d.ts +1 -0
  36. package/dist/elements/EFMedia/BufferedSeekingInput.d.ts +43 -0
  37. package/dist/elements/EFMedia/BufferedSeekingInput.js +159 -0
  38. package/dist/elements/EFMedia/JitMediaEngine.browsertest.d.ts +0 -0
  39. package/dist/elements/EFMedia/JitMediaEngine.d.ts +31 -0
  40. package/dist/elements/EFMedia/JitMediaEngine.js +62 -0
  41. package/dist/elements/EFMedia/audioTasks/makeAudioBufferTask.browsertest.d.ts +9 -0
  42. package/dist/elements/EFMedia/audioTasks/makeAudioBufferTask.d.ts +16 -0
  43. package/dist/elements/EFMedia/audioTasks/makeAudioBufferTask.js +48 -0
  44. package/dist/elements/EFMedia/audioTasks/makeAudioFrequencyAnalysisTask.d.ts +3 -0
  45. package/dist/elements/EFMedia/audioTasks/makeAudioFrequencyAnalysisTask.js +138 -0
  46. package/dist/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.browsertest.d.ts +9 -0
  47. package/dist/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.d.ts +4 -0
  48. package/dist/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.js +16 -0
  49. package/dist/elements/EFMedia/audioTasks/makeAudioInputTask.browsertest.d.ts +9 -0
  50. package/dist/elements/EFMedia/audioTasks/makeAudioInputTask.d.ts +3 -0
  51. package/dist/elements/EFMedia/audioTasks/makeAudioInputTask.js +22 -0
  52. package/dist/elements/EFMedia/audioTasks/makeAudioSeekTask.d.ts +7 -0
  53. package/dist/elements/EFMedia/audioTasks/makeAudioSeekTask.js +24 -0
  54. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentFetchTask.d.ts +4 -0
  55. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentFetchTask.js +18 -0
  56. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentIdTask.d.ts +4 -0
  57. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentIdTask.js +16 -0
  58. package/dist/elements/EFMedia/audioTasks/makeAudioTimeDomainAnalysisTask.d.ts +3 -0
  59. package/dist/elements/EFMedia/audioTasks/makeAudioTimeDomainAnalysisTask.js +104 -0
  60. package/dist/elements/EFMedia/services/AudioElementFactory.browsertest.d.ts +1 -0
  61. package/dist/elements/EFMedia/services/AudioElementFactory.d.ts +22 -0
  62. package/dist/elements/EFMedia/services/AudioElementFactory.js +72 -0
  63. package/dist/elements/EFMedia/services/MediaSourceService.browsertest.d.ts +1 -0
  64. package/dist/elements/EFMedia/services/MediaSourceService.d.ts +47 -0
  65. package/dist/elements/EFMedia/services/MediaSourceService.js +73 -0
  66. package/dist/elements/EFMedia/shared/AudioSpanUtils.d.ts +7 -0
  67. package/dist/elements/EFMedia/shared/AudioSpanUtils.js +54 -0
  68. package/dist/elements/EFMedia/shared/BufferUtils.d.ts +70 -0
  69. package/dist/elements/EFMedia/shared/BufferUtils.js +89 -0
  70. package/dist/elements/EFMedia/shared/MediaTaskUtils.d.ts +23 -0
  71. package/dist/elements/EFMedia/shared/RenditionHelpers.browsertest.d.ts +1 -0
  72. package/dist/elements/EFMedia/shared/RenditionHelpers.d.ts +19 -0
  73. package/dist/elements/EFMedia/tasks/makeMediaEngineTask.browsertest.d.ts +1 -0
  74. package/dist/elements/EFMedia/tasks/makeMediaEngineTask.d.ts +18 -0
  75. package/dist/elements/EFMedia/tasks/makeMediaEngineTask.js +60 -0
  76. package/dist/elements/EFMedia/tasks/makeMediaEngineTask.test.d.ts +1 -0
  77. package/dist/elements/EFMedia/videoTasks/makeVideoBufferTask.browsertest.d.ts +9 -0
  78. package/dist/elements/EFMedia/videoTasks/makeVideoBufferTask.d.ts +16 -0
  79. package/dist/elements/EFMedia/videoTasks/makeVideoBufferTask.js +46 -0
  80. package/dist/elements/EFMedia/videoTasks/makeVideoInitSegmentFetchTask.browsertest.d.ts +9 -0
  81. package/dist/elements/EFMedia/videoTasks/makeVideoInitSegmentFetchTask.d.ts +4 -0
  82. package/dist/elements/EFMedia/videoTasks/makeVideoInitSegmentFetchTask.js +16 -0
  83. package/dist/elements/EFMedia/videoTasks/makeVideoInputTask.browsertest.d.ts +9 -0
  84. package/dist/elements/EFMedia/videoTasks/makeVideoInputTask.d.ts +3 -0
  85. package/dist/elements/EFMedia/videoTasks/makeVideoInputTask.js +27 -0
  86. package/dist/elements/EFMedia/videoTasks/makeVideoSeekTask.d.ts +7 -0
  87. package/dist/elements/EFMedia/videoTasks/makeVideoSeekTask.js +25 -0
  88. package/dist/elements/EFMedia/videoTasks/makeVideoSegmentFetchTask.browsertest.d.ts +9 -0
  89. package/dist/elements/EFMedia/videoTasks/makeVideoSegmentFetchTask.d.ts +4 -0
  90. package/dist/elements/EFMedia/videoTasks/makeVideoSegmentFetchTask.js +18 -0
  91. package/dist/elements/EFMedia/videoTasks/makeVideoSegmentIdTask.browsertest.d.ts +9 -0
  92. package/dist/elements/EFMedia/videoTasks/makeVideoSegmentIdTask.d.ts +4 -0
  93. package/dist/elements/EFMedia/videoTasks/makeVideoSegmentIdTask.js +16 -0
  94. package/dist/elements/EFMedia.browsertest.d.ts +1 -0
  95. package/dist/elements/EFMedia.d.ts +95 -66
  96. package/dist/elements/EFMedia.js +204 -683
  97. package/dist/elements/EFSourceMixin.js +31 -48
  98. package/dist/elements/EFTemporal.d.ts +2 -1
  99. package/dist/elements/EFTemporal.js +266 -360
  100. package/dist/elements/EFTimegroup.d.ts +14 -1
  101. package/dist/elements/EFTimegroup.js +337 -323
  102. package/dist/elements/EFVideo.browsertest.d.ts +0 -0
  103. package/dist/elements/EFVideo.d.ts +123 -4
  104. package/dist/elements/EFVideo.js +308 -111
  105. package/dist/elements/EFWaveform.js +375 -411
  106. package/dist/elements/FetchMixin.js +14 -24
  107. package/dist/elements/MediaController.d.ts +30 -0
  108. package/dist/elements/SampleBuffer.d.ts +14 -0
  109. package/dist/elements/SampleBuffer.js +52 -0
  110. package/dist/elements/TargetController.js +130 -156
  111. package/dist/elements/TimegroupController.js +17 -19
  112. package/dist/elements/durationConverter.js +15 -4
  113. package/dist/elements/parseTimeToMs.js +4 -10
  114. package/dist/elements/printTaskStatus.d.ts +2 -0
  115. package/dist/elements/updateAnimations.js +39 -59
  116. package/dist/getRenderInfo.d.ts +2 -2
  117. package/dist/getRenderInfo.js +59 -67
  118. package/dist/gui/ContextMixin.js +150 -288
  119. package/dist/gui/EFConfiguration.js +27 -43
  120. package/dist/gui/EFFilmstrip.d.ts +3 -3
  121. package/dist/gui/EFFilmstrip.js +440 -620
  122. package/dist/gui/EFFitScale.d.ts +2 -2
  123. package/dist/gui/EFFitScale.js +112 -135
  124. package/dist/gui/EFFocusOverlay.js +45 -61
  125. package/dist/gui/EFPreview.js +30 -49
  126. package/dist/gui/EFScrubber.js +78 -99
  127. package/dist/gui/EFTimeDisplay.js +49 -70
  128. package/dist/gui/EFToggleLoop.js +17 -34
  129. package/dist/gui/EFTogglePlay.js +37 -58
  130. package/dist/gui/EFWorkbench.js +66 -88
  131. package/dist/gui/TWMixin.js +2 -48
  132. package/dist/gui/TWMixin2.js +31 -0
  133. package/dist/gui/efContext.js +2 -6
  134. package/dist/gui/fetchContext.js +1 -3
  135. package/dist/gui/focusContext.js +1 -3
  136. package/dist/gui/focusedElementContext.js +2 -6
  137. package/dist/gui/playingContext.js +1 -4
  138. package/dist/gui/services/ElementConnectionManager.browsertest.d.ts +1 -0
  139. package/dist/gui/services/ElementConnectionManager.d.ts +59 -0
  140. package/dist/gui/services/ElementConnectionManager.js +128 -0
  141. package/dist/gui/services/PlaybackController.browsertest.d.ts +1 -0
  142. package/dist/gui/services/PlaybackController.d.ts +103 -0
  143. package/dist/gui/services/PlaybackController.js +290 -0
  144. package/dist/index.js +5 -30
  145. package/dist/msToTimeCode.js +11 -13
  146. package/dist/services/MediaSourceManager.d.ts +62 -0
  147. package/dist/services/MediaSourceManager.js +211 -0
  148. package/dist/style.css +2 -1
  149. package/dist/transcoding/cache/CacheManager.d.ts +73 -0
  150. package/dist/transcoding/cache/RequestDeduplicator.d.ts +29 -0
  151. package/dist/transcoding/cache/RequestDeduplicator.js +53 -0
  152. package/dist/transcoding/cache/RequestDeduplicator.test.d.ts +1 -0
  153. package/dist/transcoding/types/index.d.ts +242 -0
  154. package/dist/transcoding/utils/MediaUtils.d.ts +9 -0
  155. package/dist/transcoding/utils/UrlGenerator.d.ts +26 -0
  156. package/dist/transcoding/utils/UrlGenerator.js +45 -0
  157. package/dist/transcoding/utils/constants.d.ts +27 -0
  158. package/dist/utils/LRUCache.d.ts +34 -0
  159. package/dist/utils/LRUCache.js +115 -0
  160. package/package.json +4 -3
  161. package/src/elements/EFAudio.browsertest.ts +709 -0
  162. package/src/elements/EFAudio.ts +59 -15
  163. package/src/elements/EFCaptions.browsertest.ts +0 -1
  164. package/src/elements/EFImage.browsertest.ts +42 -1
  165. package/src/elements/EFImage.ts +23 -3
  166. package/src/elements/EFMedia/AssetIdMediaEngine.test.ts +222 -0
  167. package/src/elements/EFMedia/AssetIdMediaEngine.ts +70 -0
  168. package/src/elements/EFMedia/AssetMediaEngine.ts +210 -0
  169. package/src/elements/EFMedia/BaseMediaEngine.test.ts +164 -0
  170. package/src/elements/EFMedia/BaseMediaEngine.ts +170 -0
  171. package/src/elements/EFMedia/BufferedSeekingInput.browsertest.ts +400 -0
  172. package/src/elements/EFMedia/BufferedSeekingInput.ts +267 -0
  173. package/src/elements/EFMedia/JitMediaEngine.browsertest.ts +165 -0
  174. package/src/elements/EFMedia/JitMediaEngine.ts +110 -0
  175. package/src/elements/EFMedia/audioTasks/makeAudioBufferTask.browsertest.ts +554 -0
  176. package/src/elements/EFMedia/audioTasks/makeAudioBufferTask.ts +81 -0
  177. package/src/elements/EFMedia/audioTasks/makeAudioFrequencyAnalysisTask.ts +241 -0
  178. package/src/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.browsertest.ts +59 -0
  179. package/src/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.ts +23 -0
  180. package/src/elements/EFMedia/audioTasks/makeAudioInputTask.browsertest.ts +55 -0
  181. package/src/elements/EFMedia/audioTasks/makeAudioInputTask.ts +35 -0
  182. package/src/elements/EFMedia/audioTasks/makeAudioSeekTask.ts +42 -0
  183. package/src/elements/EFMedia/audioTasks/makeAudioSegmentFetchTask.ts +34 -0
  184. package/src/elements/EFMedia/audioTasks/makeAudioSegmentIdTask.ts +23 -0
  185. package/src/elements/EFMedia/audioTasks/makeAudioTimeDomainAnalysisTask.ts +174 -0
  186. package/src/elements/EFMedia/services/AudioElementFactory.browsertest.ts +325 -0
  187. package/src/elements/EFMedia/services/AudioElementFactory.ts +119 -0
  188. package/src/elements/EFMedia/services/MediaSourceService.browsertest.ts +257 -0
  189. package/src/elements/EFMedia/services/MediaSourceService.ts +102 -0
  190. package/src/elements/EFMedia/shared/AudioSpanUtils.ts +128 -0
  191. package/src/elements/EFMedia/shared/BufferUtils.ts +310 -0
  192. package/src/elements/EFMedia/shared/MediaTaskUtils.ts +44 -0
  193. package/src/elements/EFMedia/shared/RenditionHelpers.browsertest.ts +247 -0
  194. package/src/elements/EFMedia/shared/RenditionHelpers.ts +79 -0
  195. package/src/elements/EFMedia/tasks/makeMediaEngineTask.browsertest.ts +128 -0
  196. package/src/elements/EFMedia/tasks/makeMediaEngineTask.test.ts +233 -0
  197. package/src/elements/EFMedia/tasks/makeMediaEngineTask.ts +89 -0
  198. package/src/elements/EFMedia/videoTasks/makeVideoBufferTask.browsertest.ts +555 -0
  199. package/src/elements/EFMedia/videoTasks/makeVideoBufferTask.ts +79 -0
  200. package/src/elements/EFMedia/videoTasks/makeVideoInitSegmentFetchTask.browsertest.ts +59 -0
  201. package/src/elements/EFMedia/videoTasks/makeVideoInitSegmentFetchTask.ts +23 -0
  202. package/src/elements/EFMedia/videoTasks/makeVideoInputTask.browsertest.ts +55 -0
  203. package/src/elements/EFMedia/videoTasks/makeVideoInputTask.ts +45 -0
  204. package/src/elements/EFMedia/videoTasks/makeVideoSeekTask.ts +44 -0
  205. package/src/elements/EFMedia/videoTasks/makeVideoSegmentFetchTask.browsertest.ts +57 -0
  206. package/src/elements/EFMedia/videoTasks/makeVideoSegmentFetchTask.ts +32 -0
  207. package/src/elements/EFMedia/videoTasks/makeVideoSegmentIdTask.browsertest.ts +56 -0
  208. package/src/elements/EFMedia/videoTasks/makeVideoSegmentIdTask.ts +23 -0
  209. package/src/elements/EFMedia.browsertest.ts +696 -271
  210. package/src/elements/EFMedia.ts +218 -776
  211. package/src/elements/EFTemporal.browsertest.ts +0 -1
  212. package/src/elements/EFTemporal.ts +13 -3
  213. package/src/elements/EFTimegroup.browsertest.ts +6 -3
  214. package/src/elements/EFTimegroup.ts +221 -27
  215. package/src/elements/EFVideo.browsertest.ts +758 -0
  216. package/src/elements/EFVideo.ts +418 -68
  217. package/src/elements/EFWaveform.ts +5 -5
  218. package/src/elements/MediaController.ts +98 -0
  219. package/src/elements/SampleBuffer.ts +97 -0
  220. package/src/elements/printTaskStatus.ts +16 -0
  221. package/src/elements/updateAnimations.ts +6 -0
  222. package/src/gui/ContextMixin.ts +23 -104
  223. package/src/gui/TWMixin.ts +10 -3
  224. package/src/gui/services/ElementConnectionManager.browsertest.ts +263 -0
  225. package/src/gui/services/ElementConnectionManager.ts +224 -0
  226. package/src/gui/services/PlaybackController.browsertest.ts +437 -0
  227. package/src/gui/services/PlaybackController.ts +521 -0
  228. package/src/services/MediaSourceManager.ts +333 -0
  229. package/src/transcoding/cache/CacheManager.ts +208 -0
  230. package/src/transcoding/cache/RequestDeduplicator.test.ts +170 -0
  231. package/src/transcoding/cache/RequestDeduplicator.ts +65 -0
  232. package/src/transcoding/types/index.ts +265 -0
  233. package/src/transcoding/utils/MediaUtils.ts +63 -0
  234. package/src/transcoding/utils/UrlGenerator.ts +68 -0
  235. package/src/transcoding/utils/constants.ts +36 -0
  236. package/src/utils/LRUCache.ts +153 -0
  237. package/test/EFVideo.framegen.browsertest.ts +127 -0
  238. package/test/__cache__/GET__api_v1_transcode_audio_1_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__32da3954ba60c96ad732020c65a08ebc/data.bin +0 -0
  239. package/test/__cache__/GET__api_v1_transcode_audio_1_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__32da3954ba60c96ad732020c65a08ebc/metadata.json +21 -0
  240. package/test/__cache__/GET__api_v1_transcode_audio_2_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__b0b2b07efcf607de8ee0f650328c32f7/data.bin +0 -0
  241. package/test/__cache__/GET__api_v1_transcode_audio_2_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__b0b2b07efcf607de8ee0f650328c32f7/metadata.json +21 -0
  242. package/test/__cache__/GET__api_v1_transcode_audio_3_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__a75c2252b542e0c152c780e9a8d7b154/data.bin +0 -0
  243. package/test/__cache__/GET__api_v1_transcode_audio_3_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__a75c2252b542e0c152c780e9a8d7b154/metadata.json +21 -0
  244. package/test/__cache__/GET__api_v1_transcode_audio_4_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__a64ff1cfb1b52cae14df4b5dfa1e222b/data.bin +0 -0
  245. package/test/__cache__/GET__api_v1_transcode_audio_4_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__a64ff1cfb1b52cae14df4b5dfa1e222b/metadata.json +21 -0
  246. package/test/__cache__/GET__api_v1_transcode_audio_5_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__91e8a522f950809b9f09f4173113b4b0/data.bin +0 -0
  247. package/test/__cache__/GET__api_v1_transcode_audio_5_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__91e8a522f950809b9f09f4173113b4b0/metadata.json +21 -0
  248. package/test/__cache__/GET__api_v1_transcode_audio_init_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__e66d2c831d951e74ad0aeaa6489795d0/data.bin +0 -0
  249. package/test/__cache__/GET__api_v1_transcode_audio_init_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__e66d2c831d951e74ad0aeaa6489795d0/metadata.json +21 -0
  250. package/test/__cache__/GET__api_v1_transcode_high_1_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__26197f6f7c46cacb0a71134131c3f775/data.bin +0 -0
  251. package/test/__cache__/GET__api_v1_transcode_high_1_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__26197f6f7c46cacb0a71134131c3f775/metadata.json +21 -0
  252. package/test/__cache__/GET__api_v1_transcode_high_2_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__4cb6774cd3650ccf59c8f8dc6678c0b9/data.bin +0 -0
  253. package/test/__cache__/GET__api_v1_transcode_high_2_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__4cb6774cd3650ccf59c8f8dc6678c0b9/metadata.json +21 -0
  254. package/test/__cache__/GET__api_v1_transcode_high_3_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__0b3b2b1c8933f7fcf8a9ecaa88d58b41/data.bin +0 -0
  255. package/test/__cache__/GET__api_v1_transcode_high_3_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__0b3b2b1c8933f7fcf8a9ecaa88d58b41/metadata.json +21 -0
  256. package/test/__cache__/GET__api_v1_transcode_high_init_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__0798c479b44aaeef850609a430f6e613/data.bin +0 -0
  257. package/test/__cache__/GET__api_v1_transcode_high_init_m4s_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__0798c479b44aaeef850609a430f6e613/metadata.json +21 -0
  258. package/test/__cache__/GET__api_v1_transcode_manifest_json_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__3be92a0437de726b431ed5af2369158a/data.bin +1 -0
  259. package/test/__cache__/GET__api_v1_transcode_manifest_json_url_http_3A_2F_2Fweb_3A3000_2Fhead_moov_480p_mp4__3be92a0437de726b431ed5af2369158a/metadata.json +19 -0
  260. package/test/createJitTestClips.ts +425 -0
  261. package/test/recordReplayProxyPlugin.js +302 -0
  262. package/test/useAssetMSW.ts +49 -0
  263. package/test/useMSW.ts +44 -0
  264. package/types.json +1 -1
  265. package/dist/gui/TWMixin.css.js +0 -4
  266. /package/dist/elements/{TargetController.test.d.ts → TargetController.browsertest.d.ts} +0 -0
  267. /package/src/elements/{TargetController.test.ts → TargetController.browsertest.ts} +0 -0
@@ -1,378 +1,284 @@
1
- import { createContext, consume } from "@lit/context";
2
- import { property, state } from "lit/decorators.js";
3
- import { Task } from "@lit/task";
4
1
  import { EF_INTERACTIVE } from "../EF_INTERACTIVE.js";
5
2
  import { durationConverter } from "./durationConverter.js";
6
- var __defProp = Object.defineProperty;
7
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
- var __decorateClass = (decorators, target, key, kind) => {
9
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
10
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
11
- if (decorator = decorators[i])
12
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
13
- if (kind && result) __defProp(target, key, result);
14
- return result;
15
- };
16
- const timegroupContext = createContext(
17
- Symbol("timeGroupContext")
18
- );
3
+ import { consume, createContext } from "@lit/context";
4
+ import { Task } from "@lit/task";
5
+ import { property, state } from "lit/decorators.js";
6
+ import _decorate from "@oxc-project/runtime/helpers/decorate";
7
+ const timegroupContext = createContext(Symbol("timeGroupContext"));
19
8
  const isEFTemporal = (obj) => obj[EF_TEMPORAL];
20
9
  const EF_TEMPORAL = Symbol("EF_TEMPORAL");
21
10
  const deepGetElementsWithFrameTasks = (element, elements = []) => {
22
- for (const child of element.children) {
23
- if ("frameTask" in child && child.frameTask instanceof Task) {
24
- elements.push(child);
25
- }
26
- deepGetElementsWithFrameTasks(child, elements);
27
- }
28
- return elements;
11
+ for (const child of element.children) {
12
+ if ("frameTask" in child && child.frameTask instanceof Task) elements.push(child);
13
+ deepGetElementsWithFrameTasks(child, elements);
14
+ }
15
+ return elements;
29
16
  };
30
17
  let temporalCache;
31
18
  const resetTemporalCache = () => {
32
- temporalCache = /* @__PURE__ */ new Map();
33
- if (typeof requestAnimationFrame !== "undefined") {
34
- requestAnimationFrame(resetTemporalCache);
35
- }
19
+ temporalCache = /* @__PURE__ */ new Map();
20
+ if (typeof requestAnimationFrame !== "undefined") requestAnimationFrame(resetTemporalCache);
36
21
  };
37
22
  resetTemporalCache();
38
23
  const shallowGetTemporalElements = (element, temporals = []) => {
39
- const cachedResult = temporalCache.get(element);
40
- if (cachedResult) {
41
- return cachedResult;
42
- }
43
- for (const child of element.children) {
44
- if (isEFTemporal(child)) {
45
- temporals.push(child);
46
- } else {
47
- shallowGetTemporalElements(child, temporals);
48
- }
49
- }
50
- temporalCache.set(element, temporals);
51
- return temporals;
24
+ const cachedResult = temporalCache.get(element);
25
+ if (cachedResult) return cachedResult;
26
+ for (const child of element.children) if (isEFTemporal(child)) temporals.push(child);
27
+ else shallowGetTemporalElements(child, temporals);
28
+ temporalCache.set(element, temporals);
29
+ return temporals;
30
+ };
31
+ var OwnCurrentTimeController = class {
32
+ constructor(host, temporal) {
33
+ this.host = host;
34
+ this.temporal = temporal;
35
+ host.addController(this);
36
+ }
37
+ hostUpdated() {
38
+ this.temporal.requestUpdate("ownCurrentTimeMs");
39
+ }
40
+ remove() {
41
+ this.host.removeController(this);
42
+ }
52
43
  };
53
- class OwnCurrentTimeController {
54
- constructor(host, temporal) {
55
- this.host = host;
56
- this.temporal = temporal;
57
- host.addController(this);
58
- }
59
- hostUpdated() {
60
- this.temporal.requestUpdate("ownCurrentTimeMs");
61
- }
62
- remove() {
63
- this.host.removeController(this);
64
- }
65
- }
66
44
  let startTimeMsCache = /* @__PURE__ */ new WeakMap();
67
45
  const resetStartTimeMsCache = () => {
68
- startTimeMsCache = /* @__PURE__ */ new WeakMap();
69
- if (typeof requestAnimationFrame !== "undefined") {
70
- requestAnimationFrame(resetStartTimeMsCache);
71
- }
46
+ startTimeMsCache = /* @__PURE__ */ new WeakMap();
47
+ if (typeof requestAnimationFrame !== "undefined") requestAnimationFrame(resetStartTimeMsCache);
72
48
  };
73
49
  resetStartTimeMsCache();
74
- const EFTemporal = (superClass) => {
75
- class TemporalMixinClass extends superClass {
76
- constructor() {
77
- super(...arguments);
78
- this._offsetMs = 0;
79
- this._trimStartMs = void 0;
80
- this._trimEndMs = void 0;
81
- this._sourceInMs = void 0;
82
- this._sourceOutMs = void 0;
83
- this._startOffsetMs = 0;
84
- this.rootTimegroup = this.getRootTimegroup();
85
- this.frameTask = new Task(this, {
86
- autoRun: EF_INTERACTIVE,
87
- args: () => [this.ownCurrentTimeMs],
88
- task: async ([], { signal: _signal }) => {
89
- let fullyUpdated = await this.updateComplete;
90
- while (!fullyUpdated) {
91
- fullyUpdated = await this.updateComplete;
92
- }
93
- }
94
- });
95
- }
96
- #parentTimegroup;
97
- set parentTimegroup(value) {
98
- this.#parentTimegroup = value;
99
- this.ownCurrentTimeController?.remove();
100
- this.rootTimegroup = this.getRootTimegroup();
101
- if (this.rootTimegroup) {
102
- this.ownCurrentTimeController = new OwnCurrentTimeController(
103
- this.rootTimegroup,
104
- this
105
- );
106
- }
107
- }
108
- disconnectedCallback() {
109
- super.disconnectedCallback();
110
- this.ownCurrentTimeController?.remove();
111
- }
112
- get parentTimegroup() {
113
- return this.#parentTimegroup;
114
- }
115
- set duration(value) {
116
- if (value !== void 0) {
117
- this.setAttribute("duration", value);
118
- } else {
119
- this.removeAttribute("duration");
120
- }
121
- }
122
- get trimStartMs() {
123
- if (this._trimStartMs === void 0) {
124
- return void 0;
125
- }
126
- return Math.min(
127
- Math.max(this._trimStartMs, 0),
128
- this.intrinsicDurationMs ?? 0
129
- );
130
- }
131
- set trimStartMs(value) {
132
- this._trimStartMs = value;
133
- }
134
- get trimEndMs() {
135
- if (this._trimEndMs === void 0) {
136
- return void 0;
137
- }
138
- return Math.min(this._trimEndMs, this.intrinsicDurationMs ?? 0);
139
- }
140
- set trimEndMs(value) {
141
- this._trimEndMs = value;
142
- }
143
- get sourceInMs() {
144
- if (this._sourceInMs === void 0) {
145
- return void 0;
146
- }
147
- return Math.max(this._sourceInMs, 0);
148
- }
149
- set sourceInMs(value) {
150
- this._sourceInMs = value;
151
- }
152
- get sourceOutMs() {
153
- if (this._sourceOutMs === void 0) {
154
- return void 0;
155
- }
156
- if (this.intrinsicDurationMs && this._sourceOutMs > this.intrinsicDurationMs) {
157
- return this.intrinsicDurationMs;
158
- }
159
- return Math.max(this._sourceOutMs, 0);
160
- }
161
- set sourceOutMs(value) {
162
- this._sourceOutMs = value;
163
- }
164
- get startOffsetMs() {
165
- return this._startOffsetMs;
166
- }
167
- getRootTimegroup() {
168
- let parent = this.tagName === "EF-TIMEGROUP" ? this : this.parentTimegroup;
169
- while (parent?.parentTimegroup) {
170
- parent = parent.parentTimegroup;
171
- }
172
- return parent;
173
- }
174
- get hasExplicitDuration() {
175
- return this._durationMs !== void 0;
176
- }
177
- get explicitDurationMs() {
178
- if (this.hasExplicitDuration) {
179
- return this._durationMs;
180
- }
181
- return void 0;
182
- }
183
- get hasOwnDuration() {
184
- return false;
185
- }
186
- get intrinsicDurationMs() {
187
- return void 0;
188
- }
189
- get durationMs() {
190
- if (this.intrinsicDurationMs === void 0) {
191
- return this._durationMs || this.parentTimegroup?.durationMs || 0;
192
- }
193
- if (this.trimStartMs || this.trimEndMs) {
194
- const trimmedDurationMs = this.intrinsicDurationMs - (this.trimStartMs ?? 0) - (this.trimEndMs ?? 0);
195
- if (trimmedDurationMs < 0) {
196
- return 0;
197
- }
198
- return trimmedDurationMs;
199
- }
200
- if (this.sourceInMs || this.sourceOutMs) {
201
- const sourceInMs = this.sourceInMs ?? 0;
202
- const sourceOutMs = this.sourceOutMs ?? this.intrinsicDurationMs;
203
- if (sourceInMs >= sourceOutMs) {
204
- return 0;
205
- }
206
- return sourceOutMs - sourceInMs;
207
- }
208
- return this.intrinsicDurationMs;
209
- }
210
- get sourceStartMs() {
211
- return this.trimStartMs ?? this.sourceInMs ?? 0;
212
- }
213
- get offsetMs() {
214
- return this._offsetMs || 0;
215
- }
216
- get parentTemporal() {
217
- let parent = this.parentElement;
218
- while (parent && !isEFTemporal(parent)) {
219
- parent = parent.parentElement;
220
- }
221
- return parent;
222
- }
223
- /**
224
- * The start time of the element within its parent timegroup.
225
- */
226
- get startTimeWithinParentMs() {
227
- if (!this.parentTemporal) {
228
- return 0;
229
- }
230
- return this.startTimeMs - this.parentTemporal.startTimeMs;
231
- }
232
- get startTimeMs() {
233
- const cachedStartTime = startTimeMsCache.get(this);
234
- if (cachedStartTime !== void 0) {
235
- return cachedStartTime;
236
- }
237
- const parentTimegroup = this.parentTimegroup;
238
- if (!parentTimegroup) {
239
- startTimeMsCache.set(this, 0);
240
- return 0;
241
- }
242
- switch (parentTimegroup.mode) {
243
- case "sequence": {
244
- const siblingTemorals = shallowGetTemporalElements(parentTimegroup);
245
- const ownIndex = siblingTemorals?.indexOf(
246
- this
247
- );
248
- if (ownIndex === 0) {
249
- startTimeMsCache.set(this, parentTimegroup.startTimeMs);
250
- return parentTimegroup.startTimeMs;
251
- }
252
- const previous = siblingTemorals?.[(ownIndex ?? 0) - 1];
253
- if (!previous) {
254
- throw new Error("Previous temporal element not found");
255
- }
256
- startTimeMsCache.set(
257
- this,
258
- previous.startTimeMs + previous.durationMs - parentTimegroup.overlapMs
259
- );
260
- return previous.startTimeMs + previous.durationMs - parentTimegroup.overlapMs;
261
- }
262
- case "fit":
263
- case "contain":
264
- case "fixed":
265
- startTimeMsCache.set(
266
- this,
267
- parentTimegroup.startTimeMs + this.offsetMs
268
- );
269
- return parentTimegroup.startTimeMs + this.offsetMs;
270
- default:
271
- throw new Error(`Invalid time mode: ${parentTimegroup.mode}`);
272
- }
273
- }
274
- get endTimeMs() {
275
- return this.startTimeMs + this.durationMs;
276
- }
277
- /**
278
- * The current time of the element within itself.
279
- * Compare with `currentTimeMs` to see the current time with respect to the root timegroup
280
- */
281
- get ownCurrentTimeMs() {
282
- if (this.rootTimegroup) {
283
- return Math.min(
284
- Math.max(0, this.rootTimegroup.currentTimeMs - this.startTimeMs),
285
- this.durationMs
286
- );
287
- }
288
- return 0;
289
- }
290
- /**
291
- * Used to calculate the internal currentTimeMs of the element. This is useful
292
- * for mapping to internal media time codes for audio/video elements.
293
- */
294
- get currentSourceTimeMs() {
295
- const leadingTrimMs = this.sourceInMs || this.trimStartMs || 0;
296
- return this.ownCurrentTimeMs + leadingTrimMs;
297
- }
298
- updated(changedProperties) {
299
- super.updated(changedProperties);
300
- if (changedProperties.has("currentTime") || changedProperties.has("ownCurrentTimeMs")) {
301
- const timelineTimeMs = (this.rootTimegroup ?? this).ownCurrentTimeMs;
302
- if (this.startTimeMs > timelineTimeMs || this.endTimeMs < timelineTimeMs) {
303
- this.style.display = "none";
304
- return;
305
- }
306
- this.style.display = "";
307
- }
308
- }
309
- }
310
- __decorateClass([
311
- consume({ context: timegroupContext, subscribe: true }),
312
- property({ attribute: false })
313
- ], TemporalMixinClass.prototype, "parentTimegroup", 1);
314
- __decorateClass([
315
- property({
316
- type: String,
317
- attribute: "offset",
318
- converter: durationConverter
319
- })
320
- ], TemporalMixinClass.prototype, "_offsetMs", 2);
321
- __decorateClass([
322
- property({
323
- type: Number,
324
- attribute: "duration",
325
- converter: durationConverter
326
- })
327
- ], TemporalMixinClass.prototype, "_durationMs", 2);
328
- __decorateClass([
329
- property({
330
- type: Number,
331
- attribute: "trimstart",
332
- converter: durationConverter
333
- })
334
- ], TemporalMixinClass.prototype, "_trimStartMs", 2);
335
- __decorateClass([
336
- property({
337
- type: Number,
338
- attribute: "trimend",
339
- converter: durationConverter
340
- })
341
- ], TemporalMixinClass.prototype, "_trimEndMs", 2);
342
- __decorateClass([
343
- property({
344
- type: Number,
345
- attribute: "sourcein",
346
- converter: durationConverter
347
- })
348
- ], TemporalMixinClass.prototype, "_sourceInMs", 2);
349
- __decorateClass([
350
- property({
351
- type: Number,
352
- attribute: "sourceout",
353
- converter: durationConverter
354
- })
355
- ], TemporalMixinClass.prototype, "_sourceOutMs", 2);
356
- __decorateClass([
357
- property({
358
- type: Number,
359
- attribute: "startoffset",
360
- converter: durationConverter
361
- })
362
- ], TemporalMixinClass.prototype, "_startOffsetMs", 2);
363
- __decorateClass([
364
- state()
365
- ], TemporalMixinClass.prototype, "rootTimegroup", 2);
366
- Object.defineProperty(TemporalMixinClass.prototype, EF_TEMPORAL, {
367
- value: true
368
- });
369
- return TemporalMixinClass;
50
+ const flushStartTimeMsCache = () => {
51
+ startTimeMsCache = /* @__PURE__ */ new WeakMap();
370
52
  };
371
- export {
372
- EFTemporal,
373
- OwnCurrentTimeController,
374
- deepGetElementsWithFrameTasks,
375
- isEFTemporal,
376
- shallowGetTemporalElements,
377
- timegroupContext
53
+ const EFTemporal = (superClass) => {
54
+ class TemporalMixinClass extends superClass {
55
+ constructor(..._args) {
56
+ super(..._args);
57
+ this._offsetMs = 0;
58
+ this._trimStartMs = void 0;
59
+ this._trimEndMs = void 0;
60
+ this._sourceInMs = void 0;
61
+ this._sourceOutMs = void 0;
62
+ this._startOffsetMs = 0;
63
+ this.rootTimegroup = this.getRootTimegroup();
64
+ this.frameTask = new Task(this, {
65
+ autoRun: EF_INTERACTIVE,
66
+ args: () => [this.ownCurrentTimeMs],
67
+ task: async ([], { signal: _signal }) => {
68
+ let fullyUpdated = await this.updateComplete;
69
+ while (!fullyUpdated) fullyUpdated = await this.updateComplete;
70
+ }
71
+ });
72
+ }
73
+ #parentTimegroup;
74
+ set parentTimegroup(value) {
75
+ this.#parentTimegroup = value;
76
+ this.ownCurrentTimeController?.remove();
77
+ this.rootTimegroup = this.getRootTimegroup();
78
+ if (this.rootTimegroup) this.ownCurrentTimeController = new OwnCurrentTimeController(this.rootTimegroup, this);
79
+ }
80
+ disconnectedCallback() {
81
+ super.disconnectedCallback();
82
+ this.ownCurrentTimeController?.remove();
83
+ }
84
+ get parentTimegroup() {
85
+ return this.#parentTimegroup;
86
+ }
87
+ set duration(value) {
88
+ if (value !== void 0) this.setAttribute("duration", value);
89
+ else this.removeAttribute("duration");
90
+ }
91
+ get trimStartMs() {
92
+ if (this._trimStartMs === void 0) return void 0;
93
+ return Math.min(Math.max(this._trimStartMs, 0), this.intrinsicDurationMs ?? 0);
94
+ }
95
+ set trimStartMs(value) {
96
+ this._trimStartMs = value;
97
+ }
98
+ get trimEndMs() {
99
+ if (this._trimEndMs === void 0) return void 0;
100
+ return Math.min(this._trimEndMs, this.intrinsicDurationMs ?? 0);
101
+ }
102
+ set trimEndMs(value) {
103
+ this._trimEndMs = value;
104
+ }
105
+ get sourceInMs() {
106
+ if (this._sourceInMs === void 0) return void 0;
107
+ return Math.max(this._sourceInMs, 0);
108
+ }
109
+ set sourceInMs(value) {
110
+ this._sourceInMs = value;
111
+ }
112
+ get sourceOutMs() {
113
+ if (this._sourceOutMs === void 0) return void 0;
114
+ if (this.intrinsicDurationMs && this._sourceOutMs > this.intrinsicDurationMs) return this.intrinsicDurationMs;
115
+ return Math.max(this._sourceOutMs, 0);
116
+ }
117
+ set sourceOutMs(value) {
118
+ this._sourceOutMs = value;
119
+ }
120
+ get startOffsetMs() {
121
+ return this._startOffsetMs;
122
+ }
123
+ getRootTimegroup() {
124
+ let parent = this.tagName === "EF-TIMEGROUP" ? this : this.parentTimegroup;
125
+ while (parent?.parentTimegroup) parent = parent.parentTimegroup;
126
+ return parent;
127
+ }
128
+ get hasExplicitDuration() {
129
+ return this._durationMs !== void 0;
130
+ }
131
+ get explicitDurationMs() {
132
+ if (this.hasExplicitDuration) return this._durationMs;
133
+ return void 0;
134
+ }
135
+ get hasOwnDuration() {
136
+ return false;
137
+ }
138
+ get intrinsicDurationMs() {
139
+ return void 0;
140
+ }
141
+ get durationMs() {
142
+ if (this.intrinsicDurationMs === void 0) return this._durationMs || this.parentTimegroup?.durationMs || 0;
143
+ if (this.trimStartMs || this.trimEndMs) {
144
+ const trimmedDurationMs = this.intrinsicDurationMs - (this.trimStartMs ?? 0) - (this.trimEndMs ?? 0);
145
+ if (trimmedDurationMs < 0) return 0;
146
+ return trimmedDurationMs;
147
+ }
148
+ if (this.sourceInMs || this.sourceOutMs) {
149
+ const sourceInMs = this.sourceInMs ?? 0;
150
+ const sourceOutMs = this.sourceOutMs ?? this.intrinsicDurationMs;
151
+ if (sourceInMs >= sourceOutMs) return 0;
152
+ return sourceOutMs - sourceInMs;
153
+ }
154
+ return this.intrinsicDurationMs;
155
+ }
156
+ get sourceStartMs() {
157
+ return this.trimStartMs ?? this.sourceInMs ?? 0;
158
+ }
159
+ get offsetMs() {
160
+ return this._offsetMs || 0;
161
+ }
162
+ get parentTemporal() {
163
+ let parent = this.parentElement;
164
+ while (parent && !isEFTemporal(parent)) parent = parent.parentElement;
165
+ return parent;
166
+ }
167
+ /**
168
+ * The start time of the element within its parent timegroup.
169
+ */
170
+ get startTimeWithinParentMs() {
171
+ if (!this.parentTemporal) return 0;
172
+ return this.startTimeMs - this.parentTemporal.startTimeMs;
173
+ }
174
+ get startTimeMs() {
175
+ const cachedStartTime = startTimeMsCache.get(this);
176
+ if (cachedStartTime !== void 0) return cachedStartTime;
177
+ const parentTimegroup = this.parentTimegroup;
178
+ if (!parentTimegroup) {
179
+ startTimeMsCache.set(this, 0);
180
+ return 0;
181
+ }
182
+ switch (parentTimegroup.mode) {
183
+ case "sequence": {
184
+ const siblingTemorals = shallowGetTemporalElements(parentTimegroup);
185
+ const ownIndex = siblingTemorals?.indexOf(this);
186
+ if (ownIndex === -1) return 0;
187
+ if (ownIndex === 0) {
188
+ startTimeMsCache.set(this, parentTimegroup.startTimeMs);
189
+ return parentTimegroup.startTimeMs;
190
+ }
191
+ const previous = siblingTemorals?.[(ownIndex ?? 0) - 1];
192
+ if (!previous) {
193
+ console.error("Previous temporal element not found", {
194
+ ownIndex,
195
+ siblingTemorals
196
+ });
197
+ throw new Error("Previous temporal element not found");
198
+ }
199
+ startTimeMsCache.set(this, previous.startTimeMs + previous.durationMs - parentTimegroup.overlapMs);
200
+ return previous.startTimeMs + previous.durationMs - parentTimegroup.overlapMs;
201
+ }
202
+ case "fit":
203
+ case "contain":
204
+ case "fixed":
205
+ startTimeMsCache.set(this, parentTimegroup.startTimeMs + this.offsetMs);
206
+ return parentTimegroup.startTimeMs + this.offsetMs;
207
+ default: throw new Error(`Invalid time mode: ${parentTimegroup.mode}`);
208
+ }
209
+ }
210
+ get endTimeMs() {
211
+ return this.startTimeMs + this.durationMs;
212
+ }
213
+ /**
214
+ * The current time of the element within itself.
215
+ * Compare with `currentTimeMs` to see the current time with respect to the root timegroup
216
+ */
217
+ get ownCurrentTimeMs() {
218
+ if (this.rootTimegroup) return Math.min(Math.max(0, this.rootTimegroup.currentTimeMs - this.startTimeMs), this.durationMs);
219
+ return 0;
220
+ }
221
+ /**
222
+ * Used to calculate the internal currentTimeMs of the element. This is useful
223
+ * for mapping to internal media time codes for audio/video elements.
224
+ */
225
+ get currentSourceTimeMs() {
226
+ const leadingTrimMs = this.sourceInMs || this.trimStartMs || 0;
227
+ return this.ownCurrentTimeMs + leadingTrimMs;
228
+ }
229
+ updated(changedProperties) {
230
+ super.updated(changedProperties);
231
+ if (changedProperties.has("currentTime") || changedProperties.has("ownCurrentTimeMs")) {
232
+ const timelineTimeMs = (this.rootTimegroup ?? this).ownCurrentTimeMs;
233
+ if (this.startTimeMs > timelineTimeMs || this.endTimeMs < timelineTimeMs) {
234
+ this.style.display = "none";
235
+ return;
236
+ }
237
+ this.style.display = "";
238
+ }
239
+ }
240
+ }
241
+ _decorate([consume({
242
+ context: timegroupContext,
243
+ subscribe: true
244
+ }), property({ attribute: false })], TemporalMixinClass.prototype, "parentTimegroup", null);
245
+ _decorate([property({
246
+ type: String,
247
+ attribute: "offset",
248
+ converter: durationConverter
249
+ })], TemporalMixinClass.prototype, "_offsetMs", void 0);
250
+ _decorate([property({
251
+ type: Number,
252
+ attribute: "duration",
253
+ converter: durationConverter
254
+ })], TemporalMixinClass.prototype, "_durationMs", void 0);
255
+ _decorate([property({
256
+ type: Number,
257
+ attribute: "trimstart",
258
+ converter: durationConverter
259
+ })], TemporalMixinClass.prototype, "_trimStartMs", void 0);
260
+ _decorate([property({
261
+ type: Number,
262
+ attribute: "trimend",
263
+ converter: durationConverter
264
+ })], TemporalMixinClass.prototype, "_trimEndMs", void 0);
265
+ _decorate([property({
266
+ type: Number,
267
+ attribute: "sourcein",
268
+ converter: durationConverter
269
+ })], TemporalMixinClass.prototype, "_sourceInMs", void 0);
270
+ _decorate([property({
271
+ type: Number,
272
+ attribute: "sourceout",
273
+ converter: durationConverter
274
+ })], TemporalMixinClass.prototype, "_sourceOutMs", void 0);
275
+ _decorate([property({
276
+ type: Number,
277
+ attribute: "startoffset",
278
+ converter: durationConverter
279
+ })], TemporalMixinClass.prototype, "_startOffsetMs", void 0);
280
+ _decorate([state()], TemporalMixinClass.prototype, "rootTimegroup", void 0);
281
+ Object.defineProperty(TemporalMixinClass.prototype, EF_TEMPORAL, { value: true });
282
+ return TemporalMixinClass;
378
283
  };
284
+ export { EFTemporal, deepGetElementsWithFrameTasks, flushStartTimeMsCache, isEFTemporal, shallowGetTemporalElements, timegroupContext };
@@ -6,6 +6,8 @@ export declare class EFTimegroup extends EFTimegroup_base {
6
6
  #private;
7
7
  static styles: import('lit').CSSResult;
8
8
  _timeGroupContext: this;
9
+ private isFrameUpdateInProgress;
10
+ private queuedTimeUpdate;
9
11
  mode: "fit" | "fixed" | "sequence" | "contain";
10
12
  overlapMs: number;
11
13
  fit: "none" | "contain" | "cover";
@@ -13,6 +15,10 @@ export declare class EFTimegroup extends EFTimegroup_base {
13
15
  get currentTime(): number;
14
16
  get currentTimeMs(): number;
15
17
  set currentTimeMs(ms: number);
18
+ /**
19
+ * Determines if this is a root timegroup (no parent timegroups)
20
+ */
21
+ get isRootTimegroup(): boolean;
16
22
  render(): import('lit-html').TemplateResult<1>;
17
23
  maybeLoadTimeFromLocalStorage(): number;
18
24
  connectedCallback(): void;
@@ -21,13 +27,15 @@ export declare class EFTimegroup extends EFTimegroup_base {
21
27
  get intrinsicDurationMs(): number | undefined;
22
28
  get hasOwnDuration(): boolean;
23
29
  get durationMs(): number;
30
+ getPendingFrameTasks(): Promise<Task<readonly unknown[], unknown>[]>;
31
+ waitForFrameTasks(): Promise<void>;
24
32
  /**
25
33
  * Wait for all media elements to load their initial segments.
26
34
  * Ideally we would only need the extracted index json data, but
27
35
  * that caused issues with constructing audio data. We had negative durations
28
36
  * in calculations and it was not clear why.
29
37
  */
30
- waitForMediaDurations(): Promise<(Record<number, import('../../../assets/src/index.ts').TrackFragmentIndex> | undefined)[]>;
38
+ waitForMediaDurations(): Promise<void>;
31
39
  get childTemporals(): import('./EFTemporal.js').TemporalMixinInterface[];
32
40
  protected updated(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
33
41
  private updateAnimations;
@@ -45,6 +53,11 @@ export declare class EFTimegroup extends EFTimegroup_base {
45
53
  wrapWithWorkbench(): void;
46
54
  get efElements(): Element[];
47
55
  renderAudio(fromMs: number, toMs: number): Promise<AudioBuffer>;
56
+ /**
57
+ * TEMPORARY TEST METHOD: Renders audio and immediately plays it back
58
+ * Usage: timegroup.testPlayAudio(0, 5000) // Play first 5 seconds
59
+ */
60
+ testPlayAudio(fromMs: number, toMs: number): Promise<void>;
48
61
  loadMd5Sums(): Promise<void>;
49
62
  frameTask: Task<readonly [number, number], void>;
50
63
  }