@editframe/elements 0.37.3-beta → 0.38.1
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/EF_FRAMEGEN.js +17 -14
- package/dist/EF_FRAMEGEN.js.map +1 -1
- package/dist/EF_RENDERING.js.map +1 -1
- package/dist/canvas/EFCanvas.d.ts +9 -2
- package/dist/canvas/EFCanvas.js +14 -4
- package/dist/canvas/EFCanvas.js.map +1 -1
- package/dist/canvas/EFCanvasItem.d.ts +2 -2
- package/dist/canvas/overlays/SelectionOverlay.d.ts +10 -2
- package/dist/canvas/overlays/SelectionOverlay.js +5 -12
- package/dist/canvas/overlays/SelectionOverlay.js.map +1 -1
- package/dist/canvas/overlays/overlayState.js.map +1 -1
- package/dist/canvas/selection/SelectionController.js.map +1 -1
- package/dist/elements/EFAudio.d.ts +1 -11
- package/dist/elements/EFAudio.js +2 -10
- package/dist/elements/EFAudio.js.map +1 -1
- package/dist/elements/EFCaptions.d.ts +5 -9
- package/dist/elements/EFCaptions.js +34 -11
- package/dist/elements/EFCaptions.js.map +1 -1
- package/dist/elements/EFImage.d.ts +10 -8
- package/dist/elements/EFImage.js +117 -32
- package/dist/elements/EFImage.js.map +1 -1
- package/dist/elements/EFMedia/AssetMediaEngine.js +2 -2
- package/dist/elements/EFMedia/AssetMediaEngine.js.map +1 -1
- package/dist/elements/EFMedia/BaseMediaEngine.js +15 -92
- package/dist/elements/EFMedia/BaseMediaEngine.js.map +1 -1
- package/dist/elements/EFMedia/BufferedSeekingInput.js +10 -11
- package/dist/elements/EFMedia/BufferedSeekingInput.js.map +1 -1
- package/dist/elements/EFMedia/{AssetIdMediaEngine.js → FileMediaEngine.js} +44 -24
- package/dist/elements/EFMedia/FileMediaEngine.js.map +1 -0
- package/dist/elements/EFMedia/JitMediaEngine.js +14 -13
- package/dist/elements/EFMedia/JitMediaEngine.js.map +1 -1
- package/dist/elements/EFMedia/shared/AudioSpanUtils.js +3 -3
- package/dist/elements/EFMedia/shared/AudioSpanUtils.js.map +1 -1
- package/dist/elements/EFMedia/shared/ThumbnailExtractor.js +12 -7
- package/dist/elements/EFMedia/shared/ThumbnailExtractor.js.map +1 -1
- package/dist/elements/EFMedia/shared/timeoutUtils.js +44 -0
- package/dist/elements/EFMedia/shared/timeoutUtils.js.map +1 -0
- 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.js +4 -4
- package/dist/elements/EFMedia/videoTasks/ScrubInputCache.js.map +1 -1
- package/dist/elements/EFMedia.d.ts +14 -8
- package/dist/elements/EFMedia.js +52 -19
- package/dist/elements/EFMedia.js.map +1 -1
- package/dist/elements/EFPanZoom.d.ts +2 -2
- package/dist/elements/EFPanZoom.js +1 -1
- package/dist/elements/EFPanZoom.js.map +1 -1
- package/dist/elements/EFSourceMixin.js +16 -8
- package/dist/elements/EFSourceMixin.js.map +1 -1
- package/dist/elements/EFSurface.d.ts +5 -8
- package/dist/elements/EFSurface.js +4 -43
- package/dist/elements/EFSurface.js.map +1 -1
- package/dist/elements/EFTemporal.d.ts +33 -8
- package/dist/elements/EFTemporal.js +92 -40
- package/dist/elements/EFTemporal.js.map +1 -1
- package/dist/elements/EFText.d.ts +3 -0
- package/dist/elements/EFText.js +54 -21
- package/dist/elements/EFText.js.map +1 -1
- package/dist/elements/EFTextSegment.js +8 -4
- package/dist/elements/EFTextSegment.js.map +1 -1
- package/dist/elements/EFTimegroup.d.ts +26 -43
- package/dist/elements/EFTimegroup.js +295 -314
- package/dist/elements/EFTimegroup.js.map +1 -1
- package/dist/elements/EFVideo.d.ts +44 -42
- package/dist/elements/EFVideo.js +259 -172
- package/dist/elements/EFVideo.js.map +1 -1
- package/dist/elements/EFWaveform.d.ts +3 -8
- package/dist/elements/EFWaveform.js +18 -13
- package/dist/elements/EFWaveform.js.map +1 -1
- package/dist/elements/ElementPositionInfo.js.map +1 -1
- package/dist/elements/FetchMixin.js.map +1 -1
- package/dist/elements/TargetController.d.ts +0 -3
- package/dist/elements/TargetController.js +12 -35
- package/dist/elements/TargetController.js.map +1 -1
- package/dist/elements/TimegroupController.js.map +1 -1
- package/dist/elements/cloneFactoryRegistry.d.ts +14 -0
- package/dist/elements/cloneFactoryRegistry.js +15 -0
- package/dist/elements/cloneFactoryRegistry.js.map +1 -0
- package/dist/elements/renderTemporalAudio.js +8 -6
- package/dist/elements/renderTemporalAudio.js.map +1 -1
- package/dist/elements/setupTemporalHierarchy.js +62 -0
- package/dist/elements/setupTemporalHierarchy.js.map +1 -0
- package/dist/elements/updateAnimations.js +62 -87
- package/dist/elements/updateAnimations.js.map +1 -1
- package/dist/getRenderInfo.d.ts +3 -2
- package/dist/getRenderInfo.js +20 -4
- package/dist/getRenderInfo.js.map +1 -1
- package/dist/gui/ContextMixin.js +68 -12
- package/dist/gui/ContextMixin.js.map +1 -1
- package/dist/gui/Controllable.js +1 -1
- package/dist/gui/Controllable.js.map +1 -1
- package/dist/gui/EFActiveRootTemporal.d.ts +2 -2
- package/dist/gui/EFActiveRootTemporal.js.map +1 -1
- package/dist/gui/EFControls.d.ts +2 -2
- package/dist/gui/EFControls.js +2 -2
- package/dist/gui/EFControls.js.map +1 -1
- package/dist/gui/EFDial.d.ts +2 -2
- package/dist/gui/EFDial.js +12 -9
- package/dist/gui/EFDial.js.map +1 -1
- package/dist/gui/EFFilmstrip.d.ts +2 -0
- package/dist/gui/EFFilmstrip.js +18 -10
- package/dist/gui/EFFilmstrip.js.map +1 -1
- package/dist/gui/EFFitScale.d.ts +28 -4
- package/dist/gui/EFFitScale.js +88 -26
- package/dist/gui/EFFitScale.js.map +1 -1
- package/dist/gui/EFFocusOverlay.d.ts +2 -2
- package/dist/gui/EFFocusOverlay.js +3 -3
- package/dist/gui/EFFocusOverlay.js.map +1 -1
- package/dist/gui/EFOverlayItem.d.ts +2 -2
- package/dist/gui/EFOverlayLayer.d.ts +2 -2
- package/dist/gui/EFPause.d.ts +2 -2
- package/dist/gui/EFPause.js +1 -1
- package/dist/gui/EFPlay.d.ts +2 -2
- package/dist/gui/EFPlay.js +1 -1
- package/dist/gui/EFPreview.js +1 -1
- package/dist/gui/EFResizableBox.d.ts +2 -2
- package/dist/gui/EFResizableBox.js +5 -5
- package/dist/gui/EFResizableBox.js.map +1 -1
- package/dist/gui/EFScrubber.d.ts +2 -2
- package/dist/gui/EFScrubber.js +8 -13
- package/dist/gui/EFScrubber.js.map +1 -1
- package/dist/gui/EFTimeDisplay.d.ts +6 -2
- package/dist/gui/EFTimeDisplay.js +25 -7
- package/dist/gui/EFTimeDisplay.js.map +1 -1
- package/dist/gui/EFTimelineRuler.d.ts +2 -2
- package/dist/gui/EFTimelineRuler.js +3 -3
- package/dist/gui/EFTimelineRuler.js.map +1 -1
- package/dist/gui/EFToggleLoop.d.ts +2 -2
- package/dist/gui/EFToggleLoop.js +1 -1
- package/dist/gui/EFTogglePlay.d.ts +2 -2
- package/dist/gui/EFTogglePlay.js +1 -1
- package/dist/gui/EFTransformHandles.d.ts +2 -2
- package/dist/gui/EFTransformHandles.js +6 -6
- package/dist/gui/EFTransformHandles.js.map +1 -1
- package/dist/gui/EFWorkbench.d.ts +40 -36
- package/dist/gui/EFWorkbench.js +436 -822
- package/dist/gui/EFWorkbench.js.map +1 -1
- package/dist/gui/FitScaleHelpers.js.map +1 -1
- package/dist/gui/PlaybackController.d.ts +3 -8
- package/dist/gui/PlaybackController.js +59 -56
- 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/TargetOrContextMixin.js +43 -6
- package/dist/gui/TargetOrContextMixin.js.map +1 -1
- package/dist/gui/ef-theme.css +136 -0
- package/dist/gui/hierarchy/EFHierarchy.d.ts +2 -2
- package/dist/gui/hierarchy/EFHierarchy.js +14 -24
- package/dist/gui/hierarchy/EFHierarchy.js.map +1 -1
- package/dist/gui/hierarchy/EFHierarchyItem.d.ts +3 -3
- package/dist/gui/hierarchy/EFHierarchyItem.js +22 -10
- package/dist/gui/hierarchy/EFHierarchyItem.js.map +1 -1
- package/dist/gui/icons.js.map +1 -1
- package/dist/gui/previewSettingsContext.d.ts +18 -0
- package/dist/gui/previewSettingsContext.js.map +1 -1
- package/dist/gui/theme.js +34 -0
- package/dist/gui/theme.js.map +1 -0
- package/dist/gui/timeline/EFTimeline.d.ts +2 -2
- package/dist/gui/timeline/EFTimeline.js +70 -52
- package/dist/gui/timeline/EFTimeline.js.map +1 -1
- package/dist/gui/timeline/EFTimelineRow.d.ts +5 -3
- package/dist/gui/timeline/EFTimelineRow.js +55 -32
- package/dist/gui/timeline/EFTimelineRow.js.map +1 -1
- package/dist/gui/timeline/TrimHandles.d.ts +23 -9
- package/dist/gui/timeline/TrimHandles.js +224 -51
- package/dist/gui/timeline/TrimHandles.js.map +1 -1
- package/dist/gui/timeline/flattenHierarchy.js.map +1 -1
- package/dist/gui/timeline/timelineEditingContext.d.ts +34 -0
- package/dist/gui/timeline/timelineEditingContext.js +24 -0
- package/dist/gui/timeline/timelineEditingContext.js.map +1 -0
- package/dist/gui/timeline/timelineStateContext.js.map +1 -1
- package/dist/gui/timeline/tracks/AudioTrack.js +1 -1
- package/dist/gui/timeline/tracks/AudioTrack.js.map +1 -1
- package/dist/gui/timeline/tracks/CaptionsTrack.d.ts +2 -3
- package/dist/gui/timeline/tracks/CaptionsTrack.js +17 -75
- package/dist/gui/timeline/tracks/CaptionsTrack.js.map +1 -1
- package/dist/gui/timeline/tracks/EFThumbnailStrip.d.ts +52 -0
- package/dist/gui/timeline/tracks/EFThumbnailStrip.js +596 -0
- package/dist/gui/timeline/tracks/EFThumbnailStrip.js.map +1 -0
- package/dist/gui/timeline/tracks/HTMLTrack.js.map +1 -1
- package/dist/gui/timeline/tracks/ImageTrack.js.map +1 -1
- package/dist/gui/timeline/tracks/TextTrack.d.ts +3 -2
- package/dist/gui/timeline/tracks/TextTrack.js +17 -43
- package/dist/gui/timeline/tracks/TextTrack.js.map +1 -1
- package/dist/gui/timeline/tracks/TimegroupTrack.d.ts +3 -4
- package/dist/gui/timeline/tracks/TimegroupTrack.js +33 -23
- package/dist/gui/timeline/tracks/TimegroupTrack.js.map +1 -1
- package/dist/gui/timeline/tracks/TrackItem.d.ts +7 -9
- package/dist/gui/timeline/tracks/TrackItem.js +18 -17
- package/dist/gui/timeline/tracks/TrackItem.js.map +1 -1
- package/dist/gui/timeline/tracks/VideoTrack.d.ts +3 -3
- package/dist/gui/timeline/tracks/VideoTrack.js +11 -14
- package/dist/gui/timeline/tracks/VideoTrack.js.map +1 -1
- package/dist/gui/timeline/tracks/WaveformTrack.js.map +1 -1
- package/dist/gui/timeline/tracks/renderTrackChildren.js.map +1 -1
- package/dist/gui/timeline/tracks/waveformUtils.js +1 -1
- package/dist/gui/timeline/tracks/waveformUtils.js.map +1 -1
- package/dist/gui/tree/EFTree.d.ts +2 -2
- package/dist/gui/tree/EFTree.js +8 -14
- package/dist/gui/tree/EFTree.js.map +1 -1
- package/dist/gui/tree/EFTreeItem.d.ts +2 -2
- package/dist/gui/tree/EFTreeItem.js +3 -3
- package/dist/gui/tree/EFTreeItem.js.map +1 -1
- package/dist/gui/tree/treeContext.js.map +1 -1
- package/dist/index.d.ts +10 -8
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +2 -2
- package/dist/node.js +2 -2
- package/dist/preview/AdaptiveResolutionTracker.js +3 -3
- package/dist/preview/AdaptiveResolutionTracker.js.map +1 -1
- package/dist/preview/FrameController.d.ts +2 -17
- package/dist/preview/FrameController.js +40 -63
- package/dist/preview/FrameController.js.map +1 -1
- package/dist/preview/QualityUpgradeScheduler.d.ts +76 -0
- package/dist/preview/QualityUpgradeScheduler.js +158 -0
- package/dist/preview/QualityUpgradeScheduler.js.map +1 -0
- package/dist/preview/RenderContext.d.ts +119 -1
- package/dist/preview/RenderContext.js +21 -3
- package/dist/preview/RenderContext.js.map +1 -1
- package/dist/preview/RenderProfiler.js.map +1 -1
- package/dist/preview/RenderStats.js +85 -0
- package/dist/preview/RenderStats.js.map +1 -0
- package/dist/preview/encoding/canvasEncoder.js +2 -52
- package/dist/preview/encoding/canvasEncoder.js.map +1 -1
- package/dist/preview/encoding/mainThreadEncoder.js.map +1 -1
- package/dist/preview/encoding/workerEncoder.js.map +1 -1
- package/dist/preview/logger.js.map +1 -1
- package/dist/preview/previewSettings.d.ts +34 -0
- package/dist/preview/previewSettings.js +29 -17
- package/dist/preview/previewSettings.js.map +1 -1
- package/dist/preview/previewTypes.js +4 -4
- package/dist/preview/previewTypes.js.map +1 -1
- package/dist/preview/renderElementToCanvas.d.ts +44 -0
- package/dist/preview/renderElementToCanvas.js +72 -0
- package/dist/preview/renderElementToCanvas.js.map +1 -0
- package/dist/preview/renderTimegroupToCanvas.d.ts +134 -32
- package/dist/preview/renderTimegroupToCanvas.js +321 -146
- package/dist/preview/renderTimegroupToCanvas.js.map +1 -1
- package/dist/preview/renderTimegroupToCanvas.types.d.ts +51 -0
- package/dist/preview/renderTimegroupToVideo.d.ts +20 -35
- package/dist/preview/renderTimegroupToVideo.js +94 -106
- package/dist/preview/renderTimegroupToVideo.js.map +1 -1
- package/dist/preview/renderTimegroupToVideo.types.d.ts +42 -0
- package/dist/preview/renderVideoToVideo.js +286 -0
- package/dist/preview/renderVideoToVideo.js.map +1 -0
- package/dist/preview/renderers.d.ts +56 -0
- package/dist/preview/renderers.js +13 -1
- package/dist/preview/renderers.js.map +1 -1
- package/dist/preview/rendering/ScaleConfig.js +74 -0
- package/dist/preview/rendering/ScaleConfig.js.map +1 -0
- package/dist/preview/rendering/inlineImages.d.ts +13 -0
- package/dist/preview/rendering/inlineImages.js +7 -44
- package/dist/preview/rendering/inlineImages.js.map +1 -1
- package/dist/preview/rendering/loadImage.d.ts +8 -0
- package/dist/preview/rendering/loadImage.js +22 -0
- package/dist/preview/rendering/loadImage.js.map +1 -0
- package/dist/preview/rendering/renderToImageNative.js +3 -3
- package/dist/preview/rendering/renderToImageNative.js.map +1 -1
- package/dist/preview/rendering/serializeTimelineDirect.js +224 -68
- package/dist/preview/rendering/serializeTimelineDirect.js.map +1 -1
- package/dist/preview/statsTrackingStrategy.js +1 -101
- package/dist/preview/statsTrackingStrategy.js.map +1 -1
- package/dist/preview/workers/WorkerPool.js +0 -1
- package/dist/preview/workers/WorkerPool.js.map +1 -1
- package/dist/preview/workers/encoderWorkerInline.js +21 -54
- package/dist/preview/workers/encoderWorkerInline.js.map +1 -1
- package/dist/render/EFRenderAPI.d.ts +2 -1
- package/dist/render/EFRenderAPI.js +12 -36
- package/dist/render/EFRenderAPI.js.map +1 -1
- package/dist/render/getRenderData.js +4 -4
- package/dist/render/getRenderData.js.map +1 -1
- package/dist/style.css +114 -163
- package/dist/transcoding/cache/RequestDeduplicator.js +1 -0
- package/dist/transcoding/cache/RequestDeduplicator.js.map +1 -1
- package/dist/transcoding/types/index.d.ts +1 -1
- package/dist/transcoding/utils/UrlGenerator.js +10 -3
- package/dist/transcoding/utils/UrlGenerator.js.map +1 -1
- package/dist/utils/LRUCache.js +1 -0
- package/dist/utils/LRUCache.js.map +1 -1
- package/dist/utils/frameTime.js +23 -1
- package/dist/utils/frameTime.js.map +1 -1
- package/package.json +45 -8
- package/scripts/build-css.js +8 -1
- package/test/setup.ts +0 -1
- package/test/useAssetMSW.ts +50 -0
- package/test/visualRegressionUtils.ts +23 -9
- package/tsdown.config.ts +6 -1
- package/dist/_virtual/rolldown_runtime.js +0 -27
- package/dist/elements/EFMedia/AssetIdMediaEngine.js.map +0 -1
- package/dist/elements/EFThumbnailStrip.d.ts +0 -167
- package/dist/elements/EFThumbnailStrip.js +0 -731
- package/dist/elements/EFThumbnailStrip.js.map +0 -1
- package/dist/elements/SessionThumbnailCache.js +0 -154
- package/dist/elements/SessionThumbnailCache.js.map +0 -1
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.js +0 -688
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.js.map +0 -1
- package/dist/node_modules/react/cjs/react.development.js +0 -1521
- package/dist/node_modules/react/cjs/react.development.js.map +0 -1
- package/dist/node_modules/react/index.js +0 -13
- package/dist/node_modules/react/index.js.map +0 -1
- package/dist/node_modules/react/jsx-runtime.js +0 -13
- package/dist/node_modules/react/jsx-runtime.js.map +0 -1
- package/dist/preview/encoding/types.d.ts +0 -1
- package/dist/preview/renderTimegroupPreview.js +0 -686
- package/dist/preview/renderTimegroupPreview.js.map +0 -1
- package/dist/preview/rendering/renderToImage.d.ts +0 -2
- package/dist/preview/rendering/renderToImage.js +0 -95
- package/dist/preview/rendering/renderToImage.js.map +0 -1
- package/dist/preview/rendering/renderToImageForeignObject.js +0 -163
- package/dist/preview/rendering/renderToImageForeignObject.js.map +0 -1
- package/dist/preview/rendering/renderToImageNative.d.ts +0 -1
- package/dist/preview/rendering/svgSerializer.js +0 -43
- package/dist/preview/rendering/svgSerializer.js.map +0 -1
- package/dist/preview/rendering/types.d.ts +0 -2
- package/dist/preview/thumbnailCacheSettings.js +0 -52
- package/dist/preview/thumbnailCacheSettings.js.map +0 -1
- package/dist/sandbox/PlaybackControls.d.ts +0 -1
- package/dist/sandbox/PlaybackControls.js +0 -10
- package/dist/sandbox/PlaybackControls.js.map +0 -1
- package/dist/sandbox/ScenarioRunner.d.ts +0 -1
- package/dist/sandbox/ScenarioRunner.js +0 -1
- package/dist/sandbox/defineSandbox.d.ts +0 -1
- package/dist/sandbox/index.d.ts +0 -3
- package/dist/sandbox/index.js +0 -2
- package/test/EFVideo.framegen.browsertest.ts +0 -80
- package/test/thumbnail-performance-test.html +0 -116
|
@@ -17,13 +17,13 @@ let EFTextSegment = class EFTextSegment$1 extends EFTemporal(LitElement) {
|
|
|
17
17
|
static {
|
|
18
18
|
this.styles = [css`
|
|
19
19
|
:host {
|
|
20
|
+
display: inline;
|
|
21
|
+
}
|
|
22
|
+
:host([data-animated]) {
|
|
20
23
|
display: inline-block;
|
|
21
|
-
white-space: pre;
|
|
22
|
-
line-height: 1;
|
|
23
24
|
}
|
|
24
25
|
:host([data-line-segment]) {
|
|
25
26
|
display: block;
|
|
26
|
-
white-space: normal;
|
|
27
27
|
}
|
|
28
28
|
:host([hidden]) {
|
|
29
29
|
opacity: 0;
|
|
@@ -95,9 +95,13 @@ let EFTextSegment = class EFTextSegment$1 extends EFTemporal(LitElement) {
|
|
|
95
95
|
return (this.closest("ef-text")?.startTimeMs || 0) + (this.segmentStartMs || 0);
|
|
96
96
|
}
|
|
97
97
|
get endTimeMs() {
|
|
98
|
-
|
|
98
|
+
const parentText = this.closest("ef-text");
|
|
99
|
+
if (parentText) return parentText.startTimeMs + parentText.durationMs;
|
|
100
|
+
return this.segmentEndMs || 0;
|
|
99
101
|
}
|
|
100
102
|
get durationMs() {
|
|
103
|
+
const parentText = this.closest("ef-text");
|
|
104
|
+
if (parentText) return parentText.durationMs;
|
|
101
105
|
return this.segmentEndMs - this.segmentStartMs;
|
|
102
106
|
}
|
|
103
107
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EFTextSegment.js","names":["EFTextSegment"],"sources":["../../src/elements/EFTextSegment.ts"],"sourcesContent":["import { css, html, LitElement } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { EFTemporal
|
|
1
|
+
{"version":3,"file":"EFTextSegment.js","names":["EFTextSegment"],"sources":["../../src/elements/EFTextSegment.ts"],"sourcesContent":["import { css, html, LitElement } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { EFTemporal } from \"./EFTemporal.ts\";\nimport { EFText } from \"./EFText.js\";\n\n// Global registry for animation stylesheets shared across all text segments\nconst globalAnimationSheets = new Map<string, CSSStyleSheet>();\n\n@customElement(\"ef-text-segment\")\nexport class EFTextSegment extends EFTemporal(LitElement) {\n static styles = [\n css`\n :host {\n display: inline;\n }\n :host([data-animated]) {\n display: inline-block;\n }\n :host([data-line-segment]) {\n display: block;\n }\n :host([hidden]) {\n opacity: 0;\n pointer-events: none;\n }\n `,\n ];\n\n /**\n * Registers animation styles that should be shared across all text segments.\n * This is the correct way to inject animation styles for segments - not via innerHTML.\n *\n * @param id Unique identifier for this stylesheet (e.g., \"my-animations\")\n * @param cssText The CSS rules to inject\n *\n * @example\n * EFTextSegment.registerAnimations(\"bounceIn\", `\n * @keyframes bounceIn {\n * from { transform: scale(0); }\n * to { transform: scale(1); }\n * }\n * .bounce-in {\n * animation: bounceIn 0.5s ease-out;\n * }\n * `);\n */\n static registerAnimations(id: string, cssText: string): void {\n if (globalAnimationSheets.has(id)) {\n // Already registered\n return;\n }\n\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(cssText);\n globalAnimationSheets.set(id, sheet);\n\n // Apply to all existing instances\n document.querySelectorAll(\"ef-text-segment\").forEach((segment) => {\n if (segment.shadowRoot) {\n const adoptedSheets = segment.shadowRoot.adoptedStyleSheets;\n if (!adoptedSheets.includes(sheet)) {\n segment.shadowRoot.adoptedStyleSheets = [...adoptedSheets, sheet];\n }\n }\n });\n }\n\n /**\n * Unregisters previously registered animation styles.\n *\n * @param id The identifier of the stylesheet to remove\n */\n static unregisterAnimations(id: string): void {\n const sheet = globalAnimationSheets.get(id);\n if (!sheet) {\n return;\n }\n\n globalAnimationSheets.delete(id);\n\n // Remove from all existing instances\n document.querySelectorAll(\"ef-text-segment\").forEach((segment) => {\n if (segment.shadowRoot) {\n segment.shadowRoot.adoptedStyleSheets =\n segment.shadowRoot.adoptedStyleSheets.filter((s) => s !== sheet);\n }\n });\n }\n\n render() {\n // Set CSS variables in render() to ensure they're always set\n // This is necessary because Lit may clear inline styles during updates\n this.setCSSVariables();\n return html`${this.segmentText}`;\n }\n\n private setCSSVariables(): void {\n // Set deterministic --ef-seed value based on segment index\n const seed = (this.segmentIndex * 9007) % 233; // Prime numbers for better distribution\n const seedValue = seed / 233; // Normalize to 0-1 range\n this.style.setProperty(\"--ef-seed\", seedValue.toString());\n\n // Set stagger offset CSS variable\n // staggerOffsetMs is always set (defaults to 0), so we can always set the CSS variable\n const offsetMs = this.staggerOffsetMs ?? 0;\n this.style.setProperty(\"--ef-stagger-offset\", `${offsetMs}ms`);\n\n // Set index CSS variable\n this.style.setProperty(\"--ef-index\", this.segmentIndex.toString());\n }\n\n protected firstUpdated(): void {\n this.setCSSVariables();\n }\n\n protected updated(): void {\n this.setCSSVariables();\n }\n\n @property({ type: String, attribute: false })\n segmentText = \"\";\n\n @property({ type: Number, attribute: false })\n segmentIndex = 0;\n\n @property({ type: Number, attribute: false })\n staggerOffsetMs?: number;\n\n @property({ type: Number, attribute: false })\n segmentStartMs = 0;\n\n @property({ type: Number, attribute: false })\n segmentEndMs = 0;\n\n @property({ type: Boolean, reflect: true })\n hidden = false;\n\n get startTimeMs() {\n const parentText = this.closest(\"ef-text\") as EFText;\n const parentStartTime = parentText?.startTimeMs || 0;\n return parentStartTime + (this.segmentStartMs || 0);\n }\n\n get endTimeMs() {\n // Derive from parent's live durationMs rather than the snapshot stored in segmentEndMs.\n // This ensures segments track changes when the parent's duration updates\n // (e.g., a contain-mode timegroup whose duration changes after a video loads).\n const parentText = this.closest(\"ef-text\") as EFText;\n if (parentText) {\n return parentText.startTimeMs + parentText.durationMs;\n }\n return this.segmentEndMs || 0;\n }\n\n get durationMs(): number {\n const parentText = this.closest(\"ef-text\") as EFText;\n if (parentText) {\n return parentText.durationMs;\n }\n return this.segmentEndMs - this.segmentStartMs;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-text-segment\": EFTextSegment;\n }\n}\n"],"mappings":";;;;;;AAMA,MAAM,wCAAwB,IAAI,KAA4B;AAGvD,0BAAMA,wBAAsB,WAAW,WAAW,CAAC;;;qBA+G1C;sBAGC;wBAME;sBAGF;gBAGN;;;gBA7HO,CACd,GAAG;;;;;;;;;;;;;;MAeJ;;;;;;;;;;;;;;;;;;;;CAoBD,OAAO,mBAAmB,IAAY,SAAuB;AAC3D,MAAI,sBAAsB,IAAI,GAAG,CAE/B;EAGF,MAAM,QAAQ,IAAI,eAAe;AACjC,QAAM,YAAY,QAAQ;AAC1B,wBAAsB,IAAI,IAAI,MAAM;AAGpC,WAAS,iBAAiB,kBAAkB,CAAC,SAAS,YAAY;AAChE,OAAI,QAAQ,YAAY;IACtB,MAAM,gBAAgB,QAAQ,WAAW;AACzC,QAAI,CAAC,cAAc,SAAS,MAAM,CAChC,SAAQ,WAAW,qBAAqB,CAAC,GAAG,eAAe,MAAM;;IAGrE;;;;;;;CAQJ,OAAO,qBAAqB,IAAkB;EAC5C,MAAM,QAAQ,sBAAsB,IAAI,GAAG;AAC3C,MAAI,CAAC,MACH;AAGF,wBAAsB,OAAO,GAAG;AAGhC,WAAS,iBAAiB,kBAAkB,CAAC,SAAS,YAAY;AAChE,OAAI,QAAQ,WACV,SAAQ,WAAW,qBACjB,QAAQ,WAAW,mBAAmB,QAAQ,MAAM,MAAM,MAAM;IAEpE;;CAGJ,SAAS;AAGP,OAAK,iBAAiB;AACtB,SAAO,IAAI,GAAG,KAAK;;CAGrB,AAAQ,kBAAwB;EAG9B,MAAM,YADQ,KAAK,eAAe,OAAQ,MACjB;AACzB,OAAK,MAAM,YAAY,aAAa,UAAU,UAAU,CAAC;EAIzD,MAAM,WAAW,KAAK,mBAAmB;AACzC,OAAK,MAAM,YAAY,uBAAuB,GAAG,SAAS,IAAI;AAG9D,OAAK,MAAM,YAAY,cAAc,KAAK,aAAa,UAAU,CAAC;;CAGpE,AAAU,eAAqB;AAC7B,OAAK,iBAAiB;;CAGxB,AAAU,UAAgB;AACxB,OAAK,iBAAiB;;CAqBxB,IAAI,cAAc;AAGhB,UAFmB,KAAK,QAAQ,UAAU,EACN,eAAe,MACzB,KAAK,kBAAkB;;CAGnD,IAAI,YAAY;EAId,MAAM,aAAa,KAAK,QAAQ,UAAU;AAC1C,MAAI,WACF,QAAO,WAAW,cAAc,WAAW;AAE7C,SAAO,KAAK,gBAAgB;;CAG9B,IAAI,aAAqB;EACvB,MAAM,aAAa,KAAK,QAAQ,UAAU;AAC1C,MAAI,WACF,QAAO,WAAW;AAEpB,SAAO,KAAK,eAAe,KAAK;;;YAxCjC,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAO,CAAC;YAG5C,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAO,CAAC;YAG5C,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAO,CAAC;YAG5C,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAO,CAAC;YAG5C,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAO,CAAC;YAG5C,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC;4BA9H5C,cAAc,kBAAkB"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { FrameController, FrameRenderable, FrameState } from "../preview/FrameController.js";
|
|
2
|
+
import { QualityUpgradeScheduler } from "../preview/QualityUpgradeScheduler.js";
|
|
2
3
|
import { TemporalMixinInterface } from "./EFTemporal.js";
|
|
3
4
|
import { EFMedia } from "./EFMedia.js";
|
|
4
5
|
import { ContainerInfo } from "./ContainerInfo.js";
|
|
5
6
|
import { ElementPositionInfo } from "./ElementPositionInfo.js";
|
|
6
|
-
import {
|
|
7
|
-
import { RenderToVideoOptions } from "../preview/renderTimegroupToVideo.js";
|
|
7
|
+
import { RenderToVideoOptions } from "../preview/renderTimegroupToVideo.types.js";
|
|
8
8
|
import "./EFPanZoom.js";
|
|
9
9
|
import "../canvas/EFCanvas.js";
|
|
10
10
|
import "../gui/hierarchy/EFHierarchy.js";
|
|
@@ -40,8 +40,9 @@ interface RenderCloneResult {
|
|
|
40
40
|
*
|
|
41
41
|
* CONSTRAINTS:
|
|
42
42
|
* - MUST be synchronous (no async/await, no Promise return)
|
|
43
|
-
* - MUST complete in <
|
|
43
|
+
* - MUST complete in <2000ms (error) or <100ms (warning)
|
|
44
44
|
* - Should only register callbacks and set up behavior, not do expensive work
|
|
45
|
+
* - GPU operations (WebGL context creation, shader compilation) may take up to ~1s
|
|
45
46
|
*/
|
|
46
47
|
type TimegroupInitializer = (timegroup: EFTimegroup) => void;
|
|
47
48
|
/**
|
|
@@ -61,10 +62,11 @@ declare class EFTimegroup extends EFTimegroup_base implements FrameRenderable {
|
|
|
61
62
|
_timeGroupContext: this;
|
|
62
63
|
/** @internal */
|
|
63
64
|
efContext: this;
|
|
64
|
-
|
|
65
|
-
mode: TimeMode;
|
|
66
|
-
|
|
67
|
-
overlapMs: number;
|
|
65
|
+
shouldAutoReady(): boolean;
|
|
66
|
+
get mode(): TimeMode;
|
|
67
|
+
set mode(value: TimeMode);
|
|
68
|
+
get overlapMs(): number;
|
|
69
|
+
set overlapMs(value: number);
|
|
68
70
|
/**
|
|
69
71
|
* Initializer function for setting up JavaScript behavior on this timegroup.
|
|
70
72
|
* This function is called ONCE per instance - on the prime timeline when first connected,
|
|
@@ -97,12 +99,6 @@ declare class EFTimegroup extends EFTimegroup_base implements FrameRenderable {
|
|
|
97
99
|
*/
|
|
98
100
|
get initializer(): TimegroupInitializer | undefined;
|
|
99
101
|
set initializer(fn: TimegroupInitializer | undefined);
|
|
100
|
-
/**
|
|
101
|
-
* Public accessor for initializer completion promise.
|
|
102
|
-
* Allows createRenderClone to wait for initializer before rendering.
|
|
103
|
-
* @internal
|
|
104
|
-
*/
|
|
105
|
-
get initializerComplete(): Promise<void> | undefined;
|
|
106
102
|
/** @public */
|
|
107
103
|
fps: number;
|
|
108
104
|
/**
|
|
@@ -130,6 +126,11 @@ declare class EFTimegroup extends EFTimegroup_base implements FrameRenderable {
|
|
|
130
126
|
* @public
|
|
131
127
|
*/
|
|
132
128
|
get frameController(): FrameController;
|
|
129
|
+
/**
|
|
130
|
+
* Get the quality upgrade scheduler for background segment fetching.
|
|
131
|
+
* @public
|
|
132
|
+
*/
|
|
133
|
+
get qualityUpgradeScheduler(): QualityUpgradeScheduler;
|
|
133
134
|
/**
|
|
134
135
|
* Query timegroup's readiness state for a given time.
|
|
135
136
|
* Timegroups are always ready (no async preparation needed).
|
|
@@ -168,6 +169,16 @@ declare class EFTimegroup extends EFTimegroup_base implements FrameRenderable {
|
|
|
168
169
|
* @public
|
|
169
170
|
*/
|
|
170
171
|
incrementContentEpoch(): void;
|
|
172
|
+
/**
|
|
173
|
+
* Request a frame re-render at the current time.
|
|
174
|
+
*
|
|
175
|
+
* Use this when the source-to-timeline mapping has changed (e.g., sourcein/sourceout)
|
|
176
|
+
* but currentTimeMs hasn't. The FrameController only re-renders when currentTimeMs
|
|
177
|
+
* or durationMs change, so this provides a way for child elements to request a
|
|
178
|
+
* re-render when their internal state changes the visual output.
|
|
179
|
+
* @public
|
|
180
|
+
*/
|
|
181
|
+
requestFrameRender(): void;
|
|
171
182
|
/** @public */
|
|
172
183
|
set currentTime(time: number);
|
|
173
184
|
/** @public */
|
|
@@ -262,33 +273,13 @@ declare class EFTimegroup extends EFTimegroup_base implements FrameRenderable {
|
|
|
262
273
|
didBecomeRoot(): void;
|
|
263
274
|
protected updated(changedProperties: PropertyValues): void;
|
|
264
275
|
disconnectedCallback(): void;
|
|
265
|
-
/**
|
|
266
|
-
* Capture the timegroup at a specific timestamp as a canvas.
|
|
267
|
-
* Does NOT modify currentTimeMs - captures are rendered independently.
|
|
268
|
-
*
|
|
269
|
-
* @param options - Capture options including timeMs, scale, contentReadyMode
|
|
270
|
-
* @returns Promise resolving to an HTMLCanvasElement with the captured frame
|
|
271
|
-
* @public
|
|
272
|
-
*/
|
|
273
|
-
captureAtTime(options: CaptureOptions): Promise<HTMLCanvasElement>;
|
|
274
|
-
/**
|
|
275
|
-
* Capture multiple timestamps as canvas thumbnails in a single batch.
|
|
276
|
-
*
|
|
277
|
-
* CLONE-TIMELINE ARCHITECTURE:
|
|
278
|
-
* Creates a single render clone and reuses it across all captures.
|
|
279
|
-
* Prime-timeline is NEVER seeked - user can continue previewing/editing during capture.
|
|
280
|
-
*
|
|
281
|
-
* @param timestamps - Array of timestamps (in milliseconds) to capture
|
|
282
|
-
* @param options - Capture options (scale, contentReadyMode, blockingTimeoutMs)
|
|
283
|
-
* @returns Promise resolving to array of HTMLCanvasElements
|
|
284
|
-
* @public
|
|
285
|
-
*/
|
|
286
|
-
captureBatch(timestamps: number[], options?: CaptureBatchOptions): Promise<HTMLCanvasElement[]>;
|
|
287
276
|
/**
|
|
288
277
|
* Render the timegroup to an MP4 video file and trigger download.
|
|
289
278
|
* Captures each frame at the specified fps, encodes using WebCodecs via
|
|
290
279
|
* MediaBunny, and downloads the resulting video.
|
|
291
280
|
*
|
|
281
|
+
* Uses dynamic import to only load render utilities in browser context.
|
|
282
|
+
*
|
|
292
283
|
* @param options - Rendering options (fps, codec, bitrate, filename, etc.)
|
|
293
284
|
* @returns Promise that resolves when video is downloaded
|
|
294
285
|
* @public
|
|
@@ -321,8 +312,6 @@ declare class EFTimegroup extends EFTimegroup_base implements FrameRenderable {
|
|
|
321
312
|
/** @public */
|
|
322
313
|
get durationMs(): number;
|
|
323
314
|
/** @internal */
|
|
324
|
-
waitForFrameTasks(signal?: AbortSignal): Promise<void>;
|
|
325
|
-
/** @internal */
|
|
326
315
|
waitForMediaDurations(signal?: AbortSignal): Promise<void>;
|
|
327
316
|
/** @internal */
|
|
328
317
|
get childTemporals(): TemporalMixinInterface[];
|
|
@@ -354,12 +343,6 @@ declare class EFTimegroup extends EFTimegroup_base implements FrameRenderable {
|
|
|
354
343
|
* @internal
|
|
355
344
|
*/
|
|
356
345
|
renderAudio(fromMs: number, toMs: number, signal?: AbortSignal): Promise<AudioBuffer>;
|
|
357
|
-
static readonly TIMEGROUP_FRAME_TASK_THRESHOLD = 100;
|
|
358
|
-
static readonly TIMEGROUP_FRAME_TASK_RESET_MS = 1000;
|
|
359
|
-
frameTask: {
|
|
360
|
-
run(): void | Promise<void>;
|
|
361
|
-
taskComplete: Promise<void>;
|
|
362
|
-
};
|
|
363
346
|
seekTask: {
|
|
364
347
|
run(): void | Promise<number | undefined>;
|
|
365
348
|
taskComplete: Promise<number | undefined>;
|