@editframe/elements 0.24.1-beta.0 → 0.25.0-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.
- package/dist/DelayedLoadingState.js +31 -0
- package/dist/DelayedLoadingState.js.map +1 -0
- package/dist/EF_FRAMEGEN.d.ts +50 -46
- package/dist/EF_FRAMEGEN.js +5 -1
- package/dist/EF_FRAMEGEN.js.map +1 -0
- package/dist/EF_INTERACTIVE.js +4 -0
- package/dist/EF_INTERACTIVE.js.map +1 -0
- package/dist/EF_RENDERING.js +4 -0
- package/dist/EF_RENDERING.js.map +1 -0
- package/dist/_virtual/_@oxc-project_runtime@0.94.0/helpers/decorate.js +4 -1
- package/dist/attachContextRoot.js +6 -1
- package/dist/attachContextRoot.js.map +1 -0
- package/dist/elements/CrossUpdateController.js +4 -0
- package/dist/elements/CrossUpdateController.js.map +1 -0
- package/dist/elements/EFAudio.d.ts +24 -16
- package/dist/elements/EFAudio.js +10 -1
- package/dist/elements/EFAudio.js.map +1 -0
- package/dist/elements/EFCaptions.d.ts +118 -109
- package/dist/elements/EFCaptions.js +11 -6
- package/dist/elements/EFCaptions.js.map +1 -0
- package/dist/elements/EFImage.d.ts +31 -20
- package/dist/elements/EFImage.js +6 -1
- package/dist/elements/EFImage.js.map +1 -0
- package/dist/elements/EFMedia/AssetIdMediaEngine.js +5 -0
- package/dist/elements/EFMedia/AssetIdMediaEngine.js.map +1 -0
- package/dist/elements/EFMedia/AssetMediaEngine.js +12 -0
- package/dist/elements/EFMedia/AssetMediaEngine.js.map +1 -0
- package/dist/elements/EFMedia/BaseMediaEngine.js +53 -0
- package/dist/elements/EFMedia/BaseMediaEngine.js.map +1 -0
- package/dist/elements/EFMedia/BufferedSeekingInput.d.ts +47 -46
- package/dist/elements/EFMedia/BufferedSeekingInput.js +6 -1
- package/dist/elements/EFMedia/BufferedSeekingInput.js.map +1 -0
- package/dist/elements/EFMedia/JitMediaEngine.js +12 -0
- package/dist/elements/EFMedia/JitMediaEngine.js.map +1 -0
- package/dist/elements/EFMedia/audioTasks/makeAudioBufferTask.d.ts +9 -13
- package/dist/elements/EFMedia/audioTasks/makeAudioBufferTask.js +5 -0
- package/dist/elements/EFMedia/audioTasks/makeAudioBufferTask.js.map +1 -0
- package/dist/elements/EFMedia/audioTasks/makeAudioFrequencyAnalysisTask.js +6 -1
- package/dist/elements/EFMedia/audioTasks/makeAudioFrequencyAnalysisTask.js.map +1 -0
- package/dist/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.js +5 -0
- package/dist/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.js.map +1 -0
- package/dist/elements/EFMedia/audioTasks/makeAudioInputTask.js +5 -0
- package/dist/elements/EFMedia/audioTasks/makeAudioInputTask.js.map +1 -0
- package/dist/elements/EFMedia/audioTasks/makeAudioSeekTask.js +5 -0
- package/dist/elements/EFMedia/audioTasks/makeAudioSeekTask.js.map +1 -0
- package/dist/elements/EFMedia/audioTasks/makeAudioSegmentFetchTask.js +5 -0
- package/dist/elements/EFMedia/audioTasks/makeAudioSegmentFetchTask.js.map +1 -0
- package/dist/elements/EFMedia/audioTasks/makeAudioSegmentIdTask.js +5 -0
- package/dist/elements/EFMedia/audioTasks/makeAudioSegmentIdTask.js.map +1 -0
- package/dist/elements/EFMedia/audioTasks/makeAudioTimeDomainAnalysisTask.js +6 -1
- package/dist/elements/EFMedia/audioTasks/makeAudioTimeDomainAnalysisTask.js.map +1 -0
- package/dist/elements/EFMedia/shared/AudioSpanUtils.js +18 -2
- package/dist/elements/EFMedia/shared/AudioSpanUtils.js.map +1 -0
- package/dist/elements/EFMedia/shared/BufferUtils.d.ts +9 -67
- package/dist/elements/EFMedia/shared/BufferUtils.js +15 -0
- package/dist/elements/EFMedia/shared/BufferUtils.js.map +1 -0
- package/dist/elements/EFMedia/shared/GlobalInputCache.js +29 -0
- package/dist/elements/EFMedia/shared/GlobalInputCache.js.map +1 -0
- package/dist/elements/EFMedia/shared/MediaTaskUtils.d.ts +11 -17
- package/dist/elements/EFMedia/shared/PrecisionUtils.js +25 -0
- package/dist/elements/EFMedia/shared/PrecisionUtils.js.map +1 -0
- package/dist/elements/EFMedia/shared/ThumbnailExtractor.js +22 -0
- package/dist/elements/EFMedia/shared/ThumbnailExtractor.js.map +1 -0
- package/dist/elements/EFMedia/tasks/makeMediaEngineTask.js +13 -0
- package/dist/elements/EFMedia/tasks/makeMediaEngineTask.js.map +1 -0
- package/dist/elements/EFMedia/videoTasks/MainVideoInputCache.js +21 -0
- package/dist/elements/EFMedia/videoTasks/MainVideoInputCache.js.map +1 -0
- package/dist/elements/EFMedia/videoTasks/ScrubInputCache.js +18 -0
- package/dist/elements/EFMedia/videoTasks/ScrubInputCache.js.map +1 -0
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoBufferTask.js +10 -0
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoBufferTask.js.map +1 -0
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoInitSegmentFetchTask.js +5 -0
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoInitSegmentFetchTask.js.map +1 -0
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoInputTask.js +5 -0
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoInputTask.js.map +1 -0
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoSeekTask.js +6 -1
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoSeekTask.js.map +1 -0
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentFetchTask.js +5 -0
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentFetchTask.js.map +1 -0
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentIdTask.js +5 -0
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentIdTask.js.map +1 -0
- package/dist/elements/EFMedia/videoTasks/makeUnifiedVideoSeekTask.js +16 -2
- package/dist/elements/EFMedia/videoTasks/makeUnifiedVideoSeekTask.js.map +1 -0
- package/dist/elements/EFMedia/videoTasks/makeVideoBufferTask.d.ts +9 -13
- package/dist/elements/EFMedia/videoTasks/makeVideoBufferTask.js +5 -0
- package/dist/elements/EFMedia/videoTasks/makeVideoBufferTask.js.map +1 -0
- package/dist/elements/EFMedia.d.ts +115 -104
- package/dist/elements/EFMedia.js +25 -1
- package/dist/elements/EFMedia.js.map +1 -0
- package/dist/elements/EFSourceMixin.d.ts +10 -11
- package/dist/elements/EFSourceMixin.js +5 -0
- package/dist/elements/EFSourceMixin.js.map +1 -0
- package/dist/elements/EFSurface.d.ts +35 -27
- package/dist/elements/EFSurface.js +6 -1
- package/dist/elements/EFSurface.js.map +1 -0
- package/dist/elements/EFTemporal.d.ts +200 -213
- package/dist/elements/EFTemporal.js +24 -4
- package/dist/elements/EFTemporal.js.map +1 -0
- package/dist/elements/EFThumbnailStrip.d.ts +91 -83
- package/dist/elements/EFThumbnailStrip.js +49 -4
- package/dist/elements/EFThumbnailStrip.js.map +1 -0
- package/dist/elements/EFTimegroup.d.ts +107 -101
- package/dist/elements/EFTimegroup.js +58 -3
- package/dist/elements/EFTimegroup.js.map +1 -0
- package/dist/elements/EFVideo.d.ts +120 -108
- package/dist/elements/EFVideo.js +46 -2
- package/dist/elements/EFVideo.js.map +1 -0
- package/dist/elements/EFWaveform.d.ts +48 -41
- package/dist/elements/EFWaveform.js +6 -1
- package/dist/elements/EFWaveform.js.map +1 -0
- package/dist/elements/FetchMixin.d.ts +8 -6
- package/dist/elements/FetchMixin.js +4 -0
- package/dist/elements/FetchMixin.js.map +1 -0
- package/dist/elements/SampleBuffer.d.ts +18 -13
- package/dist/elements/SampleBuffer.js +5 -0
- package/dist/elements/SampleBuffer.js.map +1 -0
- package/dist/elements/TargetController.d.ts +23 -24
- package/dist/elements/TargetController.js +8 -3
- package/dist/elements/TargetController.js.map +1 -0
- package/dist/elements/TimegroupController.d.ts +17 -12
- package/dist/elements/TimegroupController.js +4 -0
- package/dist/elements/TimegroupController.js.map +1 -0
- package/dist/elements/durationConverter.js +9 -4
- package/dist/elements/durationConverter.js.map +1 -0
- package/dist/elements/parseTimeToMs.js +4 -0
- package/dist/elements/parseTimeToMs.js.map +1 -0
- package/dist/elements/renderTemporalAudio.js +4 -0
- package/dist/elements/renderTemporalAudio.js.map +1 -0
- package/dist/elements/updateAnimations.js +29 -8
- package/dist/elements/updateAnimations.js.map +1 -0
- package/dist/elements-ZhsB7B5N.css +9 -0
- package/dist/elements-ZhsB7B5N.css.map +1 -0
- package/dist/getRenderInfo.d.ts +53 -47
- package/dist/getRenderInfo.js +5 -0
- package/dist/getRenderInfo.js.map +1 -0
- package/dist/gui/ContextMixin.d.ts +19 -20
- package/dist/gui/ContextMixin.js +32 -1
- package/dist/gui/ContextMixin.js.map +1 -0
- package/dist/gui/Controllable.d.ts +13 -14
- package/dist/gui/Controllable.js +5 -0
- package/dist/gui/Controllable.js.map +1 -0
- package/dist/gui/EFConfiguration.d.ts +18 -14
- package/dist/gui/EFConfiguration.js +6 -1
- package/dist/gui/EFConfiguration.js.map +1 -0
- package/dist/gui/EFControls.d.ts +35 -31
- package/dist/gui/EFControls.js +8 -3
- package/dist/gui/EFControls.js.map +1 -0
- package/dist/gui/EFDial.d.ts +23 -16
- package/dist/gui/EFDial.js +6 -1
- package/dist/gui/EFDial.js.map +1 -0
- package/dist/gui/EFFilmstrip.d.ts +183 -177
- package/dist/gui/EFFilmstrip.js +30 -25
- package/dist/gui/EFFilmstrip.js.map +1 -0
- package/dist/gui/EFFitScale.d.ts +30 -24
- package/dist/gui/EFFitScale.js +6 -1
- package/dist/gui/EFFitScale.js.map +1 -0
- package/dist/gui/EFFocusOverlay.d.ts +22 -14
- package/dist/gui/EFFocusOverlay.js +6 -1
- package/dist/gui/EFFocusOverlay.js.map +1 -0
- package/dist/gui/EFPause.d.ts +24 -18
- package/dist/gui/EFPause.js +6 -1
- package/dist/gui/EFPause.js.map +1 -0
- package/dist/gui/EFPlay.d.ts +24 -18
- package/dist/gui/EFPlay.js +6 -1
- package/dist/gui/EFPlay.js.map +1 -0
- package/dist/gui/EFPreview.d.ts +22 -15
- package/dist/gui/EFPreview.js +9 -1
- package/dist/gui/EFPreview.js.map +1 -0
- package/dist/gui/EFResizableBox.d.ts +39 -32
- package/dist/gui/EFResizableBox.js +8 -3
- package/dist/gui/EFResizableBox.js.map +1 -0
- package/dist/gui/EFScrubber.d.ts +31 -25
- package/dist/gui/EFScrubber.js +6 -1
- package/dist/gui/EFScrubber.js.map +1 -0
- package/dist/gui/EFTimeDisplay.d.ts +21 -14
- package/dist/gui/EFTimeDisplay.js +6 -1
- package/dist/gui/EFTimeDisplay.js.map +1 -0
- package/dist/gui/EFToggleLoop.d.ts +19 -13
- package/dist/gui/EFToggleLoop.js +6 -1
- package/dist/gui/EFToggleLoop.js.map +1 -0
- package/dist/gui/EFTogglePlay.d.ts +23 -17
- package/dist/gui/EFTogglePlay.js +6 -1
- package/dist/gui/EFTogglePlay.js.map +1 -0
- package/dist/gui/EFWorkbench.d.ts +24 -16
- package/dist/gui/EFWorkbench.js +6 -1
- package/dist/gui/EFWorkbench.js.map +1 -0
- package/dist/gui/PlaybackController.d.ts +54 -50
- package/dist/gui/PlaybackController.js +18 -0
- package/dist/gui/PlaybackController.js.map +1 -0
- package/dist/gui/TWMixin.js +5 -1
- package/dist/gui/TWMixin.js.map +1 -0
- package/dist/gui/TWMixin2.js +6 -1
- package/dist/gui/TWMixin2.js.map +1 -0
- package/dist/gui/TargetOrContextMixin.js +5 -0
- package/dist/gui/TargetOrContextMixin.js.map +1 -0
- package/dist/gui/currentTimeContext.js +5 -0
- package/dist/gui/currentTimeContext.js.map +1 -0
- package/dist/gui/durationContext.js +5 -0
- package/dist/gui/durationContext.js.map +1 -0
- package/dist/gui/efContext.js +5 -0
- package/dist/gui/efContext.js.map +1 -0
- package/dist/gui/fetchContext.js +5 -0
- package/dist/gui/fetchContext.js.map +1 -0
- package/dist/gui/focusContext.d.ts +6 -5
- package/dist/gui/focusContext.js +5 -0
- package/dist/gui/focusContext.js.map +1 -0
- package/dist/gui/focusedElementContext.js +5 -0
- package/dist/gui/focusedElementContext.js.map +1 -0
- package/dist/gui/playingContext.js +5 -0
- package/dist/gui/playingContext.js.map +1 -0
- package/dist/index.d.ts +27 -26
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -0
- package/dist/msToTimeCode.js +4 -0
- package/dist/msToTimeCode.js.map +1 -0
- package/dist/otel/BridgeSpanExporter.js +5 -0
- package/dist/otel/BridgeSpanExporter.js.map +1 -0
- package/dist/otel/setupBrowserTracing.js +7 -2
- package/dist/otel/setupBrowserTracing.js.map +1 -0
- package/dist/otel/tracingHelpers.d.ts +7 -34
- package/dist/otel/tracingHelpers.js +34 -2
- package/dist/otel/tracingHelpers.js.map +1 -0
- package/dist/transcoding/cache/RequestDeduplicator.js +25 -0
- package/dist/transcoding/cache/RequestDeduplicator.js.map +1 -0
- package/dist/transcoding/cache/URLTokenDeduplicator.js +23 -0
- package/dist/transcoding/cache/URLTokenDeduplicator.js.map +1 -0
- package/dist/transcoding/types/index.d.ts +96 -270
- package/dist/transcoding/utils/UrlGenerator.d.ts +30 -25
- package/dist/transcoding/utils/UrlGenerator.js +19 -0
- package/dist/transcoding/utils/UrlGenerator.js.map +1 -0
- package/dist/utils/LRUCache.js +44 -0
- package/dist/utils/LRUCache.js.map +1 -0
- package/package.json +11 -24
- package/tsdown.config.ts +36 -0
- package/dist/DelayedLoadingState.d.ts +0 -48
- package/dist/DelayedLoadingState.integration.test.d.ts +0 -1
- package/dist/DelayedLoadingState.test.d.ts +0 -1
- package/dist/EF_INTERACTIVE.d.ts +0 -1
- package/dist/EF_RENDERING.d.ts +0 -1
- package/dist/LoadingDebounce.test.d.ts +0 -1
- package/dist/ManualScrubTest.test.d.ts +0 -1
- package/dist/ScrubResolvedFlashing.test.d.ts +0 -1
- package/dist/ScrubTrackManager.test.d.ts +0 -1
- package/dist/VideoSeekFlashing.browsertest.d.ts +0 -0
- package/dist/VideoStuckDiagnostic.test.d.ts +0 -1
- package/dist/attachContextRoot.d.ts +0 -1
- package/dist/elements/ContextProxiesController.d.ts +0 -39
- package/dist/elements/CrossUpdateController.d.ts +0 -8
- package/dist/elements/EFAudio.browsertest.d.ts +0 -0
- package/dist/elements/EFCaptions.browsertest.d.ts +0 -0
- package/dist/elements/EFImage.browsertest.d.ts +0 -0
- package/dist/elements/EFMedia/AssetIdMediaEngine.d.ts +0 -19
- package/dist/elements/EFMedia/AssetIdMediaEngine.test.d.ts +0 -1
- package/dist/elements/EFMedia/AssetMediaEngine.browsertest.d.ts +0 -0
- package/dist/elements/EFMedia/AssetMediaEngine.d.ts +0 -56
- package/dist/elements/EFMedia/BaseMediaEngine.browsertest.d.ts +0 -1
- package/dist/elements/EFMedia/BaseMediaEngine.d.ts +0 -103
- package/dist/elements/EFMedia/BufferedSeekingInput.browsertest.d.ts +0 -1
- package/dist/elements/EFMedia/JitMediaEngine.browsertest.d.ts +0 -0
- package/dist/elements/EFMedia/JitMediaEngine.d.ts +0 -46
- package/dist/elements/EFMedia/audioTasks/makeAudioBufferTask.browsertest.d.ts +0 -9
- package/dist/elements/EFMedia/audioTasks/makeAudioFrequencyAnalysisTask.d.ts +0 -3
- package/dist/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.browsertest.d.ts +0 -9
- package/dist/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.d.ts +0 -4
- package/dist/elements/EFMedia/audioTasks/makeAudioInputTask.browsertest.d.ts +0 -9
- package/dist/elements/EFMedia/audioTasks/makeAudioInputTask.d.ts +0 -3
- package/dist/elements/EFMedia/audioTasks/makeAudioSeekTask.chunkboundary.regression.browsertest.d.ts +0 -0
- package/dist/elements/EFMedia/audioTasks/makeAudioSeekTask.d.ts +0 -7
- package/dist/elements/EFMedia/audioTasks/makeAudioSegmentFetchTask.d.ts +0 -4
- package/dist/elements/EFMedia/audioTasks/makeAudioSegmentIdTask.d.ts +0 -4
- package/dist/elements/EFMedia/audioTasks/makeAudioTasksVideoOnly.browsertest.d.ts +0 -1
- package/dist/elements/EFMedia/audioTasks/makeAudioTimeDomainAnalysisTask.d.ts +0 -3
- package/dist/elements/EFMedia/shared/AudioSpanUtils.d.ts +0 -7
- package/dist/elements/EFMedia/shared/GlobalInputCache.d.ts +0 -39
- package/dist/elements/EFMedia/shared/PrecisionUtils.d.ts +0 -28
- package/dist/elements/EFMedia/shared/RenditionHelpers.browsertest.d.ts +0 -1
- package/dist/elements/EFMedia/shared/RenditionHelpers.d.ts +0 -11
- package/dist/elements/EFMedia/shared/ThumbnailExtractor.d.ts +0 -27
- package/dist/elements/EFMedia/tasks/makeMediaEngineTask.browsertest.d.ts +0 -9
- package/dist/elements/EFMedia/tasks/makeMediaEngineTask.d.ts +0 -17
- package/dist/elements/EFMedia/videoTasks/MainVideoInputCache.d.ts +0 -29
- package/dist/elements/EFMedia/videoTasks/ScrubInputCache.d.ts +0 -25
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoBufferTask.d.ts +0 -8
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoInitSegmentFetchTask.d.ts +0 -4
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoInputTask.d.ts +0 -3
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoSeekTask.d.ts +0 -6
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentFetchTask.d.ts +0 -4
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentIdTask.d.ts +0 -4
- package/dist/elements/EFMedia/videoTasks/makeUnifiedVideoSeekTask.d.ts +0 -6
- package/dist/elements/EFMedia.browsertest.d.ts +0 -10
- package/dist/elements/EFSurface.browsertest.d.ts +0 -0
- package/dist/elements/EFTemporal.browsertest.d.ts +0 -22
- package/dist/elements/EFThumbnailStrip.browsertest.d.ts +0 -0
- package/dist/elements/EFThumbnailStrip.media-engine.browsertest.d.ts +0 -0
- package/dist/elements/EFTimegroup.browsertest.d.ts +0 -41
- package/dist/elements/EFVideo.browsertest.d.ts +0 -0
- package/dist/elements/FetchContext.browsertest.d.ts +0 -0
- package/dist/elements/TargetController.browsertest.d.ts +0 -19
- package/dist/elements/durationConverter.d.ts +0 -16
- package/dist/elements/parseTimeToMs.d.ts +0 -1
- package/dist/elements/printTaskStatus.d.ts +0 -2
- package/dist/elements/renderTemporalAudio.d.ts +0 -10
- package/dist/elements/updateAnimations.browsertest.d.ts +0 -13
- package/dist/elements/updateAnimations.d.ts +0 -24
- package/dist/elements/util.d.ts +0 -3
- package/dist/gui/ContextMixin.browsertest.d.ts +0 -15
- package/dist/gui/Controllable.browsertest.d.ts +0 -0
- package/dist/gui/EFControls.browsertest.d.ts +0 -11
- package/dist/gui/EFDial.browsertest.d.ts +0 -0
- package/dist/gui/EFFilmstrip.browsertest.d.ts +0 -11
- package/dist/gui/EFPause.browsertest.d.ts +0 -0
- package/dist/gui/EFPlay.browsertest.d.ts +0 -0
- package/dist/gui/EFResizableBox.browsertest.d.ts +0 -0
- package/dist/gui/EFTimeDisplay.browsertest.d.ts +0 -0
- package/dist/gui/TWMixin.d.ts +0 -2
- package/dist/gui/TargetOrContextMixin.d.ts +0 -10
- package/dist/gui/currentTimeContext.d.ts +0 -3
- package/dist/gui/durationContext.d.ts +0 -3
- package/dist/gui/efContext.d.ts +0 -4
- package/dist/gui/fetchContext.d.ts +0 -3
- package/dist/gui/focusedElementContext.d.ts +0 -3
- package/dist/gui/playingContext.d.ts +0 -6
- package/dist/msToTimeCode.d.ts +0 -1
- package/dist/otel/BridgeSpanExporter.d.ts +0 -13
- package/dist/otel/setupBrowserTracing.d.ts +0 -12
- package/dist/style.css +0 -2
- package/dist/transcoding/cache/RequestDeduplicator.d.ts +0 -29
- package/dist/transcoding/cache/RequestDeduplicator.test.d.ts +0 -1
- package/dist/transcoding/cache/URLTokenDeduplicator.d.ts +0 -38
- package/dist/transcoding/cache/URLTokenDeduplicator.test.d.ts +0 -1
- package/dist/transcoding/utils/MediaUtils.d.ts +0 -9
- package/dist/transcoding/utils/constants.d.ts +0 -27
- package/dist/utils/LRUCache.d.ts +0 -80
- package/dist/utils/LRUCache.test.d.ts +0 -1
- /package/dist/{LoadingIndicator.browsertest.d.ts → elements.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EFMedia.js","names":[],"sources":["../../src/elements/EFMedia.ts"],"sourcesContent":["import { provide } from \"@lit/context\";\nimport { css, LitElement, type PropertyValueMap } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport { isContextMixin } from \"../gui/ContextMixin.js\";\nimport type { ControllableInterface } from \"../gui/Controllable.js\";\nimport { efContext } from \"../gui/efContext.js\";\nimport { withSpan } from \"../otel/tracingHelpers.js\";\nimport type { AudioSpan } from \"../transcoding/types/index.ts\";\nimport { UrlGenerator } from \"../transcoding/utils/UrlGenerator.ts\";\nimport { makeAudioBufferTask } from \"./EFMedia/audioTasks/makeAudioBufferTask.ts\";\nimport { makeAudioFrequencyAnalysisTask } from \"./EFMedia/audioTasks/makeAudioFrequencyAnalysisTask.ts\";\nimport { makeAudioInitSegmentFetchTask } from \"./EFMedia/audioTasks/makeAudioInitSegmentFetchTask.ts\";\nimport { makeAudioInputTask } from \"./EFMedia/audioTasks/makeAudioInputTask.ts\";\nimport { makeAudioSeekTask } from \"./EFMedia/audioTasks/makeAudioSeekTask.ts\";\nimport { makeAudioSegmentFetchTask } from \"./EFMedia/audioTasks/makeAudioSegmentFetchTask.ts\";\nimport { makeAudioSegmentIdTask } from \"./EFMedia/audioTasks/makeAudioSegmentIdTask.ts\";\nimport { makeAudioTimeDomainAnalysisTask } from \"./EFMedia/audioTasks/makeAudioTimeDomainAnalysisTask.ts\";\nimport { fetchAudioSpanningTime } from \"./EFMedia/shared/AudioSpanUtils.ts\";\nimport { makeMediaEngineTask } from \"./EFMedia/tasks/makeMediaEngineTask.ts\";\nimport { EFSourceMixin } from \"./EFSourceMixin.js\";\nimport { EFTemporal } from \"./EFTemporal.js\";\nimport { FetchMixin } from \"./FetchMixin.js\";\nimport { renderTemporalAudio } from \"./renderTemporalAudio.js\";\nimport { EFTargetable } from \"./TargetController.ts\";\n\n// EF_FRAMEGEN is a global instance created in EF_FRAMEGEN.ts\ndeclare global {\n var EF_FRAMEGEN: import(\"../EF_FRAMEGEN.js\").EFFramegen;\n}\n\nconst freqWeightsCache = new Map<number, Float32Array>();\n\nexport class IgnorableError extends Error {}\n\nexport const deepGetMediaElements = (\n element: Element,\n medias: EFMedia[] = [],\n) => {\n for (const child of Array.from(element.children)) {\n if (child instanceof EFMedia) {\n medias.push(child);\n } else {\n deepGetMediaElements(child, medias);\n }\n }\n return medias;\n};\n\nexport class EFMedia extends EFTargetable(\n EFSourceMixin(EFTemporal(FetchMixin(LitElement)), {\n assetType: \"isobmff_files\",\n }),\n) {\n @provide({ context: efContext })\n get efContext(): ControllableInterface | null {\n return this.rootTimegroup ?? this;\n }\n\n // Sample buffer size configuration\n static readonly VIDEO_SAMPLE_BUFFER_SIZE = 30;\n static readonly AUDIO_SAMPLE_BUFFER_SIZE = 120;\n\n static get observedAttributes() {\n // biome-ignore lint/complexity/noThisInStatic: We need to access super\n const parentAttributes = super.observedAttributes || [];\n return [\n ...parentAttributes,\n \"mute\",\n \"fft-size\",\n \"fft-decay\",\n \"fft-gain\",\n \"interpolate-frequencies\",\n \"asset-id\",\n \"audio-buffer-duration\",\n \"max-audio-buffer-fetches\",\n \"enable-audio-buffering\",\n \"sourcein\",\n \"sourceout\",\n ];\n }\n\n static styles = [\n css`\n :host {\n display: block;\n position: relative;\n overflow: hidden;\n }\n `,\n ];\n\n /**\n * Duration in milliseconds for audio buffering ahead of current time\n * @domAttribute \"audio-buffer-duration\"\n */\n @property({ type: Number, attribute: \"audio-buffer-duration\" })\n audioBufferDurationMs = 10000; // 10 seconds - reasonable for JIT encoding\n\n /**\n * Maximum number of concurrent audio segment fetches for buffering\n * @domAttribute \"max-audio-buffer-fetches\"\n */\n @property({ type: Number, attribute: \"max-audio-buffer-fetches\" })\n maxAudioBufferFetches = 2;\n\n /**\n * Enable/disable audio buffering system\n * @domAttribute \"enable-audio-buffering\"\n */\n @property({ type: Boolean, attribute: \"enable-audio-buffering\" })\n enableAudioBuffering = true;\n\n /**\n * Mute/unmute the media element\n * @domAttribute \"mute\"\n */\n @property({\n type: Boolean,\n attribute: \"mute\",\n reflect: true,\n })\n mute = false;\n\n /**\n * FFT size for frequency analysis\n * @domAttribute \"fft-size\"\n */\n @property({ type: Number, attribute: \"fft-size\", reflect: true })\n fftSize = 128;\n\n /**\n * FFT decay rate for frequency analysis\n * @domAttribute \"fft-decay\"\n */\n @property({ type: Number, attribute: \"fft-decay\", reflect: true })\n fftDecay = 8;\n\n /**\n * FFT gain for frequency analysis\n * @domAttribute \"fft-gain\"\n */\n @property({ type: Number, attribute: \"fft-gain\", reflect: true })\n fftGain = 3.0;\n\n /**\n * Enable/disable frequency interpolation\n * @domAttribute \"interpolate-frequencies\"\n */\n @property({\n type: Boolean,\n attribute: \"interpolate-frequencies\",\n reflect: true,\n })\n interpolateFrequencies = false;\n\n // Update FREQ_WEIGHTS to use the instance fftSize instead of a static value\n get FREQ_WEIGHTS() {\n if (freqWeightsCache.has(this.fftSize)) {\n // biome-ignore lint/style/noNonNullAssertion: We know the value is set due to the guard above\n return freqWeightsCache.get(this.fftSize)!;\n }\n\n const weights = new Float32Array(this.fftSize / 2).map((_, i) => {\n const frequency = (i * 48000) / this.fftSize;\n if (frequency < 60) return 0.3;\n if (frequency < 250) return 0.4;\n if (frequency < 500) return 0.6;\n if (frequency < 2000) return 0.8;\n if (frequency < 4000) return 1.2;\n if (frequency < 8000) return 1.6;\n return 2.0;\n });\n\n freqWeightsCache.set(this.fftSize, weights);\n return weights;\n }\n\n // Helper getter for backwards compatibility\n get shouldInterpolateFrequencies() {\n return this.interpolateFrequencies;\n }\n\n get urlGenerator() {\n return new UrlGenerator(() => this.apiHost ?? \"\");\n }\n\n mediaEngineTask = makeMediaEngineTask(this);\n\n audioSegmentIdTask = makeAudioSegmentIdTask(this);\n audioInitSegmentFetchTask = makeAudioInitSegmentFetchTask(this);\n audioSegmentFetchTask = makeAudioSegmentFetchTask(this);\n audioInputTask = makeAudioInputTask(this);\n audioSeekTask = makeAudioSeekTask(this);\n\n audioBufferTask = makeAudioBufferTask(this);\n\n // Audio analysis tasks for frequency and time domain analysis\n byteTimeDomainTask = makeAudioTimeDomainAnalysisTask(this);\n frequencyDataTask = makeAudioFrequencyAnalysisTask(this);\n\n /**\n * The unique identifier for the media asset.\n * This property can be set programmatically or via the \"asset-id\" attribute.\n * @domAttribute \"asset-id\"\n */\n @property({ type: String, attribute: \"asset-id\", reflect: true })\n assetId: string | null = null;\n\n get intrinsicDurationMs() {\n return this.mediaEngineTask.value?.durationMs ?? 0;\n }\n\n protected updated(\n changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>,\n ): void {\n super.updated(changedProperties);\n\n // Check if our timeline position has actually changed, even if ownCurrentTimeMs isn't tracked as a property\n const newCurrentSourceTimeMs = this.currentSourceTimeMs;\n if (newCurrentSourceTimeMs !== this.desiredSeekTimeMs) {\n this.executeSeek(newCurrentSourceTimeMs);\n }\n\n if (changedProperties.has(\"ownCurrentTimeMs\")) {\n this.executeSeek(this.currentSourceTimeMs);\n }\n\n // Check if trim/source properties changed that affect duration\n const durationAffectingProps = [\n \"_trimStartMs\",\n \"_trimEndMs\",\n \"_sourceInMs\",\n \"_sourceOutMs\",\n ];\n\n const hasDurationChange = durationAffectingProps.some((prop) =>\n changedProperties.has(prop),\n );\n\n if (hasDurationChange) {\n // Notify parent timegroup to recalculate its duration (same pattern as EFCaptions)\n if (this.parentTimegroup) {\n this.parentTimegroup.requestUpdate(\"durationMs\");\n this.parentTimegroup.requestUpdate(\"currentTime\");\n\n // Also find and directly notify any context provider (ContextMixin)\n let parent = this.parentNode;\n while (parent) {\n if (isContextMixin(parent)) {\n parent.dispatchEvent(\n new CustomEvent(\"child-duration-changed\", {\n detail: { source: this },\n }),\n );\n break;\n }\n parent = parent.parentNode;\n }\n }\n }\n }\n\n get hasOwnDuration() {\n return true;\n }\n\n @state()\n private _desiredSeekTimeMs = 0; // Initialize to 0 for proper segment loading\n\n get desiredSeekTimeMs() {\n return this._desiredSeekTimeMs;\n }\n\n set desiredSeekTimeMs(value: number) {\n if (this._desiredSeekTimeMs !== value) {\n this._desiredSeekTimeMs = value;\n }\n }\n\n protected async executeSeek(seekToMs: number) {\n // The seekToMs parameter should be the timeline-relative media time\n // calculated from currentSourceTimeMs which includes timeline positioning\n this.desiredSeekTimeMs = seekToMs;\n }\n\n /**\n * Main integration method for EFTimegroup audio playback\n * Now powered by clean, testable utility functions\n * Returns undefined if no audio rendition is available\n */\n async fetchAudioSpanningTime(\n fromMs: number,\n toMs: number,\n signal: AbortSignal = new AbortController().signal,\n ): Promise<AudioSpan | undefined> {\n return withSpan(\n \"media.fetchAudioSpanningTime\",\n {\n elementId: this.id || \"unknown\",\n tagName: this.tagName.toLowerCase(),\n fromMs,\n toMs,\n durationMs: toMs - fromMs,\n src: this.src || \"none\",\n },\n undefined,\n async () => {\n return fetchAudioSpanningTime(this, fromMs, toMs, signal);\n },\n );\n }\n\n /**\n * Wait for media engine to load and determine duration\n * Ensures media is ready for playback\n */\n async waitForMediaDurations(): Promise<void> {\n if (this.mediaEngineTask.value) {\n return;\n }\n await this.mediaEngineTask.run();\n }\n\n /**\n * Returns media elements for playback audio rendering\n * For standalone media, returns [this]; for timegroups, returns all descendants\n * Used by PlaybackController for audio-driven playback\n */\n getMediaElements(): EFMedia[] {\n return [this];\n }\n\n /**\n * Render audio buffer for playback\n * Called by PlaybackController during live playback\n * Delegates to shared renderTemporalAudio utility for consistent behavior\n */\n async renderAudio(fromMs: number, toMs: number): Promise<AudioBuffer> {\n return renderTemporalAudio(this, fromMs, toMs);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { LitElement } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { LitElement } from "lit";
|
|
2
|
+
|
|
3
|
+
//#region src/elements/EFSourceMixin.d.ts
|
|
4
|
+
declare class EFSourceMixinInterface {
|
|
5
|
+
apiHost?: string;
|
|
6
|
+
productionSrc(): string;
|
|
7
|
+
src: string;
|
|
6
8
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
type Constructor<T = {}> = new (...args: any[]) => T;
|
|
11
|
-
export declare function EFSourceMixin<T extends Constructor<LitElement>>(superClass: T, options: EFSourceMixinOptions): Constructor<EFSourceMixinInterface> & T;
|
|
12
|
-
export {};
|
|
9
|
+
//#endregion
|
|
10
|
+
export { EFSourceMixinInterface };
|
|
11
|
+
//# sourceMappingURL=EFSourceMixin.d.ts.map
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { __decorate } from "../_virtual/_@oxc-project_runtime@0.94.0/helpers/decorate.js";
|
|
2
2
|
import { Task } from "@lit/task";
|
|
3
3
|
import { property } from "lit/decorators/property.js";
|
|
4
|
+
|
|
5
|
+
//#region src/elements/EFSourceMixin.ts
|
|
4
6
|
function EFSourceMixin(superClass, options) {
|
|
5
7
|
class EFSourceElement extends superClass {
|
|
6
8
|
constructor(..._args) {
|
|
@@ -30,4 +32,7 @@ function EFSourceMixin(superClass, options) {
|
|
|
30
32
|
__decorate([property({ type: String })], EFSourceElement.prototype, "src", void 0);
|
|
31
33
|
return EFSourceElement;
|
|
32
34
|
}
|
|
35
|
+
|
|
36
|
+
//#endregion
|
|
33
37
|
export { EFSourceMixin };
|
|
38
|
+
//# sourceMappingURL=EFSourceMixin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EFSourceMixin.js","names":[],"sources":["../../src/elements/EFSourceMixin.ts"],"sourcesContent":["import { Task } from \"@lit/task\";\nimport type { LitElement } from \"lit\";\nimport { property } from \"lit/decorators/property.js\";\n\nexport declare class EFSourceMixinInterface {\n apiHost?: string;\n productionSrc(): string;\n src: string;\n}\n\ninterface EFSourceMixinOptions {\n assetType: string;\n}\ntype Constructor<T = {}> = new (...args: any[]) => T;\nexport function EFSourceMixin<T extends Constructor<LitElement>>(\n superClass: T,\n options: EFSourceMixinOptions,\n) {\n class EFSourceElement extends superClass {\n get apiHost() {\n const apiHost =\n this.closest(\"ef-configuration\")?.apiHost ??\n this.closest(\"ef-workbench\")?.apiHost ??\n this.closest(\"ef-preview\")?.apiHost;\n\n return apiHost || \"https://editframe.dev\";\n }\n\n @property({ type: String })\n src = \"\";\n\n productionSrc() {\n if (!this.md5SumLoader.value) {\n throw new Error(\n `MD5 sum not available for ${this}. Cannot generate production URL`,\n );\n }\n\n if (!this.apiHost) {\n throw new Error(\n `apiHost not available for ${this}. Cannot generate production URL`,\n );\n }\n\n return `${this.apiHost}/api/v1/${options.assetType}/${this.md5SumLoader.value}`;\n }\n\n md5SumLoader = new Task(this, {\n autoRun: false,\n args: () => [this.src] as const,\n task: async ([src], { signal }) => {\n const md5Path = `/@ef-asset/${src}`;\n const response = await fetch(md5Path, { method: \"HEAD\", signal });\n return response.headers.get(\"etag\") ?? undefined;\n },\n });\n }\n\n return EFSourceElement as Constructor<EFSourceMixinInterface> & T;\n}\n"],"mappings":";;;;;AAcA,SAAgB,cACd,YACA,SACA;CACA,MAAM,wBAAwB,WAAW;;;cAWjC;uBAkBS,IAAI,KAAK,MAAM;IAC5B,SAAS;IACT,YAAY,CAAC,KAAK,IAAI;IACtB,MAAM,OAAO,CAAC,MAAM,EAAE,aAAa;KACjC,MAAM,UAAU,cAAc;AAE9B,aADiB,MAAM,MAAM,SAAS;MAAE,QAAQ;MAAQ;MAAQ,CAAC,EACjD,QAAQ,IAAI,OAAO,IAAI;;IAE1C,CAAC;;EApCF,IAAI,UAAU;AAMZ,WAJE,KAAK,QAAQ,mBAAmB,EAAE,WAClC,KAAK,QAAQ,eAAe,EAAE,WAC9B,KAAK,QAAQ,aAAa,EAAE,YAEZ;;EAMpB,gBAAgB;AACd,OAAI,CAAC,KAAK,aAAa,MACrB,OAAM,IAAI,MACR,6BAA6B,KAAK,kCACnC;AAGH,OAAI,CAAC,KAAK,QACR,OAAM,IAAI,MACR,6BAA6B,KAAK,kCACnC;AAGH,UAAO,GAAG,KAAK,QAAQ,UAAU,QAAQ,UAAU,GAAG,KAAK,aAAa;;;aAhBzE,SAAS,EAAE,MAAM,QAAQ,CAAC;AA8B7B,QAAO"}
|
|
@@ -1,30 +1,38 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
1
|
+
import { ContextMixinInterface } from "../gui/ContextMixin.js";
|
|
2
|
+
import { Task } from "@lit/task";
|
|
3
|
+
import * as lit24 from "lit";
|
|
4
|
+
import { LitElement } from "lit";
|
|
5
|
+
import * as lit_html21 from "lit-html";
|
|
6
|
+
import * as lit_html_directives_ref5 from "lit-html/directives/ref";
|
|
7
|
+
|
|
8
|
+
//#region src/elements/EFSurface.d.ts
|
|
9
|
+
declare class EFSurface extends LitElement {
|
|
10
|
+
#private;
|
|
11
|
+
static styles: lit24.CSSResult[];
|
|
12
|
+
canvasRef: lit_html_directives_ref5.Ref<HTMLCanvasElement>;
|
|
13
|
+
targetElement: ContextMixinInterface | null;
|
|
14
|
+
target: string;
|
|
15
|
+
render(): lit_html21.TemplateResult<1>;
|
|
16
|
+
get rootTimegroup(): any;
|
|
17
|
+
get currentTimeMs(): number;
|
|
18
|
+
get durationMs(): number;
|
|
19
|
+
get startTimeMs(): number;
|
|
20
|
+
get endTimeMs(): number;
|
|
21
|
+
/**
|
|
22
|
+
* Minimal integration with EFTimegroup's frame scheduling:
|
|
23
|
+
* - Waits for the target video element's frameTask to complete (ensuring it painted)
|
|
24
|
+
* - Copies the target's canvas into this element's canvas
|
|
25
|
+
*/
|
|
26
|
+
frameTask: Task<readonly [ContextMixinInterface | null], void>;
|
|
27
|
+
protected updated(): void;
|
|
28
|
+
private getSourceCanvas;
|
|
29
|
+
private copyFromTarget;
|
|
25
30
|
}
|
|
26
31
|
declare global {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
32
|
+
interface HTMLElementTagNameMap {
|
|
33
|
+
"ef-surface": EFSurface;
|
|
34
|
+
}
|
|
30
35
|
}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { EFSurface };
|
|
38
|
+
//# sourceMappingURL=EFSurface.d.ts.map
|
|
@@ -4,7 +4,9 @@ import { Task } from "@lit/task";
|
|
|
4
4
|
import { LitElement, css, html } from "lit";
|
|
5
5
|
import { customElement, property, state } from "lit/decorators.js";
|
|
6
6
|
import { createRef, ref } from "lit/directives/ref.js";
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
//#region src/elements/EFSurface.ts
|
|
9
|
+
let EFSurface = class EFSurface$1 extends LitElement {
|
|
8
10
|
constructor(..._args) {
|
|
9
11
|
super(..._args);
|
|
10
12
|
this.canvasRef = createRef();
|
|
@@ -90,4 +92,7 @@ var EFSurface = class EFSurface$1 extends LitElement {
|
|
|
90
92
|
__decorate([state()], EFSurface.prototype, "targetElement", void 0);
|
|
91
93
|
__decorate([property({ type: String })], EFSurface.prototype, "target", void 0);
|
|
92
94
|
EFSurface = __decorate([customElement("ef-surface")], EFSurface);
|
|
95
|
+
|
|
96
|
+
//#endregion
|
|
93
97
|
export { EFSurface };
|
|
98
|
+
//# sourceMappingURL=EFSurface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EFSurface.js","names":["EFSurface","target: any","root: any"],"sources":["../../src/elements/EFSurface.ts"],"sourcesContent":["import { Task } from \"@lit/task\";\nimport { css, html, LitElement } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\nimport type { ContextMixinInterface } from \"../gui/ContextMixin.ts\";\nimport { TargetController } from \"./TargetController.ts\";\n\n@customElement(\"ef-surface\")\nexport class EFSurface extends LitElement {\n static styles = [\n css`\n :host {\n display: block;\n position: relative;\n }\n canvas {\n all: inherit;\n width: 100%;\n height: 100%;\n display: block;\n }\n `,\n ];\n\n canvasRef = createRef<HTMLCanvasElement>();\n\n // @ts-expect-error controller is intentionally not referenced directly\n // biome-ignore lint/correctness/noUnusedPrivateClassMembers: Used for side effects\n #targetController: TargetController = new TargetController(this);\n\n @state()\n targetElement: ContextMixinInterface | null = null;\n\n @property({ type: String })\n target = \"\";\n\n render() {\n return html`<canvas ${ref(this.canvasRef)}></canvas>`;\n }\n\n // Provide minimal temporal-like properties so EFTimegroup can schedule us\n get rootTimegroup(): any {\n // Prefer the target element's root timegroup if available\n const target: any = this.targetElement;\n if (target && \"rootTimegroup\" in target) {\n return target.rootTimegroup;\n }\n // Fallback: nearest containing timegroup if any\n let root: any = this.closest(\"ef-timegroup\");\n while (root?.parentTimegroup) {\n root = root.parentTimegroup;\n }\n return root;\n }\n\n get currentTimeMs(): number {\n return this.rootTimegroup?.currentTimeMs ?? 0;\n }\n\n get durationMs(): number {\n return this.rootTimegroup?.durationMs ?? 0;\n }\n\n get startTimeMs(): number {\n return this.rootTimegroup?.startTimeMs ?? 0;\n }\n\n get endTimeMs(): number {\n return this.startTimeMs + this.durationMs;\n }\n\n /**\n * Minimal integration with EFTimegroup's frame scheduling:\n * - Waits for the target video element's frameTask to complete (ensuring it painted)\n * - Copies the target's canvas into this element's canvas\n */\n frameTask = new Task(this, {\n autoRun: false,\n args: () => [this.targetElement] as const,\n task: async ([target]) => {\n if (!target) return;\n\n // Ensure the target has painted its frame for this tick\n try {\n const maybeTask = (target as any).frameTask;\n if (maybeTask && typeof maybeTask.run === \"function\") {\n // Run (idempotent) and then wait for completion\n maybeTask.run();\n await maybeTask.taskComplete;\n }\n } catch (_err) {\n // Best-effort; continue to attempt copy\n }\n\n this.copyFromTarget(target);\n },\n });\n\n protected updated(): void {\n if (this.targetElement) {\n this.copyFromTarget(this.targetElement);\n }\n }\n\n // Target resolution is handled by TargetController. No implicit discovery.\n\n private getSourceCanvas(from: Element): HTMLCanvasElement | null {\n const anyEl = from as any;\n if (\"canvasElement\" in anyEl) {\n return anyEl.canvasElement ?? null;\n }\n const sr = (from as HTMLElement).shadowRoot;\n if (sr) {\n const c = sr.querySelector(\"canvas\");\n return (c as HTMLCanvasElement) ?? null;\n }\n return null;\n }\n\n private copyFromTarget(target: Element) {\n const dst = this.canvasRef.value;\n const src = this.getSourceCanvas(target);\n if (!dst || !src) return;\n if (!src.width || !src.height) return;\n\n // Match source pixel size for a faithful mirror; layout scaling is handled by CSS\n if (dst.width !== src.width || dst.height !== src.height) {\n dst.width = src.width;\n dst.height = src.height;\n }\n\n const ctx = dst.getContext(\"2d\");\n if (!ctx) return;\n ctx.drawImage(src, 0, 0, dst.width, dst.height);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-surface\": EFSurface;\n }\n}\n"],"mappings":";;;;;;;;AAQO,sBAAMA,oBAAkB,WAAW;;;mBAgB5B,WAA8B;uBAOI;gBAGrC;mBA0CG,IAAI,KAAK,MAAM;GACzB,SAAS;GACT,YAAY,CAAC,KAAK,cAAc;GAChC,MAAM,OAAO,CAAC,YAAY;AACxB,QAAI,CAAC,OAAQ;AAGb,QAAI;KACF,MAAM,YAAa,OAAe;AAClC,SAAI,aAAa,OAAO,UAAU,QAAQ,YAAY;AAEpD,gBAAU,KAAK;AACf,YAAM,UAAU;;aAEX,MAAM;AAIf,SAAK,eAAe,OAAO;;GAE9B,CAAC;;;gBAvFc,CACd,GAAG;;;;;;;;;;;MAYJ;;CAMD,oBAAsC,IAAI,iBAAiB,KAAK;CAQhE,SAAS;AACP,SAAO,IAAI,WAAW,IAAI,KAAK,UAAU,CAAC;;CAI5C,IAAI,gBAAqB;EAEvB,MAAMC,SAAc,KAAK;AACzB,MAAI,UAAU,mBAAmB,OAC/B,QAAO,OAAO;EAGhB,IAAIC,OAAY,KAAK,QAAQ,eAAe;AAC5C,SAAO,MAAM,gBACX,QAAO,KAAK;AAEd,SAAO;;CAGT,IAAI,gBAAwB;AAC1B,SAAO,KAAK,eAAe,iBAAiB;;CAG9C,IAAI,aAAqB;AACvB,SAAO,KAAK,eAAe,cAAc;;CAG3C,IAAI,cAAsB;AACxB,SAAO,KAAK,eAAe,eAAe;;CAG5C,IAAI,YAAoB;AACtB,SAAO,KAAK,cAAc,KAAK;;CA8BjC,AAAU,UAAgB;AACxB,MAAI,KAAK,cACP,MAAK,eAAe,KAAK,cAAc;;CAM3C,AAAQ,gBAAgB,MAAyC;EAC/D,MAAM,QAAQ;AACd,MAAI,mBAAmB,MACrB,QAAO,MAAM,iBAAiB;EAEhC,MAAM,KAAM,KAAqB;AACjC,MAAI,GAEF,QADU,GAAG,cAAc,SAAS,IACD;AAErC,SAAO;;CAGT,AAAQ,eAAe,QAAiB;EACtC,MAAM,MAAM,KAAK,UAAU;EAC3B,MAAM,MAAM,KAAK,gBAAgB,OAAO;AACxC,MAAI,CAAC,OAAO,CAAC,IAAK;AAClB,MAAI,CAAC,IAAI,SAAS,CAAC,IAAI,OAAQ;AAG/B,MAAI,IAAI,UAAU,IAAI,SAAS,IAAI,WAAW,IAAI,QAAQ;AACxD,OAAI,QAAQ,IAAI;AAChB,OAAI,SAAS,IAAI;;EAGnB,MAAM,MAAM,IAAI,WAAW,KAAK;AAChC,MAAI,CAAC,IAAK;AACV,MAAI,UAAU,KAAK,GAAG,GAAG,IAAI,OAAO,IAAI,OAAO;;;YAvGhD,OAAO;YAGP,SAAS,EAAE,MAAM,QAAQ,CAAC;wBA1B5B,cAAc,aAAa"}
|
|
@@ -1,214 +1,201 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
1
|
+
import { PlaybackController } from "../gui/PlaybackController.js";
|
|
2
|
+
import { EFTimegroup } from "./EFTimegroup.js";
|
|
3
|
+
import { Task } from "@lit/task";
|
|
4
|
+
import { LitElement, ReactiveController } from "lit";
|
|
5
|
+
|
|
6
|
+
//#region src/elements/EFTemporal.d.ts
|
|
7
|
+
|
|
8
|
+
declare class TemporalMixinInterface {
|
|
9
|
+
playbackController?: PlaybackController;
|
|
10
|
+
playing: boolean;
|
|
11
|
+
loop: boolean;
|
|
12
|
+
play(): void;
|
|
13
|
+
pause(): void;
|
|
14
|
+
get hasOwnDuration(): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Whether the element has a duration set as an attribute.
|
|
17
|
+
*/
|
|
18
|
+
get hasExplicitDuration(): boolean;
|
|
19
|
+
get sourceStartMs(): number;
|
|
20
|
+
/**
|
|
21
|
+
* Used to trim the start of the media.
|
|
22
|
+
*
|
|
23
|
+
* This can be set in either seconds or milliseconds.
|
|
24
|
+
*
|
|
25
|
+
* For example, `trimstart="10s"` is equivalent to `trimstart="10000ms"`.
|
|
26
|
+
*
|
|
27
|
+
* @domAttribute "trimstart"
|
|
28
|
+
*/
|
|
29
|
+
get trimStartMs(): number | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Used to trim the end of the media.
|
|
32
|
+
*
|
|
33
|
+
* This can be set in either seconds or milliseconds.
|
|
34
|
+
*
|
|
35
|
+
* For example, `trimend="10s"` is equivalent to `trimend="10000ms"`.
|
|
36
|
+
*
|
|
37
|
+
* @domAttribute "trimend"
|
|
38
|
+
*/
|
|
39
|
+
get trimEndMs(): number;
|
|
40
|
+
set trimStartMs(value: number | undefined);
|
|
41
|
+
set trimEndMs(value: number | undefined);
|
|
42
|
+
set trimstart(value: string | undefined);
|
|
43
|
+
set trimend(value: string | undefined);
|
|
44
|
+
/**
|
|
45
|
+
* The source in time of the element.
|
|
46
|
+
*
|
|
47
|
+
* This is an amount of time to trim off the beginning of the media.
|
|
48
|
+
*
|
|
49
|
+
* This can be set in either seconds or milliseconds.
|
|
50
|
+
*
|
|
51
|
+
* For example, `sourcein="10s"` is equivalent to `sourcein="10000ms"`.
|
|
52
|
+
*
|
|
53
|
+
* If the sourcein time is greater than the duration of the media, the media
|
|
54
|
+
* will not be played.
|
|
55
|
+
*
|
|
56
|
+
* If the media is 20 seconds long, and the `sourcein` value is set to `10s`, the
|
|
57
|
+
* media will play for 10 seconds, starting at the 10 second mark.
|
|
58
|
+
*
|
|
59
|
+
* Can be used in conjunction with `sourceout` to create a trimmed media.
|
|
60
|
+
*
|
|
61
|
+
* @domAttribute "sourcein"
|
|
62
|
+
*/
|
|
63
|
+
get sourceInMs(): number | undefined;
|
|
64
|
+
/**
|
|
65
|
+
* The source out time of the element.
|
|
66
|
+
*
|
|
67
|
+
* This is the point in time in the media that will be treated as the end of
|
|
68
|
+
* the media.
|
|
69
|
+
*
|
|
70
|
+
* This can be set in either seconds or milliseconds.
|
|
71
|
+
*
|
|
72
|
+
* For example, `sourceout="10s"` is equivalent to `sourceout="10000ms"`.
|
|
73
|
+
*
|
|
74
|
+
* If the sourceout time is greater than the duration of the media, the media
|
|
75
|
+
* will play until the end of the media.
|
|
76
|
+
*
|
|
77
|
+
* If the media is 20 seconds long, and the `sourceout` value is set to `10s`,
|
|
78
|
+
* the media will play for 10 seconds, starting at zero seconds and ending at
|
|
79
|
+
* the 10 second mark.
|
|
80
|
+
*
|
|
81
|
+
* Can be used in conjunction with `sourcein` to create a trimmed media.
|
|
82
|
+
*
|
|
83
|
+
* @domAttribute "sourceout"
|
|
84
|
+
*/
|
|
85
|
+
get sourceOutMs(): number | undefined;
|
|
86
|
+
set sourceInMs(value: number | undefined);
|
|
87
|
+
set sourceOutMs(value: number | undefined);
|
|
88
|
+
set sourcein(value: string | undefined);
|
|
89
|
+
set sourceout(value: string | undefined);
|
|
90
|
+
/**
|
|
91
|
+
* @domAttribute "duration"
|
|
92
|
+
*/
|
|
93
|
+
get durationMs(): number;
|
|
94
|
+
get explicitDurationMs(): number | undefined;
|
|
95
|
+
get intrinsicDurationMs(): number | undefined;
|
|
96
|
+
/**
|
|
97
|
+
* The start time of the element within its root timegroup in milliseconds.
|
|
98
|
+
*
|
|
99
|
+
* This is an absolute time according to the highest scoped timegroup the media element is contained within.
|
|
100
|
+
*
|
|
101
|
+
* The calculated value will depend on the mode of the timegroup and the offset of the media element.
|
|
102
|
+
*
|
|
103
|
+
* If the parent time group is in `sequence` mode, the start time will be the
|
|
104
|
+
* start time of the previous sibling element plus the previous sibling's duration
|
|
105
|
+
* minus the overlap of the previous sibling and the current sibling.
|
|
106
|
+
*
|
|
107
|
+
* If the parent time group is in `contain` or `fixed` mode, the start time will be
|
|
108
|
+
* the start time of the parent time group plus the offset of the media element.
|
|
109
|
+
*/
|
|
110
|
+
get startTimeMs(): number;
|
|
111
|
+
/**
|
|
112
|
+
* The end time of the element within its root timegroup in milliseconds.
|
|
113
|
+
*
|
|
114
|
+
* This is an absolute time according to the highest scoped timegroup the media
|
|
115
|
+
* element is contained within. Computed by adding the media's duration to its
|
|
116
|
+
* start time.
|
|
117
|
+
*
|
|
118
|
+
* If the media element has been trimmed, its end time will be calculated according it
|
|
119
|
+
* its trimmed duration, not its original duration.
|
|
120
|
+
*/
|
|
121
|
+
get endTimeMs(): number;
|
|
122
|
+
/**
|
|
123
|
+
* The start time of the element within its parent timegroup in milliseconds.
|
|
124
|
+
*
|
|
125
|
+
* This is a relative time according to the closest timegroup the media element
|
|
126
|
+
* is contained within. Unless the media element has been given any kind of specific offset
|
|
127
|
+
* it is common for this time to be zero.
|
|
128
|
+
*/
|
|
129
|
+
get startTimeWithinParentMs(): number;
|
|
130
|
+
/**
|
|
131
|
+
* The current time of the element in milliseconds.
|
|
132
|
+
*
|
|
133
|
+
* This is a relative time according to the closest timegroup the media element
|
|
134
|
+
* is contained within.
|
|
135
|
+
*
|
|
136
|
+
* This is suitable for determining the percentage of the media that has been
|
|
137
|
+
* played.
|
|
138
|
+
*/
|
|
139
|
+
get ownCurrentTimeMs(): number;
|
|
140
|
+
/**
|
|
141
|
+
* Element's current time for progress calculation.
|
|
142
|
+
* For timegroups: their timeline currentTimeMs
|
|
143
|
+
* For other temporal elements: their ownCurrentTimeMs
|
|
144
|
+
*/
|
|
145
|
+
get currentTimeMs(): number;
|
|
146
|
+
set currentTimeMs(value: number);
|
|
147
|
+
/**
|
|
148
|
+
* The current time of the element in milliseconds, adjusted for trimming.
|
|
149
|
+
*
|
|
150
|
+
* This is suitable for mapping to internal media time codes for audio/video
|
|
151
|
+
* elements.
|
|
152
|
+
*
|
|
153
|
+
* For example, if the media has a `sourcein` value of 10s, when `ownCurrentTimeMs` is 0s,
|
|
154
|
+
* `currentSourceTimeMs` will be 10s.
|
|
155
|
+
*
|
|
156
|
+
* sourcein=10s sourceout=10s
|
|
157
|
+
* / / /
|
|
158
|
+
* |--------|=================|---------|
|
|
159
|
+
* ^
|
|
160
|
+
* |_
|
|
161
|
+
* currentSourceTimeMs === 10s
|
|
162
|
+
* |_
|
|
163
|
+
* ownCurrentTimeMs === 0s
|
|
164
|
+
*/
|
|
165
|
+
get currentSourceTimeMs(): number;
|
|
166
|
+
set duration(value: string);
|
|
167
|
+
get duration(): string;
|
|
168
|
+
/**
|
|
169
|
+
* The offset of the element within its parent timegroup in milliseconds.
|
|
170
|
+
*
|
|
171
|
+
* This can be set in either seconds or milliseconds.
|
|
172
|
+
*
|
|
173
|
+
* For example, `offset="10s"` is equivalent to `offset="10000ms"`.
|
|
174
|
+
*
|
|
175
|
+
* This can be used to create a negative or positive offset for the start time of the media.
|
|
176
|
+
*
|
|
177
|
+
* This will change the start time of the media relative to it's otherwise normal start time.
|
|
178
|
+
*
|
|
179
|
+
* The duration of the element, or it's parent, or the start and end time of it's temporal siblings will not
|
|
180
|
+
* be affected by this offset.
|
|
181
|
+
*
|
|
182
|
+
* @domAttribute "offset"
|
|
183
|
+
*/
|
|
184
|
+
set offset(value: string);
|
|
185
|
+
get offset(): string;
|
|
186
|
+
/**
|
|
187
|
+
* A convenience property for getting the nearest containing timegroup of the media element.
|
|
188
|
+
*/
|
|
189
|
+
parentTimegroup?: EFTimegroup;
|
|
190
|
+
/**
|
|
191
|
+
* A convenience property for getting the root timegroup of the media element.
|
|
192
|
+
*/
|
|
193
|
+
rootTimegroup?: EFTimegroup;
|
|
194
|
+
frameTask: Task<readonly unknown[], unknown>;
|
|
195
|
+
didBecomeRoot(): void;
|
|
196
|
+
didBecomeChild(): void;
|
|
197
|
+
updateComplete: Promise<boolean>;
|
|
198
198
|
}
|
|
199
|
-
|
|
200
|
-
export
|
|
201
|
-
|
|
202
|
-
export declare const resetTemporalCache: () => void;
|
|
203
|
-
export declare const shallowGetTemporalElements: (element: Element, temporals?: TemporalMixinInterface[]) => TemporalMixinInterface[];
|
|
204
|
-
export declare class OwnCurrentTimeController implements ReactiveController {
|
|
205
|
-
private host;
|
|
206
|
-
private temporal;
|
|
207
|
-
constructor(host: EFTimegroup, temporal: TemporalMixinInterface & LitElement);
|
|
208
|
-
hostUpdated(): void;
|
|
209
|
-
remove(): void;
|
|
210
|
-
}
|
|
211
|
-
type Constructor<T = {}> = new (...args: any[]) => T;
|
|
212
|
-
export declare const flushStartTimeMsCache: () => void;
|
|
213
|
-
export declare const EFTemporal: <T extends Constructor<LitElement>>(superClass: T) => Constructor<TemporalMixinInterface> & T;
|
|
214
|
-
export {};
|
|
199
|
+
//#endregion
|
|
200
|
+
export { TemporalMixinInterface };
|
|
201
|
+
//# sourceMappingURL=EFTemporal.d.ts.map
|