@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.
Files changed (326) hide show
  1. package/dist/EF_FRAMEGEN.d.ts +5 -0
  2. package/dist/EF_FRAMEGEN.js +20 -4
  3. package/dist/EF_FRAMEGEN.js.map +1 -1
  4. package/dist/EF_INTERACTIVE.js.map +1 -1
  5. package/dist/_virtual/rolldown_runtime.js +27 -0
  6. package/dist/canvas/EFCanvas.d.ts +311 -0
  7. package/dist/canvas/EFCanvas.js +1089 -0
  8. package/dist/canvas/EFCanvas.js.map +1 -0
  9. package/dist/canvas/EFCanvasItem.d.ts +55 -0
  10. package/dist/canvas/EFCanvasItem.js +72 -0
  11. package/dist/canvas/EFCanvasItem.js.map +1 -0
  12. package/dist/canvas/api/CanvasAPI.d.ts +115 -0
  13. package/dist/canvas/api/CanvasAPI.js +182 -0
  14. package/dist/canvas/api/CanvasAPI.js.map +1 -0
  15. package/dist/canvas/api/types.d.ts +42 -0
  16. package/dist/canvas/coordinateTransform.js +90 -0
  17. package/dist/canvas/coordinateTransform.js.map +1 -0
  18. package/dist/canvas/getElementBounds.js +40 -0
  19. package/dist/canvas/getElementBounds.js.map +1 -0
  20. package/dist/canvas/overlays/SelectionOverlay.js +265 -0
  21. package/dist/canvas/overlays/SelectionOverlay.js.map +1 -0
  22. package/dist/canvas/overlays/overlayState.js +153 -0
  23. package/dist/canvas/overlays/overlayState.js.map +1 -0
  24. package/dist/canvas/selection/SelectionController.js +105 -0
  25. package/dist/canvas/selection/SelectionController.js.map +1 -0
  26. package/dist/canvas/selection/SelectionModel.d.ts +98 -0
  27. package/dist/canvas/selection/SelectionModel.js +229 -0
  28. package/dist/canvas/selection/SelectionModel.js.map +1 -0
  29. package/dist/canvas/selection/selectionContext.d.ts +31 -0
  30. package/dist/canvas/selection/selectionContext.js +12 -0
  31. package/dist/canvas/selection/selectionContext.js.map +1 -0
  32. package/dist/elements/ContainerInfo.d.ts +29 -0
  33. package/dist/elements/ContainerInfo.js +30 -0
  34. package/dist/elements/ContainerInfo.js.map +1 -0
  35. package/dist/elements/EFAudio.d.ts +13 -3
  36. package/dist/elements/EFAudio.js +64 -10
  37. package/dist/elements/EFAudio.js.map +1 -1
  38. package/dist/elements/EFCaptions.d.ts +18 -16
  39. package/dist/elements/EFCaptions.js +110 -19
  40. package/dist/elements/EFCaptions.js.map +1 -1
  41. package/dist/elements/EFImage.d.ts +16 -6
  42. package/dist/elements/EFImage.js +79 -9
  43. package/dist/elements/EFImage.js.map +1 -1
  44. package/dist/elements/EFMedia/AssetIdMediaEngine.js +51 -4
  45. package/dist/elements/EFMedia/AssetIdMediaEngine.js.map +1 -1
  46. package/dist/elements/EFMedia/AssetMediaEngine.js +125 -52
  47. package/dist/elements/EFMedia/AssetMediaEngine.js.map +1 -1
  48. package/dist/elements/EFMedia/BaseMediaEngine.js +24 -6
  49. package/dist/elements/EFMedia/BaseMediaEngine.js.map +1 -1
  50. package/dist/elements/EFMedia/JitMediaEngine.js +12 -8
  51. package/dist/elements/EFMedia/JitMediaEngine.js.map +1 -1
  52. package/dist/elements/EFMedia/audioTasks/makeAudioBufferTask.js +46 -7
  53. package/dist/elements/EFMedia/audioTasks/makeAudioBufferTask.js.map +1 -1
  54. package/dist/elements/EFMedia/audioTasks/makeAudioFrequencyAnalysisTask.js +98 -73
  55. package/dist/elements/EFMedia/audioTasks/makeAudioFrequencyAnalysisTask.js.map +1 -1
  56. package/dist/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.js +28 -5
  57. package/dist/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.js.map +1 -1
  58. package/dist/elements/EFMedia/audioTasks/makeAudioInputTask.js +18 -6
  59. package/dist/elements/EFMedia/audioTasks/makeAudioInputTask.js.map +1 -1
  60. package/dist/elements/EFMedia/audioTasks/makeAudioSeekTask.js +8 -2
  61. package/dist/elements/EFMedia/audioTasks/makeAudioSeekTask.js.map +1 -1
  62. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentFetchTask.js +31 -6
  63. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentFetchTask.js.map +1 -1
  64. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentIdTask.js +28 -5
  65. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentIdTask.js.map +1 -1
  66. package/dist/elements/EFMedia/audioTasks/makeAudioTimeDomainAnalysisTask.js +97 -72
  67. package/dist/elements/EFMedia/audioTasks/makeAudioTimeDomainAnalysisTask.js.map +1 -1
  68. package/dist/elements/EFMedia/shared/AudioSpanUtils.js +3 -1
  69. package/dist/elements/EFMedia/shared/AudioSpanUtils.js.map +1 -1
  70. package/dist/elements/EFMedia/shared/BufferUtils.js +1 -1
  71. package/dist/elements/EFMedia/shared/BufferUtils.js.map +1 -1
  72. package/dist/elements/EFMedia/shared/ThumbnailExtractor.js +25 -14
  73. package/dist/elements/EFMedia/shared/ThumbnailExtractor.js.map +1 -1
  74. package/dist/elements/EFMedia/tasks/makeMediaEngineTask.js +47 -16
  75. package/dist/elements/EFMedia/tasks/makeMediaEngineTask.js.map +1 -1
  76. package/dist/elements/EFMedia/videoTasks/MainVideoInputCache.js +37 -19
  77. package/dist/elements/EFMedia/videoTasks/MainVideoInputCache.js.map +1 -1
  78. package/dist/elements/EFMedia/videoTasks/ScrubInputCache.js +65 -21
  79. package/dist/elements/EFMedia/videoTasks/ScrubInputCache.js.map +1 -1
  80. package/dist/elements/EFMedia/videoTasks/makeScrubVideoBufferTask.js +8 -3
  81. package/dist/elements/EFMedia/videoTasks/makeScrubVideoBufferTask.js.map +1 -1
  82. package/dist/elements/EFMedia/videoTasks/makeScrubVideoInitSegmentFetchTask.js +32 -9
  83. package/dist/elements/EFMedia/videoTasks/makeScrubVideoInitSegmentFetchTask.js.map +1 -1
  84. package/dist/elements/EFMedia/videoTasks/makeScrubVideoInputTask.js +33 -10
  85. package/dist/elements/EFMedia/videoTasks/makeScrubVideoInputTask.js.map +1 -1
  86. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSeekTask.js +23 -8
  87. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSeekTask.js.map +1 -1
  88. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentFetchTask.js +34 -10
  89. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentFetchTask.js.map +1 -1
  90. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentIdTask.js +31 -8
  91. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentIdTask.js.map +1 -1
  92. package/dist/elements/EFMedia/videoTasks/makeUnifiedVideoSeekTask.js +31 -114
  93. package/dist/elements/EFMedia/videoTasks/makeUnifiedVideoSeekTask.js.map +1 -1
  94. package/dist/elements/EFMedia/videoTasks/makeVideoBufferTask.js +44 -8
  95. package/dist/elements/EFMedia/videoTasks/makeVideoBufferTask.js.map +1 -1
  96. package/dist/elements/EFMedia.d.ts +18 -7
  97. package/dist/elements/EFMedia.js +23 -3
  98. package/dist/elements/EFMedia.js.map +1 -1
  99. package/dist/elements/EFPanZoom.d.ts +96 -0
  100. package/dist/elements/EFPanZoom.js +290 -0
  101. package/dist/elements/EFPanZoom.js.map +1 -0
  102. package/dist/elements/EFSourceMixin.js +7 -6
  103. package/dist/elements/EFSourceMixin.js.map +1 -1
  104. package/dist/elements/EFSurface.d.ts +6 -6
  105. package/dist/elements/EFSurface.js +7 -2
  106. package/dist/elements/EFSurface.js.map +1 -1
  107. package/dist/elements/EFTemporal.d.ts +2 -1
  108. package/dist/elements/EFTemporal.js +192 -71
  109. package/dist/elements/EFTemporal.js.map +1 -1
  110. package/dist/elements/EFText.d.ts +5 -4
  111. package/dist/elements/EFText.js +102 -13
  112. package/dist/elements/EFText.js.map +1 -1
  113. package/dist/elements/EFTextSegment.d.ts +32 -6
  114. package/dist/elements/EFTextSegment.js +53 -15
  115. package/dist/elements/EFTextSegment.js.map +1 -1
  116. package/dist/elements/EFThumbnailStrip.d.ts +129 -56
  117. package/dist/elements/EFThumbnailStrip.js +605 -359
  118. package/dist/elements/EFThumbnailStrip.js.map +1 -1
  119. package/dist/elements/EFTimegroup.d.ts +233 -25
  120. package/dist/elements/EFTimegroup.js +865 -144
  121. package/dist/elements/EFTimegroup.js.map +1 -1
  122. package/dist/elements/EFVideo.d.ts +42 -5
  123. package/dist/elements/EFVideo.js +165 -11
  124. package/dist/elements/EFVideo.js.map +1 -1
  125. package/dist/elements/EFWaveform.d.ts +6 -6
  126. package/dist/elements/EFWaveform.js +2 -1
  127. package/dist/elements/EFWaveform.js.map +1 -1
  128. package/dist/elements/ElementPositionInfo.d.ts +35 -0
  129. package/dist/elements/ElementPositionInfo.js +49 -0
  130. package/dist/elements/ElementPositionInfo.js.map +1 -0
  131. package/dist/elements/FetchMixin.js +16 -1
  132. package/dist/elements/FetchMixin.js.map +1 -1
  133. package/dist/elements/SessionThumbnailCache.js +154 -0
  134. package/dist/elements/SessionThumbnailCache.js.map +1 -0
  135. package/dist/elements/TargetController.js +3 -1
  136. package/dist/elements/TargetController.js.map +1 -1
  137. package/dist/elements/TimegroupController.js +9 -3
  138. package/dist/elements/TimegroupController.js.map +1 -1
  139. package/dist/elements/findRootTemporal.js +30 -0
  140. package/dist/elements/findRootTemporal.js.map +1 -0
  141. package/dist/elements/renderTemporalAudio.js +18 -5
  142. package/dist/elements/renderTemporalAudio.js.map +1 -1
  143. package/dist/elements/updateAnimations.js +171 -28
  144. package/dist/elements/updateAnimations.js.map +1 -1
  145. package/dist/getRenderInfo.d.ts +2 -2
  146. package/dist/gui/ContextMixin.js +4 -2
  147. package/dist/gui/ContextMixin.js.map +1 -1
  148. package/dist/gui/Controllable.js +74 -1
  149. package/dist/gui/Controllable.js.map +1 -1
  150. package/dist/gui/EFActiveRootTemporal.d.ts +50 -0
  151. package/dist/gui/EFActiveRootTemporal.js +94 -0
  152. package/dist/gui/EFActiveRootTemporal.js.map +1 -0
  153. package/dist/gui/EFConfiguration.d.ts +7 -1
  154. package/dist/gui/EFConfiguration.js.map +1 -1
  155. package/dist/gui/EFControls.d.ts +2 -2
  156. package/dist/gui/EFControls.js +109 -13
  157. package/dist/gui/EFControls.js.map +1 -1
  158. package/dist/gui/EFDial.d.ts +4 -4
  159. package/dist/gui/EFFilmstrip.d.ts +11 -214
  160. package/dist/gui/EFFilmstrip.js +53 -1152
  161. package/dist/gui/EFFilmstrip.js.map +1 -1
  162. package/dist/gui/EFFitScale.d.ts +3 -3
  163. package/dist/gui/EFFitScale.js +39 -12
  164. package/dist/gui/EFFitScale.js.map +1 -1
  165. package/dist/gui/EFFocusOverlay.d.ts +4 -4
  166. package/dist/gui/EFOverlayItem.d.ts +48 -0
  167. package/dist/gui/EFOverlayItem.js +97 -0
  168. package/dist/gui/EFOverlayItem.js.map +1 -0
  169. package/dist/gui/EFOverlayLayer.d.ts +70 -0
  170. package/dist/gui/EFOverlayLayer.js +104 -0
  171. package/dist/gui/EFOverlayLayer.js.map +1 -0
  172. package/dist/gui/EFPause.d.ts +4 -4
  173. package/dist/gui/EFPlay.d.ts +4 -4
  174. package/dist/gui/EFResizableBox.d.ts +12 -16
  175. package/dist/gui/EFResizableBox.js +109 -451
  176. package/dist/gui/EFResizableBox.js.map +1 -1
  177. package/dist/gui/EFScrubber.d.ts +30 -5
  178. package/dist/gui/EFScrubber.js +224 -31
  179. package/dist/gui/EFScrubber.js.map +1 -1
  180. package/dist/gui/EFTimeDisplay.d.ts +4 -4
  181. package/dist/gui/EFTimeDisplay.js +4 -1
  182. package/dist/gui/EFTimeDisplay.js.map +1 -1
  183. package/dist/gui/EFTimelineRuler.d.ts +71 -0
  184. package/dist/gui/EFTimelineRuler.js +320 -0
  185. package/dist/gui/EFTimelineRuler.js.map +1 -0
  186. package/dist/gui/EFToggleLoop.d.ts +4 -4
  187. package/dist/gui/EFTogglePlay.d.ts +4 -4
  188. package/dist/gui/EFTransformHandles.d.ts +91 -0
  189. package/dist/gui/EFTransformHandles.js +393 -0
  190. package/dist/gui/EFTransformHandles.js.map +1 -0
  191. package/dist/gui/EFWorkbench.d.ts +178 -0
  192. package/dist/gui/EFWorkbench.js +2067 -22
  193. package/dist/gui/EFWorkbench.js.map +1 -1
  194. package/dist/gui/FitScaleHelpers.d.ts +31 -0
  195. package/dist/gui/FitScaleHelpers.js +41 -0
  196. package/dist/gui/FitScaleHelpers.js.map +1 -0
  197. package/dist/gui/PlaybackController.d.ts +2 -1
  198. package/dist/gui/PlaybackController.js +46 -15
  199. package/dist/gui/PlaybackController.js.map +1 -1
  200. package/dist/gui/TWMixin.js +1 -1
  201. package/dist/gui/TWMixin.js.map +1 -1
  202. package/dist/gui/hierarchy/EFHierarchy.d.ts +65 -0
  203. package/dist/gui/hierarchy/EFHierarchy.js +338 -0
  204. package/dist/gui/hierarchy/EFHierarchy.js.map +1 -0
  205. package/dist/gui/hierarchy/EFHierarchyItem.d.ts +118 -0
  206. package/dist/gui/hierarchy/EFHierarchyItem.js +551 -0
  207. package/dist/gui/hierarchy/EFHierarchyItem.js.map +1 -0
  208. package/dist/gui/hierarchy/hierarchyContext.d.ts +38 -0
  209. package/dist/gui/hierarchy/hierarchyContext.js +8 -0
  210. package/dist/gui/hierarchy/hierarchyContext.js.map +1 -0
  211. package/dist/gui/icons.js +34 -0
  212. package/dist/gui/icons.js.map +1 -0
  213. package/dist/gui/panZoomTransformContext.js +12 -0
  214. package/dist/gui/panZoomTransformContext.js.map +1 -0
  215. package/dist/gui/previewSettingsContext.js +12 -0
  216. package/dist/gui/previewSettingsContext.js.map +1 -0
  217. package/dist/gui/timeline/EFTimeline.d.ts +270 -0
  218. package/dist/gui/timeline/EFTimeline.js +1369 -0
  219. package/dist/gui/timeline/EFTimeline.js.map +1 -0
  220. package/dist/gui/timeline/EFTimelineRow.js +374 -0
  221. package/dist/gui/timeline/EFTimelineRow.js.map +1 -0
  222. package/dist/gui/timeline/TrimHandles.d.ts +36 -0
  223. package/dist/gui/timeline/TrimHandles.js +204 -0
  224. package/dist/gui/timeline/TrimHandles.js.map +1 -0
  225. package/dist/gui/timeline/flattenHierarchy.js +31 -0
  226. package/dist/gui/timeline/flattenHierarchy.js.map +1 -0
  227. package/dist/gui/timeline/timelineStateContext.d.ts +26 -0
  228. package/dist/gui/timeline/timelineStateContext.js +42 -0
  229. package/dist/gui/timeline/timelineStateContext.js.map +1 -0
  230. package/dist/gui/timeline/tracks/AudioTrack.js +264 -0
  231. package/dist/gui/timeline/tracks/AudioTrack.js.map +1 -0
  232. package/dist/gui/timeline/tracks/CaptionsTrack.js +595 -0
  233. package/dist/gui/timeline/tracks/CaptionsTrack.js.map +1 -0
  234. package/dist/gui/timeline/tracks/HTMLTrack.js +19 -0
  235. package/dist/gui/timeline/tracks/HTMLTrack.js.map +1 -0
  236. package/dist/gui/timeline/tracks/ImageTrack.js +53 -0
  237. package/dist/gui/timeline/tracks/ImageTrack.js.map +1 -0
  238. package/dist/gui/timeline/tracks/TextTrack.js +250 -0
  239. package/dist/gui/timeline/tracks/TextTrack.js.map +1 -0
  240. package/dist/gui/timeline/tracks/TimegroupTrack.js +143 -0
  241. package/dist/gui/timeline/tracks/TimegroupTrack.js.map +1 -0
  242. package/dist/gui/timeline/tracks/TrackItem.js +269 -0
  243. package/dist/gui/timeline/tracks/TrackItem.js.map +1 -0
  244. package/dist/gui/timeline/tracks/VideoTrack.js +265 -0
  245. package/dist/gui/timeline/tracks/VideoTrack.js.map +1 -0
  246. package/dist/gui/timeline/tracks/WaveformTrack.js +19 -0
  247. package/dist/gui/timeline/tracks/WaveformTrack.js.map +1 -0
  248. package/dist/gui/timeline/tracks/ensureTrackItemInit.js +1 -0
  249. package/dist/gui/timeline/tracks/preloadTracks.js +9 -0
  250. package/dist/gui/timeline/tracks/renderTrackChildren.js +119 -0
  251. package/dist/gui/timeline/tracks/renderTrackChildren.js.map +1 -0
  252. package/dist/gui/timeline/tracks/waveformUtils.js +80 -0
  253. package/dist/gui/timeline/tracks/waveformUtils.js.map +1 -0
  254. package/dist/gui/transformCalculations.js +217 -0
  255. package/dist/gui/transformCalculations.js.map +1 -0
  256. package/dist/gui/transformUtils.d.ts +37 -0
  257. package/dist/gui/transformUtils.js +77 -0
  258. package/dist/gui/transformUtils.js.map +1 -0
  259. package/dist/gui/tree/EFTree.d.ts +59 -0
  260. package/dist/gui/tree/EFTree.js +174 -0
  261. package/dist/gui/tree/EFTree.js.map +1 -0
  262. package/dist/gui/tree/EFTreeItem.d.ts +38 -0
  263. package/dist/gui/tree/EFTreeItem.js +146 -0
  264. package/dist/gui/tree/EFTreeItem.js.map +1 -0
  265. package/dist/gui/tree/treeContext.d.ts +60 -0
  266. package/dist/gui/tree/treeContext.js +23 -0
  267. package/dist/gui/tree/treeContext.js.map +1 -0
  268. package/dist/index.d.ts +32 -8
  269. package/dist/index.js +30 -6
  270. package/dist/index.js.map +1 -1
  271. package/dist/node_modules/react/cjs/react-jsx-runtime.development.js +688 -0
  272. package/dist/node_modules/react/cjs/react-jsx-runtime.development.js.map +1 -0
  273. package/dist/node_modules/react/cjs/react.development.js +1521 -0
  274. package/dist/node_modules/react/cjs/react.development.js.map +1 -0
  275. package/dist/node_modules/react/index.js +13 -0
  276. package/dist/node_modules/react/index.js.map +1 -0
  277. package/dist/node_modules/react/jsx-runtime.js +13 -0
  278. package/dist/node_modules/react/jsx-runtime.js.map +1 -0
  279. package/dist/preview/AdaptiveResolutionTracker.js +228 -0
  280. package/dist/preview/AdaptiveResolutionTracker.js.map +1 -0
  281. package/dist/preview/RenderProfiler.js +135 -0
  282. package/dist/preview/RenderProfiler.js.map +1 -0
  283. package/dist/preview/previewSettings.js +131 -0
  284. package/dist/preview/previewSettings.js.map +1 -0
  285. package/dist/preview/previewTypes.js +64 -0
  286. package/dist/preview/previewTypes.js.map +1 -0
  287. package/dist/preview/renderTimegroupPreview.js +656 -0
  288. package/dist/preview/renderTimegroupPreview.js.map +1 -0
  289. package/dist/preview/renderTimegroupToCanvas.d.ts +37 -0
  290. package/dist/preview/renderTimegroupToCanvas.js +833 -0
  291. package/dist/preview/renderTimegroupToCanvas.js.map +1 -0
  292. package/dist/preview/renderTimegroupToVideo.d.ts +39 -0
  293. package/dist/preview/renderTimegroupToVideo.js +274 -0
  294. package/dist/preview/renderTimegroupToVideo.js.map +1 -0
  295. package/dist/preview/renderers.js +16 -0
  296. package/dist/preview/renderers.js.map +1 -0
  297. package/dist/preview/statsTrackingStrategy.js +201 -0
  298. package/dist/preview/statsTrackingStrategy.js.map +1 -0
  299. package/dist/preview/thumbnailCacheSettings.js +52 -0
  300. package/dist/preview/thumbnailCacheSettings.js.map +1 -0
  301. package/dist/preview/workers/WorkerPool.js +178 -0
  302. package/dist/preview/workers/WorkerPool.js.map +1 -0
  303. package/dist/preview/workers/encoderWorkerInline.js +103 -0
  304. package/dist/preview/workers/encoderWorkerInline.js.map +1 -0
  305. package/dist/sandbox/PlaybackControls.js +10 -0
  306. package/dist/sandbox/PlaybackControls.js.map +1 -0
  307. package/dist/sandbox/ScenarioRunner.js +1 -0
  308. package/dist/sandbox/index.js +2 -0
  309. package/dist/style.css +71 -67
  310. package/dist/transcoding/types/index.d.ts +2 -1
  311. package/dist/transcoding/utils/UrlGenerator.d.ts +6 -1
  312. package/dist/transcoding/utils/UrlGenerator.js +12 -3
  313. package/dist/transcoding/utils/UrlGenerator.js.map +1 -1
  314. package/dist/utils/LRUCache.js +1 -375
  315. package/dist/utils/LRUCache.js.map +1 -1
  316. package/dist/utils/frameTime.js +14 -0
  317. package/dist/utils/frameTime.js.map +1 -0
  318. package/package.json +3 -3
  319. package/test/profilingPlugin.ts +223 -0
  320. package/test/recordReplayProxyPlugin.js +22 -27
  321. package/test/thumbnail-performance-test.html +116 -0
  322. package/test/visualRegressionUtils.ts +286 -0
  323. package/types.json +1 -1
  324. package/dist/elements/TimegroupController.d.ts +0 -18
  325. package/dist/msToTimeCode.js +0 -17
  326. 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