@editframe/elements 0.30.2-beta.0 → 0.31.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/dist/EF_FRAMEGEN.d.ts +5 -0
  2. package/dist/EF_FRAMEGEN.js +20 -4
  3. package/dist/EF_FRAMEGEN.js.map +1 -1
  4. package/dist/EF_INTERACTIVE.js.map +1 -1
  5. package/dist/_virtual/rolldown_runtime.js +27 -0
  6. package/dist/canvas/EFCanvas.d.ts +311 -0
  7. package/dist/canvas/EFCanvas.js +1089 -0
  8. package/dist/canvas/EFCanvas.js.map +1 -0
  9. package/dist/canvas/EFCanvasItem.d.ts +55 -0
  10. package/dist/canvas/EFCanvasItem.js +72 -0
  11. package/dist/canvas/EFCanvasItem.js.map +1 -0
  12. package/dist/canvas/api/CanvasAPI.d.ts +115 -0
  13. package/dist/canvas/api/CanvasAPI.js +182 -0
  14. package/dist/canvas/api/CanvasAPI.js.map +1 -0
  15. package/dist/canvas/api/types.d.ts +42 -0
  16. package/dist/canvas/coordinateTransform.js +90 -0
  17. package/dist/canvas/coordinateTransform.js.map +1 -0
  18. package/dist/canvas/getElementBounds.js +40 -0
  19. package/dist/canvas/getElementBounds.js.map +1 -0
  20. package/dist/canvas/overlays/SelectionOverlay.js +265 -0
  21. package/dist/canvas/overlays/SelectionOverlay.js.map +1 -0
  22. package/dist/canvas/overlays/overlayState.js +153 -0
  23. package/dist/canvas/overlays/overlayState.js.map +1 -0
  24. package/dist/canvas/selection/SelectionController.js +105 -0
  25. package/dist/canvas/selection/SelectionController.js.map +1 -0
  26. package/dist/canvas/selection/SelectionModel.d.ts +98 -0
  27. package/dist/canvas/selection/SelectionModel.js +229 -0
  28. package/dist/canvas/selection/SelectionModel.js.map +1 -0
  29. package/dist/canvas/selection/selectionContext.d.ts +31 -0
  30. package/dist/canvas/selection/selectionContext.js +12 -0
  31. package/dist/canvas/selection/selectionContext.js.map +1 -0
  32. package/dist/elements/ContainerInfo.d.ts +29 -0
  33. package/dist/elements/ContainerInfo.js +30 -0
  34. package/dist/elements/ContainerInfo.js.map +1 -0
  35. package/dist/elements/EFAudio.d.ts +13 -3
  36. package/dist/elements/EFAudio.js +64 -10
  37. package/dist/elements/EFAudio.js.map +1 -1
  38. package/dist/elements/EFCaptions.d.ts +18 -16
  39. package/dist/elements/EFCaptions.js +110 -19
  40. package/dist/elements/EFCaptions.js.map +1 -1
  41. package/dist/elements/EFImage.d.ts +12 -2
  42. package/dist/elements/EFImage.js +79 -9
  43. package/dist/elements/EFImage.js.map +1 -1
  44. package/dist/elements/EFMedia/AssetIdMediaEngine.js +51 -4
  45. package/dist/elements/EFMedia/AssetIdMediaEngine.js.map +1 -1
  46. package/dist/elements/EFMedia/AssetMediaEngine.js +125 -52
  47. package/dist/elements/EFMedia/AssetMediaEngine.js.map +1 -1
  48. package/dist/elements/EFMedia/BaseMediaEngine.js +24 -6
  49. package/dist/elements/EFMedia/BaseMediaEngine.js.map +1 -1
  50. package/dist/elements/EFMedia/JitMediaEngine.js +12 -8
  51. package/dist/elements/EFMedia/JitMediaEngine.js.map +1 -1
  52. package/dist/elements/EFMedia/audioTasks/makeAudioBufferTask.js +46 -7
  53. package/dist/elements/EFMedia/audioTasks/makeAudioBufferTask.js.map +1 -1
  54. package/dist/elements/EFMedia/audioTasks/makeAudioFrequencyAnalysisTask.js +98 -73
  55. package/dist/elements/EFMedia/audioTasks/makeAudioFrequencyAnalysisTask.js.map +1 -1
  56. package/dist/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.js +28 -5
  57. package/dist/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.js.map +1 -1
  58. package/dist/elements/EFMedia/audioTasks/makeAudioInputTask.js +18 -6
  59. package/dist/elements/EFMedia/audioTasks/makeAudioInputTask.js.map +1 -1
  60. package/dist/elements/EFMedia/audioTasks/makeAudioSeekTask.js +8 -2
  61. package/dist/elements/EFMedia/audioTasks/makeAudioSeekTask.js.map +1 -1
  62. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentFetchTask.js +31 -6
  63. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentFetchTask.js.map +1 -1
  64. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentIdTask.js +28 -5
  65. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentIdTask.js.map +1 -1
  66. package/dist/elements/EFMedia/audioTasks/makeAudioTimeDomainAnalysisTask.js +97 -72
  67. package/dist/elements/EFMedia/audioTasks/makeAudioTimeDomainAnalysisTask.js.map +1 -1
  68. package/dist/elements/EFMedia/shared/AudioSpanUtils.js +3 -1
  69. package/dist/elements/EFMedia/shared/AudioSpanUtils.js.map +1 -1
  70. package/dist/elements/EFMedia/shared/BufferUtils.js +1 -1
  71. package/dist/elements/EFMedia/shared/BufferUtils.js.map +1 -1
  72. package/dist/elements/EFMedia/shared/ThumbnailExtractor.js +25 -14
  73. package/dist/elements/EFMedia/shared/ThumbnailExtractor.js.map +1 -1
  74. package/dist/elements/EFMedia/tasks/makeMediaEngineTask.js +47 -16
  75. package/dist/elements/EFMedia/tasks/makeMediaEngineTask.js.map +1 -1
  76. package/dist/elements/EFMedia/videoTasks/MainVideoInputCache.js +37 -19
  77. package/dist/elements/EFMedia/videoTasks/MainVideoInputCache.js.map +1 -1
  78. package/dist/elements/EFMedia/videoTasks/ScrubInputCache.js +65 -21
  79. package/dist/elements/EFMedia/videoTasks/ScrubInputCache.js.map +1 -1
  80. package/dist/elements/EFMedia/videoTasks/makeScrubVideoBufferTask.js +8 -3
  81. package/dist/elements/EFMedia/videoTasks/makeScrubVideoBufferTask.js.map +1 -1
  82. package/dist/elements/EFMedia/videoTasks/makeScrubVideoInitSegmentFetchTask.js +32 -9
  83. package/dist/elements/EFMedia/videoTasks/makeScrubVideoInitSegmentFetchTask.js.map +1 -1
  84. package/dist/elements/EFMedia/videoTasks/makeScrubVideoInputTask.js +33 -10
  85. package/dist/elements/EFMedia/videoTasks/makeScrubVideoInputTask.js.map +1 -1
  86. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSeekTask.js +23 -8
  87. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSeekTask.js.map +1 -1
  88. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentFetchTask.js +34 -10
  89. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentFetchTask.js.map +1 -1
  90. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentIdTask.js +31 -8
  91. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentIdTask.js.map +1 -1
  92. package/dist/elements/EFMedia/videoTasks/makeUnifiedVideoSeekTask.js +31 -114
  93. package/dist/elements/EFMedia/videoTasks/makeUnifiedVideoSeekTask.js.map +1 -1
  94. package/dist/elements/EFMedia/videoTasks/makeVideoBufferTask.js +44 -8
  95. package/dist/elements/EFMedia/videoTasks/makeVideoBufferTask.js.map +1 -1
  96. package/dist/elements/EFMedia.d.ts +18 -7
  97. package/dist/elements/EFMedia.js +23 -3
  98. package/dist/elements/EFMedia.js.map +1 -1
  99. package/dist/elements/EFPanZoom.d.ts +96 -0
  100. package/dist/elements/EFPanZoom.js +290 -0
  101. package/dist/elements/EFPanZoom.js.map +1 -0
  102. package/dist/elements/EFSourceMixin.js +7 -6
  103. package/dist/elements/EFSourceMixin.js.map +1 -1
  104. package/dist/elements/EFSurface.d.ts +6 -6
  105. package/dist/elements/EFSurface.js +7 -2
  106. package/dist/elements/EFSurface.js.map +1 -1
  107. package/dist/elements/EFTemporal.d.ts +2 -1
  108. package/dist/elements/EFTemporal.js +192 -71
  109. package/dist/elements/EFTemporal.js.map +1 -1
  110. package/dist/elements/EFText.d.ts +5 -4
  111. package/dist/elements/EFText.js +102 -13
  112. package/dist/elements/EFText.js.map +1 -1
  113. package/dist/elements/EFTextSegment.d.ts +32 -6
  114. package/dist/elements/EFTextSegment.js +53 -15
  115. package/dist/elements/EFTextSegment.js.map +1 -1
  116. package/dist/elements/EFThumbnailStrip.d.ts +118 -56
  117. package/dist/elements/EFThumbnailStrip.js +522 -358
  118. package/dist/elements/EFThumbnailStrip.js.map +1 -1
  119. package/dist/elements/EFTimegroup.d.ts +223 -27
  120. package/dist/elements/EFTimegroup.js +850 -147
  121. package/dist/elements/EFTimegroup.js.map +1 -1
  122. package/dist/elements/EFVideo.d.ts +42 -5
  123. package/dist/elements/EFVideo.js +165 -11
  124. package/dist/elements/EFVideo.js.map +1 -1
  125. package/dist/elements/EFWaveform.d.ts +6 -6
  126. package/dist/elements/EFWaveform.js +2 -1
  127. package/dist/elements/EFWaveform.js.map +1 -1
  128. package/dist/elements/ElementPositionInfo.d.ts +35 -0
  129. package/dist/elements/ElementPositionInfo.js +49 -0
  130. package/dist/elements/ElementPositionInfo.js.map +1 -0
  131. package/dist/elements/FetchMixin.js +16 -1
  132. package/dist/elements/FetchMixin.js.map +1 -1
  133. package/dist/elements/SessionThumbnailCache.js +152 -0
  134. package/dist/elements/SessionThumbnailCache.js.map +1 -0
  135. package/dist/elements/TargetController.js +3 -1
  136. package/dist/elements/TargetController.js.map +1 -1
  137. package/dist/elements/TimegroupController.js +9 -3
  138. package/dist/elements/TimegroupController.js.map +1 -1
  139. package/dist/elements/findRootTemporal.js +30 -0
  140. package/dist/elements/findRootTemporal.js.map +1 -0
  141. package/dist/elements/renderTemporalAudio.js +18 -5
  142. package/dist/elements/renderTemporalAudio.js.map +1 -1
  143. package/dist/elements/updateAnimations.js +171 -28
  144. package/dist/elements/updateAnimations.js.map +1 -1
  145. package/dist/getRenderInfo.d.ts +2 -2
  146. package/dist/gui/ContextMixin.js +4 -2
  147. package/dist/gui/ContextMixin.js.map +1 -1
  148. package/dist/gui/Controllable.js +74 -1
  149. package/dist/gui/Controllable.js.map +1 -1
  150. package/dist/gui/EFActiveRootTemporal.d.ts +50 -0
  151. package/dist/gui/EFActiveRootTemporal.js +94 -0
  152. package/dist/gui/EFActiveRootTemporal.js.map +1 -0
  153. package/dist/gui/EFConfiguration.d.ts +11 -5
  154. package/dist/gui/EFConfiguration.js.map +1 -1
  155. package/dist/gui/EFControls.d.ts +2 -2
  156. package/dist/gui/EFControls.js +109 -13
  157. package/dist/gui/EFControls.js.map +1 -1
  158. package/dist/gui/EFDial.d.ts +4 -4
  159. package/dist/gui/EFFilmstrip.d.ts +11 -214
  160. package/dist/gui/EFFilmstrip.js +53 -1152
  161. package/dist/gui/EFFilmstrip.js.map +1 -1
  162. package/dist/gui/EFFitScale.d.ts +3 -3
  163. package/dist/gui/EFFitScale.js +39 -12
  164. package/dist/gui/EFFitScale.js.map +1 -1
  165. package/dist/gui/EFFocusOverlay.d.ts +4 -4
  166. package/dist/gui/EFOverlayItem.d.ts +48 -0
  167. package/dist/gui/EFOverlayItem.js +97 -0
  168. package/dist/gui/EFOverlayItem.js.map +1 -0
  169. package/dist/gui/EFOverlayLayer.d.ts +70 -0
  170. package/dist/gui/EFOverlayLayer.js +104 -0
  171. package/dist/gui/EFOverlayLayer.js.map +1 -0
  172. package/dist/gui/EFPause.d.ts +4 -4
  173. package/dist/gui/EFPlay.d.ts +4 -4
  174. package/dist/gui/EFResizableBox.d.ts +12 -16
  175. package/dist/gui/EFResizableBox.js +109 -451
  176. package/dist/gui/EFResizableBox.js.map +1 -1
  177. package/dist/gui/EFScrubber.d.ts +30 -5
  178. package/dist/gui/EFScrubber.js +224 -31
  179. package/dist/gui/EFScrubber.js.map +1 -1
  180. package/dist/gui/EFTimeDisplay.d.ts +4 -4
  181. package/dist/gui/EFTimeDisplay.js +4 -1
  182. package/dist/gui/EFTimeDisplay.js.map +1 -1
  183. package/dist/gui/EFTimelineRuler.d.ts +71 -0
  184. package/dist/gui/EFTimelineRuler.js +320 -0
  185. package/dist/gui/EFTimelineRuler.js.map +1 -0
  186. package/dist/gui/EFToggleLoop.d.ts +4 -4
  187. package/dist/gui/EFTogglePlay.d.ts +4 -4
  188. package/dist/gui/EFTransformHandles.d.ts +91 -0
  189. package/dist/gui/EFTransformHandles.js +393 -0
  190. package/dist/gui/EFTransformHandles.js.map +1 -0
  191. package/dist/gui/EFWorkbench.d.ts +182 -4
  192. package/dist/gui/EFWorkbench.js +2067 -22
  193. package/dist/gui/EFWorkbench.js.map +1 -1
  194. package/dist/gui/FitScaleHelpers.d.ts +31 -0
  195. package/dist/gui/FitScaleHelpers.js +41 -0
  196. package/dist/gui/FitScaleHelpers.js.map +1 -0
  197. package/dist/gui/PlaybackController.d.ts +2 -1
  198. package/dist/gui/PlaybackController.js +46 -15
  199. package/dist/gui/PlaybackController.js.map +1 -1
  200. package/dist/gui/TWMixin.js +1 -1
  201. package/dist/gui/TWMixin.js.map +1 -1
  202. package/dist/gui/hierarchy/EFHierarchy.d.ts +65 -0
  203. package/dist/gui/hierarchy/EFHierarchy.js +338 -0
  204. package/dist/gui/hierarchy/EFHierarchy.js.map +1 -0
  205. package/dist/gui/hierarchy/EFHierarchyItem.d.ts +118 -0
  206. package/dist/gui/hierarchy/EFHierarchyItem.js +551 -0
  207. package/dist/gui/hierarchy/EFHierarchyItem.js.map +1 -0
  208. package/dist/gui/hierarchy/hierarchyContext.d.ts +38 -0
  209. package/dist/gui/hierarchy/hierarchyContext.js +8 -0
  210. package/dist/gui/hierarchy/hierarchyContext.js.map +1 -0
  211. package/dist/gui/icons.js +34 -0
  212. package/dist/gui/icons.js.map +1 -0
  213. package/dist/gui/panZoomTransformContext.js +12 -0
  214. package/dist/gui/panZoomTransformContext.js.map +1 -0
  215. package/dist/gui/previewSettingsContext.js +12 -0
  216. package/dist/gui/previewSettingsContext.js.map +1 -0
  217. package/dist/gui/timeline/EFTimeline.d.ts +270 -0
  218. package/dist/gui/timeline/EFTimeline.js +1369 -0
  219. package/dist/gui/timeline/EFTimeline.js.map +1 -0
  220. package/dist/gui/timeline/EFTimelineRow.js +374 -0
  221. package/dist/gui/timeline/EFTimelineRow.js.map +1 -0
  222. package/dist/gui/timeline/TrimHandles.d.ts +36 -0
  223. package/dist/gui/timeline/TrimHandles.js +204 -0
  224. package/dist/gui/timeline/TrimHandles.js.map +1 -0
  225. package/dist/gui/timeline/flattenHierarchy.js +31 -0
  226. package/dist/gui/timeline/flattenHierarchy.js.map +1 -0
  227. package/dist/gui/timeline/timelineStateContext.d.ts +26 -0
  228. package/dist/gui/timeline/timelineStateContext.js +42 -0
  229. package/dist/gui/timeline/timelineStateContext.js.map +1 -0
  230. package/dist/gui/timeline/tracks/AudioTrack.js +264 -0
  231. package/dist/gui/timeline/tracks/AudioTrack.js.map +1 -0
  232. package/dist/gui/timeline/tracks/CaptionsTrack.js +595 -0
  233. package/dist/gui/timeline/tracks/CaptionsTrack.js.map +1 -0
  234. package/dist/gui/timeline/tracks/HTMLTrack.js +19 -0
  235. package/dist/gui/timeline/tracks/HTMLTrack.js.map +1 -0
  236. package/dist/gui/timeline/tracks/ImageTrack.js +53 -0
  237. package/dist/gui/timeline/tracks/ImageTrack.js.map +1 -0
  238. package/dist/gui/timeline/tracks/TextTrack.js +250 -0
  239. package/dist/gui/timeline/tracks/TextTrack.js.map +1 -0
  240. package/dist/gui/timeline/tracks/TimegroupTrack.js +143 -0
  241. package/dist/gui/timeline/tracks/TimegroupTrack.js.map +1 -0
  242. package/dist/gui/timeline/tracks/TrackItem.js +269 -0
  243. package/dist/gui/timeline/tracks/TrackItem.js.map +1 -0
  244. package/dist/gui/timeline/tracks/VideoTrack.js +265 -0
  245. package/dist/gui/timeline/tracks/VideoTrack.js.map +1 -0
  246. package/dist/gui/timeline/tracks/WaveformTrack.js +19 -0
  247. package/dist/gui/timeline/tracks/WaveformTrack.js.map +1 -0
  248. package/dist/gui/timeline/tracks/ensureTrackItemInit.js +1 -0
  249. package/dist/gui/timeline/tracks/preloadTracks.js +9 -0
  250. package/dist/gui/timeline/tracks/renderTrackChildren.js +119 -0
  251. package/dist/gui/timeline/tracks/renderTrackChildren.js.map +1 -0
  252. package/dist/gui/timeline/tracks/waveformUtils.js +80 -0
  253. package/dist/gui/timeline/tracks/waveformUtils.js.map +1 -0
  254. package/dist/gui/transformCalculations.js +217 -0
  255. package/dist/gui/transformCalculations.js.map +1 -0
  256. package/dist/gui/transformUtils.d.ts +37 -0
  257. package/dist/gui/transformUtils.js +77 -0
  258. package/dist/gui/transformUtils.js.map +1 -0
  259. package/dist/gui/tree/EFTree.d.ts +59 -0
  260. package/dist/gui/tree/EFTree.js +174 -0
  261. package/dist/gui/tree/EFTree.js.map +1 -0
  262. package/dist/gui/tree/EFTreeItem.d.ts +38 -0
  263. package/dist/gui/tree/EFTreeItem.js +146 -0
  264. package/dist/gui/tree/EFTreeItem.js.map +1 -0
  265. package/dist/gui/tree/treeContext.d.ts +60 -0
  266. package/dist/gui/tree/treeContext.js +23 -0
  267. package/dist/gui/tree/treeContext.js.map +1 -0
  268. package/dist/index.d.ts +32 -8
  269. package/dist/index.js +30 -6
  270. package/dist/index.js.map +1 -1
  271. package/dist/node_modules/react/cjs/react-jsx-runtime.development.js +688 -0
  272. package/dist/node_modules/react/cjs/react-jsx-runtime.development.js.map +1 -0
  273. package/dist/node_modules/react/cjs/react.development.js +1521 -0
  274. package/dist/node_modules/react/cjs/react.development.js.map +1 -0
  275. package/dist/node_modules/react/index.js +13 -0
  276. package/dist/node_modules/react/index.js.map +1 -0
  277. package/dist/node_modules/react/jsx-runtime.js +13 -0
  278. package/dist/node_modules/react/jsx-runtime.js.map +1 -0
  279. package/dist/preview/AdaptiveResolutionTracker.js +228 -0
  280. package/dist/preview/AdaptiveResolutionTracker.js.map +1 -0
  281. package/dist/preview/RenderProfiler.js +135 -0
  282. package/dist/preview/RenderProfiler.js.map +1 -0
  283. package/dist/preview/previewSettings.js +131 -0
  284. package/dist/preview/previewSettings.js.map +1 -0
  285. package/dist/preview/previewTypes.js +64 -0
  286. package/dist/preview/previewTypes.js.map +1 -0
  287. package/dist/preview/renderTimegroupPreview.js +656 -0
  288. package/dist/preview/renderTimegroupPreview.js.map +1 -0
  289. package/dist/preview/renderTimegroupToCanvas.d.ts +37 -0
  290. package/dist/preview/renderTimegroupToCanvas.js +840 -0
  291. package/dist/preview/renderTimegroupToCanvas.js.map +1 -0
  292. package/dist/preview/renderTimegroupToVideo.d.ts +39 -0
  293. package/dist/preview/renderTimegroupToVideo.js +274 -0
  294. package/dist/preview/renderTimegroupToVideo.js.map +1 -0
  295. package/dist/preview/renderers.js +16 -0
  296. package/dist/preview/renderers.js.map +1 -0
  297. package/dist/preview/statsTrackingStrategy.js +201 -0
  298. package/dist/preview/statsTrackingStrategy.js.map +1 -0
  299. package/dist/preview/thumbnailCacheSettings.js +52 -0
  300. package/dist/preview/thumbnailCacheSettings.js.map +1 -0
  301. package/dist/preview/workers/WorkerPool.js +178 -0
  302. package/dist/preview/workers/WorkerPool.js.map +1 -0
  303. package/dist/sandbox/PlaybackControls.js +10 -0
  304. package/dist/sandbox/PlaybackControls.js.map +1 -0
  305. package/dist/sandbox/ScenarioRunner.js +1 -0
  306. package/dist/sandbox/index.js +2 -0
  307. package/dist/style.css +68 -67
  308. package/dist/transcoding/types/index.d.ts +2 -1
  309. package/dist/transcoding/utils/UrlGenerator.d.ts +6 -1
  310. package/dist/transcoding/utils/UrlGenerator.js +12 -3
  311. package/dist/transcoding/utils/UrlGenerator.js.map +1 -1
  312. package/dist/utils/LRUCache.js +1 -375
  313. package/dist/utils/LRUCache.js.map +1 -1
  314. package/dist/utils/frameTime.js +14 -0
  315. package/dist/utils/frameTime.js.map +1 -0
  316. package/package.json +3 -3
  317. package/test/profilingPlugin.ts +223 -0
  318. package/test/recordReplayProxyPlugin.js +22 -27
  319. package/test/thumbnail-performance-test.html +116 -0
  320. package/test/visualRegressionUtils.ts +286 -0
  321. package/types.json +1 -1
  322. package/dist/elements/TimegroupController.d.ts +0 -18
  323. package/dist/msToTimeCode.js +0 -17
  324. package/dist/msToTimeCode.js.map +0 -1
@@ -0,0 +1,34 @@
1
+ import { html } from "lit";
2
+
3
+ //#region src/gui/icons.ts
4
+ /**
5
+ * Helper function to create Phosphor icon SVG templates
6
+ * Icons are sized to match typical UI font sizes (12-14px)
7
+ */
8
+ function phosphorIcon(path, size = 14) {
9
+ return html`
10
+ <svg width="${size}" height="${size}" viewBox="0 0 256 256" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
11
+ <path d="${path}" />
12
+ </svg>
13
+ `;
14
+ }
15
+ const ICONS = {
16
+ gear: "M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Zm88-29.84q.06-2.16,0-4.32l14.92-18.64a8,8,0,0,0,1.48-7.06,107.21,107.21,0,0,0-10.88-26.25,8,8,0,0,0-6-3.93l-23.72-2.64q-1.48-1.56-3-3L186,40.54a8,8,0,0,0-3.94-6,107.71,107.71,0,0,0-26.25-10.87,8,8,0,0,0-7.06,1.49L130.16,40Q128,40,125.84,40L107.2,25.11a8,8,0,0,0-7.06-1.48A107.6,107.6,0,0,0,73.89,34.51a8,8,0,0,0-3.93,6L67.32,64.27q-1.56,1.49-3,3L40.54,70a8,8,0,0,0-6,3.94,107.71,107.71,0,0,0-10.87,26.25,8,8,0,0,0,1.49,7.06L40,125.84Q40,128,40,130.16L25.11,148.8a8,8,0,0,0-1.48,7.06,107.21,107.21,0,0,0,10.88,26.25,8,8,0,0,0,6,3.93l23.72,2.64q1.49,1.56,3,3L70,215.46a8,8,0,0,0,3.94,6,107.71,107.71,0,0,0,26.25,10.87,8,8,0,0,0,7.06-1.49L125.84,216q2.16.06,4.32,0l18.64,14.92a8,8,0,0,0,7.06,1.48,107.21,107.21,0,0,0,26.25-10.88,8,8,0,0,0,3.93-6l2.64-23.72q1.56-1.48,3-3L215.46,186a8,8,0,0,0,6-3.94,107.71,107.71,0,0,0,10.87-26.25,8,8,0,0,0-1.49-7.06Zm-16.1-6.5a73.93,73.93,0,0,1,0,8.68,8,8,0,0,0,1.74,5.48l14.19,17.73a91.57,91.57,0,0,1-6.23,15L187,173.11a8,8,0,0,0-5.1,2.64,74.11,74.11,0,0,1-6.14,6.14,8,8,0,0,0-2.64,5.1l-2.51,22.58a91.32,91.32,0,0,1-15,6.23l-17.74-14.19a8,8,0,0,0-5-1.75h-.48a73.93,73.93,0,0,1-8.68,0,8,8,0,0,0-5.48,1.74L100.45,215.8a91.57,91.57,0,0,1-15-6.23L82.89,187a8,8,0,0,0-2.64-5.1,74.11,74.11,0,0,1-6.14-6.14,8,8,0,0,0-5.1-2.64L46.43,170.6a91.32,91.32,0,0,1-6.23-15l14.19-17.74a8,8,0,0,0,1.74-5.48,73.93,73.93,0,0,1,0-8.68,8,8,0,0,0-1.74-5.48L40.2,100.45a91.57,91.57,0,0,1,6.23-15L69,82.89a8,8,0,0,0,5.1-2.64,74.11,74.11,0,0,1,6.14-6.14A8,8,0,0,0,82.89,69L85.4,46.43a91.32,91.32,0,0,1,15-6.23l17.74,14.19a8,8,0,0,0,5.48,1.74,73.93,73.93,0,0,1,8.68,0,8,8,0,0,0,5.48-1.74L155.55,40.2a91.57,91.57,0,0,1,15,6.23L173.11,69a8,8,0,0,0,2.64,5.1,74.11,74.11,0,0,1,6.14,6.14,8,8,0,0,0,5.1,2.64l22.58,2.51a91.32,91.32,0,0,1,6.23,15l-14.19,17.74A8,8,0,0,0,199.87,123.66Z",
17
+ clock: "M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm64-88a8,8,0,0,1-8,8H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48A8,8,0,0,1,192,128Z",
18
+ filmStrip: "M184,32H72A24,24,0,0,0,48,56V200a24,24,0,0,0,24,24H184a24,24,0,0,0,24-24V56A24,24,0,0,0,184,32Zm8,168a8,8,0,0,1-8,8H72a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8H184a8,8,0,0,1,8,8ZM80,80a8,8,0,0,1,16,0v96a8,8,0,0,1-16,0Zm80,0a8,8,0,0,1,16,0v96a8,8,0,0,1-16,0Z",
19
+ filmSlate: "M216,48H40a16,16,0,0,0-16,16V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V64A16,16,0,0,0,216,48ZM40,64H216V192H40ZM56,88a8,8,0,0,1,8-8H80a8,8,0,0,1,0,16H64A8,8,0,0,1,56,88Zm144,0a8,8,0,0,1,8-8h16a8,8,0,0,1,0,16H208A8,8,0,0,1,200,88ZM56,168a8,8,0,0,1,8-8H80a8,8,0,0,1,0,16H64A8,8,0,0,1,56,168Zm144,0a8,8,0,0,1,8-8h16a8,8,0,0,1,0,16H208A8,8,0,0,1,200,168ZM128,120a8,8,0,0,1-8-8V96a8,8,0,0,1,16,0v16A8,8,0,0,1,128,120Zm0,48a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v16A8,8,0,0,1,128,168Z",
20
+ speakerHigh: "M155.51,24.81a8,8,0,0,0-8.42.88L77.25,80H32A16,16,0,0,0,16,96v64a16,16,0,0,0,16,16H77.25l69.84,54.31A8,8,0,0,0,160,224V32A8,8,0,0,0,155.51,24.81ZM32,96H72v64H32ZM144,207.64,88.91,160H32V96H88.91L144,48.36Zm53.66-90.37a8,8,0,0,1,0-11.32,40,40,0,0,1,0,56.58,8,8,0,0,1-11.32-11.32,24,24,0,0,0,0-33.94A8,8,0,0,1,197.66,117.27Zm-17-45.25a8,8,0,0,1,11.32,0,72,72,0,0,1,0,101.82,8,8,0,0,1-11.32-11.32,56,56,0,0,0,0-79.18A8,8,0,0,1,180.66,72Z",
21
+ textT: "M212,56V88a8,8,0,0,1-16,0V64H140V192h20a8,8,0,0,1,0,16H96a8,8,0,0,1,0-16h20V64H60V88a8,8,0,0,1-16,0V56a8,8,0,0,1,8-8H204A8,8,0,0,1,212,56Z",
22
+ image: "M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40Zm0,160H40V56H216V200ZM56,96a12,12,0,1,1,12,12A12,12,0,0,1,56,96Zm152,84H96l48-48,24,24,16-16Z",
23
+ subtitles: "M224,48H32a16,16,0,0,0-16,16V192a16,16,0,0,0,16,16H224a16,16,0,0,0,16-16V64A16,16,0,0,0,224,48Zm0,144H32V64H224V192ZM48,128a8,8,0,0,1,8-8H80a8,8,0,0,1,0,16H56A8,8,0,0,1,48,128Zm112,0a8,8,0,0,1,8-8h32a8,8,0,0,1,0,16H168A8,8,0,0,1,160,128Zm-64,32a8,8,0,0,1,8-8h96a8,8,0,0,1,0,16H104A8,8,0,0,1,96,160Z",
24
+ microphone: "M128,24A48,48,0,0,0,80,72V128a48,48,0,0,0,96,0V72A48,48,0,0,0,128,24Zm32,104a32,32,0,0,1-64,0V72a32,32,0,0,1,64,0Zm48,0a8,8,0,0,1-16,0A96.11,96.11,0,0,0,128,32a8,8,0,0,1,0-16A112.12,112.12,0,0,1,240,128Zm-40,0a8,8,0,0,1-16,0A72.08,72.08,0,0,0,128,56a8,8,0,0,1,0-16A88.1,88.1,0,0,1,216,128Zm24,40a8,8,0,0,1-8,8H32a8,8,0,0,1,0-16H192A8,8,0,0,1,200,168Z",
25
+ waveform: "M80,96a8,8,0,0,1,8-8h8a8,8,0,0,1,8,8v64a8,8,0,0,1-8,8H88a8,8,0,0,1-8-8Zm32-32a8,8,0,0,1,8-8h8a8,8,0,0,1,8,8v128a8,8,0,0,1-8,8h-8a8,8,0,0,1-8-8Zm32,16a8,8,0,0,1,8-8h8a8,8,0,0,1,8,8v96a8,8,0,0,1-8,8h-8a8,8,0,0,1-8-8Zm32-48a8,8,0,0,1,8-8h8a8,8,0,0,1,8,8v192a8,8,0,0,1-8,8h-8a8,8,0,0,1-8-8Z",
26
+ code: "M69.12,94.15,28.5,128l40.62,33.85a8,8,0,1,1-10.24,12.3l-48-40a8,8,0,0,1,0-12.3l48-40a8,8,0,0,1,10.24,12.3Zm176,27.7-48-40a8,8,0,0,0-10.24,12.3L227.5,128l-40.62,33.85a8,8,0,1,0,10.24,12.3l48-40a8,8,0,0,0,0-12.3Zm-82.39-89.37a8,8,0,0,0-10.25,4.79l-64,176a8,8,0,0,0,4.79,10.26A8.14,8.14,0,0,0,96,224a8,8,0,0,0,7.52-5.27l64-176A8,8,0,0,0,162.73,32.48Z",
27
+ arrowLeft: "M192,128a8,8,0,0,1-2.34,5.66l-56,56a8,8,0,0,1-11.32-11.32L172.69,128,122.34,77.66a8,8,0,0,1,11.32-11.32l56,56A8,8,0,0,1,192,128Z",
28
+ arrowRight: "M64,128a8,8,0,0,1,2.34-5.66l56-56a8,8,0,0,1,11.32,11.32L83.31,128l50.35,50.34a8,8,0,0,1-11.32,11.32l-56-56A8,8,0,0,1,64,128Z",
29
+ lightning: "M215.79,118.17a8,8,0,0,0-5-5.66L153.18,90.9l14.66-73.33a8,8,0,0,0-13.69-7l-112,120a8,8,0,0,0,3,13l57.63,21.61L88.16,238.43a8,8,0,0,0,13.69,7l112-120A8,8,0,0,0,215.79,118.17Z"
30
+ };
31
+
32
+ //#endregion
33
+ export { ICONS, phosphorIcon };
34
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.js","names":[],"sources":["../../src/gui/icons.ts"],"sourcesContent":["import { html, type TemplateResult } from \"lit\";\n\n/**\n * Helper function to create Phosphor icon SVG templates\n * Icons are sized to match typical UI font sizes (12-14px)\n */\nexport function phosphorIcon(path: string, size = 14): TemplateResult<1> {\n return html`\n <svg width=\"${size}\" height=\"${size}\" viewBox=\"0 0 256 256\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"${path}\" />\n </svg>\n `;\n}\n\n// Phosphor icon paths (from @phosphor-icons/core)\nexport const ICONS = {\n gear: \"M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Zm88-29.84q.06-2.16,0-4.32l14.92-18.64a8,8,0,0,0,1.48-7.06,107.21,107.21,0,0,0-10.88-26.25,8,8,0,0,0-6-3.93l-23.72-2.64q-1.48-1.56-3-3L186,40.54a8,8,0,0,0-3.94-6,107.71,107.71,0,0,0-26.25-10.87,8,8,0,0,0-7.06,1.49L130.16,40Q128,40,125.84,40L107.2,25.11a8,8,0,0,0-7.06-1.48A107.6,107.6,0,0,0,73.89,34.51a8,8,0,0,0-3.93,6L67.32,64.27q-1.56,1.49-3,3L40.54,70a8,8,0,0,0-6,3.94,107.71,107.71,0,0,0-10.87,26.25,8,8,0,0,0,1.49,7.06L40,125.84Q40,128,40,130.16L25.11,148.8a8,8,0,0,0-1.48,7.06,107.21,107.21,0,0,0,10.88,26.25,8,8,0,0,0,6,3.93l23.72,2.64q1.49,1.56,3,3L70,215.46a8,8,0,0,0,3.94,6,107.71,107.71,0,0,0,26.25,10.87,8,8,0,0,0,7.06-1.49L125.84,216q2.16.06,4.32,0l18.64,14.92a8,8,0,0,0,7.06,1.48,107.21,107.21,0,0,0,26.25-10.88,8,8,0,0,0,3.93-6l2.64-23.72q1.56-1.48,3-3L215.46,186a8,8,0,0,0,6-3.94,107.71,107.71,0,0,0,10.87-26.25,8,8,0,0,0-1.49-7.06Zm-16.1-6.5a73.93,73.93,0,0,1,0,8.68,8,8,0,0,0,1.74,5.48l14.19,17.73a91.57,91.57,0,0,1-6.23,15L187,173.11a8,8,0,0,0-5.1,2.64,74.11,74.11,0,0,1-6.14,6.14,8,8,0,0,0-2.64,5.1l-2.51,22.58a91.32,91.32,0,0,1-15,6.23l-17.74-14.19a8,8,0,0,0-5-1.75h-.48a73.93,73.93,0,0,1-8.68,0,8,8,0,0,0-5.48,1.74L100.45,215.8a91.57,91.57,0,0,1-15-6.23L82.89,187a8,8,0,0,0-2.64-5.1,74.11,74.11,0,0,1-6.14-6.14,8,8,0,0,0-5.1-2.64L46.43,170.6a91.32,91.32,0,0,1-6.23-15l14.19-17.74a8,8,0,0,0,1.74-5.48,73.93,73.93,0,0,1,0-8.68,8,8,0,0,0-1.74-5.48L40.2,100.45a91.57,91.57,0,0,1,6.23-15L69,82.89a8,8,0,0,0,5.1-2.64,74.11,74.11,0,0,1,6.14-6.14A8,8,0,0,0,82.89,69L85.4,46.43a91.32,91.32,0,0,1,15-6.23l17.74,14.19a8,8,0,0,0,5.48,1.74,73.93,73.93,0,0,1,8.68,0,8,8,0,0,0,5.48-1.74L155.55,40.2a91.57,91.57,0,0,1,15,6.23L173.11,69a8,8,0,0,0,2.64,5.1,74.11,74.11,0,0,1,6.14,6.14,8,8,0,0,0,5.1,2.64l22.58,2.51a91.32,91.32,0,0,1,6.23,15l-14.19,17.74A8,8,0,0,0,199.87,123.66Z\",\n clock: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm64-88a8,8,0,0,1-8,8H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48A8,8,0,0,1,192,128Z\",\n filmStrip: \"M184,32H72A24,24,0,0,0,48,56V200a24,24,0,0,0,24,24H184a24,24,0,0,0,24-24V56A24,24,0,0,0,184,32Zm8,168a8,8,0,0,1-8,8H72a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8H184a8,8,0,0,1,8,8ZM80,80a8,8,0,0,1,16,0v96a8,8,0,0,1-16,0Zm80,0a8,8,0,0,1,16,0v96a8,8,0,0,1-16,0Z\",\n filmSlate: \"M216,48H40a16,16,0,0,0-16,16V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V64A16,16,0,0,0,216,48ZM40,64H216V192H40ZM56,88a8,8,0,0,1,8-8H80a8,8,0,0,1,0,16H64A8,8,0,0,1,56,88Zm144,0a8,8,0,0,1,8-8h16a8,8,0,0,1,0,16H208A8,8,0,0,1,200,88ZM56,168a8,8,0,0,1,8-8H80a8,8,0,0,1,0,16H64A8,8,0,0,1,56,168Zm144,0a8,8,0,0,1,8-8h16a8,8,0,0,1,0,16H208A8,8,0,0,1,200,168ZM128,120a8,8,0,0,1-8-8V96a8,8,0,0,1,16,0v16A8,8,0,0,1,128,120Zm0,48a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v16A8,8,0,0,1,128,168Z\",\n speakerHigh: \"M155.51,24.81a8,8,0,0,0-8.42.88L77.25,80H32A16,16,0,0,0,16,96v64a16,16,0,0,0,16,16H77.25l69.84,54.31A8,8,0,0,0,160,224V32A8,8,0,0,0,155.51,24.81ZM32,96H72v64H32ZM144,207.64,88.91,160H32V96H88.91L144,48.36Zm53.66-90.37a8,8,0,0,1,0-11.32,40,40,0,0,1,0,56.58,8,8,0,0,1-11.32-11.32,24,24,0,0,0,0-33.94A8,8,0,0,1,197.66,117.27Zm-17-45.25a8,8,0,0,1,11.32,0,72,72,0,0,1,0,101.82,8,8,0,0,1-11.32-11.32,56,56,0,0,0,0-79.18A8,8,0,0,1,180.66,72Z\",\n textT: \"M212,56V88a8,8,0,0,1-16,0V64H140V192h20a8,8,0,0,1,0,16H96a8,8,0,0,1,0-16h20V64H60V88a8,8,0,0,1-16,0V56a8,8,0,0,1,8-8H204A8,8,0,0,1,212,56Z\",\n image: \"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40Zm0,160H40V56H216V200ZM56,96a12,12,0,1,1,12,12A12,12,0,0,1,56,96Zm152,84H96l48-48,24,24,16-16Z\",\n subtitles: \"M224,48H32a16,16,0,0,0-16,16V192a16,16,0,0,0,16,16H224a16,16,0,0,0,16-16V64A16,16,0,0,0,224,48Zm0,144H32V64H224V192ZM48,128a8,8,0,0,1,8-8H80a8,8,0,0,1,0,16H56A8,8,0,0,1,48,128Zm112,0a8,8,0,0,1,8-8h32a8,8,0,0,1,0,16H168A8,8,0,0,1,160,128Zm-64,32a8,8,0,0,1,8-8h96a8,8,0,0,1,0,16H104A8,8,0,0,1,96,160Z\",\n microphone: \"M128,24A48,48,0,0,0,80,72V128a48,48,0,0,0,96,0V72A48,48,0,0,0,128,24Zm32,104a32,32,0,0,1-64,0V72a32,32,0,0,1,64,0Zm48,0a8,8,0,0,1-16,0A96.11,96.11,0,0,0,128,32a8,8,0,0,1,0-16A112.12,112.12,0,0,1,240,128Zm-40,0a8,8,0,0,1-16,0A72.08,72.08,0,0,0,128,56a8,8,0,0,1,0-16A88.1,88.1,0,0,1,216,128Zm24,40a8,8,0,0,1-8,8H32a8,8,0,0,1,0-16H192A8,8,0,0,1,200,168Z\",\n waveform: \"M80,96a8,8,0,0,1,8-8h8a8,8,0,0,1,8,8v64a8,8,0,0,1-8,8H88a8,8,0,0,1-8-8Zm32-32a8,8,0,0,1,8-8h8a8,8,0,0,1,8,8v128a8,8,0,0,1-8,8h-8a8,8,0,0,1-8-8Zm32,16a8,8,0,0,1,8-8h8a8,8,0,0,1,8,8v96a8,8,0,0,1-8,8h-8a8,8,0,0,1-8-8Zm32-48a8,8,0,0,1,8-8h8a8,8,0,0,1,8,8v192a8,8,0,0,1-8,8h-8a8,8,0,0,1-8-8Z\",\n code: \"M69.12,94.15,28.5,128l40.62,33.85a8,8,0,1,1-10.24,12.3l-48-40a8,8,0,0,1,0-12.3l48-40a8,8,0,0,1,10.24,12.3Zm176,27.7-48-40a8,8,0,0,0-10.24,12.3L227.5,128l-40.62,33.85a8,8,0,1,0,10.24,12.3l48-40a8,8,0,0,0,0-12.3Zm-82.39-89.37a8,8,0,0,0-10.25,4.79l-64,176a8,8,0,0,0,4.79,10.26A8.14,8.14,0,0,0,96,224a8,8,0,0,0,7.52-5.27l64-176A8,8,0,0,0,162.73,32.48Z\",\n arrowLeft: \"M192,128a8,8,0,0,1-2.34,5.66l-56,56a8,8,0,0,1-11.32-11.32L172.69,128,122.34,77.66a8,8,0,0,1,11.32-11.32l56,56A8,8,0,0,1,192,128Z\",\n arrowRight: \"M64,128a8,8,0,0,1,2.34-5.66l56-56a8,8,0,0,1,11.32,11.32L83.31,128l50.35,50.34a8,8,0,0,1-11.32,11.32l-56-56A8,8,0,0,1,64,128Z\",\n lightning: \"M215.79,118.17a8,8,0,0,0-5-5.66L153.18,90.9l14.66-73.33a8,8,0,0,0-13.69-7l-112,120a8,8,0,0,0,3,13l57.63,21.61L88.16,238.43a8,8,0,0,0,13.69,7l112-120A8,8,0,0,0,215.79,118.17Z\",\n} as const;\n\n"],"mappings":";;;;;;;AAMA,SAAgB,aAAa,MAAc,OAAO,IAAuB;AACvE,QAAO,IAAI;kBACK,KAAK,YAAY,KAAK;iBACvB,KAAK;;;;AAMtB,MAAa,QAAQ;CACnB,MAAM;CACN,OAAO;CACP,WAAW;CACX,WAAW;CACX,aAAa;CACb,OAAO;CACP,OAAO;CACP,WAAW;CACX,YAAY;CACZ,UAAU;CACV,MAAM;CACN,WAAW;CACX,YAAY;CACZ,WAAW;CACZ"}
@@ -0,0 +1,12 @@
1
+ import { createContext } from "@lit/context";
2
+
3
+ //#region src/gui/panZoomTransformContext.ts
4
+ /**
5
+ * Lit context for PanZoom transform.
6
+ * Provided by EFPanZoom component, consumed by overlay components.
7
+ */
8
+ const panZoomTransformContext = createContext(Symbol("panZoomTransform"));
9
+
10
+ //#endregion
11
+ export { panZoomTransformContext };
12
+ //# sourceMappingURL=panZoomTransformContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panZoomTransformContext.js","names":[],"sources":["../../src/gui/panZoomTransformContext.ts"],"sourcesContent":["import { createContext } from \"@lit/context\";\nimport type { PanZoomTransform } from \"../elements/EFPanZoom.js\";\n\n/**\n * Lit context for PanZoom transform.\n * Provided by EFPanZoom component, consumed by overlay components.\n */\nexport const panZoomTransformContext = createContext<\n PanZoomTransform | undefined\n>(Symbol(\"panZoomTransform\"));\n"],"mappings":";;;;;;;AAOA,MAAa,0BAA0B,cAErC,OAAO,mBAAmB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { createContext } from "@lit/context";
2
+
3
+ //#region src/gui/previewSettingsContext.ts
4
+ /**
5
+ * Context for propagating preview settings through the component tree.
6
+ * Provided by EFWorkbench, consumable by any descendant.
7
+ */
8
+ const previewSettingsContext = createContext(Symbol("preview-settings"));
9
+
10
+ //#endregion
11
+ export { previewSettingsContext };
12
+ //# sourceMappingURL=previewSettingsContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"previewSettingsContext.js","names":[],"sources":["../../src/gui/previewSettingsContext.ts"],"sourcesContent":["import { createContext } from \"@lit/context\";\nimport type { PreviewPresentationMode, PreviewResolutionScale, RenderMode } from \"../preview/previewSettings.js\";\n\n/**\n * Settings for the preview workbench.\n * Provided by EFWorkbench via context, consumable by any descendant.\n */\nexport interface PreviewSettings {\n presentationMode: PreviewPresentationMode;\n renderMode: RenderMode;\n resolutionScale: PreviewResolutionScale;\n showStats: boolean;\n thumbnailCacheMaxSize: number;\n}\n\n/**\n * Context for propagating preview settings through the component tree.\n * Provided by EFWorkbench, consumable by any descendant.\n */\nexport const previewSettingsContext = createContext<PreviewSettings>(\n Symbol(\"preview-settings\")\n);\n"],"mappings":";;;;;;;AAmBA,MAAa,yBAAyB,cACpC,OAAO,mBAAmB,CAC3B"}
@@ -0,0 +1,270 @@
1
+ import { TemporalMixinInterface } from "../../elements/EFTemporal.js";
2
+ import { SelectionContext } from "../../canvas/selection/selectionContext.js";
3
+ import { TimelineState } from "./timelineStateContext.js";
4
+ import * as lit38 from "lit";
5
+ import { LitElement, PropertyValues, TemplateResult } from "lit";
6
+
7
+ //#region src/gui/timeline/EFTimeline.d.ts
8
+ declare const EFTimeline_base: typeof LitElement;
9
+ /**
10
+ * EFTimeline - Unified timeline component
11
+ *
12
+ * Core invariant: pixelsPerMs determines all positioning.
13
+ * Everything else (ruler, tracks, playhead) derives from this single value.
14
+ */
15
+ declare class EFTimeline extends EFTimeline_base {
16
+ #private;
17
+ static styles: lit38.CSSResult[];
18
+ /**
19
+ * Target element ID or "selection" to derive from canvas selection.
20
+ *
21
+ * - Empty string (default): Automatically derives target from canvas selection.
22
+ * The timeline shows the root temporal element containing the currently selected element.
23
+ * - "selection": Explicitly use selection-derived targeting (same as empty string).
24
+ * - Element ID: Use the specified element as the target (must be a temporal element).
25
+ *
26
+ * When deriving from selection, the timeline automatically updates when selection changes.
27
+ */
28
+ target: string;
29
+ /**
30
+ * The core zoom value - pixels per millisecond.
31
+ * All positioning derives from this single value.
32
+ */
33
+ pixelsPerMs: number;
34
+ minZoom: number;
35
+ maxZoom: number;
36
+ enableTrim: boolean;
37
+ showControls: boolean;
38
+ showRuler: boolean;
39
+ showHierarchy: boolean;
40
+ showPlayhead: boolean;
41
+ showPlaybackControls: boolean;
42
+ showZoomControls: boolean;
43
+ showTimeDisplay: boolean;
44
+ /**
45
+ * Target temporal element ID for playback control.
46
+ * Use this to specify which temporal element the timeline controls.
47
+ * If not set and target is a canvas, derives from canvas selection.
48
+ *
49
+ * Examples:
50
+ * - `control-target="timegroup-1"` - control specific timegroup
51
+ * - Empty: derive from canvas active selection
52
+ */
53
+ controlTarget: string;
54
+ /**
55
+ * CSS selectors for elements to hide in the timeline.
56
+ * Comma-separated list of selectors (e.g., "ef-waveform, .helper").
57
+ */
58
+ hide: string;
59
+ /**
60
+ * CSS selectors for elements to show in the timeline.
61
+ * When set, only matching elements are shown. Comma-separated list.
62
+ */
63
+ show: string;
64
+ get hideSelectors(): string[] | undefined;
65
+ get showSelectors(): string[] | undefined;
66
+ /**
67
+ * Target element for canvas-wide state (selection, highlight).
68
+ * This should be set to the canvas element.
69
+ */
70
+ private targetElement;
71
+ private currentTimeMs;
72
+ private isPlaying;
73
+ private isLooping;
74
+ private viewportScrollLeft;
75
+ private _timelineState;
76
+ private targetController?;
77
+ private tracksScrollRef;
78
+ private containerRef;
79
+ private playheadRef;
80
+ private playheadHandleRef;
81
+ private frameHighlightRef;
82
+ private animationFrameId?;
83
+ private selectionChangeHandler?;
84
+ private scrollHandler?;
85
+ private keydownHandler?;
86
+ private isDraggingPlayhead;
87
+ private targetObserver?;
88
+ private canvasActiveRootTemporalChangeHandler?;
89
+ private resizeObserver?;
90
+ private cachedViewportWidth;
91
+ private saveZoomScrollDebounceTimer;
92
+ private lastContextUpdateTime;
93
+ private static readonly CONTEXT_UPDATE_INTERVAL_MS;
94
+ selectionContext?: SelectionContext;
95
+ get providedPlaying(): boolean;
96
+ get providedLoop(): boolean;
97
+ get providedCurrentTime(): number;
98
+ get providedDuration(): number;
99
+ get providedTargetTemporal(): TemporalMixinInterface | null;
100
+ /** Get timeline state (for external access) */
101
+ get timelineState(): TimelineState;
102
+ /** Update timeline state when any constituent value changes */
103
+ private updateTimelineState;
104
+ /**
105
+ * Get the target canvas element.
106
+ * The canvas is the source of truth for selection and highlight state.
107
+ */
108
+ private getCanvas;
109
+ private getCanvasSelectionContext;
110
+ /**
111
+ * Get the currently highlighted element from the canvas.
112
+ */
113
+ getHighlightedElement(): HTMLElement | null;
114
+ /**
115
+ * Set the highlighted element on the canvas.
116
+ * Called when user hovers a row in the timeline.
117
+ */
118
+ setHighlightedElement(element: HTMLElement | null): void;
119
+ get targetTemporal(): TemporalMixinInterface | null;
120
+ get durationMs(): number;
121
+ /** Content width in pixels (derived from duration and pixelsPerMs) */
122
+ get contentWidthPx(): number;
123
+ /** Current zoom as percentage (for display) */
124
+ get zoomPercent(): number;
125
+ /** Derive fps from target temporal (defaults to 30) */
126
+ get fps(): number;
127
+ /** Whether frame markers should be visible at current zoom */
128
+ get showFrameMarkers(): boolean;
129
+ /**
130
+ * Get the root timegroup ID for localStorage key generation.
131
+ * Returns null if no root timegroup is found or it has no ID.
132
+ */
133
+ private getRootTimegroupId;
134
+ /**
135
+ * Get localStorage key for timeline state (zoom and scroll).
136
+ */
137
+ private getTimelineStorageKey;
138
+ /**
139
+ * Save timeline zoom and scroll to localStorage.
140
+ */
141
+ private saveTimelineState;
142
+ /**
143
+ * Restore timeline zoom and scroll from localStorage.
144
+ */
145
+ private restoreTimelineState;
146
+ /**
147
+ * Debounced save of timeline state to avoid excessive localStorage writes.
148
+ */
149
+ private debouncedSaveTimelineState;
150
+ connectedCallback(): void;
151
+ disconnectedCallback(): void;
152
+ /**
153
+ * Setup MutationObserver to watch target element for ANY changes.
154
+ * Re-registers when target changes.
155
+ */
156
+ private setupTargetObserver;
157
+ protected willUpdate(changedProperties: PropertyValues): void;
158
+ protected firstUpdated(): void;
159
+ private setupResizeObserver;
160
+ protected updated(changedProperties: PropertyValues): void;
161
+ private setupSelectionListener;
162
+ private removeSelectionListener;
163
+ private setupScrollListener;
164
+ private removeScrollListener;
165
+ private setupKeyboardListener;
166
+ private removeKeyboardListener;
167
+ /** Margin from edge before auto-scroll kicks in during playback */
168
+ private static readonly PLAYHEAD_MARGIN;
169
+ private lastPlayheadPx;
170
+ private isFollowingPlayhead;
171
+ private startTimeUpdate;
172
+ /**
173
+ * Update playhead position directly via DOM manipulation.
174
+ * This bypasses the Lit render cycle for smooth 60fps playhead movement.
175
+ */
176
+ private updatePlayheadPositionDirect;
177
+ /**
178
+ * Smooth playhead following - scrolls to keep playhead at a fixed screen position.
179
+ * This eliminates jitter by scrolling exactly as much as the playhead moves.
180
+ *
181
+ * PERFORMANCE NOTE: We DO update viewportScrollLeft state here, but the context
182
+ * cascade is prevented in updateTimelineState() during playback. This means:
183
+ * - State stays in sync (for non-context consumers)
184
+ * - But context consumers don't re-render during auto-scroll
185
+ * - Components inside the scroll container scroll natively
186
+ */
187
+ private followPlayhead;
188
+ private stopTimeUpdate;
189
+ /**
190
+ * Subscribe to playback controller events for playing/loop state.
191
+ * This avoids race conditions from polling when targetTemporal changes.
192
+ */
193
+ private subscribeToPlaybackController;
194
+ /**
195
+ * Unsubscribe from playback controller events.
196
+ */
197
+ private unsubscribeFromPlaybackController;
198
+ private handlePlay;
199
+ private handlePause;
200
+ private handleToggleLoop;
201
+ private handleZoomIn;
202
+ private handleZoomOut;
203
+ /**
204
+ * Handle wheel events for gestural zoom.
205
+ * Cmd/Ctrl + wheel zooms toward the cursor position.
206
+ * Without modifier, native scroll behavior is preserved.
207
+ */
208
+ private handleWheel;
209
+ /**
210
+ * Seek to a specific time, optionally quantizing to frame boundaries.
211
+ * @param timeMs The raw time to seek to
212
+ * @param snapToFrame Whether to quantize to the nearest frame boundary (default: true when frame markers visible)
213
+ */
214
+ private handleSeek;
215
+ /**
216
+ * Handle keyboard navigation for frame-by-frame or second-by-second movement.
217
+ * - Arrow Left/Right: move by one frame
218
+ * - Shift+Arrow Left/Right: move by one second
219
+ */
220
+ private handleKeyDown;
221
+ private handleRulerPointerDown;
222
+ private handlePlayheadPointerDown;
223
+ /** Hierarchy panel width - must match CSS --timeline-hierarchy-width */
224
+ private static readonly HIERARCHY_WIDTH;
225
+ private handleTracksPointerDown;
226
+ /** Edge scroll zone width in pixels */
227
+ private static readonly EDGE_SCROLL_ZONE;
228
+ /** Base scroll speed in pixels per frame */
229
+ private static readonly EDGE_SCROLL_SPEED;
230
+ private startPlayheadDrag;
231
+ private formatTime;
232
+ private renderPlaybackControls;
233
+ private renderTimeDisplay;
234
+ private renderZoomControls;
235
+ /**
236
+ * Calculate frame highlight bounds (semantics).
237
+ * Returns null if frame markers aren't visible or duration is invalid.
238
+ */
239
+ private calculateFrameHighlightBounds;
240
+ /**
241
+ * Render frame highlight (mechanism).
242
+ * Shows the current frame as a rectangle to indicate frames have duration.
243
+ * Only rendered when frame markers are visible (zoom level high enough).
244
+ */
245
+ private renderFrameHighlight;
246
+ private renderControls;
247
+ private handleTrimChange;
248
+ /**
249
+ * Handle row hover events - update canvas highlighted element.
250
+ */
251
+ private handleRowHover;
252
+ /**
253
+ * Handle row selection events - update selection context.
254
+ */
255
+ private handleRowSelect;
256
+ /**
257
+ * Render timeline rows using flattened hierarchy.
258
+ * Each row is a unified component with both label and track.
259
+ */
260
+ private renderRows;
261
+ render(): TemplateResult<1>;
262
+ }
263
+ declare global {
264
+ interface HTMLElementTagNameMap {
265
+ "ef-timeline": EFTimeline;
266
+ }
267
+ }
268
+ //#endregion
269
+ export { EFTimeline };
270
+ //# sourceMappingURL=EFTimeline.d.ts.map