@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
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { TreeItem } from "./treeContext.js";
|
|
2
|
+
import * as lit16 from "lit";
|
|
3
|
+
import { LitElement, PropertyValues } from "lit";
|
|
4
|
+
import * as lit_html16 from "lit-html";
|
|
5
|
+
|
|
6
|
+
//#region src/gui/tree/EFTree.d.ts
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Generic tree component for displaying hierarchical data.
|
|
10
|
+
*
|
|
11
|
+
* Takes an array of TreeItem objects and renders them as an expandable tree.
|
|
12
|
+
* Provides context for selection and expand/collapse state.
|
|
13
|
+
*
|
|
14
|
+
* @fires tree-select - When an item is selected. Detail: { id: string, item: TreeItem }
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```html
|
|
18
|
+
* <ef-tree
|
|
19
|
+
* .items=${[
|
|
20
|
+
* { id: "folder1", label: "Folder 1", children: [
|
|
21
|
+
* { id: "file1", label: "File 1" },
|
|
22
|
+
* { id: "file2", label: "File 2" },
|
|
23
|
+
* ]},
|
|
24
|
+
* { id: "file3", label: "File 3" },
|
|
25
|
+
* ]}
|
|
26
|
+
* @tree-select=${(e) => console.log('Selected:', e.detail.id)}
|
|
27
|
+
* ></ef-tree>
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
declare class EFTree extends LitElement {
|
|
31
|
+
static styles: lit16.CSSResult;
|
|
32
|
+
/** Tree items to display */
|
|
33
|
+
items: TreeItem[];
|
|
34
|
+
/** Optional header text */
|
|
35
|
+
header: string;
|
|
36
|
+
/** Whether to show the header */
|
|
37
|
+
showHeader: boolean;
|
|
38
|
+
/** Currently selected item ID (can be set externally) */
|
|
39
|
+
selectedId: string | null;
|
|
40
|
+
/** Whether to expand all items by default */
|
|
41
|
+
expandAll: boolean;
|
|
42
|
+
private treeState;
|
|
43
|
+
private treeActions;
|
|
44
|
+
private providedContext;
|
|
45
|
+
private findItem;
|
|
46
|
+
private initializeExpandedState;
|
|
47
|
+
protected willUpdate(changedProperties: PropertyValues): void;
|
|
48
|
+
protected updated(changedProperties: PropertyValues): void;
|
|
49
|
+
connectedCallback(): void;
|
|
50
|
+
render(): lit_html16.TemplateResult<1>;
|
|
51
|
+
}
|
|
52
|
+
declare global {
|
|
53
|
+
interface HTMLElementTagNameMap {
|
|
54
|
+
"ef-tree": EFTree;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//#endregion
|
|
58
|
+
export { EFTree };
|
|
59
|
+
//# sourceMappingURL=EFTree.d.ts.map
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.94.0/helpers/decorate.js";
|
|
2
|
+
import { collectAllIds, treeContext } from "./treeContext.js";
|
|
3
|
+
import "./EFTreeItem.js";
|
|
4
|
+
import { provide } from "@lit/context";
|
|
5
|
+
import { LitElement, css, html, nothing } from "lit";
|
|
6
|
+
import { customElement, property, state } from "lit/decorators.js";
|
|
7
|
+
|
|
8
|
+
//#region src/gui/tree/EFTree.ts
|
|
9
|
+
let EFTree = class EFTree$1 extends LitElement {
|
|
10
|
+
constructor(..._args) {
|
|
11
|
+
super(..._args);
|
|
12
|
+
this.items = [];
|
|
13
|
+
this.header = "";
|
|
14
|
+
this.showHeader = false;
|
|
15
|
+
this.selectedId = null;
|
|
16
|
+
this.expandAll = true;
|
|
17
|
+
this.treeState = {
|
|
18
|
+
selectedId: null,
|
|
19
|
+
expandedIds: /* @__PURE__ */ new Set()
|
|
20
|
+
};
|
|
21
|
+
this.treeActions = {
|
|
22
|
+
select: (id) => {
|
|
23
|
+
this.treeState = {
|
|
24
|
+
...this.treeState,
|
|
25
|
+
selectedId: id
|
|
26
|
+
};
|
|
27
|
+
const item = id ? this.findItem(id, this.items) : null;
|
|
28
|
+
this.dispatchEvent(new CustomEvent("tree-select", {
|
|
29
|
+
detail: {
|
|
30
|
+
id,
|
|
31
|
+
item
|
|
32
|
+
},
|
|
33
|
+
bubbles: true,
|
|
34
|
+
composed: true
|
|
35
|
+
}));
|
|
36
|
+
},
|
|
37
|
+
toggleExpanded: (id) => {
|
|
38
|
+
const newExpanded = new Set(this.treeState.expandedIds);
|
|
39
|
+
if (newExpanded.has(id)) newExpanded.delete(id);
|
|
40
|
+
else newExpanded.add(id);
|
|
41
|
+
this.treeState = {
|
|
42
|
+
...this.treeState,
|
|
43
|
+
expandedIds: newExpanded
|
|
44
|
+
};
|
|
45
|
+
},
|
|
46
|
+
setExpanded: (id, expanded) => {
|
|
47
|
+
const newExpanded = new Set(this.treeState.expandedIds);
|
|
48
|
+
if (expanded) newExpanded.add(id);
|
|
49
|
+
else newExpanded.delete(id);
|
|
50
|
+
this.treeState = {
|
|
51
|
+
...this.treeState,
|
|
52
|
+
expandedIds: newExpanded
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
this.providedContext = {
|
|
57
|
+
state: this.treeState,
|
|
58
|
+
actions: this.treeActions
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
static {
|
|
62
|
+
this.styles = css`
|
|
63
|
+
:host {
|
|
64
|
+
display: block;
|
|
65
|
+
overflow: auto;
|
|
66
|
+
font-size: 12px;
|
|
67
|
+
|
|
68
|
+
--tree-bg: rgb(30 41 59);
|
|
69
|
+
--tree-text: rgb(226 232 240);
|
|
70
|
+
--tree-hover-bg: rgba(148, 163, 184, 0.2);
|
|
71
|
+
--tree-selected-bg: rgba(59, 130, 246, 0.3);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
:host(.light) {
|
|
75
|
+
--tree-bg: rgb(241 245 249);
|
|
76
|
+
--tree-text: rgb(30 41 59);
|
|
77
|
+
--tree-hover-bg: rgba(100, 116, 139, 0.15);
|
|
78
|
+
--tree-selected-bg: rgba(59, 130, 246, 0.2);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.tree-container {
|
|
82
|
+
background: var(--tree-bg);
|
|
83
|
+
color: var(--tree-text);
|
|
84
|
+
min-height: 100%;
|
|
85
|
+
padding: 4px 0;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.header {
|
|
89
|
+
padding: 8px 12px;
|
|
90
|
+
font-weight: 600;
|
|
91
|
+
font-size: 11px;
|
|
92
|
+
text-transform: uppercase;
|
|
93
|
+
letter-spacing: 0.05em;
|
|
94
|
+
color: rgba(148, 163, 184, 0.8);
|
|
95
|
+
border-bottom: 1px solid var(--tree-border, rgb(71 85 105));
|
|
96
|
+
margin-bottom: 4px;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.empty {
|
|
100
|
+
padding: 16px;
|
|
101
|
+
text-align: center;
|
|
102
|
+
color: rgba(148, 163, 184, 0.6);
|
|
103
|
+
font-style: italic;
|
|
104
|
+
}
|
|
105
|
+
`;
|
|
106
|
+
}
|
|
107
|
+
findItem(id, items) {
|
|
108
|
+
for (const item of items) {
|
|
109
|
+
if (item.id === id) return item;
|
|
110
|
+
if (item.children) {
|
|
111
|
+
const found = this.findItem(id, item.children);
|
|
112
|
+
if (found) return found;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
initializeExpandedState() {
|
|
118
|
+
if (this.expandAll && this.items.length > 0) this.treeState = {
|
|
119
|
+
...this.treeState,
|
|
120
|
+
expandedIds: collectAllIds(this.items)
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
willUpdate(changedProperties) {
|
|
124
|
+
if (changedProperties.has("selectedId") && this.selectedId !== this.treeState.selectedId) this.treeState = {
|
|
125
|
+
...this.treeState,
|
|
126
|
+
selectedId: this.selectedId
|
|
127
|
+
};
|
|
128
|
+
this.providedContext = {
|
|
129
|
+
state: this.treeState,
|
|
130
|
+
actions: this.treeActions
|
|
131
|
+
};
|
|
132
|
+
super.willUpdate(changedProperties);
|
|
133
|
+
}
|
|
134
|
+
updated(changedProperties) {
|
|
135
|
+
super.updated(changedProperties);
|
|
136
|
+
if (changedProperties.has("items")) this.initializeExpandedState();
|
|
137
|
+
}
|
|
138
|
+
connectedCallback() {
|
|
139
|
+
super.connectedCallback();
|
|
140
|
+
this.initializeExpandedState();
|
|
141
|
+
}
|
|
142
|
+
render() {
|
|
143
|
+
return html`
|
|
144
|
+
<div class="tree-container">
|
|
145
|
+
${this.showHeader ? html`<div class="header">${this.header}</div>` : nothing}
|
|
146
|
+
${this.items.length > 0 ? this.items.map((item) => html`<ef-tree-item .item=${item}></ef-tree-item>`) : html`<div class="empty">No items</div>`}
|
|
147
|
+
</div>
|
|
148
|
+
`;
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
__decorate([property({
|
|
152
|
+
type: Array,
|
|
153
|
+
attribute: false
|
|
154
|
+
})], EFTree.prototype, "items", void 0);
|
|
155
|
+
__decorate([property({ type: String })], EFTree.prototype, "header", void 0);
|
|
156
|
+
__decorate([property({
|
|
157
|
+
type: Boolean,
|
|
158
|
+
attribute: "show-header"
|
|
159
|
+
})], EFTree.prototype, "showHeader", void 0);
|
|
160
|
+
__decorate([property({
|
|
161
|
+
type: String,
|
|
162
|
+
attribute: "selected-id"
|
|
163
|
+
})], EFTree.prototype, "selectedId", void 0);
|
|
164
|
+
__decorate([property({
|
|
165
|
+
type: Boolean,
|
|
166
|
+
attribute: "expand-all"
|
|
167
|
+
})], EFTree.prototype, "expandAll", void 0);
|
|
168
|
+
__decorate([state()], EFTree.prototype, "treeState", void 0);
|
|
169
|
+
__decorate([provide({ context: treeContext }), state()], EFTree.prototype, "providedContext", void 0);
|
|
170
|
+
EFTree = __decorate([customElement("ef-tree")], EFTree);
|
|
171
|
+
|
|
172
|
+
//#endregion
|
|
173
|
+
export { EFTree };
|
|
174
|
+
//# sourceMappingURL=EFTree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EFTree.js","names":["EFTree"],"sources":["../../../src/gui/tree/EFTree.ts"],"sourcesContent":["import { provide } from \"@lit/context\";\nimport { css, html, LitElement, nothing, type PropertyValues } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\n\nimport type { TreeItem, TreeContext, TreeState, TreeActions } from \"./treeContext.js\";\nimport { treeContext, collectAllIds } from \"./treeContext.js\";\nimport \"./EFTreeItem.js\";\n\n/**\n * Generic tree component for displaying hierarchical data.\n * \n * Takes an array of TreeItem objects and renders them as an expandable tree.\n * Provides context for selection and expand/collapse state.\n * \n * @fires tree-select - When an item is selected. Detail: { id: string, item: TreeItem }\n * \n * @example\n * ```html\n * <ef-tree\n * .items=${[\n * { id: \"folder1\", label: \"Folder 1\", children: [\n * { id: \"file1\", label: \"File 1\" },\n * { id: \"file2\", label: \"File 2\" },\n * ]},\n * { id: \"file3\", label: \"File 3\" },\n * ]}\n * @tree-select=${(e) => console.log('Selected:', e.detail.id)}\n * ></ef-tree>\n * ```\n */\n@customElement(\"ef-tree\")\nexport class EFTree extends LitElement {\n static styles = css`\n :host {\n display: block;\n overflow: auto;\n font-size: 12px;\n\n --tree-bg: rgb(30 41 59);\n --tree-text: rgb(226 232 240);\n --tree-hover-bg: rgba(148, 163, 184, 0.2);\n --tree-selected-bg: rgba(59, 130, 246, 0.3);\n }\n\n :host(.light) {\n --tree-bg: rgb(241 245 249);\n --tree-text: rgb(30 41 59);\n --tree-hover-bg: rgba(100, 116, 139, 0.15);\n --tree-selected-bg: rgba(59, 130, 246, 0.2);\n }\n\n .tree-container {\n background: var(--tree-bg);\n color: var(--tree-text);\n min-height: 100%;\n padding: 4px 0;\n }\n\n .header {\n padding: 8px 12px;\n font-weight: 600;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: rgba(148, 163, 184, 0.8);\n border-bottom: 1px solid var(--tree-border, rgb(71 85 105));\n margin-bottom: 4px;\n }\n\n .empty {\n padding: 16px;\n text-align: center;\n color: rgba(148, 163, 184, 0.6);\n font-style: italic;\n }\n `;\n\n /** Tree items to display */\n @property({ type: Array, attribute: false })\n items: TreeItem[] = [];\n\n /** Optional header text */\n @property({ type: String })\n header = \"\";\n\n /** Whether to show the header */\n @property({ type: Boolean, attribute: \"show-header\" })\n showHeader = false;\n\n /** Currently selected item ID (can be set externally) */\n @property({ type: String, attribute: \"selected-id\" })\n selectedId: string | null = null;\n\n /** Whether to expand all items by default */\n @property({ type: Boolean, attribute: \"expand-all\" })\n expandAll = true;\n\n @state()\n private treeState: TreeState = {\n selectedId: null,\n expandedIds: new Set(),\n };\n\n private treeActions: TreeActions = {\n select: (id: string | null) => {\n this.treeState = {\n ...this.treeState,\n selectedId: id,\n };\n \n // Find the item for the event detail\n const item = id ? this.findItem(id, this.items) : null;\n \n this.dispatchEvent(\n new CustomEvent(\"tree-select\", {\n detail: { id, item },\n bubbles: true,\n composed: true,\n })\n );\n },\n\n toggleExpanded: (id: string) => {\n const newExpanded = new Set(this.treeState.expandedIds);\n if (newExpanded.has(id)) {\n newExpanded.delete(id);\n } else {\n newExpanded.add(id);\n }\n this.treeState = {\n ...this.treeState,\n expandedIds: newExpanded,\n };\n },\n\n setExpanded: (id: string, expanded: boolean) => {\n const newExpanded = new Set(this.treeState.expandedIds);\n if (expanded) {\n newExpanded.add(id);\n } else {\n newExpanded.delete(id);\n }\n this.treeState = {\n ...this.treeState,\n expandedIds: newExpanded,\n };\n },\n };\n\n @provide({ context: treeContext })\n @state()\n private providedContext: TreeContext = {\n state: this.treeState,\n actions: this.treeActions,\n };\n\n private findItem(id: string, items: TreeItem[]): TreeItem | null {\n for (const item of items) {\n if (item.id === id) return item;\n if (item.children) {\n const found = this.findItem(id, item.children);\n if (found) return found;\n }\n }\n return null;\n }\n\n private initializeExpandedState(): void {\n if (this.expandAll && this.items.length > 0) {\n this.treeState = {\n ...this.treeState,\n expandedIds: collectAllIds(this.items),\n };\n }\n }\n\n protected willUpdate(changedProperties: PropertyValues): void {\n // Sync external selectedId with internal state\n if (changedProperties.has(\"selectedId\") && this.selectedId !== this.treeState.selectedId) {\n this.treeState = {\n ...this.treeState,\n selectedId: this.selectedId,\n };\n }\n\n // Always update provided context\n this.providedContext = {\n state: this.treeState,\n actions: this.treeActions,\n };\n\n super.willUpdate(changedProperties);\n }\n\n protected updated(changedProperties: PropertyValues): void {\n super.updated(changedProperties);\n\n // Re-initialize expanded state when items change\n if (changedProperties.has(\"items\")) {\n this.initializeExpandedState();\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.initializeExpandedState();\n }\n\n render() {\n return html`\n <div class=\"tree-container\">\n ${this.showHeader ? html`<div class=\"header\">${this.header}</div>` : nothing}\n ${this.items.length > 0\n ? this.items.map(\n (item) => html`<ef-tree-item .item=${item}></ef-tree-item>`\n )\n : html`<div class=\"empty\">No items</div>`}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-tree\": EFTree;\n }\n}\n"],"mappings":";;;;;;;;AA+BO,mBAAMA,iBAAe,WAAW;;;eAgDjB,EAAE;gBAIb;oBAII;oBAIe;mBAIhB;mBAGmB;GAC7B,YAAY;GACZ,6BAAa,IAAI,KAAK;GACvB;qBAEkC;GACjC,SAAS,OAAsB;AAC7B,SAAK,YAAY;KACf,GAAG,KAAK;KACR,YAAY;KACb;IAGD,MAAM,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,MAAM,GAAG;AAElD,SAAK,cACH,IAAI,YAAY,eAAe;KAC7B,QAAQ;MAAE;MAAI;MAAM;KACpB,SAAS;KACT,UAAU;KACX,CAAC,CACH;;GAGH,iBAAiB,OAAe;IAC9B,MAAM,cAAc,IAAI,IAAI,KAAK,UAAU,YAAY;AACvD,QAAI,YAAY,IAAI,GAAG,CACrB,aAAY,OAAO,GAAG;QAEtB,aAAY,IAAI,GAAG;AAErB,SAAK,YAAY;KACf,GAAG,KAAK;KACR,aAAa;KACd;;GAGH,cAAc,IAAY,aAAsB;IAC9C,MAAM,cAAc,IAAI,IAAI,KAAK,UAAU,YAAY;AACvD,QAAI,SACF,aAAY,IAAI,GAAG;QAEnB,aAAY,OAAO,GAAG;AAExB,SAAK,YAAY;KACf,GAAG,KAAK;KACR,aAAa;KACd;;GAEJ;yBAIsC;GACrC,OAAO,KAAK;GACZ,SAAS,KAAK;GACf;;;gBA1He,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4HnB,AAAQ,SAAS,IAAY,OAAoC;AAC/D,OAAK,MAAM,QAAQ,OAAO;AACxB,OAAI,KAAK,OAAO,GAAI,QAAO;AAC3B,OAAI,KAAK,UAAU;IACjB,MAAM,QAAQ,KAAK,SAAS,IAAI,KAAK,SAAS;AAC9C,QAAI,MAAO,QAAO;;;AAGtB,SAAO;;CAGT,AAAQ,0BAAgC;AACtC,MAAI,KAAK,aAAa,KAAK,MAAM,SAAS,EACxC,MAAK,YAAY;GACf,GAAG,KAAK;GACR,aAAa,cAAc,KAAK,MAAM;GACvC;;CAIL,AAAU,WAAW,mBAAyC;AAE5D,MAAI,kBAAkB,IAAI,aAAa,IAAI,KAAK,eAAe,KAAK,UAAU,WAC5E,MAAK,YAAY;GACf,GAAG,KAAK;GACR,YAAY,KAAK;GAClB;AAIH,OAAK,kBAAkB;GACrB,OAAO,KAAK;GACZ,SAAS,KAAK;GACf;AAED,QAAM,WAAW,kBAAkB;;CAGrC,AAAU,QAAQ,mBAAyC;AACzD,QAAM,QAAQ,kBAAkB;AAGhC,MAAI,kBAAkB,IAAI,QAAQ,CAChC,MAAK,yBAAyB;;CAIlC,oBAA0B;AACxB,QAAM,mBAAmB;AACzB,OAAK,yBAAyB;;CAGhC,SAAS;AACP,SAAO,IAAI;;UAEL,KAAK,aAAa,IAAI,uBAAuB,KAAK,OAAO,UAAU,QAAQ;UAC3E,KAAK,MAAM,SAAS,IAClB,KAAK,MAAM,KACR,SAAS,IAAI,uBAAuB,KAAK,kBAC3C,GACD,IAAI,oCAAoC;;;;;YA1IjD,SAAS;CAAE,MAAM;CAAO,WAAW;CAAO,CAAC;YAI3C,SAAS,EAAE,MAAM,QAAQ,CAAC;YAI1B,SAAS;CAAE,MAAM;CAAS,WAAW;CAAe,CAAC;YAIrD,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAe,CAAC;YAIpD,SAAS;CAAE,MAAM;CAAS,WAAW;CAAc,CAAC;YAGpD,OAAO;YAoDP,QAAQ,EAAE,SAAS,aAAa,CAAC,EACjC,OAAO;qBAxHT,cAAc,UAAU"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { TreeContext, TreeItem } from "./treeContext.js";
|
|
2
|
+
import * as lit17 from "lit";
|
|
3
|
+
import { LitElement, nothing } from "lit";
|
|
4
|
+
import * as lit_html17 from "lit-html";
|
|
5
|
+
|
|
6
|
+
//#region src/gui/tree/EFTreeItem.d.ts
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Generic tree item component.
|
|
10
|
+
*
|
|
11
|
+
* Renders a single item in a tree with:
|
|
12
|
+
* - Expand/collapse toggle for items with children
|
|
13
|
+
* - Optional icon
|
|
14
|
+
* - Label
|
|
15
|
+
* - Recursive children rendering
|
|
16
|
+
*
|
|
17
|
+
* @fires tree-item-click - When item is clicked (for selection)
|
|
18
|
+
*/
|
|
19
|
+
declare class EFTreeItem extends LitElement {
|
|
20
|
+
static styles: lit17.CSSResult;
|
|
21
|
+
treeContext?: TreeContext;
|
|
22
|
+
item: TreeItem;
|
|
23
|
+
private localExpanded;
|
|
24
|
+
get isSelected(): boolean;
|
|
25
|
+
get isExpanded(): boolean;
|
|
26
|
+
get hasChildren(): boolean;
|
|
27
|
+
private handleClick;
|
|
28
|
+
private handleExpandClick;
|
|
29
|
+
render(): lit_html17.TemplateResult<1> | typeof nothing;
|
|
30
|
+
}
|
|
31
|
+
declare global {
|
|
32
|
+
interface HTMLElementTagNameMap {
|
|
33
|
+
"ef-tree-item": EFTreeItem;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { EFTreeItem };
|
|
38
|
+
//# sourceMappingURL=EFTreeItem.d.ts.map
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.94.0/helpers/decorate.js";
|
|
2
|
+
import { treeContext } from "./treeContext.js";
|
|
3
|
+
import { consume } from "@lit/context";
|
|
4
|
+
import { LitElement, css, html, nothing } from "lit";
|
|
5
|
+
import { customElement, property, state } from "lit/decorators.js";
|
|
6
|
+
|
|
7
|
+
//#region src/gui/tree/EFTreeItem.ts
|
|
8
|
+
let EFTreeItem = class EFTreeItem$1 extends LitElement {
|
|
9
|
+
constructor(..._args) {
|
|
10
|
+
super(..._args);
|
|
11
|
+
this.localExpanded = true;
|
|
12
|
+
}
|
|
13
|
+
static {
|
|
14
|
+
this.styles = css`
|
|
15
|
+
:host {
|
|
16
|
+
display: block;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.item-row {
|
|
20
|
+
display: flex;
|
|
21
|
+
align-items: center;
|
|
22
|
+
height: var(--tree-item-height, 1.5rem);
|
|
23
|
+
padding-left: var(--tree-item-padding-left, 0.5rem);
|
|
24
|
+
padding-right: var(--tree-item-padding-right, 0.5rem);
|
|
25
|
+
font-size: var(--tree-item-font-size, 0.75rem);
|
|
26
|
+
cursor: pointer;
|
|
27
|
+
user-select: none;
|
|
28
|
+
color: var(--tree-text, rgb(226 232 240));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.item-row:hover {
|
|
32
|
+
background: var(--tree-hover-bg, rgba(148, 163, 184, 0.2));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.item-row[data-selected] {
|
|
36
|
+
background: var(--tree-selected-bg, rgba(59, 130, 246, 0.3));
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.expand-icon {
|
|
40
|
+
width: var(--tree-expand-icon-size, 1rem);
|
|
41
|
+
height: var(--tree-expand-icon-size, 1rem);
|
|
42
|
+
display: flex;
|
|
43
|
+
align-items: center;
|
|
44
|
+
justify-content: center;
|
|
45
|
+
cursor: pointer;
|
|
46
|
+
flex-shrink: 0;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.expand-icon svg {
|
|
50
|
+
width: 0.75rem;
|
|
51
|
+
height: 0.75rem;
|
|
52
|
+
transition: transform 0.15s ease;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.expand-icon[data-expanded] svg {
|
|
56
|
+
transform: rotate(90deg);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.icon {
|
|
60
|
+
margin-right: var(--tree-icon-gap, 0.25rem);
|
|
61
|
+
flex-shrink: 0;
|
|
62
|
+
display: flex;
|
|
63
|
+
align-items: center;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.label {
|
|
67
|
+
overflow: hidden;
|
|
68
|
+
text-overflow: ellipsis;
|
|
69
|
+
white-space: nowrap;
|
|
70
|
+
flex: 1;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.children {
|
|
74
|
+
padding-left: var(--tree-indent, 1rem);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.children[data-collapsed] {
|
|
78
|
+
display: none;
|
|
79
|
+
}
|
|
80
|
+
`;
|
|
81
|
+
}
|
|
82
|
+
get isSelected() {
|
|
83
|
+
if (!this.treeContext || !this.item) return false;
|
|
84
|
+
return this.treeContext.state.selectedId === this.item.id;
|
|
85
|
+
}
|
|
86
|
+
get isExpanded() {
|
|
87
|
+
if (!this.treeContext || !this.item) return this.localExpanded;
|
|
88
|
+
return this.treeContext.state.expandedIds.has(this.item.id);
|
|
89
|
+
}
|
|
90
|
+
get hasChildren() {
|
|
91
|
+
return Boolean(this.item?.children && this.item.children.length > 0);
|
|
92
|
+
}
|
|
93
|
+
handleClick(e) {
|
|
94
|
+
e.stopPropagation();
|
|
95
|
+
if (this.treeContext && this.item) this.treeContext.actions.select(this.item.id);
|
|
96
|
+
}
|
|
97
|
+
handleExpandClick(e) {
|
|
98
|
+
e.stopPropagation();
|
|
99
|
+
if (this.treeContext && this.item) this.treeContext.actions.toggleExpanded(this.item.id);
|
|
100
|
+
else this.localExpanded = !this.localExpanded;
|
|
101
|
+
}
|
|
102
|
+
render() {
|
|
103
|
+
if (!this.item) return nothing;
|
|
104
|
+
const expanded = this.isExpanded;
|
|
105
|
+
return html`
|
|
106
|
+
<div
|
|
107
|
+
class="item-row"
|
|
108
|
+
?data-selected=${this.isSelected}
|
|
109
|
+
@click=${this.handleClick}
|
|
110
|
+
>
|
|
111
|
+
${this.hasChildren ? html`
|
|
112
|
+
<span
|
|
113
|
+
class="expand-icon"
|
|
114
|
+
?data-expanded=${expanded}
|
|
115
|
+
@click=${this.handleExpandClick}
|
|
116
|
+
>
|
|
117
|
+
<svg viewBox="0 0 24 24" fill="currentColor">
|
|
118
|
+
<path d="M8 5v14l11-7z" />
|
|
119
|
+
</svg>
|
|
120
|
+
</span>
|
|
121
|
+
` : html`<span class="expand-icon"></span>`}
|
|
122
|
+
${this.item.icon ? html`<span class="icon">${this.item.icon}</span>` : nothing}
|
|
123
|
+
<span class="label">${this.item.label}</span>
|
|
124
|
+
</div>
|
|
125
|
+
${this.hasChildren ? html`
|
|
126
|
+
<div class="children" ?data-collapsed=${!expanded}>
|
|
127
|
+
${this.item.children.map((child) => html`<ef-tree-item .item=${child}></ef-tree-item>`)}
|
|
128
|
+
</div>
|
|
129
|
+
` : nothing}
|
|
130
|
+
`;
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
__decorate([consume({
|
|
134
|
+
context: treeContext,
|
|
135
|
+
subscribe: true
|
|
136
|
+
})], EFTreeItem.prototype, "treeContext", void 0);
|
|
137
|
+
__decorate([property({
|
|
138
|
+
type: Object,
|
|
139
|
+
attribute: false
|
|
140
|
+
})], EFTreeItem.prototype, "item", void 0);
|
|
141
|
+
__decorate([state()], EFTreeItem.prototype, "localExpanded", void 0);
|
|
142
|
+
EFTreeItem = __decorate([customElement("ef-tree-item")], EFTreeItem);
|
|
143
|
+
|
|
144
|
+
//#endregion
|
|
145
|
+
export { EFTreeItem };
|
|
146
|
+
//# sourceMappingURL=EFTreeItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EFTreeItem.js","names":["EFTreeItem"],"sources":["../../../src/gui/tree/EFTreeItem.ts"],"sourcesContent":["import { consume } from \"@lit/context\";\nimport { css, html, LitElement, nothing } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\n\nimport type { TreeItem, TreeContext } from \"./treeContext.js\";\nimport { treeContext } from \"./treeContext.js\";\n\n/**\n * Generic tree item component.\n * \n * Renders a single item in a tree with:\n * - Expand/collapse toggle for items with children\n * - Optional icon\n * - Label\n * - Recursive children rendering\n * \n * @fires tree-item-click - When item is clicked (for selection)\n */\n@customElement(\"ef-tree-item\")\nexport class EFTreeItem extends LitElement {\n static styles = css`\n :host {\n display: block;\n }\n\n .item-row {\n display: flex;\n align-items: center;\n height: var(--tree-item-height, 1.5rem);\n padding-left: var(--tree-item-padding-left, 0.5rem);\n padding-right: var(--tree-item-padding-right, 0.5rem);\n font-size: var(--tree-item-font-size, 0.75rem);\n cursor: pointer;\n user-select: none;\n color: var(--tree-text, rgb(226 232 240));\n }\n\n .item-row:hover {\n background: var(--tree-hover-bg, rgba(148, 163, 184, 0.2));\n }\n\n .item-row[data-selected] {\n background: var(--tree-selected-bg, rgba(59, 130, 246, 0.3));\n }\n\n .expand-icon {\n width: var(--tree-expand-icon-size, 1rem);\n height: var(--tree-expand-icon-size, 1rem);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n flex-shrink: 0;\n }\n\n .expand-icon svg {\n width: 0.75rem;\n height: 0.75rem;\n transition: transform 0.15s ease;\n }\n\n .expand-icon[data-expanded] svg {\n transform: rotate(90deg);\n }\n\n .icon {\n margin-right: var(--tree-icon-gap, 0.25rem);\n flex-shrink: 0;\n display: flex;\n align-items: center;\n }\n\n .label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1;\n }\n\n .children {\n padding-left: var(--tree-indent, 1rem);\n }\n\n .children[data-collapsed] {\n display: none;\n }\n `;\n\n @consume({ context: treeContext, subscribe: true })\n treeContext?: TreeContext;\n\n @property({ type: Object, attribute: false })\n item!: TreeItem;\n\n @state()\n private localExpanded = true;\n\n get isSelected(): boolean {\n if (!this.treeContext || !this.item) return false;\n return this.treeContext.state.selectedId === this.item.id;\n }\n\n get isExpanded(): boolean {\n if (!this.treeContext || !this.item) return this.localExpanded;\n return this.treeContext.state.expandedIds.has(this.item.id);\n }\n\n get hasChildren(): boolean {\n return Boolean(this.item?.children && this.item.children.length > 0);\n }\n\n private handleClick(e: Event): void {\n e.stopPropagation();\n if (this.treeContext && this.item) {\n this.treeContext.actions.select(this.item.id);\n }\n }\n\n private handleExpandClick(e: Event): void {\n e.stopPropagation();\n if (this.treeContext && this.item) {\n this.treeContext.actions.toggleExpanded(this.item.id);\n } else {\n this.localExpanded = !this.localExpanded;\n }\n }\n\n render() {\n if (!this.item) return nothing;\n\n const expanded = this.isExpanded;\n\n return html`\n <div\n class=\"item-row\"\n ?data-selected=${this.isSelected}\n @click=${this.handleClick}\n >\n ${this.hasChildren\n ? html`\n <span\n class=\"expand-icon\"\n ?data-expanded=${expanded}\n @click=${this.handleExpandClick}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M8 5v14l11-7z\" />\n </svg>\n </span>\n `\n : html`<span class=\"expand-icon\"></span>`}\n ${this.item.icon\n ? html`<span class=\"icon\">${this.item.icon}</span>`\n : nothing}\n <span class=\"label\">${this.item.label}</span>\n </div>\n ${this.hasChildren\n ? html`\n <div class=\"children\" ?data-collapsed=${!expanded}>\n ${this.item.children!.map(\n (child) => html`<ef-tree-item .item=${child}></ef-tree-item>`\n )}\n </div>\n `\n : nothing}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-tree-item\": EFTreeItem;\n }\n}\n"],"mappings":";;;;;;;AAmBO,uBAAMA,qBAAmB,WAAW;;;uBA4EjB;;;gBA3ER,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6EnB,IAAI,aAAsB;AACxB,MAAI,CAAC,KAAK,eAAe,CAAC,KAAK,KAAM,QAAO;AAC5C,SAAO,KAAK,YAAY,MAAM,eAAe,KAAK,KAAK;;CAGzD,IAAI,aAAsB;AACxB,MAAI,CAAC,KAAK,eAAe,CAAC,KAAK,KAAM,QAAO,KAAK;AACjD,SAAO,KAAK,YAAY,MAAM,YAAY,IAAI,KAAK,KAAK,GAAG;;CAG7D,IAAI,cAAuB;AACzB,SAAO,QAAQ,KAAK,MAAM,YAAY,KAAK,KAAK,SAAS,SAAS,EAAE;;CAGtE,AAAQ,YAAY,GAAgB;AAClC,IAAE,iBAAiB;AACnB,MAAI,KAAK,eAAe,KAAK,KAC3B,MAAK,YAAY,QAAQ,OAAO,KAAK,KAAK,GAAG;;CAIjD,AAAQ,kBAAkB,GAAgB;AACxC,IAAE,iBAAiB;AACnB,MAAI,KAAK,eAAe,KAAK,KAC3B,MAAK,YAAY,QAAQ,eAAe,KAAK,KAAK,GAAG;MAErD,MAAK,gBAAgB,CAAC,KAAK;;CAI/B,SAAS;AACP,MAAI,CAAC,KAAK,KAAM,QAAO;EAEvB,MAAM,WAAW,KAAK;AAEtB,SAAO,IAAI;;;yBAGU,KAAK,WAAW;iBACxB,KAAK,YAAY;;UAExB,KAAK,cACH,IAAI;;;iCAGiB,SAAS;yBACjB,KAAK,kBAAkB;;;;;;gBAOpC,IAAI,oCAAoC;UAC1C,KAAK,KAAK,OACR,IAAI,sBAAsB,KAAK,KAAK,KAAK,WACzC,QAAQ;8BACU,KAAK,KAAK,MAAM;;QAEtC,KAAK,cACH,IAAI;oDACsC,CAAC,SAAS;gBAC9C,KAAK,KAAK,SAAU,KACnB,UAAU,IAAI,uBAAuB,MAAM,kBAC7C,CAAC;;cAGN,QAAQ;;;;YA5Ef,QAAQ;CAAE,SAAS;CAAa,WAAW;CAAM,CAAC;YAGlD,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAO,CAAC;YAG5C,OAAO;yBA5ET,cAAc,eAAe"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { TemplateResult } from "lit";
|
|
2
|
+
|
|
3
|
+
//#region src/gui/tree/treeContext.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Generic tree item data structure.
|
|
7
|
+
* Used by ef-tree for data-driven tree rendering.
|
|
8
|
+
*/
|
|
9
|
+
interface TreeItem {
|
|
10
|
+
/** Unique identifier for this item */
|
|
11
|
+
id: string;
|
|
12
|
+
/** Display label */
|
|
13
|
+
label: string;
|
|
14
|
+
/** Optional icon (Lit TemplateResult or string) */
|
|
15
|
+
icon?: TemplateResult | string;
|
|
16
|
+
/** Child items (folders have children, leaves don't) */
|
|
17
|
+
children?: TreeItem[];
|
|
18
|
+
/** Arbitrary payload data */
|
|
19
|
+
data?: unknown;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Tree component state
|
|
23
|
+
*/
|
|
24
|
+
interface TreeState {
|
|
25
|
+
/** Currently selected item ID */
|
|
26
|
+
selectedId: string | null;
|
|
27
|
+
/** Set of expanded item IDs */
|
|
28
|
+
expandedIds: Set<string>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Tree component actions
|
|
32
|
+
*/
|
|
33
|
+
interface TreeActions {
|
|
34
|
+
/** Select an item by ID */
|
|
35
|
+
select: (id: string | null) => void;
|
|
36
|
+
/** Toggle an item's expanded state */
|
|
37
|
+
toggleExpanded: (id: string) => void;
|
|
38
|
+
/** Set an item's expanded state explicitly */
|
|
39
|
+
setExpanded: (id: string, expanded: boolean) => void;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Tree context provided to tree items
|
|
43
|
+
*/
|
|
44
|
+
interface TreeContext {
|
|
45
|
+
state: TreeState;
|
|
46
|
+
actions: TreeActions;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Lit context for tree components
|
|
50
|
+
*/
|
|
51
|
+
declare const treeContext: {
|
|
52
|
+
__context__: TreeContext;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Helper to collect all item IDs from a tree (for default expanded state)
|
|
56
|
+
*/
|
|
57
|
+
declare function collectAllIds(items: TreeItem[]): Set<string>;
|
|
58
|
+
//#endregion
|
|
59
|
+
export { TreeActions, TreeContext, TreeItem, TreeState, collectAllIds, treeContext };
|
|
60
|
+
//# sourceMappingURL=treeContext.d.ts.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { createContext } from "@lit/context";
|
|
2
|
+
|
|
3
|
+
//#region src/gui/tree/treeContext.ts
|
|
4
|
+
/**
|
|
5
|
+
* Lit context for tree components
|
|
6
|
+
*/
|
|
7
|
+
const treeContext = createContext("ef-tree-context");
|
|
8
|
+
/**
|
|
9
|
+
* Helper to collect all item IDs from a tree (for default expanded state)
|
|
10
|
+
*/
|
|
11
|
+
function collectAllIds(items) {
|
|
12
|
+
const ids = /* @__PURE__ */ new Set();
|
|
13
|
+
function traverse(item) {
|
|
14
|
+
ids.add(item.id);
|
|
15
|
+
if (item.children) for (const child of item.children) traverse(child);
|
|
16
|
+
}
|
|
17
|
+
for (const item of items) traverse(item);
|
|
18
|
+
return ids;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
export { collectAllIds, treeContext };
|
|
23
|
+
//# sourceMappingURL=treeContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"treeContext.js","names":[],"sources":["../../../src/gui/tree/treeContext.ts"],"sourcesContent":["import { createContext } from \"@lit/context\";\nimport type { TemplateResult } from \"lit\";\n\n/**\n * Generic tree item data structure.\n * Used by ef-tree for data-driven tree rendering.\n */\nexport interface TreeItem {\n /** Unique identifier for this item */\n id: string;\n /** Display label */\n label: string;\n /** Optional icon (Lit TemplateResult or string) */\n icon?: TemplateResult | string;\n /** Child items (folders have children, leaves don't) */\n children?: TreeItem[];\n /** Arbitrary payload data */\n data?: unknown;\n}\n\n/**\n * Tree component state\n */\nexport interface TreeState {\n /** Currently selected item ID */\n selectedId: string | null;\n /** Set of expanded item IDs */\n expandedIds: Set<string>;\n}\n\n/**\n * Tree component actions\n */\nexport interface TreeActions {\n /** Select an item by ID */\n select: (id: string | null) => void;\n /** Toggle an item's expanded state */\n toggleExpanded: (id: string) => void;\n /** Set an item's expanded state explicitly */\n setExpanded: (id: string, expanded: boolean) => void;\n}\n\n/**\n * Tree context provided to tree items\n */\nexport interface TreeContext {\n state: TreeState;\n actions: TreeActions;\n}\n\n/**\n * Lit context for tree components\n */\nexport const treeContext = createContext<TreeContext>(\"ef-tree-context\");\n\n/**\n * Helper to collect all item IDs from a tree (for default expanded state)\n */\nexport function collectAllIds(items: TreeItem[]): Set<string> {\n const ids = new Set<string>();\n \n function traverse(item: TreeItem) {\n ids.add(item.id);\n if (item.children) {\n for (const child of item.children) {\n traverse(child);\n }\n }\n }\n \n for (const item of items) {\n traverse(item);\n }\n \n return ids;\n}\n"],"mappings":";;;;;;AAqDA,MAAa,cAAc,cAA2B,kBAAkB;;;;AAKxE,SAAgB,cAAc,OAAgC;CAC5D,MAAM,sBAAM,IAAI,KAAa;CAE7B,SAAS,SAAS,MAAgB;AAChC,MAAI,IAAI,KAAK,GAAG;AAChB,MAAI,KAAK,SACP,MAAK,MAAM,SAAS,KAAK,SACvB,UAAS,MAAM;;AAKrB,MAAK,MAAM,QAAQ,MACjB,UAAS,KAAK;AAGhB,QAAO"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,29 +1,53 @@
|
|
|
1
1
|
import { TraceContext } from "./otel/tracingHelpers.js";
|
|
2
|
+
import { TemporalMixinInterface, isEFTemporal } from "./elements/EFTemporal.js";
|
|
2
3
|
import { EFMedia } from "./elements/EFMedia.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { ContainerInfo, getContainerInfoFromElement } from "./elements/ContainerInfo.js";
|
|
5
|
+
import { ElementPositionInfo, PositionInfoMixin, getPositionInfoFromElement } from "./elements/ElementPositionInfo.js";
|
|
6
|
+
import { CanvasElementBounds, CanvasElementData, SelectionState } from "./canvas/api/types.js";
|
|
7
|
+
import { EFPanZoom, PanZoomTransform } from "./elements/EFPanZoom.js";
|
|
8
|
+
import { EFOverlayItem, OverlayItemPosition } from "./gui/EFOverlayItem.js";
|
|
9
|
+
import { EFOverlayLayer } from "./gui/EFOverlayLayer.js";
|
|
10
|
+
import { EFTransformHandles, TransformBounds } from "./gui/EFTransformHandles.js";
|
|
11
|
+
import { EFCanvas } from "./canvas/EFCanvas.js";
|
|
12
|
+
import { EFHierarchy } from "./gui/hierarchy/EFHierarchy.js";
|
|
13
|
+
import { EFTrimHandles, TrimChangeDetail } from "./gui/timeline/TrimHandles.js";
|
|
6
14
|
import { EFVideo } from "./elements/EFVideo.js";
|
|
15
|
+
import { EFThumbnailStrip } from "./elements/EFThumbnailStrip.js";
|
|
16
|
+
import { EFAudio } from "./elements/EFAudio.js";
|
|
7
17
|
import { EFCaptions, EFCaptionsActiveWord, EFCaptionsAfterActiveWord, EFCaptionsBeforeActiveWord, EFCaptionsSegment } from "./elements/EFCaptions.js";
|
|
18
|
+
import { EFTimelineRuler, calculateFrameIntervalMs, calculatePixelsPerFrame, quantizeToFrameTimeMs, shouldShowFrameMarkers } from "./gui/EFTimelineRuler.js";
|
|
19
|
+
import { EFTimeline } from "./gui/timeline/EFTimeline.js";
|
|
20
|
+
import { EFFilmstrip } from "./gui/EFFilmstrip.js";
|
|
21
|
+
import { EFFitScale } from "./gui/EFFitScale.js";
|
|
22
|
+
import { EFWorkbench } from "./gui/EFWorkbench.js";
|
|
23
|
+
import { EFTimegroup } from "./elements/EFTimegroup.js";
|
|
24
|
+
import { elementNeedsFitScale, needsFitScale } from "./gui/FitScaleHelpers.js";
|
|
25
|
+
import { EFImage } from "./elements/EFImage.js";
|
|
8
26
|
import { EFTextSegment } from "./elements/EFTextSegment.js";
|
|
9
27
|
import { EFText } from "./elements/EFText.js";
|
|
10
28
|
import { EFWaveform } from "./elements/EFWaveform.js";
|
|
11
29
|
import { EFConfiguration } from "./gui/EFConfiguration.js";
|
|
12
|
-
import { EFWorkbench } from "./gui/EFWorkbench.js";
|
|
13
30
|
import { EFPreview } from "./gui/EFPreview.js";
|
|
14
|
-
import {
|
|
31
|
+
import { HierarchyActions, HierarchyContext, HierarchyState, hierarchyContext } from "./gui/hierarchy/hierarchyContext.js";
|
|
32
|
+
import { EFAudioHierarchyItem, EFCaptionsActiveWordHierarchyItem, EFCaptionsHierarchyItem, EFHTMLHierarchyItem, EFHierarchyItem, EFImageHierarchyItem, EFTextHierarchyItem, EFTextSegmentHierarchyItem, EFTimegroupHierarchyItem, EFVideoHierarchyItem, EFWaveformHierarchyItem } from "./gui/hierarchy/EFHierarchyItem.js";
|
|
33
|
+
import { TreeActions, TreeContext, TreeItem, TreeState, collectAllIds, treeContext } from "./gui/tree/treeContext.js";
|
|
34
|
+
import { EFTreeItem } from "./gui/tree/EFTreeItem.js";
|
|
35
|
+
import { EFTree } from "./gui/tree/EFTree.js";
|
|
15
36
|
import { EFTogglePlay } from "./gui/EFTogglePlay.js";
|
|
16
37
|
import { EFPlay } from "./gui/EFPlay.js";
|
|
17
38
|
import { EFPause } from "./gui/EFPause.js";
|
|
18
39
|
import { EFToggleLoop } from "./gui/EFToggleLoop.js";
|
|
19
40
|
import { EFScrubber } from "./gui/EFScrubber.js";
|
|
20
41
|
import { EFTimeDisplay } from "./gui/EFTimeDisplay.js";
|
|
42
|
+
import { EFActiveRootTemporal } from "./gui/EFActiveRootTemporal.js";
|
|
21
43
|
import { DialChangeDetail, EFDial } from "./gui/EFDial.js";
|
|
22
44
|
import { EFControls } from "./gui/EFControls.js";
|
|
23
45
|
import { EFFocusOverlay } from "./gui/EFFocusOverlay.js";
|
|
46
|
+
import { getCornerPoint, getOppositeCorner, rotatePoint } from "./gui/transformUtils.js";
|
|
24
47
|
import { BoxBounds, EFResizableBox } from "./gui/EFResizableBox.js";
|
|
25
|
-
import { EFFitScale } from "./gui/EFFitScale.js";
|
|
26
48
|
import { EFSurface } from "./elements/EFSurface.js";
|
|
27
|
-
import {
|
|
49
|
+
import { EFCanvasItem } from "./canvas/EFCanvasItem.js";
|
|
50
|
+
import { CanvasAPI } from "./canvas/api/CanvasAPI.js";
|
|
51
|
+
import { SelectionModel } from "./canvas/selection/SelectionModel.js";
|
|
28
52
|
import { RenderInfo, getRenderInfo } from "./getRenderInfo.js";
|
|
29
|
-
export { type BoxBounds, type DialChangeDetail, EFAudio, EFCaptions, EFCaptionsActiveWord, EFCaptionsAfterActiveWord, EFCaptionsBeforeActiveWord, EFCaptionsSegment, EFConfiguration, EFControls, EFDial, EFFilmstrip, EFFitScale, EFFocusOverlay, EFImage, type EFMedia, EFPause, EFPlay, EFPreview, EFResizableBox, EFScrubber, EFSurface, EFText, EFTextSegment, EFThumbnailStrip, EFTimeDisplay, EFTimegroup, EFToggleLoop, EFTogglePlay, EFVideo, EFWaveform, EFWorkbench, RenderInfo, type TraceContext, getRenderInfo };
|
|
53
|
+
export { type BoxBounds, CanvasAPI, type CanvasElementBounds, type CanvasElementData, type ContainerInfo, type DialChangeDetail, EFActiveRootTemporal, EFAudio, EFAudioHierarchyItem, EFCanvas, EFCanvasItem, EFCaptions, EFCaptionsActiveWord, EFCaptionsActiveWordHierarchyItem, EFCaptionsAfterActiveWord, EFCaptionsBeforeActiveWord, EFCaptionsHierarchyItem, EFCaptionsSegment, EFConfiguration, EFControls, EFDial, EFFilmstrip, EFFitScale, EFFocusOverlay, EFHTMLHierarchyItem, EFHierarchy, EFHierarchyItem, EFImage, EFImageHierarchyItem, type EFMedia, EFOverlayItem, EFOverlayLayer, EFPanZoom, EFPause, EFPlay, EFPreview, EFResizableBox, EFScrubber, EFSurface, EFText, EFTextHierarchyItem, EFTextSegment, EFTextSegmentHierarchyItem, EFThumbnailStrip, EFTimeDisplay, EFTimegroup, EFTimegroupHierarchyItem, EFTimeline, EFTimelineRuler, EFToggleLoop, EFTogglePlay, EFTransformHandles, EFTree, EFTreeItem, EFTrimHandles, EFVideo, EFVideoHierarchyItem, EFWaveform, EFWaveformHierarchyItem, EFWorkbench, type ElementPositionInfo, type HierarchyActions, type HierarchyContext, type HierarchyState, type OverlayItemPosition, type PanZoomTransform, PositionInfoMixin, RenderInfo, SelectionModel, type SelectionState, type TemporalMixinInterface, type TraceContext, type TransformBounds, type TreeActions, type TreeContext, type TreeItem, type TreeState, type TrimChangeDetail, calculateFrameIntervalMs, calculatePixelsPerFrame, collectAllIds, elementNeedsFitScale, getContainerInfoFromElement, getCornerPoint, getOppositeCorner, getPositionInfoFromElement, getRenderInfo, hierarchyContext, isEFTemporal, needsFitScale, quantizeToFrameTimeMs, rotatePoint, shouldShowFrameMarkers, treeContext };
|