@editframe/elements 0.47.1 → 0.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (406) hide show
  1. package/LICENSE.md +58 -0
  2. package/dist/DelayedLoadingState.js +1 -1
  3. package/dist/DelayedLoadingState.js.map +1 -1
  4. package/dist/EF_FRAMEGEN.js +1 -2
  5. package/dist/EF_FRAMEGEN.js.map +1 -1
  6. package/dist/EF_RENDERING.js +1 -1
  7. package/dist/EF_RENDERING.js.map +1 -1
  8. package/dist/_virtual/{_@oxc-project_runtime@0.95.0 → _@oxc-project_runtime@0.122.0}/helpers/decorate.js +2 -3
  9. package/dist/attachContextRoot.js +1 -2
  10. package/dist/attachContextRoot.js.map +1 -1
  11. package/dist/canvas/EFCanvas.d.ts +4 -7
  12. package/dist/canvas/EFCanvas.js +20 -21
  13. package/dist/canvas/EFCanvas.js.map +1 -1
  14. package/dist/canvas/EFCanvasItem.d.ts +4 -5
  15. package/dist/canvas/EFCanvasItem.js +3 -4
  16. package/dist/canvas/EFCanvasItem.js.map +1 -1
  17. package/dist/canvas/api/CanvasAPI.d.ts +0 -1
  18. package/dist/canvas/api/CanvasAPI.js +1 -1
  19. package/dist/canvas/api/CanvasAPI.js.map +1 -1
  20. package/dist/canvas/coordinateTransform.js +1 -1
  21. package/dist/canvas/coordinateTransform.js.map +1 -1
  22. package/dist/canvas/getElementBounds.js +1 -1
  23. package/dist/canvas/getElementBounds.js.map +1 -1
  24. package/dist/canvas/overlays/SelectionOverlay.d.ts +4 -4
  25. package/dist/canvas/overlays/SelectionOverlay.js +6 -7
  26. package/dist/canvas/overlays/SelectionOverlay.js.map +1 -1
  27. package/dist/canvas/overlays/overlayState.js +1 -2
  28. package/dist/canvas/overlays/overlayState.js.map +1 -1
  29. package/dist/canvas/selection/SelectionController.js +1 -2
  30. package/dist/canvas/selection/SelectionController.js.map +1 -1
  31. package/dist/canvas/selection/SelectionModel.d.ts +0 -1
  32. package/dist/canvas/selection/SelectionModel.js +1 -1
  33. package/dist/canvas/selection/SelectionModel.js.map +1 -1
  34. package/dist/canvas/selection/selectionContext.d.ts +0 -1
  35. package/dist/canvas/selection/selectionContext.js +1 -2
  36. package/dist/canvas/selection/selectionContext.js.map +1 -1
  37. package/dist/elements/ContainerInfo.js +1 -1
  38. package/dist/elements/ContainerInfo.js.map +1 -1
  39. package/dist/elements/CrossUpdateController.js +1 -1
  40. package/dist/elements/CrossUpdateController.js.map +1 -1
  41. package/dist/elements/EFAudio.d.ts +4 -4
  42. package/dist/elements/EFAudio.js +4 -6
  43. package/dist/elements/EFAudio.js.map +1 -1
  44. package/dist/elements/EFCaptions.d.ts +4 -4
  45. package/dist/elements/EFCaptions.js +8 -10
  46. package/dist/elements/EFCaptions.js.map +1 -1
  47. package/dist/elements/EFImage.d.ts +7 -7
  48. package/dist/elements/EFImage.js +4 -6
  49. package/dist/elements/EFImage.js.map +1 -1
  50. package/dist/elements/EFMedia/BufferedSeekingInput.d.ts +2 -2
  51. package/dist/elements/EFMedia/BufferedSeekingInput.js +14 -11
  52. package/dist/elements/EFMedia/BufferedSeekingInput.js.map +1 -1
  53. package/dist/elements/EFMedia/CachedFetcher.js +1 -2
  54. package/dist/elements/EFMedia/CachedFetcher.js.map +1 -1
  55. package/dist/elements/EFMedia/MediaEngine.d.ts +0 -2
  56. package/dist/elements/EFMedia/MediaEngine.js +1 -2
  57. package/dist/elements/EFMedia/MediaEngine.js.map +1 -1
  58. package/dist/elements/EFMedia/SegmentIndex.d.ts +2 -3
  59. package/dist/elements/EFMedia/SegmentIndex.js +10 -3
  60. package/dist/elements/EFMedia/SegmentIndex.js.map +1 -1
  61. package/dist/elements/EFMedia/SegmentTransport.d.ts +0 -2
  62. package/dist/elements/EFMedia/SegmentTransport.js +1 -1
  63. package/dist/elements/EFMedia/SegmentTransport.js.map +1 -1
  64. package/dist/elements/EFMedia/TimingModel.d.ts +0 -2
  65. package/dist/elements/EFMedia/TimingModel.js +1 -1
  66. package/dist/elements/EFMedia/TimingModel.js.map +1 -1
  67. package/dist/elements/EFMedia/shared/AudioSpanUtils.js +1 -1
  68. package/dist/elements/EFMedia/shared/AudioSpanUtils.js.map +1 -1
  69. package/dist/elements/EFMedia/shared/GlobalInputCache.js +1 -2
  70. package/dist/elements/EFMedia/shared/GlobalInputCache.js.map +1 -1
  71. package/dist/elements/EFMedia/shared/PrecisionUtils.js +1 -1
  72. package/dist/elements/EFMedia/shared/PrecisionUtils.js.map +1 -1
  73. package/dist/elements/EFMedia/shared/ThumbnailExtractor.js +1 -2
  74. package/dist/elements/EFMedia/shared/ThumbnailExtractor.js.map +1 -1
  75. package/dist/elements/EFMedia/shared/timeoutUtils.js +1 -2
  76. package/dist/elements/EFMedia/shared/timeoutUtils.js.map +1 -1
  77. package/dist/elements/EFMedia/videoTasks/MainVideoInputCache.js +1 -1
  78. package/dist/elements/EFMedia/videoTasks/MainVideoInputCache.js.map +1 -1
  79. package/dist/elements/EFMedia/videoTasks/ScrubInputCache.d.ts +0 -1
  80. package/dist/elements/EFMedia/videoTasks/ScrubInputCache.js +12 -12
  81. package/dist/elements/EFMedia/videoTasks/ScrubInputCache.js.map +1 -1
  82. package/dist/elements/EFMedia.d.ts +3 -3
  83. package/dist/elements/EFMedia.js +3 -4
  84. package/dist/elements/EFMedia.js.map +1 -1
  85. package/dist/elements/EFMotionBlur.d.ts +0 -1
  86. package/dist/elements/EFMotionBlur.js +8 -15
  87. package/dist/elements/EFMotionBlur.js.map +1 -1
  88. package/dist/elements/EFPanZoom.d.ts +4 -4
  89. package/dist/elements/EFPanZoom.js +3 -4
  90. package/dist/elements/EFPanZoom.js.map +1 -1
  91. package/dist/elements/EFSourceMixin.js +2 -3
  92. package/dist/elements/EFSourceMixin.js.map +1 -1
  93. package/dist/elements/EFSurface.d.ts +6 -6
  94. package/dist/elements/EFSurface.js +3 -4
  95. package/dist/elements/EFSurface.js.map +1 -1
  96. package/dist/elements/EFTemporal.d.ts +0 -1
  97. package/dist/elements/EFTemporal.js +6 -7
  98. package/dist/elements/EFTemporal.js.map +1 -1
  99. package/dist/elements/EFText.d.ts +4 -4
  100. package/dist/elements/EFText.js +6 -7
  101. package/dist/elements/EFText.js.map +1 -1
  102. package/dist/elements/EFTextSegment.d.ts +4 -4
  103. package/dist/elements/EFTextSegment.js +3 -4
  104. package/dist/elements/EFTextSegment.js.map +1 -1
  105. package/dist/elements/EFTimegroup.d.ts +4 -10
  106. package/dist/elements/EFTimegroup.js +11 -12
  107. package/dist/elements/EFTimegroup.js.map +1 -1
  108. package/dist/elements/EFVideo.d.ts +35 -8
  109. package/dist/elements/EFVideo.js +57 -12
  110. package/dist/elements/EFVideo.js.map +1 -1
  111. package/dist/elements/EFWaveform.d.ts +4 -4
  112. package/dist/elements/EFWaveform.js +4 -6
  113. package/dist/elements/EFWaveform.js.map +1 -1
  114. package/dist/elements/ElementPositionInfo.js +1 -1
  115. package/dist/elements/ElementPositionInfo.js.map +1 -1
  116. package/dist/elements/FetchMixin.js +1 -1
  117. package/dist/elements/FetchMixin.js.map +1 -1
  118. package/dist/elements/SampleBuffer.js +1 -2
  119. package/dist/elements/SampleBuffer.js.map +1 -1
  120. package/dist/elements/TargetController.d.ts +0 -1
  121. package/dist/elements/TargetController.js +1 -1
  122. package/dist/elements/TargetController.js.map +1 -1
  123. package/dist/elements/TimegroupController.js +1 -1
  124. package/dist/elements/TimegroupController.js.map +1 -1
  125. package/dist/elements/cloneFactoryRegistry.js +1 -1
  126. package/dist/elements/cloneFactoryRegistry.js.map +1 -1
  127. package/dist/elements/durationConverter.js +4 -5
  128. package/dist/elements/durationConverter.js.map +1 -1
  129. package/dist/elements/easingUtils.js +1 -1
  130. package/dist/elements/easingUtils.js.map +1 -1
  131. package/dist/elements/findRootTemporal.js +1 -2
  132. package/dist/elements/findRootTemporal.js.map +1 -1
  133. package/dist/elements/parseTimeToMs.js +1 -1
  134. package/dist/elements/parseTimeToMs.js.map +1 -1
  135. package/dist/elements/renderTemporalAudio.js +1 -2
  136. package/dist/elements/renderTemporalAudio.js.map +1 -1
  137. package/dist/elements/setupTemporalHierarchy.js +1 -1
  138. package/dist/elements/setupTemporalHierarchy.js.map +1 -1
  139. package/dist/elements/updateAnimations.js +1 -2
  140. package/dist/elements/updateAnimations.js.map +1 -1
  141. package/dist/getRenderInfo.d.ts +0 -1
  142. package/dist/getRenderInfo.js +1 -2
  143. package/dist/getRenderInfo.js.map +1 -1
  144. package/dist/gui/ContextMixin.d.ts +0 -1
  145. package/dist/gui/ContextMixin.js +2 -3
  146. package/dist/gui/ContextMixin.js.map +1 -1
  147. package/dist/gui/Controllable.d.ts +0 -2
  148. package/dist/gui/Controllable.js +1 -2
  149. package/dist/gui/Controllable.js.map +1 -1
  150. package/dist/gui/EFActiveRootTemporal.d.ts +4 -5
  151. package/dist/gui/EFActiveRootTemporal.js +3 -4
  152. package/dist/gui/EFActiveRootTemporal.js.map +1 -1
  153. package/dist/gui/EFConfiguration.d.ts +4 -4
  154. package/dist/gui/EFConfiguration.js +3 -4
  155. package/dist/gui/EFConfiguration.js.map +1 -1
  156. package/dist/gui/EFControls.d.ts +2 -3
  157. package/dist/gui/EFControls.js +4 -5
  158. package/dist/gui/EFControls.js.map +1 -1
  159. package/dist/gui/EFDial.d.ts +4 -4
  160. package/dist/gui/EFDial.js +3 -4
  161. package/dist/gui/EFDial.js.map +1 -1
  162. package/dist/gui/EFFilmstrip.d.ts +6 -7
  163. package/dist/gui/EFFilmstrip.js +3 -4
  164. package/dist/gui/EFFilmstrip.js.map +1 -1
  165. package/dist/gui/EFFitScale.d.ts +3 -3
  166. package/dist/gui/EFFitScale.js +6 -7
  167. package/dist/gui/EFFitScale.js.map +1 -1
  168. package/dist/gui/EFFocusOverlay.d.ts +6 -6
  169. package/dist/gui/EFFocusOverlay.js +3 -4
  170. package/dist/gui/EFFocusOverlay.js.map +1 -1
  171. package/dist/gui/EFOverlayItem.d.ts +4 -4
  172. package/dist/gui/EFOverlayItem.js +3 -4
  173. package/dist/gui/EFOverlayItem.js.map +1 -1
  174. package/dist/gui/EFOverlayLayer.d.ts +4 -5
  175. package/dist/gui/EFOverlayLayer.js +3 -4
  176. package/dist/gui/EFOverlayLayer.js.map +1 -1
  177. package/dist/gui/EFPause.d.ts +4 -4
  178. package/dist/gui/EFPause.js +3 -4
  179. package/dist/gui/EFPause.js.map +1 -1
  180. package/dist/gui/EFPlay.d.ts +4 -4
  181. package/dist/gui/EFPlay.js +3 -4
  182. package/dist/gui/EFPlay.js.map +1 -1
  183. package/dist/gui/EFPreview.d.ts +4 -4
  184. package/dist/gui/EFPreview.js +3 -4
  185. package/dist/gui/EFPreview.js.map +1 -1
  186. package/dist/gui/EFResizableBox.d.ts +4 -4
  187. package/dist/gui/EFResizableBox.js +3 -4
  188. package/dist/gui/EFResizableBox.js.map +1 -1
  189. package/dist/gui/EFScrubber.d.ts +4 -4
  190. package/dist/gui/EFScrubber.js +3 -4
  191. package/dist/gui/EFScrubber.js.map +1 -1
  192. package/dist/gui/EFTimeDisplay.d.ts +4 -4
  193. package/dist/gui/EFTimeDisplay.js +3 -4
  194. package/dist/gui/EFTimeDisplay.js.map +1 -1
  195. package/dist/gui/EFTimelineRuler.d.ts +4 -4
  196. package/dist/gui/EFTimelineRuler.js +5 -6
  197. package/dist/gui/EFTimelineRuler.js.map +1 -1
  198. package/dist/gui/EFToggleLoop.d.ts +4 -4
  199. package/dist/gui/EFToggleLoop.js +3 -4
  200. package/dist/gui/EFToggleLoop.js.map +1 -1
  201. package/dist/gui/EFTogglePlay.d.ts +4 -4
  202. package/dist/gui/EFTogglePlay.js +3 -4
  203. package/dist/gui/EFTogglePlay.js.map +1 -1
  204. package/dist/gui/EFTransformHandles.d.ts +4 -4
  205. package/dist/gui/EFTransformHandles.js +3 -4
  206. package/dist/gui/EFTransformHandles.js.map +1 -1
  207. package/dist/gui/EFWorkbench.d.ts +6 -7
  208. package/dist/gui/EFWorkbench.js +13 -15
  209. package/dist/gui/EFWorkbench.js.map +1 -1
  210. package/dist/gui/EFWorkbench.spacebar.js +1 -1
  211. package/dist/gui/EFWorkbench.spacebar.js.map +1 -1
  212. package/dist/gui/FitScaleHelpers.js +1 -2
  213. package/dist/gui/FitScaleHelpers.js.map +1 -1
  214. package/dist/gui/PlaybackController.js +38 -18
  215. package/dist/gui/PlaybackController.js.map +1 -1
  216. package/dist/gui/TWMixin.js +1 -1
  217. package/dist/gui/TWMixin.js.map +1 -1
  218. package/dist/gui/TWMixin2.js +1 -2
  219. package/dist/gui/TWMixin2.js.map +1 -1
  220. package/dist/gui/TargetOrContextMixin.js +2 -3
  221. package/dist/gui/TargetOrContextMixin.js.map +1 -1
  222. package/dist/gui/currentTimeContext.js +1 -2
  223. package/dist/gui/currentTimeContext.js.map +1 -1
  224. package/dist/gui/durationContext.js +1 -2
  225. package/dist/gui/durationContext.js.map +1 -1
  226. package/dist/gui/efContext.js +1 -2
  227. package/dist/gui/efContext.js.map +1 -1
  228. package/dist/gui/fetchContext.js +1 -2
  229. package/dist/gui/fetchContext.js.map +1 -1
  230. package/dist/gui/focusContext.js +1 -2
  231. package/dist/gui/focusContext.js.map +1 -1
  232. package/dist/gui/focusedElementContext.js +1 -2
  233. package/dist/gui/focusedElementContext.js.map +1 -1
  234. package/dist/gui/hierarchy/EFHierarchy.d.ts +4 -4
  235. package/dist/gui/hierarchy/EFHierarchy.js +3 -4
  236. package/dist/gui/hierarchy/EFHierarchy.js.map +1 -1
  237. package/dist/gui/hierarchy/EFHierarchyItem.d.ts +2 -2
  238. package/dist/gui/hierarchy/EFHierarchyItem.js +13 -14
  239. package/dist/gui/hierarchy/EFHierarchyItem.js.map +1 -1
  240. package/dist/gui/hierarchy/hierarchyContext.js +1 -2
  241. package/dist/gui/hierarchy/hierarchyContext.js.map +1 -1
  242. package/dist/gui/icons.js +1 -2
  243. package/dist/gui/icons.js.map +1 -1
  244. package/dist/gui/panZoomTransformContext.js +1 -2
  245. package/dist/gui/panZoomTransformContext.js.map +1 -1
  246. package/dist/gui/playingContext.js +1 -2
  247. package/dist/gui/playingContext.js.map +1 -1
  248. package/dist/gui/previewSettingsContext.d.ts +0 -1
  249. package/dist/gui/previewSettingsContext.js +1 -2
  250. package/dist/gui/previewSettingsContext.js.map +1 -1
  251. package/dist/gui/shouldSignUrl.js +1 -1
  252. package/dist/gui/shouldSignUrl.js.map +1 -1
  253. package/dist/gui/theme.js +1 -1
  254. package/dist/gui/theme.js.map +1 -1
  255. package/dist/gui/timeline/EFTimeline.d.ts +2 -5
  256. package/dist/gui/timeline/EFTimeline.js +19 -20
  257. package/dist/gui/timeline/EFTimeline.js.map +1 -1
  258. package/dist/gui/timeline/EFTimelineRow.d.ts +2 -2
  259. package/dist/gui/timeline/EFTimelineRow.js +3 -4
  260. package/dist/gui/timeline/EFTimelineRow.js.map +1 -1
  261. package/dist/gui/timeline/TrimHandles.d.ts +4 -4
  262. package/dist/gui/timeline/TrimHandles.js +3 -4
  263. package/dist/gui/timeline/TrimHandles.js.map +1 -1
  264. package/dist/gui/timeline/flattenHierarchy.js +1 -2
  265. package/dist/gui/timeline/flattenHierarchy.js.map +1 -1
  266. package/dist/gui/timeline/timelineEditingContext.js +1 -2
  267. package/dist/gui/timeline/timelineEditingContext.js.map +1 -1
  268. package/dist/gui/timeline/timelineStateContext.js +1 -14
  269. package/dist/gui/timeline/timelineStateContext.js.map +1 -1
  270. package/dist/gui/timeline/tracks/AudioTrack.d.ts +0 -1
  271. package/dist/gui/timeline/tracks/AudioTrack.js +3 -4
  272. package/dist/gui/timeline/tracks/AudioTrack.js.map +1 -1
  273. package/dist/gui/timeline/tracks/CaptionsTrack.d.ts +2 -2
  274. package/dist/gui/timeline/tracks/CaptionsTrack.js +9 -9
  275. package/dist/gui/timeline/tracks/CaptionsTrack.js.map +1 -1
  276. package/dist/gui/timeline/tracks/EFThumbnailStrip.d.ts +4 -4
  277. package/dist/gui/timeline/tracks/EFThumbnailStrip.js +3 -4
  278. package/dist/gui/timeline/tracks/EFThumbnailStrip.js.map +1 -1
  279. package/dist/gui/timeline/tracks/HTMLTrack.d.ts +2 -2
  280. package/dist/gui/timeline/tracks/HTMLTrack.js +3 -4
  281. package/dist/gui/timeline/tracks/HTMLTrack.js.map +1 -1
  282. package/dist/gui/timeline/tracks/ImageTrack.d.ts +2 -2
  283. package/dist/gui/timeline/tracks/ImageTrack.js +3 -4
  284. package/dist/gui/timeline/tracks/ImageTrack.js.map +1 -1
  285. package/dist/gui/timeline/tracks/TextTrack.d.ts +2 -2
  286. package/dist/gui/timeline/tracks/TextTrack.js +4 -5
  287. package/dist/gui/timeline/tracks/TextTrack.js.map +1 -1
  288. package/dist/gui/timeline/tracks/TimegroupTrack.d.ts +5 -6
  289. package/dist/gui/timeline/tracks/TimegroupTrack.js +3 -4
  290. package/dist/gui/timeline/tracks/TimegroupTrack.js.map +1 -1
  291. package/dist/gui/timeline/tracks/TrackItem.d.ts +2 -2
  292. package/dist/gui/timeline/tracks/TrackItem.js +3 -4
  293. package/dist/gui/timeline/tracks/TrackItem.js.map +1 -1
  294. package/dist/gui/timeline/tracks/VideoTrack.d.ts +6 -7
  295. package/dist/gui/timeline/tracks/VideoTrack.js +3 -4
  296. package/dist/gui/timeline/tracks/VideoTrack.js.map +1 -1
  297. package/dist/gui/timeline/tracks/WaveformTrack.js +3 -4
  298. package/dist/gui/timeline/tracks/WaveformTrack.js.map +1 -1
  299. package/dist/gui/timeline/tracks/ensureTrackItemInit.js +1 -1
  300. package/dist/gui/timeline/tracks/preloadTracks.d.ts +1 -9
  301. package/dist/gui/timeline/tracks/renderTrackChildren.js +1 -2
  302. package/dist/gui/timeline/tracks/renderTrackChildren.js.map +1 -1
  303. package/dist/gui/timeline/tracks/waveformUtils.js +3 -6
  304. package/dist/gui/timeline/tracks/waveformUtils.js.map +1 -1
  305. package/dist/gui/transformCalculations.js +1 -2
  306. package/dist/gui/transformCalculations.js.map +1 -1
  307. package/dist/gui/transformUtils.js +1 -1
  308. package/dist/gui/transformUtils.js.map +1 -1
  309. package/dist/gui/tree/EFTree.d.ts +4 -6
  310. package/dist/gui/tree/EFTree.js +3 -4
  311. package/dist/gui/tree/EFTree.js.map +1 -1
  312. package/dist/gui/tree/EFTreeItem.d.ts +4 -5
  313. package/dist/gui/tree/EFTreeItem.js +3 -4
  314. package/dist/gui/tree/EFTreeItem.js.map +1 -1
  315. package/dist/gui/tree/treeContext.d.ts +0 -1
  316. package/dist/gui/tree/treeContext.js +1 -2
  317. package/dist/gui/tree/treeContext.js.map +1 -1
  318. package/dist/index.d.ts +0 -2
  319. package/dist/index.js +1 -2
  320. package/dist/index.js.map +1 -1
  321. package/dist/node.js +1 -2
  322. package/dist/node_modules/lit-html/development/directives/ref.d.ts +14 -0
  323. package/dist/node_modules/lit-html/development/lit-html.d.ts +46 -0
  324. package/dist/otel/BridgeSpanExporter.js +1 -2
  325. package/dist/otel/BridgeSpanExporter.js.map +1 -1
  326. package/dist/otel/setupBrowserTracing.js +1 -2
  327. package/dist/otel/setupBrowserTracing.js.map +1 -1
  328. package/dist/otel/tracingHelpers.d.ts +0 -2
  329. package/dist/otel/tracingHelpers.js +1 -2
  330. package/dist/otel/tracingHelpers.js.map +1 -1
  331. package/dist/preview/AdaptiveResolutionTracker.js +11 -2
  332. package/dist/preview/AdaptiveResolutionTracker.js.map +1 -1
  333. package/dist/preview/FrameController.d.ts +0 -1
  334. package/dist/preview/FrameController.js +2 -32
  335. package/dist/preview/FrameController.js.map +1 -1
  336. package/dist/preview/QualityUpgradeScheduler.js +1 -1
  337. package/dist/preview/QualityUpgradeScheduler.js.map +1 -1
  338. package/dist/preview/RenderContext.d.ts +0 -1
  339. package/dist/preview/RenderContext.js +11 -2
  340. package/dist/preview/RenderContext.js.map +1 -1
  341. package/dist/preview/RenderProfiler.js +1 -1
  342. package/dist/preview/RenderProfiler.js.map +1 -1
  343. package/dist/preview/RenderStats.js +1 -1
  344. package/dist/preview/RenderStats.js.map +1 -1
  345. package/dist/preview/encoding/canvasEncoder.js +7 -2
  346. package/dist/preview/encoding/canvasEncoder.js.map +1 -1
  347. package/dist/preview/encoding/mainThreadEncoder.js +1 -1
  348. package/dist/preview/encoding/mainThreadEncoder.js.map +1 -1
  349. package/dist/preview/encoding/workerEncoder.js +1 -1
  350. package/dist/preview/encoding/workerEncoder.js.map +1 -1
  351. package/dist/preview/logger.js +1 -1
  352. package/dist/preview/logger.js.map +1 -1
  353. package/dist/preview/previewSettings.js +1 -1
  354. package/dist/preview/previewSettings.js.map +1 -1
  355. package/dist/preview/previewTypes.js +1 -1
  356. package/dist/preview/previewTypes.js.map +1 -1
  357. package/dist/preview/renderElementToCanvas.d.ts +0 -1
  358. package/dist/preview/renderElementToCanvas.js +12 -5
  359. package/dist/preview/renderElementToCanvas.js.map +1 -1
  360. package/dist/preview/renderTimegroupToCanvas.d.ts +0 -1
  361. package/dist/preview/renderTimegroupToCanvas.js +6 -7
  362. package/dist/preview/renderTimegroupToCanvas.js.map +1 -1
  363. package/dist/preview/renderTimegroupToVideo.d.ts +0 -1
  364. package/dist/preview/renderTimegroupToVideo.js +20 -8
  365. package/dist/preview/renderTimegroupToVideo.js.map +1 -1
  366. package/dist/preview/renderVideoToVideo.js +11 -2
  367. package/dist/preview/renderVideoToVideo.js.map +1 -1
  368. package/dist/preview/renderers.d.ts +0 -1
  369. package/dist/preview/renderers.js +5 -2
  370. package/dist/preview/renderers.js.map +1 -1
  371. package/dist/preview/rendering/ScaleConfig.js +2 -3
  372. package/dist/preview/rendering/ScaleConfig.js.map +1 -1
  373. package/dist/preview/rendering/inlineImages.d.ts +0 -1
  374. package/dist/preview/rendering/inlineImages.js +1 -1
  375. package/dist/preview/rendering/inlineImages.js.map +1 -1
  376. package/dist/preview/rendering/loadImage.js +1 -2
  377. package/dist/preview/rendering/loadImage.js.map +1 -1
  378. package/dist/preview/rendering/renderToImageNative.js +4 -5
  379. package/dist/preview/rendering/renderToImageNative.js.map +1 -1
  380. package/dist/preview/rendering/serializeTimelineDirect.js +18 -4
  381. package/dist/preview/rendering/serializeTimelineDirect.js.map +1 -1
  382. package/dist/preview/statsTrackingStrategy.js +1 -1
  383. package/dist/preview/statsTrackingStrategy.js.map +1 -1
  384. package/dist/preview/workers/WorkerPool.js +5 -2
  385. package/dist/preview/workers/WorkerPool.js.map +1 -1
  386. package/dist/preview/workers/encoderWorkerInline.js +1 -1
  387. package/dist/preview/workers/encoderWorkerInline.js.map +1 -1
  388. package/dist/render/EFRenderAPI.d.ts +0 -1
  389. package/dist/render/EFRenderAPI.js +1 -2
  390. package/dist/render/EFRenderAPI.js.map +1 -1
  391. package/dist/render/getRenderData.js +1 -1
  392. package/dist/render/getRenderData.js.map +1 -1
  393. package/dist/transcoding/cache/RequestDeduplicator.js +1 -1
  394. package/dist/transcoding/cache/RequestDeduplicator.js.map +1 -1
  395. package/dist/transcoding/cache/URLTokenDeduplicator.js +1 -1
  396. package/dist/transcoding/cache/URLTokenDeduplicator.js.map +1 -1
  397. package/dist/transcoding/types/index.d.ts +0 -1
  398. package/dist/transcoding/utils/UrlGenerator.js +1 -1
  399. package/dist/transcoding/utils/UrlGenerator.js.map +1 -1
  400. package/dist/utils/LRUCache.js +1 -1
  401. package/dist/utils/LRUCache.js.map +1 -1
  402. package/dist/utils/frameTime.js +2 -9
  403. package/dist/utils/frameTime.js.map +1 -1
  404. package/dist/version.js +2 -2
  405. package/dist/version.js.map +1 -1
  406. package/package.json +5 -4
@@ -1,9 +1,8 @@
1
- import { __decorate } from "../_virtual/_@oxc-project_runtime@0.95.0/helpers/decorate.js";
1
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
2
2
  import { LitElement, css, html } from "lit";
3
3
  import { customElement, property, state } from "lit/decorators.js";
4
-
5
4
  //#region src/gui/EFActiveRootTemporal.ts
6
- let EFActiveRootTemporal = class EFActiveRootTemporal$1 extends LitElement {
5
+ let EFActiveRootTemporal = class EFActiveRootTemporal extends LitElement {
7
6
  constructor(..._args) {
8
7
  super(..._args);
9
8
  this.canvas = "";
@@ -88,7 +87,7 @@ let EFActiveRootTemporal = class EFActiveRootTemporal$1 extends LitElement {
88
87
  __decorate([property({ type: String })], EFActiveRootTemporal.prototype, "canvas", void 0);
89
88
  __decorate([state()], EFActiveRootTemporal.prototype, "activeRootTemporal", void 0);
90
89
  EFActiveRootTemporal = __decorate([customElement("ef-active-root-temporal")], EFActiveRootTemporal);
91
-
92
90
  //#endregion
93
91
  export { EFActiveRootTemporal };
92
+
94
93
  //# sourceMappingURL=EFActiveRootTemporal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EFActiveRootTemporal.js","names":["EFActiveRootTemporal"],"sources":["../../src/gui/EFActiveRootTemporal.ts"],"sourcesContent":["import { css, html, LitElement } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport type { EFCanvas } from \"../canvas/EFCanvas.js\";\nimport type { TemporalMixinInterface } from \"../elements/EFTemporal.js\";\n\n/**\n * Displays the ID of the active root temporal element from a canvas.\n * Automatically updates when selection changes.\n *\n * @example\n * ```html\n * <ef-active-root-temporal canvas=\"canvas\"></ef-active-root-temporal>\n * ```\n */\n@customElement(\"ef-active-root-temporal\")\nexport class EFActiveRootTemporal extends LitElement {\n static styles = css`\n :host {\n display: inline-block;\n }\n `;\n\n /**\n * Canvas element ID or selector to bind to.\n * If not specified, will search for the nearest ef-canvas ancestor.\n */\n @property({ type: String })\n canvas = \"\";\n\n @state()\n private activeRootTemporal: (TemporalMixinInterface & HTMLElement) | null = null;\n\n private canvasElement: EFCanvas | null = null;\n private activeroottemporalchangeHandler?: () => void;\n\n connectedCallback(): void {\n super.connectedCallback();\n this.findCanvas();\n this.setupListener();\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeListener();\n }\n\n protected updated(changedProperties: Map<string | number | symbol, unknown>): void {\n if (changedProperties.has(\"canvas\")) {\n this.findCanvas();\n this.setupListener();\n }\n }\n\n /**\n * Find the canvas element to bind to.\n */\n private findCanvas(): void {\n // If canvas attribute is set, use it\n if (this.canvas) {\n const byId = document.getElementById(this.canvas);\n if (byId && byId.tagName === \"EF-CANVAS\") {\n this.canvasElement = byId as EFCanvas;\n return;\n }\n\n // Try as selector\n try {\n const bySelector = document.querySelector(this.canvas) as EFCanvas | null;\n if (bySelector && bySelector.tagName === \"EF-CANVAS\") {\n this.canvasElement = bySelector;\n return;\n }\n } catch {\n // Invalid selector, ignore\n }\n }\n\n // Fall back to nearest ancestor\n const ancestor = this.closest(\"ef-canvas\") as EFCanvas | null;\n if (ancestor) {\n this.canvasElement = ancestor;\n return;\n }\n\n this.canvasElement = null;\n }\n\n /**\n * Setup listener for activeroottemporalchange events.\n */\n private setupListener(): void {\n this.removeListener();\n\n if (!this.canvasElement) {\n this.activeRootTemporal = null;\n return;\n }\n\n // Get initial value\n const canvasEl = this.canvasElement as any;\n this.activeRootTemporal = canvasEl.activeRootTemporal || null;\n\n // Listen for changes\n this.activeroottemporalchangeHandler = () => {\n const canvasEl = this.canvasElement as any;\n this.activeRootTemporal = canvasEl.activeRootTemporal || null;\n };\n\n this.canvasElement.addEventListener(\n \"activeroottemporalchange\",\n this.activeroottemporalchangeHandler,\n );\n }\n\n /**\n * Remove event listener.\n */\n private removeListener(): void {\n if (this.canvasElement && this.activeroottemporalchangeHandler) {\n this.canvasElement.removeEventListener(\n \"activeroottemporalchange\",\n this.activeroottemporalchangeHandler,\n );\n this.activeroottemporalchangeHandler = undefined;\n }\n }\n\n render() {\n const displayText = this.activeRootTemporal?.id || this.textContent || \"None\";\n return html`<span>${displayText}</span>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-active-root-temporal\": EFActiveRootTemporal;\n }\n}\n"],"mappings":";;;;;AAeO,iCAAMA,+BAA6B,WAAW;;;gBAY1C;4BAGmE;uBAEnC;;;gBAhBzB,GAAG;;;;;;CAmBnB,oBAA0B;AACxB,QAAM,mBAAmB;AACzB,OAAK,YAAY;AACjB,OAAK,eAAe;;CAGtB,uBAA6B;AAC3B,QAAM,sBAAsB;AAC5B,OAAK,gBAAgB;;CAGvB,AAAU,QAAQ,mBAAiE;AACjF,MAAI,kBAAkB,IAAI,SAAS,EAAE;AACnC,QAAK,YAAY;AACjB,QAAK,eAAe;;;;;;CAOxB,AAAQ,aAAmB;AAEzB,MAAI,KAAK,QAAQ;GACf,MAAM,OAAO,SAAS,eAAe,KAAK,OAAO;AACjD,OAAI,QAAQ,KAAK,YAAY,aAAa;AACxC,SAAK,gBAAgB;AACrB;;AAIF,OAAI;IACF,MAAM,aAAa,SAAS,cAAc,KAAK,OAAO;AACtD,QAAI,cAAc,WAAW,YAAY,aAAa;AACpD,UAAK,gBAAgB;AACrB;;WAEI;;EAMV,MAAM,WAAW,KAAK,QAAQ,YAAY;AAC1C,MAAI,UAAU;AACZ,QAAK,gBAAgB;AACrB;;AAGF,OAAK,gBAAgB;;;;;CAMvB,AAAQ,gBAAsB;AAC5B,OAAK,gBAAgB;AAErB,MAAI,CAAC,KAAK,eAAe;AACvB,QAAK,qBAAqB;AAC1B;;AAKF,OAAK,qBADY,KAAK,cACa,sBAAsB;AAGzD,OAAK,wCAAwC;AAE3C,QAAK,qBADY,KAAK,cACa,sBAAsB;;AAG3D,OAAK,cAAc,iBACjB,4BACA,KAAK,gCACN;;;;;CAMH,AAAQ,iBAAuB;AAC7B,MAAI,KAAK,iBAAiB,KAAK,iCAAiC;AAC9D,QAAK,cAAc,oBACjB,4BACA,KAAK,gCACN;AACD,QAAK,kCAAkC;;;CAI3C,SAAS;AAEP,SAAO,IAAI,SADS,KAAK,oBAAoB,MAAM,KAAK,eAAe,OACvC;;;YAvGjC,SAAS,EAAE,MAAM,QAAQ,CAAC;YAG1B,OAAO;mCAfT,cAAc,0BAA0B"}
1
+ {"version":3,"file":"EFActiveRootTemporal.js","names":[],"sources":["../../src/gui/EFActiveRootTemporal.ts"],"mappings":";;;;AAeO,IAAA,uBAAA,MAAM,6BAA6B,WAAW;;;gBAY1C;4BAGmE;uBAEnC;;;gBAhBzB,GAAG;;;;;;CAmBnB,oBAA0B;AACxB,QAAM,mBAAmB;AACzB,OAAK,YAAY;AACjB,OAAK,eAAe;;CAGtB,uBAA6B;AAC3B,QAAM,sBAAsB;AAC5B,OAAK,gBAAgB;;CAGvB,QAAkB,mBAAiE;AACjF,MAAI,kBAAkB,IAAI,SAAS,EAAE;AACnC,QAAK,YAAY;AACjB,QAAK,eAAe;;;;;;CAOxB,aAA2B;AAEzB,MAAI,KAAK,QAAQ;GACf,MAAM,OAAO,SAAS,eAAe,KAAK,OAAO;AACjD,OAAI,QAAQ,KAAK,YAAY,aAAa;AACxC,SAAK,gBAAgB;AACrB;;AAIF,OAAI;IACF,MAAM,aAAa,SAAS,cAAc,KAAK,OAAO;AACtD,QAAI,cAAc,WAAW,YAAY,aAAa;AACpD,UAAK,gBAAgB;AACrB;;WAEI;;EAMV,MAAM,WAAW,KAAK,QAAQ,YAAY;AAC1C,MAAI,UAAU;AACZ,QAAK,gBAAgB;AACrB;;AAGF,OAAK,gBAAgB;;;;;CAMvB,gBAA8B;AAC5B,OAAK,gBAAgB;AAErB,MAAI,CAAC,KAAK,eAAe;AACvB,QAAK,qBAAqB;AAC1B;;AAKF,OAAK,qBADY,KAAK,cACa,sBAAsB;AAGzD,OAAK,wCAAwC;AAE3C,QAAK,qBADY,KAAK,cACa,sBAAsB;;AAG3D,OAAK,cAAc,iBACjB,4BACA,KAAK,gCACN;;;;;CAMH,iBAA+B;AAC7B,MAAI,KAAK,iBAAiB,KAAK,iCAAiC;AAC9D,QAAK,cAAc,oBACjB,4BACA,KAAK,gCACN;AACD,QAAK,kCAAkC,KAAA;;;CAI3C,SAAS;AAEP,SAAO,IAAI,SADS,KAAK,oBAAoB,MAAM,KAAK,eAAe,OACvC;;;YAvGjC,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,qBAAA,WAAA,UAAA,KAAA,EAAA;YAG1B,OAAO,CAAA,EAAA,qBAAA,WAAA,sBAAA,KAAA,EAAA;mCAfT,cAAc,0BAA0B,CAAA,EAAA,qBAAA"}
@@ -1,14 +1,14 @@
1
- import * as lit7 from "lit";
1
+ import { TemplateResult as TemplateResult$1 } from "../node_modules/lit-html/development/lit-html.js";
2
+ import * as _$lit from "lit";
2
3
  import { LitElement } from "lit";
3
- import * as lit_html7 from "lit-html";
4
4
 
5
5
  //#region src/gui/EFConfiguration.d.ts
6
6
  declare class EFConfiguration extends LitElement {
7
- static styles: lit7.CSSResult[];
7
+ static styles: _$lit.CSSResult[];
8
8
  efConfiguration: this;
9
9
  apiHost?: string;
10
10
  signingURL: string;
11
- render(): lit_html7.TemplateResult<1>;
11
+ render(): TemplateResult$1<1>;
12
12
  }
13
13
  declare global {
14
14
  interface HTMLElementTagNameMap {
@@ -1,11 +1,10 @@
1
- import { __decorate } from "../_virtual/_@oxc-project_runtime@0.95.0/helpers/decorate.js";
1
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
2
2
  import { createContext, provide } from "@lit/context";
3
3
  import { LitElement, css, html } from "lit";
4
4
  import { customElement, property } from "lit/decorators.js";
5
-
6
5
  //#region src/gui/EFConfiguration.ts
7
6
  const efConfigurationContext = createContext(Symbol("efConfigurationContext"));
8
- let EFConfiguration = class EFConfiguration$1 extends LitElement {
7
+ let EFConfiguration = class EFConfiguration extends LitElement {
9
8
  constructor(..._args) {
10
9
  super(..._args);
11
10
  this.efConfiguration = this;
@@ -32,7 +31,7 @@ __decorate([property({
32
31
  attribute: "signing-url"
33
32
  })], EFConfiguration.prototype, "signingURL", void 0);
34
33
  EFConfiguration = __decorate([customElement("ef-configuration")], EFConfiguration);
35
-
36
34
  //#endregion
37
35
  export { EFConfiguration, efConfigurationContext };
36
+
38
37
  //# sourceMappingURL=EFConfiguration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EFConfiguration.js","names":["EFConfiguration"],"sources":["../../src/gui/EFConfiguration.ts"],"sourcesContent":["import { createContext, provide } from \"@lit/context\";\nimport { css, html, LitElement } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\n\nexport const efConfigurationContext = createContext<EFConfiguration | null>(\n Symbol(\"efConfigurationContext\"),\n);\n\n@customElement(\"ef-configuration\")\nexport class EFConfiguration extends LitElement {\n static styles = [\n css`\n :host {\n display: contents;\n }\n `,\n ];\n\n @provide({ context: efConfigurationContext })\n efConfiguration = this;\n\n @property({ type: String, attribute: \"api-host\" })\n apiHost?: string;\n\n @property({ type: String, attribute: \"signing-url\" })\n signingURL = \"/@ef-sign-url\";\n\n render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-configuration\": EFConfiguration;\n }\n}\n"],"mappings":";;;;;;AAIA,MAAa,yBAAyB,cACpC,OAAO,yBAAyB,CACjC;AAGM,4BAAMA,0BAAwB,WAAW;;;yBAU5B;oBAML;;;gBAfG,CACd,GAAG;;;;MAKJ;;CAWD,SAAS;AACP,SAAO,IAAI;;;YAVZ,QAAQ,EAAE,SAAS,wBAAwB,CAAC;YAG5C,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAY,CAAC;YAGjD,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAe,CAAC;8BAhBtD,cAAc,mBAAmB"}
1
+ {"version":3,"file":"EFConfiguration.js","names":[],"sources":["../../src/gui/EFConfiguration.ts"],"mappings":";;;;;AAIA,MAAa,yBAAyB,cACpC,OAAO,yBAAyB,CACjC;AAGM,IAAA,kBAAA,MAAM,wBAAwB,WAAW;;;yBAU5B;oBAML;;;gBAfG,CACd,GAAG;;;;MAKJ;;CAWD,SAAS;AACP,SAAO,IAAI;;;YAVZ,QAAQ,EAAE,SAAS,wBAAwB,CAAC,CAAA,EAAA,gBAAA,WAAA,mBAAA,KAAA,EAAA;YAG5C,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAY,CAAC,CAAA,EAAA,gBAAA,WAAA,WAAA,KAAA,EAAA;YAGjD,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAe,CAAC,CAAA,EAAA,gBAAA,WAAA,cAAA,KAAA,EAAA;8BAhBtD,cAAc,mBAAmB,CAAA,EAAA,gBAAA"}
@@ -1,11 +1,10 @@
1
1
  import { TemporalMixinInterface } from "../elements/EFTemporal.js";
2
2
  import { ControllableInterface } from "./Controllable.js";
3
3
  import { FocusContext } from "./focusContext.js";
4
- import * as lit23 from "lit";
4
+ import * as _$lit from "lit";
5
5
  import { LitElement, PropertyValueMap } from "lit";
6
6
 
7
7
  //#region src/gui/EFControls.d.ts
8
-
9
8
  /**
10
9
  * EFControls provides a way to control an ef-preview element that is not a direct ancestor.
11
10
  * It bridges the contexts from a target preview element to its children controls.
@@ -26,7 +25,7 @@ import { LitElement, PropertyValueMap } from "lit";
26
25
  */
27
26
  declare class EFControls extends LitElement {
28
27
  #private;
29
- static styles: lit23.CSSResult;
28
+ static styles: _$lit.CSSResult;
30
29
  createRenderRoot(): this;
31
30
  /**
32
31
  * The ID of the ef-preview element to control
@@ -2,7 +2,7 @@ import { efContext } from "./efContext.js";
2
2
  import { currentTimeContext } from "./currentTimeContext.js";
3
3
  import { durationContext } from "./durationContext.js";
4
4
  import { loopContext, playingContext } from "./playingContext.js";
5
- import { __decorate } from "../_virtual/_@oxc-project_runtime@0.95.0/helpers/decorate.js";
5
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
6
6
  import { isEFTemporal } from "../elements/EFTemporal.js";
7
7
  import { focusContext } from "./focusContext.js";
8
8
  import { focusedElementContext } from "./focusedElementContext.js";
@@ -13,7 +13,6 @@ import { attachContextRoot } from "../attachContextRoot.js";
13
13
  import { createContext, provide } from "@lit/context";
14
14
  import { LitElement, css } from "lit";
15
15
  import { customElement, property, state } from "lit/decorators.js";
16
-
17
16
  //#region src/gui/EFControls.ts
18
17
  attachContextRoot();
19
18
  var ContextRequestEvent = class extends Event {
@@ -37,8 +36,8 @@ const proxiedContexts = [
37
36
  [(proxy, value) => proxy.focusedElement = value, focusedElementContext],
38
37
  [(proxy, value) => proxy.focusContext.focusedElement = value, focusContext]
39
38
  ];
40
- const testContext = createContext("test");
41
- let EFControls = class EFControls$1 extends LitElement {
39
+ createContext("test");
40
+ let EFControls = class EFControls extends LitElement {
42
41
  constructor(..._args) {
43
42
  super(..._args);
44
43
  this.target = "";
@@ -188,7 +187,7 @@ __decorate([provide({ context: targetTemporalContext }), state()], EFControls.pr
188
187
  __decorate([provide({ context: focusedElementContext }), state()], EFControls.prototype, "focusedElement", void 0);
189
188
  __decorate([provide({ context: focusContext })], EFControls.prototype, "focusContext", void 0);
190
189
  EFControls = __decorate([customElement("ef-controls")], EFControls);
191
-
192
190
  //#endregion
193
191
  export { EFControls };
192
+
194
193
  //# sourceMappingURL=EFControls.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EFControls.js","names":["EFControls","#subscribeAbortController","#contextUnsubscribeMap","#directTemporalSubscription","#subscribeToContextProvider","#subscribeToDirectTemporal","#waitForTemporalToInitialize","#unsubscribe","#subscribe","#resubscribe"],"sources":["../../src/gui/EFControls.ts"],"sourcesContent":["import { type Context, createContext, provide } from \"@lit/context\";\nimport { css, LitElement, type PropertyValueMap } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { attachContextRoot } from \"../attachContextRoot.js\";\nimport { isEFTemporal, type TemporalMixinInterface } from \"../elements/EFTemporal.js\";\nimport { TargetController } from \"../elements/TargetController.js\";\nimport { targetTemporalContext } from \"./ContextMixin.js\";\nimport {\n type ControllableInterface,\n type ControllableSubscription,\n createDirectTemporalSubscription,\n determineTargetType,\n} from \"./Controllable.js\";\nimport { currentTimeContext } from \"./currentTimeContext.js\";\nimport { durationContext } from \"./durationContext.js\";\nimport { efContext } from \"./efContext.js\";\nimport { type FocusContext, focusContext } from \"./focusContext.js\";\nimport { focusedElementContext } from \"./focusedElementContext.js\";\nimport { loopContext, playingContext } from \"./playingContext.js\";\n\nattachContextRoot();\n\nclass ContextRequestEvent extends Event {\n context: Context<any, any>;\n contextTarget: Element;\n callback: (proxy: EFControls, value: any) => void;\n subscribe: boolean;\n\n constructor(\n context: Context<any, any>,\n contextTarget: Element,\n callback: (proxy: EFControls, value: any) => void,\n subscribe: boolean,\n ) {\n super(\"context-request\", { bubbles: true, composed: true });\n this.context = context;\n this.contextTarget = contextTarget;\n this.callback = callback;\n this.subscribe = subscribe ?? false;\n }\n}\n\nconst proxiedContexts = [\n [\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy: EFControls, value: boolean) => (proxy.playing = value),\n playingContext,\n ],\n [\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy: EFControls, value: boolean) => (proxy.loop = value),\n loopContext,\n ],\n [\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy: EFControls, value: number) => (proxy.currentTimeMs = value),\n currentTimeContext,\n ],\n [\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy: EFControls, value: number) => (proxy.durationMs = value),\n durationContext,\n ],\n [\n (proxy: EFControls, value: TemporalMixinInterface) =>\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy.targetTemporal = value),\n targetTemporalContext,\n ],\n [\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy: EFControls, value: HTMLElement) => (proxy.focusedElement = value),\n focusedElementContext,\n ],\n [\n (proxy: EFControls, value: HTMLElement) =>\n // biome-ignore lint/suspicious/noAssignInExpressions: Intentional assignment in callback\n (proxy.focusContext.focusedElement = value),\n focusContext,\n ],\n] as const;\n\nexport const testContext = createContext<string | null>(\"test\");\n\n/**\n * EFControls provides a way to control an ef-preview element that is not a direct ancestor.\n * It bridges the contexts from a target preview element to its children controls.\n *\n * Usage:\n * ```html\n * <ef-preview id=\"my-preview\">...</ef-preview>\n *\n * <ef-controls target=\"my-preview\">\n * <ef-toggle-play>\n * <button slot=\"play\">Play</button>\n * <button slot=\"pause\">Pause</button>\n * </ef-toggle-play>\n * <ef-scrubber></ef-scrubber>\n * <ef-time-display></ef-time-display>\n * </ef-controls>\n * ```\n */\n@customElement(\"ef-controls\")\nexport class EFControls extends LitElement {\n static styles = css`\n :host {\n display: block;\n }\n `;\n\n createRenderRoot() {\n return this;\n }\n\n /**\n * The ID of the ef-preview element to control\n */\n @property({ type: String })\n target = \"\";\n\n /**\n * The target element (set by TargetController)\n */\n @provide({ context: efContext })\n @state()\n targetElement: ControllableInterface | null = null;\n\n @provide({ context: playingContext })\n @state()\n playing = false;\n\n @provide({ context: loopContext })\n @state()\n loop = false;\n\n @provide({ context: currentTimeContext })\n @state()\n currentTimeMs = 0;\n\n @provide({ context: durationContext })\n @state()\n durationMs = 0;\n\n @provide({ context: targetTemporalContext })\n @state()\n targetTemporal: TemporalMixinInterface | null = null;\n\n @provide({ context: focusedElementContext })\n @state()\n focusedElement?: HTMLElement;\n\n @provide({ context: focusContext })\n focusContext = this as FocusContext;\n\n // @ts-expect-error controller is intentionally not referenced directly\n // oxlint-disable-next-line no-unused-private-class-members -- retained for constructor side effects\n #targetController = new TargetController(this);\n\n // Subscription tracking for different target types\n #contextUnsubscribeMap = new Map<Context<any, any>, () => void>();\n #directTemporalSubscription: ControllableSubscription | null = null;\n\n #unsubscribe() {\n // Abort any pending async subscription attempts\n this.#subscribeAbortController?.abort();\n this.#subscribeAbortController = null;\n\n // Unsubscribe from context-provider subscriptions\n for (const unsubscribe of this.#contextUnsubscribeMap.values()) {\n unsubscribe();\n }\n this.#contextUnsubscribeMap.clear();\n\n // Unsubscribe from direct-temporal subscription\n if (this.#directTemporalSubscription) {\n this.#directTemporalSubscription.unsubscribe();\n this.#directTemporalSubscription = null;\n }\n\n // Note: We don't reset state here because:\n // 1. During resubscribe, the new subscription will immediately provide values\n // 2. During disconnect, the element is being removed anyway\n // Resetting state would cause race conditions with context consumers\n }\n\n #subscribeAbortController: AbortController | null = null;\n\n #subscribe() {\n if (!this.targetElement) return;\n\n // Cancel any pending async subscription\n this.#subscribeAbortController?.abort();\n this.#subscribeAbortController = new AbortController();\n\n const targetType = determineTargetType(this.targetElement);\n\n switch (targetType) {\n case \"context-provider\":\n this.#subscribeToContextProvider();\n break;\n case \"direct-temporal\":\n this.#subscribeToDirectTemporal();\n break;\n case \"none\":\n // Target might be a temporal that hasn't initialized yet\n // Try to wait for it to become controllable\n this.#waitForTemporalToInitialize();\n break;\n }\n }\n\n /**\n * Wait for a temporal element to initialize its playbackController.\n * This handles the case where we target a temporal element before it has\n * completed initialization and created its playbackController.\n *\n * Note: playbackController is created in EFTemporal's connectedCallback via\n * `this.updateComplete.then(() => this.didBecomeRoot())`, so we need to wait\n * past updateComplete for the .then() callback to run.\n */\n async #waitForTemporalToInitialize() {\n if (!this.targetElement || !isEFTemporal(this.targetElement)) return;\n\n const temporal = this.targetElement as TemporalMixinInterface & HTMLElement;\n const signal = this.#subscribeAbortController?.signal;\n\n // Wait for the element to finish its update cycle\n await temporal.updateComplete;\n if (signal?.aborted) return;\n\n // playbackController is created in a .then() callback after updateComplete,\n // so we need to wait for that microtask to complete\n if (!temporal.playbackController) {\n await new Promise((resolve) => requestAnimationFrame(resolve));\n if (signal?.aborted) return;\n await temporal.updateComplete;\n if (signal?.aborted) return;\n }\n\n // Check again if it now has a playbackController\n if (temporal.playbackController) {\n this.#subscribeToDirectTemporal();\n }\n }\n\n /**\n * Subscribe to a context-providing target (like EFPreview).\n * Uses Lit Context dispatch mechanism.\n */\n #subscribeToContextProvider() {\n if (!this.targetElement) return;\n\n for (const [callback, context] of proxiedContexts) {\n const event = new ContextRequestEvent(\n context,\n this,\n (value, unsubscribe) => {\n callback(this, value as never);\n this.#contextUnsubscribeMap.set(context, unsubscribe);\n },\n true,\n );\n this.targetElement.dispatchEvent(event);\n }\n }\n\n /**\n * Subscribe to a direct temporal element's playback controller.\n * Used when targeting ef-timegroup, ef-video, ef-audio directly without ef-preview wrapper.\n */\n async #subscribeToDirectTemporal() {\n if (!this.targetElement || !isEFTemporal(this.targetElement)) return;\n\n const temporal = this.targetElement as TemporalMixinInterface & HTMLElement;\n const signal = this.#subscribeAbortController?.signal;\n\n // Wait for the temporal element to complete initialization\n // This ensures playbackController exists\n await temporal.updateComplete;\n if (signal?.aborted) return;\n\n // If playbackController still doesn't exist, the element might need another update cycle\n if (!temporal.playbackController) {\n // Wait one more frame for didBecomeRoot to create the controller\n await new Promise((resolve) => requestAnimationFrame(resolve));\n if (signal?.aborted) return;\n await temporal.updateComplete;\n if (signal?.aborted) return;\n }\n\n if (!temporal.playbackController) {\n // Still no controller - this element is likely a nested temporal\n return;\n }\n\n this.#directTemporalSubscription = createDirectTemporalSubscription(temporal, {\n onPlayingChange: (value) => {\n this.playing = value;\n },\n onLoopChange: (value) => {\n this.loop = value;\n },\n onCurrentTimeMsChange: (value) => {\n this.currentTimeMs = value;\n },\n onDurationMsChange: (value) => {\n this.durationMs = value;\n },\n onTargetTemporalChange: (value) => {\n this.targetTemporal = value;\n },\n onFocusedElementChange: (value) => {\n this.focusedElement = value;\n },\n });\n }\n\n #resubscribe() {\n this.#unsubscribe();\n this.#subscribe();\n }\n updated(changedProperties: PropertyValueMap<this>) {\n super.updated(changedProperties);\n if (changedProperties.has(\"targetElement\")) {\n this.#resubscribe();\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.#unsubscribe();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-controls\": EFControls;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAoBA,mBAAmB;AAEnB,IAAM,sBAAN,cAAkC,MAAM;CAMtC,YACE,SACA,eACA,UACA,WACA;AACA,QAAM,mBAAmB;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC;AAC3D,OAAK,UAAU;AACf,OAAK,gBAAgB;AACrB,OAAK,WAAW;AAChB,OAAK,YAAY,aAAa;;;AAIlC,MAAM,kBAAkB;CACtB,EAEG,OAAmB,UAAoB,MAAM,UAAU,OACxD,eACD;CACD,EAEG,OAAmB,UAAoB,MAAM,OAAO,OACrD,YACD;CACD,EAEG,OAAmB,UAAmB,MAAM,gBAAgB,OAC7D,mBACD;CACD,EAEG,OAAmB,UAAmB,MAAM,aAAa,OAC1D,gBACD;CACD,EACG,OAAmB,UAEjB,MAAM,iBAAiB,OAC1B,sBACD;CACD,EAEG,OAAmB,UAAwB,MAAM,iBAAiB,OACnE,sBACD;CACD,EACG,OAAmB,UAEjB,MAAM,aAAa,iBAAiB,OACvC,aACD;CACF;AAED,MAAa,cAAc,cAA6B,OAAO;AAqBxD,uBAAMA,qBAAmB,WAAW;;;gBAehC;uBAOqC;iBAIpC;cAIH;uBAIS;oBAIH;wBAImC;sBAOjC;;;gBAhDC,GAAG;;;;;;CAMnB,mBAAmB;AACjB,SAAO;;CA6CT,oBAAoB,IAAI,iBAAiB,KAAK;CAG9C,yCAAyB,IAAI,KAAoC;CACjE,8BAA+D;CAE/D,eAAe;AAEb,QAAKC,0BAA2B,OAAO;AACvC,QAAKA,2BAA4B;AAGjC,OAAK,MAAM,eAAe,MAAKC,sBAAuB,QAAQ,CAC5D,cAAa;AAEf,QAAKA,sBAAuB,OAAO;AAGnC,MAAI,MAAKC,4BAA6B;AACpC,SAAKA,2BAA4B,aAAa;AAC9C,SAAKA,6BAA8B;;;CASvC,4BAAoD;CAEpD,aAAa;AACX,MAAI,CAAC,KAAK,cAAe;AAGzB,QAAKF,0BAA2B,OAAO;AACvC,QAAKA,2BAA4B,IAAI,iBAAiB;AAItD,UAFmB,oBAAoB,KAAK,cAAc,EAE1D;GACE,KAAK;AACH,UAAKG,4BAA6B;AAClC;GACF,KAAK;AACH,UAAKC,2BAA4B;AACjC;GACF,KAAK;AAGH,UAAKC,6BAA8B;AACnC;;;;;;;;;;;;CAaN,OAAMA,8BAA+B;AACnC,MAAI,CAAC,KAAK,iBAAiB,CAAC,aAAa,KAAK,cAAc,CAAE;EAE9D,MAAM,WAAW,KAAK;EACtB,MAAM,SAAS,MAAKL,0BAA2B;AAG/C,QAAM,SAAS;AACf,MAAI,QAAQ,QAAS;AAIrB,MAAI,CAAC,SAAS,oBAAoB;AAChC,SAAM,IAAI,SAAS,YAAY,sBAAsB,QAAQ,CAAC;AAC9D,OAAI,QAAQ,QAAS;AACrB,SAAM,SAAS;AACf,OAAI,QAAQ,QAAS;;AAIvB,MAAI,SAAS,mBACX,OAAKI,2BAA4B;;;;;;CAQrC,8BAA8B;AAC5B,MAAI,CAAC,KAAK,cAAe;AAEzB,OAAK,MAAM,CAAC,UAAU,YAAY,iBAAiB;GACjD,MAAM,QAAQ,IAAI,oBAChB,SACA,OACC,OAAO,gBAAgB;AACtB,aAAS,MAAM,MAAe;AAC9B,UAAKH,sBAAuB,IAAI,SAAS,YAAY;MAEvD,KACD;AACD,QAAK,cAAc,cAAc,MAAM;;;;;;;CAQ3C,OAAMG,4BAA6B;AACjC,MAAI,CAAC,KAAK,iBAAiB,CAAC,aAAa,KAAK,cAAc,CAAE;EAE9D,MAAM,WAAW,KAAK;EACtB,MAAM,SAAS,MAAKJ,0BAA2B;AAI/C,QAAM,SAAS;AACf,MAAI,QAAQ,QAAS;AAGrB,MAAI,CAAC,SAAS,oBAAoB;AAEhC,SAAM,IAAI,SAAS,YAAY,sBAAsB,QAAQ,CAAC;AAC9D,OAAI,QAAQ,QAAS;AACrB,SAAM,SAAS;AACf,OAAI,QAAQ,QAAS;;AAGvB,MAAI,CAAC,SAAS,mBAEZ;AAGF,QAAKE,6BAA8B,iCAAiC,UAAU;GAC5E,kBAAkB,UAAU;AAC1B,SAAK,UAAU;;GAEjB,eAAe,UAAU;AACvB,SAAK,OAAO;;GAEd,wBAAwB,UAAU;AAChC,SAAK,gBAAgB;;GAEvB,qBAAqB,UAAU;AAC7B,SAAK,aAAa;;GAEpB,yBAAyB,UAAU;AACjC,SAAK,iBAAiB;;GAExB,yBAAyB,UAAU;AACjC,SAAK,iBAAiB;;GAEzB,CAAC;;CAGJ,eAAe;AACb,QAAKI,aAAc;AACnB,QAAKC,WAAY;;CAEnB,QAAQ,mBAA2C;AACjD,QAAM,QAAQ,kBAAkB;AAChC,MAAI,kBAAkB,IAAI,gBAAgB,CACxC,OAAKC,aAAc;;CAIvB,uBAAuB;AACrB,QAAM,sBAAsB;AAC5B,QAAKF,aAAc;;;YArNpB,SAAS,EAAE,MAAM,QAAQ,CAAC;YAM1B,QAAQ,EAAE,SAAS,WAAW,CAAC,EAC/B,OAAO;YAGP,QAAQ,EAAE,SAAS,gBAAgB,CAAC,EACpC,OAAO;YAGP,QAAQ,EAAE,SAAS,aAAa,CAAC,EACjC,OAAO;YAGP,QAAQ,EAAE,SAAS,oBAAoB,CAAC,EACxC,OAAO;YAGP,QAAQ,EAAE,SAAS,iBAAiB,CAAC,EACrC,OAAO;YAGP,QAAQ,EAAE,SAAS,uBAAuB,CAAC,EAC3C,OAAO;YAGP,QAAQ,EAAE,SAAS,uBAAuB,CAAC,EAC3C,OAAO;YAGP,QAAQ,EAAE,SAAS,cAAc,CAAC;yBAjDpC,cAAc,cAAc"}
1
+ {"version":3,"file":"EFControls.js","names":["#subscribeAbortController","#contextUnsubscribeMap","#directTemporalSubscription","#subscribeToContextProvider","#subscribeToDirectTemporal","#waitForTemporalToInitialize","#unsubscribe","#subscribe","#resubscribe"],"sources":["../../src/gui/EFControls.ts"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import * as lit22 from "lit";
1
+ import { TemplateResult as TemplateResult$1 } from "../node_modules/lit-html/development/lit-html.js";
2
+ import * as _$lit from "lit";
2
3
  import { LitElement } from "lit";
3
- import * as lit_html21 from "lit-html";
4
4
 
5
5
  //#region src/gui/EFDial.d.ts
6
6
  interface DialChangeDetail {
@@ -13,12 +13,12 @@ declare class EFDial extends LitElement {
13
13
  private isDragging;
14
14
  private dragStartAngle;
15
15
  private dragStartValue;
16
- static styles: lit22.CSSResult;
16
+ static styles: _$lit.CSSResult;
17
17
  private getAngleFromPoint;
18
18
  private handlePointerDown;
19
19
  private handlePointerMove;
20
20
  private handlePointerUp;
21
- render(): lit_html21.TemplateResult<1>;
21
+ render(): TemplateResult$1<1>;
22
22
  }
23
23
  //#endregion
24
24
  export { DialChangeDetail, EFDial };
@@ -1,10 +1,9 @@
1
- import { __decorate } from "../_virtual/_@oxc-project_runtime@0.95.0/helpers/decorate.js";
1
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
2
2
  import { LitElement, css, html } from "lit";
3
3
  import { customElement, property, state } from "lit/decorators.js";
4
4
  import { styleMap } from "lit/directives/style-map.js";
5
-
6
5
  //#region src/gui/EFDial.ts
7
- let EFDial = class EFDial$1 extends LitElement {
6
+ let EFDial = class EFDial extends LitElement {
8
7
  constructor(..._args) {
9
8
  super(..._args);
10
9
  this._value = 0;
@@ -145,7 +144,7 @@ let EFDial = class EFDial$1 extends LitElement {
145
144
  __decorate([property({ type: Number })], EFDial.prototype, "value", null);
146
145
  __decorate([state()], EFDial.prototype, "isDragging", void 0);
147
146
  EFDial = __decorate([customElement("ef-dial")], EFDial);
148
-
149
147
  //#endregion
150
148
  export { EFDial };
149
+
151
150
  //# sourceMappingURL=EFDial.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EFDial.js","names":["EFDial"],"sources":["../../src/gui/EFDial.ts"],"sourcesContent":["import { css, html, LitElement } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\n\nexport interface DialChangeDetail {\n value: number;\n}\n\n@customElement(\"ef-dial\")\nexport class EFDial extends LitElement {\n @property({ type: Number })\n set value(newValue: number) {\n // Normalize to 0-360 range\n newValue = newValue % 360;\n if (newValue < 0) {\n newValue += 360;\n }\n // Limit to 6 significant digits\n newValue = Number.parseFloat(newValue.toPrecision(6));\n\n const oldValue = this._value;\n this._value = newValue;\n this.requestUpdate(\"value\", oldValue);\n }\n\n get value() {\n return this._value;\n }\n\n private _value = 0;\n\n @state()\n private isDragging = false;\n\n private dragStartAngle = 0;\n private dragStartValue = 0;\n\n static styles = css`\n :host {\n display: inline-block;\n width: 200px; /* Default size, can be overridden by CSS */\n height: 200px; /* Default size, can be overridden by CSS */\n --dial-stroke: var(--ef-color-border);\n --dial-tick: var(--ef-color-border-subtle);\n }\n .dial-container {\n position: relative;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: var(--ef-color-bg-panel);\n border: 2px solid var(--ef-color-border);\n }\n .handle {\n position: absolute;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n border: 2px solid var(--ef-color-primary);\n background-color: var(--ef-color-bg-elevated);\n cursor: grab;\n }\n .handle.dragging {\n background-color: var(--ef-color-primary);\n cursor: grabbing;\n }\n .center-text {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--ef-color-bg-elevated);\n border: 1px solid var(--ef-color-border);\n padding: 2px 4px;\n border-radius: 4px;\n font-family: monospace;\n font-size: 12px;\n color: var(--ef-color-text);\n }\n `;\n\n private getAngleFromPoint(clientX: number, clientY: number, rect: DOMRect) {\n const center = this.clientWidth / 2;\n const x = clientX - rect.left - center;\n const y = clientY - rect.top - center;\n return Math.atan2(y, x);\n }\n\n private handlePointerDown(e: PointerEvent) {\n e.preventDefault();\n this.isDragging = true;\n const rect = this.getBoundingClientRect();\n this.dragStartAngle = this.getAngleFromPoint(e.clientX, e.clientY, rect);\n this.dragStartValue = this.value;\n this.setPointerCapture(e.pointerId);\n this.addEventListener(\"pointermove\", this.handlePointerMove, {\n passive: false,\n });\n this.addEventListener(\"pointerup\", this.handlePointerUp, {\n passive: false,\n });\n }\n\n private handlePointerMove(e: PointerEvent) {\n if (!this.isDragging) return;\n\n e.preventDefault();\n const rect = this.getBoundingClientRect();\n const currentAngle = this.getAngleFromPoint(e.clientX, e.clientY, rect);\n const angleDelta = currentAngle - this.dragStartAngle;\n\n let newValue = this.dragStartValue + (angleDelta * 180) / Math.PI;\n\n if (e.shiftKey) {\n newValue = Math.round(newValue / 15) * 15;\n }\n\n // Normalize to 0-360 range\n newValue = newValue % 360;\n if (newValue < 0) {\n newValue += 360;\n }\n\n // Limit to 6 significant digits\n newValue = Number.parseFloat(newValue.toPrecision(6));\n\n this.value = newValue;\n this.dispatchEvent(\n new CustomEvent<DialChangeDetail>(\"change\", {\n detail: { value: this.value },\n }),\n );\n }\n\n private handlePointerUp(e: PointerEvent) {\n e.preventDefault();\n this.isDragging = false;\n this.releasePointerCapture(e.pointerId);\n this.removeEventListener(\"pointermove\", this.handlePointerMove);\n this.removeEventListener(\"pointerup\", this.handlePointerUp);\n }\n\n render() {\n const center = this.clientWidth / 2;\n const radius = center - 20;\n const handleAngle = (this.value * Math.PI) / 180;\n const handleX = center + Math.cos(handleAngle) * radius;\n const handleY = center + Math.sin(handleAngle) * radius;\n\n const handleStyles = {\n left: `${handleX - 8}px`,\n top: `${handleY - 8}px`,\n };\n\n return html`\n <div class=\"dial-container\" @pointerdown=${this.handlePointerDown}>\n <svg class=\"absolute inset-0 w-full h-full\">\n <circle\n cx=${center}\n cy=${center}\n r=${radius}\n fill=\"none\"\n stroke=\"var(--dial-stroke)\"\n stroke-width=\"2\"\n stroke-dasharray=\"4 4\"\n />\n ${[0, 90, 180, 270].map((deg) => {\n const angle = (deg * Math.PI) / 180;\n const x1 = center + Math.cos(angle) * (radius - 8);\n const y1 = center + Math.sin(angle) * (radius - 8);\n const x2 = center + Math.cos(angle) * (radius + 8);\n const y2 = center + Math.sin(angle) * (radius + 8);\n return html`<line x1=${x1} y1=${y1} x2=${x2} y2=${y2} stroke=\"var(--dial-tick)\" stroke-width=\"2\" />`;\n })}\n </svg>\n <div class=\"handle ${this.isDragging ? \"dragging\" : \"\"}\" style=${styleMap(handleStyles)}></div>\n <div class=\"center-text\">${this.value.toFixed(0)}°</div>\n </div>\n `;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"EFDial.js","names":[],"sources":["../../src/gui/EFDial.ts"],"mappings":";;;;;AASO,IAAA,SAAA,MAAM,eAAe,WAAW;;;gBAoBpB;oBAGI;wBAEI;wBACA;;CAzBzB,IACI,MAAM,UAAkB;AAE1B,aAAW,WAAW;AACtB,MAAI,WAAW,EACb,aAAY;AAGd,aAAW,OAAO,WAAW,SAAS,YAAY,EAAE,CAAC;EAErD,MAAM,WAAW,KAAK;AACtB,OAAK,SAAS;AACd,OAAK,cAAc,SAAS,SAAS;;CAGvC,IAAI,QAAQ;AACV,SAAO,KAAK;;;gBAWE,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CnB,kBAA0B,SAAiB,SAAiB,MAAe;EACzE,MAAM,SAAS,KAAK,cAAc;EAClC,MAAM,IAAI,UAAU,KAAK,OAAO;EAChC,MAAM,IAAI,UAAU,KAAK,MAAM;AAC/B,SAAO,KAAK,MAAM,GAAG,EAAE;;CAGzB,kBAA0B,GAAiB;AACzC,IAAE,gBAAgB;AAClB,OAAK,aAAa;EAClB,MAAM,OAAO,KAAK,uBAAuB;AACzC,OAAK,iBAAiB,KAAK,kBAAkB,EAAE,SAAS,EAAE,SAAS,KAAK;AACxE,OAAK,iBAAiB,KAAK;AAC3B,OAAK,kBAAkB,EAAE,UAAU;AACnC,OAAK,iBAAiB,eAAe,KAAK,mBAAmB,EAC3D,SAAS,OACV,CAAC;AACF,OAAK,iBAAiB,aAAa,KAAK,iBAAiB,EACvD,SAAS,OACV,CAAC;;CAGJ,kBAA0B,GAAiB;AACzC,MAAI,CAAC,KAAK,WAAY;AAEtB,IAAE,gBAAgB;EAClB,MAAM,OAAO,KAAK,uBAAuB;EAEzC,MAAM,aADe,KAAK,kBAAkB,EAAE,SAAS,EAAE,SAAS,KAAK,GACrC,KAAK;EAEvC,IAAI,WAAW,KAAK,iBAAkB,aAAa,MAAO,KAAK;AAE/D,MAAI,EAAE,SACJ,YAAW,KAAK,MAAM,WAAW,GAAG,GAAG;AAIzC,aAAW,WAAW;AACtB,MAAI,WAAW,EACb,aAAY;AAId,aAAW,OAAO,WAAW,SAAS,YAAY,EAAE,CAAC;AAErD,OAAK,QAAQ;AACb,OAAK,cACH,IAAI,YAA8B,UAAU,EAC1C,QAAQ,EAAE,OAAO,KAAK,OAAO,EAC9B,CAAC,CACH;;CAGH,gBAAwB,GAAiB;AACvC,IAAE,gBAAgB;AAClB,OAAK,aAAa;AAClB,OAAK,sBAAsB,EAAE,UAAU;AACvC,OAAK,oBAAoB,eAAe,KAAK,kBAAkB;AAC/D,OAAK,oBAAoB,aAAa,KAAK,gBAAgB;;CAG7D,SAAS;EACP,MAAM,SAAS,KAAK,cAAc;EAClC,MAAM,SAAS,SAAS;EACxB,MAAM,cAAe,KAAK,QAAQ,KAAK,KAAM;EAC7C,MAAM,UAAU,SAAS,KAAK,IAAI,YAAY,GAAG;EACjD,MAAM,UAAU,SAAS,KAAK,IAAI,YAAY,GAAG;EAEjD,MAAM,eAAe;GACnB,MAAM,GAAG,UAAU,EAAE;GACrB,KAAK,GAAG,UAAU,EAAE;GACrB;AAED,SAAO,IAAI;iDACkC,KAAK,kBAAkB;;;iBAGvD,OAAO;iBACP,OAAO;gBACR,OAAO;;;;;;YAMX;GAAC;GAAG;GAAI;GAAK;GAAI,CAAC,KAAK,QAAQ;GAC/B,MAAM,QAAS,MAAM,KAAK,KAAM;AAKhC,UAAO,IAAI,YAJA,SAAS,KAAK,IAAI,MAAM,IAAI,SAAS,GAItB,MAHf,SAAS,KAAK,IAAI,MAAM,IAAI,SAAS,GAGb,MAFxB,SAAS,KAAK,IAAI,MAAM,IAAI,SAAS,GAEJ,MADjC,SAAS,KAAK,IAAI,MAAM,IAAI,SAAS,GACK;IACrD,CAAC;;6BAEgB,KAAK,aAAa,aAAa,GAAG,UAAU,SAAS,aAAa,CAAC;mCAC7D,KAAK,MAAM,QAAQ,EAAE,CAAC;;;;;YAtKtD,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,OAAA,WAAA,SAAA,KAAA;YAqB1B,OAAO,CAAA,EAAA,OAAA,WAAA,cAAA,KAAA,EAAA;qBAvBT,cAAc,UAAU,CAAA,EAAA,OAAA"}
@@ -1,15 +1,14 @@
1
+ import { TemplateResult as TemplateResult$1 } from "../node_modules/lit-html/development/lit-html.js";
1
2
  import { TemporalMixinInterface } from "../elements/EFTemporal.js";
2
- import "./timeline/EFTimeline.js";
3
- import * as lit10 from "lit";
3
+ import { Ref } from "../node_modules/lit-html/development/directives/ref.js";
4
+ import * as _$lit from "lit";
4
5
  import { LitElement } from "lit";
5
- import * as lit_html10 from "lit-html";
6
- import * as lit_html_directives_ref0 from "lit-html/directives/ref";
7
6
 
8
7
  //#region src/gui/EFFilmstrip.d.ts
9
8
  declare const EFFilmstrip_base: typeof LitElement;
10
9
  declare class EFFilmstrip extends EFFilmstrip_base {
11
10
  #private;
12
- static styles: lit10.CSSResult[];
11
+ static styles: _$lit.CSSResult[];
13
12
  target: string;
14
13
  pixelsPerMs: number;
15
14
  hidePlayhead: boolean;
@@ -21,10 +20,10 @@ declare class EFFilmstrip extends EFFilmstrip_base {
21
20
  get targetTemporal(): TemporalMixinInterface | null;
22
21
  get hideSelectors(): string[] | undefined;
23
22
  get showSelectors(): string[] | undefined;
24
- timelineRef: lit_html_directives_ref0.Ref<HTMLElement>;
23
+ timelineRef: Ref<HTMLElement>;
25
24
  connectedCallback(): void;
26
25
  protected willUpdate(changedProperties: Map<string | number | symbol, unknown>): void;
27
- render(): lit_html10.TemplateResult<1>;
26
+ render(): TemplateResult$1<1>;
28
27
  }
29
28
  declare global {
30
29
  interface HTMLElementTagNameMap {
@@ -1,5 +1,5 @@
1
1
  import { TWMixin } from "./TWMixin2.js";
2
- import { __decorate } from "../_virtual/_@oxc-project_runtime@0.95.0/helpers/decorate.js";
2
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
3
3
  import { isEFTemporal } from "../elements/EFTemporal.js";
4
4
  import { targetTemporalContext } from "./ContextMixin.js";
5
5
  import { TargetController } from "../elements/TargetController.js";
@@ -8,9 +8,8 @@ import { consume } from "@lit/context";
8
8
  import { LitElement, css, html } from "lit";
9
9
  import { customElement, property, state } from "lit/decorators.js";
10
10
  import { createRef, ref } from "lit/directives/ref.js";
11
-
12
11
  //#region src/gui/EFFilmstrip.ts
13
- let EFFilmstrip = class EFFilmstrip$1 extends TWMixin(LitElement) {
12
+ let EFFilmstrip = class EFFilmstrip extends TWMixin(LitElement) {
14
13
  constructor(..._args) {
15
14
  super(..._args);
16
15
  this.target = "";
@@ -104,7 +103,7 @@ __decorate([consume({
104
103
  subscribe: true
105
104
  }), state()], EFFilmstrip.prototype, "_contextProvidedTemporal", void 0);
106
105
  EFFilmstrip = __decorate([customElement("ef-filmstrip")], EFFilmstrip);
107
-
108
106
  //#endregion
109
107
  export { EFFilmstrip };
108
+
110
109
  //# sourceMappingURL=EFFilmstrip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EFFilmstrip.js","names":["EFFilmstrip","#targetController","#lastTargetTemporal"],"sources":["../../src/gui/EFFilmstrip.ts"],"sourcesContent":["import { consume } from \"@lit/context\";\nimport { css, html, LitElement } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\n\nimport { isEFTemporal, type TemporalMixinInterface } from \"../elements/EFTemporal.js\";\nimport { TargetController } from \"../elements/TargetController.js\";\nimport { targetTemporalContext } from \"./ContextMixin.ts\";\nimport { TWMixin } from \"./TWMixin.js\";\nimport \"./timeline/EFTimeline.js\";\n\n@customElement(\"ef-filmstrip\")\nexport class EFFilmstrip extends TWMixin(LitElement) {\n static styles = [\n css`\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n `,\n ];\n\n @property({ type: String })\n target = \"\";\n\n @property({ type: Number, attribute: \"pixels-per-ms\" })\n pixelsPerMs = 0.04;\n\n @property({ type: Boolean, attribute: \"hide-playhead\" })\n hidePlayhead = false;\n\n @property({ type: Boolean, attribute: \"disable-internal-scroll\" })\n disableInternalScroll = false;\n\n @property({ type: String })\n hide = \"\";\n\n @property({ type: String })\n show = \"\";\n\n @state()\n targetElement: Element | null = null;\n\n #targetController?: TargetController;\n #lastTargetTemporal?: TemporalMixinInterface | null;\n\n @consume({ context: targetTemporalContext, subscribe: true })\n @state()\n private _contextProvidedTemporal?: TemporalMixinInterface | null;\n\n get targetTemporal(): TemporalMixinInterface | null {\n const fromTarget =\n this.targetElement && isEFTemporal(this.targetElement)\n ? (this.targetElement as TemporalMixinInterface & HTMLElement)\n : null;\n const fromContext = this._contextProvidedTemporal;\n\n if (fromTarget && fromContext && fromTarget !== fromContext) {\n console.warn(\n \"EFFilmstrip: Both target attribute and parent context found. Using target attribute.\",\n { target: this.target, fromTarget, fromContext },\n );\n }\n\n return fromTarget ?? fromContext ?? null;\n }\n\n get hideSelectors(): string[] | undefined {\n if (!this.hide) return undefined;\n return this.hide\n .split(\",\")\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n }\n\n get showSelectors(): string[] | undefined {\n if (!this.show) return undefined;\n return this.show\n .split(\",\")\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n }\n\n timelineRef = createRef<HTMLElement>();\n\n connectedCallback(): void {\n super.connectedCallback();\n if (this.target) {\n this.#targetController = new TargetController(this);\n }\n }\n\n protected willUpdate(changedProperties: Map<string | number | symbol, unknown>) {\n if (changedProperties.has(\"target\")) {\n if (this.target && !this.#targetController) {\n this.#targetController = new TargetController(this);\n }\n }\n\n const currentTargetTemporal = this.targetTemporal;\n if (this.#lastTargetTemporal !== currentTargetTemporal) {\n this.#lastTargetTemporal = currentTargetTemporal;\n\n // The inner ef-timeline lives in our shadow root and can't resolve\n // targets from the document registry. Force it to re-render when\n // our own target resolution succeeds or changes.\n const timeline = this.timelineRef.value as any;\n if (timeline) {\n timeline.requestUpdate();\n }\n }\n\n super.willUpdate(changedProperties);\n }\n\n render() {\n const targetId = this.targetTemporal\n ? (this.targetTemporal as unknown as HTMLElement).id || this.target\n : this.target;\n\n return html`\n <ef-timeline\n ${ref(this.timelineRef)}\n target=${targetId}\n control-target=${targetId}\n pixels-per-ms=${this.pixelsPerMs}\n .showPlayhead=${!this.hidePlayhead}\n .showControls=${true}\n hide=${this.hide}\n show=${this.show}\n ></ef-timeline>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-filmstrip\": EFFilmstrip;\n }\n}\n"],"mappings":";;;;;;;;;;;;AAYO,wBAAMA,sBAAoB,QAAQ,WAAW,CAAC;;;gBAY1C;qBAGK;sBAGC;+BAGS;cAGjB;cAGA;uBAGyB;qBA0ClB,WAAwB;;;gBAvEtB,CACd,GAAG;;;;;;MAOJ;;CAuBD;CACA;CAMA,IAAI,iBAAgD;EAClD,MAAM,aACJ,KAAK,iBAAiB,aAAa,KAAK,cAAc,GACjD,KAAK,gBACN;EACN,MAAM,cAAc,KAAK;AAEzB,MAAI,cAAc,eAAe,eAAe,YAC9C,SAAQ,KACN,wFACA;GAAE,QAAQ,KAAK;GAAQ;GAAY;GAAa,CACjD;AAGH,SAAO,cAAc,eAAe;;CAGtC,IAAI,gBAAsC;AACxC,MAAI,CAAC,KAAK,KAAM,QAAO;AACvB,SAAO,KAAK,KACT,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,MAAM,CAAC,CACpB,QAAQ,MAAM,EAAE,SAAS,EAAE;;CAGhC,IAAI,gBAAsC;AACxC,MAAI,CAAC,KAAK,KAAM,QAAO;AACvB,SAAO,KAAK,KACT,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,MAAM,CAAC,CACpB,QAAQ,MAAM,EAAE,SAAS,EAAE;;CAKhC,oBAA0B;AACxB,QAAM,mBAAmB;AACzB,MAAI,KAAK,OACP,OAAKC,mBAAoB,IAAI,iBAAiB,KAAK;;CAIvD,AAAU,WAAW,mBAA2D;AAC9E,MAAI,kBAAkB,IAAI,SAAS,EACjC;OAAI,KAAK,UAAU,CAAC,MAAKA,iBACvB,OAAKA,mBAAoB,IAAI,iBAAiB,KAAK;;EAIvD,MAAM,wBAAwB,KAAK;AACnC,MAAI,MAAKC,uBAAwB,uBAAuB;AACtD,SAAKA,qBAAsB;GAK3B,MAAM,WAAW,KAAK,YAAY;AAClC,OAAI,SACF,UAAS,eAAe;;AAI5B,QAAM,WAAW,kBAAkB;;CAGrC,SAAS;EACP,MAAM,WAAW,KAAK,iBACjB,KAAK,eAA0C,MAAM,KAAK,SAC3D,KAAK;AAET,SAAO,IAAI;;UAEL,IAAI,KAAK,YAAY,CAAC;iBACf,SAAS;yBACD,SAAS;wBACV,KAAK,YAAY;wBACjB,CAAC,KAAK,aAAa;wBACnB,KAAK;eACd,KAAK,KAAK;eACV,KAAK,KAAK;;;;;YA3GtB,SAAS,EAAE,MAAM,QAAQ,CAAC;YAG1B,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAiB,CAAC;YAGtD,SAAS;CAAE,MAAM;CAAS,WAAW;CAAiB,CAAC;YAGvD,SAAS;CAAE,MAAM;CAAS,WAAW;CAA2B,CAAC;YAGjE,SAAS,EAAE,MAAM,QAAQ,CAAC;YAG1B,SAAS,EAAE,MAAM,QAAQ,CAAC;YAG1B,OAAO;YAMP,QAAQ;CAAE,SAAS;CAAuB,WAAW;CAAM,CAAC,EAC5D,OAAO;0BArCT,cAAc,eAAe"}
1
+ {"version":3,"file":"EFFilmstrip.js","names":["#targetController","#lastTargetTemporal"],"sources":["../../src/gui/EFFilmstrip.ts"],"mappings":";;;;;;;;;;;AAYO,IAAA,cAAA,MAAM,oBAAoB,QAAQ,WAAW,CAAC;;;gBAY1C;qBAGK;sBAGC;+BAGS;cAGjB;cAGA;uBAGyB;qBA0ClB,WAAwB;;;gBAvEtB,CACd,GAAG;;;;;;MAOJ;;CAuBD;CACA;CAMA,IAAI,iBAAgD;EAClD,MAAM,aACJ,KAAK,iBAAiB,aAAa,KAAK,cAAc,GACjD,KAAK,gBACN;EACN,MAAM,cAAc,KAAK;AAEzB,MAAI,cAAc,eAAe,eAAe,YAC9C,SAAQ,KACN,wFACA;GAAE,QAAQ,KAAK;GAAQ;GAAY;GAAa,CACjD;AAGH,SAAO,cAAc,eAAe;;CAGtC,IAAI,gBAAsC;AACxC,MAAI,CAAC,KAAK,KAAM,QAAO,KAAA;AACvB,SAAO,KAAK,KACT,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,MAAM,CAAC,CACpB,QAAQ,MAAM,EAAE,SAAS,EAAE;;CAGhC,IAAI,gBAAsC;AACxC,MAAI,CAAC,KAAK,KAAM,QAAO,KAAA;AACvB,SAAO,KAAK,KACT,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,MAAM,CAAC,CACpB,QAAQ,MAAM,EAAE,SAAS,EAAE;;CAKhC,oBAA0B;AACxB,QAAM,mBAAmB;AACzB,MAAI,KAAK,OACP,OAAA,mBAAyB,IAAI,iBAAiB,KAAK;;CAIvD,WAAqB,mBAA2D;AAC9E,MAAI,kBAAkB,IAAI,SAAS;OAC7B,KAAK,UAAU,CAAC,MAAA,iBAClB,OAAA,mBAAyB,IAAI,iBAAiB,KAAK;;EAIvD,MAAM,wBAAwB,KAAK;AACnC,MAAI,MAAA,uBAA6B,uBAAuB;AACtD,SAAA,qBAA2B;GAK3B,MAAM,WAAW,KAAK,YAAY;AAClC,OAAI,SACF,UAAS,eAAe;;AAI5B,QAAM,WAAW,kBAAkB;;CAGrC,SAAS;EACP,MAAM,WAAW,KAAK,iBACjB,KAAK,eAA0C,MAAM,KAAK,SAC3D,KAAK;AAET,SAAO,IAAI;;UAEL,IAAI,KAAK,YAAY,CAAC;iBACf,SAAS;yBACD,SAAS;wBACV,KAAK,YAAY;wBACjB,CAAC,KAAK,aAAa;wBACnB,KAAK;eACd,KAAK,KAAK;eACV,KAAK,KAAK;;;;;YA3GtB,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,YAAA,WAAA,UAAA,KAAA,EAAA;YAG1B,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAiB,CAAC,CAAA,EAAA,YAAA,WAAA,eAAA,KAAA,EAAA;YAGtD,SAAS;CAAE,MAAM;CAAS,WAAW;CAAiB,CAAC,CAAA,EAAA,YAAA,WAAA,gBAAA,KAAA,EAAA;YAGvD,SAAS;CAAE,MAAM;CAAS,WAAW;CAA2B,CAAC,CAAA,EAAA,YAAA,WAAA,yBAAA,KAAA,EAAA;YAGjE,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,YAAA,WAAA,QAAA,KAAA,EAAA;YAG1B,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,YAAA,WAAA,QAAA,KAAA,EAAA;YAG1B,OAAO,CAAA,EAAA,YAAA,WAAA,iBAAA,KAAA,EAAA;YAMP,QAAQ;CAAE,SAAS;CAAuB,WAAW;CAAM,CAAC,EAC5D,OAAO,CAAA,EAAA,YAAA,WAAA,4BAAA,KAAA,EAAA;0BArCT,cAAc,eAAe,CAAA,EAAA,YAAA"}
@@ -1,5 +1,5 @@
1
+ import { Ref } from "../node_modules/lit-html/development/directives/ref.js";
1
2
  import { LitElement } from "lit";
2
- import * as lit_html_directives_ref1 from "lit-html/directives/ref";
3
3
 
4
4
  //#region src/gui/EFFitScale.d.ts
5
5
  interface ScaleInput {
@@ -21,8 +21,8 @@ interface ScaleOutput {
21
21
  */
22
22
  declare function computeFitScale(input: ScaleInput): ScaleOutput | null;
23
23
  declare class EFFitScale extends LitElement {
24
- containerRef: lit_html_directives_ref1.Ref<HTMLDivElement>;
25
- contentRef: lit_html_directives_ref1.Ref<HTMLSlotElement>;
24
+ containerRef: Ref<HTMLDivElement>;
25
+ contentRef: Ref<HTMLSlotElement>;
26
26
  createRenderRoot(): this;
27
27
  uniqueId: string;
28
28
  paused: boolean;
@@ -1,8 +1,7 @@
1
- import { __decorate } from "../_virtual/_@oxc-project_runtime@0.95.0/helpers/decorate.js";
1
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
2
2
  import { LitElement } from "lit";
3
3
  import { customElement, property } from "lit/decorators.js";
4
4
  import { createRef } from "lit/directives/ref.js";
5
-
6
5
  //#region src/gui/EFFitScale.ts
7
6
  /**
8
7
  * Compute the scale factor and centering translation needed to fit
@@ -22,7 +21,7 @@ function computeFitScale(input) {
22
21
  translateY: (containerHeight - scaledHeight) / 2
23
22
  };
24
23
  }
25
- let EFFitScale = class EFFitScale$1 extends LitElement {
24
+ let EFFitScale = class EFFitScale extends LitElement {
26
25
  constructor(..._args) {
27
26
  super(..._args);
28
27
  this.containerRef = createRef();
@@ -118,9 +117,9 @@ let EFFitScale = class EFFitScale$1 extends LitElement {
118
117
  return results;
119
118
  }
120
119
  if (!isNonContentElement(element)) results.push(element);
121
- const children$1 = Array.from(element.children);
122
- for (let i = 0; i < children$1.length; i++) {
123
- const child = children$1[i];
120
+ const children = Array.from(element.children);
121
+ for (let i = 0; i < children.length; i++) {
122
+ const child = children[i];
124
123
  if (child) results.push(...findAllContentElements(child));
125
124
  }
126
125
  return results;
@@ -224,7 +223,7 @@ let EFFitScale = class EFFitScale$1 extends LitElement {
224
223
  };
225
224
  __decorate([property({ type: Boolean })], EFFitScale.prototype, "paused", void 0);
226
225
  EFFitScale = __decorate([customElement("ef-fit-scale")], EFFitScale);
227
-
228
226
  //#endregion
229
227
  export { EFFitScale, computeFitScale };
228
+
230
229
  //# sourceMappingURL=EFFitScale.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EFFitScale.js","names":["EFFitScale","results: HTMLElement[]","children","allContentElements: HTMLElement[]"],"sources":["../../src/gui/EFFitScale.ts"],"sourcesContent":["import { LitElement } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { createRef } from \"lit/directives/ref.js\";\n\n/* ━━ Pure scale calculation ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\nexport interface ScaleInput {\n containerWidth: number;\n containerHeight: number;\n contentWidth: number;\n contentHeight: number;\n}\n\nexport interface ScaleOutput {\n scale: number;\n translateX: number;\n translateY: number;\n}\n\n/**\n * Compute the scale factor and centering translation needed to fit\n * content of a given size into a container while preserving aspect ratio.\n *\n * Returns `null` when any dimension is zero or negative (cannot compute).\n */\nexport function computeFitScale(input: ScaleInput): ScaleOutput | null {\n const { containerWidth, containerHeight, contentWidth, contentHeight } = input;\n\n if (containerWidth <= 0 || containerHeight <= 0 || contentWidth <= 0 || contentHeight <= 0) {\n return null;\n }\n\n const containerRatio = containerWidth / containerHeight;\n const contentRatio = contentWidth / contentHeight;\n\n const scale =\n containerRatio > contentRatio ? containerHeight / contentHeight : containerWidth / contentWidth;\n\n const scaledWidth = contentWidth * scale;\n const scaledHeight = contentHeight * scale;\n const translateX = (containerWidth - scaledWidth) / 2;\n const translateY = (containerHeight - scaledHeight) / 2;\n\n return { scale, translateX, translateY };\n}\n\n/* ━━ Component ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */\n\n@customElement(\"ef-fit-scale\")\nexport class EFFitScale extends LitElement {\n containerRef = createRef<HTMLDivElement>();\n contentRef = createRef<HTMLSlotElement>();\n\n createRenderRoot() {\n Object.assign(this.style, {\n display: \"grid\",\n width: \"100%\",\n height: \"100%\",\n gridTemplateColumns: \"100%\",\n gridTemplateRows: \"100%\",\n overflow: \"hidden\",\n boxSizing: \"border-box\",\n contain: \"layout paint style\",\n position: \"relative\",\n });\n this.id = `${this.uniqueId}`;\n return this;\n }\n\n uniqueId = Math.random().toString(36).substring(2, 15);\n\n @property({ type: Boolean })\n paused = false;\n\n updated(changedProperties: Map<string, unknown>): void {\n if (changedProperties.has(\"paused\") && !this.paused) {\n // When unpaused, immediately recalculate scale\n this.updateScale();\n }\n }\n\n private containerResizeObserver?: ResizeObserver;\n private contentResizeObserver?: ResizeObserver;\n private childMutationObserver?: MutationObserver;\n private observedContentChild: HTMLElement | null = null;\n private hasWarnedZeroDimensions = false;\n\n get contentChild() {\n if (!this.children.length) return null;\n\n const isNonContentElement = (element: Element): boolean => {\n const tagName = element.tagName.toLowerCase();\n const nonContentTags = [\"style\", \"script\", \"meta\", \"link\", \"title\", \"noscript\"];\n if (nonContentTags.includes(tagName)) return true;\n\n try {\n const display = window.getComputedStyle(element).display;\n return display === \"none\" || display === \"contents\";\n } catch {\n return false;\n }\n };\n\n const findAllContentElements = (element: Element): HTMLElement[] => {\n const results: HTMLElement[] = [];\n\n if (element instanceof HTMLSlotElement) {\n const assigned = element.assignedElements()[0];\n if (assigned) {\n results.push(...findAllContentElements(assigned));\n }\n return results;\n }\n\n if (!isNonContentElement(element)) {\n results.push(element as HTMLElement);\n }\n\n const children = Array.from(element.children);\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child) {\n results.push(...findAllContentElements(child));\n }\n }\n\n return results;\n };\n\n const children = Array.from(this.children);\n const allContentElements: HTMLElement[] = [];\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child) {\n allContentElements.push(...findAllContentElements(child));\n }\n }\n\n if (allContentElements.length === 0) return null;\n\n return allContentElements[0] ?? null;\n }\n\n get scaleInfo() {\n if (!this.contentChild) {\n return {\n scale: 1,\n containerWidth: 0,\n containerHeight: 0,\n contentWidth: 0,\n contentHeight: 0,\n };\n }\n\n const containerWidth = this.clientWidth;\n const containerHeight = this.clientHeight;\n\n // Try to get natural dimensions from media elements (ef-video, ef-image)\n let contentWidth = 0;\n let contentHeight = 0;\n\n if (typeof (this.contentChild as any).getNaturalDimensions === \"function\") {\n const naturalDimensions = (this.contentChild as any).getNaturalDimensions() as {\n width: number;\n height: number;\n } | null;\n if (naturalDimensions && naturalDimensions.width > 0 && naturalDimensions.height > 0) {\n contentWidth = naturalDimensions.width;\n contentHeight = naturalDimensions.height;\n\n // ESSENTIAL: For ef-video, set canvas to explicit pixel dimensions to break 100% circular dependency\n // Canvas default CSS is width:100%, height:100% which would make ef-video collapse to 0x0\n // when ef-video is set to width:auto, height:auto by ElementRenderer\n if (this.contentChild.tagName === \"EF-VIDEO\") {\n const canvas = (this.contentChild as any).canvasElement;\n if (canvas) {\n canvas.style.setProperty(\"width\", `${contentWidth}px`, \"important\");\n canvas.style.setProperty(\"height\", `${contentHeight}px`, \"important\");\n }\n }\n } else {\n // Natural dimensions not available yet, fall back to client dimensions\n contentWidth = this.contentChild.clientWidth;\n contentHeight = this.contentChild.clientHeight;\n }\n } else {\n // For other elements, use clientWidth/Height\n contentWidth = this.contentChild.clientWidth;\n contentHeight = this.contentChild.clientHeight;\n }\n\n if (contentWidth === 0 || contentHeight === 0) {\n return {\n scale: 1,\n containerWidth,\n containerHeight,\n contentWidth: 0,\n contentHeight: 0,\n };\n }\n\n const result = computeFitScale({\n containerWidth,\n containerHeight,\n contentWidth,\n contentHeight,\n });\n\n return {\n scale: result?.scale ?? 1,\n containerWidth,\n containerHeight,\n contentWidth,\n contentHeight,\n };\n }\n\n scaleLastSetOn: HTMLElement | null = null;\n\n private updateScale = (): void => {\n if (!this.isConnected || this.paused) return;\n\n const { containerWidth, containerHeight, contentWidth, contentHeight } = this.scaleInfo;\n\n // Warn on zero container dimensions\n if (containerWidth === 0 || containerHeight === 0) {\n if (!this.hasWarnedZeroDimensions) {\n this.hasWarnedZeroDimensions = true;\n console.warn(\n `[ef-fit-scale] Container has zero dimensions (${containerWidth}×${containerHeight}). ` +\n `Content will be invisible. Ensure all ancestors have resolved height.`,\n this,\n );\n }\n return;\n }\n\n // Reset warning flag when dimensions become valid\n this.hasWarnedZeroDimensions = false;\n\n if (this.contentChild && contentWidth > 0 && contentHeight > 0) {\n const result = computeFitScale({\n containerWidth,\n containerHeight,\n contentWidth,\n contentHeight,\n });\n\n if (!result) return;\n\n // In the rare event that the content child is changed, we need to remove the scale\n // because we don't want to have a scale on the old content child that is somewhere else in the DOM\n if (this.scaleLastSetOn !== this.contentChild) {\n this.removeScale();\n }\n // Use toFixed to avoid floating point precision issues\n // this will update every frame with sub-pixel changes if we don't pin it down\n Object.assign(this.contentChild.style, {\n width: `${contentWidth}px`,\n height: `${contentHeight}px`,\n transform: `translate(${result.translateX.toFixed(4)}px, ${result.translateY.toFixed(4)}px) scale(${result.scale.toFixed(4)})`,\n transformOrigin: \"top left\",\n });\n this.scaleLastSetOn = this.contentChild;\n }\n };\n\n private observeContentChild(): void {\n const child = this.contentChild;\n if (child === this.observedContentChild) return;\n\n // Stop observing old child\n this.contentResizeObserver?.disconnect();\n\n // Observe new child\n if (child) {\n this.contentResizeObserver = new ResizeObserver(() => {\n this.updateScale();\n });\n this.contentResizeObserver.observe(child);\n }\n this.observedContentChild = child;\n }\n\n removeScale = () => {\n if (this.scaleLastSetOn) {\n Object.assign(this.scaleLastSetOn.style, {\n width: \"\",\n height: \"\",\n transform: \"\",\n transformOrigin: \"\",\n });\n this.scaleLastSetOn = null;\n }\n };\n\n connectedCallback(): void {\n super.connectedCallback();\n\n this.hasWarnedZeroDimensions = false;\n\n // Observe self for container size changes\n this.containerResizeObserver = new ResizeObserver(() => {\n this.updateScale();\n });\n this.containerResizeObserver.observe(this);\n\n // Observe child list for content child changes\n this.childMutationObserver = new MutationObserver(() => {\n this.observeContentChild();\n this.updateScale();\n });\n this.childMutationObserver.observe(this, { childList: true });\n\n // Initial content child observation\n this.observeContentChild();\n\n // Initial scale calculation (deferred to allow layout to settle)\n requestAnimationFrame(() => this.updateScale());\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeScale();\n this.containerResizeObserver?.disconnect();\n this.contentResizeObserver?.disconnect();\n this.childMutationObserver?.disconnect();\n this.observedContentChild = null;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-fit-scale\": EFFitScale;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"EFFitScale.js","names":[],"sources":["../../src/gui/EFFitScale.ts"],"mappings":"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"}
@@ -1,16 +1,16 @@
1
- import * as lit24 from "lit";
1
+ import { TemplateResult as TemplateResult$1 } from "../node_modules/lit-html/development/lit-html.js";
2
+ import { Ref } from "../node_modules/lit-html/development/directives/ref.js";
3
+ import * as _$lit from "lit";
2
4
  import { LitElement } from "lit";
3
- import * as lit_html22 from "lit-html";
4
- import * as lit_html_directives_ref_js3 from "lit-html/directives/ref.js";
5
5
 
6
6
  //#region src/gui/EFFocusOverlay.d.ts
7
7
  declare class EFFocusOverlay extends LitElement {
8
- static styles: lit24.CSSResult;
8
+ static styles: _$lit.CSSResult;
9
9
  focusedElement?: HTMLElement | null;
10
- overlay: lit_html_directives_ref_js3.Ref<HTMLDivElement>;
10
+ overlay: Ref<HTMLDivElement>;
11
11
  private animationFrame?;
12
12
  drawOverlay: () => void;
13
- render(): lit_html22.TemplateResult<1>;
13
+ render(): TemplateResult$1<1>;
14
14
  connectedCallback(): void;
15
15
  disconnectedCallback(): void;
16
16
  protected updated(): void;
@@ -1,12 +1,11 @@
1
- import { __decorate } from "../_virtual/_@oxc-project_runtime@0.95.0/helpers/decorate.js";
1
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
2
2
  import { focusedElementContext } from "./focusedElementContext.js";
3
3
  import { consume } from "@lit/context";
4
4
  import { LitElement, css, html } from "lit";
5
5
  import { customElement } from "lit/decorators.js";
6
6
  import { createRef, ref } from "lit/directives/ref.js";
7
-
8
7
  //#region src/gui/EFFocusOverlay.ts
9
- let EFFocusOverlay = class EFFocusOverlay$1 extends LitElement {
8
+ let EFFocusOverlay = class EFFocusOverlay extends LitElement {
10
9
  constructor(..._args) {
11
10
  super(..._args);
12
11
  this.overlay = createRef();
@@ -65,7 +64,7 @@ __decorate([consume({
65
64
  subscribe: true
66
65
  })], EFFocusOverlay.prototype, "focusedElement", void 0);
67
66
  EFFocusOverlay = __decorate([customElement("ef-focus-overlay")], EFFocusOverlay);
68
-
69
67
  //#endregion
70
68
  export { EFFocusOverlay };
69
+
71
70
  //# sourceMappingURL=EFFocusOverlay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EFFocusOverlay.js","names":["EFFocusOverlay"],"sources":["../../src/gui/EFFocusOverlay.ts"],"sourcesContent":["import { consume } from \"@lit/context\";\nimport { css, html, LitElement } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\nimport { focusedElementContext } from \"./focusedElementContext.js\";\n\n@customElement(\"ef-focus-overlay\")\nexport class EFFocusOverlay extends LitElement {\n static styles = css`\n :host {\n display: block;\n position: relative;\n width: 100%;\n height: 100%;\n pointer-events: none;\n }\n .overlay {\n position: fixed;\n outline: 2px solid var(--ef-focus-overlay-color, var(--ef-color-primary));\n background: var(--ef-focus-overlay-background, var(--ef-color-primary));\n outline: 2px solid var(--ef-focus-overlay-color, var(--ef-color-primary));\n mix-blend-mode: multiply;\n opacity: 0.4;\n display: none;\n }\n `;\n\n @consume({ context: focusedElementContext, subscribe: true })\n focusedElement?: HTMLElement | null;\n\n overlay = createRef<HTMLDivElement>();\n\n private animationFrame?: number;\n\n drawOverlay = () => {\n const overlay = this.overlay.value;\n if (overlay) {\n if (this.focusedElement) {\n overlay.style.display = \"block\";\n const rect = this.focusedElement.getBoundingClientRect();\n Object.assign(overlay.style, {\n top: `${rect.top}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`,\n height: `${rect.height}px`,\n });\n this.animationFrame = requestAnimationFrame(this.drawOverlay);\n } else {\n overlay.style.display = \"none\";\n }\n }\n };\n\n render() {\n return html`<div ${ref(this.overlay)} class=\"overlay\"></div>`;\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.drawOverlay();\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this.animationFrame) {\n cancelAnimationFrame(this.animationFrame);\n }\n }\n\n protected updated(): void {\n this.drawOverlay();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-focus-overlay\": EFFocusOverlay;\n }\n}\n"],"mappings":";;;;;;;;AAOO,2BAAMA,yBAAuB,WAAW;;;iBAuBnC,WAA2B;2BAIjB;GAClB,MAAM,UAAU,KAAK,QAAQ;AAC7B,OAAI,QACF,KAAI,KAAK,gBAAgB;AACvB,YAAQ,MAAM,UAAU;IACxB,MAAM,OAAO,KAAK,eAAe,uBAAuB;AACxD,WAAO,OAAO,QAAQ,OAAO;KAC3B,KAAK,GAAG,KAAK,IAAI;KACjB,MAAM,GAAG,KAAK,KAAK;KACnB,OAAO,GAAG,KAAK,MAAM;KACrB,QAAQ,GAAG,KAAK,OAAO;KACxB,CAAC;AACF,SAAK,iBAAiB,sBAAsB,KAAK,YAAY;SAE7D,SAAQ,MAAM,UAAU;;;;gBAxCd,GAAG;;;;;;;;;;;;;;;;;;;CA6CnB,SAAS;AACP,SAAO,IAAI,QAAQ,IAAI,KAAK,QAAQ,CAAC;;CAGvC,oBAA0B;AACxB,QAAM,mBAAmB;AACzB,OAAK,aAAa;;CAGpB,uBAA6B;AAC3B,QAAM,sBAAsB;AAC5B,MAAI,KAAK,eACP,sBAAqB,KAAK,eAAe;;CAI7C,AAAU,UAAgB;AACxB,OAAK,aAAa;;;YA3CnB,QAAQ;CAAE,SAAS;CAAuB,WAAW;CAAM,CAAC;6BArB9D,cAAc,mBAAmB"}
1
+ {"version":3,"file":"EFFocusOverlay.js","names":[],"sources":["../../src/gui/EFFocusOverlay.ts"],"mappings":";;;;;;;AAOO,IAAA,iBAAA,MAAM,uBAAuB,WAAW;;;iBAuBnC,WAA2B;2BAIjB;GAClB,MAAM,UAAU,KAAK,QAAQ;AAC7B,OAAI,QACF,KAAI,KAAK,gBAAgB;AACvB,YAAQ,MAAM,UAAU;IACxB,MAAM,OAAO,KAAK,eAAe,uBAAuB;AACxD,WAAO,OAAO,QAAQ,OAAO;KAC3B,KAAK,GAAG,KAAK,IAAI;KACjB,MAAM,GAAG,KAAK,KAAK;KACnB,OAAO,GAAG,KAAK,MAAM;KACrB,QAAQ,GAAG,KAAK,OAAO;KACxB,CAAC;AACF,SAAK,iBAAiB,sBAAsB,KAAK,YAAY;SAE7D,SAAQ,MAAM,UAAU;;;;gBAxCd,GAAG;;;;;;;;;;;;;;;;;;;CA6CnB,SAAS;AACP,SAAO,IAAI,QAAQ,IAAI,KAAK,QAAQ,CAAC;;CAGvC,oBAA0B;AACxB,QAAM,mBAAmB;AACzB,OAAK,aAAa;;CAGpB,uBAA6B;AAC3B,QAAM,sBAAsB;AAC5B,MAAI,KAAK,eACP,sBAAqB,KAAK,eAAe;;CAI7C,UAA0B;AACxB,OAAK,aAAa;;;YA3CnB,QAAQ;CAAE,SAAS;CAAuB,WAAW;CAAM,CAAC,CAAA,EAAA,eAAA,WAAA,kBAAA,KAAA,EAAA;6BArB9D,cAAc,mBAAmB,CAAA,EAAA,eAAA"}
@@ -1,6 +1,6 @@
1
- import * as lit32 from "lit";
1
+ import { TemplateResult as TemplateResult$1 } from "../node_modules/lit-html/development/lit-html.js";
2
+ import * as _$lit from "lit";
2
3
  import { LitElement } from "lit";
3
- import * as lit_html30 from "lit-html";
4
4
 
5
5
  //#region src/gui/EFOverlayItem.d.ts
6
6
  /**
@@ -23,7 +23,7 @@ interface OverlayItemPosition {
23
23
  * ensures transforms are applied before positions are read.
24
24
  */
25
25
  declare class EFOverlayItem extends LitElement {
26
- static styles: lit32.CSSResult[];
26
+ static styles: _$lit.CSSResult[];
27
27
  elementId?: string;
28
28
  target?: HTMLElement | string;
29
29
  private currentPosition;
@@ -36,7 +36,7 @@ declare class EFOverlayItem extends LitElement {
36
36
  updatePosition(): void;
37
37
  connectedCallback(): void;
38
38
  disconnectedCallback(): void;
39
- render(): lit_html30.TemplateResult<1>;
39
+ render(): TemplateResult$1<1>;
40
40
  }
41
41
  declare global {
42
42
  interface HTMLElementTagNameMap {
@@ -1,10 +1,9 @@
1
- import { __decorate } from "../_virtual/_@oxc-project_runtime@0.95.0/helpers/decorate.js";
1
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
2
2
  import { parseRotationFromTransform } from "./transformCalculations.js";
3
3
  import { LitElement, css, html } from "lit";
4
4
  import { customElement, property } from "lit/decorators.js";
5
-
6
5
  //#region src/gui/EFOverlayItem.ts
7
- let EFOverlayItem = class EFOverlayItem$1 extends LitElement {
6
+ let EFOverlayItem = class EFOverlayItem extends LitElement {
8
7
  constructor(..._args) {
9
8
  super(..._args);
10
9
  this.currentPosition = null;
@@ -91,7 +90,7 @@ __decorate([property({
91
90
  })], EFOverlayItem.prototype, "elementId", void 0);
92
91
  __decorate([property({ attribute: false })], EFOverlayItem.prototype, "target", void 0);
93
92
  EFOverlayItem = __decorate([customElement("ef-overlay-item")], EFOverlayItem);
94
-
95
93
  //#endregion
96
94
  export { EFOverlayItem };
95
+
97
96
  //# sourceMappingURL=EFOverlayItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EFOverlayItem.js","names":["EFOverlayItem"],"sources":["../../src/gui/EFOverlayItem.ts"],"sourcesContent":["import { css, html, LitElement } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport type { EFOverlayLayer } from \"./EFOverlayLayer.js\";\nimport { parseRotationFromTransform } from \"./transformCalculations.js\";\n\n/**\n * Position changed event detail.\n */\nexport interface OverlayItemPosition {\n x: number;\n y: number;\n width: number;\n height: number;\n rotation: number;\n}\n\n/**\n * Individual overlay item that tracks a target element.\n * Must be a direct child of ef-overlay-layer.\n *\n * NEW ARCHITECTURE: This component is now PASSIVE - it does not run its own RAF loop.\n * Instead, it registers with its parent EFOverlayLayer, which manages position updates\n * for all children in a synchronized RAF loop. This eliminates race conditions and\n * ensures transforms are applied before positions are read.\n */\n@customElement(\"ef-overlay-item\")\nexport class EFOverlayItem extends LitElement {\n static styles = [\n css`\n :host {\n display: block;\n position: absolute;\n pointer-events: auto;\n transform-origin: center;\n }\n `,\n ];\n\n @property({ type: String, attribute: \"element-id\" })\n elementId?: string;\n\n @property({ attribute: false })\n target?: HTMLElement | string;\n\n private currentPosition: OverlayItemPosition | null = null;\n\n private resolveTarget(): HTMLElement | null {\n if (this.elementId) {\n let element = document.querySelector(`[data-element-id=\"${this.elementId}\"]`) as HTMLElement;\n\n if (!element) {\n element = document.querySelector(`[data-timegroup-id=\"${this.elementId}\"]`) as HTMLElement;\n }\n\n return element || null;\n }\n\n if (!this.target) return null;\n\n if (typeof this.target === \"string\") {\n return (\n (document.querySelector(this.target) as HTMLElement) || document.getElementById(this.target)\n );\n }\n\n // For direct HTMLElement references, verify the element is still in the DOM\n if (!this.target.isConnected) {\n return null;\n }\n\n return this.target;\n }\n\n /**\n * Update position based on target element.\n * Called by parent EFOverlayLayer in its synchronized RAF loop.\n * PUBLIC API - called by parent layer.\n */\n updatePosition() {\n const targetElement = this.resolveTarget();\n if (!targetElement) {\n // Target not found - hide the overlay item\n if (this.style.display !== \"none\") {\n this.style.display = \"none\";\n }\n return;\n }\n\n // Target found - ensure we're visible\n if (this.style.display === \"none\") {\n this.style.display = \"\";\n }\n\n // Use parent element as overlay layer (like old system)\n const overlayLayer = this.parentElement;\n if (!overlayLayer) {\n return;\n }\n\n const overlayLayerRect = overlayLayer.getBoundingClientRect();\n const targetRect = targetElement.getBoundingClientRect();\n\n if (targetRect.width === 0 && targetRect.height === 0) return;\n\n const computedStyle = window.getComputedStyle(targetElement);\n const rotation = parseRotationFromTransform(computedStyle.transform);\n\n const overlayPosition = {\n x: targetRect.left - overlayLayerRect.left,\n y: targetRect.top - overlayLayerRect.top,\n width: targetRect.width,\n height: targetRect.height,\n rotation,\n };\n\n if (overlayPosition.width <= 0 || overlayPosition.height <= 0) return;\n\n const positionChanged =\n !this.currentPosition ||\n Math.abs(this.currentPosition.x - overlayPosition.x) > 0.01 ||\n Math.abs(this.currentPosition.y - overlayPosition.y) > 0.01 ||\n Math.abs(this.currentPosition.width - overlayPosition.width) > 0.01 ||\n Math.abs(this.currentPosition.height - overlayPosition.height) > 0.01 ||\n Math.abs(this.currentPosition.rotation - overlayPosition.rotation) > 0.01;\n\n if (positionChanged) {\n this.currentPosition = overlayPosition;\n\n this.style.left = `${overlayPosition.x}px`;\n this.style.top = `${overlayPosition.y}px`;\n this.style.width = `${overlayPosition.width}px`;\n this.style.height = `${overlayPosition.height}px`;\n\n if (overlayPosition.rotation !== 0) {\n this.style.transform = `rotate(${overlayPosition.rotation}deg)`;\n } else {\n this.style.transform = \"\";\n }\n\n this.dispatchEvent(\n new CustomEvent<OverlayItemPosition>(\"position-changed\", {\n detail: { ...overlayPosition },\n bubbles: true,\n composed: true,\n }),\n );\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n // Register with parent overlay layer for coordinated updates\n const parent = this.parentElement as EFOverlayLayer | null;\n if (parent && typeof (parent as any).registerOverlayItem === \"function\") {\n (parent as any).registerOverlayItem(this);\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n // Unregister from parent overlay layer\n const parent = this.parentElement as EFOverlayLayer | null;\n if (parent && typeof (parent as any).unregisterOverlayItem === \"function\") {\n (parent as any).unregisterOverlayItem(this);\n }\n }\n\n render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ef-overlay-item\": EFOverlayItem;\n }\n}\n"],"mappings":";;;;;;AA0BO,0BAAMA,wBAAsB,WAAW;;;yBAkBU;;;gBAjBtC,CACd,GAAG;;;;;;;MAQJ;;CAUD,AAAQ,gBAAoC;AAC1C,MAAI,KAAK,WAAW;GAClB,IAAI,UAAU,SAAS,cAAc,qBAAqB,KAAK,UAAU,IAAI;AAE7E,OAAI,CAAC,QACH,WAAU,SAAS,cAAc,uBAAuB,KAAK,UAAU,IAAI;AAG7E,UAAO,WAAW;;AAGpB,MAAI,CAAC,KAAK,OAAQ,QAAO;AAEzB,MAAI,OAAO,KAAK,WAAW,SACzB,QACG,SAAS,cAAc,KAAK,OAAO,IAAoB,SAAS,eAAe,KAAK,OAAO;AAKhG,MAAI,CAAC,KAAK,OAAO,YACf,QAAO;AAGT,SAAO,KAAK;;;;;;;CAQd,iBAAiB;EACf,MAAM,gBAAgB,KAAK,eAAe;AAC1C,MAAI,CAAC,eAAe;AAElB,OAAI,KAAK,MAAM,YAAY,OACzB,MAAK,MAAM,UAAU;AAEvB;;AAIF,MAAI,KAAK,MAAM,YAAY,OACzB,MAAK,MAAM,UAAU;EAIvB,MAAM,eAAe,KAAK;AAC1B,MAAI,CAAC,aACH;EAGF,MAAM,mBAAmB,aAAa,uBAAuB;EAC7D,MAAM,aAAa,cAAc,uBAAuB;AAExD,MAAI,WAAW,UAAU,KAAK,WAAW,WAAW,EAAG;EAGvD,MAAM,WAAW,2BADK,OAAO,iBAAiB,cAAc,CACF,UAAU;EAEpE,MAAM,kBAAkB;GACtB,GAAG,WAAW,OAAO,iBAAiB;GACtC,GAAG,WAAW,MAAM,iBAAiB;GACrC,OAAO,WAAW;GAClB,QAAQ,WAAW;GACnB;GACD;AAED,MAAI,gBAAgB,SAAS,KAAK,gBAAgB,UAAU,EAAG;AAU/D,MAPE,CAAC,KAAK,mBACN,KAAK,IAAI,KAAK,gBAAgB,IAAI,gBAAgB,EAAE,GAAG,OACvD,KAAK,IAAI,KAAK,gBAAgB,IAAI,gBAAgB,EAAE,GAAG,OACvD,KAAK,IAAI,KAAK,gBAAgB,QAAQ,gBAAgB,MAAM,GAAG,OAC/D,KAAK,IAAI,KAAK,gBAAgB,SAAS,gBAAgB,OAAO,GAAG,OACjE,KAAK,IAAI,KAAK,gBAAgB,WAAW,gBAAgB,SAAS,GAAG,KAElD;AACnB,QAAK,kBAAkB;AAEvB,QAAK,MAAM,OAAO,GAAG,gBAAgB,EAAE;AACvC,QAAK,MAAM,MAAM,GAAG,gBAAgB,EAAE;AACtC,QAAK,MAAM,QAAQ,GAAG,gBAAgB,MAAM;AAC5C,QAAK,MAAM,SAAS,GAAG,gBAAgB,OAAO;AAE9C,OAAI,gBAAgB,aAAa,EAC/B,MAAK,MAAM,YAAY,UAAU,gBAAgB,SAAS;OAE1D,MAAK,MAAM,YAAY;AAGzB,QAAK,cACH,IAAI,YAAiC,oBAAoB;IACvD,QAAQ,EAAE,GAAG,iBAAiB;IAC9B,SAAS;IACT,UAAU;IACX,CAAC,CACH;;;CAIL,oBAAoB;AAClB,QAAM,mBAAmB;EAEzB,MAAM,SAAS,KAAK;AACpB,MAAI,UAAU,OAAQ,OAAe,wBAAwB,WAC3D,CAAC,OAAe,oBAAoB,KAAK;;CAI7C,uBAAuB;AACrB,QAAM,sBAAsB;EAE5B,MAAM,SAAS,KAAK;AACpB,MAAI,UAAU,OAAQ,OAAe,0BAA0B,WAC7D,CAAC,OAAe,sBAAsB,KAAK;;CAI/C,SAAS;AACP,SAAO,IAAI;;;YAlIZ,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAc,CAAC;YAGnD,SAAS,EAAE,WAAW,OAAO,CAAC;4BAhBhC,cAAc,kBAAkB"}
1
+ {"version":3,"file":"EFOverlayItem.js","names":[],"sources":["../../src/gui/EFOverlayItem.ts"],"mappings":";;;;;AA0BO,IAAA,gBAAA,MAAM,sBAAsB,WAAW;;;yBAkBU;;;gBAjBtC,CACd,GAAG;;;;;;;MAQJ;;CAUD,gBAA4C;AAC1C,MAAI,KAAK,WAAW;GAClB,IAAI,UAAU,SAAS,cAAc,qBAAqB,KAAK,UAAU,IAAI;AAE7E,OAAI,CAAC,QACH,WAAU,SAAS,cAAc,uBAAuB,KAAK,UAAU,IAAI;AAG7E,UAAO,WAAW;;AAGpB,MAAI,CAAC,KAAK,OAAQ,QAAO;AAEzB,MAAI,OAAO,KAAK,WAAW,SACzB,QACG,SAAS,cAAc,KAAK,OAAO,IAAoB,SAAS,eAAe,KAAK,OAAO;AAKhG,MAAI,CAAC,KAAK,OAAO,YACf,QAAO;AAGT,SAAO,KAAK;;;;;;;CAQd,iBAAiB;EACf,MAAM,gBAAgB,KAAK,eAAe;AAC1C,MAAI,CAAC,eAAe;AAElB,OAAI,KAAK,MAAM,YAAY,OACzB,MAAK,MAAM,UAAU;AAEvB;;AAIF,MAAI,KAAK,MAAM,YAAY,OACzB,MAAK,MAAM,UAAU;EAIvB,MAAM,eAAe,KAAK;AAC1B,MAAI,CAAC,aACH;EAGF,MAAM,mBAAmB,aAAa,uBAAuB;EAC7D,MAAM,aAAa,cAAc,uBAAuB;AAExD,MAAI,WAAW,UAAU,KAAK,WAAW,WAAW,EAAG;EAGvD,MAAM,WAAW,2BADK,OAAO,iBAAiB,cAAc,CACF,UAAU;EAEpE,MAAM,kBAAkB;GACtB,GAAG,WAAW,OAAO,iBAAiB;GACtC,GAAG,WAAW,MAAM,iBAAiB;GACrC,OAAO,WAAW;GAClB,QAAQ,WAAW;GACnB;GACD;AAED,MAAI,gBAAgB,SAAS,KAAK,gBAAgB,UAAU,EAAG;AAU/D,MAPE,CAAC,KAAK,mBACN,KAAK,IAAI,KAAK,gBAAgB,IAAI,gBAAgB,EAAE,GAAG,OACvD,KAAK,IAAI,KAAK,gBAAgB,IAAI,gBAAgB,EAAE,GAAG,OACvD,KAAK,IAAI,KAAK,gBAAgB,QAAQ,gBAAgB,MAAM,GAAG,OAC/D,KAAK,IAAI,KAAK,gBAAgB,SAAS,gBAAgB,OAAO,GAAG,OACjE,KAAK,IAAI,KAAK,gBAAgB,WAAW,gBAAgB,SAAS,GAAG,KAElD;AACnB,QAAK,kBAAkB;AAEvB,QAAK,MAAM,OAAO,GAAG,gBAAgB,EAAE;AACvC,QAAK,MAAM,MAAM,GAAG,gBAAgB,EAAE;AACtC,QAAK,MAAM,QAAQ,GAAG,gBAAgB,MAAM;AAC5C,QAAK,MAAM,SAAS,GAAG,gBAAgB,OAAO;AAE9C,OAAI,gBAAgB,aAAa,EAC/B,MAAK,MAAM,YAAY,UAAU,gBAAgB,SAAS;OAE1D,MAAK,MAAM,YAAY;AAGzB,QAAK,cACH,IAAI,YAAiC,oBAAoB;IACvD,QAAQ,EAAE,GAAG,iBAAiB;IAC9B,SAAS;IACT,UAAU;IACX,CAAC,CACH;;;CAIL,oBAAoB;AAClB,QAAM,mBAAmB;EAEzB,MAAM,SAAS,KAAK;AACpB,MAAI,UAAU,OAAQ,OAAe,wBAAwB,WAC1D,QAAe,oBAAoB,KAAK;;CAI7C,uBAAuB;AACrB,QAAM,sBAAsB;EAE5B,MAAM,SAAS,KAAK;AACpB,MAAI,UAAU,OAAQ,OAAe,0BAA0B,WAC5D,QAAe,sBAAsB,KAAK;;CAI/C,SAAS;AACP,SAAO,IAAI;;;YAlIZ,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAc,CAAC,CAAA,EAAA,cAAA,WAAA,aAAA,KAAA,EAAA;YAGnD,SAAS,EAAE,WAAW,OAAO,CAAC,CAAA,EAAA,cAAA,WAAA,UAAA,KAAA,EAAA;4BAhBhC,cAAc,kBAAkB,CAAA,EAAA,cAAA"}