@editframe/elements 0.47.1 → 0.48.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/LICENSE.md +58 -0
- package/dist/DelayedLoadingState.js +1 -1
- package/dist/DelayedLoadingState.js.map +1 -1
- package/dist/EF_FRAMEGEN.js +1 -2
- package/dist/EF_FRAMEGEN.js.map +1 -1
- package/dist/EF_RENDERING.js +1 -1
- package/dist/EF_RENDERING.js.map +1 -1
- package/dist/_virtual/{_@oxc-project_runtime@0.95.0 → _@oxc-project_runtime@0.122.0}/helpers/decorate.js +2 -3
- package/dist/attachContextRoot.js +1 -2
- package/dist/attachContextRoot.js.map +1 -1
- package/dist/canvas/EFCanvas.d.ts +4 -7
- package/dist/canvas/EFCanvas.js +20 -21
- package/dist/canvas/EFCanvas.js.map +1 -1
- package/dist/canvas/EFCanvasItem.d.ts +4 -5
- package/dist/canvas/EFCanvasItem.js +3 -4
- package/dist/canvas/EFCanvasItem.js.map +1 -1
- package/dist/canvas/api/CanvasAPI.d.ts +0 -1
- package/dist/canvas/api/CanvasAPI.js +1 -1
- package/dist/canvas/api/CanvasAPI.js.map +1 -1
- package/dist/canvas/coordinateTransform.js +1 -1
- package/dist/canvas/coordinateTransform.js.map +1 -1
- package/dist/canvas/getElementBounds.js +1 -1
- package/dist/canvas/getElementBounds.js.map +1 -1
- package/dist/canvas/overlays/SelectionOverlay.d.ts +4 -4
- package/dist/canvas/overlays/SelectionOverlay.js +6 -7
- package/dist/canvas/overlays/SelectionOverlay.js.map +1 -1
- package/dist/canvas/overlays/overlayState.js +1 -2
- package/dist/canvas/overlays/overlayState.js.map +1 -1
- package/dist/canvas/selection/SelectionController.js +1 -2
- package/dist/canvas/selection/SelectionController.js.map +1 -1
- package/dist/canvas/selection/SelectionModel.d.ts +0 -1
- package/dist/canvas/selection/SelectionModel.js +1 -1
- package/dist/canvas/selection/SelectionModel.js.map +1 -1
- package/dist/canvas/selection/selectionContext.d.ts +0 -1
- package/dist/canvas/selection/selectionContext.js +1 -2
- package/dist/canvas/selection/selectionContext.js.map +1 -1
- package/dist/elements/ContainerInfo.js +1 -1
- package/dist/elements/ContainerInfo.js.map +1 -1
- package/dist/elements/CrossUpdateController.js +1 -1
- package/dist/elements/CrossUpdateController.js.map +1 -1
- package/dist/elements/EFAudio.d.ts +4 -4
- package/dist/elements/EFAudio.js +4 -6
- package/dist/elements/EFAudio.js.map +1 -1
- package/dist/elements/EFCaptions.d.ts +4 -4
- package/dist/elements/EFCaptions.js +8 -10
- package/dist/elements/EFCaptions.js.map +1 -1
- package/dist/elements/EFImage.d.ts +7 -7
- package/dist/elements/EFImage.js +4 -6
- package/dist/elements/EFImage.js.map +1 -1
- package/dist/elements/EFMedia/BufferedSeekingInput.d.ts +2 -2
- package/dist/elements/EFMedia/BufferedSeekingInput.js +14 -11
- package/dist/elements/EFMedia/BufferedSeekingInput.js.map +1 -1
- package/dist/elements/EFMedia/CachedFetcher.js +1 -2
- package/dist/elements/EFMedia/CachedFetcher.js.map +1 -1
- package/dist/elements/EFMedia/MediaEngine.d.ts +0 -2
- package/dist/elements/EFMedia/MediaEngine.js +1 -2
- package/dist/elements/EFMedia/MediaEngine.js.map +1 -1
- package/dist/elements/EFMedia/SegmentIndex.d.ts +2 -3
- package/dist/elements/EFMedia/SegmentIndex.js +10 -3
- package/dist/elements/EFMedia/SegmentIndex.js.map +1 -1
- package/dist/elements/EFMedia/SegmentTransport.d.ts +0 -2
- package/dist/elements/EFMedia/SegmentTransport.js +1 -1
- package/dist/elements/EFMedia/SegmentTransport.js.map +1 -1
- package/dist/elements/EFMedia/TimingModel.d.ts +0 -2
- package/dist/elements/EFMedia/TimingModel.js +1 -1
- package/dist/elements/EFMedia/TimingModel.js.map +1 -1
- package/dist/elements/EFMedia/shared/AudioSpanUtils.js +1 -1
- package/dist/elements/EFMedia/shared/AudioSpanUtils.js.map +1 -1
- package/dist/elements/EFMedia/shared/GlobalInputCache.js +1 -2
- package/dist/elements/EFMedia/shared/GlobalInputCache.js.map +1 -1
- package/dist/elements/EFMedia/shared/PrecisionUtils.js +1 -1
- package/dist/elements/EFMedia/shared/PrecisionUtils.js.map +1 -1
- package/dist/elements/EFMedia/shared/ThumbnailExtractor.js +1 -2
- package/dist/elements/EFMedia/shared/ThumbnailExtractor.js.map +1 -1
- package/dist/elements/EFMedia/shared/timeoutUtils.js +1 -2
- package/dist/elements/EFMedia/shared/timeoutUtils.js.map +1 -1
- package/dist/elements/EFMedia/videoTasks/MainVideoInputCache.js +1 -1
- package/dist/elements/EFMedia/videoTasks/MainVideoInputCache.js.map +1 -1
- package/dist/elements/EFMedia/videoTasks/ScrubInputCache.d.ts +0 -1
- package/dist/elements/EFMedia/videoTasks/ScrubInputCache.js +12 -12
- package/dist/elements/EFMedia/videoTasks/ScrubInputCache.js.map +1 -1
- package/dist/elements/EFMedia.d.ts +3 -3
- package/dist/elements/EFMedia.js +3 -4
- package/dist/elements/EFMedia.js.map +1 -1
- package/dist/elements/EFMotionBlur.d.ts +0 -1
- package/dist/elements/EFMotionBlur.js +8 -15
- package/dist/elements/EFMotionBlur.js.map +1 -1
- package/dist/elements/EFPanZoom.d.ts +4 -4
- package/dist/elements/EFPanZoom.js +3 -4
- package/dist/elements/EFPanZoom.js.map +1 -1
- package/dist/elements/EFSourceMixin.js +2 -3
- package/dist/elements/EFSourceMixin.js.map +1 -1
- package/dist/elements/EFSurface.d.ts +6 -6
- package/dist/elements/EFSurface.js +3 -4
- package/dist/elements/EFSurface.js.map +1 -1
- package/dist/elements/EFTemporal.d.ts +0 -1
- package/dist/elements/EFTemporal.js +6 -7
- package/dist/elements/EFTemporal.js.map +1 -1
- package/dist/elements/EFText.d.ts +4 -4
- package/dist/elements/EFText.js +6 -7
- package/dist/elements/EFText.js.map +1 -1
- package/dist/elements/EFTextSegment.d.ts +4 -4
- package/dist/elements/EFTextSegment.js +3 -4
- package/dist/elements/EFTextSegment.js.map +1 -1
- package/dist/elements/EFTimegroup.d.ts +4 -10
- package/dist/elements/EFTimegroup.js +11 -12
- package/dist/elements/EFTimegroup.js.map +1 -1
- package/dist/elements/EFVideo.d.ts +35 -8
- package/dist/elements/EFVideo.js +57 -12
- package/dist/elements/EFVideo.js.map +1 -1
- package/dist/elements/EFWaveform.d.ts +4 -4
- package/dist/elements/EFWaveform.js +4 -6
- package/dist/elements/EFWaveform.js.map +1 -1
- package/dist/elements/ElementPositionInfo.js +1 -1
- package/dist/elements/ElementPositionInfo.js.map +1 -1
- package/dist/elements/FetchMixin.js +1 -1
- package/dist/elements/FetchMixin.js.map +1 -1
- package/dist/elements/SampleBuffer.js +1 -2
- package/dist/elements/SampleBuffer.js.map +1 -1
- package/dist/elements/TargetController.d.ts +0 -1
- package/dist/elements/TargetController.js +1 -1
- package/dist/elements/TargetController.js.map +1 -1
- package/dist/elements/TimegroupController.js +1 -1
- package/dist/elements/TimegroupController.js.map +1 -1
- package/dist/elements/cloneFactoryRegistry.js +1 -1
- package/dist/elements/cloneFactoryRegistry.js.map +1 -1
- package/dist/elements/durationConverter.js +4 -5
- package/dist/elements/durationConverter.js.map +1 -1
- package/dist/elements/easingUtils.js +1 -1
- package/dist/elements/easingUtils.js.map +1 -1
- package/dist/elements/findRootTemporal.js +1 -2
- package/dist/elements/findRootTemporal.js.map +1 -1
- package/dist/elements/parseTimeToMs.js +1 -1
- package/dist/elements/parseTimeToMs.js.map +1 -1
- package/dist/elements/renderTemporalAudio.js +1 -2
- package/dist/elements/renderTemporalAudio.js.map +1 -1
- package/dist/elements/setupTemporalHierarchy.js +1 -1
- package/dist/elements/setupTemporalHierarchy.js.map +1 -1
- package/dist/elements/updateAnimations.js +1 -2
- package/dist/elements/updateAnimations.js.map +1 -1
- package/dist/getRenderInfo.d.ts +0 -1
- package/dist/getRenderInfo.js +1 -2
- package/dist/getRenderInfo.js.map +1 -1
- package/dist/gui/ContextMixin.d.ts +0 -1
- package/dist/gui/ContextMixin.js +2 -3
- package/dist/gui/ContextMixin.js.map +1 -1
- package/dist/gui/Controllable.d.ts +0 -2
- package/dist/gui/Controllable.js +1 -2
- package/dist/gui/Controllable.js.map +1 -1
- package/dist/gui/EFActiveRootTemporal.d.ts +4 -5
- package/dist/gui/EFActiveRootTemporal.js +3 -4
- package/dist/gui/EFActiveRootTemporal.js.map +1 -1
- package/dist/gui/EFConfiguration.d.ts +4 -4
- package/dist/gui/EFConfiguration.js +3 -4
- package/dist/gui/EFConfiguration.js.map +1 -1
- package/dist/gui/EFControls.d.ts +2 -3
- package/dist/gui/EFControls.js +4 -5
- package/dist/gui/EFControls.js.map +1 -1
- package/dist/gui/EFDial.d.ts +4 -4
- package/dist/gui/EFDial.js +3 -4
- package/dist/gui/EFDial.js.map +1 -1
- package/dist/gui/EFFilmstrip.d.ts +6 -7
- package/dist/gui/EFFilmstrip.js +3 -4
- package/dist/gui/EFFilmstrip.js.map +1 -1
- package/dist/gui/EFFitScale.d.ts +3 -3
- package/dist/gui/EFFitScale.js +6 -7
- package/dist/gui/EFFitScale.js.map +1 -1
- package/dist/gui/EFFocusOverlay.d.ts +6 -6
- package/dist/gui/EFFocusOverlay.js +3 -4
- package/dist/gui/EFFocusOverlay.js.map +1 -1
- package/dist/gui/EFOverlayItem.d.ts +4 -4
- package/dist/gui/EFOverlayItem.js +3 -4
- package/dist/gui/EFOverlayItem.js.map +1 -1
- package/dist/gui/EFOverlayLayer.d.ts +4 -5
- package/dist/gui/EFOverlayLayer.js +3 -4
- package/dist/gui/EFOverlayLayer.js.map +1 -1
- package/dist/gui/EFPause.d.ts +4 -4
- package/dist/gui/EFPause.js +3 -4
- package/dist/gui/EFPause.js.map +1 -1
- package/dist/gui/EFPlay.d.ts +4 -4
- package/dist/gui/EFPlay.js +3 -4
- package/dist/gui/EFPlay.js.map +1 -1
- package/dist/gui/EFPreview.d.ts +4 -4
- package/dist/gui/EFPreview.js +3 -4
- package/dist/gui/EFPreview.js.map +1 -1
- package/dist/gui/EFResizableBox.d.ts +4 -4
- package/dist/gui/EFResizableBox.js +3 -4
- package/dist/gui/EFResizableBox.js.map +1 -1
- package/dist/gui/EFScrubber.d.ts +4 -4
- package/dist/gui/EFScrubber.js +3 -4
- package/dist/gui/EFScrubber.js.map +1 -1
- package/dist/gui/EFTimeDisplay.d.ts +4 -4
- package/dist/gui/EFTimeDisplay.js +3 -4
- package/dist/gui/EFTimeDisplay.js.map +1 -1
- package/dist/gui/EFTimelineRuler.d.ts +4 -4
- package/dist/gui/EFTimelineRuler.js +5 -6
- package/dist/gui/EFTimelineRuler.js.map +1 -1
- package/dist/gui/EFToggleLoop.d.ts +4 -4
- package/dist/gui/EFToggleLoop.js +3 -4
- package/dist/gui/EFToggleLoop.js.map +1 -1
- package/dist/gui/EFTogglePlay.d.ts +4 -4
- package/dist/gui/EFTogglePlay.js +3 -4
- package/dist/gui/EFTogglePlay.js.map +1 -1
- package/dist/gui/EFTransformHandles.d.ts +4 -4
- package/dist/gui/EFTransformHandles.js +3 -4
- package/dist/gui/EFTransformHandles.js.map +1 -1
- package/dist/gui/EFWorkbench.d.ts +6 -7
- package/dist/gui/EFWorkbench.js +13 -15
- package/dist/gui/EFWorkbench.js.map +1 -1
- package/dist/gui/EFWorkbench.spacebar.js +1 -1
- package/dist/gui/EFWorkbench.spacebar.js.map +1 -1
- package/dist/gui/FitScaleHelpers.js +1 -2
- package/dist/gui/FitScaleHelpers.js.map +1 -1
- package/dist/gui/PlaybackController.js +38 -18
- package/dist/gui/PlaybackController.js.map +1 -1
- package/dist/gui/TWMixin.js +1 -1
- package/dist/gui/TWMixin.js.map +1 -1
- package/dist/gui/TWMixin2.js +1 -2
- package/dist/gui/TWMixin2.js.map +1 -1
- package/dist/gui/TargetOrContextMixin.js +2 -3
- package/dist/gui/TargetOrContextMixin.js.map +1 -1
- package/dist/gui/currentTimeContext.js +1 -2
- package/dist/gui/currentTimeContext.js.map +1 -1
- package/dist/gui/durationContext.js +1 -2
- package/dist/gui/durationContext.js.map +1 -1
- package/dist/gui/efContext.js +1 -2
- package/dist/gui/efContext.js.map +1 -1
- package/dist/gui/fetchContext.js +1 -2
- package/dist/gui/fetchContext.js.map +1 -1
- package/dist/gui/focusContext.js +1 -2
- package/dist/gui/focusContext.js.map +1 -1
- package/dist/gui/focusedElementContext.js +1 -2
- package/dist/gui/focusedElementContext.js.map +1 -1
- package/dist/gui/hierarchy/EFHierarchy.d.ts +4 -4
- package/dist/gui/hierarchy/EFHierarchy.js +3 -4
- package/dist/gui/hierarchy/EFHierarchy.js.map +1 -1
- package/dist/gui/hierarchy/EFHierarchyItem.d.ts +2 -2
- package/dist/gui/hierarchy/EFHierarchyItem.js +13 -14
- package/dist/gui/hierarchy/EFHierarchyItem.js.map +1 -1
- package/dist/gui/hierarchy/hierarchyContext.js +1 -2
- package/dist/gui/hierarchy/hierarchyContext.js.map +1 -1
- package/dist/gui/icons.js +1 -2
- package/dist/gui/icons.js.map +1 -1
- package/dist/gui/panZoomTransformContext.js +1 -2
- package/dist/gui/panZoomTransformContext.js.map +1 -1
- package/dist/gui/playingContext.js +1 -2
- package/dist/gui/playingContext.js.map +1 -1
- package/dist/gui/previewSettingsContext.d.ts +0 -1
- package/dist/gui/previewSettingsContext.js +1 -2
- package/dist/gui/previewSettingsContext.js.map +1 -1
- package/dist/gui/shouldSignUrl.js +1 -1
- package/dist/gui/shouldSignUrl.js.map +1 -1
- package/dist/gui/theme.js +1 -1
- package/dist/gui/theme.js.map +1 -1
- package/dist/gui/timeline/EFTimeline.d.ts +2 -5
- package/dist/gui/timeline/EFTimeline.js +19 -20
- package/dist/gui/timeline/EFTimeline.js.map +1 -1
- package/dist/gui/timeline/EFTimelineRow.d.ts +2 -2
- package/dist/gui/timeline/EFTimelineRow.js +3 -4
- package/dist/gui/timeline/EFTimelineRow.js.map +1 -1
- package/dist/gui/timeline/TrimHandles.d.ts +4 -4
- package/dist/gui/timeline/TrimHandles.js +3 -4
- package/dist/gui/timeline/TrimHandles.js.map +1 -1
- package/dist/gui/timeline/flattenHierarchy.js +1 -2
- package/dist/gui/timeline/flattenHierarchy.js.map +1 -1
- package/dist/gui/timeline/timelineEditingContext.js +1 -2
- package/dist/gui/timeline/timelineEditingContext.js.map +1 -1
- package/dist/gui/timeline/timelineStateContext.js +1 -14
- package/dist/gui/timeline/timelineStateContext.js.map +1 -1
- package/dist/gui/timeline/tracks/AudioTrack.d.ts +0 -1
- package/dist/gui/timeline/tracks/AudioTrack.js +3 -4
- package/dist/gui/timeline/tracks/AudioTrack.js.map +1 -1
- package/dist/gui/timeline/tracks/CaptionsTrack.d.ts +2 -2
- package/dist/gui/timeline/tracks/CaptionsTrack.js +9 -9
- package/dist/gui/timeline/tracks/CaptionsTrack.js.map +1 -1
- package/dist/gui/timeline/tracks/EFThumbnailStrip.d.ts +4 -4
- package/dist/gui/timeline/tracks/EFThumbnailStrip.js +3 -4
- package/dist/gui/timeline/tracks/EFThumbnailStrip.js.map +1 -1
- package/dist/gui/timeline/tracks/HTMLTrack.d.ts +2 -2
- package/dist/gui/timeline/tracks/HTMLTrack.js +3 -4
- package/dist/gui/timeline/tracks/HTMLTrack.js.map +1 -1
- package/dist/gui/timeline/tracks/ImageTrack.d.ts +2 -2
- package/dist/gui/timeline/tracks/ImageTrack.js +3 -4
- package/dist/gui/timeline/tracks/ImageTrack.js.map +1 -1
- package/dist/gui/timeline/tracks/TextTrack.d.ts +2 -2
- package/dist/gui/timeline/tracks/TextTrack.js +4 -5
- package/dist/gui/timeline/tracks/TextTrack.js.map +1 -1
- package/dist/gui/timeline/tracks/TimegroupTrack.d.ts +5 -6
- package/dist/gui/timeline/tracks/TimegroupTrack.js +3 -4
- package/dist/gui/timeline/tracks/TimegroupTrack.js.map +1 -1
- package/dist/gui/timeline/tracks/TrackItem.d.ts +2 -2
- package/dist/gui/timeline/tracks/TrackItem.js +3 -4
- package/dist/gui/timeline/tracks/TrackItem.js.map +1 -1
- package/dist/gui/timeline/tracks/VideoTrack.d.ts +6 -7
- package/dist/gui/timeline/tracks/VideoTrack.js +3 -4
- package/dist/gui/timeline/tracks/VideoTrack.js.map +1 -1
- package/dist/gui/timeline/tracks/WaveformTrack.js +3 -4
- package/dist/gui/timeline/tracks/WaveformTrack.js.map +1 -1
- package/dist/gui/timeline/tracks/ensureTrackItemInit.js +1 -1
- package/dist/gui/timeline/tracks/preloadTracks.d.ts +1 -9
- package/dist/gui/timeline/tracks/renderTrackChildren.js +1 -2
- package/dist/gui/timeline/tracks/renderTrackChildren.js.map +1 -1
- package/dist/gui/timeline/tracks/waveformUtils.js +3 -6
- package/dist/gui/timeline/tracks/waveformUtils.js.map +1 -1
- package/dist/gui/transformCalculations.js +1 -2
- package/dist/gui/transformCalculations.js.map +1 -1
- package/dist/gui/transformUtils.js +1 -1
- package/dist/gui/transformUtils.js.map +1 -1
- package/dist/gui/tree/EFTree.d.ts +4 -6
- package/dist/gui/tree/EFTree.js +3 -4
- package/dist/gui/tree/EFTree.js.map +1 -1
- package/dist/gui/tree/EFTreeItem.d.ts +4 -5
- package/dist/gui/tree/EFTreeItem.js +3 -4
- package/dist/gui/tree/EFTreeItem.js.map +1 -1
- package/dist/gui/tree/treeContext.d.ts +0 -1
- package/dist/gui/tree/treeContext.js +1 -2
- package/dist/gui/tree/treeContext.js.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/node.js +1 -2
- package/dist/node_modules/lit-html/development/directives/ref.d.ts +14 -0
- package/dist/node_modules/lit-html/development/lit-html.d.ts +46 -0
- package/dist/otel/BridgeSpanExporter.js +1 -2
- package/dist/otel/BridgeSpanExporter.js.map +1 -1
- package/dist/otel/setupBrowserTracing.js +1 -2
- package/dist/otel/setupBrowserTracing.js.map +1 -1
- package/dist/otel/tracingHelpers.d.ts +0 -2
- package/dist/otel/tracingHelpers.js +1 -2
- package/dist/otel/tracingHelpers.js.map +1 -1
- package/dist/preview/AdaptiveResolutionTracker.js +11 -2
- package/dist/preview/AdaptiveResolutionTracker.js.map +1 -1
- package/dist/preview/FrameController.d.ts +0 -1
- package/dist/preview/FrameController.js +2 -32
- package/dist/preview/FrameController.js.map +1 -1
- package/dist/preview/QualityUpgradeScheduler.js +1 -1
- package/dist/preview/QualityUpgradeScheduler.js.map +1 -1
- package/dist/preview/RenderContext.d.ts +0 -1
- package/dist/preview/RenderContext.js +11 -2
- package/dist/preview/RenderContext.js.map +1 -1
- package/dist/preview/RenderProfiler.js +1 -1
- package/dist/preview/RenderProfiler.js.map +1 -1
- package/dist/preview/RenderStats.js +1 -1
- package/dist/preview/RenderStats.js.map +1 -1
- package/dist/preview/encoding/canvasEncoder.js +7 -2
- package/dist/preview/encoding/canvasEncoder.js.map +1 -1
- package/dist/preview/encoding/mainThreadEncoder.js +1 -1
- package/dist/preview/encoding/mainThreadEncoder.js.map +1 -1
- package/dist/preview/encoding/workerEncoder.js +1 -1
- package/dist/preview/encoding/workerEncoder.js.map +1 -1
- package/dist/preview/logger.js +1 -1
- package/dist/preview/logger.js.map +1 -1
- package/dist/preview/previewSettings.js +1 -1
- package/dist/preview/previewSettings.js.map +1 -1
- package/dist/preview/previewTypes.js +1 -1
- package/dist/preview/previewTypes.js.map +1 -1
- package/dist/preview/renderElementToCanvas.d.ts +0 -1
- package/dist/preview/renderElementToCanvas.js +12 -5
- package/dist/preview/renderElementToCanvas.js.map +1 -1
- package/dist/preview/renderTimegroupToCanvas.d.ts +0 -1
- package/dist/preview/renderTimegroupToCanvas.js +6 -7
- package/dist/preview/renderTimegroupToCanvas.js.map +1 -1
- package/dist/preview/renderTimegroupToVideo.d.ts +0 -1
- package/dist/preview/renderTimegroupToVideo.js +20 -8
- package/dist/preview/renderTimegroupToVideo.js.map +1 -1
- package/dist/preview/renderVideoToVideo.js +11 -2
- package/dist/preview/renderVideoToVideo.js.map +1 -1
- package/dist/preview/renderers.d.ts +0 -1
- package/dist/preview/renderers.js +5 -2
- package/dist/preview/renderers.js.map +1 -1
- package/dist/preview/rendering/ScaleConfig.js +2 -3
- package/dist/preview/rendering/ScaleConfig.js.map +1 -1
- package/dist/preview/rendering/inlineImages.d.ts +0 -1
- package/dist/preview/rendering/inlineImages.js +1 -1
- package/dist/preview/rendering/inlineImages.js.map +1 -1
- package/dist/preview/rendering/loadImage.js +1 -2
- package/dist/preview/rendering/loadImage.js.map +1 -1
- package/dist/preview/rendering/renderToImageNative.js +4 -5
- package/dist/preview/rendering/renderToImageNative.js.map +1 -1
- package/dist/preview/rendering/serializeTimelineDirect.js +18 -4
- package/dist/preview/rendering/serializeTimelineDirect.js.map +1 -1
- package/dist/preview/statsTrackingStrategy.js +1 -1
- package/dist/preview/statsTrackingStrategy.js.map +1 -1
- package/dist/preview/workers/WorkerPool.js +5 -2
- package/dist/preview/workers/WorkerPool.js.map +1 -1
- package/dist/preview/workers/encoderWorkerInline.js +1 -1
- package/dist/preview/workers/encoderWorkerInline.js.map +1 -1
- package/dist/render/EFRenderAPI.d.ts +0 -1
- package/dist/render/EFRenderAPI.js +1 -2
- package/dist/render/EFRenderAPI.js.map +1 -1
- package/dist/render/getRenderData.js +1 -1
- package/dist/render/getRenderData.js.map +1 -1
- package/dist/transcoding/cache/RequestDeduplicator.js +1 -1
- package/dist/transcoding/cache/RequestDeduplicator.js.map +1 -1
- package/dist/transcoding/cache/URLTokenDeduplicator.js +1 -1
- package/dist/transcoding/cache/URLTokenDeduplicator.js.map +1 -1
- package/dist/transcoding/types/index.d.ts +0 -1
- package/dist/transcoding/utils/UrlGenerator.js +1 -1
- package/dist/transcoding/utils/UrlGenerator.js.map +1 -1
- package/dist/utils/LRUCache.js +1 -1
- package/dist/utils/LRUCache.js.map +1 -1
- package/dist/utils/frameTime.js +2 -9
- package/dist/utils/frameTime.js.map +1 -1
- package/dist/version.js +2 -2
- package/dist/version.js.map +1 -1
- package/package.json +5 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageTrack.js","names":[
|
|
1
|
+
{"version":3,"file":"ImageTrack.js","names":[],"sources":["../../../../src/gui/timeline/tracks/ImageTrack.ts"],"mappings":";;;;;;;AASO,IAAA,eAAA,MAAM,qBAAqB,UAAU;CAC1C,WAAW;EACT,MAAM,QAAQ,KAAK;AACnB,MAAI,EAAE,iBAAiB,SACrB,QAAO;EAIT,MAAM,MAAM,MAAM,aAAa,MAAM,IAAK,MAAc;EAIxD,MAAM,cADa,MAAM,cAAc,KACP,KAAK;EACrC,MAAM,kBAAkB;EACxB,MAAM,iBAAiB,KAAK,IAAI,IAAI,WAAW;AAE/C,MAAI,CAAC,OAAO,iBAAiB,EAC3B,QAAO;EAIT,MAAM,iBAAiB,KAAK,IAAI,GAAG,KAAK,OAAO,aAAa,MAAM,iBAAiB,GAAG,CAAC;AAEvF,SAAO,IAAI;mBACI,SAAS;GACpB,UAAU;GACV,MAAM;GACN,OAAO;GACP,KAAK;GACL,QAAQ;GACR,SAAS;GACT,YAAY;GACZ,KAAK;GACL,UAAU;GACX,CAAC,CAAC;UACC,MAAM,KACN,EAAE,QAAQ,gBAAgB,QACpB,IAAI;;mBAED,IAAI;;oBAEH,SAAS;GACf,QAAQ,GAAG,gBAAgB;GAC3B,OAAO,GAAG,eAAe;GACzB,WAAW;GACX,cAAc;GACd,SAAS;GACT,eAAe;GACf,YAAY;GACb,CAAC,CAAC;;UAGN,CAAC;;;;;2BArDT,cAAc,iBAAiB,CAAA,EAAA,aAAA"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { TrackItem } from "./TrackItem.js";
|
|
2
|
-
import * as
|
|
2
|
+
import * as _$lit from "lit";
|
|
3
3
|
import { TemplateResult, nothing } from "lit";
|
|
4
4
|
|
|
5
5
|
//#region src/gui/timeline/tracks/TextTrack.d.ts
|
|
6
6
|
declare class EFTextTrack extends TrackItem {
|
|
7
7
|
#private;
|
|
8
8
|
contextCurrentTimeMs: number;
|
|
9
|
-
static styles:
|
|
9
|
+
static styles: _$lit.CSSResult[];
|
|
10
10
|
render(): TemplateResult<1>;
|
|
11
11
|
renderChildren(): Array<TemplateResult<1> | typeof nothing> | typeof nothing;
|
|
12
12
|
}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { currentTimeContext } from "../../currentTimeContext.js";
|
|
2
|
-
import { __decorate } from "../../../_virtual/_@oxc-project_runtime@0.
|
|
2
|
+
import { __decorate } from "../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
|
|
3
3
|
import { TrackItem } from "./TrackItem.js";
|
|
4
4
|
import { renderTrackChildren } from "./renderTrackChildren.js";
|
|
5
5
|
import { consume } from "@lit/context";
|
|
6
6
|
import { css, html, nothing } from "lit";
|
|
7
7
|
import { customElement } from "lit/decorators.js";
|
|
8
8
|
import { styleMap } from "lit/directives/style-map.js";
|
|
9
|
-
|
|
10
9
|
//#region src/gui/timeline/tracks/TextTrack.ts
|
|
11
|
-
let EFTextTrack = class EFTextTrack
|
|
10
|
+
let EFTextTrack = class EFTextTrack extends TrackItem {
|
|
12
11
|
constructor(..._args) {
|
|
13
12
|
super(..._args);
|
|
14
13
|
this.contextCurrentTimeMs = 0;
|
|
@@ -180,7 +179,7 @@ __decorate([consume({
|
|
|
180
179
|
subscribe: true
|
|
181
180
|
})], EFTextTrack.prototype, "contextCurrentTimeMs", void 0);
|
|
182
181
|
EFTextTrack = __decorate([customElement("ef-text-track")], EFTextTrack);
|
|
183
|
-
let EFTextSegmentTrack = class EFTextSegmentTrack
|
|
182
|
+
let EFTextSegmentTrack = class EFTextSegmentTrack extends TrackItem {
|
|
184
183
|
get textTrackStyles() {
|
|
185
184
|
const parentText = this.element.closest("ef-text");
|
|
186
185
|
return {
|
|
@@ -219,6 +218,6 @@ let EFTextSegmentTrack = class EFTextSegmentTrack$1 extends TrackItem {
|
|
|
219
218
|
}
|
|
220
219
|
};
|
|
221
220
|
EFTextSegmentTrack = __decorate([customElement("ef-text-segment-track")], EFTextSegmentTrack);
|
|
222
|
-
|
|
223
221
|
//#endregion
|
|
222
|
+
|
|
224
223
|
//# sourceMappingURL=TextTrack.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextTrack.js","names":["EFTextTrack","#getTextContent","#canShowSegmentsIndividually","#renderSegments","#renderCompactText","EFTextSegmentTrack"],"sources":["../../../../src/gui/timeline/tracks/TextTrack.ts"],"sourcesContent":["import { consume } from \"@lit/context\";\nimport { css, html, nothing, type TemplateResult } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\nimport { EFText } from \"../../../elements/EFText.js\";\nimport { EFTextSegment } from \"../../../elements/EFTextSegment.js\";\nimport { currentTimeContext } from \"../../currentTimeContext.js\";\n// TrackItem must be pre-loaded before this module is imported\n// See preloadTracks.ts for the initialization sequence\nimport { TrackItem } from \"./TrackItem.js\";\nimport { renderTrackChildren } from \"./renderTrackChildren.js\";\n\n@customElement(\"ef-text-track\")\nexport class EFTextTrack extends TrackItem {\n @consume({ context: currentTimeContext, subscribe: true })\n contextCurrentTimeMs = 0;\n static styles = [\n ...TrackItem.styles,\n css`\n .text-segment-block {\n position: absolute;\n height: calc(100% - 4px);\n top: 2px;\n display: flex;\n align-items: center;\n padding: 0 4px;\n border-radius: 2px;\n overflow: hidden;\n background: color-mix(in srgb, var(--ef-color-type-text) 15%, transparent);\n }\n \n .text-segment-block.active {\n background: color-mix(in srgb, var(--ef-color-type-text) 35%, transparent);\n }\n \n .text-segment-block:hover {\n z-index: 100;\n overflow: visible;\n width: max-content !important;\n min-width: max-content;\n background: var(--ef-color-bg-elevated);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);\n }\n \n .segment-text {\n font-size: 10px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: var(--ef-color-text);\n }\n \n .text-segment-block:hover .segment-text {\n overflow: visible;\n text-overflow: clip;\n }\n \n .text-segment-block.active .segment-text {\n font-weight: 500;\n color: white;\n }\n \n /* Compact mode - single block for full text */\n .text-compact-block {\n position: absolute;\n left: 4px;\n right: 4px;\n top: 2px;\n bottom: 2px;\n display: flex;\n align-items: center;\n padding: 0 4px;\n overflow: hidden;\n border-radius: 2px;\n background: color-mix(in srgb, var(--ef-color-type-text) 10%, transparent);\n }\n \n .text-compact-block:hover {\n overflow: visible;\n z-index: 100;\n width: max-content;\n background: var(--ef-color-bg-elevated);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);\n }\n `,\n ];\n\n /**\n * Get the text content - from segments, direct text nodes, or element textContent\n */\n #getTextContent(segments: EFTextSegment[]): string {\n const text = this.element as EFText;\n\n // If there are segments, use their text\n if (segments.length > 0) {\n return segments.map((s) => s.segmentText).join(\" \");\n }\n\n // Try direct text nodes (excluding templates and other elements)\n const directText = Array.from(text.childNodes)\n .filter((node) => node.nodeType === Node.TEXT_NODE)\n .map((node) => node.textContent?.trim())\n .filter(Boolean)\n .join(\" \");\n\n if (directText) return directText;\n\n // Ultimate fallback: use the element's full text content\n // (excluding script/style content but including nested text)\n const fullText = text.textContent?.trim() || \"\";\n return fullText;\n }\n\n /**\n * Check if segments can fit individually based on track width\n */\n #canShowSegmentsIndividually(segments: EFTextSegment[], trackWidthPx: number): boolean {\n if (segments.length === 0) return false;\n // Need at least 20px per segment\n return trackWidthPx >= segments.length * 20;\n }\n\n render() {\n const text = this.element as EFText;\n const segments = Array.from(text.querySelectorAll(\"ef-text-segment\")) as EFTextSegment[];\n const textContent = this.#getTextContent(segments);\n const durationMs = text.durationMs ?? 0;\n const trackWidthPx = durationMs * this.pixelsPerMs;\n const canShowSegments = this.#canShowSegmentsIndividually(segments, trackWidthPx);\n\n return html`<div style=${styleMap(this.gutterStyles)}>\n <div\n class=\"relative\"\n style=\"background-color: var(--filmstrip-bg);\"\n ?data-focused=${this.isFocused}\n @mouseenter=${() => {\n if (this.focusContext) {\n this.focusContext.focusedElement = this.element;\n }\n }}\n @mouseleave=${() => {\n if (this.focusContext) {\n this.focusContext.focusedElement = null;\n }\n }}\n >\n <div\n ?data-focused=${this.isFocused}\n class=\"relative mb-[1px] block h-[1.1rem] text-nowrap border text-sm overflow-visible\"\n style=${styleMap({\n ...this.trimPortionStyles,\n backgroundColor: this.isFocused\n ? \"var(--filmstrip-item-focused)\"\n : \"var(--filmstrip-item-bg)\",\n borderColor: \"var(--filmstrip-border)\",\n borderLeftColor: this.getElementTypeColor(),\n borderLeftWidth: \"3px\",\n })}\n >\n ${\n segments.length > 0 && canShowSegments\n ? this.#renderSegments(segments, durationMs)\n : this.#renderCompactText(textContent)\n }\n </div>\n </div>\n ${this.renderChildren()}\n </div>`;\n }\n\n /**\n * Render segments as positioned blocks (like captions)\n */\n #renderSegments(segments: EFTextSegment[], durationMs: number) {\n const text = this.element as EFText;\n const currentTimeMs = this.contextCurrentTimeMs || 0;\n const textLocalTimeMs = currentTimeMs - text.startTimeMs;\n\n return segments.map((segment, index) => {\n const staggerOffset = segment.staggerOffsetMs ?? 0;\n // Segment becomes active at its stagger offset\n const isActive = textLocalTimeMs >= staggerOffset;\n\n // Calculate segment width - distribute evenly or use stagger spacing\n const nextSegment = segments[index + 1];\n const nextStagger = nextSegment?.staggerOffsetMs ?? durationMs;\n const segmentWidthMs = nextStagger - staggerOffset;\n const segmentWidthPx = Math.max(this.pixelsPerMs * segmentWidthMs, 18);\n\n return html`<div\n class=\"text-segment-block ${isActive ? \"active\" : \"\"}\"\n style=${styleMap({\n left: `${this.pixelsPerMs * staggerOffset}px`,\n width: `${segmentWidthPx}px`,\n })}\n title=\"${segment.segmentText}\"\n >\n <span class=\"segment-text\">${segment.segmentText}</span>\n </div>`;\n });\n }\n\n /**\n * Render compact text (no segments or not enough space)\n */\n #renderCompactText(textContent: string) {\n if (!textContent) return nothing;\n\n return html`\n <div class=\"text-compact-block\">\n <span class=\"segment-text\">${textContent}</span>\n </div>\n `;\n }\n\n renderChildren(): Array<TemplateResult<1> | typeof nothing> | typeof nothing {\n const nonSegmentChildren = Array.from(this.element.children).filter(\n (child) => child.tagName?.toUpperCase() !== \"EF-TEXT-SEGMENT\",\n );\n\n if (nonSegmentChildren.length === 0) {\n return nothing;\n }\n\n return renderTrackChildren(\n nonSegmentChildren,\n this.pixelsPerMs,\n this.hideSelectors,\n this.showSelectors,\n false,\n this.enableTrim,\n );\n }\n}\n\n@customElement(\"ef-text-segment-track\")\nexport class EFTextSegmentTrack extends TrackItem {\n get textTrackStyles() {\n const parentText = this.element.closest(\"ef-text\") as EFText;\n return {\n position: \"relative\",\n left: `${this.pixelsPerMs * (parentText?.startTimeWithinParentMs || 0)}px`,\n width: `${this.pixelsPerMs * (parentText?.durationMs || 0)}px`,\n };\n }\n\n render() {\n const segment = this.element as EFTextSegment;\n const parentText = segment.closest(\"ef-text\") as EFText;\n\n if (!parentText) {\n return html`<div style=${styleMap(this.textTrackStyles)}>\n <div class=\"border h-[1.1rem] mb-[1px] text-xs\" style=\"background-color: var(--filmstrip-bg); border-color: var(--filmstrip-border);\">\n </div>\n </div>`;\n }\n\n const rootTimegroup = parentText.rootTimegroup;\n const currentTimeMs = rootTimegroup?.currentTimeMs || 0;\n const textLocalTimeMs = currentTimeMs - parentText.startTimeMs;\n\n const isCurrentlyActive =\n textLocalTimeMs >= segment.segmentStartMs && textLocalTimeMs < segment.segmentEndMs;\n\n return html`<div style=${styleMap(this.textTrackStyles)}>\n <div class=\"relative border h-[1.1rem] mb-[1px] w-full\" style=\"background-color: var(--filmstrip-bg); border-color: var(--filmstrip-border);\">\n <div\n class=\"absolute border text-xs overflow-visible flex items-center ${isCurrentlyActive ? \"font-bold z-[5]\" : \"\"}\"\n style=${styleMap({\n left: `${this.pixelsPerMs * segment.segmentStartMs}px`,\n width: `${this.pixelsPerMs * (segment.segmentEndMs - segment.segmentStartMs)}px`,\n height: \"100%\",\n top: \"0px\",\n backgroundColor: isCurrentlyActive\n ? \"var(--filmstrip-caption-bg)\"\n : \"var(--filmstrip-item-bg)\",\n borderColor: isCurrentlyActive\n ? \"var(--filmstrip-caption-border)\"\n : \"var(--filmstrip-border)\",\n })}\n title=\"Segment: '${segment.segmentText}' (${segment.segmentStartMs}ms - ${segment.segmentEndMs}ms)\"\n >\n ${isCurrentlyActive ? html`<span class=\"px-0.5 text-[8px] font-bold whitespace-nowrap\" style=\"background-color: var(--filmstrip-caption-bg);\">${segment.segmentText}</span>` : \"\"}\n </div>\n </div>\n </div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-text-track\": EFTextTrack;\n \"ef-text-segment-track\": EFTextSegmentTrack;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TextTrack.js","names":["#getTextContent","#canShowSegmentsIndividually","#renderSegments","#renderCompactText"],"sources":["../../../../src/gui/timeline/tracks/TextTrack.ts"],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
+
import { TemplateResult as TemplateResult$1 } from "../../../node_modules/lit-html/development/lit-html.js";
|
|
1
2
|
import { TrackItem } from "./TrackItem.js";
|
|
2
|
-
import "
|
|
3
|
-
import * as lit41 from "lit";
|
|
4
|
-
import * as lit_html38 from "lit-html";
|
|
3
|
+
import * as _$lit from "lit";
|
|
5
4
|
|
|
6
5
|
//#region src/gui/timeline/tracks/TimegroupTrack.d.ts
|
|
7
6
|
declare class EFTimegroupTrack extends TrackItem {
|
|
8
|
-
static styles:
|
|
7
|
+
static styles: _$lit.CSSResult[];
|
|
9
8
|
/**
|
|
10
9
|
* When true, children are not rendered (used in unified row architecture
|
|
11
10
|
* where children get their own rows).
|
|
@@ -32,11 +31,11 @@ declare class EFTimegroupTrack extends TrackItem {
|
|
|
32
31
|
left: string;
|
|
33
32
|
};
|
|
34
33
|
private get modeLabel();
|
|
35
|
-
contents():
|
|
34
|
+
contents(): TemplateResult$1<1>;
|
|
36
35
|
/**
|
|
37
36
|
* Override render to use taller height for filmstrip rows
|
|
38
37
|
*/
|
|
39
|
-
render():
|
|
38
|
+
render(): TemplateResult$1<1>;
|
|
40
39
|
}
|
|
41
40
|
declare global {
|
|
42
41
|
interface HTMLElementTagNameMap {
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { __decorate } from "../../../_virtual/_@oxc-project_runtime@0.
|
|
1
|
+
import { __decorate } from "../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
|
|
2
2
|
import { TrackItem } from "./TrackItem.js";
|
|
3
3
|
import "./EFThumbnailStrip.js";
|
|
4
4
|
import { renderTrackChildren } from "./renderTrackChildren.js";
|
|
5
5
|
import { css, html } from "lit";
|
|
6
6
|
import { customElement, property } from "lit/decorators.js";
|
|
7
7
|
import { styleMap } from "lit/directives/style-map.js";
|
|
8
|
-
|
|
9
8
|
//#region src/gui/timeline/tracks/TimegroupTrack.ts
|
|
10
9
|
/**
|
|
11
10
|
* Check if a timegroup is a root timegroup (has no parent timegroup)
|
|
@@ -25,7 +24,7 @@ function isRootTimegroup(element) {
|
|
|
25
24
|
}
|
|
26
25
|
/** Height for root timegroup filmstrip row */
|
|
27
26
|
const FILMSTRIP_ROW_HEIGHT = 48;
|
|
28
|
-
let EFTimegroupTrack = class EFTimegroupTrack
|
|
27
|
+
let EFTimegroupTrack = class EFTimegroupTrack extends TrackItem {
|
|
29
28
|
constructor(..._args) {
|
|
30
29
|
super(..._args);
|
|
31
30
|
this.skipChildren = false;
|
|
@@ -140,6 +139,6 @@ __decorate([property({
|
|
|
140
139
|
attribute: "show-filmstrip"
|
|
141
140
|
})], EFTimegroupTrack.prototype, "showFilmstrip", void 0);
|
|
142
141
|
EFTimegroupTrack = __decorate([customElement("ef-timegroup-track")], EFTimegroupTrack);
|
|
143
|
-
|
|
144
142
|
//#endregion
|
|
143
|
+
|
|
145
144
|
//# sourceMappingURL=TimegroupTrack.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimegroupTrack.js","names":[
|
|
1
|
+
{"version":3,"file":"TimegroupTrack.js","names":[],"sources":["../../../../src/gui/timeline/tracks/TimegroupTrack.ts"],"mappings":";;;;;;;;;;;;AAaA,SAAS,gBAAgB,SAA8C;AAErE,KAAI,CAAC,QACH,QAAO;CAKT,MAAM,OAAO;AACb,KAAI,OAAO,KAAK,oBAAoB,UAClC,QAAO,KAAK;AAId,KAAI,KAAK,oBAAoB,KAAA,EAC3B,QAAO,CAAC,KAAK;CAIf,IAAI,SAAS,QAAQ;AACrB,QAAO,QAAQ;AACb,MAAI,OAAO,QAAQ,aAAa,KAAK,eACnC,QAAO;AAET,WAAS,OAAO;;AAElB,QAAO;;;AAIT,MAAM,uBAAuB;AAGtB,IAAA,mBAAA,MAAM,yBAAyB,UAAU;;;sBA2B/B;uBAOC;;;gBAjCA,CACd,GAAG,UAAU,QACb,GAAG;;;;;;;;;;;;;;;;MAiBJ;;;;;CAmBD,IAAY,sBAA+B;EACzC,MAAM,eAAe,KAAK;EAC1B,MAAM,gBAAgB,KAAK;EAC3B,MAAM,QAAQ,CAAC,CAAC,KAAK,SAAS;EAC9B,MAAM,SAAS,gBAAgB,KAAK,QAAQ;AAE5C,SAAO,gBAAgB,iBAAiB,SAAS;;;;;CAMnD,IAAa,oBAAoB;EAC/B,MAAM,aAAa,MAAM;AACzB,MAAI,KAAK,oBACP,QAAO;GACL,GAAG;GACH,QAAQ,GAAG,qBAAqB;GACjC;AAEH,SAAO;;CAGT,IAAY,YAAoB;EAC9B,MAAM,OAAQ,KAAK,QAAgB,QAAQ;AAO3C,SANuC;GACrC,OAAO;GACP,UAAU;GACV,SAAS;GACT,KAAK;GACN,CACa,SAAS;;CAGzB,WAAW;AAIT,MAFmB,KAAK,oBAGtB,QAAO,IAAI;yBACQ,KAAK,QAAQ;2BACX,qBAAqB;;wBAExB,KAAK,YAAY;;AAIrC,MAAI,KAAK,aACP,QAAO,IAAI;;;;;;;UAOP,KAAK,UAAU;AAKrB,SAAO,IAAI,GAAG,oBACZ,MAAM,KAAK,KAAK,QAAQ,YAAY,EAAE,CAAC,EACvC,KAAK,aACL,KAAK,eACL,KAAK,eACL,OACA,KAAK,WACN;;;;;CAMH,SAAkB;EAChB,MAAM,cAAc,KAAK,sBACrB,GAAG,qBAAqB,MACxB;AAEJ,SAAO,IAAI,cAAc,SAAS,KAAK,aAAa,CAAC;;;wBAGjC,KAAK,UAAU;4BACX;AAClB,OAAI,KAAK,aACP,MAAK,aAAa,iBAAiB,KAAK;IAE1C;4BACkB;AAClB,OAAI,KAAK,aACP,MAAK,aAAa,iBAAiB;IAErC;;;0BAGgB,KAAK,UAAU;;kBAEvB,SAAS;GACf,GAAG,KAAK;GACR,QAAQ;GACR,iBAAiB,KAAK,YAClB,kCACA;GACJ,aAAa,KAAK,sBAAsB,gBAAgB;GACzD,CAAC,CAAC;;YAED,KAAK,YAAY,CAAC;YAClB,KAAK,UAAU,CAAC;;;QAGpB,KAAK,gBAAgB,CAAC;;;;YA1H3B,SAAS;CAAE,MAAM;CAAS,WAAW;CAAiB,CAAC,CAAA,EAAA,iBAAA,WAAA,gBAAA,KAAA,EAAA;YAOvD,SAAS;CAAE,MAAM;CAAS,WAAW;CAAkB,CAAC,CAAA,EAAA,iBAAA,WAAA,iBAAA,KAAA,EAAA;+BAlC1D,cAAc,qBAAqB,CAAA,EAAA,iBAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TemporalMixinInterface } from "../../../elements/EFTemporal.js";
|
|
2
2
|
import { FocusContext } from "../../focusContext.js";
|
|
3
3
|
import { TrimChangeDetail } from "../TrimHandles.js";
|
|
4
|
-
import * as
|
|
4
|
+
import * as _$lit from "lit";
|
|
5
5
|
import { LitElement, PropertyValueMap, ReactiveController, TemplateResult, nothing } from "lit";
|
|
6
6
|
|
|
7
7
|
//#region src/gui/timeline/tracks/TrackItem.d.ts
|
|
@@ -19,7 +19,7 @@ declare class ElementTrackController implements ReactiveController {
|
|
|
19
19
|
}
|
|
20
20
|
declare const TrackItem_base: typeof LitElement;
|
|
21
21
|
declare class TrackItem extends TrackItem_base {
|
|
22
|
-
static styles:
|
|
22
|
+
static styles: _$lit.CSSResult[];
|
|
23
23
|
focusContext?: FocusContext;
|
|
24
24
|
focusedElement?: HTMLElement | null;
|
|
25
25
|
get isFocused(): boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TWMixin } from "../../TWMixin2.js";
|
|
2
|
-
import { __decorate } from "../../../_virtual/_@oxc-project_runtime@0.
|
|
2
|
+
import { __decorate } from "../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
|
|
3
3
|
import { focusContext } from "../../focusContext.js";
|
|
4
4
|
import { focusedElementContext } from "../../focusedElementContext.js";
|
|
5
5
|
import { EFAudio } from "../../../elements/EFAudio.js";
|
|
@@ -14,7 +14,6 @@ import { consume } from "@lit/context";
|
|
|
14
14
|
import { LitElement, css, html, nothing } from "lit";
|
|
15
15
|
import { customElement, property } from "lit/decorators.js";
|
|
16
16
|
import { styleMap } from "lit/directives/style-map.js";
|
|
17
|
-
|
|
18
17
|
//#region src/gui/timeline/tracks/TrackItem.ts
|
|
19
18
|
var ElementTrackController = class {
|
|
20
19
|
constructor(host, track) {
|
|
@@ -45,7 +44,7 @@ var ElementTrackController = class {
|
|
|
45
44
|
}
|
|
46
45
|
hostUpdated() {}
|
|
47
46
|
};
|
|
48
|
-
let TrackItem = class TrackItem
|
|
47
|
+
let TrackItem = class TrackItem extends TWMixin(LitElement) {
|
|
49
48
|
constructor(..._args) {
|
|
50
49
|
super(..._args);
|
|
51
50
|
this.element = new EFTimegroup();
|
|
@@ -264,7 +263,7 @@ __decorate([property({
|
|
|
264
263
|
attribute: false
|
|
265
264
|
})], TrackItem.prototype, "showSelectors", void 0);
|
|
266
265
|
TrackItem = __decorate([customElement("ef-track-item")], TrackItem);
|
|
267
|
-
|
|
268
266
|
//#endregion
|
|
269
267
|
export { TrackItem };
|
|
268
|
+
|
|
270
269
|
//# sourceMappingURL=TrackItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrackItem.js","names":["host: LitElement","track: TrackItem","TrackItem"],"sources":["../../../../src/gui/timeline/tracks/TrackItem.ts"],"sourcesContent":["import { consume } from \"@lit/context\";\nimport {\n css,\n html,\n LitElement,\n nothing,\n type PropertyValueMap,\n type ReactiveController,\n type TemplateResult,\n} from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\n\nimport { type TemporalMixinInterface } from \"../../../elements/EFTemporal.js\";\nimport { EFTimegroup } from \"../../../elements/EFTimegroup.js\";\nimport { EFVideo } from \"../../../elements/EFVideo.js\";\nimport { EFAudio } from \"../../../elements/EFAudio.js\";\nimport { EFImage } from \"../../../elements/EFImage.js\";\nimport { EFText } from \"../../../elements/EFText.js\";\nimport { type FocusContext, focusContext } from \"../../focusContext.js\";\nimport { focusedElementContext } from \"../../focusedElementContext.js\";\nimport { TWMixin } from \"../../TWMixin.js\";\nimport { phosphorIcon, ICONS } from \"../../icons.js\";\nimport \"../TrimHandles.js\";\nimport type { TrimChangeDetail } from \"../TrimHandles.js\";\nimport { getElementTypeColor } from \"../../theme.js\";\n\nclass ElementTrackController implements ReactiveController {\n private lastDuration = 0;\n private durationCheckFrame?: number;\n\n constructor(\n private host: LitElement,\n private track: TrackItem,\n ) {\n this.host.addController(this);\n }\n\n remove() {\n this.host.removeController(this);\n if (this.durationCheckFrame) {\n cancelAnimationFrame(this.durationCheckFrame);\n }\n }\n\n hostDisconnected() {\n this.host.removeController(this);\n if (this.durationCheckFrame) {\n cancelAnimationFrame(this.durationCheckFrame);\n }\n }\n\n hostConnected(): void {\n // Start watching for duration changes\n this.lastDuration = (this.host as any).durationMs ?? 0;\n this.checkDuration();\n }\n\n private checkDuration = () => {\n const currentDuration = (this.host as any).durationMs ?? 0;\n if (currentDuration !== this.lastDuration) {\n this.lastDuration = currentDuration;\n // Duration changed - trigger re-render of the track\n this.track.requestUpdate();\n }\n // Keep checking if duration is still 0 (waiting for media to load)\n if (currentDuration === 0) {\n this.durationCheckFrame = requestAnimationFrame(this.checkDuration);\n }\n };\n\n hostUpdated(): void {\n // TEMPORARILY DISABLED: This causes every TrackItem to re-render on every frame\n // during playback, even though TrackItem doesn't display currentTimeMs.\n // Duration changes are now handled separately via checkDuration()\n }\n}\n\n@customElement(\"ef-track-item\")\nexport class TrackItem extends TWMixin(LitElement) {\n static styles = [\n css`\n :host {\n display: block;\n }\n .trim-container {\n position: relative;\n border-radius: 3px;\n transition: background-color 0.15s ease, box-shadow 0.15s ease;\n }\n \n :host(:hover) .trim-container {\n box-shadow: inset 0 0 0 1px var(--ef-color-hover);\n }\n \n :host([data-focused]) .trim-container {\n box-shadow: inset 0 0 0 1px var(--ef-color-primary);\n }\n `,\n ];\n\n @consume({ context: focusContext, subscribe: true })\n focusContext?: FocusContext;\n\n @consume({ context: focusedElementContext, subscribe: true })\n focusedElement?: HTMLElement | null;\n\n get isFocused() {\n return this.element && this.focusContext?.focusedElement === this.element;\n }\n\n /**\n * Get element type for styling and icons\n */\n protected getElementType():\n | \"video\"\n | \"audio\"\n | \"image\"\n | \"text\"\n | \"timegroup\"\n | \"captions\"\n | \"unknown\" {\n // Check for captions element\n if (\n (this.element as any).tagName === \"EF-CAPTIONS\" ||\n (this.element as any).tagName?.toLowerCase() === \"ef-captions\"\n ) {\n return \"captions\";\n }\n if (this.element instanceof EFVideo) return \"video\";\n if (this.element instanceof EFAudio) return \"audio\";\n if (this.element instanceof EFImage) return \"image\";\n if (this.element instanceof EFText) return \"text\";\n if (this.element instanceof EFTimegroup) return \"timegroup\";\n return \"unknown\";\n }\n\n /**\n * Get color for element type using shared theme utility\n */\n protected getElementTypeColor(): string {\n const type = this.getElementType();\n return getElementTypeColor(type, this);\n }\n\n /**\n * @deprecated Use getElementTypeColor() instead\n */\n protected getElementTypeColorOld(): string {\n const type = this.getElementType();\n switch (type) {\n case \"video\":\n return \"rgb(59, 130, 246)\"; // Blue\n case \"audio\":\n return \"rgb(34, 197, 94)\"; // Green\n case \"image\":\n return \"rgb(168, 85, 247)\"; // Purple\n case \"text\":\n return \"rgb(249, 115, 22)\"; // Orange\n case \"captions\":\n return \"rgb(34, 197, 94)\"; // Green (same as audio, but distinct usage)\n case \"timegroup\":\n return \"rgb(148, 163, 184)\"; // Gray\n default:\n return \"rgb(148, 163, 184)\"; // Gray\n }\n }\n\n /**\n * Get icon for element type\n */\n protected getElementIcon(): TemplateResult | typeof nothing {\n const type = this.getElementType();\n switch (type) {\n case \"video\":\n return phosphorIcon(ICONS.filmStrip, 14);\n case \"audio\":\n return phosphorIcon(ICONS.speakerHigh, 14);\n case \"image\":\n return phosphorIcon(ICONS.image, 14);\n case \"text\":\n return phosphorIcon(ICONS.textT, 14);\n case \"captions\":\n return phosphorIcon(ICONS.subtitles, 14);\n case \"timegroup\":\n return phosphorIcon(ICONS.filmSlate, 14);\n default:\n return nothing;\n }\n }\n\n /**\n * Format duration for display\n */\n protected formatDuration(ms: number): string {\n if (ms < 1000) {\n return `${Math.round(ms)}ms`;\n }\n const seconds = (ms / 1000).toFixed(1);\n return `${seconds}s`;\n }\n\n /**\n * Get tooltip text with element info\n */\n protected getTooltipText(): string {\n const elementId = (this.element as HTMLElement)?.id || \"\";\n const type = this.getElementType();\n const duration = this.formatDuration(this.element.durationMs ?? 0);\n const startTime = this.formatDuration(this.element.startTimeMs ?? 0);\n const endTime = this.formatDuration(\n (this.element.startTimeMs ?? 0) + (this.element.durationMs ?? 0),\n );\n\n const parts = [];\n if (elementId) parts.push(elementId);\n parts.push(`${type} • ${duration}`);\n if (this.element.startTimeMs > 0) {\n parts.push(`${startTime} → ${endTime}`);\n }\n\n // Add composition mode for timegroups\n if (type === \"timegroup\") {\n const mode = (this.element as any).mode || \"fixed\";\n parts.push(`mode: ${mode}`);\n }\n\n return parts.join(\" • \");\n }\n\n @property({ type: Object, attribute: false })\n element: TemporalMixinInterface & LitElement = new EFTimegroup();\n\n @property({ type: Number, attribute: \"pixels-per-ms\" })\n pixelsPerMs = 0.04;\n\n @property({ type: Boolean, attribute: \"enable-trim\" })\n enableTrim = false;\n\n @property({ type: Array, attribute: false })\n hideSelectors?: string[];\n\n @property({ type: Array, attribute: false })\n showSelectors?: string[];\n\n get gutterStyles() {\n // Always use absolute positioning (startTimeMs) for flat row architecture.\n // startTimeMs already includes the cumulative position from all parent timegroups.\n const startMs = this.element.startTimeMs;\n const leftOffset = startMs;\n\n return {\n position: \"relative\",\n left: `${this.pixelsPerMs * leftOffset}px`,\n width: `${this.pixelsPerMs * (this.element.intrinsicDurationMs ?? this.element.durationMs)}px`,\n };\n }\n\n get trimPortionStyles() {\n // The trim container starts at 0 relative to the gutter,\n // which is already positioned at the element's absolute startTimeMs.\n return {\n width: `${this.pixelsPerMs * this.element.durationMs}px`,\n left: \"0px\",\n };\n }\n\n protected handleTrimChange(e: CustomEvent<TrimChangeDetail>): void {\n const { type, value } = e.detail;\n\n this.element.trimStartMs = value.startMs;\n this.element.trimEndMs = value.endMs;\n\n this.dispatchEvent(\n new CustomEvent(\"track-trim-change\", {\n detail: {\n elementId: this.element.id || \"\",\n type,\n value,\n },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n contents(): TemplateResult | typeof nothing {\n return nothing;\n }\n\n animations() {\n // TEMPORARILY DISABLED: getAnimations() is expensive and called on every render\n // TODO: Cache animations or only compute when element structure changes\n return [];\n\n // const animations = this.element.getAnimations();\n // return animations.map((animation) => {\n // const effect = animation.effect;\n // if (!(effect instanceof KeyframeEffect)) {\n // return nothing;\n // }\n // const start = effect.getTiming().delay ?? 0;\n // const duration = effect.getTiming().duration;\n // if (duration === null) {\n // return nothing;\n // }\n // const keyframes = effect.getKeyframes();\n // const firstKeyframe = keyframes[0];\n // if (!firstKeyframe) {\n // return nothing;\n // }\n // const properties = new Set(Object.keys(firstKeyframe));\n // for (const key of CommonEffectKeys) {\n // properties.delete(key);\n // }\n\n // return html`<div\n // class=\"relative h-[5px] opacity-50\"\n // label=\"animation\"\n // style=${styleMap({\n // left: `${this.pixelsPerMs * start}px`,\n // width: `${this.pixelsPerMs * Number(duration)}px`,\n // backgroundColor: \"var(--filmstrip-animation-bg)\",\n // })}\n // >\n // ${effect.getKeyframes().map((keyframe) => {\n // return html`<div\n // class=\"absolute top-0 h-full w-1\"\n // style=${styleMap({\n // left: `${\n // this.pixelsPerMs * keyframe.computedOffset * Number(duration)\n // }px`,\n // backgroundColor: \"var(--filmstrip-keyframe-bg)\",\n // })}\n // ></div>`;\n // })}\n // </div>`;\n // });\n }\n\n renderChildren(): Array<TemplateResult<1> | typeof nothing> | typeof nothing {\n return nothing;\n }\n\n render() {\n const elementId = (this.element as HTMLElement).id || \"\";\n const trimStartMs = this.element.trimStartMs ?? 0;\n const trimEndMs = this.element.trimEndMs ?? 0;\n const intrinsicDurationMs = this.element.intrinsicDurationMs ?? this.element.durationMs;\n\n const typeColor = this.getElementTypeColor();\n\n return html`<div style=${styleMap(this.gutterStyles)}>\n <div\n ?data-focused=${this.isFocused}\n @mouseenter=${() => {\n if (this.focusContext) {\n this.focusContext.focusedElement = this.element;\n }\n }}\n @mouseleave=${() => {\n if (this.focusContext) {\n this.focusContext.focusedElement = null;\n }\n }}\n >\n <div\n ?data-focused=${this.isFocused}\n class=\"trim-container\"\n style=${styleMap({\n ...this.trimPortionStyles,\n height: \"var(--timeline-track-height, 22px)\",\n backgroundColor: this.isFocused ? \"rgba(59, 130, 246, 0.25)\" : \"rgba(30, 41, 59, 0.8)\",\n borderLeft: `3px solid ${typeColor}`,\n })}\n title=\"${this.getTooltipText()}\"\n >\n ${this.animations()}\n ${this.contents()}\n ${\n this.enableTrim\n ? html`<ef-trim-handles\n mode=\"track\"\n element-id=${elementId}\n pixels-per-ms=${this.pixelsPerMs}\n trim-start-ms=${trimStartMs}\n trim-end-ms=${trimEndMs}\n intrinsic-duration-ms=${intrinsicDurationMs}\n @trim-change=${this.handleTrimChange}\n ></ef-trim-handles>`\n : nothing\n }\n </div>\n </div>\n ${this.renderChildren()}\n </div>`;\n }\n\n protected trackController?: ElementTrackController;\n\n update(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>) {\n if (changedProperties.has(\"element\") && this.element instanceof LitElement) {\n this.trackController?.remove();\n this.trackController = new ElementTrackController(this.element, this);\n }\n super.update(changedProperties);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-track-item\": TrackItem;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TrackItem.js","names":[],"sources":["../../../../src/gui/timeline/tracks/TrackItem.ts"],"mappings":";;;;;;;;;;;;;;;;;AA2BA,IAAM,yBAAN,MAA2D;CAIzD,YACE,MACA,OACA;AAFQ,OAAA,OAAA;AACA,OAAA,QAAA;sBALa;6BA8BO;GAC5B,MAAM,kBAAmB,KAAK,KAAa,cAAc;AACzD,OAAI,oBAAoB,KAAK,cAAc;AACzC,SAAK,eAAe;AAEpB,SAAK,MAAM,eAAe;;AAG5B,OAAI,oBAAoB,EACtB,MAAK,qBAAqB,sBAAsB,KAAK,cAAc;;AAhCrE,OAAK,KAAK,cAAc,KAAK;;CAG/B,SAAS;AACP,OAAK,KAAK,iBAAiB,KAAK;AAChC,MAAI,KAAK,mBACP,sBAAqB,KAAK,mBAAmB;;CAIjD,mBAAmB;AACjB,OAAK,KAAK,iBAAiB,KAAK;AAChC,MAAI,KAAK,mBACP,sBAAqB,KAAK,mBAAmB;;CAIjD,gBAAsB;AAEpB,OAAK,eAAgB,KAAK,KAAa,cAAc;AACrD,OAAK,eAAe;;CAgBtB,cAAoB;;AAQf,IAAA,YAAA,MAAM,kBAAkB,QAAQ,WAAW,CAAC;;;iBAwJF,IAAI,aAAa;qBAGlD;oBAGD;;;gBA7JG,CACd,GAAG;;;;;;;;;;;;;;;;;MAkBJ;;CAQD,IAAI,YAAY;AACd,SAAO,KAAK,WAAW,KAAK,cAAc,mBAAmB,KAAK;;;;;CAMpE,iBAOc;AAEZ,MACG,KAAK,QAAgB,YAAY,iBACjC,KAAK,QAAgB,SAAS,aAAa,KAAK,cAEjD,QAAO;AAET,MAAI,KAAK,mBAAmB,QAAS,QAAO;AAC5C,MAAI,KAAK,mBAAmB,QAAS,QAAO;AAC5C,MAAI,KAAK,mBAAmB,QAAS,QAAO;AAC5C,MAAI,KAAK,mBAAmB,OAAQ,QAAO;AAC3C,MAAI,KAAK,mBAAmB,YAAa,QAAO;AAChD,SAAO;;;;;CAMT,sBAAwC;AAEtC,SAAO,oBADM,KAAK,gBAAgB,EACD,KAAK;;;;;CAMxC,yBAA2C;AAEzC,UADa,KAAK,gBAAgB,EAClC;GACE,KAAK,QACH,QAAO;GACT,KAAK,QACH,QAAO;GACT,KAAK,QACH,QAAO;GACT,KAAK,OACH,QAAO;GACT,KAAK,WACH,QAAO;GACT,KAAK,YACH,QAAO;GACT,QACE,QAAO;;;;;;CAOb,iBAA4D;AAE1D,UADa,KAAK,gBAAgB,EAClC;GACE,KAAK,QACH,QAAO,aAAa,MAAM,WAAW,GAAG;GAC1C,KAAK,QACH,QAAO,aAAa,MAAM,aAAa,GAAG;GAC5C,KAAK,QACH,QAAO,aAAa,MAAM,OAAO,GAAG;GACtC,KAAK,OACH,QAAO,aAAa,MAAM,OAAO,GAAG;GACtC,KAAK,WACH,QAAO,aAAa,MAAM,WAAW,GAAG;GAC1C,KAAK,YACH,QAAO,aAAa,MAAM,WAAW,GAAG;GAC1C,QACE,QAAO;;;;;;CAOb,eAAyB,IAAoB;AAC3C,MAAI,KAAK,IACP,QAAO,GAAG,KAAK,MAAM,GAAG,CAAC;AAG3B,SAAO,IADU,KAAK,KAAM,QAAQ,EAAE,CACpB;;;;;CAMpB,iBAAmC;EACjC,MAAM,YAAa,KAAK,SAAyB,MAAM;EACvD,MAAM,OAAO,KAAK,gBAAgB;EAClC,MAAM,WAAW,KAAK,eAAe,KAAK,QAAQ,cAAc,EAAE;EAClE,MAAM,YAAY,KAAK,eAAe,KAAK,QAAQ,eAAe,EAAE;EACpE,MAAM,UAAU,KAAK,gBAClB,KAAK,QAAQ,eAAe,MAAM,KAAK,QAAQ,cAAc,GAC/D;EAED,MAAM,QAAQ,EAAE;AAChB,MAAI,UAAW,OAAM,KAAK,UAAU;AACpC,QAAM,KAAK,GAAG,KAAK,KAAK,WAAW;AACnC,MAAI,KAAK,QAAQ,cAAc,EAC7B,OAAM,KAAK,GAAG,UAAU,KAAK,UAAU;AAIzC,MAAI,SAAS,aAAa;GACxB,MAAM,OAAQ,KAAK,QAAgB,QAAQ;AAC3C,SAAM,KAAK,SAAS,OAAO;;AAG7B,SAAO,MAAM,KAAK,MAAM;;CAkB1B,IAAI,eAAe;EAIjB,MAAM,aADU,KAAK,QAAQ;AAG7B,SAAO;GACL,UAAU;GACV,MAAM,GAAG,KAAK,cAAc,WAAW;GACvC,OAAO,GAAG,KAAK,eAAe,KAAK,QAAQ,uBAAuB,KAAK,QAAQ,YAAY;GAC5F;;CAGH,IAAI,oBAAoB;AAGtB,SAAO;GACL,OAAO,GAAG,KAAK,cAAc,KAAK,QAAQ,WAAW;GACrD,MAAM;GACP;;CAGH,iBAA2B,GAAwC;EACjE,MAAM,EAAE,MAAM,UAAU,EAAE;AAE1B,OAAK,QAAQ,cAAc,MAAM;AACjC,OAAK,QAAQ,YAAY,MAAM;AAE/B,OAAK,cACH,IAAI,YAAY,qBAAqB;GACnC,QAAQ;IACN,WAAW,KAAK,QAAQ,MAAM;IAC9B;IACA;IACD;GACD,SAAS;GACT,UAAU;GACX,CAAC,CACH;;CAGH,WAA4C;AAC1C,SAAO;;CAGT,aAAa;AAGX,SAAO,EAAE;;CA+CX,iBAA6E;AAC3E,SAAO;;CAGT,SAAS;EACP,MAAM,YAAa,KAAK,QAAwB,MAAM;EACtD,MAAM,cAAc,KAAK,QAAQ,eAAe;EAChD,MAAM,YAAY,KAAK,QAAQ,aAAa;EAC5C,MAAM,sBAAsB,KAAK,QAAQ,uBAAuB,KAAK,QAAQ;EAE7E,MAAM,YAAY,KAAK,qBAAqB;AAE5C,SAAO,IAAI,cAAc,SAAS,KAAK,aAAa,CAAC;;wBAEjC,KAAK,UAAU;4BACX;AAClB,OAAI,KAAK,aACP,MAAK,aAAa,iBAAiB,KAAK;IAE1C;4BACkB;AAClB,OAAI,KAAK,aACP,MAAK,aAAa,iBAAiB;IAErC;;;0BAGgB,KAAK,UAAU;;kBAEvB,SAAS;GACf,GAAG,KAAK;GACR,QAAQ;GACR,iBAAiB,KAAK,YAAY,6BAA6B;GAC/D,YAAY,aAAa;GAC1B,CAAC,CAAC;mBACM,KAAK,gBAAgB,CAAC;;YAE7B,KAAK,YAAY,CAAC;YAClB,KAAK,UAAU,CAAC;YAEhB,KAAK,aACD,IAAI;;6BAES,UAAU;gCACP,KAAK,YAAY;gCACjB,YAAY;8BACd,UAAU;wCACA,oBAAoB;+BAC7B,KAAK,iBAAiB;qCAErC,QACL;;;QAGH,KAAK,gBAAgB,CAAC;;;CAM5B,OAAO,mBAAsE;AAC3E,MAAI,kBAAkB,IAAI,UAAU,IAAI,KAAK,mBAAmB,YAAY;AAC1E,QAAK,iBAAiB,QAAQ;AAC9B,QAAK,kBAAkB,IAAI,uBAAuB,KAAK,SAAS,KAAK;;AAEvE,QAAM,OAAO,kBAAkB;;;YAhThC,QAAQ;CAAE,SAAS;CAAc,WAAW;CAAM,CAAC,CAAA,EAAA,UAAA,WAAA,gBAAA,KAAA,EAAA;YAGnD,QAAQ;CAAE,SAAS;CAAuB,WAAW;CAAM,CAAC,CAAA,EAAA,UAAA,WAAA,kBAAA,KAAA,EAAA;YA8H5D,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAO,CAAC,CAAA,EAAA,UAAA,WAAA,WAAA,KAAA,EAAA;YAG5C,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAiB,CAAC,CAAA,EAAA,UAAA,WAAA,eAAA,KAAA,EAAA;YAGtD,SAAS;CAAE,MAAM;CAAS,WAAW;CAAe,CAAC,CAAA,EAAA,UAAA,WAAA,cAAA,KAAA,EAAA;YAGrD,SAAS;CAAE,MAAM;CAAO,WAAW;CAAO,CAAC,CAAA,EAAA,UAAA,WAAA,iBAAA,KAAA,EAAA;YAG3C,SAAS;CAAE,MAAM;CAAO,WAAW;CAAO,CAAC,CAAA,EAAA,UAAA,WAAA,iBAAA,KAAA,EAAA;wBApK7C,cAAc,gBAAgB,CAAA,EAAA,UAAA"}
|
|
@@ -1,21 +1,20 @@
|
|
|
1
|
+
import { TemplateResult as TemplateResult$1 } from "../../../node_modules/lit-html/development/lit-html.js";
|
|
2
|
+
import { Ref } from "../../../node_modules/lit-html/development/directives/ref.js";
|
|
1
3
|
import { TrackItem } from "./TrackItem.js";
|
|
2
|
-
import "
|
|
3
|
-
import * as lit40 from "lit";
|
|
4
|
-
import * as lit_html36 from "lit-html";
|
|
5
|
-
import * as lit_html_directives_ref_js5 from "lit-html/directives/ref.js";
|
|
4
|
+
import * as _$lit from "lit";
|
|
6
5
|
|
|
7
6
|
//#region src/gui/timeline/tracks/VideoTrack.d.ts
|
|
8
7
|
declare class EFVideoTrack extends TrackItem {
|
|
9
8
|
#private;
|
|
10
|
-
static styles:
|
|
11
|
-
audioCanvasRef:
|
|
9
|
+
static styles: _$lit.CSSResult[];
|
|
10
|
+
audioCanvasRef: Ref<HTMLCanvasElement>;
|
|
12
11
|
private _timelineState?;
|
|
13
12
|
private _waveformData;
|
|
14
13
|
private _hasAudio;
|
|
15
14
|
connectedCallback(): void;
|
|
16
15
|
disconnectedCallback(): void;
|
|
17
16
|
updated(changedProperties: Map<string | number | symbol, unknown>): void;
|
|
18
|
-
render():
|
|
17
|
+
render(): TemplateResult$1<1>;
|
|
19
18
|
}
|
|
20
19
|
declare global {
|
|
21
20
|
interface HTMLElementTagNameMap {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __decorate } from "../../../_virtual/_@oxc-project_runtime@0.
|
|
1
|
+
import { __decorate } from "../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
|
|
2
2
|
import { EFVideo } from "../../../elements/EFVideo.js";
|
|
3
3
|
import { TrackItem } from "./TrackItem.js";
|
|
4
4
|
import { extractWaveformData } from "./waveformUtils.js";
|
|
@@ -9,7 +9,6 @@ import { css, html, nothing } from "lit";
|
|
|
9
9
|
import { customElement, state } from "lit/decorators.js";
|
|
10
10
|
import { styleMap } from "lit/directives/style-map.js";
|
|
11
11
|
import { createRef, ref } from "lit/directives/ref.js";
|
|
12
|
-
|
|
13
12
|
//#region src/gui/timeline/tracks/VideoTrack.ts
|
|
14
13
|
/** Padding for virtual rendering */
|
|
15
14
|
const VIRTUAL_RENDER_PADDING_PX = 100;
|
|
@@ -17,7 +16,7 @@ const VIRTUAL_RENDER_PADDING_PX = 100;
|
|
|
17
16
|
const THUMBNAIL_HEIGHT = 24;
|
|
18
17
|
/** Height of audio section when present */
|
|
19
18
|
const AUDIO_SECTION_HEIGHT = 14;
|
|
20
|
-
let EFVideoTrack = class EFVideoTrack
|
|
19
|
+
let EFVideoTrack = class EFVideoTrack extends TrackItem {
|
|
21
20
|
constructor(..._args) {
|
|
22
21
|
super(..._args);
|
|
23
22
|
this.audioCanvasRef = createRef();
|
|
@@ -257,6 +256,6 @@ __decorate([consume({
|
|
|
257
256
|
__decorate([state()], EFVideoTrack.prototype, "_waveformData", void 0);
|
|
258
257
|
__decorate([state()], EFVideoTrack.prototype, "_hasAudio", void 0);
|
|
259
258
|
EFVideoTrack = __decorate([customElement("ef-video-track")], EFVideoTrack);
|
|
260
|
-
|
|
261
259
|
//#endregion
|
|
260
|
+
|
|
262
261
|
//# sourceMappingURL=VideoTrack.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VideoTrack.js","names":["EFVideoTrack","#checkAndLoadAudioWaveform","#lastSrc","#abortController","#scheduleRender","#renderRequested","#renderAudioOverlay","#drawAudioWaveform","#getTrackHeight"],"sources":["../../../../src/gui/timeline/tracks/VideoTrack.ts"],"sourcesContent":["import { consume } from \"@lit/context\";\nimport { css, html, nothing } from \"lit\";\nimport { customElement, state } from \"lit/decorators.js\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\nimport { EFVideo } from \"../../../elements/EFVideo.js\";\n\n// TrackItem must be pre-loaded before this module is imported\n// See preloadTracks.ts for the initialization sequence\nimport { TrackItem } from \"./TrackItem.js\";\nimport { extractWaveformData, type WaveformData } from \"./waveformUtils.js\";\nimport { timelineStateContext, type TimelineState } from \"../timelineStateContext.js\";\nimport \"./EFThumbnailStrip.js\";\n\n/** Padding for virtual rendering */\nconst VIRTUAL_RENDER_PADDING_PX = 100;\n\n/** Height of thumbnail section */\nconst THUMBNAIL_HEIGHT = 24;\n/** Height of audio section when present */\nconst AUDIO_SECTION_HEIGHT = 14;\n\n@customElement(\"ef-video-track\")\nexport class EFVideoTrack extends TrackItem {\n static override styles = [\n ...TrackItem.styles,\n css`\n .video-content {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n .thumbnail-section {\n position: relative;\n flex: 0 0 ${THUMBNAIL_HEIGHT}px;\n height: ${THUMBNAIL_HEIGHT}px;\n background: var(--ef-color-bg-inset);\n }\n .audio-section {\n position: relative;\n flex: 0 0 ${AUDIO_SECTION_HEIGHT}px;\n height: ${AUDIO_SECTION_HEIGHT}px;\n background: var(--ef-color-bg-elevated);\n border-top: 1px solid var(--ef-color-border-subtle);\n overflow: hidden;\n }\n .audio-section-canvas {\n position: absolute;\n top: 0;\n height: 100%;\n }\n `,\n ];\n\n audioCanvasRef = createRef<HTMLCanvasElement>();\n\n @consume({ context: timelineStateContext, subscribe: true })\n @state()\n private _timelineState?: TimelineState;\n\n @state()\n private _waveformData: WaveformData | null = null;\n\n @state()\n private _hasAudio = false;\n\n #lastSrc: string | null = null;\n #abortController: AbortController | null = null;\n #renderRequested = false;\n\n /**\n * Check if video has audio and load waveform data\n */\n async #checkAndLoadAudioWaveform(): Promise<void> {\n const video = this.element as EFVideo;\n const src = video?.src;\n\n if (!src || src === this.#lastSrc) {\n return;\n }\n\n this.#lastSrc = src;\n this._hasAudio = false;\n this._waveformData = null;\n\n // Cancel any in-progress load\n this.#abortController?.abort();\n this.#abortController = new AbortController();\n\n try {\n // Wait for media engine to determine if video has audio\n if (video.mediaEngineTask) {\n const mediaEngine = await video.mediaEngineTask.taskComplete;\n if (mediaEngine?.tracks.audio) {\n this._hasAudio = true;\n\n const waveformData = await extractWaveformData(video, this.#abortController.signal);\n\n if (waveformData) {\n this._waveformData = waveformData;\n this.#scheduleRender();\n }\n }\n }\n } catch (error) {\n if (!(error instanceof DOMException && error.name === \"AbortError\")) {\n // Silently fail - audio overlay is optional\n }\n }\n }\n\n #scheduleRender(): void {\n if (this.#renderRequested) return;\n this.#renderRequested = true;\n\n requestAnimationFrame(() => {\n this.#renderRequested = false;\n this.#renderAudioOverlay();\n });\n }\n\n #renderAudioOverlay(): void {\n const canvas = this.audioCanvasRef.value;\n const waveformData = this._waveformData;\n\n if (!canvas || !waveformData || !this._hasAudio) return;\n\n const video = this.element as EFVideo;\n const durationMs = video.durationMs ?? 0;\n if (durationMs === 0) return;\n\n const pixelsPerMs = this._timelineState?.pixelsPerMs ?? this.pixelsPerMs;\n const trackWidthPx = durationMs * pixelsPerMs;\n const trackStartMs = video.startTimeMs ?? 0;\n const trackStartPx = trackStartMs * pixelsPerMs;\n\n // Get scroll/viewport info\n const scrollLeft = this._timelineState?.viewportScrollLeft ?? 0;\n const viewportWidth = this._timelineState?.viewportWidth ?? 800;\n\n // Calculate visible region\n const visibleLeftPx = scrollLeft - VIRTUAL_RENDER_PADDING_PX;\n const visibleRightPx = scrollLeft + viewportWidth + VIRTUAL_RENDER_PADDING_PX;\n const trackEndPx = trackStartPx + trackWidthPx;\n\n // Check visibility\n if (trackEndPx < visibleLeftPx || trackStartPx > visibleRightPx) {\n canvas.style.display = \"none\";\n return;\n }\n canvas.style.display = \"block\";\n\n // Calculate visible portion within track\n const visibleStartInTrack = Math.max(0, visibleLeftPx - trackStartPx);\n const visibleEndInTrack = Math.min(trackWidthPx, visibleRightPx - trackStartPx);\n const visibleWidthPx = visibleEndInTrack - visibleStartInTrack;\n\n if (visibleWidthPx <= 0) return;\n\n const height = AUDIO_SECTION_HEIGHT;\n const dpr = window.devicePixelRatio || 1;\n\n // Set canvas size\n const targetWidth = Math.ceil(visibleWidthPx * dpr);\n const targetHeight = Math.ceil(height * dpr);\n\n if (canvas.width !== targetWidth || canvas.height !== targetHeight) {\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n }\n\n canvas.style.left = `${visibleStartInTrack}px`;\n canvas.style.width = `${visibleWidthPx}px`;\n\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n ctx.clearRect(0, 0, visibleWidthPx, height);\n\n // Calculate time range to render\n const sourceInMs = video.sourceStartMs ?? 0;\n const timeStartMs = sourceInMs + visibleStartInTrack / pixelsPerMs;\n const timeEndMs = sourceInMs + visibleEndInTrack / pixelsPerMs;\n\n // Draw waveform in dedicated section\n this.#drawAudioWaveform(ctx, waveformData, visibleWidthPx, height, timeStartMs, timeEndMs);\n }\n\n #drawAudioWaveform(\n ctx: CanvasRenderingContext2D,\n waveformData: WaveformData,\n width: number,\n height: number,\n startMs: number,\n endMs: number,\n ): void {\n const { peaks, samplesPerSecond } = waveformData;\n\n const startSample = Math.floor((startMs / 1000) * samplesPerSecond);\n const endSample = Math.ceil((endMs / 1000) * samplesPerSecond);\n const sampleCount = endSample - startSample;\n\n if (sampleCount <= 0 || width <= 0) return;\n\n const centerY = height / 2;\n const halfHeight = height / 2 - 1;\n const pixelsPerSample = width / sampleCount;\n\n // Draw filled waveform\n ctx.fillStyle =\n getComputedStyle(this).getPropertyValue(\"--ef-color-success\").trim() || \"rgb(74, 222, 128)\";\n ctx.globalAlpha = 0.9;\n ctx.beginPath();\n\n // Draw top half (max values) left to right\n for (let i = 0; i <= sampleCount; i++) {\n const sampleIndex = startSample + i;\n const peakIndex = sampleIndex * 2;\n if (peakIndex + 1 >= peaks.length) break;\n\n const maxValue = peaks[peakIndex + 1] ?? 0;\n const px = i * pixelsPerSample;\n const py = centerY - maxValue * halfHeight;\n\n if (i === 0) {\n ctx.moveTo(px, py);\n } else {\n ctx.lineTo(px, py);\n }\n }\n\n // Draw bottom half (min values) right to left\n for (let i = sampleCount; i >= 0; i--) {\n const sampleIndex = startSample + i;\n const peakIndex = sampleIndex * 2;\n if (peakIndex >= peaks.length) continue;\n\n const minValue = peaks[peakIndex] ?? 0;\n const px = i * pixelsPerSample;\n const py = centerY - minValue * halfHeight;\n\n ctx.lineTo(px, py);\n }\n\n ctx.closePath();\n ctx.fill();\n\n // Draw center line\n ctx.globalAlpha = 0.3;\n ctx.strokeStyle =\n getComputedStyle(this).getPropertyValue(\"--ef-color-success\").trim() || \"rgb(74, 222, 128)\";\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.moveTo(0, centerY);\n ctx.lineTo(width, centerY);\n ctx.stroke();\n\n ctx.globalAlpha = 1;\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.#checkAndLoadAudioWaveform();\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#abortController?.abort();\n }\n\n updated(changedProperties: Map<string | number | symbol, unknown>): void {\n super.updated(changedProperties);\n\n const video = this.element as EFVideo;\n if (video?.src !== this.#lastSrc) {\n this.#checkAndLoadAudioWaveform();\n }\n\n if (changedProperties.has(\"_timelineState\") || changedProperties.has(\"_waveformData\")) {\n this.#scheduleRender();\n }\n\n // Always schedule render after update\n if (this._waveformData) {\n this.#scheduleRender();\n }\n }\n\n /**\n * Get the total track height based on whether audio is present\n */\n #getTrackHeight(): number {\n if (this._hasAudio && this._waveformData) {\n return THUMBNAIL_HEIGHT + AUDIO_SECTION_HEIGHT;\n }\n return THUMBNAIL_HEIGHT;\n }\n\n override render() {\n const video = this.element as EFVideo;\n const elementId = (this.element as HTMLElement).id || \"\";\n\n // Don't render thumbnail strip until we have a valid EFVideo element\n if (!(video instanceof EFVideo)) {\n return html``;\n }\n const trimStartMs = this.element.trimStartMs ?? 0;\n const trimEndMs = this.element.trimEndMs ?? 0;\n const intrinsicDurationMs = this.element.intrinsicDurationMs ?? this.element.durationMs;\n\n const trackHeight = this.#getTrackHeight();\n const hasAudioSection = this._hasAudio && this._waveformData;\n\n const typeColor = this.getElementTypeColor();\n\n return html`<div style=${styleMap(this.gutterStyles)}>\n <div\n ?data-focused=${this.isFocused}\n @mouseenter=${() => {\n if (this.focusContext) {\n this.focusContext.focusedElement = this.element;\n }\n }}\n @mouseleave=${() => {\n if (this.focusContext) {\n this.focusContext.focusedElement = null;\n }\n }}\n >\n <div\n ?data-focused=${this.isFocused}\n class=\"trim-container\"\n style=${styleMap({\n ...this.trimPortionStyles,\n height: `${trackHeight}px`,\n backgroundColor: this.isFocused\n ? \"color-mix(in srgb, var(--ef-color-primary) 25%, transparent)\"\n : \"var(--ef-color-bg-inset)\",\n borderLeft: `3px solid ${typeColor}`,\n borderRadius: \"3px\",\n })}\n >\n <div class=\"video-content\">\n <div class=\"thumbnail-section\">\n <ef-thumbnail-strip\n .targetElement=${this.element}\n thumbnail-height=${THUMBNAIL_HEIGHT}\n thumbnail-spacing-px=\"48\"\n pixels-per-ms=${this.pixelsPerMs}\n ></ef-thumbnail-strip>\n </div>\n ${\n hasAudioSection\n ? html`<div class=\"audio-section\">\n <canvas ${ref(this.audioCanvasRef)} class=\"audio-section-canvas\"></canvas>\n </div>`\n : nothing\n }\n </div>\n ${\n this.enableTrim\n ? html`<ef-trim-handles\n element-id=${elementId}\n pixels-per-ms=${this.pixelsPerMs}\n trim-start-ms=${trimStartMs}\n trim-end-ms=${trimEndMs}\n intrinsic-duration-ms=${intrinsicDurationMs}\n @trim-change=${this.handleTrimChange}\n ></ef-trim-handles>`\n : nothing\n }\n </div>\n </div>\n ${this.renderChildren()}\n </div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-video-track\": EFVideoTrack;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VideoTrack.js","names":["#checkAndLoadAudioWaveform","#lastSrc","#abortController","#scheduleRender","#renderRequested","#renderAudioOverlay","#drawAudioWaveform","#getTrackHeight"],"sources":["../../../../src/gui/timeline/tracks/VideoTrack.ts"],"mappings":";;;;;;;;;;;;;AAeA,MAAM,4BAA4B;;AAGlC,MAAM,mBAAmB;;AAEzB,MAAM,uBAAuB;AAGtB,IAAA,eAAA,MAAM,qBAAqB,UAAU;;;wBA+BzB,WAA8B;uBAOF;mBAGzB;;;gBAxCK,CACvB,GAAG,UAAU,QACb,GAAG;;;;;;;;oBAQa,iBAAiB;kBACnB,iBAAiB;;;;;oBAKf,qBAAqB;kBACvB,qBAAqB;;;;;;;;;;MAWpC;;CAcD,WAA0B;CAC1B,mBAA2C;CAC3C,mBAAmB;;;;CAKnB,OAAA,4BAAkD;EAChD,MAAM,QAAQ,KAAK;EACnB,MAAM,MAAM,OAAO;AAEnB,MAAI,CAAC,OAAO,QAAQ,MAAA,QAClB;AAGF,QAAA,UAAgB;AAChB,OAAK,YAAY;AACjB,OAAK,gBAAgB;AAGrB,QAAA,iBAAuB,OAAO;AAC9B,QAAA,kBAAwB,IAAI,iBAAiB;AAE7C,MAAI;AAEF,OAAI,MAAM;SACY,MAAM,MAAM,gBAAgB,eAC/B,OAAO,OAAO;AAC7B,UAAK,YAAY;KAEjB,MAAM,eAAe,MAAM,oBAAoB,OAAO,MAAA,gBAAsB,OAAO;AAEnF,SAAI,cAAc;AAChB,WAAK,gBAAgB;AACrB,YAAA,gBAAsB;;;;WAIrB,OAAO;AACd,OAAI,EAAE,iBAAiB,gBAAgB,MAAM,SAAS,eAAe;;;CAMzE,kBAAwB;AACtB,MAAI,MAAA,gBAAuB;AAC3B,QAAA,kBAAwB;AAExB,8BAA4B;AAC1B,SAAA,kBAAwB;AACxB,SAAA,oBAA0B;IAC1B;;CAGJ,sBAA4B;EAC1B,MAAM,SAAS,KAAK,eAAe;EACnC,MAAM,eAAe,KAAK;AAE1B,MAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,UAAW;EAEjD,MAAM,QAAQ,KAAK;EACnB,MAAM,aAAa,MAAM,cAAc;AACvC,MAAI,eAAe,EAAG;EAEtB,MAAM,cAAc,KAAK,gBAAgB,eAAe,KAAK;EAC7D,MAAM,eAAe,aAAa;EAElC,MAAM,gBADe,MAAM,eAAe,KACN;EAGpC,MAAM,aAAa,KAAK,gBAAgB,sBAAsB;EAC9D,MAAM,gBAAgB,KAAK,gBAAgB,iBAAiB;EAG5D,MAAM,gBAAgB,aAAa;EACnC,MAAM,iBAAiB,aAAa,gBAAgB;AAIpD,MAHmB,eAAe,eAGjB,iBAAiB,eAAe,gBAAgB;AAC/D,UAAO,MAAM,UAAU;AACvB;;AAEF,SAAO,MAAM,UAAU;EAGvB,MAAM,sBAAsB,KAAK,IAAI,GAAG,gBAAgB,aAAa;EACrE,MAAM,oBAAoB,KAAK,IAAI,cAAc,iBAAiB,aAAa;EAC/E,MAAM,iBAAiB,oBAAoB;AAE3C,MAAI,kBAAkB,EAAG;EAEzB,MAAM,SAAS;EACf,MAAM,MAAM,OAAO,oBAAoB;EAGvC,MAAM,cAAc,KAAK,KAAK,iBAAiB,IAAI;EACnD,MAAM,eAAe,KAAK,KAAK,SAAS,IAAI;AAE5C,MAAI,OAAO,UAAU,eAAe,OAAO,WAAW,cAAc;AAClE,UAAO,QAAQ;AACf,UAAO,SAAS;;AAGlB,SAAO,MAAM,OAAO,GAAG,oBAAoB;AAC3C,SAAO,MAAM,QAAQ,GAAG,eAAe;EAEvC,MAAM,MAAM,OAAO,WAAW,KAAK;AACnC,MAAI,CAAC,IAAK;AAEV,MAAI,aAAa,KAAK,GAAG,GAAG,KAAK,GAAG,EAAE;AACtC,MAAI,UAAU,GAAG,GAAG,gBAAgB,OAAO;EAG3C,MAAM,aAAa,MAAM,iBAAiB;EAC1C,MAAM,cAAc,aAAa,sBAAsB;EACvD,MAAM,YAAY,aAAa,oBAAoB;AAGnD,QAAA,kBAAwB,KAAK,cAAc,gBAAgB,QAAQ,aAAa,UAAU;;CAG5F,mBACE,KACA,cACA,OACA,QACA,SACA,OACM;EACN,MAAM,EAAE,OAAO,qBAAqB;EAEpC,MAAM,cAAc,KAAK,MAAO,UAAU,MAAQ,iBAAiB;EAEnE,MAAM,cADY,KAAK,KAAM,QAAQ,MAAQ,iBAAiB,GAC9B;AAEhC,MAAI,eAAe,KAAK,SAAS,EAAG;EAEpC,MAAM,UAAU,SAAS;EACzB,MAAM,aAAa,SAAS,IAAI;EAChC,MAAM,kBAAkB,QAAQ;AAGhC,MAAI,YACF,iBAAiB,KAAK,CAAC,iBAAiB,qBAAqB,CAAC,MAAM,IAAI;AAC1E,MAAI,cAAc;AAClB,MAAI,WAAW;AAGf,OAAK,IAAI,IAAI,GAAG,KAAK,aAAa,KAAK;GAErC,MAAM,aADc,cAAc,KACF;AAChC,OAAI,YAAY,KAAK,MAAM,OAAQ;GAEnC,MAAM,WAAW,MAAM,YAAY,MAAM;GACzC,MAAM,KAAK,IAAI;GACf,MAAM,KAAK,UAAU,WAAW;AAEhC,OAAI,MAAM,EACR,KAAI,OAAO,IAAI,GAAG;OAElB,KAAI,OAAO,IAAI,GAAG;;AAKtB,OAAK,IAAI,IAAI,aAAa,KAAK,GAAG,KAAK;GAErC,MAAM,aADc,cAAc,KACF;AAChC,OAAI,aAAa,MAAM,OAAQ;GAE/B,MAAM,WAAW,MAAM,cAAc;GACrC,MAAM,KAAK,IAAI;GACf,MAAM,KAAK,UAAU,WAAW;AAEhC,OAAI,OAAO,IAAI,GAAG;;AAGpB,MAAI,WAAW;AACf,MAAI,MAAM;AAGV,MAAI,cAAc;AAClB,MAAI,cACF,iBAAiB,KAAK,CAAC,iBAAiB,qBAAqB,CAAC,MAAM,IAAI;AAC1E,MAAI,YAAY;AAChB,MAAI,WAAW;AACf,MAAI,OAAO,GAAG,QAAQ;AACtB,MAAI,OAAO,OAAO,QAAQ;AAC1B,MAAI,QAAQ;AAEZ,MAAI,cAAc;;CAGpB,oBAA0B;AACxB,QAAM,mBAAmB;AACzB,QAAA,2BAAiC;;CAGnC,uBAA6B;AAC3B,QAAM,sBAAsB;AAC5B,QAAA,iBAAuB,OAAO;;CAGhC,QAAQ,mBAAiE;AACvE,QAAM,QAAQ,kBAAkB;AAGhC,MADc,KAAK,SACR,QAAQ,MAAA,QACjB,OAAA,2BAAiC;AAGnC,MAAI,kBAAkB,IAAI,iBAAiB,IAAI,kBAAkB,IAAI,gBAAgB,CACnF,OAAA,gBAAsB;AAIxB,MAAI,KAAK,cACP,OAAA,gBAAsB;;;;;CAO1B,kBAA0B;AACxB,MAAI,KAAK,aAAa,KAAK,cACzB,QAAO,mBAAmB;AAE5B,SAAO;;CAGT,SAAkB;EAChB,MAAM,QAAQ,KAAK;EACnB,MAAM,YAAa,KAAK,QAAwB,MAAM;AAGtD,MAAI,EAAE,iBAAiB,SACrB,QAAO,IAAI;EAEb,MAAM,cAAc,KAAK,QAAQ,eAAe;EAChD,MAAM,YAAY,KAAK,QAAQ,aAAa;EAC5C,MAAM,sBAAsB,KAAK,QAAQ,uBAAuB,KAAK,QAAQ;EAE7E,MAAM,cAAc,MAAA,gBAAsB;EAC1C,MAAM,kBAAkB,KAAK,aAAa,KAAK;EAE/C,MAAM,YAAY,KAAK,qBAAqB;AAE5C,SAAO,IAAI,cAAc,SAAS,KAAK,aAAa,CAAC;;wBAEjC,KAAK,UAAU;4BACX;AAClB,OAAI,KAAK,aACP,MAAK,aAAa,iBAAiB,KAAK;IAE1C;4BACkB;AAClB,OAAI,KAAK,aACP,MAAK,aAAa,iBAAiB;IAErC;;;0BAGgB,KAAK,UAAU;;kBAEvB,SAAS;GACf,GAAG,KAAK;GACR,QAAQ,GAAG,YAAY;GACvB,iBAAiB,KAAK,YAClB,iEACA;GACJ,YAAY,aAAa;GACzB,cAAc;GACf,CAAC,CAAC;;;;;iCAKoB,KAAK,QAAQ;mCACX,iBAAiB;;gCAEpB,KAAK,YAAY;;;cAInC,kBACI,IAAI;4BACM,IAAI,KAAK,eAAe,CAAC;0BAEnC,QACL;;YAGD,KAAK,aACD,IAAI;6BACS,UAAU;gCACP,KAAK,YAAY;gCACjB,YAAY;8BACd,UAAU;wCACA,oBAAoB;+BAC7B,KAAK,iBAAiB;qCAErC,QACL;;;QAGH,KAAK,gBAAgB,CAAC;;;;YA9T3B,QAAQ;CAAE,SAAS;CAAsB,WAAW;CAAM,CAAC,EAC3D,OAAO,CAAA,EAAA,aAAA,WAAA,kBAAA,KAAA,EAAA;YAGP,OAAO,CAAA,EAAA,aAAA,WAAA,iBAAA,KAAA,EAAA;YAGP,OAAO,CAAA,EAAA,aAAA,WAAA,aAAA,KAAA,EAAA;2BAzCT,cAAc,iBAAiB,CAAA,EAAA,aAAA"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { __decorate } from "../../../_virtual/_@oxc-project_runtime@0.
|
|
1
|
+
import { __decorate } from "../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
|
|
2
2
|
import { ICONS, phosphorIcon } from "../../icons.js";
|
|
3
3
|
import { TrackItem } from "./TrackItem.js";
|
|
4
4
|
import { nothing } from "lit";
|
|
5
5
|
import { customElement } from "lit/decorators.js";
|
|
6
|
-
|
|
7
6
|
//#region src/gui/timeline/tracks/WaveformTrack.ts
|
|
8
|
-
let EFWaveformTrack = class EFWaveformTrack
|
|
7
|
+
let EFWaveformTrack = class EFWaveformTrack extends TrackItem {
|
|
9
8
|
contents() {
|
|
10
9
|
return phosphorIcon(ICONS.waveform);
|
|
11
10
|
}
|
|
@@ -14,6 +13,6 @@ let EFWaveformTrack = class EFWaveformTrack$1 extends TrackItem {
|
|
|
14
13
|
}
|
|
15
14
|
};
|
|
16
15
|
EFWaveformTrack = __decorate([customElement("ef-waveform-track")], EFWaveformTrack);
|
|
17
|
-
|
|
18
16
|
//#endregion
|
|
17
|
+
|
|
19
18
|
//# sourceMappingURL=WaveformTrack.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WaveformTrack.js","names":[
|
|
1
|
+
{"version":3,"file":"WaveformTrack.js","names":[],"sources":["../../../../src/gui/timeline/tracks/WaveformTrack.ts"],"mappings":";;;;;;AAQO,IAAA,kBAAA,MAAM,wBAAwB,UAAU;CAC7C,WAAW;AACT,SAAO,aAAa,MAAM,SAAS;;CAGrC,iBAA6E;AAC3E,SAAO;;;8BAPV,cAAc,oBAAoB,CAAA,EAAA,gBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import "./TrackItem.js";
|
|
@@ -1,9 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import "./AudioTrack.js";
|
|
3
|
-
import "./VideoTrack.js";
|
|
4
|
-
import "./ImageTrack.js";
|
|
5
|
-
import "./TimegroupTrack.js";
|
|
6
|
-
import "./TextTrack.js";
|
|
7
|
-
import "./HTMLTrack.js";
|
|
8
|
-
import "./CaptionsTrack.js";
|
|
9
|
-
import "./WaveformTrack.js";
|
|
1
|
+
export { };
|
|
@@ -8,7 +8,6 @@ import { EFWaveform } from "../../../elements/EFWaveform.js";
|
|
|
8
8
|
import { shouldRenderElement } from "../../hierarchy/EFHierarchyItem.js";
|
|
9
9
|
import { EFTimegroup } from "../../../elements/EFTimegroup.js";
|
|
10
10
|
import { html, nothing } from "lit";
|
|
11
|
-
|
|
12
11
|
//#region src/gui/timeline/tracks/renderTrackChildren.ts
|
|
13
12
|
function renderTrackChildren(children, pixelsPerMs, hideSelectors, showSelectors, skipRootFiltering = false, enableTrim = false, useAbsolutePosition = false) {
|
|
14
13
|
return children.map((child) => {
|
|
@@ -113,7 +112,7 @@ function renderTrackChildren(children, pixelsPerMs, hideSelectors, showSelectors
|
|
|
113
112
|
return nothing;
|
|
114
113
|
});
|
|
115
114
|
}
|
|
116
|
-
|
|
117
115
|
//#endregion
|
|
118
116
|
export { renderTrackChildren };
|
|
117
|
+
|
|
119
118
|
//# sourceMappingURL=renderTrackChildren.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderTrackChildren.js","names":[],"sources":["../../../../src/gui/timeline/tracks/renderTrackChildren.ts"],"
|
|
1
|
+
{"version":3,"file":"renderTrackChildren.js","names":[],"sources":["../../../../src/gui/timeline/tracks/renderTrackChildren.ts"],"mappings":";;;;;;;;;;;AAiBA,SAAgB,oBACd,UACA,aACA,eACA,eACA,oBAAoB,OACpB,aAAa,OACb,sBAAsB,OACqB;AAC3C,QAAO,SAAS,KAAK,UAAU;AAC7B,MAAI,CAAC,qBAAqB,CAAC,oBAAoB,OAAO,eAAe,cAAc,CACjF,QAAO;AAGT,MAAI,iBAAiB,YACnB,QAAO,IAAI;mBACE,MAAM;wBACD,YAAY;uBACb,WAAW;iCACD,oBAAoB;yBAC5B,cAAc;yBACd,cAAc;;;AAInC,MAAI,iBAAiB,QACnB,QAAO,IAAI;mBACE,MAAM;wBACD,YAAY;uBACb,WAAW;iCACD,oBAAoB;yBAC5B,cAAc;yBACd,cAAc;;AAGnC,MAAI,iBAAiB,QACnB,QAAO,IAAI;mBACE,MAAM;wBACD,YAAY;uBACb,WAAW;iCACD,oBAAoB;yBAC5B,cAAc;yBACd,cAAc;;AAGnC,MAAI,iBAAiB,QACnB,QAAO,IAAI;mBACE,MAAM;wBACD,YAAY;uBACb,WAAW;iCACD,oBAAoB;yBAC5B,cAAc;yBACd,cAAc;;AAGnC,MAAI,iBAAiB,WACnB,QAAO,IAAI;mBACE,MAAM;wBACD,YAAY;uBACb,WAAW;iCACD,oBAAoB;yBAC5B,cAAc;yBACd,cAAc;;AAGnC,MAAI,iBAAiB,qBACnB,QAAO,IAAI;mBACE,MAAM;wBACD,YAAY;uBACb,WAAW;iCACD,oBAAoB;yBAC5B,cAAc;yBACd,cAAc;;AAGnC,MAAI,iBAAiB,OACnB,QAAO,IAAI;mBACE,MAAM;wBACD,YAAY;uBACb,WAAW;iCACD,oBAAoB;yBAC5B,cAAc;yBACd,cAAc;;AAGnC,MAAI,iBAAiB,cACnB,QAAO,IAAI;mBACE,MAAM;wBACD,YAAY;uBACb,WAAW;iCACD,oBAAoB;yBAC5B,cAAc;yBACd,cAAc;;AAGnC,MAAI,MAAM,YAAY,sBACpB,QAAO,IAAI;mBACE,MAAM;wBACD,YAAY;uBACb,WAAW;iCACD,oBAAoB;yBAC5B,cAAc;yBACd,cAAc;;AAGnC,MAAI,MAAM,YAAY,iCACpB,QAAO,IAAI;mBACE,MAAM;wBACD,YAAY;uBACb,WAAW;iCACD,oBAAoB;yBAC5B,cAAc;yBACd,cAAc;;AAGnC,MAAI,MAAM,YAAY,gCACpB,QAAO,IAAI;mBACE,MAAM;wBACD,YAAY;uBACb,WAAW;iCACD,oBAAoB;yBAC5B,cAAc;yBACd,cAAc;;AAGnC,MAAI,iBAAiB,WACnB,QAAO,IAAI;mBACE,MAAM;wBACD,YAAY;uBACb,WAAW;iCACD,oBAAoB;yBAC5B,cAAc;yBACd,cAAc;;AAGnC,SAAO;GACP"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
//#region src/gui/timeline/tracks/waveformUtils.ts
|
|
2
|
-
/** Samples per second for waveform data - balances resolution vs. data size */
|
|
3
|
-
const WAVEFORM_SAMPLES_PER_SECOND = 100;
|
|
4
1
|
/** Simple cache for waveform data keyed by audio URL */
|
|
5
2
|
const waveformCache = /* @__PURE__ */ new Map();
|
|
6
3
|
/**
|
|
@@ -36,9 +33,9 @@ async function extractWaveformData(element, signal) {
|
|
|
36
33
|
}
|
|
37
34
|
signal?.throwIfAborted();
|
|
38
35
|
const waveformData = {
|
|
39
|
-
peaks: extractPeaksFromBuffer(audioBuffer,
|
|
36
|
+
peaks: extractPeaksFromBuffer(audioBuffer, 100),
|
|
40
37
|
durationMs: audioBuffer.duration * 1e3,
|
|
41
|
-
samplesPerSecond:
|
|
38
|
+
samplesPerSecond: 100
|
|
42
39
|
};
|
|
43
40
|
waveformCache.set(src, waveformData);
|
|
44
41
|
return waveformData;
|
|
@@ -74,7 +71,7 @@ function extractPeaksFromBuffer(buffer, samplesPerSecond) {
|
|
|
74
71
|
}
|
|
75
72
|
return peaks;
|
|
76
73
|
}
|
|
77
|
-
|
|
78
74
|
//#endregion
|
|
79
75
|
export { extractWaveformData };
|
|
76
|
+
|
|
80
77
|
//# sourceMappingURL=waveformUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"waveformUtils.js","names":[
|
|
1
|
+
{"version":3,"file":"waveformUtils.js","names":[],"sources":["../../../../src/gui/timeline/tracks/waveformUtils.ts"],"mappings":";AAwBA,MAAM,gCAAgB,IAAI,KAA2B;;;;;;;AAQrD,eAAsB,oBACpB,SACA,QAC8B;CAC9B,MAAM,MAAM,QAAQ;AACpB,KAAI,CAAC,IAAK,QAAO;CAEjB,MAAM,SAAS,cAAc,IAAI,IAAI;AACrC,KAAI,OACF,QAAO;AAGT,KAAI;EACF,MAAM,cAAc,MAAM,QAAQ,eAAe,OAAO;AACxD,UAAQ,gBAAgB;AAExB,MAAI,CAAC,aAAa,OAAO,MACvB,QAAO;EAGT,MAAM,aAAa,YAAY;AAC/B,MAAI,CAAC,cAAc,cAAc,EAC/B,QAAO;EAGT,MAAM,cAAc,UAAU,IAAI,iBAAiB,CAAC;EACpD,MAAM,YAAY,MAAM,QAAQ,uBAAuB,GAAG,YAAY,YAAY;AAClF,UAAQ,gBAAgB;AAExB,MAAI,CAAC,UACH,QAAO;EAGT,MAAM,cAAc,MAAM,UAAU,KAAK,aAAa;AACtD,UAAQ,gBAAgB;EAGxB,MAAM,eAAe,IAAI,oBAAoB,GAAG,GAAG,MAAM;EACzD,IAAI;AAEJ,MAAI;AACF,iBAAc,MAAM,aAAa,gBAAgB,YAAY;WACtD,aAAa;AACpB,WAAQ,KAAK,wCAAwC,YAAY;AACjE,UAAO;;AAGT,UAAQ,gBAAgB;EAMxB,MAAM,eAA6B;GACjC,OAJY,uBAAuB,aAAA,IAAyC;GAK5E,YAJwB,YAAY,WAAW;GAK/C,kBAAA;GACD;AAED,gBAAc,IAAI,KAAK,aAAa;AAEpC,SAAO;UACA,OAAO;AACd,MAAI,iBAAiB,gBAAgB,MAAM,SAAS,aAClD,OAAM;AAER,UAAQ,KAAK,mCAAmC,MAAM;AACtD,SAAO;;;;;;;AAQX,SAAS,uBAAuB,QAAqB,kBAAwC;CAC3F,MAAM,cAAc,OAAO,eAAe,EAAE;CAC5C,MAAM,aAAa,OAAO;CAC1B,MAAM,WAAW,OAAO;CAGxB,MAAM,gBAAgB,KAAK,KAAK,WAAW,iBAAiB;CAG5D,MAAM,QAAQ,IAAI,aAAa,gBAAgB,EAAE;CAGjD,MAAM,mBAAmB,KAAK,MAAM,aAAa,iBAAiB;AAElE,MAAK,IAAI,IAAI,GAAG,IAAI,eAAe,KAAK;EACtC,MAAM,cAAc,IAAI;EACxB,MAAM,YAAY,KAAK,IAAI,cAAc,kBAAkB,YAAY,OAAO;EAE9E,IAAI,MAAM;EACV,IAAI,MAAM;AAEV,OAAK,IAAI,IAAI,aAAa,IAAI,WAAW,KAAK;GAC5C,MAAM,SAAS,YAAY,MAAM;AACjC,OAAI,SAAS,IAAK,OAAM;AACxB,OAAI,SAAS,IAAK,OAAM;;AAI1B,QAAM,IAAI,KAAK;AACf,QAAM,IAAI,IAAI,KAAK;;AAGrB,QAAO"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { getCornerPoint, getOppositeCorner } from "./transformUtils.js";
|
|
2
|
-
|
|
3
2
|
//#region src/gui/transformCalculations.ts
|
|
4
3
|
/**
|
|
5
4
|
* Calculate the axis-aligned bounding box of a rotated rectangle.
|
|
@@ -211,7 +210,7 @@ function parseRotationFromTransform(transform) {
|
|
|
211
210
|
if (a === void 0 || b === void 0 || isNaN(a) || isNaN(b)) return 0;
|
|
212
211
|
return Math.atan2(b, a) * (180 / Math.PI);
|
|
213
212
|
}
|
|
214
|
-
|
|
215
213
|
//#endregion
|
|
216
214
|
export { calculateDragBounds, calculateResizeBounds, getResizeHandleCursor, getRotatedBoundingBox, parseRotationFromTransform };
|
|
215
|
+
|
|
217
216
|
//# sourceMappingURL=transformCalculations.js.map
|