@editframe/elements 0.30.1-beta.0 → 0.31.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/EF_FRAMEGEN.d.ts +5 -0
- package/dist/EF_FRAMEGEN.js +20 -4
- package/dist/EF_FRAMEGEN.js.map +1 -1
- package/dist/EF_INTERACTIVE.js.map +1 -1
- package/dist/_virtual/rolldown_runtime.js +27 -0
- package/dist/canvas/EFCanvas.d.ts +311 -0
- package/dist/canvas/EFCanvas.js +1089 -0
- package/dist/canvas/EFCanvas.js.map +1 -0
- package/dist/canvas/EFCanvasItem.d.ts +55 -0
- package/dist/canvas/EFCanvasItem.js +72 -0
- package/dist/canvas/EFCanvasItem.js.map +1 -0
- package/dist/canvas/api/CanvasAPI.d.ts +115 -0
- package/dist/canvas/api/CanvasAPI.js +182 -0
- package/dist/canvas/api/CanvasAPI.js.map +1 -0
- package/dist/canvas/api/types.d.ts +42 -0
- package/dist/canvas/coordinateTransform.js +90 -0
- package/dist/canvas/coordinateTransform.js.map +1 -0
- package/dist/canvas/getElementBounds.js +40 -0
- package/dist/canvas/getElementBounds.js.map +1 -0
- package/dist/canvas/overlays/SelectionOverlay.js +265 -0
- package/dist/canvas/overlays/SelectionOverlay.js.map +1 -0
- package/dist/canvas/overlays/overlayState.js +153 -0
- package/dist/canvas/overlays/overlayState.js.map +1 -0
- package/dist/canvas/selection/SelectionController.js +105 -0
- package/dist/canvas/selection/SelectionController.js.map +1 -0
- package/dist/canvas/selection/SelectionModel.d.ts +98 -0
- package/dist/canvas/selection/SelectionModel.js +229 -0
- package/dist/canvas/selection/SelectionModel.js.map +1 -0
- package/dist/canvas/selection/selectionContext.d.ts +31 -0
- package/dist/canvas/selection/selectionContext.js +12 -0
- package/dist/canvas/selection/selectionContext.js.map +1 -0
- package/dist/elements/ContainerInfo.d.ts +29 -0
- package/dist/elements/ContainerInfo.js +30 -0
- package/dist/elements/ContainerInfo.js.map +1 -0
- package/dist/elements/EFAudio.d.ts +13 -3
- package/dist/elements/EFAudio.js +64 -10
- package/dist/elements/EFAudio.js.map +1 -1
- package/dist/elements/EFCaptions.d.ts +18 -16
- package/dist/elements/EFCaptions.js +110 -19
- package/dist/elements/EFCaptions.js.map +1 -1
- package/dist/elements/EFImage.d.ts +16 -6
- package/dist/elements/EFImage.js +79 -9
- package/dist/elements/EFImage.js.map +1 -1
- package/dist/elements/EFMedia/AssetIdMediaEngine.js +51 -4
- package/dist/elements/EFMedia/AssetIdMediaEngine.js.map +1 -1
- package/dist/elements/EFMedia/AssetMediaEngine.js +125 -52
- package/dist/elements/EFMedia/AssetMediaEngine.js.map +1 -1
- package/dist/elements/EFMedia/BaseMediaEngine.js +24 -6
- package/dist/elements/EFMedia/BaseMediaEngine.js.map +1 -1
- package/dist/elements/EFMedia/JitMediaEngine.js +12 -8
- package/dist/elements/EFMedia/JitMediaEngine.js.map +1 -1
- package/dist/elements/EFMedia/audioTasks/makeAudioBufferTask.js +46 -7
- package/dist/elements/EFMedia/audioTasks/makeAudioBufferTask.js.map +1 -1
- package/dist/elements/EFMedia/audioTasks/makeAudioFrequencyAnalysisTask.js +98 -73
- package/dist/elements/EFMedia/audioTasks/makeAudioFrequencyAnalysisTask.js.map +1 -1
- package/dist/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.js +28 -5
- package/dist/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.js.map +1 -1
- package/dist/elements/EFMedia/audioTasks/makeAudioInputTask.js +18 -6
- package/dist/elements/EFMedia/audioTasks/makeAudioInputTask.js.map +1 -1
- package/dist/elements/EFMedia/audioTasks/makeAudioSeekTask.js +8 -2
- package/dist/elements/EFMedia/audioTasks/makeAudioSeekTask.js.map +1 -1
- package/dist/elements/EFMedia/audioTasks/makeAudioSegmentFetchTask.js +31 -6
- package/dist/elements/EFMedia/audioTasks/makeAudioSegmentFetchTask.js.map +1 -1
- package/dist/elements/EFMedia/audioTasks/makeAudioSegmentIdTask.js +28 -5
- package/dist/elements/EFMedia/audioTasks/makeAudioSegmentIdTask.js.map +1 -1
- package/dist/elements/EFMedia/audioTasks/makeAudioTimeDomainAnalysisTask.js +97 -72
- package/dist/elements/EFMedia/audioTasks/makeAudioTimeDomainAnalysisTask.js.map +1 -1
- package/dist/elements/EFMedia/shared/AudioSpanUtils.js +3 -1
- package/dist/elements/EFMedia/shared/AudioSpanUtils.js.map +1 -1
- package/dist/elements/EFMedia/shared/BufferUtils.js +1 -1
- package/dist/elements/EFMedia/shared/BufferUtils.js.map +1 -1
- package/dist/elements/EFMedia/shared/ThumbnailExtractor.js +25 -14
- package/dist/elements/EFMedia/shared/ThumbnailExtractor.js.map +1 -1
- package/dist/elements/EFMedia/tasks/makeMediaEngineTask.js +47 -16
- package/dist/elements/EFMedia/tasks/makeMediaEngineTask.js.map +1 -1
- package/dist/elements/EFMedia/videoTasks/MainVideoInputCache.js +37 -19
- package/dist/elements/EFMedia/videoTasks/MainVideoInputCache.js.map +1 -1
- package/dist/elements/EFMedia/videoTasks/ScrubInputCache.js +65 -21
- package/dist/elements/EFMedia/videoTasks/ScrubInputCache.js.map +1 -1
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoBufferTask.js +8 -3
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoBufferTask.js.map +1 -1
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoInitSegmentFetchTask.js +32 -9
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoInitSegmentFetchTask.js.map +1 -1
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoInputTask.js +33 -10
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoInputTask.js.map +1 -1
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoSeekTask.js +23 -8
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoSeekTask.js.map +1 -1
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentFetchTask.js +34 -10
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentFetchTask.js.map +1 -1
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentIdTask.js +31 -8
- package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentIdTask.js.map +1 -1
- package/dist/elements/EFMedia/videoTasks/makeUnifiedVideoSeekTask.js +31 -114
- package/dist/elements/EFMedia/videoTasks/makeUnifiedVideoSeekTask.js.map +1 -1
- package/dist/elements/EFMedia/videoTasks/makeVideoBufferTask.js +44 -8
- package/dist/elements/EFMedia/videoTasks/makeVideoBufferTask.js.map +1 -1
- package/dist/elements/EFMedia.d.ts +18 -7
- package/dist/elements/EFMedia.js +23 -3
- package/dist/elements/EFMedia.js.map +1 -1
- package/dist/elements/EFPanZoom.d.ts +96 -0
- package/dist/elements/EFPanZoom.js +290 -0
- package/dist/elements/EFPanZoom.js.map +1 -0
- package/dist/elements/EFSourceMixin.js +7 -6
- package/dist/elements/EFSourceMixin.js.map +1 -1
- package/dist/elements/EFSurface.d.ts +6 -6
- package/dist/elements/EFSurface.js +7 -2
- package/dist/elements/EFSurface.js.map +1 -1
- package/dist/elements/EFTemporal.d.ts +2 -1
- package/dist/elements/EFTemporal.js +192 -71
- package/dist/elements/EFTemporal.js.map +1 -1
- package/dist/elements/EFText.d.ts +5 -4
- package/dist/elements/EFText.js +102 -13
- package/dist/elements/EFText.js.map +1 -1
- package/dist/elements/EFTextSegment.d.ts +32 -6
- package/dist/elements/EFTextSegment.js +53 -15
- package/dist/elements/EFTextSegment.js.map +1 -1
- package/dist/elements/EFThumbnailStrip.d.ts +118 -56
- package/dist/elements/EFThumbnailStrip.js +522 -358
- package/dist/elements/EFThumbnailStrip.js.map +1 -1
- package/dist/elements/EFTimegroup.d.ts +223 -27
- package/dist/elements/EFTimegroup.js +851 -148
- package/dist/elements/EFTimegroup.js.map +1 -1
- package/dist/elements/EFVideo.d.ts +42 -5
- package/dist/elements/EFVideo.js +165 -11
- package/dist/elements/EFVideo.js.map +1 -1
- package/dist/elements/EFWaveform.d.ts +6 -6
- package/dist/elements/EFWaveform.js +2 -1
- package/dist/elements/EFWaveform.js.map +1 -1
- package/dist/elements/ElementPositionInfo.d.ts +35 -0
- package/dist/elements/ElementPositionInfo.js +49 -0
- package/dist/elements/ElementPositionInfo.js.map +1 -0
- package/dist/elements/FetchMixin.js +16 -1
- package/dist/elements/FetchMixin.js.map +1 -1
- package/dist/elements/SessionThumbnailCache.js +152 -0
- package/dist/elements/SessionThumbnailCache.js.map +1 -0
- package/dist/elements/TargetController.js +3 -1
- package/dist/elements/TargetController.js.map +1 -1
- package/dist/elements/TimegroupController.js +9 -3
- package/dist/elements/TimegroupController.js.map +1 -1
- package/dist/elements/findRootTemporal.js +30 -0
- package/dist/elements/findRootTemporal.js.map +1 -0
- package/dist/elements/renderTemporalAudio.js +18 -5
- package/dist/elements/renderTemporalAudio.js.map +1 -1
- package/dist/elements/updateAnimations.js +492 -109
- package/dist/elements/updateAnimations.js.map +1 -1
- package/dist/getRenderInfo.d.ts +2 -2
- package/dist/gui/ContextMixin.js +4 -2
- package/dist/gui/ContextMixin.js.map +1 -1
- package/dist/gui/Controllable.js +74 -1
- package/dist/gui/Controllable.js.map +1 -1
- package/dist/gui/EFActiveRootTemporal.d.ts +50 -0
- package/dist/gui/EFActiveRootTemporal.js +94 -0
- package/dist/gui/EFActiveRootTemporal.js.map +1 -0
- package/dist/gui/EFConfiguration.d.ts +11 -5
- package/dist/gui/EFConfiguration.js.map +1 -1
- package/dist/gui/EFControls.d.ts +2 -2
- package/dist/gui/EFControls.js +109 -13
- package/dist/gui/EFControls.js.map +1 -1
- package/dist/gui/EFDial.d.ts +4 -4
- package/dist/gui/EFFilmstrip.d.ts +11 -214
- package/dist/gui/EFFilmstrip.js +53 -1152
- package/dist/gui/EFFilmstrip.js.map +1 -1
- package/dist/gui/EFFitScale.d.ts +3 -3
- package/dist/gui/EFFitScale.js +39 -12
- package/dist/gui/EFFitScale.js.map +1 -1
- package/dist/gui/EFFocusOverlay.d.ts +4 -4
- package/dist/gui/EFOverlayItem.d.ts +48 -0
- package/dist/gui/EFOverlayItem.js +97 -0
- package/dist/gui/EFOverlayItem.js.map +1 -0
- package/dist/gui/EFOverlayLayer.d.ts +70 -0
- package/dist/gui/EFOverlayLayer.js +104 -0
- package/dist/gui/EFOverlayLayer.js.map +1 -0
- package/dist/gui/EFPause.d.ts +4 -4
- package/dist/gui/EFPlay.d.ts +4 -4
- package/dist/gui/EFPreview.d.ts +4 -4
- package/dist/gui/EFResizableBox.d.ts +12 -16
- package/dist/gui/EFResizableBox.js +109 -451
- package/dist/gui/EFResizableBox.js.map +1 -1
- package/dist/gui/EFScrubber.d.ts +30 -5
- package/dist/gui/EFScrubber.js +224 -31
- package/dist/gui/EFScrubber.js.map +1 -1
- package/dist/gui/EFTimeDisplay.d.ts +4 -4
- package/dist/gui/EFTimeDisplay.js +4 -1
- package/dist/gui/EFTimeDisplay.js.map +1 -1
- package/dist/gui/EFTimelineRuler.d.ts +71 -0
- package/dist/gui/EFTimelineRuler.js +320 -0
- package/dist/gui/EFTimelineRuler.js.map +1 -0
- package/dist/gui/EFToggleLoop.d.ts +4 -4
- package/dist/gui/EFTogglePlay.d.ts +4 -4
- package/dist/gui/EFTransformHandles.d.ts +91 -0
- package/dist/gui/EFTransformHandles.js +393 -0
- package/dist/gui/EFTransformHandles.js.map +1 -0
- package/dist/gui/EFWorkbench.d.ts +182 -4
- package/dist/gui/EFWorkbench.js +2067 -22
- package/dist/gui/EFWorkbench.js.map +1 -1
- package/dist/gui/FitScaleHelpers.d.ts +31 -0
- package/dist/gui/FitScaleHelpers.js +41 -0
- package/dist/gui/FitScaleHelpers.js.map +1 -0
- package/dist/gui/PlaybackController.d.ts +2 -1
- package/dist/gui/PlaybackController.js +46 -15
- 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/hierarchy/EFHierarchy.d.ts +65 -0
- package/dist/gui/hierarchy/EFHierarchy.js +338 -0
- package/dist/gui/hierarchy/EFHierarchy.js.map +1 -0
- package/dist/gui/hierarchy/EFHierarchyItem.d.ts +118 -0
- package/dist/gui/hierarchy/EFHierarchyItem.js +551 -0
- package/dist/gui/hierarchy/EFHierarchyItem.js.map +1 -0
- package/dist/gui/hierarchy/hierarchyContext.d.ts +38 -0
- package/dist/gui/hierarchy/hierarchyContext.js +8 -0
- package/dist/gui/hierarchy/hierarchyContext.js.map +1 -0
- package/dist/gui/icons.js +34 -0
- package/dist/gui/icons.js.map +1 -0
- package/dist/gui/panZoomTransformContext.js +12 -0
- package/dist/gui/panZoomTransformContext.js.map +1 -0
- package/dist/gui/previewSettingsContext.js +12 -0
- package/dist/gui/previewSettingsContext.js.map +1 -0
- package/dist/gui/timeline/EFTimeline.d.ts +270 -0
- package/dist/gui/timeline/EFTimeline.js +1369 -0
- package/dist/gui/timeline/EFTimeline.js.map +1 -0
- package/dist/gui/timeline/EFTimelineRow.js +374 -0
- package/dist/gui/timeline/EFTimelineRow.js.map +1 -0
- package/dist/gui/timeline/TrimHandles.d.ts +36 -0
- package/dist/gui/timeline/TrimHandles.js +204 -0
- package/dist/gui/timeline/TrimHandles.js.map +1 -0
- package/dist/gui/timeline/flattenHierarchy.js +31 -0
- package/dist/gui/timeline/flattenHierarchy.js.map +1 -0
- package/dist/gui/timeline/timelineStateContext.d.ts +26 -0
- package/dist/gui/timeline/timelineStateContext.js +42 -0
- package/dist/gui/timeline/timelineStateContext.js.map +1 -0
- package/dist/gui/timeline/tracks/AudioTrack.js +264 -0
- package/dist/gui/timeline/tracks/AudioTrack.js.map +1 -0
- package/dist/gui/timeline/tracks/CaptionsTrack.js +595 -0
- package/dist/gui/timeline/tracks/CaptionsTrack.js.map +1 -0
- package/dist/gui/timeline/tracks/HTMLTrack.js +19 -0
- package/dist/gui/timeline/tracks/HTMLTrack.js.map +1 -0
- package/dist/gui/timeline/tracks/ImageTrack.js +53 -0
- package/dist/gui/timeline/tracks/ImageTrack.js.map +1 -0
- package/dist/gui/timeline/tracks/TextTrack.js +250 -0
- package/dist/gui/timeline/tracks/TextTrack.js.map +1 -0
- package/dist/gui/timeline/tracks/TimegroupTrack.js +143 -0
- package/dist/gui/timeline/tracks/TimegroupTrack.js.map +1 -0
- package/dist/gui/timeline/tracks/TrackItem.js +269 -0
- package/dist/gui/timeline/tracks/TrackItem.js.map +1 -0
- package/dist/gui/timeline/tracks/VideoTrack.js +265 -0
- package/dist/gui/timeline/tracks/VideoTrack.js.map +1 -0
- package/dist/gui/timeline/tracks/WaveformTrack.js +19 -0
- package/dist/gui/timeline/tracks/WaveformTrack.js.map +1 -0
- package/dist/gui/timeline/tracks/ensureTrackItemInit.js +1 -0
- package/dist/gui/timeline/tracks/preloadTracks.js +9 -0
- package/dist/gui/timeline/tracks/renderTrackChildren.js +119 -0
- package/dist/gui/timeline/tracks/renderTrackChildren.js.map +1 -0
- package/dist/gui/timeline/tracks/waveformUtils.js +80 -0
- package/dist/gui/timeline/tracks/waveformUtils.js.map +1 -0
- package/dist/gui/transformCalculations.js +217 -0
- package/dist/gui/transformCalculations.js.map +1 -0
- package/dist/gui/transformUtils.d.ts +37 -0
- package/dist/gui/transformUtils.js +77 -0
- package/dist/gui/transformUtils.js.map +1 -0
- package/dist/gui/tree/EFTree.d.ts +59 -0
- package/dist/gui/tree/EFTree.js +174 -0
- package/dist/gui/tree/EFTree.js.map +1 -0
- package/dist/gui/tree/EFTreeItem.d.ts +38 -0
- package/dist/gui/tree/EFTreeItem.js +146 -0
- package/dist/gui/tree/EFTreeItem.js.map +1 -0
- package/dist/gui/tree/treeContext.d.ts +60 -0
- package/dist/gui/tree/treeContext.js +23 -0
- package/dist/gui/tree/treeContext.js.map +1 -0
- package/dist/index.d.ts +32 -8
- package/dist/index.js +30 -6
- package/dist/index.js.map +1 -1
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.js +688 -0
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.js.map +1 -0
- package/dist/node_modules/react/cjs/react.development.js +1521 -0
- package/dist/node_modules/react/cjs/react.development.js.map +1 -0
- package/dist/node_modules/react/index.js +13 -0
- package/dist/node_modules/react/index.js.map +1 -0
- package/dist/node_modules/react/jsx-runtime.js +13 -0
- package/dist/node_modules/react/jsx-runtime.js.map +1 -0
- package/dist/preview/AdaptiveResolutionTracker.js +228 -0
- package/dist/preview/AdaptiveResolutionTracker.js.map +1 -0
- package/dist/preview/RenderProfiler.js +135 -0
- package/dist/preview/RenderProfiler.js.map +1 -0
- package/dist/preview/previewSettings.js +131 -0
- package/dist/preview/previewSettings.js.map +1 -0
- package/dist/preview/previewTypes.js +64 -0
- package/dist/preview/previewTypes.js.map +1 -0
- package/dist/preview/renderTimegroupPreview.js +656 -0
- package/dist/preview/renderTimegroupPreview.js.map +1 -0
- package/dist/preview/renderTimegroupToCanvas.d.ts +37 -0
- package/dist/preview/renderTimegroupToCanvas.js +840 -0
- package/dist/preview/renderTimegroupToCanvas.js.map +1 -0
- package/dist/preview/renderTimegroupToVideo.d.ts +39 -0
- package/dist/preview/renderTimegroupToVideo.js +274 -0
- package/dist/preview/renderTimegroupToVideo.js.map +1 -0
- package/dist/preview/renderers.js +16 -0
- package/dist/preview/renderers.js.map +1 -0
- package/dist/preview/statsTrackingStrategy.js +201 -0
- package/dist/preview/statsTrackingStrategy.js.map +1 -0
- package/dist/preview/thumbnailCacheSettings.js +52 -0
- package/dist/preview/thumbnailCacheSettings.js.map +1 -0
- package/dist/preview/workers/WorkerPool.js +178 -0
- package/dist/preview/workers/WorkerPool.js.map +1 -0
- package/dist/sandbox/PlaybackControls.js +10 -0
- package/dist/sandbox/PlaybackControls.js.map +1 -0
- package/dist/sandbox/ScenarioRunner.js +1 -0
- package/dist/sandbox/index.js +2 -0
- package/dist/style.css +66 -69
- package/dist/transcoding/types/index.d.ts +2 -1
- package/dist/transcoding/utils/UrlGenerator.d.ts +6 -1
- package/dist/transcoding/utils/UrlGenerator.js +12 -3
- package/dist/transcoding/utils/UrlGenerator.js.map +1 -1
- package/dist/utils/LRUCache.js +1 -375
- package/dist/utils/LRUCache.js.map +1 -1
- package/dist/utils/frameTime.js +14 -0
- package/dist/utils/frameTime.js.map +1 -0
- package/package.json +3 -3
- package/test/profilingPlugin.ts +223 -0
- package/test/recordReplayProxyPlugin.js +22 -27
- package/test/thumbnail-performance-test.html +116 -0
- package/test/visualRegressionUtils.ts +286 -0
- package/types.json +1 -1
- package/dist/elements/TimegroupController.d.ts +0 -18
- package/dist/msToTimeCode.js +0 -17
- package/dist/msToTimeCode.js.map +0 -1
|
@@ -1,15 +1,21 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as lit11 from "lit";
|
|
2
2
|
import { LitElement } from "lit";
|
|
3
|
-
import * as
|
|
3
|
+
import * as lit_html11 from "lit-html";
|
|
4
4
|
|
|
5
5
|
//#region src/gui/EFConfiguration.d.ts
|
|
6
6
|
declare class EFConfiguration extends LitElement {
|
|
7
|
-
static styles:
|
|
7
|
+
static styles: lit11.CSSResult[];
|
|
8
8
|
efConfiguration: this;
|
|
9
9
|
apiHost?: string;
|
|
10
10
|
signingURL: string;
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Media engine selection:
|
|
13
|
+
* - "cloud": Use JitMediaEngine for http/https URLs, AssetMediaEngine for local paths (default)
|
|
14
|
+
* - "local": Force AssetMediaEngine for all sources (uses @ef-* URLs)
|
|
15
|
+
* - "jit": Force JitMediaEngine for all sources (uses /api/v1/transcode/* URLs)
|
|
16
|
+
*/
|
|
17
|
+
mediaEngine?: "cloud" | "local" | "jit";
|
|
18
|
+
render(): lit_html11.TemplateResult<1>;
|
|
13
19
|
}
|
|
14
20
|
declare global {
|
|
15
21
|
interface HTMLElementTagNameMap {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EFConfiguration.js","names":["EFConfiguration"],"sources":["../../src/gui/EFConfiguration.ts"],"sourcesContent":["import { createContext, provide } from \"@lit/context\";\nimport { css, html, LitElement } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\n\nexport const efConfigurationContext = createContext<EFConfiguration | null>(\n Symbol(\"efConfigurationContext\"),\n);\n\n@customElement(\"ef-configuration\")\nexport class EFConfiguration extends LitElement {\n static styles = [\n css`\n :host {\n display: contents;\n }\n `,\n ];\n\n @provide({ context: efConfigurationContext })\n efConfiguration = this;\n\n @property({ type: String, attribute: \"api-host\" })\n apiHost?: string;\n\n @property({ type: String, attribute: \"signing-url\" })\n signingURL = \"/@ef-sign-url\";\n\n @property({ type: String, attribute: \"media-engine\" })\n mediaEngine?: \"cloud\" | \"local\" = \"cloud\";\n\n render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-configuration\": EFConfiguration;\n }\n}\n"],"mappings":";;;;;;AAIA,MAAa,yBAAyB,cACpC,OAAO,yBAAyB,CACjC;AAGM,4BAAMA,0BAAwB,WAAW;;;yBAU5B;oBAML;
|
|
1
|
+
{"version":3,"file":"EFConfiguration.js","names":["EFConfiguration"],"sources":["../../src/gui/EFConfiguration.ts"],"sourcesContent":["import { createContext, provide } from \"@lit/context\";\nimport { css, html, LitElement } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\n\nexport const efConfigurationContext = createContext<EFConfiguration | null>(\n Symbol(\"efConfigurationContext\"),\n);\n\n@customElement(\"ef-configuration\")\nexport class EFConfiguration extends LitElement {\n static styles = [\n css`\n :host {\n display: contents;\n }\n `,\n ];\n\n @provide({ context: efConfigurationContext })\n efConfiguration = this;\n\n @property({ type: String, attribute: \"api-host\" })\n apiHost?: string;\n\n @property({ type: String, attribute: \"signing-url\" })\n signingURL = \"/@ef-sign-url\";\n\n /**\n * Media engine selection:\n * - \"cloud\": Use JitMediaEngine for http/https URLs, AssetMediaEngine for local paths (default)\n * - \"local\": Force AssetMediaEngine for all sources (uses @ef-* URLs)\n * - \"jit\": Force JitMediaEngine for all sources (uses /api/v1/transcode/* URLs)\n */\n @property({ type: String, attribute: \"media-engine\" })\n mediaEngine?: \"cloud\" | \"local\" | \"jit\" = \"cloud\";\n\n render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-configuration\": EFConfiguration;\n }\n}\n"],"mappings":";;;;;;AAIA,MAAa,yBAAyB,cACpC,OAAO,yBAAyB,CACjC;AAGM,4BAAMA,0BAAwB,WAAW;;;yBAU5B;oBAML;qBAS6B;;;gBAxB1B,CACd,GAAG;;;;MAKJ;;CAoBD,SAAS;AACP,SAAO,IAAI;;;YAnBZ,QAAQ,EAAE,SAAS,wBAAwB,CAAC;YAG5C,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAY,CAAC;YAGjD,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAe,CAAC;YASpD,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAgB,CAAC;8BAzBvD,cAAc,mBAAmB"}
|
package/dist/gui/EFControls.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TemporalMixinInterface } from "../elements/EFTemporal.js";
|
|
2
2
|
import { ControllableInterface } from "./Controllable.js";
|
|
3
3
|
import { FocusContext } from "./focusContext.js";
|
|
4
|
-
import * as
|
|
4
|
+
import * as lit26 from "lit";
|
|
5
5
|
import { LitElement, PropertyValueMap } from "lit";
|
|
6
6
|
|
|
7
7
|
//#region src/gui/EFControls.d.ts
|
|
@@ -26,7 +26,7 @@ import { LitElement, PropertyValueMap } from "lit";
|
|
|
26
26
|
*/
|
|
27
27
|
declare class EFControls extends LitElement {
|
|
28
28
|
#private;
|
|
29
|
-
static styles:
|
|
29
|
+
static styles: lit26.CSSResult;
|
|
30
30
|
createRenderRoot(): this;
|
|
31
31
|
/**
|
|
32
32
|
* The ID of the ef-preview element to control
|
package/dist/gui/EFControls.js
CHANGED
|
@@ -2,11 +2,13 @@ import { currentTimeContext } from "./currentTimeContext.js";
|
|
|
2
2
|
import { durationContext } from "./durationContext.js";
|
|
3
3
|
import { loopContext, playingContext } from "./playingContext.js";
|
|
4
4
|
import { __decorate } from "../_virtual/_@oxc-project_runtime@0.94.0/helpers/decorate.js";
|
|
5
|
+
import { isEFTemporal } from "../elements/EFTemporal.js";
|
|
5
6
|
import { efContext } from "./efContext.js";
|
|
6
7
|
import { focusContext } from "./focusContext.js";
|
|
7
8
|
import { focusedElementContext } from "./focusedElementContext.js";
|
|
8
9
|
import { targetTemporalContext } from "./ContextMixin.js";
|
|
9
10
|
import { TargetController } from "../elements/TargetController.js";
|
|
11
|
+
import { createDirectTemporalSubscription, determineTargetType } from "./Controllable.js";
|
|
10
12
|
import { attachContextRoot } from "../attachContextRoot.js";
|
|
11
13
|
import { createContext, provide } from "@lit/context";
|
|
12
14
|
import { LitElement, css } from "lit";
|
|
@@ -59,23 +61,117 @@ let EFControls = class EFControls$1 extends LitElement {
|
|
|
59
61
|
return this;
|
|
60
62
|
}
|
|
61
63
|
#targetController = new TargetController(this);
|
|
62
|
-
#
|
|
64
|
+
#contextUnsubscribeMap = /* @__PURE__ */ new Map();
|
|
65
|
+
#directTemporalSubscription = null;
|
|
63
66
|
#unsubscribe() {
|
|
64
|
-
|
|
65
|
-
this.#
|
|
67
|
+
this.#subscribeAbortController?.abort();
|
|
68
|
+
this.#subscribeAbortController = null;
|
|
69
|
+
for (const unsubscribe of this.#contextUnsubscribeMap.values()) unsubscribe();
|
|
70
|
+
this.#contextUnsubscribeMap.clear();
|
|
71
|
+
if (this.#directTemporalSubscription) {
|
|
72
|
+
this.#directTemporalSubscription.unsubscribe();
|
|
73
|
+
this.#directTemporalSubscription = null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
#subscribeAbortController = null;
|
|
77
|
+
#subscribe() {
|
|
78
|
+
if (!this.targetElement) return;
|
|
79
|
+
this.#subscribeAbortController?.abort();
|
|
80
|
+
this.#subscribeAbortController = new AbortController();
|
|
81
|
+
switch (determineTargetType(this.targetElement)) {
|
|
82
|
+
case "context-provider":
|
|
83
|
+
this.#subscribeToContextProvider();
|
|
84
|
+
break;
|
|
85
|
+
case "direct-temporal":
|
|
86
|
+
this.#subscribeToDirectTemporal();
|
|
87
|
+
break;
|
|
88
|
+
case "none":
|
|
89
|
+
this.#waitForTemporalToInitialize();
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Wait for a temporal element to initialize its playbackController.
|
|
95
|
+
* This handles the case where we target a temporal element before it has
|
|
96
|
+
* completed initialization and created its playbackController.
|
|
97
|
+
*
|
|
98
|
+
* Note: playbackController is created in EFTemporal's connectedCallback via
|
|
99
|
+
* `this.updateComplete.then(() => this.didBecomeRoot())`, so we need to wait
|
|
100
|
+
* past updateComplete for the .then() callback to run.
|
|
101
|
+
*/
|
|
102
|
+
async #waitForTemporalToInitialize() {
|
|
103
|
+
if (!this.targetElement || !isEFTemporal(this.targetElement)) return;
|
|
104
|
+
const temporal = this.targetElement;
|
|
105
|
+
const signal = this.#subscribeAbortController?.signal;
|
|
106
|
+
await temporal.updateComplete;
|
|
107
|
+
if (signal?.aborted) return;
|
|
108
|
+
if (!temporal.playbackController) {
|
|
109
|
+
await new Promise((resolve) => requestAnimationFrame(resolve));
|
|
110
|
+
if (signal?.aborted) return;
|
|
111
|
+
await temporal.updateComplete;
|
|
112
|
+
if (signal?.aborted) return;
|
|
113
|
+
}
|
|
114
|
+
if (temporal.playbackController) this.#subscribeToDirectTemporal();
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Subscribe to a context-providing target (like EFPreview).
|
|
118
|
+
* Uses Lit Context dispatch mechanism.
|
|
119
|
+
*/
|
|
120
|
+
#subscribeToContextProvider() {
|
|
121
|
+
if (!this.targetElement) return;
|
|
122
|
+
for (const [callback, context] of proxiedContexts) {
|
|
123
|
+
const event = new ContextRequestEvent(context, this, (value, unsubscribe) => {
|
|
124
|
+
callback(this, value);
|
|
125
|
+
this.#contextUnsubscribeMap.set(context, unsubscribe);
|
|
126
|
+
}, true);
|
|
127
|
+
this.targetElement.dispatchEvent(event);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Subscribe to a direct temporal element's playback controller.
|
|
132
|
+
* Used when targeting ef-timegroup, ef-video, ef-audio directly without ef-preview wrapper.
|
|
133
|
+
*/
|
|
134
|
+
async #subscribeToDirectTemporal() {
|
|
135
|
+
if (!this.targetElement || !isEFTemporal(this.targetElement)) return;
|
|
136
|
+
const temporal = this.targetElement;
|
|
137
|
+
const signal = this.#subscribeAbortController?.signal;
|
|
138
|
+
await temporal.updateComplete;
|
|
139
|
+
if (signal?.aborted) return;
|
|
140
|
+
if (!temporal.playbackController) {
|
|
141
|
+
await new Promise((resolve) => requestAnimationFrame(resolve));
|
|
142
|
+
if (signal?.aborted) return;
|
|
143
|
+
await temporal.updateComplete;
|
|
144
|
+
if (signal?.aborted) return;
|
|
145
|
+
}
|
|
146
|
+
if (!temporal.playbackController) return;
|
|
147
|
+
this.#directTemporalSubscription = createDirectTemporalSubscription(temporal, {
|
|
148
|
+
onPlayingChange: (value) => {
|
|
149
|
+
this.playing = value;
|
|
150
|
+
},
|
|
151
|
+
onLoopChange: (value) => {
|
|
152
|
+
this.loop = value;
|
|
153
|
+
},
|
|
154
|
+
onCurrentTimeMsChange: (value) => {
|
|
155
|
+
this.currentTimeMs = value;
|
|
156
|
+
},
|
|
157
|
+
onDurationMsChange: (value) => {
|
|
158
|
+
this.durationMs = value;
|
|
159
|
+
},
|
|
160
|
+
onTargetTemporalChange: (value) => {
|
|
161
|
+
this.targetTemporal = value;
|
|
162
|
+
},
|
|
163
|
+
onFocusedElementChange: (value) => {
|
|
164
|
+
this.focusedElement = value;
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
#resubscribe() {
|
|
169
|
+
this.#unsubscribe();
|
|
170
|
+
this.#subscribe();
|
|
66
171
|
}
|
|
67
172
|
updated(changedProperties) {
|
|
68
173
|
super.updated(changedProperties);
|
|
69
|
-
if (changedProperties.has("targetElement"))
|
|
70
|
-
this.#unsubscribe();
|
|
71
|
-
if (this.targetElement) for (const [callback, context] of proxiedContexts) {
|
|
72
|
-
const event = new ContextRequestEvent(context, this, (value, unsubscribe) => {
|
|
73
|
-
callback(this, value);
|
|
74
|
-
this.#proxyUnsubscribeMap.set(context, unsubscribe);
|
|
75
|
-
}, true);
|
|
76
|
-
this.targetElement.dispatchEvent(event);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
174
|
+
if (changedProperties.has("targetElement")) this.#resubscribe();
|
|
79
175
|
}
|
|
80
176
|
disconnectedCallback() {
|
|
81
177
|
super.disconnectedCallback();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EFControls.js","names":["EFControls","#proxyUnsubscribeMap","#unsubscribe"],"sources":["../../src/gui/EFControls.ts"],"sourcesContent":["import { type Context, createContext, provide } from \"@lit/context\";\nimport { css, LitElement, type PropertyValueMap } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { attachContextRoot } from \"../attachContextRoot.js\";\nimport type { TemporalMixinInterface } from \"../elements/EFTemporal.js\";\nimport { TargetController } from \"../elements/TargetController.js\";\nimport { targetTemporalContext } from \"./ContextMixin.js\";\nimport type { ControllableInterface } from \"./Controllable.js\";\nimport { currentTimeContext } from \"./currentTimeContext.js\";\nimport { durationContext } from \"./durationContext.js\";\nimport { efContext } from \"./efContext.js\";\nimport { type FocusContext, focusContext } from \"./focusContext.js\";\nimport { focusedElementContext } from \"./focusedElementContext.js\";\nimport { loopContext, playingContext } from \"./playingContext.js\";\n\nattachContextRoot();\n\nclass ContextRequestEvent extends Event {\n context: Context<any, any>;\n contextTarget: Element;\n callback: (proxy: EFControls, value: any) => void;\n subscribe: boolean;\n\n constructor(\n context: Context<any, any>,\n contextTarget: Element,\n callback: (proxy: EFControls, value: any) => void,\n subscribe: boolean,\n ) {\n super(\"context-request\", { bubbles: true, composed: true });\n this.context = context;\n this.contextTarget = contextTarget;\n this.callback = callback;\n this.subscribe = subscribe ?? false;\n }\n}\n\nconst proxiedContexts = [\n [\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy: EFControls, value: boolean) => (proxy.playing = value),\n playingContext,\n ],\n [\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy: EFControls, value: boolean) => (proxy.loop = value),\n loopContext,\n ],\n [\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy: EFControls, value: number) => (proxy.currentTimeMs = value),\n currentTimeContext,\n ],\n [\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy: EFControls, value: number) => (proxy.durationMs = value),\n durationContext,\n ],\n [\n (proxy: EFControls, value: TemporalMixinInterface) =>\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy.targetTemporal = value),\n targetTemporalContext,\n ],\n [\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy: EFControls, value: HTMLElement) => (proxy.focusedElement = value),\n focusedElementContext,\n ],\n [\n (proxy: EFControls, value: HTMLElement) =>\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy.focusContext.focusedElement = value),\n focusContext,\n ],\n] as const;\n\nexport const testContext = createContext<string | null>(\"test\");\n\n/**\n * EFControls provides a way to control an ef-preview element that is not a direct ancestor.\n * It bridges the contexts from a target preview element to its children controls.\n *\n * Usage:\n * ```html\n * <ef-preview id=\"my-preview\">...</ef-preview>\n *\n * <ef-controls target=\"my-preview\">\n * <ef-toggle-play>\n * <button slot=\"play\">Play</button>\n * <button slot=\"pause\">Pause</button>\n * </ef-toggle-play>\n * <ef-scrubber></ef-scrubber>\n * <ef-time-display></ef-time-display>\n * </ef-controls>\n * ```\n */\n@customElement(\"ef-controls\")\nexport class EFControls extends LitElement {\n static styles = css`\n :host {\n display: block;\n }\n `;\n\n createRenderRoot() {\n return this;\n }\n\n /**\n * The ID of the ef-preview element to control\n */\n @property({ type: String })\n target = \"\";\n\n /**\n * The target element (set by TargetController)\n */\n @provide({ context: efContext })\n @state()\n targetElement: ControllableInterface | null = null;\n\n @provide({ context: playingContext })\n @state()\n playing = false;\n\n @provide({ context: loopContext })\n @state()\n loop = false;\n\n @provide({ context: currentTimeContext })\n @state()\n currentTimeMs = 0;\n\n @provide({ context: durationContext })\n @state()\n durationMs = 0;\n\n @provide({ context: targetTemporalContext })\n @state()\n targetTemporal: TemporalMixinInterface | null = null;\n\n @provide({ context: focusedElementContext })\n @state()\n focusedElement?: HTMLElement;\n\n @provide({ context: focusContext })\n focusContext = this as FocusContext;\n\n // @ts-expect-error controller is intentionally not referenced directly\n // biome-ignore lint/correctness/noUnusedPrivateClassMembers: Used for side effects\n #targetController = new TargetController(this);\n\n #proxyUnsubscribeMap = new Map<Context<any, any>, () => void>();\n\n #unsubscribe() {\n for (const unsubscribe of this.#proxyUnsubscribeMap.values()) {\n unsubscribe();\n }\n this.#proxyUnsubscribeMap.clear();\n }\n\n updated(changedProperties: PropertyValueMap<this>) {\n super.updated(changedProperties);\n if (changedProperties.has(\"targetElement\")) {\n this.#unsubscribe();\n\n if (this.targetElement) {\n for (const [callback, context] of proxiedContexts) {\n const event = new ContextRequestEvent(\n context,\n this,\n (value, unsubscribe) => {\n callback(this, value as never);\n this.#proxyUnsubscribeMap.set(context, unsubscribe);\n },\n true,\n );\n this.targetElement.dispatchEvent(event);\n }\n }\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.#unsubscribe();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-controls\": EFControls;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAeA,mBAAmB;AAEnB,IAAM,sBAAN,cAAkC,MAAM;CAMtC,YACE,SACA,eACA,UACA,WACA;AACA,QAAM,mBAAmB;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC;AAC3D,OAAK,UAAU;AACf,OAAK,gBAAgB;AACrB,OAAK,WAAW;AAChB,OAAK,YAAY,aAAa;;;AAIlC,MAAM,kBAAkB;CACtB,EAEG,OAAmB,UAAoB,MAAM,UAAU,OACxD,eACD;CACD,EAEG,OAAmB,UAAoB,MAAM,OAAO,OACrD,YACD;CACD,EAEG,OAAmB,UAAmB,MAAM,gBAAgB,OAC7D,mBACD;CACD,EAEG,OAAmB,UAAmB,MAAM,aAAa,OAC1D,gBACD;CACD,EACG,OAAmB,UAEjB,MAAM,iBAAiB,OAC1B,sBACD;CACD,EAEG,OAAmB,UAAwB,MAAM,iBAAiB,OACnE,sBACD;CACD,EACG,OAAmB,UAEjB,MAAM,aAAa,iBAAiB,OACvC,aACD;CACF;AAED,MAAa,cAAc,cAA6B,OAAO;AAqBxD,uBAAMA,qBAAmB,WAAW;;;gBAehC;uBAOqC;iBAIpC;cAIH;uBAIS;oBAIH;wBAImC;sBAOjC;;;gBAhDC,GAAG;;;;;;CAMnB,mBAAmB;AACjB,SAAO;;CA6CT,oBAAoB,IAAI,iBAAiB,KAAK;CAE9C,uCAAuB,IAAI,KAAoC;CAE/D,eAAe;AACb,OAAK,MAAM,eAAe,MAAKC,oBAAqB,QAAQ,CAC1D,cAAa;AAEf,QAAKA,oBAAqB,OAAO;;CAGnC,QAAQ,mBAA2C;AACjD,QAAM,QAAQ,kBAAkB;AAChC,MAAI,kBAAkB,IAAI,gBAAgB,EAAE;AAC1C,SAAKC,aAAc;AAEnB,OAAI,KAAK,cACP,MAAK,MAAM,CAAC,UAAU,YAAY,iBAAiB;IACjD,MAAM,QAAQ,IAAI,oBAChB,SACA,OACC,OAAO,gBAAgB;AACtB,cAAS,MAAM,MAAe;AAC9B,WAAKD,oBAAqB,IAAI,SAAS,YAAY;OAErD,KACD;AACD,SAAK,cAAc,cAAc,MAAM;;;;CAM/C,uBAAuB;AACrB,QAAM,sBAAsB;AAC5B,QAAKC,aAAc;;;YA1EpB,SAAS,EAAE,MAAM,QAAQ,CAAC;YAM1B,QAAQ,EAAE,SAAS,WAAW,CAAC,EAC/B,OAAO;YAGP,QAAQ,EAAE,SAAS,gBAAgB,CAAC,EACpC,OAAO;YAGP,QAAQ,EAAE,SAAS,aAAa,CAAC,EACjC,OAAO;YAGP,QAAQ,EAAE,SAAS,oBAAoB,CAAC,EACxC,OAAO;YAGP,QAAQ,EAAE,SAAS,iBAAiB,CAAC,EACrC,OAAO;YAGP,QAAQ,EAAE,SAAS,uBAAuB,CAAC,EAC3C,OAAO;YAGP,QAAQ,EAAE,SAAS,uBAAuB,CAAC,EAC3C,OAAO;YAGP,QAAQ,EAAE,SAAS,cAAc,CAAC;yBAjDpC,cAAc,cAAc"}
|
|
1
|
+
{"version":3,"file":"EFControls.js","names":["EFControls","#subscribeAbortController","#contextUnsubscribeMap","#directTemporalSubscription","#subscribeToContextProvider","#subscribeToDirectTemporal","#waitForTemporalToInitialize","#unsubscribe","#subscribe","#resubscribe"],"sources":["../../src/gui/EFControls.ts"],"sourcesContent":["import { type Context, createContext, provide } from \"@lit/context\";\nimport { css, LitElement, type PropertyValueMap } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { attachContextRoot } from \"../attachContextRoot.js\";\nimport { isEFTemporal, type TemporalMixinInterface } from \"../elements/EFTemporal.js\";\nimport { TargetController } from \"../elements/TargetController.js\";\nimport { targetTemporalContext } from \"./ContextMixin.js\";\nimport {\n type ControllableInterface,\n type ControllableSubscription,\n createDirectTemporalSubscription,\n determineTargetType,\n} from \"./Controllable.js\";\nimport { currentTimeContext } from \"./currentTimeContext.js\";\nimport { durationContext } from \"./durationContext.js\";\nimport { efContext } from \"./efContext.js\";\nimport { type FocusContext, focusContext } from \"./focusContext.js\";\nimport { focusedElementContext } from \"./focusedElementContext.js\";\nimport { loopContext, playingContext } from \"./playingContext.js\";\n\nattachContextRoot();\n\nclass ContextRequestEvent extends Event {\n context: Context<any, any>;\n contextTarget: Element;\n callback: (proxy: EFControls, value: any) => void;\n subscribe: boolean;\n\n constructor(\n context: Context<any, any>,\n contextTarget: Element,\n callback: (proxy: EFControls, value: any) => void,\n subscribe: boolean,\n ) {\n super(\"context-request\", { bubbles: true, composed: true });\n this.context = context;\n this.contextTarget = contextTarget;\n this.callback = callback;\n this.subscribe = subscribe ?? false;\n }\n}\n\nconst proxiedContexts = [\n [\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy: EFControls, value: boolean) => (proxy.playing = value),\n playingContext,\n ],\n [\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy: EFControls, value: boolean) => (proxy.loop = value),\n loopContext,\n ],\n [\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy: EFControls, value: number) => (proxy.currentTimeMs = value),\n currentTimeContext,\n ],\n [\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy: EFControls, value: number) => (proxy.durationMs = value),\n durationContext,\n ],\n [\n (proxy: EFControls, value: TemporalMixinInterface) =>\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy.targetTemporal = value),\n targetTemporalContext,\n ],\n [\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy: EFControls, value: HTMLElement) => (proxy.focusedElement = value),\n focusedElementContext,\n ],\n [\n (proxy: EFControls, value: HTMLElement) =>\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy.focusContext.focusedElement = value),\n focusContext,\n ],\n] as const;\n\nexport const testContext = createContext<string | null>(\"test\");\n\n/**\n * EFControls provides a way to control an ef-preview element that is not a direct ancestor.\n * It bridges the contexts from a target preview element to its children controls.\n *\n * Usage:\n * ```html\n * <ef-preview id=\"my-preview\">...</ef-preview>\n *\n * <ef-controls target=\"my-preview\">\n * <ef-toggle-play>\n * <button slot=\"play\">Play</button>\n * <button slot=\"pause\">Pause</button>\n * </ef-toggle-play>\n * <ef-scrubber></ef-scrubber>\n * <ef-time-display></ef-time-display>\n * </ef-controls>\n * ```\n */\n@customElement(\"ef-controls\")\nexport class EFControls extends LitElement {\n static styles = css`\n :host {\n display: block;\n }\n `;\n\n createRenderRoot() {\n return this;\n }\n\n /**\n * The ID of the ef-preview element to control\n */\n @property({ type: String })\n target = \"\";\n\n /**\n * The target element (set by TargetController)\n */\n @provide({ context: efContext })\n @state()\n targetElement: ControllableInterface | null = null;\n\n @provide({ context: playingContext })\n @state()\n playing = false;\n\n @provide({ context: loopContext })\n @state()\n loop = false;\n\n @provide({ context: currentTimeContext })\n @state()\n currentTimeMs = 0;\n\n @provide({ context: durationContext })\n @state()\n durationMs = 0;\n\n @provide({ context: targetTemporalContext })\n @state()\n targetTemporal: TemporalMixinInterface | null = null;\n\n @provide({ context: focusedElementContext })\n @state()\n focusedElement?: HTMLElement;\n\n @provide({ context: focusContext })\n focusContext = this as FocusContext;\n\n // @ts-expect-error controller is intentionally not referenced directly\n // biome-ignore lint/correctness/noUnusedPrivateClassMembers: Used for side effects\n #targetController = new TargetController(this);\n\n // Subscription tracking for different target types\n #contextUnsubscribeMap = new Map<Context<any, any>, () => void>();\n #directTemporalSubscription: ControllableSubscription | null = null;\n\n #unsubscribe() {\n // Abort any pending async subscription attempts\n this.#subscribeAbortController?.abort();\n this.#subscribeAbortController = null;\n\n // Unsubscribe from context-provider subscriptions\n for (const unsubscribe of this.#contextUnsubscribeMap.values()) {\n unsubscribe();\n }\n this.#contextUnsubscribeMap.clear();\n\n // Unsubscribe from direct-temporal subscription\n if (this.#directTemporalSubscription) {\n this.#directTemporalSubscription.unsubscribe();\n this.#directTemporalSubscription = null;\n }\n\n // Note: We don't reset state here because:\n // 1. During resubscribe, the new subscription will immediately provide values\n // 2. During disconnect, the element is being removed anyway\n // Resetting state would cause race conditions with context consumers\n }\n\n #subscribeAbortController: AbortController | null = null;\n\n #subscribe() {\n if (!this.targetElement) return;\n\n // Cancel any pending async subscription\n this.#subscribeAbortController?.abort();\n this.#subscribeAbortController = new AbortController();\n\n const targetType = determineTargetType(this.targetElement);\n\n switch (targetType) {\n case \"context-provider\":\n this.#subscribeToContextProvider();\n break;\n case \"direct-temporal\":\n this.#subscribeToDirectTemporal();\n break;\n case \"none\":\n // Target might be a temporal that hasn't initialized yet\n // Try to wait for it to become controllable\n this.#waitForTemporalToInitialize();\n break;\n }\n }\n\n /**\n * Wait for a temporal element to initialize its playbackController.\n * This handles the case where we target a temporal element before it has\n * completed initialization and created its playbackController.\n * \n * Note: playbackController is created in EFTemporal's connectedCallback via\n * `this.updateComplete.then(() => this.didBecomeRoot())`, so we need to wait\n * past updateComplete for the .then() callback to run.\n */\n async #waitForTemporalToInitialize() {\n if (!this.targetElement || !isEFTemporal(this.targetElement)) return;\n\n const temporal = this.targetElement as TemporalMixinInterface & HTMLElement;\n const signal = this.#subscribeAbortController?.signal;\n\n // Wait for the element to finish its update cycle\n await temporal.updateComplete;\n if (signal?.aborted) return;\n\n // playbackController is created in a .then() callback after updateComplete,\n // so we need to wait for that microtask to complete\n if (!temporal.playbackController) {\n await new Promise((resolve) => requestAnimationFrame(resolve));\n if (signal?.aborted) return;\n await temporal.updateComplete;\n if (signal?.aborted) return;\n }\n\n // Check again if it now has a playbackController\n if (temporal.playbackController) {\n this.#subscribeToDirectTemporal();\n }\n }\n\n /**\n * Subscribe to a context-providing target (like EFPreview).\n * Uses Lit Context dispatch mechanism.\n */\n #subscribeToContextProvider() {\n if (!this.targetElement) return;\n\n for (const [callback, context] of proxiedContexts) {\n const event = new ContextRequestEvent(\n context,\n this,\n (value, unsubscribe) => {\n callback(this, value as never);\n this.#contextUnsubscribeMap.set(context, unsubscribe);\n },\n true,\n );\n this.targetElement.dispatchEvent(event);\n }\n }\n\n /**\n * Subscribe to a direct temporal element's playback controller.\n * Used when targeting ef-timegroup, ef-video, ef-audio directly without ef-preview wrapper.\n */\n async #subscribeToDirectTemporal() {\n if (!this.targetElement || !isEFTemporal(this.targetElement)) return;\n\n const temporal = this.targetElement as TemporalMixinInterface & HTMLElement;\n const signal = this.#subscribeAbortController?.signal;\n\n // Wait for the temporal element to complete initialization\n // This ensures playbackController exists\n await temporal.updateComplete;\n if (signal?.aborted) return;\n\n // If playbackController still doesn't exist, the element might need another update cycle\n if (!temporal.playbackController) {\n // Wait one more frame for didBecomeRoot to create the controller\n await new Promise((resolve) => requestAnimationFrame(resolve));\n if (signal?.aborted) return;\n await temporal.updateComplete;\n if (signal?.aborted) return;\n }\n\n if (!temporal.playbackController) {\n // Still no controller - this element is likely a nested temporal\n return;\n }\n\n this.#directTemporalSubscription = createDirectTemporalSubscription(\n temporal,\n {\n onPlayingChange: (value) => {\n this.playing = value;\n },\n onLoopChange: (value) => {\n this.loop = value;\n },\n onCurrentTimeMsChange: (value) => {\n this.currentTimeMs = value;\n },\n onDurationMsChange: (value) => {\n this.durationMs = value;\n },\n onTargetTemporalChange: (value) => {\n this.targetTemporal = value;\n },\n onFocusedElementChange: (value) => {\n this.focusedElement = value;\n },\n },\n );\n }\n\n #resubscribe() {\n this.#unsubscribe();\n this.#subscribe();\n }\n updated(changedProperties: PropertyValueMap<this>) {\n super.updated(changedProperties);\n if (changedProperties.has(\"targetElement\")) {\n this.#resubscribe();\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.#unsubscribe();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-controls\": EFControls;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAoBA,mBAAmB;AAEnB,IAAM,sBAAN,cAAkC,MAAM;CAMtC,YACE,SACA,eACA,UACA,WACA;AACA,QAAM,mBAAmB;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC;AAC3D,OAAK,UAAU;AACf,OAAK,gBAAgB;AACrB,OAAK,WAAW;AAChB,OAAK,YAAY,aAAa;;;AAIlC,MAAM,kBAAkB;CACtB,EAEG,OAAmB,UAAoB,MAAM,UAAU,OACxD,eACD;CACD,EAEG,OAAmB,UAAoB,MAAM,OAAO,OACrD,YACD;CACD,EAEG,OAAmB,UAAmB,MAAM,gBAAgB,OAC7D,mBACD;CACD,EAEG,OAAmB,UAAmB,MAAM,aAAa,OAC1D,gBACD;CACD,EACG,OAAmB,UAEjB,MAAM,iBAAiB,OAC1B,sBACD;CACD,EAEG,OAAmB,UAAwB,MAAM,iBAAiB,OACnE,sBACD;CACD,EACG,OAAmB,UAEjB,MAAM,aAAa,iBAAiB,OACvC,aACD;CACF;AAED,MAAa,cAAc,cAA6B,OAAO;AAqBxD,uBAAMA,qBAAmB,WAAW;;;gBAehC;uBAOqC;iBAIpC;cAIH;uBAIS;oBAIH;wBAImC;sBAOjC;;;gBAhDC,GAAG;;;;;;CAMnB,mBAAmB;AACjB,SAAO;;CA6CT,oBAAoB,IAAI,iBAAiB,KAAK;CAG9C,yCAAyB,IAAI,KAAoC;CACjE,8BAA+D;CAE/D,eAAe;AAEb,QAAKC,0BAA2B,OAAO;AACvC,QAAKA,2BAA4B;AAGjC,OAAK,MAAM,eAAe,MAAKC,sBAAuB,QAAQ,CAC5D,cAAa;AAEf,QAAKA,sBAAuB,OAAO;AAGnC,MAAI,MAAKC,4BAA6B;AACpC,SAAKA,2BAA4B,aAAa;AAC9C,SAAKA,6BAA8B;;;CASvC,4BAAoD;CAEpD,aAAa;AACX,MAAI,CAAC,KAAK,cAAe;AAGzB,QAAKF,0BAA2B,OAAO;AACvC,QAAKA,2BAA4B,IAAI,iBAAiB;AAItD,UAFmB,oBAAoB,KAAK,cAAc,EAE1D;GACE,KAAK;AACH,UAAKG,4BAA6B;AAClC;GACF,KAAK;AACH,UAAKC,2BAA4B;AACjC;GACF,KAAK;AAGH,UAAKC,6BAA8B;AACnC;;;;;;;;;;;;CAaN,OAAMA,8BAA+B;AACnC,MAAI,CAAC,KAAK,iBAAiB,CAAC,aAAa,KAAK,cAAc,CAAE;EAE9D,MAAM,WAAW,KAAK;EACtB,MAAM,SAAS,MAAKL,0BAA2B;AAG/C,QAAM,SAAS;AACf,MAAI,QAAQ,QAAS;AAIrB,MAAI,CAAC,SAAS,oBAAoB;AAChC,SAAM,IAAI,SAAS,YAAY,sBAAsB,QAAQ,CAAC;AAC9D,OAAI,QAAQ,QAAS;AACrB,SAAM,SAAS;AACf,OAAI,QAAQ,QAAS;;AAIvB,MAAI,SAAS,mBACX,OAAKI,2BAA4B;;;;;;CAQrC,8BAA8B;AAC5B,MAAI,CAAC,KAAK,cAAe;AAEzB,OAAK,MAAM,CAAC,UAAU,YAAY,iBAAiB;GACjD,MAAM,QAAQ,IAAI,oBAChB,SACA,OACC,OAAO,gBAAgB;AACtB,aAAS,MAAM,MAAe;AAC9B,UAAKH,sBAAuB,IAAI,SAAS,YAAY;MAEvD,KACD;AACD,QAAK,cAAc,cAAc,MAAM;;;;;;;CAQ3C,OAAMG,4BAA6B;AACjC,MAAI,CAAC,KAAK,iBAAiB,CAAC,aAAa,KAAK,cAAc,CAAE;EAE9D,MAAM,WAAW,KAAK;EACtB,MAAM,SAAS,MAAKJ,0BAA2B;AAI/C,QAAM,SAAS;AACf,MAAI,QAAQ,QAAS;AAGrB,MAAI,CAAC,SAAS,oBAAoB;AAEhC,SAAM,IAAI,SAAS,YAAY,sBAAsB,QAAQ,CAAC;AAC9D,OAAI,QAAQ,QAAS;AACrB,SAAM,SAAS;AACf,OAAI,QAAQ,QAAS;;AAGvB,MAAI,CAAC,SAAS,mBAEZ;AAGF,QAAKE,6BAA8B,iCACjC,UACA;GACE,kBAAkB,UAAU;AAC1B,SAAK,UAAU;;GAEjB,eAAe,UAAU;AACvB,SAAK,OAAO;;GAEd,wBAAwB,UAAU;AAChC,SAAK,gBAAgB;;GAEvB,qBAAqB,UAAU;AAC7B,SAAK,aAAa;;GAEpB,yBAAyB,UAAU;AACjC,SAAK,iBAAiB;;GAExB,yBAAyB,UAAU;AACjC,SAAK,iBAAiB;;GAEzB,CACF;;CAGH,eAAe;AACb,QAAKI,aAAc;AACnB,QAAKC,WAAY;;CAEnB,QAAQ,mBAA2C;AACjD,QAAM,QAAQ,kBAAkB;AAChC,MAAI,kBAAkB,IAAI,gBAAgB,CACxC,OAAKC,aAAc;;CAIvB,uBAAuB;AACrB,QAAM,sBAAsB;AAC5B,QAAKF,aAAc;;;YAxNpB,SAAS,EAAE,MAAM,QAAQ,CAAC;YAM1B,QAAQ,EAAE,SAAS,WAAW,CAAC,EAC/B,OAAO;YAGP,QAAQ,EAAE,SAAS,gBAAgB,CAAC,EACpC,OAAO;YAGP,QAAQ,EAAE,SAAS,aAAa,CAAC,EACjC,OAAO;YAGP,QAAQ,EAAE,SAAS,oBAAoB,CAAC,EACxC,OAAO;YAGP,QAAQ,EAAE,SAAS,iBAAiB,CAAC,EACrC,OAAO;YAGP,QAAQ,EAAE,SAAS,uBAAuB,CAAC,EAC3C,OAAO;YAGP,QAAQ,EAAE,SAAS,uBAAuB,CAAC,EAC3C,OAAO;YAGP,QAAQ,EAAE,SAAS,cAAc,CAAC;yBAjDpC,cAAc,cAAc"}
|
package/dist/gui/EFDial.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as lit25 from "lit";
|
|
2
2
|
import { LitElement } from "lit";
|
|
3
|
-
import * as
|
|
3
|
+
import * as lit_html25 from "lit-html";
|
|
4
4
|
|
|
5
5
|
//#region src/gui/EFDial.d.ts
|
|
6
6
|
interface DialChangeDetail {
|
|
@@ -13,12 +13,12 @@ declare class EFDial extends LitElement {
|
|
|
13
13
|
private isDragging;
|
|
14
14
|
private dragStartAngle;
|
|
15
15
|
private dragStartValue;
|
|
16
|
-
static styles:
|
|
16
|
+
static styles: lit25.CSSResult;
|
|
17
17
|
private getAngleFromPoint;
|
|
18
18
|
private handlePointerDown;
|
|
19
19
|
private handlePointerMove;
|
|
20
20
|
private handlePointerUp;
|
|
21
|
-
render():
|
|
21
|
+
render(): lit_html25.TemplateResult<1>;
|
|
22
22
|
}
|
|
23
23
|
//#endregion
|
|
24
24
|
export { DialChangeDetail, EFDial };
|
|
@@ -1,234 +1,31 @@
|
|
|
1
1
|
import { TemporalMixinInterface } from "../elements/EFTemporal.js";
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import { EFAudio } from "../elements/EFAudio.js";
|
|
5
|
-
import { EFVideo } from "../elements/EFVideo.js";
|
|
6
|
-
import { Caption } from "../elements/EFCaptions.js";
|
|
7
|
-
import { EFTextSegment } from "../elements/EFTextSegment.js";
|
|
8
|
-
import { TimegroupController } from "../elements/TimegroupController.js";
|
|
9
|
-
import { FocusContext } from "./focusContext.js";
|
|
10
|
-
import * as lit15 from "lit";
|
|
11
|
-
import { LitElement, PropertyValueMap, ReactiveController, TemplateResult, nothing } from "lit";
|
|
2
|
+
import { LitElement } from "lit";
|
|
3
|
+
import * as lit_html14 from "lit-html";
|
|
12
4
|
import * as lit_html_directives_ref0 from "lit-html/directives/ref";
|
|
13
5
|
|
|
14
6
|
//#region src/gui/EFFilmstrip.d.ts
|
|
15
|
-
declare class ElementFilmstripController implements ReactiveController {
|
|
16
|
-
private host;
|
|
17
|
-
private filmstrip;
|
|
18
|
-
constructor(host: LitElement, filmstrip: FilmstripItem);
|
|
19
|
-
remove(): void;
|
|
20
|
-
hostDisconnected(): void;
|
|
21
|
-
hostUpdated(): void;
|
|
22
|
-
}
|
|
23
|
-
declare const FilmstripItem_base: typeof LitElement;
|
|
24
|
-
declare class FilmstripItem extends FilmstripItem_base {
|
|
25
|
-
static styles: lit15.CSSResult[];
|
|
26
|
-
focusContext?: FocusContext;
|
|
27
|
-
focusedElement?: HTMLElement | null;
|
|
28
|
-
get isFocused(): boolean;
|
|
29
|
-
element: TemporalMixinInterface & LitElement;
|
|
30
|
-
pixelsPerMs: number;
|
|
31
|
-
get gutterStyles(): {
|
|
32
|
-
position: string;
|
|
33
|
-
left: string;
|
|
34
|
-
width: string;
|
|
35
|
-
};
|
|
36
|
-
get trimPortionStyles(): {
|
|
37
|
-
width: string;
|
|
38
|
-
left: string;
|
|
39
|
-
};
|
|
40
|
-
render(): TemplateResult<1>;
|
|
41
|
-
renderChildren(): Array<TemplateResult<1> | typeof nothing> | typeof nothing;
|
|
42
|
-
hideSelectors?: string[];
|
|
43
|
-
showSelectors?: string[];
|
|
44
|
-
contents(): TemplateResult<1>;
|
|
45
|
-
animations(): (TemplateResult<1> | typeof nothing)[];
|
|
46
|
-
protected filmstripController?: ElementFilmstripController;
|
|
47
|
-
update(changedProperties: Map<string | number | symbol, unknown>): void;
|
|
48
|
-
}
|
|
49
|
-
declare class EFAudioFilmstrip extends FilmstripItem {
|
|
50
|
-
contents(): TemplateResult<1>;
|
|
51
|
-
}
|
|
52
|
-
declare class EFVideoFilmstrip extends FilmstripItem {
|
|
53
|
-
contents(): TemplateResult<1>;
|
|
54
|
-
}
|
|
55
|
-
declare class EFCaptionsFilmstrip extends FilmstripItem {
|
|
56
|
-
render(): TemplateResult<1>;
|
|
57
|
-
renderCaptionsData(captionsData: Caption | null | undefined): TemplateResult<1>;
|
|
58
|
-
renderChildren(): Array<TemplateResult<1> | typeof nothing> | typeof nothing;
|
|
59
|
-
}
|
|
60
|
-
declare class EFCaptionsActiveWordFilmstrip extends FilmstripItem {
|
|
61
|
-
get captionsTrackStyles(): {
|
|
62
|
-
position: string;
|
|
63
|
-
left: string;
|
|
64
|
-
width: string;
|
|
65
|
-
};
|
|
66
|
-
render(): TemplateResult<1>;
|
|
67
|
-
}
|
|
68
|
-
declare class EFCaptionsSegmentFilmstrip extends FilmstripItem {
|
|
69
|
-
get captionsTrackStyles(): {
|
|
70
|
-
position: string;
|
|
71
|
-
left: string;
|
|
72
|
-
width: string;
|
|
73
|
-
};
|
|
74
|
-
render(): TemplateResult<1>;
|
|
75
|
-
}
|
|
76
|
-
declare class EFCaptionsBeforeWordFilmstrip extends FilmstripItem {
|
|
77
|
-
get captionsTrackStyles(): {
|
|
78
|
-
position: string;
|
|
79
|
-
left: string;
|
|
80
|
-
width: string;
|
|
81
|
-
};
|
|
82
|
-
render(): TemplateResult<1>;
|
|
83
|
-
}
|
|
84
|
-
declare class EFCaptionsAfterWordFilmstrip extends FilmstripItem {
|
|
85
|
-
get captionsTrackStyles(): {
|
|
86
|
-
position: string;
|
|
87
|
-
left: string;
|
|
88
|
-
width: string;
|
|
89
|
-
};
|
|
90
|
-
render(): TemplateResult<1>;
|
|
91
|
-
}
|
|
92
|
-
declare class EFWaveformFilmstrip extends FilmstripItem {
|
|
93
|
-
contents(): TemplateResult<1>;
|
|
94
|
-
renderChildren(): typeof nothing;
|
|
95
|
-
}
|
|
96
|
-
declare class EFTextFilmstrip extends FilmstripItem {
|
|
97
|
-
render(): TemplateResult<1>;
|
|
98
|
-
renderTextSegments(segments: EFTextSegment[]): TemplateResult<1> | TemplateResult<1>[];
|
|
99
|
-
renderChildren(): Array<TemplateResult<1> | typeof nothing> | typeof nothing;
|
|
100
|
-
}
|
|
101
|
-
declare class EFTextSegmentFilmstrip extends FilmstripItem {
|
|
102
|
-
get textTrackStyles(): {
|
|
103
|
-
position: string;
|
|
104
|
-
left: string;
|
|
105
|
-
width: string;
|
|
106
|
-
};
|
|
107
|
-
render(): TemplateResult<1>;
|
|
108
|
-
}
|
|
109
|
-
declare class EFImageFilmstrip extends FilmstripItem {
|
|
110
|
-
contents(): TemplateResult<1>;
|
|
111
|
-
}
|
|
112
|
-
declare class EFTimegroupFilmstrip extends FilmstripItem {
|
|
113
|
-
contents(): TemplateResult<1>;
|
|
114
|
-
}
|
|
115
|
-
declare class EFHTMLFilmstrip extends FilmstripItem {
|
|
116
|
-
contents(): TemplateResult<1>;
|
|
117
|
-
}
|
|
118
|
-
declare const EFHierarchyItem_base: typeof LitElement;
|
|
119
|
-
declare class EFHierarchyItem<ElementType extends HTMLElement = HTMLElement> extends EFHierarchyItem_base {
|
|
120
|
-
element: ElementType;
|
|
121
|
-
focusContext?: FocusContext;
|
|
122
|
-
focusedElement?: HTMLElement | null;
|
|
123
|
-
hideSelectors?: string[];
|
|
124
|
-
showSelectors?: string[];
|
|
125
|
-
get icon(): TemplateResult<1> | string;
|
|
126
|
-
get isFocused(): boolean;
|
|
127
|
-
displayLabel(): TemplateResult<1> | string | typeof nothing;
|
|
128
|
-
render(): TemplateResult<1>;
|
|
129
|
-
renderChildren(): Array<TemplateResult<1> | typeof nothing> | typeof nothing;
|
|
130
|
-
}
|
|
131
|
-
declare class EFTimegroupHierarchyItem extends EFHierarchyItem<EFTimegroup> {
|
|
132
|
-
get icon(): string;
|
|
133
|
-
displayLabel(): string | TemplateResult<1> | typeof nothing;
|
|
134
|
-
}
|
|
135
|
-
declare class EFAudioHierarchyItem extends EFHierarchyItem<EFAudio> {
|
|
136
|
-
get icon(): string;
|
|
137
|
-
displayLabel(): string;
|
|
138
|
-
}
|
|
139
|
-
declare class EFVideoHierarchyItem extends EFHierarchyItem<EFVideo> {
|
|
140
|
-
get icon(): string;
|
|
141
|
-
displayLabel(): string;
|
|
142
|
-
}
|
|
143
|
-
declare class EFCaptionsHierarchyItem extends EFHierarchyItem {
|
|
144
|
-
get icon(): string;
|
|
145
|
-
}
|
|
146
|
-
declare class EFCaptionsActiveWordHierarchyItem extends EFHierarchyItem {
|
|
147
|
-
get icon(): string;
|
|
148
|
-
}
|
|
149
|
-
declare class EFTextHierarchyItem extends EFHierarchyItem {
|
|
150
|
-
get icon(): string;
|
|
151
|
-
}
|
|
152
|
-
declare class EFTextSegmentHierarchyItem extends EFHierarchyItem {
|
|
153
|
-
get icon(): string;
|
|
154
|
-
}
|
|
155
|
-
declare class EFWaveformHierarchyItem extends EFHierarchyItem {
|
|
156
|
-
get icon(): string;
|
|
157
|
-
renderChildren(): typeof nothing;
|
|
158
|
-
}
|
|
159
|
-
declare class EFImageHierarchyItem extends EFHierarchyItem<EFImage> {
|
|
160
|
-
get icon(): string;
|
|
161
|
-
displayLabel(): string;
|
|
162
|
-
}
|
|
163
|
-
declare class EFHTMLHierarchyItem extends EFHierarchyItem {
|
|
164
|
-
get icon(): TemplateResult<1>;
|
|
165
|
-
}
|
|
166
7
|
declare const EFFilmstrip_base: typeof LitElement;
|
|
167
8
|
declare class EFFilmstrip extends EFFilmstrip_base {
|
|
168
9
|
#private;
|
|
169
|
-
|
|
10
|
+
target: string;
|
|
170
11
|
pixelsPerMs: number;
|
|
12
|
+
hidePlayhead: boolean;
|
|
13
|
+
disableInternalScroll: boolean;
|
|
171
14
|
hide: string;
|
|
172
15
|
show: string;
|
|
173
|
-
get hideSelectors(): string[] | undefined;
|
|
174
|
-
get showSelectors(): string[] | undefined;
|
|
175
|
-
scrubbing: boolean;
|
|
176
|
-
private capturedPointerId;
|
|
177
|
-
timelineScrolltop: number;
|
|
178
|
-
playing?: boolean;
|
|
179
|
-
loop?: boolean;
|
|
180
|
-
timegroupController?: TimegroupController;
|
|
181
|
-
currentTimeMs: number;
|
|
182
|
-
autoScale: boolean;
|
|
183
|
-
private resizeObserver;
|
|
184
|
-
connectedCallback(): void;
|
|
185
|
-
disconnectedCallback(): void;
|
|
186
|
-
updatePixelsPerMs(): void;
|
|
187
|
-
syncGutterScroll(): void;
|
|
188
|
-
syncHierarchyScroll(): void;
|
|
189
|
-
scrub(e: PointerEvent): void;
|
|
190
|
-
startScrub(e: PointerEvent): void;
|
|
191
|
-
handleContextMenu(e: Event): void;
|
|
192
|
-
applyScrub(e: PointerEvent): void;
|
|
193
|
-
scrollScrub(e: WheelEvent): void;
|
|
194
|
-
gutterRef: lit_html_directives_ref0.Ref<HTMLDivElement>;
|
|
195
|
-
hierarchyRef: lit_html_directives_ref0.Ref<HTMLDivElement>;
|
|
196
|
-
playheadRef: lit_html_directives_ref0.Ref<HTMLDivElement>;
|
|
197
|
-
get gutter(): HTMLDivElement | undefined;
|
|
198
|
-
render(): TemplateResult<1>;
|
|
199
|
-
updated(changes: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
|
|
200
|
-
target: string;
|
|
201
16
|
targetElement: Element | null;
|
|
202
17
|
private _contextProvidedTemporal?;
|
|
203
18
|
get targetTemporal(): TemporalMixinInterface | null;
|
|
204
|
-
|
|
19
|
+
get hideSelectors(): string[] | undefined;
|
|
20
|
+
get showSelectors(): string[] | undefined;
|
|
21
|
+
timelineRef: lit_html_directives_ref0.Ref<HTMLElement>;
|
|
22
|
+
connectedCallback(): void;
|
|
23
|
+
protected willUpdate(changedProperties: Map<string | number | symbol, unknown>): void;
|
|
24
|
+
render(): lit_html14.TemplateResult<1>;
|
|
205
25
|
}
|
|
206
26
|
declare global {
|
|
207
27
|
interface HTMLElementTagNameMap {
|
|
208
28
|
"ef-filmstrip": EFFilmstrip;
|
|
209
|
-
"ef-timegroup-hierarchy-item": EFTimegroupHierarchyItem;
|
|
210
|
-
"ef-audio-hierarchy-item": EFAudioHierarchyItem;
|
|
211
|
-
"ef-video-hierarchy-item": EFVideoHierarchyItem;
|
|
212
|
-
"ef-captions-hierarchy-item": EFCaptionsHierarchyItem;
|
|
213
|
-
"ef-captions-active-word-hierarchy-item": EFCaptionsActiveWordHierarchyItem;
|
|
214
|
-
"ef-waveform-hierarchy-item": EFWaveformHierarchyItem;
|
|
215
|
-
"ef-image-hierarchy-item": EFImageHierarchyItem;
|
|
216
|
-
"ef-html-hierarchy-item": EFHTMLHierarchyItem;
|
|
217
|
-
"ef-timegroup-filmstrip": EFTimegroupFilmstrip;
|
|
218
|
-
"ef-audio-filmstrip": EFAudioFilmstrip;
|
|
219
|
-
"ef-video-filmstrip": EFVideoFilmstrip;
|
|
220
|
-
"ef-captions-filmstrip": EFCaptionsFilmstrip;
|
|
221
|
-
"ef-captions-active-word-filmstrip": EFCaptionsActiveWordFilmstrip;
|
|
222
|
-
"ef-captions-segment-filmstrip": EFCaptionsSegmentFilmstrip;
|
|
223
|
-
"ef-captions-before-word-filmstrip": EFCaptionsBeforeWordFilmstrip;
|
|
224
|
-
"ef-captions-after-word-filmstrip": EFCaptionsAfterWordFilmstrip;
|
|
225
|
-
"ef-text-filmstrip": EFTextFilmstrip;
|
|
226
|
-
"ef-text-segment-filmstrip": EFTextSegmentFilmstrip;
|
|
227
|
-
"ef-text-hierarchy-item": EFTextHierarchyItem;
|
|
228
|
-
"ef-text-segment-hierarchy-item": EFTextSegmentHierarchyItem;
|
|
229
|
-
"ef-waveform-filmstrip": EFWaveformFilmstrip;
|
|
230
|
-
"ef-image-filmstrip": EFImageFilmstrip;
|
|
231
|
-
"ef-html-filmstrip": EFHTMLFilmstrip;
|
|
232
29
|
}
|
|
233
30
|
}
|
|
234
31
|
//#endregion
|