@editframe/elements 0.30.2-beta.0 → 0.31.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/EF_FRAMEGEN.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 +129 -56
- package/dist/elements/EFThumbnailStrip.js +605 -359
- package/dist/elements/EFThumbnailStrip.js.map +1 -1
- package/dist/elements/EFTimegroup.d.ts +233 -25
- package/dist/elements/EFTimegroup.js +865 -144
- 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 +154 -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 +171 -28
- 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 +7 -1
- 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/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 +178 -0
- 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 +833 -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/preview/workers/encoderWorkerInline.js +103 -0
- package/dist/preview/workers/encoderWorkerInline.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 +71 -67
- 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,338 @@
|
|
|
1
|
+
import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.94.0/helpers/decorate.js";
|
|
2
|
+
import { isEFTemporal } from "../../elements/EFTemporal.js";
|
|
3
|
+
import { TWMixin } from "../TWMixin2.js";
|
|
4
|
+
import { TargetController } from "../../elements/TargetController.js";
|
|
5
|
+
import { selectionContext } from "../../canvas/selection/selectionContext.js";
|
|
6
|
+
import { hierarchyContext } from "./hierarchyContext.js";
|
|
7
|
+
import { renderHierarchyChildren } from "./EFHierarchyItem.js";
|
|
8
|
+
import { consume, provide } from "@lit/context";
|
|
9
|
+
import { LitElement, css, html, nothing } from "lit";
|
|
10
|
+
import { customElement, property, state } from "lit/decorators.js";
|
|
11
|
+
|
|
12
|
+
//#region src/gui/hierarchy/EFHierarchy.ts
|
|
13
|
+
let EFHierarchy = class EFHierarchy$1 extends TWMixin(LitElement) {
|
|
14
|
+
constructor(..._args) {
|
|
15
|
+
super(..._args);
|
|
16
|
+
this.target = "";
|
|
17
|
+
this.header = "";
|
|
18
|
+
this.showHeader = false;
|
|
19
|
+
this.targetElement = null;
|
|
20
|
+
this.hierarchyState = {
|
|
21
|
+
selectedElementId: null,
|
|
22
|
+
expandedIds: /* @__PURE__ */ new Set(),
|
|
23
|
+
draggedElementId: null,
|
|
24
|
+
dropTargetId: null,
|
|
25
|
+
dropPosition: null
|
|
26
|
+
};
|
|
27
|
+
this.hierarchyActions = {
|
|
28
|
+
select: (elementId) => {
|
|
29
|
+
const selectionCtx = this.getCanvasSelectionContext();
|
|
30
|
+
if (selectionCtx) if (elementId) {
|
|
31
|
+
const element = document.getElementById(elementId);
|
|
32
|
+
if (element) {
|
|
33
|
+
const canvas = element.closest("ef-canvas");
|
|
34
|
+
if (canvas && canvas.tryRegisterElement) canvas.tryRegisterElement(element);
|
|
35
|
+
}
|
|
36
|
+
selectionCtx.select(elementId);
|
|
37
|
+
} else selectionCtx.clear();
|
|
38
|
+
else this.hierarchyState = {
|
|
39
|
+
...this.hierarchyState,
|
|
40
|
+
selectedElementId: elementId
|
|
41
|
+
};
|
|
42
|
+
this.dispatchEvent(new CustomEvent("hierarchy-select", {
|
|
43
|
+
detail: { elementId },
|
|
44
|
+
bubbles: true,
|
|
45
|
+
composed: true
|
|
46
|
+
}));
|
|
47
|
+
},
|
|
48
|
+
toggleExpanded: (elementId) => {
|
|
49
|
+
const newExpanded = new Set(this.hierarchyState.expandedIds);
|
|
50
|
+
if (newExpanded.has(elementId)) newExpanded.delete(elementId);
|
|
51
|
+
else newExpanded.add(elementId);
|
|
52
|
+
this.hierarchyState = {
|
|
53
|
+
...this.hierarchyState,
|
|
54
|
+
expandedIds: newExpanded
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
setExpanded: (elementId, expanded) => {
|
|
58
|
+
const newExpanded = new Set(this.hierarchyState.expandedIds);
|
|
59
|
+
if (expanded) newExpanded.add(elementId);
|
|
60
|
+
else newExpanded.delete(elementId);
|
|
61
|
+
this.hierarchyState = {
|
|
62
|
+
...this.hierarchyState,
|
|
63
|
+
expandedIds: newExpanded
|
|
64
|
+
};
|
|
65
|
+
},
|
|
66
|
+
startDrag: (elementId) => {
|
|
67
|
+
this.hierarchyState = {
|
|
68
|
+
...this.hierarchyState,
|
|
69
|
+
draggedElementId: elementId
|
|
70
|
+
};
|
|
71
|
+
},
|
|
72
|
+
updateDropTarget: (targetId, position) => {
|
|
73
|
+
if (targetId === this.hierarchyState.draggedElementId) return;
|
|
74
|
+
this.hierarchyState = {
|
|
75
|
+
...this.hierarchyState,
|
|
76
|
+
dropTargetId: targetId,
|
|
77
|
+
dropPosition: position
|
|
78
|
+
};
|
|
79
|
+
},
|
|
80
|
+
endDrag: () => {
|
|
81
|
+
this.hierarchyState = {
|
|
82
|
+
...this.hierarchyState,
|
|
83
|
+
draggedElementId: null,
|
|
84
|
+
dropTargetId: null,
|
|
85
|
+
dropPosition: null
|
|
86
|
+
};
|
|
87
|
+
},
|
|
88
|
+
reorder: (sourceId, targetId, position) => {
|
|
89
|
+
this.dispatchEvent(new CustomEvent("hierarchy-reorder", {
|
|
90
|
+
detail: {
|
|
91
|
+
sourceId,
|
|
92
|
+
targetId,
|
|
93
|
+
position
|
|
94
|
+
},
|
|
95
|
+
bubbles: true,
|
|
96
|
+
composed: true
|
|
97
|
+
}));
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
this.providedContext = {
|
|
101
|
+
state: this.hierarchyState,
|
|
102
|
+
actions: this.hierarchyActions,
|
|
103
|
+
getCanvasSelectionContext: () => this.getCanvasSelectionContext(),
|
|
104
|
+
getHighlightedElement: () => this.getHighlightedElement(),
|
|
105
|
+
setHighlightedElement: (el) => this.setHighlightedElement(el)
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
static {
|
|
109
|
+
this.styles = [css`
|
|
110
|
+
:host {
|
|
111
|
+
display: block;
|
|
112
|
+
overflow: auto;
|
|
113
|
+
height: 100%;
|
|
114
|
+
font-size: 12px;
|
|
115
|
+
|
|
116
|
+
--hierarchy-bg: rgb(30 41 59);
|
|
117
|
+
--hierarchy-border: rgb(71 85 105);
|
|
118
|
+
--hierarchy-text: rgb(226 232 240);
|
|
119
|
+
--hierarchy-hover-bg: rgba(148, 163, 184, 0.2);
|
|
120
|
+
--hierarchy-selected-bg: rgba(59, 130, 246, 0.3);
|
|
121
|
+
--hierarchy-ancestor-selected-bg: rgba(59, 130, 246, 0.15);
|
|
122
|
+
--hierarchy-focused-bg: rgba(148, 163, 184, 0.4);
|
|
123
|
+
--hierarchy-drop-indicator: #3b82f6;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
:host(.light) {
|
|
127
|
+
--hierarchy-bg: rgb(241 245 249);
|
|
128
|
+
--hierarchy-border: rgb(203 213 225);
|
|
129
|
+
--hierarchy-text: rgb(30 41 59);
|
|
130
|
+
--hierarchy-hover-bg: rgba(100, 116, 139, 0.15);
|
|
131
|
+
--hierarchy-selected-bg: rgba(59, 130, 246, 0.2);
|
|
132
|
+
--hierarchy-ancestor-selected-bg: rgba(59, 130, 246, 0.1);
|
|
133
|
+
--hierarchy-focused-bg: rgba(100, 116, 139, 0.25);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.hierarchy-container {
|
|
137
|
+
background: var(--hierarchy-bg);
|
|
138
|
+
color: var(--hierarchy-text);
|
|
139
|
+
min-height: 100%;
|
|
140
|
+
padding: 4px 0;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.header {
|
|
144
|
+
padding: 8px 12px;
|
|
145
|
+
font-weight: 600;
|
|
146
|
+
font-size: 11px;
|
|
147
|
+
text-transform: uppercase;
|
|
148
|
+
letter-spacing: 0.05em;
|
|
149
|
+
color: rgba(148, 163, 184, 0.8);
|
|
150
|
+
border-bottom: 1px solid var(--hierarchy-border);
|
|
151
|
+
margin-bottom: 4px;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.empty {
|
|
155
|
+
padding: 16px;
|
|
156
|
+
text-align: center;
|
|
157
|
+
color: rgba(148, 163, 184, 0.6);
|
|
158
|
+
font-style: italic;
|
|
159
|
+
}
|
|
160
|
+
`];
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Get the target canvas element.
|
|
164
|
+
* The canvas is the source of truth for selection and highlight state.
|
|
165
|
+
*/
|
|
166
|
+
getCanvas() {
|
|
167
|
+
if (this.targetElement && this.targetElement.selectionContext) return this.targetElement;
|
|
168
|
+
if (this.target) {
|
|
169
|
+
const target = document.getElementById(this.target);
|
|
170
|
+
if (target && target.selectionContext) return target;
|
|
171
|
+
}
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Get canvas selection context from the target canvas element.
|
|
176
|
+
* Used when hierarchy is a sibling of canvas (can't access via Lit context).
|
|
177
|
+
*/
|
|
178
|
+
getCanvasSelectionContext() {
|
|
179
|
+
if (this.canvasSelectionContext) return this.canvasSelectionContext;
|
|
180
|
+
return this.getCanvas()?.selectionContext;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Get the currently highlighted element from the canvas.
|
|
184
|
+
*/
|
|
185
|
+
getHighlightedElement() {
|
|
186
|
+
return this.getCanvas()?.highlightedElement ?? null;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Set the highlighted element on the canvas.
|
|
190
|
+
* Called when user hovers an item in the hierarchy.
|
|
191
|
+
*/
|
|
192
|
+
setHighlightedElement(element) {
|
|
193
|
+
this.getCanvas()?.setHighlightedElement(element);
|
|
194
|
+
}
|
|
195
|
+
getTargetElement() {
|
|
196
|
+
if (this.targetElement) return this.targetElement;
|
|
197
|
+
if (this.target) return document.getElementById(this.target);
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
getRootElements() {
|
|
201
|
+
const target = this.getTargetElement();
|
|
202
|
+
if (!target) return [];
|
|
203
|
+
if (isEFTemporal(target)) return [target];
|
|
204
|
+
return Array.from(target.children);
|
|
205
|
+
}
|
|
206
|
+
initializeExpandedState() {
|
|
207
|
+
const roots = this.getRootElements();
|
|
208
|
+
const newExpanded = /* @__PURE__ */ new Set();
|
|
209
|
+
const addExpandedIds = (element) => {
|
|
210
|
+
if (element.id) newExpanded.add(element.id);
|
|
211
|
+
for (const child of Array.from(element.children)) if (child.children.length > 0) addExpandedIds(child);
|
|
212
|
+
};
|
|
213
|
+
for (const root of roots) addExpandedIds(root);
|
|
214
|
+
this.hierarchyState = {
|
|
215
|
+
...this.hierarchyState,
|
|
216
|
+
expandedIds: newExpanded
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
select(elementId) {
|
|
220
|
+
this.hierarchyActions.select(elementId);
|
|
221
|
+
}
|
|
222
|
+
getSelectedElementId() {
|
|
223
|
+
const selectionCtx = this.getCanvasSelectionContext();
|
|
224
|
+
if (selectionCtx) {
|
|
225
|
+
const selectedIds = Array.from(selectionCtx.selectedIds);
|
|
226
|
+
if (selectedIds.length === 0) return null;
|
|
227
|
+
return selectedIds[0];
|
|
228
|
+
}
|
|
229
|
+
return this.hierarchyState.selectedElementId;
|
|
230
|
+
}
|
|
231
|
+
willUpdate(changedProperties) {
|
|
232
|
+
if (changedProperties.has("target") && !this.targetController) this.targetController = new TargetController(this);
|
|
233
|
+
this.setupSelectionListener();
|
|
234
|
+
const selectionCtx = this.getCanvasSelectionContext();
|
|
235
|
+
if (selectionCtx) {
|
|
236
|
+
const selectedIds = Array.from(selectionCtx.selectedIds);
|
|
237
|
+
const selectedId = selectedIds.length === 0 ? null : selectedIds[0];
|
|
238
|
+
if (this.hierarchyState.selectedElementId !== selectedId) this.hierarchyState = {
|
|
239
|
+
...this.hierarchyState,
|
|
240
|
+
selectedElementId: selectedId
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
this.providedContext = {
|
|
244
|
+
state: this.hierarchyState,
|
|
245
|
+
actions: this.hierarchyActions,
|
|
246
|
+
getCanvasSelectionContext: () => this.getCanvasSelectionContext(),
|
|
247
|
+
getHighlightedElement: () => this.getHighlightedElement(),
|
|
248
|
+
setHighlightedElement: (el) => this.setHighlightedElement(el)
|
|
249
|
+
};
|
|
250
|
+
super.willUpdate(changedProperties);
|
|
251
|
+
}
|
|
252
|
+
connectedCallback() {
|
|
253
|
+
super.connectedCallback();
|
|
254
|
+
this.initializeExpandedState();
|
|
255
|
+
this.setupSelectionListener();
|
|
256
|
+
}
|
|
257
|
+
disconnectedCallback() {
|
|
258
|
+
super.disconnectedCallback();
|
|
259
|
+
this.removeSelectionListener();
|
|
260
|
+
}
|
|
261
|
+
updated(changedProperties) {
|
|
262
|
+
super.updated(changedProperties);
|
|
263
|
+
if (changedProperties.has("targetElement") || changedProperties.has("target")) {
|
|
264
|
+
this.initializeExpandedState();
|
|
265
|
+
this.removeSelectionListener();
|
|
266
|
+
this.selectionChangeHandler = void 0;
|
|
267
|
+
this.setupSelectionListener();
|
|
268
|
+
this.autoSelectFirstRootTimegroup();
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Auto-select the first root timegroup if nothing is currently selected
|
|
273
|
+
*/
|
|
274
|
+
autoSelectFirstRootTimegroup() {
|
|
275
|
+
if (this.getSelectedElementId()) return;
|
|
276
|
+
const roots = this.getRootElements();
|
|
277
|
+
for (const root of roots) if (root.tagName.toLowerCase() === "ef-timegroup" && root.id) {
|
|
278
|
+
this.hierarchyActions.select(root.id);
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
for (const root of roots) if (root.id) {
|
|
282
|
+
this.hierarchyActions.select(root.id);
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
setupSelectionListener() {
|
|
287
|
+
if (this.selectionChangeHandler) return;
|
|
288
|
+
const selectionCtx = this.getCanvasSelectionContext();
|
|
289
|
+
if (selectionCtx && "addEventListener" in selectionCtx) {
|
|
290
|
+
this.selectionChangeHandler = () => {
|
|
291
|
+
this.requestUpdate();
|
|
292
|
+
};
|
|
293
|
+
selectionCtx.addEventListener("selectionchange", this.selectionChangeHandler);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
removeSelectionListener() {
|
|
297
|
+
const selectionCtx = this.getCanvasSelectionContext();
|
|
298
|
+
if (selectionCtx && "removeEventListener" in selectionCtx && this.selectionChangeHandler) {
|
|
299
|
+
selectionCtx.removeEventListener("selectionchange", this.selectionChangeHandler);
|
|
300
|
+
this.selectionChangeHandler = void 0;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
render() {
|
|
304
|
+
const roots = this.getRootElements();
|
|
305
|
+
return html`
|
|
306
|
+
<div class="hierarchy-container">
|
|
307
|
+
${this.showHeader ? html`<div class="header">${this.header}</div>` : nothing}
|
|
308
|
+
${roots.length > 0 ? renderHierarchyChildren(roots, this.hideSelectors, this.showSelectors, true) : html`<div class="empty">No elements</div>`}
|
|
309
|
+
</div>
|
|
310
|
+
`;
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
__decorate([property({ type: String })], EFHierarchy.prototype, "target", void 0);
|
|
314
|
+
__decorate([property({ type: String })], EFHierarchy.prototype, "header", void 0);
|
|
315
|
+
__decorate([property({
|
|
316
|
+
type: Boolean,
|
|
317
|
+
attribute: "show-header"
|
|
318
|
+
})], EFHierarchy.prototype, "showHeader", void 0);
|
|
319
|
+
__decorate([property({
|
|
320
|
+
type: Array,
|
|
321
|
+
attribute: false
|
|
322
|
+
})], EFHierarchy.prototype, "hideSelectors", void 0);
|
|
323
|
+
__decorate([property({
|
|
324
|
+
type: Array,
|
|
325
|
+
attribute: false
|
|
326
|
+
})], EFHierarchy.prototype, "showSelectors", void 0);
|
|
327
|
+
__decorate([state()], EFHierarchy.prototype, "targetElement", void 0);
|
|
328
|
+
__decorate([consume({
|
|
329
|
+
context: selectionContext,
|
|
330
|
+
subscribe: true
|
|
331
|
+
})], EFHierarchy.prototype, "canvasSelectionContext", void 0);
|
|
332
|
+
__decorate([state()], EFHierarchy.prototype, "hierarchyState", void 0);
|
|
333
|
+
__decorate([provide({ context: hierarchyContext }), state()], EFHierarchy.prototype, "providedContext", void 0);
|
|
334
|
+
EFHierarchy = __decorate([customElement("ef-hierarchy")], EFHierarchy);
|
|
335
|
+
|
|
336
|
+
//#endregion
|
|
337
|
+
export { EFHierarchy };
|
|
338
|
+
//# sourceMappingURL=EFHierarchy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EFHierarchy.js","names":["EFHierarchy","selectedId: string | null"],"sources":["../../../src/gui/hierarchy/EFHierarchy.ts"],"sourcesContent":["import { consume, provide } from \"@lit/context\";\nimport { css, html, LitElement, nothing, type PropertyValues } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\n\nimport { isEFTemporal } from \"../../elements/EFTemporal.js\";\nimport { selectionContext } from \"../../canvas/selection/selectionContext.js\";\nimport { TargetController } from \"../../elements/TargetController.js\";\nimport { TWMixin } from \"../TWMixin.js\";\nimport {\n type HierarchyActions,\n type HierarchyContext,\n type HierarchyState,\n hierarchyContext,\n} from \"./hierarchyContext.js\";\nimport { renderHierarchyChildren } from \"./EFHierarchyItem.js\";\nimport type { EFCanvas } from \"../../canvas/EFCanvas.js\";\n\n@customElement(\"ef-hierarchy\")\nexport class EFHierarchy extends TWMixin(LitElement) {\n static styles = [\n css`\n :host {\n display: block;\n overflow: auto;\n height: 100%;\n font-size: 12px;\n \n --hierarchy-bg: rgb(30 41 59);\n --hierarchy-border: rgb(71 85 105);\n --hierarchy-text: rgb(226 232 240);\n --hierarchy-hover-bg: rgba(148, 163, 184, 0.2);\n --hierarchy-selected-bg: rgba(59, 130, 246, 0.3);\n --hierarchy-ancestor-selected-bg: rgba(59, 130, 246, 0.15);\n --hierarchy-focused-bg: rgba(148, 163, 184, 0.4);\n --hierarchy-drop-indicator: #3b82f6;\n }\n \n :host(.light) {\n --hierarchy-bg: rgb(241 245 249);\n --hierarchy-border: rgb(203 213 225);\n --hierarchy-text: rgb(30 41 59);\n --hierarchy-hover-bg: rgba(100, 116, 139, 0.15);\n --hierarchy-selected-bg: rgba(59, 130, 246, 0.2);\n --hierarchy-ancestor-selected-bg: rgba(59, 130, 246, 0.1);\n --hierarchy-focused-bg: rgba(100, 116, 139, 0.25);\n }\n \n .hierarchy-container {\n background: var(--hierarchy-bg);\n color: var(--hierarchy-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(--hierarchy-border);\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\n @property({ type: String })\n target = \"\";\n\n @property({ type: String })\n header = \"\";\n\n @property({ type: Boolean, attribute: \"show-header\" })\n showHeader = false;\n\n @property({ type: Array, attribute: false })\n hideSelectors?: string[];\n\n @property({ type: Array, attribute: false })\n showSelectors?: string[];\n\n @state()\n targetElement: Element | null = null;\n\n private targetController?: TargetController;\n\n @consume({ context: selectionContext, subscribe: true })\n canvasSelectionContext?: import(\"../../canvas/selection/selectionContext.js\").SelectionContext;\n\n /**\n * Get the target canvas element.\n * The canvas is the source of truth for selection and highlight state.\n */\n private getCanvas(): EFCanvas | null {\n // First try TargetController (for registered elements like EFCanvas)\n if (this.targetElement && (this.targetElement as any).selectionContext) {\n return this.targetElement as EFCanvas;\n }\n // Fall back to direct lookup for any element with matching ID\n if (this.target) {\n const target = document.getElementById(this.target);\n if (target && (target as any).selectionContext) {\n return target as EFCanvas;\n }\n }\n return null;\n }\n\n /**\n * Get canvas selection context from the target canvas element.\n * Used when hierarchy is a sibling of canvas (can't access via Lit context).\n */\n private getCanvasSelectionContext():\n | import(\"../../canvas/selection/selectionContext.js\").SelectionContext\n | undefined {\n // First try Lit context (works when hierarchy is inside canvas)\n if (this.canvasSelectionContext) {\n return this.canvasSelectionContext;\n }\n // Use target canvas\n const canvas = this.getCanvas();\n return canvas?.selectionContext;\n }\n\n /**\n * Get the currently highlighted element from the canvas.\n */\n getHighlightedElement(): HTMLElement | null {\n const canvas = this.getCanvas();\n return canvas?.highlightedElement ?? null;\n }\n\n /**\n * Set the highlighted element on the canvas.\n * Called when user hovers an item in the hierarchy.\n */\n setHighlightedElement(element: HTMLElement | null): void {\n const canvas = this.getCanvas();\n canvas?.setHighlightedElement(element);\n }\n\n @state()\n private hierarchyState: HierarchyState = {\n selectedElementId: null,\n expandedIds: new Set(),\n draggedElementId: null,\n dropTargetId: null,\n dropPosition: null,\n };\n\n private selectionChangeHandler?: (event: CustomEvent) => void;\n\n private hierarchyActions: HierarchyActions = {\n select: (elementId: string | null) => {\n const selectionCtx = this.getCanvasSelectionContext();\n if (selectionCtx) {\n if (elementId) {\n // Ensure element is registered with canvas before selecting\n const element = document.getElementById(elementId);\n if (element) {\n // Find the canvas element\n const canvas = element.closest(\"ef-canvas\") as any;\n if (canvas && canvas.tryRegisterElement) {\n // Try to register if not already registered\n canvas.tryRegisterElement(element);\n }\n }\n\n // Select the element directly by its ID\n selectionCtx.select(elementId);\n } else {\n selectionCtx.clear();\n }\n } else {\n this.hierarchyState = {\n ...this.hierarchyState,\n selectedElementId: elementId,\n };\n }\n this.dispatchEvent(\n new CustomEvent(\"hierarchy-select\", {\n detail: { elementId },\n bubbles: true,\n composed: true,\n }),\n );\n },\n\n toggleExpanded: (elementId: string) => {\n const newExpanded = new Set(this.hierarchyState.expandedIds);\n if (newExpanded.has(elementId)) {\n newExpanded.delete(elementId);\n } else {\n newExpanded.add(elementId);\n }\n this.hierarchyState = {\n ...this.hierarchyState,\n expandedIds: newExpanded,\n };\n },\n\n setExpanded: (elementId: string, expanded: boolean) => {\n const newExpanded = new Set(this.hierarchyState.expandedIds);\n if (expanded) {\n newExpanded.add(elementId);\n } else {\n newExpanded.delete(elementId);\n }\n this.hierarchyState = {\n ...this.hierarchyState,\n expandedIds: newExpanded,\n };\n },\n\n startDrag: (elementId: string) => {\n this.hierarchyState = {\n ...this.hierarchyState,\n draggedElementId: elementId,\n };\n },\n\n updateDropTarget: (\n targetId: string | null,\n position: \"before\" | \"after\" | \"inside\" | null,\n ) => {\n if (targetId === this.hierarchyState.draggedElementId) {\n return;\n }\n this.hierarchyState = {\n ...this.hierarchyState,\n dropTargetId: targetId,\n dropPosition: position,\n };\n },\n\n endDrag: () => {\n this.hierarchyState = {\n ...this.hierarchyState,\n draggedElementId: null,\n dropTargetId: null,\n dropPosition: null,\n };\n },\n\n reorder: (\n sourceId: string,\n targetId: string,\n position: \"before\" | \"after\" | \"inside\",\n ) => {\n this.dispatchEvent(\n new CustomEvent(\"hierarchy-reorder\", {\n detail: { sourceId, targetId, position },\n bubbles: true,\n composed: true,\n }),\n );\n },\n };\n\n @provide({ context: hierarchyContext })\n @state()\n private providedContext: HierarchyContext = {\n state: this.hierarchyState,\n actions: this.hierarchyActions,\n getCanvasSelectionContext: () => this.getCanvasSelectionContext(),\n getHighlightedElement: () => this.getHighlightedElement(),\n setHighlightedElement: (el) => this.setHighlightedElement(el),\n };\n\n private getTargetElement(): Element | null {\n // First try TargetController (for registered elements like EFCanvas)\n if (this.targetElement) {\n return this.targetElement;\n }\n // Fall back to direct lookup for any element with matching ID\n if (this.target) {\n return document.getElementById(this.target);\n }\n return null;\n }\n\n private getRootElements(): Element[] {\n const target = this.getTargetElement();\n if (!target) return [];\n\n if (isEFTemporal(target)) {\n return [target];\n }\n\n return Array.from(target.children);\n }\n\n private initializeExpandedState(): void {\n const roots = this.getRootElements();\n const newExpanded = new Set<string>();\n\n const addExpandedIds = (element: Element) => {\n if (element.id) {\n newExpanded.add(element.id);\n }\n for (const child of Array.from(element.children)) {\n if (child.children.length > 0) {\n addExpandedIds(child);\n }\n }\n };\n\n for (const root of roots) {\n addExpandedIds(root);\n }\n\n this.hierarchyState = {\n ...this.hierarchyState,\n expandedIds: newExpanded,\n };\n }\n\n select(elementId: string | null): void {\n this.hierarchyActions.select(elementId);\n }\n\n getSelectedElementId(): string | null {\n const selectionCtx = this.getCanvasSelectionContext();\n if (selectionCtx) {\n const selectedIds = Array.from(selectionCtx.selectedIds);\n if (selectedIds.length === 0) {\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return selectedIds[0]!;\n }\n return this.hierarchyState.selectedElementId;\n }\n\n protected willUpdate(changedProperties: PropertyValues): void {\n // Set up TargetController if target changes\n if (changedProperties.has(\"target\") && !this.targetController) {\n this.targetController = new TargetController(this as any);\n }\n\n // Retry setting up selection listener if not yet connected\n this.setupSelectionListener();\n\n // Check for selection changes from canvas (via context or direct access)\n const selectionCtx = this.getCanvasSelectionContext();\n if (selectionCtx) {\n const selectedIds = Array.from(selectionCtx.selectedIds);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const selectedId: string | null =\n selectedIds.length === 0 ? null : selectedIds[0]!;\n\n if (this.hierarchyState.selectedElementId !== selectedId) {\n this.hierarchyState = {\n ...this.hierarchyState,\n selectedElementId: selectedId,\n };\n }\n }\n\n // Always update provided context to ensure children have fresh getters\n this.providedContext = {\n state: this.hierarchyState,\n actions: this.hierarchyActions,\n getCanvasSelectionContext: () => this.getCanvasSelectionContext(),\n getHighlightedElement: () => this.getHighlightedElement(),\n setHighlightedElement: (el) => this.setHighlightedElement(el),\n };\n\n super.willUpdate(changedProperties);\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.initializeExpandedState();\n this.setupSelectionListener();\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeSelectionListener();\n }\n\n protected updated(changedProperties: PropertyValues): void {\n super.updated(changedProperties);\n\n // Re-initialize when target changes\n if (changedProperties.has(\"targetElement\") || changedProperties.has(\"target\")) {\n this.initializeExpandedState();\n this.removeSelectionListener();\n this.selectionChangeHandler = undefined;\n this.setupSelectionListener();\n \n // Auto-select first root timegroup if nothing is selected\n this.autoSelectFirstRootTimegroup();\n }\n }\n\n /**\n * Auto-select the first root timegroup if nothing is currently selected\n */\n private autoSelectFirstRootTimegroup(): void {\n // Only auto-select if nothing is currently selected\n const currentSelection = this.getSelectedElementId();\n if (currentSelection) return;\n\n const roots = this.getRootElements();\n for (const root of roots) {\n // Select the first root that is a timegroup (ef-timegroup)\n if (root.tagName.toLowerCase() === \"ef-timegroup\" && root.id) {\n this.hierarchyActions.select(root.id);\n return;\n }\n }\n\n // Fallback: select first root with an ID\n for (const root of roots) {\n if (root.id) {\n this.hierarchyActions.select(root.id);\n return;\n }\n }\n }\n\n private setupSelectionListener(): void {\n // Don't set up if already set up\n if (this.selectionChangeHandler) {\n return;\n }\n\n const selectionCtx = this.getCanvasSelectionContext();\n if (selectionCtx && \"addEventListener\" in selectionCtx) {\n this.selectionChangeHandler = () => {\n this.requestUpdate(); // Trigger re-render to update hierarchy items\n };\n (selectionCtx as any).addEventListener(\n \"selectionchange\",\n this.selectionChangeHandler,\n );\n }\n }\n\n private removeSelectionListener(): void {\n const selectionCtx = this.getCanvasSelectionContext();\n if (\n selectionCtx &&\n \"removeEventListener\" in selectionCtx &&\n this.selectionChangeHandler\n ) {\n (selectionCtx as any).removeEventListener(\n \"selectionchange\",\n this.selectionChangeHandler,\n );\n this.selectionChangeHandler = undefined;\n }\n }\n\n render() {\n const roots = this.getRootElements();\n\n return html`\n <div class=\"hierarchy-container\">\n ${this.showHeader ? html`<div class=\"header\">${this.header}</div>` : nothing}\n ${\n roots.length > 0\n ? renderHierarchyChildren(\n roots,\n this.hideSelectors,\n this.showSelectors,\n true,\n )\n : html`<div class=\"empty\">No elements</div>`\n }\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-hierarchy\": EFHierarchy;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { SelectionContext } from "../../canvas/selection/selectionContext.js";
|
|
2
|
+
import { EFVideo } from "../../elements/EFVideo.js";
|
|
3
|
+
import { EFAudio } from "../../elements/EFAudio.js";
|
|
4
|
+
import { EFTimegroup } from "../../elements/EFTimegroup.js";
|
|
5
|
+
import { EFImage } from "../../elements/EFImage.js";
|
|
6
|
+
import { HierarchyContext } from "./hierarchyContext.js";
|
|
7
|
+
import * as lit15 from "lit";
|
|
8
|
+
import { LitElement, PropertyValues, TemplateResult, nothing } from "lit";
|
|
9
|
+
|
|
10
|
+
//#region src/gui/hierarchy/EFHierarchyItem.d.ts
|
|
11
|
+
declare const EFHierarchyItem_base: typeof LitElement;
|
|
12
|
+
declare class EFHierarchyItem<ElementType extends HTMLElement = HTMLElement> extends EFHierarchyItem_base {
|
|
13
|
+
static styles: lit15.CSSResult[];
|
|
14
|
+
hierarchyContext?: HierarchyContext;
|
|
15
|
+
canvasSelectionContext?: SelectionContext;
|
|
16
|
+
element: ElementType;
|
|
17
|
+
hideSelectors?: string[];
|
|
18
|
+
showSelectors?: string[];
|
|
19
|
+
temporalOnly: boolean;
|
|
20
|
+
private localExpanded;
|
|
21
|
+
private selectionChangeHandler?;
|
|
22
|
+
get elementId(): string;
|
|
23
|
+
get icon(): TemplateResult<1> | string;
|
|
24
|
+
get typeColor(): string;
|
|
25
|
+
get isFocused(): boolean;
|
|
26
|
+
get isSelected(): boolean;
|
|
27
|
+
get isAncestorSelected(): boolean;
|
|
28
|
+
get isExpanded(): boolean;
|
|
29
|
+
get isDragging(): boolean;
|
|
30
|
+
get isDropTarget(): boolean;
|
|
31
|
+
get dropPosition(): "before" | "after" | "inside" | null;
|
|
32
|
+
get hasChildren(): boolean;
|
|
33
|
+
displayLabel(): TemplateResult<1> | string | typeof nothing;
|
|
34
|
+
private handleClick;
|
|
35
|
+
private handleExpandClick;
|
|
36
|
+
private handleDragStart;
|
|
37
|
+
private handleDragEnd;
|
|
38
|
+
private handleDragOver;
|
|
39
|
+
private handleDragLeave;
|
|
40
|
+
private handleDrop;
|
|
41
|
+
private handleMouseEnter;
|
|
42
|
+
private handleMouseLeave;
|
|
43
|
+
connectedCallback(): void;
|
|
44
|
+
disconnectedCallback(): void;
|
|
45
|
+
protected willUpdate(changedProperties: PropertyValues): void;
|
|
46
|
+
private setupSelectionListener;
|
|
47
|
+
private removeSelectionListener;
|
|
48
|
+
render(): TemplateResult<1>;
|
|
49
|
+
renderChildren(): Array<TemplateResult<1> | typeof nothing> | typeof nothing;
|
|
50
|
+
}
|
|
51
|
+
declare class EFTimegroupHierarchyItem extends EFHierarchyItem<EFTimegroup> {
|
|
52
|
+
get icon(): TemplateResult<1>;
|
|
53
|
+
get typeColor(): string;
|
|
54
|
+
displayLabel(): string | TemplateResult<1> | typeof nothing;
|
|
55
|
+
}
|
|
56
|
+
declare class EFAudioHierarchyItem extends EFHierarchyItem<EFAudio> {
|
|
57
|
+
get icon(): TemplateResult<1>;
|
|
58
|
+
get typeColor(): string;
|
|
59
|
+
displayLabel(): string;
|
|
60
|
+
}
|
|
61
|
+
declare class EFVideoHierarchyItem extends EFHierarchyItem<EFVideo> {
|
|
62
|
+
get icon(): TemplateResult<1>;
|
|
63
|
+
get typeColor(): string;
|
|
64
|
+
displayLabel(): string;
|
|
65
|
+
}
|
|
66
|
+
declare class EFCaptionsHierarchyItem extends EFHierarchyItem {
|
|
67
|
+
get icon(): TemplateResult<1>;
|
|
68
|
+
get typeColor(): string;
|
|
69
|
+
displayLabel(): string;
|
|
70
|
+
}
|
|
71
|
+
declare class EFCaptionsActiveWordHierarchyItem extends EFHierarchyItem {
|
|
72
|
+
get icon(): TemplateResult<1>;
|
|
73
|
+
get typeColor(): string;
|
|
74
|
+
displayLabel(): string;
|
|
75
|
+
}
|
|
76
|
+
declare class EFTextHierarchyItem extends EFHierarchyItem {
|
|
77
|
+
get icon(): TemplateResult<1>;
|
|
78
|
+
get typeColor(): string;
|
|
79
|
+
get hasChildren(): boolean;
|
|
80
|
+
displayLabel(): string;
|
|
81
|
+
renderChildren(): typeof nothing;
|
|
82
|
+
}
|
|
83
|
+
declare class EFTextSegmentHierarchyItem extends EFHierarchyItem {
|
|
84
|
+
get icon(): TemplateResult<1>;
|
|
85
|
+
get typeColor(): string;
|
|
86
|
+
displayLabel(): string;
|
|
87
|
+
}
|
|
88
|
+
declare class EFWaveformHierarchyItem extends EFHierarchyItem {
|
|
89
|
+
get icon(): TemplateResult<1>;
|
|
90
|
+
get typeColor(): string;
|
|
91
|
+
renderChildren(): typeof nothing;
|
|
92
|
+
}
|
|
93
|
+
declare class EFImageHierarchyItem extends EFHierarchyItem<EFImage> {
|
|
94
|
+
get icon(): TemplateResult<1>;
|
|
95
|
+
get typeColor(): string;
|
|
96
|
+
displayLabel(): string;
|
|
97
|
+
}
|
|
98
|
+
declare class EFHTMLHierarchyItem extends EFHierarchyItem {
|
|
99
|
+
get icon(): TemplateResult<1>;
|
|
100
|
+
}
|
|
101
|
+
declare global {
|
|
102
|
+
interface HTMLElementTagNameMap {
|
|
103
|
+
"ef-hierarchy-item": EFHierarchyItem;
|
|
104
|
+
"ef-timegroup-hierarchy-item": EFTimegroupHierarchyItem;
|
|
105
|
+
"ef-audio-hierarchy-item": EFAudioHierarchyItem;
|
|
106
|
+
"ef-video-hierarchy-item": EFVideoHierarchyItem;
|
|
107
|
+
"ef-captions-hierarchy-item": EFCaptionsHierarchyItem;
|
|
108
|
+
"ef-captions-active-word-hierarchy-item": EFCaptionsActiveWordHierarchyItem;
|
|
109
|
+
"ef-text-hierarchy-item": EFTextHierarchyItem;
|
|
110
|
+
"ef-text-segment-hierarchy-item": EFTextSegmentHierarchyItem;
|
|
111
|
+
"ef-waveform-hierarchy-item": EFWaveformHierarchyItem;
|
|
112
|
+
"ef-image-hierarchy-item": EFImageHierarchyItem;
|
|
113
|
+
"ef-html-hierarchy-item": EFHTMLHierarchyItem;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//#endregion
|
|
117
|
+
export { EFAudioHierarchyItem, EFCaptionsActiveWordHierarchyItem, EFCaptionsHierarchyItem, EFHTMLHierarchyItem, EFHierarchyItem, EFImageHierarchyItem, EFTextHierarchyItem, EFTextSegmentHierarchyItem, EFTimegroupHierarchyItem, EFVideoHierarchyItem, EFWaveformHierarchyItem };
|
|
118
|
+
//# sourceMappingURL=EFHierarchyItem.d.ts.map
|