@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,28 +1,18 @@
1
+ import { fetchContext } from "../gui/fetchContext.js";
1
2
  import { consume } from "@lit/context";
3
+ import _decorate from "@oxc-project/runtime/helpers/decorate";
2
4
  import { state } from "lit/decorators/state.js";
3
- import { fetchContext } from "../gui/fetchContext.js";
4
- var __defProp = Object.defineProperty;
5
- var __decorateClass = (decorators, target, key, kind) => {
6
- var result = void 0;
7
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
8
- if (decorator = decorators[i])
9
- result = decorator(target, key, result) || result;
10
- if (result) __defProp(target, key, result);
11
- return result;
12
- };
13
5
  function FetchMixin(superClass) {
14
- class FetchElement extends superClass {
15
- constructor() {
16
- super(...arguments);
17
- this.fetch = fetch.bind(window);
18
- }
19
- }
20
- __decorateClass([
21
- consume({ context: fetchContext, subscribe: true }),
22
- state()
23
- ], FetchElement.prototype, "fetch");
24
- return FetchElement;
6
+ class FetchElement extends superClass {
7
+ constructor(..._args) {
8
+ super(..._args);
9
+ this.fetch = fetch.bind(window);
10
+ }
11
+ }
12
+ _decorate([consume({
13
+ context: fetchContext,
14
+ subscribe: true
15
+ }), state()], FetchElement.prototype, "fetch", void 0);
16
+ return FetchElement;
25
17
  }
26
- export {
27
- FetchMixin
28
- };
18
+ export { FetchMixin };
@@ -0,0 +1,30 @@
1
+ import { ReactiveController, ReactiveControllerHost } from 'lit';
2
+ export declare class MediaController implements ReactiveController {
3
+ #private;
4
+ private host;
5
+ constructor(host: ReactiveControllerHost & {
6
+ src: string;
7
+ assetId: string | null;
8
+ mode: "asset" | "jit-transcode" | "auto";
9
+ });
10
+ get mode(): "asset" | "jit-transcode";
11
+ get src(): string | null;
12
+ set src(value: string | null);
13
+ get assetId(): string | null;
14
+ set assetId(value: string | null);
15
+ changes: Map<string, {
16
+ oldValue: any;
17
+ newValue: any;
18
+ }> | null;
19
+ updatePending: boolean;
20
+ trackUpdate(key: string, oldValue: any, newValue: any): void;
21
+ endUpdate(): void;
22
+ handleUpdate(changes: Map<string, {
23
+ oldValue: any;
24
+ newValue: any;
25
+ }>): void;
26
+ hostUpdated(): void;
27
+ hostConnected(): void;
28
+ hostDisconnected(): void;
29
+ updated(): void;
30
+ }
@@ -0,0 +1,14 @@
1
+ import { AudioSample, VideoSample } from 'mediabunny';
2
+ export type MediaSample = VideoSample | AudioSample;
3
+ export declare class SampleBuffer {
4
+ private buffer;
5
+ private bufferSize;
6
+ constructor(bufferSize?: number);
7
+ push(sample: MediaSample): void;
8
+ clear(): void;
9
+ peek(): MediaSample | undefined;
10
+ find(desiredSeekTimeMs: number): MediaSample | undefined;
11
+ get length(): number;
12
+ get firstTimestamp(): number;
13
+ getContents(): MediaSample[];
14
+ }
@@ -0,0 +1,52 @@
1
+ var SampleBuffer = class {
2
+ constructor(bufferSize = 10) {
3
+ this.buffer = [];
4
+ this.bufferSize = bufferSize;
5
+ }
6
+ push(sample) {
7
+ const currentBuffer = [...this.buffer];
8
+ currentBuffer.push(sample);
9
+ if (currentBuffer.length > this.bufferSize) {
10
+ const shifted = currentBuffer.shift();
11
+ if (shifted) try {
12
+ shifted.close();
13
+ } catch (_error) {}
14
+ }
15
+ this.buffer = currentBuffer;
16
+ }
17
+ clear() {
18
+ const toClose = this.buffer;
19
+ this.buffer = [];
20
+ for (const sample of toClose) try {
21
+ sample.close();
22
+ } catch (_error) {}
23
+ }
24
+ peek() {
25
+ const currentBuffer = this.buffer;
26
+ return currentBuffer[0];
27
+ }
28
+ find(desiredSeekTimeMs) {
29
+ const currentBuffer = [...this.buffer];
30
+ if (currentBuffer.length === 0) return void 0;
31
+ const roundToMicroseconds = (timeMs) => Math.round(timeMs * 1e3) / 1e3;
32
+ const targetTimeMs = roundToMicroseconds(desiredSeekTimeMs);
33
+ for (const sample of currentBuffer) {
34
+ const sampleStartMs = roundToMicroseconds((sample.timestamp || 0) * 1e3);
35
+ const sampleDurationMs = roundToMicroseconds((sample.duration || 0) * 1e3);
36
+ const sampleEndMs = sampleStartMs + sampleDurationMs;
37
+ if (targetTimeMs >= sampleStartMs && targetTimeMs < sampleEndMs) return sample;
38
+ }
39
+ return void 0;
40
+ }
41
+ get length() {
42
+ return this.buffer.length;
43
+ }
44
+ get firstTimestamp() {
45
+ const currentBuffer = this.buffer;
46
+ return currentBuffer[0]?.timestamp || 0;
47
+ }
48
+ getContents() {
49
+ return [...this.buffer];
50
+ }
51
+ };
52
+ export { SampleBuffer };
@@ -1,164 +1,138 @@
1
1
  import { LitElement } from "lit";
2
2
  const EF_TARGETABLE = Symbol("EF_TARGETABLE");
3
- class TargetRegistry {
4
- constructor() {
5
- this.idMap = /* @__PURE__ */ new Map();
6
- this.callbacks = /* @__PURE__ */ new Map();
7
- }
8
- subscribe(id, callback) {
9
- this.callbacks.set(id, this.callbacks.get(id) ?? /* @__PURE__ */ new Set());
10
- this.callbacks.get(id)?.add(callback);
11
- }
12
- unsubscribe(id, callback) {
13
- if (id === null) {
14
- return;
15
- }
16
- this.callbacks.get(id)?.delete(callback);
17
- if (this.callbacks.get(id)?.size === 0) {
18
- this.callbacks.delete(id);
19
- }
20
- }
21
- get(id) {
22
- return this.idMap.get(id);
23
- }
24
- register(id, target) {
25
- this.idMap.set(id, target);
26
- for (const callback of this.callbacks.get(id) ?? []) {
27
- callback(target);
28
- }
29
- }
30
- unregister(id) {
31
- for (const callback of this.callbacks.get(id) ?? []) {
32
- callback(void 0);
33
- }
34
- this.idMap.delete(id);
35
- this.callbacks.delete(id);
36
- }
37
- }
3
+ var TargetRegistry = class {
4
+ constructor() {
5
+ this.idMap = /* @__PURE__ */ new Map();
6
+ this.callbacks = /* @__PURE__ */ new Map();
7
+ }
8
+ subscribe(id, callback) {
9
+ this.callbacks.set(id, this.callbacks.get(id) ?? /* @__PURE__ */ new Set());
10
+ this.callbacks.get(id)?.add(callback);
11
+ }
12
+ unsubscribe(id, callback) {
13
+ if (id === null) return;
14
+ this.callbacks.get(id)?.delete(callback);
15
+ if (this.callbacks.get(id)?.size === 0) this.callbacks.delete(id);
16
+ }
17
+ get(id) {
18
+ return this.idMap.get(id);
19
+ }
20
+ register(id, target) {
21
+ this.idMap.set(id, target);
22
+ for (const callback of this.callbacks.get(id) ?? []) callback(target);
23
+ }
24
+ unregister(id) {
25
+ for (const callback of this.callbacks.get(id) ?? []) callback(void 0);
26
+ this.idMap.delete(id);
27
+ this.callbacks.delete(id);
28
+ }
29
+ };
38
30
  const documentRegistries = /* @__PURE__ */ new WeakMap();
39
31
  const getRegistry = (root) => {
40
- let registry = documentRegistries.get(root);
41
- if (!registry) {
42
- registry = new TargetRegistry();
43
- documentRegistries.set(root, registry);
44
- }
45
- return registry;
32
+ let registry = documentRegistries.get(root);
33
+ if (!registry) {
34
+ registry = new TargetRegistry();
35
+ documentRegistries.set(root, registry);
36
+ }
37
+ return registry;
46
38
  };
47
39
  const EFTargetable = (superClass) => {
48
- class TargetableElement extends superClass {
49
- #registry = null;
50
- static get observedAttributes() {
51
- const parentAttributes = superClass.observedAttributes || [];
52
- return [.../* @__PURE__ */ new Set([...parentAttributes, "id"])];
53
- }
54
- updateRegistry(oldValue, newValue) {
55
- if (!this.#registry) return;
56
- if (oldValue === newValue) return;
57
- if (oldValue) {
58
- this.#registry.unregister(oldValue);
59
- }
60
- if (newValue) {
61
- this.#registry.register(newValue, this);
62
- }
63
- }
64
- connectedCallback() {
65
- super.connectedCallback();
66
- this.#registry = getRegistry(this.getRootNode());
67
- const initialId = this.getAttribute("id");
68
- if (initialId) {
69
- this.updateRegistry("", initialId);
70
- }
71
- }
72
- attributeChangedCallback(name, old, value) {
73
- super.attributeChangedCallback(name, old, value);
74
- if (name === "id") {
75
- this.updateRegistry(old ?? "", value ?? "");
76
- }
77
- }
78
- disconnectedCallback() {
79
- if (this.#registry) {
80
- this.updateRegistry(this.id, "");
81
- this.#registry = null;
82
- }
83
- super.disconnectedCallback();
84
- }
85
- }
86
- Object.defineProperty(TargetableElement.prototype, EF_TARGETABLE, {
87
- value: true
88
- });
89
- return TargetableElement;
40
+ class TargetableElement extends superClass {
41
+ #registry = null;
42
+ static get observedAttributes() {
43
+ const parentAttributes = superClass.observedAttributes || [];
44
+ return [...new Set([...parentAttributes, "id"])];
45
+ }
46
+ updateRegistry(oldValue, newValue) {
47
+ if (!this.#registry) return;
48
+ if (oldValue === newValue) return;
49
+ if (oldValue) this.#registry.unregister(oldValue);
50
+ if (newValue) this.#registry.register(newValue, this);
51
+ }
52
+ connectedCallback() {
53
+ super.connectedCallback();
54
+ this.#registry = getRegistry(this.getRootNode());
55
+ const initialId = this.getAttribute("id");
56
+ if (initialId) this.updateRegistry("", initialId);
57
+ }
58
+ attributeChangedCallback(name, old, value) {
59
+ super.attributeChangedCallback(name, old, value);
60
+ if (name === "id") this.updateRegistry(old ?? "", value ?? "");
61
+ }
62
+ disconnectedCallback() {
63
+ if (this.#registry) {
64
+ this.updateRegistry(this.id, "");
65
+ this.#registry = null;
66
+ }
67
+ super.disconnectedCallback();
68
+ }
69
+ }
70
+ Object.defineProperty(TargetableElement.prototype, EF_TARGETABLE, { value: true });
71
+ return TargetableElement;
72
+ };
73
+ var TargetUpdateController = class {
74
+ constructor(host) {
75
+ this.host = host;
76
+ }
77
+ hostConnected() {
78
+ this.host.requestUpdate();
79
+ }
80
+ hostDisconnected() {
81
+ this.host.requestUpdate();
82
+ }
83
+ hostUpdate() {
84
+ this.host.requestUpdate();
85
+ }
90
86
  };
91
- class TargetUpdateController {
92
- constructor(host) {
93
- this.host = host;
94
- }
95
- hostConnected() {
96
- this.host.requestUpdate();
97
- }
98
- hostDisconnected() {
99
- this.host.requestUpdate();
100
- }
101
- hostUpdate() {
102
- this.host.requestUpdate();
103
- }
104
- }
105
- class TargetController {
106
- constructor(host) {
107
- this.targetController = null;
108
- this.currentTargetString = null;
109
- this.registryCallback = (target) => {
110
- this.host.targetElement = target ?? null;
111
- };
112
- this.host = host;
113
- this.host.addController(this);
114
- this.currentTargetString = this.host.target;
115
- if (this.currentTargetString) {
116
- this.registry.subscribe(this.currentTargetString, this.registryCallback);
117
- }
118
- }
119
- updateTarget() {
120
- const newTarget = this.registry.get(this.host.target);
121
- if (this.host.targetElement !== newTarget) {
122
- this.disconnectFromTarget();
123
- this.host.targetElement = newTarget ?? null;
124
- this.connectToTarget();
125
- }
126
- }
127
- connectToTarget() {
128
- if (this.host.targetElement instanceof LitElement) {
129
- this.targetController = new TargetUpdateController(this.host);
130
- this.host.targetElement.addController(this.targetController);
131
- }
132
- }
133
- disconnectFromTarget() {
134
- if (this.host.targetElement instanceof LitElement && this.targetController) {
135
- this.host.targetElement.removeController(this.targetController);
136
- this.targetController = null;
137
- }
138
- }
139
- get registry() {
140
- const root = this.host.getRootNode();
141
- return getRegistry(root);
142
- }
143
- hostDisconnected() {
144
- this.disconnectFromTarget();
145
- }
146
- hostConnected() {
147
- this.updateTarget();
148
- }
149
- hostUpdate() {
150
- if (this.currentTargetString !== this.host.target) {
151
- this.registry.unsubscribe(
152
- this.currentTargetString,
153
- this.registryCallback
154
- );
155
- this.registry.subscribe(this.host.target, this.registryCallback);
156
- this.updateTarget();
157
- this.currentTargetString = this.host.target;
158
- }
159
- }
160
- }
161
- export {
162
- EFTargetable,
163
- TargetController
87
+ var TargetController = class {
88
+ constructor(host) {
89
+ this.targetController = null;
90
+ this.currentTargetString = null;
91
+ this.registryCallback = (target) => {
92
+ this.host.targetElement = target ?? null;
93
+ };
94
+ this.host = host;
95
+ this.host.addController(this);
96
+ this.currentTargetString = this.host.target;
97
+ if (this.currentTargetString) this.registry.subscribe(this.currentTargetString, this.registryCallback);
98
+ }
99
+ updateTarget() {
100
+ const newTarget = this.registry.get(this.host.target);
101
+ if (this.host.targetElement !== newTarget) {
102
+ this.disconnectFromTarget();
103
+ this.host.targetElement = newTarget ?? null;
104
+ this.connectToTarget();
105
+ }
106
+ }
107
+ connectToTarget() {
108
+ if (this.host.targetElement instanceof LitElement) {
109
+ this.targetController = new TargetUpdateController(this.host);
110
+ this.host.targetElement.addController(this.targetController);
111
+ }
112
+ }
113
+ disconnectFromTarget() {
114
+ if (this.host.targetElement instanceof LitElement && this.targetController) {
115
+ this.host.targetElement.removeController(this.targetController);
116
+ this.targetController = null;
117
+ }
118
+ }
119
+ get registry() {
120
+ const root = this.host.getRootNode();
121
+ return getRegistry(root);
122
+ }
123
+ hostDisconnected() {
124
+ this.disconnectFromTarget();
125
+ }
126
+ hostConnected() {
127
+ this.updateTarget();
128
+ }
129
+ hostUpdate() {
130
+ if (this.currentTargetString !== this.host.target) {
131
+ this.registry.unsubscribe(this.currentTargetString, this.registryCallback);
132
+ this.registry.subscribe(this.host.target, this.registryCallback);
133
+ this.updateTarget();
134
+ this.currentTargetString = this.host.target;
135
+ }
136
+ }
164
137
  };
138
+ export { EFTargetable, TargetController };
@@ -1,20 +1,18 @@
1
- class TimegroupController {
2
- constructor(host, child) {
3
- this.host = host;
4
- this.child = child;
5
- this.host.addController(this);
6
- }
7
- remove() {
8
- this.host.removeController(this);
9
- }
10
- hostDisconnected() {
11
- this.host.removeController(this);
12
- }
13
- hostUpdated() {
14
- this.child.requestUpdate();
15
- this.child.currentTimeMs = this.host.currentTimeMs - (this.child.startTimeMs ?? 0);
16
- }
17
- }
18
- export {
19
- TimegroupController
1
+ var TimegroupController = class {
2
+ constructor(host, child) {
3
+ this.host = host;
4
+ this.child = child;
5
+ this.host.addController(this);
6
+ }
7
+ remove() {
8
+ this.host.removeController(this);
9
+ }
10
+ hostDisconnected() {
11
+ this.host.removeController(this);
12
+ }
13
+ hostUpdated() {
14
+ this.child.requestUpdate();
15
+ this.child.currentTimeMs = this.host.currentTimeMs - (this.child.startTimeMs ?? 0);
16
+ }
20
17
  };
18
+ export { TimegroupController };
@@ -1,8 +1,19 @@
1
1
  import { parseTimeToMs } from "./parseTimeToMs.js";
2
2
  const durationConverter = {
3
- fromAttribute: (value) => value === null ? null : parseTimeToMs(value),
4
- toAttribute: (value) => value === null ? null : `${value}s`
3
+ fromAttribute: (value) => value === null ? null : parseTimeToMs(value),
4
+ toAttribute: (value) => value === null ? null : `${value}s`
5
5
  };
6
- export {
7
- durationConverter
6
+ const positiveDurationConverter = (error) => {
7
+ return {
8
+ fromAttribute: (value) => {
9
+ if (value === null) return null;
10
+ if (value.startsWith("-")) throw new Error(error);
11
+ return parseTimeToMs(value);
12
+ },
13
+ toAttribute: (value) => value === null ? null : `${value}s`
14
+ };
8
15
  };
16
+ const trimDurationConverter = positiveDurationConverter("Trimstart & trimend must be a positive value in milliseconds or seconds (1s, 1000ms)");
17
+ const imageDurationConverter = positiveDurationConverter("Image duration must be a positive value in milliseconds or seconds (1s, 1000ms)");
18
+ const sourceDurationConverter = positiveDurationConverter("Sourcein & sourceout must be a positive value in milliseconds or seconds (1s, 1000ms)");
19
+ export { durationConverter };
@@ -1,12 +1,6 @@
1
1
  const parseTimeToMs = (time) => {
2
- if (time.endsWith("ms")) {
3
- return Number.parseFloat(time);
4
- }
5
- if (time.endsWith("s")) {
6
- return Number.parseFloat(time) * 1e3;
7
- }
8
- throw new Error("Time must be in milliseconds or seconds (10s, 10000ms)");
9
- };
10
- export {
11
- parseTimeToMs
2
+ if (time.endsWith("ms")) return Number.parseFloat(time);
3
+ if (time.endsWith("s")) return Number.parseFloat(time) * 1e3;
4
+ throw new Error("Time must be in milliseconds or seconds (10s, 10000ms)");
12
5
  };
6
+ export { parseTimeToMs };
@@ -0,0 +1,2 @@
1
+ import { TaskStatus } from '@lit/task';
2
+ export declare const printTaskStatus: (status: TaskStatus) => "INITIAL" | "ERROR" | "PENDING" | "COMPLETE" | "UNKNOWN";
@@ -1,62 +1,42 @@
1
1
  import { isEFTemporal } from "./EFTemporal.js";
2
2
  const updateAnimations = (element) => {
3
- element.style.setProperty(
4
- "--ef-progress",
5
- `${Math.max(0, Math.min(1, element.currentTimeMs / element.durationMs)) * 100}%`
6
- );
7
- const timelineTimeMs = (element.rootTimegroup ?? element).currentTimeMs;
8
- if (element.startTimeMs > timelineTimeMs || element.endTimeMs < timelineTimeMs) {
9
- element.style.display = "none";
10
- return;
11
- }
12
- element.style.display = "";
13
- const animations = element.getAnimations({ subtree: true });
14
- element.style.setProperty("--ef-duration", `${element.durationMs}ms`);
15
- element.style.setProperty(
16
- "--ef-transition-duration",
17
- `${element.parentTimegroup?.overlapMs ?? 0}ms`
18
- );
19
- element.style.setProperty(
20
- "--ef-transition-out-start",
21
- `${element.durationMs - (element.parentTimegroup?.overlapMs ?? 0)}ms`
22
- );
23
- for (const animation of animations) {
24
- if (animation.playState === "running") {
25
- animation.pause();
26
- }
27
- const effect = animation.effect;
28
- if (!(effect && effect instanceof KeyframeEffect)) {
29
- continue;
30
- }
31
- const target = effect.target;
32
- if (!target) {
33
- continue;
34
- }
35
- if (target.closest("ef-timegroup") !== element) {
36
- continue;
37
- }
38
- const timing = effect.getTiming();
39
- const duration = Number(timing.duration) ?? 0;
40
- const delay = Number(timing.delay) ?? 0;
41
- const iterations = Number(timing.iterations) ?? 1;
42
- const timeTarget = isEFTemporal(target) ? target : target.closest("ef-timegroup");
43
- if (!timeTarget) {
44
- continue;
45
- }
46
- const currentTime = timeTarget.ownCurrentTimeMs;
47
- if (currentTime < delay) {
48
- animation.currentTime = 0;
49
- continue;
50
- }
51
- const currentIteration = Math.floor((currentTime - delay) / duration);
52
- const currentIterationTime = (currentTime - delay) % duration;
53
- if (currentIteration >= iterations) {
54
- animation.currentTime = duration - 0.01;
55
- continue;
56
- }
57
- animation.currentTime = Math.min(currentIterationTime, duration - 0.01) + delay;
58
- }
59
- };
60
- export {
61
- updateAnimations
3
+ element.style.setProperty("--ef-progress", `${Math.max(0, Math.min(1, element.currentTimeMs / element.durationMs)) * 100}%`);
4
+ const timelineTimeMs = (element.rootTimegroup ?? element).currentTimeMs;
5
+ if (element.startTimeMs > timelineTimeMs || element.endTimeMs < timelineTimeMs) {
6
+ element.style.display = "none";
7
+ return;
8
+ }
9
+ element.style.display = "";
10
+ if (typeof element.getAnimations !== "function") return;
11
+ const animations = element.getAnimations({ subtree: true });
12
+ element.style.setProperty("--ef-duration", `${element.durationMs}ms`);
13
+ element.style.setProperty("--ef-transition-duration", `${element.parentTimegroup?.overlapMs ?? 0}ms`);
14
+ element.style.setProperty("--ef-transition-out-start", `${element.durationMs - (element.parentTimegroup?.overlapMs ?? 0)}ms`);
15
+ for (const animation of animations) {
16
+ if (animation.playState === "running") animation.pause();
17
+ const effect = animation.effect;
18
+ if (!(effect && effect instanceof KeyframeEffect)) continue;
19
+ const target = effect.target;
20
+ if (!target) continue;
21
+ if (target.closest("ef-timegroup") !== element) continue;
22
+ const timing = effect.getTiming();
23
+ const duration = Number(timing.duration) ?? 0;
24
+ const delay = Number(timing.delay) ?? 0;
25
+ const iterations = Number(timing.iterations) ?? 1;
26
+ const timeTarget = isEFTemporal(target) ? target : target.closest("ef-timegroup");
27
+ if (!timeTarget) continue;
28
+ const currentTime = timeTarget.ownCurrentTimeMs;
29
+ if (currentTime < delay) {
30
+ animation.currentTime = 0;
31
+ continue;
32
+ }
33
+ const currentIteration = Math.floor((currentTime - delay) / duration);
34
+ const currentIterationTime = (currentTime - delay) % duration;
35
+ if (currentIteration >= iterations) {
36
+ animation.currentTime = duration - .01;
37
+ continue;
38
+ }
39
+ animation.currentTime = Math.min(currentIterationTime, duration - .01) + delay;
40
+ }
62
41
  };
42
+ export { updateAnimations };
@@ -18,20 +18,20 @@ export declare const RenderInfo: z.ZodObject<{
18
18
  efImage: string[];
19
19
  }>;
20
20
  }, "strip", z.ZodTypeAny, {
21
+ fps: number;
21
22
  width: number;
22
23
  height: number;
23
24
  durationMs: number;
24
- fps: number;
25
25
  assets: {
26
26
  efMedia: Record<string, any>;
27
27
  efCaptions: string[];
28
28
  efImage: string[];
29
29
  };
30
30
  }, {
31
+ fps: number;
31
32
  width: number;
32
33
  height: number;
33
34
  durationMs: number;
34
- fps: number;
35
35
  assets: {
36
36
  efMedia: Record<string, any>;
37
37
  efCaptions: string[];