@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
package/LICENSE.md ADDED
@@ -0,0 +1,58 @@
1
+ # Editframe SDK License
2
+
3
+ The Editframe SDK is source-available and free for individuals and small teams, including for commercial use. We've kept the bar low intentionally — if you're building something, you should be able to just use it.
4
+
5
+ - [Free Tier](#free-tier)
6
+ - [Paid Tiers](#paid-tiers)
7
+
8
+ ---
9
+
10
+ ## Free Tier
11
+
12
+ Copyright © 2026 [Editframe](https://editframe.com)
13
+
14
+ ### Who Qualifies
15
+
16
+ - Individuals and freelancers
17
+ - Organizations with 3 or fewer total employees
18
+ - Non-profits and not-for-profit organizations (any size)
19
+ - Accredited educational institutions
20
+ - Organizations evaluating Editframe in good faith, prior to commercial deployment (30 days)
21
+
22
+ ### What You Can Build
23
+
24
+ Use and modify the SDK to build any product that creates, processes, or delivers video — editors, workflows, motion design tools, content automation, and more. Platforms, coding environments, vibe coding tools, and AI agents may freely integrate the SDK. End users are each responsible for their own license compliance.
25
+
26
+ ### What Is Not Permitted
27
+
28
+ You may not offer the Client-Side SDK or CLI itself as a managed rendering API or infrastructure product to third parties. You may not sell, sublicense, or redistribute the SDK or modifications to it as a standalone product.
29
+
30
+ ### Warranty
31
+
32
+ The SDK is provided as-is without warranty of any kind. See the [Full License Agreement](./LICENSE-FULL.md) for complete terms.
33
+
34
+ ---
35
+
36
+ ## Paid Tiers
37
+
38
+ Organizations outside the Free Tier must subscribe to a paid plan.
39
+
40
+ | Tier | Employees |
41
+ | :---- | :---- |
42
+ | Team | 4–10 |
43
+ | Cloud | 11–20, or any size needing Cloud Rendering & Player |
44
+ | Enterprise | 21+ |
45
+
46
+ All paid tiers include full SDK rights.
47
+
48
+ Cloud Rendering & Player — parallel rendering and CDN streaming optimized for editing workflows — requires a Cloud Tier subscription regardless of company size.
49
+
50
+ [View pricing →](https://editframe.com/pricing) · Enterprise: [hello@editframe.com](mailto:hello@editframe.com)
51
+
52
+ ---
53
+
54
+ Unsure which tier applies? See the [FAQ](https://editframe.com/faq) or reach out at [hello@editframe.com](mailto:hello@editframe.com).
55
+
56
+ [Full License Agreement](./LICENSE-FULL.md) · [Terms of Service](https://editframe.com/terms)
57
+
58
+ *© 2026 Editframe, Inc.*
@@ -111,7 +111,7 @@ var DelayedLoadingState = class {
111
111
  }
112
112
  }
113
113
  };
114
-
115
114
  //#endregion
116
115
  export { DelayedLoadingState };
116
+
117
117
  //# sourceMappingURL=DelayedLoadingState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DelayedLoadingState.js","names":[],"sources":["../src/DelayedLoadingState.ts"],"sourcesContent":["interface LoadingOperation {\n id: string;\n message: string;\n startTime: number;\n timeout?: NodeJS.Timeout;\n isBackground: boolean;\n}\n\ninterface LoadingOptions {\n background?: boolean;\n}\n\nexport class DelayedLoadingState {\n private operations = new Map<string, LoadingOperation>();\n private loadingDelayMs: number;\n private isCurrentlyLoading = false;\n private currentMessage = \"\";\n private onStateChange?: (isLoading: boolean, message: string) => void;\n\n constructor(delayMs = 250, onStateChange?: (isLoading: boolean, message: string) => void) {\n this.loadingDelayMs = delayMs;\n this.onStateChange = onStateChange;\n }\n\n /**\n * Start a delayed loading operation\n */\n startLoading(operationId: string, message: string, options: LoadingOptions = {}): void {\n const isBackground = options.background || false;\n\n // Clear existing timeout for this operation if it exists\n const existingOp = this.operations.get(operationId);\n if (existingOp?.timeout) {\n clearTimeout(existingOp.timeout);\n }\n\n // Don't create timeout for background operations\n if (isBackground) {\n this.operations.set(operationId, {\n id: operationId,\n message,\n startTime: Date.now(),\n isBackground: true,\n });\n return;\n }\n\n // Create timeout to show loading after delay\n const timeout = setTimeout(() => {\n // Only trigger if operation still exists and is not background\n const operation = this.operations.get(operationId);\n if (operation && !operation.isBackground) {\n this.triggerLoadingState();\n }\n }, this.loadingDelayMs);\n\n this.operations.set(operationId, {\n id: operationId,\n message,\n startTime: Date.now(),\n timeout,\n isBackground: false,\n });\n }\n\n /**\n * Clear a loading operation\n */\n clearLoading(operationId: string): void {\n const operation = this.operations.get(operationId);\n if (!operation) return;\n\n // Clear timeout if it exists\n if (operation.timeout) {\n clearTimeout(operation.timeout);\n }\n\n this.operations.delete(operationId);\n\n // Update loading state\n this.updateLoadingState();\n }\n\n /**\n * Clear all loading operations\n */\n clearAllLoading(): void {\n for (const operation of this.operations.values()) {\n if (operation.timeout) {\n clearTimeout(operation.timeout);\n }\n }\n this.operations.clear();\n this.updateLoadingState();\n }\n\n /**\n * Get current loading state\n */\n get isLoading(): boolean {\n return this.isCurrentlyLoading;\n }\n\n /**\n * Get current loading message\n */\n get message(): string {\n return this.currentMessage;\n }\n\n /**\n * Check if any non-background operations are active\n */\n private hasActiveOperations(): boolean {\n for (const operation of this.operations.values()) {\n if (!operation.isBackground) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Get the message for the most recent non-background operation\n */\n private getCurrentMessage(): string {\n let latestTime = 0;\n let latestMessage = \"\";\n\n for (const operation of this.operations.values()) {\n if (!operation.isBackground && operation.startTime > latestTime) {\n latestTime = operation.startTime;\n latestMessage = operation.message;\n }\n }\n\n return latestMessage;\n }\n\n /**\n * Trigger loading state (called by timeout)\n */\n private triggerLoadingState(): void {\n if (this.hasActiveOperations() && !this.isCurrentlyLoading) {\n this.isCurrentlyLoading = true;\n this.currentMessage = this.getCurrentMessage();\n this.onStateChange?.(true, this.currentMessage);\n }\n }\n\n /**\n * Update loading state based on current operations\n */\n private updateLoadingState(): void {\n const shouldBeLoading = this.hasActiveOperations();\n\n if (shouldBeLoading !== this.isCurrentlyLoading) {\n this.isCurrentlyLoading = shouldBeLoading;\n\n if (shouldBeLoading) {\n this.currentMessage = this.getCurrentMessage();\n this.onStateChange?.(true, this.currentMessage);\n } else {\n this.currentMessage = \"\";\n this.onStateChange?.(false, \"\");\n }\n }\n }\n}\n"],"mappings":";AAYA,IAAa,sBAAb,MAAiC;CAO/B,YAAY,UAAU,KAAK,eAA+D;oCANrE,IAAI,KAA+B;4BAE3B;wBACJ;AAIvB,OAAK,iBAAiB;AACtB,OAAK,gBAAgB;;;;;CAMvB,aAAa,aAAqB,SAAiB,UAA0B,EAAE,EAAQ;EACrF,MAAM,eAAe,QAAQ,cAAc;EAG3C,MAAM,aAAa,KAAK,WAAW,IAAI,YAAY;AACnD,MAAI,YAAY,QACd,cAAa,WAAW,QAAQ;AAIlC,MAAI,cAAc;AAChB,QAAK,WAAW,IAAI,aAAa;IAC/B,IAAI;IACJ;IACA,WAAW,KAAK,KAAK;IACrB,cAAc;IACf,CAAC;AACF;;EAIF,MAAM,UAAU,iBAAiB;GAE/B,MAAM,YAAY,KAAK,WAAW,IAAI,YAAY;AAClD,OAAI,aAAa,CAAC,UAAU,aAC1B,MAAK,qBAAqB;KAE3B,KAAK,eAAe;AAEvB,OAAK,WAAW,IAAI,aAAa;GAC/B,IAAI;GACJ;GACA,WAAW,KAAK,KAAK;GACrB;GACA,cAAc;GACf,CAAC;;;;;CAMJ,aAAa,aAA2B;EACtC,MAAM,YAAY,KAAK,WAAW,IAAI,YAAY;AAClD,MAAI,CAAC,UAAW;AAGhB,MAAI,UAAU,QACZ,cAAa,UAAU,QAAQ;AAGjC,OAAK,WAAW,OAAO,YAAY;AAGnC,OAAK,oBAAoB;;;;;CAM3B,kBAAwB;AACtB,OAAK,MAAM,aAAa,KAAK,WAAW,QAAQ,CAC9C,KAAI,UAAU,QACZ,cAAa,UAAU,QAAQ;AAGnC,OAAK,WAAW,OAAO;AACvB,OAAK,oBAAoB;;;;;CAM3B,IAAI,YAAqB;AACvB,SAAO,KAAK;;;;;CAMd,IAAI,UAAkB;AACpB,SAAO,KAAK;;;;;CAMd,AAAQ,sBAA+B;AACrC,OAAK,MAAM,aAAa,KAAK,WAAW,QAAQ,CAC9C,KAAI,CAAC,UAAU,aACb,QAAO;AAGX,SAAO;;;;;CAMT,AAAQ,oBAA4B;EAClC,IAAI,aAAa;EACjB,IAAI,gBAAgB;AAEpB,OAAK,MAAM,aAAa,KAAK,WAAW,QAAQ,CAC9C,KAAI,CAAC,UAAU,gBAAgB,UAAU,YAAY,YAAY;AAC/D,gBAAa,UAAU;AACvB,mBAAgB,UAAU;;AAI9B,SAAO;;;;;CAMT,AAAQ,sBAA4B;AAClC,MAAI,KAAK,qBAAqB,IAAI,CAAC,KAAK,oBAAoB;AAC1D,QAAK,qBAAqB;AAC1B,QAAK,iBAAiB,KAAK,mBAAmB;AAC9C,QAAK,gBAAgB,MAAM,KAAK,eAAe;;;;;;CAOnD,AAAQ,qBAA2B;EACjC,MAAM,kBAAkB,KAAK,qBAAqB;AAElD,MAAI,oBAAoB,KAAK,oBAAoB;AAC/C,QAAK,qBAAqB;AAE1B,OAAI,iBAAiB;AACnB,SAAK,iBAAiB,KAAK,mBAAmB;AAC9C,SAAK,gBAAgB,MAAM,KAAK,eAAe;UAC1C;AACL,SAAK,iBAAiB;AACtB,SAAK,gBAAgB,OAAO,GAAG"}
1
+ {"version":3,"file":"DelayedLoadingState.js","names":[],"sources":["../src/DelayedLoadingState.ts"],"mappings":";AAYA,IAAa,sBAAb,MAAiC;CAO/B,YAAY,UAAU,KAAK,eAA+D;oCANrE,IAAI,KAA+B;4BAE3B;wBACJ;AAIvB,OAAK,iBAAiB;AACtB,OAAK,gBAAgB;;;;;CAMvB,aAAa,aAAqB,SAAiB,UAA0B,EAAE,EAAQ;EACrF,MAAM,eAAe,QAAQ,cAAc;EAG3C,MAAM,aAAa,KAAK,WAAW,IAAI,YAAY;AACnD,MAAI,YAAY,QACd,cAAa,WAAW,QAAQ;AAIlC,MAAI,cAAc;AAChB,QAAK,WAAW,IAAI,aAAa;IAC/B,IAAI;IACJ;IACA,WAAW,KAAK,KAAK;IACrB,cAAc;IACf,CAAC;AACF;;EAIF,MAAM,UAAU,iBAAiB;GAE/B,MAAM,YAAY,KAAK,WAAW,IAAI,YAAY;AAClD,OAAI,aAAa,CAAC,UAAU,aAC1B,MAAK,qBAAqB;KAE3B,KAAK,eAAe;AAEvB,OAAK,WAAW,IAAI,aAAa;GAC/B,IAAI;GACJ;GACA,WAAW,KAAK,KAAK;GACrB;GACA,cAAc;GACf,CAAC;;;;;CAMJ,aAAa,aAA2B;EACtC,MAAM,YAAY,KAAK,WAAW,IAAI,YAAY;AAClD,MAAI,CAAC,UAAW;AAGhB,MAAI,UAAU,QACZ,cAAa,UAAU,QAAQ;AAGjC,OAAK,WAAW,OAAO,YAAY;AAGnC,OAAK,oBAAoB;;;;;CAM3B,kBAAwB;AACtB,OAAK,MAAM,aAAa,KAAK,WAAW,QAAQ,CAC9C,KAAI,UAAU,QACZ,cAAa,UAAU,QAAQ;AAGnC,OAAK,WAAW,OAAO;AACvB,OAAK,oBAAoB;;;;;CAM3B,IAAI,YAAqB;AACvB,SAAO,KAAK;;;;;CAMd,IAAI,UAAkB;AACpB,SAAO,KAAK;;;;;CAMd,sBAAuC;AACrC,OAAK,MAAM,aAAa,KAAK,WAAW,QAAQ,CAC9C,KAAI,CAAC,UAAU,aACb,QAAO;AAGX,SAAO;;;;;CAMT,oBAAoC;EAClC,IAAI,aAAa;EACjB,IAAI,gBAAgB;AAEpB,OAAK,MAAM,aAAa,KAAK,WAAW,QAAQ,CAC9C,KAAI,CAAC,UAAU,gBAAgB,UAAU,YAAY,YAAY;AAC/D,gBAAa,UAAU;AACvB,mBAAgB,UAAU;;AAI9B,SAAO;;;;;CAMT,sBAAoC;AAClC,MAAI,KAAK,qBAAqB,IAAI,CAAC,KAAK,oBAAoB;AAC1D,QAAK,qBAAqB;AAC1B,QAAK,iBAAiB,KAAK,mBAAmB;AAC9C,QAAK,gBAAgB,MAAM,KAAK,eAAe;;;;;;CAOnD,qBAAmC;EACjC,MAAM,kBAAkB,KAAK,qBAAqB;AAElD,MAAI,oBAAoB,KAAK,oBAAoB;AAC/C,QAAK,qBAAqB;AAE1B,OAAI,iBAAiB;AACnB,SAAK,iBAAiB,KAAK,mBAAmB;AAC9C,SAAK,gBAAgB,MAAM,KAAK,eAAe;UAC1C;AACL,SAAK,iBAAiB;AACtB,SAAK,gBAAgB,OAAO,GAAG"}
@@ -2,7 +2,6 @@ import { clearCurrentFrameSpan, enableTracing, extractParentContext, setCurrentF
2
2
  import { shallowGetTimegroups } from "./elements/EFTimegroup.js";
3
3
  import { setupTemporalHierarchy } from "./elements/setupTemporalHierarchy.js";
4
4
  import { setupBrowserTracing } from "./otel/setupBrowserTracing.js";
5
-
6
5
  //#region src/EF_FRAMEGEN.ts
7
6
  var TriggerCanvas = class {
8
7
  constructor() {
@@ -266,6 +265,6 @@ var EFFramegen = class {
266
265
  }
267
266
  };
268
267
  if (typeof window !== "undefined") window.EF_FRAMEGEN = new EFFramegen();
269
-
270
268
  //#endregion
269
+
271
270
  //# sourceMappingURL=EF_FRAMEGEN.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EF_FRAMEGEN.js","names":[],"sources":["../src/EF_FRAMEGEN.ts"],"sourcesContent":["import type { VideoRenderOptions } from \"@editframe/assets\";\n\nimport { shallowGetTimegroups, type SeekForRenderTiming } from \"./elements/EFTimegroup.js\";\nimport { setupTemporalHierarchy } from \"./elements/setupTemporalHierarchy.js\";\n\nimport { setupBrowserTracing } from \"./otel/setupBrowserTracing.js\";\nimport {\n clearCurrentFrameSpan,\n enableTracing,\n extractParentContext,\n setCurrentFrameSpan,\n type TraceContext,\n withSpan,\n withSpanAndContext,\n} from \"./otel/tracingHelpers.js\";\n\ninterface Bridge {\n onInitialize: (\n callback: (\n renderOptions: VideoRenderOptions,\n traceContext?: TraceContext,\n otelEndpoint?: string,\n ) => void,\n ) => void;\n\n initialized(): void;\n\n onBeginFrame(\n callback: (frameNumber: number, isLast: boolean, traceContext?: TraceContext) => void,\n ): void;\n\n onTriggerCanvas(callback: (traceContext?: TraceContext) => void): void;\n\n frameReady(frameNumber: number, audioSamples: ArrayBuffer): void;\n\n error(error: Error): void;\n\n syncLog(sequence: number, message: string, callback: () => void): void;\n\n exportSpans?: (endpoint: string, payload: string) => void;\n}\n\ndeclare global {\n interface Window {\n EF_FRAMEGEN?: EFFramegen;\n FRAMEGEN_BRIDGE?: Bridge;\n FRAMEGEN_BINDING?: any;\n FRAMEGEN_BINDING_error?: (error: Error) => void;\n EF_RENDERING?: () => boolean;\n }\n}\n\nclass TriggerCanvas {\n private canvas: HTMLCanvasElement;\n private ctx: CanvasRenderingContext2D;\n\n private canvasInitialized = false;\n\n constructor() {\n this.canvas = document.createElement(\"canvas\");\n const ctx = this.canvas.getContext(\"2d\", { willReadFrequently: true });\n if (!ctx) throw new Error(\"Canvas 2d context not ready\");\n this.ctx = ctx;\n this.ctx.fillStyle = \"transparent\";\n }\n\n initialize() {\n if (this.canvasInitialized) return;\n this.canvasInitialized = true;\n this.canvas.width = 1;\n this.canvas.height = 1;\n Object.assign(this.canvas.style, {\n position: \"fixed\",\n top: \"0px\",\n left: \"0px\",\n width: \"100%\",\n height: \"100%\",\n zIndex: \"100000\",\n });\n document.body.appendChild(this.canvas);\n }\n\n trigger() {\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n}\n\nexport class EFFramegen {\n time = 0;\n frameDurationMs = 0;\n audioBufferPromise?: Promise<AudioBuffer>;\n renderOptions?: VideoRenderOptions;\n frameBox = document.createElement(\"div\");\n BRIDGE: typeof window.FRAMEGEN_BRIDGE;\n triggerCanvas = new TriggerCanvas();\n verificationCanvas?: HTMLCanvasElement;\n verificationCtx?: CanvasRenderingContext2D;\n private logSequence = 0;\n\n // Frame sequence coordination\n public frameTasksInProgress = false;\n public currentFrameNumber = 0;\n\n // Per-phase timing accumulators (reset every 30 frames)\n private timingFrameCount = 0;\n private timingAccum: SeekForRenderTiming = {\n updateComplete1Ms: 0,\n updateComplete2Ms: 0,\n updateComplete3Ms: 0,\n textSegmentsMs: 0,\n renderFrameMs: 0,\n renderFrameQueryMs: 0,\n renderFramePrepareMs: 0,\n renderFrameDrawMs: 0,\n renderFrameAnimsMs: 0,\n frameTasksMs: 0,\n totalMs: 0,\n };\n\n trace(...args: any[]) {\n console.trace(\"[EF_FRAMEGEN]\", ...args);\n }\n\n async syncLog(...args: any[]): Promise<void> {\n if (!this.BRIDGE) {\n // Fallback to regular console.log if no bridge\n console.log(\"[EF_FRAMEGEN]\", ...args);\n return;\n }\n\n const sequence = ++this.logSequence;\n const message = args\n .map((arg) => (typeof arg === \"object\" ? JSON.stringify(arg) : String(arg)))\n .join(\" \");\n\n return new Promise<void>((resolve) => {\n // biome-ignore lint/style/noNonNullAssertion: We know BRIDGE is set due to the guard above\n this.BRIDGE!.syncLog(sequence, message, () => {\n resolve();\n });\n });\n }\n\n private initializeVerificationCanvas() {\n if (this.verificationCanvas) {\n return;\n }\n\n this.verificationCanvas = document.createElement(\"canvas\");\n const ctx = this.verificationCanvas.getContext(\"2d\");\n if (!ctx) throw new Error(\"Verification canvas 2d context not ready\");\n this.verificationCtx = ctx;\n\n // Size to match the workbench width, or fall back to renderOptions dimensions.\n // Without ef-workbench (e.g. API renders), the canvas was never sized or appended,\n // causing frame verification to fail on every frame.\n const workbench = document.querySelector(\"ef-workbench\") as HTMLElement;\n const canvasWidth = workbench\n ? workbench.clientWidth\n : (this.renderOptions?.encoderOptions.video.width ?? 0);\n\n if (canvasWidth > 0) {\n this.verificationCanvas.width = canvasWidth;\n this.verificationCanvas.height = 1;\n\n Object.assign(this.verificationCanvas.style, {\n position: \"fixed\",\n left: \"0px\",\n bottom: \"0px\",\n width: `${canvasWidth}px`,\n height: \"1px\",\n zIndex: \"99999\",\n });\n\n document.body.appendChild(this.verificationCanvas);\n }\n }\n\n private drawVerificationStrip(frameNumber: number) {\n this.initializeVerificationCanvas();\n\n if (!this.verificationCanvas || !this.verificationCtx) {\n return;\n }\n\n const width = this.verificationCanvas.width;\n const height = this.verificationCanvas.height;\n\n // Clear the strip\n this.verificationCtx.clearRect(0, 0, width, height);\n\n // Encode frame number into RGB (24-bit)\n // R=high byte, G=middle byte, B=low byte\n const red = Math.floor(frameNumber / (256 * 256)) % 256;\n const green = Math.floor(frameNumber / 256) % 256;\n const blue = frameNumber % 256;\n\n // Fill the entire strip with the encoded frame number\n this.verificationCtx.fillStyle = `rgb(${red}, ${green}, ${blue})`;\n this.verificationCtx.fillRect(0, 0, width, height);\n }\n\n constructor() {\n this.BRIDGE = window.FRAMEGEN_BRIDGE;\n if (this.BRIDGE) {\n this.connectToBridge();\n }\n }\n\n /**\n * Helper method to get the workbench and set its rendering state.\n * This ensures consistent state management across the framegen lifecycle.\n */\n private setWorkbenchRendering(isRendering: boolean) {\n const workbench = document.querySelector(\"ef-workbench\");\n if (workbench) {\n workbench.rendering = isRendering;\n }\n }\n\n connectToBridge() {\n const BRIDGE = this.BRIDGE;\n if (!BRIDGE) {\n throw new Error(\"No BRIDGE when attempting to connect to bridge\");\n }\n\n BRIDGE.onInitialize(async (renderOptions, traceContext, otelEndpoint) => {\n // Only enable tracing if explicitly requested in renderOptions\n if (renderOptions.enableTracing && otelEndpoint) {\n enableTracing();\n await setupBrowserTracing({\n otelEndpoint,\n serviceName: \"telecine-browser\",\n bridge: BRIDGE,\n useBatching: true, // Batch spans to reduce overhead during rendering\n });\n }\n\n const parentContext = extractParentContext(traceContext);\n\n await withSpan(\n \"browser.initialize\",\n {\n width: renderOptions.encoderOptions.video.width,\n height: renderOptions.encoderOptions.video.height,\n fps: renderOptions.encoderOptions.video.framerate,\n durationMs: renderOptions.encoderOptions.toMs - renderOptions.encoderOptions.fromMs,\n },\n parentContext,\n async () => {\n try {\n await this.initialize(renderOptions);\n } catch (error) {\n // If initialization fails, ensure rendering state is cleared\n this.setWorkbenchRendering(false);\n console.error(\"[EF_FRAMEGEN.connectToBridge] error initializing\", error);\n throw error;\n }\n },\n );\n\n BRIDGE.initialized();\n });\n\n BRIDGE.onBeginFrame((frameNumber, isLast, traceContext) => {\n const parentContext = extractParentContext(traceContext);\n withSpanAndContext(\n \"browser.frame.render\",\n {\n frameNumber,\n isLast,\n },\n parentContext,\n async (span, _spanContext) => {\n // Store the span itself for child operations\n // This allows spans created in Lit Tasks to use it as their parent\n setCurrentFrameSpan(span);\n\n try {\n await this.beginFrame(frameNumber, isLast);\n } catch (error) {\n // If an error occurs during rendering, ensure rendering state is cleared\n this.setWorkbenchRendering(false);\n throw error;\n } finally {\n clearCurrentFrameSpan();\n }\n },\n ).catch((error) => {\n console.error(\"[EF_FRAMEGEN.beginFrame] error:\", error);\n // Ensure rendering state is cleared on error\n this.setWorkbenchRendering(false);\n clearCurrentFrameSpan();\n throw error;\n });\n });\n\n BRIDGE.onTriggerCanvas((traceContext) => {\n const parentContext = extractParentContext(traceContext);\n\n withSpan(\"browser.canvas.trigger\", {}, parentContext, async () => {\n this.triggerCanvas.trigger();\n }).catch((error) => {\n console.error(\"[EF_FRAMEGEN.triggerCanvas] error:\", error);\n });\n });\n }\n\n get showFrameBox() {\n return this.renderOptions?.showFrameBox ?? false;\n }\n\n async initialize(renderOptions: VideoRenderOptions) {\n this.renderOptions = renderOptions;\n\n // Workbench is optional - look for it but don't require it\n const workbench = document.querySelector(\"ef-workbench\");\n if (workbench) {\n this.setWorkbenchRendering(true);\n workbench.playing = false;\n }\n\n // Find timegroups either in workbench or directly in document\n const searchRoot = workbench || document.body;\n const timegroups = shallowGetTimegroups(searchRoot);\n const firstGroup = timegroups[0];\n if (!firstGroup) {\n throw new Error(\"No temporal elements found\");\n }\n const startingTimeMs = renderOptions.encoderOptions.fromMs;\n await firstGroup.waitForMediaDurations();\n\n // CRITICAL: Manually wire up temporal hierarchy since Lit Context fails with our connection order\n // When loading via loadURL(), elements connect depth-first (children before parents), causing\n // children to miss the context-request event since parents aren't listening yet.\n // See setupTemporalHierarchy.ts for detailed explanation.\n setupTemporalHierarchy(searchRoot, firstGroup);\n\n // Suppress autonomous re-renders (EFTemporal/EFTimegroup.updated) while\n // seekForRender is in progress — same protection applied to render clones.\n firstGroup.setAttribute(\"data-no-playback-controller\", \"\");\n\n // Use seekForRender for proper time seeking during rendering\n await firstGroup.seekForRender(startingTimeMs);\n\n this.frameDurationMs = 1000 / renderOptions.encoderOptions.video.framerate;\n\n this.time = startingTimeMs;\n if (this.showFrameBox) {\n Object.assign(this.frameBox.style, {\n width: \"200px\",\n height: \"100px\",\n font: \"10px Arial\",\n backgroundColor: \"white\",\n position: \"absolute\",\n top: \"0px\",\n right: \"0px\",\n zIndex: \"100000\",\n });\n document.body.prepend(this.frameBox);\n }\n\n this.triggerCanvas.initialize();\n\n // These times are aligned to the audio frame boundaries\n // And they include padding if any.\n this.audioBufferPromise = firstGroup.renderAudio(\n renderOptions.encoderOptions.alignedFromUs / 1000,\n renderOptions.encoderOptions.alignedToUs / 1000,\n );\n // Suppress unhandled rejection while the promise sits in storage before being awaited.\n this.audioBufferPromise.catch(() => {});\n }\n\n async beginFrame(frameNumber: number, isLast: boolean) {\n if (this.renderOptions === undefined) {\n throw new Error(\"No renderOptions\");\n }\n const workbench = document.querySelector(\"ef-workbench\");\n if (workbench) {\n this.setWorkbenchRendering(true);\n }\n const searchRoot = workbench || document.body;\n const timegroups = shallowGetTimegroups(searchRoot);\n const firstGroup = timegroups[0];\n if (!firstGroup) {\n throw new Error(\"No temporal elements found\");\n }\n\n // Calculate base frame time using normal progression\n const frameTime = this.renderOptions.encoderOptions.fromMs + frameNumber * this.frameDurationMs;\n const frameTimeMs = Number(Number(frameTime).toFixed(5));\n\n // Use seekForRender for proper time seeking during rendering\n const timing = await firstGroup.seekForRender(frameTimeMs);\n this.timingFrameCount++;\n for (const key of Object.keys(this.timingAccum) as (keyof SeekForRenderTiming)[]) {\n this.timingAccum[key] += timing[key];\n }\n if (this.timingFrameCount >= 30) {\n const n = this.timingFrameCount;\n console.log(\n `[EF_FRAMEGEN] seekForRender phase avg (${n} frames):`,\n `total=${(this.timingAccum.totalMs / n).toFixed(1)}ms`,\n `uc1=${(this.timingAccum.updateComplete1Ms / n).toFixed(1)}ms`,\n `uc2=${(this.timingAccum.updateComplete2Ms / n).toFixed(1)}ms`,\n `uc3=${(this.timingAccum.updateComplete3Ms / n).toFixed(1)}ms`,\n `text=${(this.timingAccum.textSegmentsMs / n).toFixed(1)}ms`,\n `renderFrame=${(this.timingAccum.renderFrameMs / n).toFixed(1)}ms`,\n `rf.query=${(this.timingAccum.renderFrameQueryMs / n).toFixed(1)}ms`,\n `rf.prepare=${(this.timingAccum.renderFramePrepareMs / n).toFixed(1)}ms`,\n `rf.draw=${(this.timingAccum.renderFrameDrawMs / n).toFixed(1)}ms`,\n `rf.anims=${(this.timingAccum.renderFrameAnimsMs / n).toFixed(1)}ms`,\n `frameTasks=${(this.timingAccum.frameTasksMs / n).toFixed(1)}ms`,\n );\n this.timingFrameCount = 0;\n for (const key of Object.keys(this.timingAccum) as (keyof SeekForRenderTiming)[]) {\n this.timingAccum[key] = 0;\n }\n }\n if (this.showFrameBox) {\n this.frameBox.innerHTML = `\n <div>🖼️ Frame: ${frameNumber}</div>\n <div>🕛 Segment: ${this.time.toFixed(4)}</div>\n <div>🕛 Frame: ${firstGroup.currentTimeMs.toFixed(4)}</div>\n <div> from-to: ${this.renderOptions.encoderOptions.fromMs.toFixed(4)} - ${this.renderOptions.encoderOptions.toMs.toFixed(4)}</div>\n `;\n }\n\n // Draw verification pixel strip for frame verification\n this.drawVerificationStrip(frameNumber);\n\n if (isLast && this.audioBufferPromise) {\n // Currently we emit the audio in one belch at the end of the render.\n // This is not ideal, but it's the simplest thing that could possibly work.\n // We could either emit it slices, or in parallel with the video.\n // But in any case, it's fine for now.\n const renderedAudio = await this.audioBufferPromise;\n\n const channelCount = renderedAudio.numberOfChannels;\n\n const interleavedSamples = new Float32Array(channelCount * renderedAudio.length);\n\n for (let i = 0; i < renderedAudio.length; i++) {\n for (let j = 0; j < channelCount; j++) {\n interleavedSamples.set(\n renderedAudio.getChannelData(j).slice(i, i + 1),\n i * channelCount + j,\n );\n }\n }\n\n if (this.BRIDGE) {\n this.BRIDGE.frameReady(frameNumber, interleavedSamples.buffer);\n } else {\n const fileReader = new FileReader();\n fileReader.readAsDataURL(new Blob([interleavedSamples.buffer]));\n await new Promise((resolve, reject) => {\n fileReader.onload = resolve;\n fileReader.onerror = reject;\n });\n return fileReader.result;\n }\n\n // Rendering is complete after the last frame\n this.setWorkbenchRendering(false);\n } else {\n if (this.BRIDGE) {\n this.BRIDGE.frameReady(frameNumber, new ArrayBuffer(0));\n } else {\n const fileReader = new FileReader();\n fileReader.readAsDataURL(new Blob([]));\n await new Promise((resolve, reject) => {\n fileReader.onload = resolve;\n fileReader.onerror = reject;\n });\n return fileReader.result;\n }\n }\n }\n}\n\nif (typeof window !== \"undefined\") {\n window.EF_FRAMEGEN = new EFFramegen();\n}\n"],"mappings":";;;;;;AAoDA,IAAM,gBAAN,MAAoB;CAMlB,cAAc;2BAFc;AAG1B,OAAK,SAAS,SAAS,cAAc,SAAS;EAC9C,MAAM,MAAM,KAAK,OAAO,WAAW,MAAM,EAAE,oBAAoB,MAAM,CAAC;AACtE,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,8BAA8B;AACxD,OAAK,MAAM;AACX,OAAK,IAAI,YAAY;;CAGvB,aAAa;AACX,MAAI,KAAK,kBAAmB;AAC5B,OAAK,oBAAoB;AACzB,OAAK,OAAO,QAAQ;AACpB,OAAK,OAAO,SAAS;AACrB,SAAO,OAAO,KAAK,OAAO,OAAO;GAC/B,UAAU;GACV,KAAK;GACL,MAAM;GACN,OAAO;GACP,QAAQ;GACR,QAAQ;GACT,CAAC;AACF,WAAS,KAAK,YAAY,KAAK,OAAO;;CAGxC,UAAU;AACR,OAAK,IAAI,UAAU,GAAG,GAAG,KAAK,OAAO,OAAO,KAAK,OAAO,OAAO;;;AAInE,IAAa,aAAb,MAAwB;CAgCtB,MAAM,GAAG,MAAa;AACpB,UAAQ,MAAM,iBAAiB,GAAG,KAAK;;CAGzC,MAAM,QAAQ,GAAG,MAA4B;AAC3C,MAAI,CAAC,KAAK,QAAQ;AAEhB,WAAQ,IAAI,iBAAiB,GAAG,KAAK;AACrC;;EAGF,MAAM,WAAW,EAAE,KAAK;EACxB,MAAM,UAAU,KACb,KAAK,QAAS,OAAO,QAAQ,WAAW,KAAK,UAAU,IAAI,GAAG,OAAO,IAAI,CAAE,CAC3E,KAAK,IAAI;AAEZ,SAAO,IAAI,SAAe,YAAY;AAEpC,QAAK,OAAQ,QAAQ,UAAU,eAAe;AAC5C,aAAS;KACT;IACF;;CAGJ,AAAQ,+BAA+B;AACrC,MAAI,KAAK,mBACP;AAGF,OAAK,qBAAqB,SAAS,cAAc,SAAS;EAC1D,MAAM,MAAM,KAAK,mBAAmB,WAAW,KAAK;AACpD,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,2CAA2C;AACrE,OAAK,kBAAkB;EAKvB,MAAM,YAAY,SAAS,cAAc,eAAe;EACxD,MAAM,cAAc,YAChB,UAAU,cACT,KAAK,eAAe,eAAe,MAAM,SAAS;AAEvD,MAAI,cAAc,GAAG;AACnB,QAAK,mBAAmB,QAAQ;AAChC,QAAK,mBAAmB,SAAS;AAEjC,UAAO,OAAO,KAAK,mBAAmB,OAAO;IAC3C,UAAU;IACV,MAAM;IACN,QAAQ;IACR,OAAO,GAAG,YAAY;IACtB,QAAQ;IACR,QAAQ;IACT,CAAC;AAEF,YAAS,KAAK,YAAY,KAAK,mBAAmB;;;CAItD,AAAQ,sBAAsB,aAAqB;AACjD,OAAK,8BAA8B;AAEnC,MAAI,CAAC,KAAK,sBAAsB,CAAC,KAAK,gBACpC;EAGF,MAAM,QAAQ,KAAK,mBAAmB;EACtC,MAAM,SAAS,KAAK,mBAAmB;AAGvC,OAAK,gBAAgB,UAAU,GAAG,GAAG,OAAO,OAAO;EAInD,MAAM,MAAM,KAAK,MAAM,eAAe,MAAM,KAAK,GAAG;EACpD,MAAM,QAAQ,KAAK,MAAM,cAAc,IAAI,GAAG;EAC9C,MAAM,OAAO,cAAc;AAG3B,OAAK,gBAAgB,YAAY,OAAO,IAAI,IAAI,MAAM,IAAI,KAAK;AAC/D,OAAK,gBAAgB,SAAS,GAAG,GAAG,OAAO,OAAO;;CAGpD,cAAc;cAlHP;yBACW;kBAGP,SAAS,cAAc,MAAM;uBAExB,IAAI,eAAe;qBAGb;8BAGQ;4BACF;0BAGD;qBACgB;GACzC,mBAAmB;GACnB,mBAAmB;GACnB,mBAAmB;GACnB,gBAAgB;GAChB,eAAe;GACf,oBAAoB;GACpB,sBAAsB;GACtB,mBAAmB;GACnB,oBAAoB;GACpB,cAAc;GACd,SAAS;GACV;AAsFC,OAAK,SAAS,OAAO;AACrB,MAAI,KAAK,OACP,MAAK,iBAAiB;;;;;;CAQ1B,AAAQ,sBAAsB,aAAsB;EAClD,MAAM,YAAY,SAAS,cAAc,eAAe;AACxD,MAAI,UACF,WAAU,YAAY;;CAI1B,kBAAkB;EAChB,MAAM,SAAS,KAAK;AACpB,MAAI,CAAC,OACH,OAAM,IAAI,MAAM,iDAAiD;AAGnE,SAAO,aAAa,OAAO,eAAe,cAAc,iBAAiB;AAEvE,OAAI,cAAc,iBAAiB,cAAc;AAC/C,mBAAe;AACf,UAAM,oBAAoB;KACxB;KACA,aAAa;KACb,QAAQ;KACR,aAAa;KACd,CAAC;;GAGJ,MAAM,gBAAgB,qBAAqB,aAAa;AAExD,SAAM,SACJ,sBACA;IACE,OAAO,cAAc,eAAe,MAAM;IAC1C,QAAQ,cAAc,eAAe,MAAM;IAC3C,KAAK,cAAc,eAAe,MAAM;IACxC,YAAY,cAAc,eAAe,OAAO,cAAc,eAAe;IAC9E,EACD,eACA,YAAY;AACV,QAAI;AACF,WAAM,KAAK,WAAW,cAAc;aAC7B,OAAO;AAEd,UAAK,sBAAsB,MAAM;AACjC,aAAQ,MAAM,oDAAoD,MAAM;AACxE,WAAM;;KAGX;AAED,UAAO,aAAa;IACpB;AAEF,SAAO,cAAc,aAAa,QAAQ,iBAAiB;GACzD,MAAM,gBAAgB,qBAAqB,aAAa;AACxD,sBACE,wBACA;IACE;IACA;IACD,EACD,eACA,OAAO,MAAM,iBAAiB;AAG5B,wBAAoB,KAAK;AAEzB,QAAI;AACF,WAAM,KAAK,WAAW,aAAa,OAAO;aACnC,OAAO;AAEd,UAAK,sBAAsB,MAAM;AACjC,WAAM;cACE;AACR,4BAAuB;;KAG5B,CAAC,OAAO,UAAU;AACjB,YAAQ,MAAM,mCAAmC,MAAM;AAEvD,SAAK,sBAAsB,MAAM;AACjC,2BAAuB;AACvB,UAAM;KACN;IACF;AAEF,SAAO,iBAAiB,iBAAiB;AAGvC,YAAS,0BAA0B,EAAE,EAFf,qBAAqB,aAAa,EAEF,YAAY;AAChE,SAAK,cAAc,SAAS;KAC5B,CAAC,OAAO,UAAU;AAClB,YAAQ,MAAM,sCAAsC,MAAM;KAC1D;IACF;;CAGJ,IAAI,eAAe;AACjB,SAAO,KAAK,eAAe,gBAAgB;;CAG7C,MAAM,WAAW,eAAmC;AAClD,OAAK,gBAAgB;EAGrB,MAAM,YAAY,SAAS,cAAc,eAAe;AACxD,MAAI,WAAW;AACb,QAAK,sBAAsB,KAAK;AAChC,aAAU,UAAU;;EAItB,MAAM,aAAa,aAAa,SAAS;EAEzC,MAAM,aADa,qBAAqB,WAAW,CACrB;AAC9B,MAAI,CAAC,WACH,OAAM,IAAI,MAAM,6BAA6B;EAE/C,MAAM,iBAAiB,cAAc,eAAe;AACpD,QAAM,WAAW,uBAAuB;AAMxC,yBAAuB,YAAY,WAAW;AAI9C,aAAW,aAAa,+BAA+B,GAAG;AAG1D,QAAM,WAAW,cAAc,eAAe;AAE9C,OAAK,kBAAkB,MAAO,cAAc,eAAe,MAAM;AAEjE,OAAK,OAAO;AACZ,MAAI,KAAK,cAAc;AACrB,UAAO,OAAO,KAAK,SAAS,OAAO;IACjC,OAAO;IACP,QAAQ;IACR,MAAM;IACN,iBAAiB;IACjB,UAAU;IACV,KAAK;IACL,OAAO;IACP,QAAQ;IACT,CAAC;AACF,YAAS,KAAK,QAAQ,KAAK,SAAS;;AAGtC,OAAK,cAAc,YAAY;AAI/B,OAAK,qBAAqB,WAAW,YACnC,cAAc,eAAe,gBAAgB,KAC7C,cAAc,eAAe,cAAc,IAC5C;AAED,OAAK,mBAAmB,YAAY,GAAG;;CAGzC,MAAM,WAAW,aAAqB,QAAiB;AACrD,MAAI,KAAK,kBAAkB,OACzB,OAAM,IAAI,MAAM,mBAAmB;EAErC,MAAM,YAAY,SAAS,cAAc,eAAe;AACxD,MAAI,UACF,MAAK,sBAAsB,KAAK;EAIlC,MAAM,aADa,qBADA,aAAa,SAAS,KACU,CACrB;AAC9B,MAAI,CAAC,WACH,OAAM,IAAI,MAAM,6BAA6B;EAI/C,MAAM,YAAY,KAAK,cAAc,eAAe,SAAS,cAAc,KAAK;EAChF,MAAM,cAAc,OAAO,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC;EAGxD,MAAM,SAAS,MAAM,WAAW,cAAc,YAAY;AAC1D,OAAK;AACL,OAAK,MAAM,OAAO,OAAO,KAAK,KAAK,YAAY,CAC7C,MAAK,YAAY,QAAQ,OAAO;AAElC,MAAI,KAAK,oBAAoB,IAAI;GAC/B,MAAM,IAAI,KAAK;AACf,WAAQ,IACN,0CAA0C,EAAE,YAC5C,UAAU,KAAK,YAAY,UAAU,GAAG,QAAQ,EAAE,CAAC,KACnD,QAAQ,KAAK,YAAY,oBAAoB,GAAG,QAAQ,EAAE,CAAC,KAC3D,QAAQ,KAAK,YAAY,oBAAoB,GAAG,QAAQ,EAAE,CAAC,KAC3D,QAAQ,KAAK,YAAY,oBAAoB,GAAG,QAAQ,EAAE,CAAC,KAC3D,SAAS,KAAK,YAAY,iBAAiB,GAAG,QAAQ,EAAE,CAAC,KACzD,gBAAgB,KAAK,YAAY,gBAAgB,GAAG,QAAQ,EAAE,CAAC,KAC/D,aAAa,KAAK,YAAY,qBAAqB,GAAG,QAAQ,EAAE,CAAC,KACjE,eAAe,KAAK,YAAY,uBAAuB,GAAG,QAAQ,EAAE,CAAC,KACrE,YAAY,KAAK,YAAY,oBAAoB,GAAG,QAAQ,EAAE,CAAC,KAC/D,aAAa,KAAK,YAAY,qBAAqB,GAAG,QAAQ,EAAE,CAAC,KACjE,eAAe,KAAK,YAAY,eAAe,GAAG,QAAQ,EAAE,CAAC,IAC9D;AACD,QAAK,mBAAmB;AACxB,QAAK,MAAM,OAAO,OAAO,KAAK,KAAK,YAAY,CAC7C,MAAK,YAAY,OAAO;;AAG5B,MAAI,KAAK,aACP,MAAK,SAAS,YAAY;4BACJ,YAAY;2BACb,KAAK,KAAK,QAAQ,EAAE,CAAC;2BACrB,WAAW,cAAc,QAAQ,EAAE,CAAC;0BACrC,KAAK,cAAc,eAAe,OAAO,QAAQ,EAAE,CAAC,KAAK,KAAK,cAAc,eAAe,KAAK,QAAQ,EAAE,CAAC;;AAKjI,OAAK,sBAAsB,YAAY;AAEvC,MAAI,UAAU,KAAK,oBAAoB;GAKrC,MAAM,gBAAgB,MAAM,KAAK;GAEjC,MAAM,eAAe,cAAc;GAEnC,MAAM,qBAAqB,IAAI,aAAa,eAAe,cAAc,OAAO;AAEhF,QAAK,IAAI,IAAI,GAAG,IAAI,cAAc,QAAQ,IACxC,MAAK,IAAI,IAAI,GAAG,IAAI,cAAc,IAChC,oBAAmB,IACjB,cAAc,eAAe,EAAE,CAAC,MAAM,GAAG,IAAI,EAAE,EAC/C,IAAI,eAAe,EACpB;AAIL,OAAI,KAAK,OACP,MAAK,OAAO,WAAW,aAAa,mBAAmB,OAAO;QACzD;IACL,MAAM,aAAa,IAAI,YAAY;AACnC,eAAW,cAAc,IAAI,KAAK,CAAC,mBAAmB,OAAO,CAAC,CAAC;AAC/D,UAAM,IAAI,SAAS,SAAS,WAAW;AACrC,gBAAW,SAAS;AACpB,gBAAW,UAAU;MACrB;AACF,WAAO,WAAW;;AAIpB,QAAK,sBAAsB,MAAM;aAE7B,KAAK,OACP,MAAK,OAAO,WAAW,6BAAa,IAAI,YAAY,EAAE,CAAC;OAClD;GACL,MAAM,aAAa,IAAI,YAAY;AACnC,cAAW,cAAc,IAAI,KAAK,EAAE,CAAC,CAAC;AACtC,SAAM,IAAI,SAAS,SAAS,WAAW;AACrC,eAAW,SAAS;AACpB,eAAW,UAAU;KACrB;AACF,UAAO,WAAW;;;;AAM1B,IAAI,OAAO,WAAW,YACpB,QAAO,cAAc,IAAI,YAAY"}
1
+ {"version":3,"file":"EF_FRAMEGEN.js","names":[],"sources":["../src/EF_FRAMEGEN.ts"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  //#region src/EF_RENDERING.ts
2
2
  const EF_RENDERING = () => typeof window !== "undefined" && "FRAMEGEN_BRIDGE" in window;
3
-
4
3
  //#endregion
5
4
  export { EF_RENDERING };
5
+
6
6
  //# sourceMappingURL=EF_RENDERING.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EF_RENDERING.js","names":[],"sources":["../src/EF_RENDERING.ts"],"sourcesContent":["export const EF_RENDERING = () => typeof window !== \"undefined\" && \"FRAMEGEN_BRIDGE\" in window;\n\nexport const EF_NO_WORKBENCH = () => {\n if (typeof window === \"undefined\") return false;\n const params = new URLSearchParams(window.location.search);\n return params.get(\"noWorkbench\") === \"true\" || params.get(\"no-workbench\") === \"true\";\n};\n"],"mappings":";AAAA,MAAa,qBAAqB,OAAO,WAAW,eAAe,qBAAqB"}
1
+ {"version":3,"file":"EF_RENDERING.js","names":[],"sources":["../src/EF_RENDERING.ts"],"mappings":";AAAA,MAAa,qBAAqB,OAAO,WAAW,eAAe,qBAAqB"}
@@ -1,10 +1,9 @@
1
- //#region \0@oxc-project+runtime@0.95.0/helpers/decorate.js
1
+ //#region \0@oxc-project+runtime@0.122.0/helpers/decorate.js
2
2
  function __decorate(decorators, target, key, desc) {
3
3
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
4
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  }
8
-
9
8
  //#endregion
10
- export { __decorate };
9
+ export { __decorate };
@@ -1,5 +1,4 @@
1
1
  import { ContextRoot } from "@lit/context";
2
-
3
2
  //#region src/attachContextRoot.ts
4
3
  let contextRoot = null;
5
4
  const attachContextRoot = () => {
@@ -8,7 +7,7 @@ const attachContextRoot = () => {
8
7
  contextRoot = new ContextRoot();
9
8
  contextRoot.attach(document.body);
10
9
  };
11
-
12
10
  //#endregion
13
11
  export { attachContextRoot };
12
+
14
13
  //# sourceMappingURL=attachContextRoot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachContextRoot.js","names":["contextRoot: ContextRoot | null"],"sources":["../src/attachContextRoot.ts"],"sourcesContent":["import { ContextRoot } from \"@lit/context\";\n\nlet contextRoot: ContextRoot | null = null;\nexport const attachContextRoot = () => {\n if (typeof window === \"undefined\") {\n return;\n }\n if (contextRoot !== null) {\n return;\n }\n contextRoot = new ContextRoot();\n contextRoot.attach(document.body);\n};\n"],"mappings":";;;AAEA,IAAIA,cAAkC;AACtC,MAAa,0BAA0B;AACrC,KAAI,OAAO,WAAW,YACpB;AAEF,KAAI,gBAAgB,KAClB;AAEF,eAAc,IAAI,aAAa;AAC/B,aAAY,OAAO,SAAS,KAAK"}
1
+ {"version":3,"file":"attachContextRoot.js","names":[],"sources":["../src/attachContextRoot.ts"],"mappings":";;AAEA,IAAI,cAAkC;AACtC,MAAa,0BAA0B;AACrC,KAAI,OAAO,WAAW,YACpB;AAEF,KAAI,gBAAgB,KAClB;AAEF,eAAc,IAAI,aAAa;AAC/B,aAAY,OAAO,SAAS,KAAK"}
@@ -1,13 +1,10 @@
1
+ import { TemplateResult as TemplateResult$1 } from "../node_modules/lit-html/development/lit-html.js";
1
2
  import { TemporalMixinInterface } from "../elements/EFTemporal.js";
2
3
  import { CanvasElementData } from "./api/types.js";
3
4
  import { SelectionContext } from "./selection/selectionContext.js";
4
5
  import { PanZoomTransform } from "../elements/EFPanZoom.js";
5
- import "./overlays/SelectionOverlay.js";
6
- import "../gui/EFOverlayLayer.js";
7
- import "../gui/EFTransformHandles.js";
8
- import * as lit29 from "lit";
6
+ import * as _$lit from "lit";
9
7
  import { LitElement } from "lit";
10
- import * as lit_html27 from "lit-html";
11
8
 
12
9
  //#region src/canvas/EFCanvas.d.ts
13
10
  declare const EFCanvas_base: typeof LitElement;
@@ -87,7 +84,7 @@ declare const EFCanvas_base: typeof LitElement;
87
84
  * Manages existing elements (EF* elements, divs, etc.) and provides selection functionality.
88
85
  */
89
86
  declare class EFCanvas extends EFCanvas_base {
90
- static styles: lit29.CSSResult[];
87
+ static styles: _$lit.CSSResult[];
91
88
  panZoomTransform?: PanZoomTransform;
92
89
  elementIdAttribute: string;
93
90
  enableTransformHandles: boolean;
@@ -309,7 +306,7 @@ declare class EFCanvas extends EFCanvas_base {
309
306
  * Cleanup transform handles.
310
307
  */
311
308
  private cleanupTransformHandles;
312
- render(): lit_html27.TemplateResult<1>;
309
+ render(): TemplateResult$1<1>;
313
310
  }
314
311
  declare global {
315
312
  interface HTMLElementTagNameMap {
@@ -1,5 +1,5 @@
1
1
  import { TWMixin } from "../gui/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 { EFTargetable } from "../elements/TargetController.js";
4
4
  import { panZoomTransformContext } from "../gui/panZoomTransformContext.js";
5
5
  import { SelectionController } from "./selection/SelectionController.js";
@@ -14,9 +14,8 @@ import { findRootTemporal } from "../elements/findRootTemporal.js";
14
14
  import { consume, provide } from "@lit/context";
15
15
  import { LitElement, css, html } from "lit";
16
16
  import { customElement, property, state } from "lit/decorators.js";
17
-
18
17
  //#region src/canvas/EFCanvas.ts
19
- let EFCanvas = class EFCanvas$1 extends EFTargetable(TWMixin(LitElement)) {
18
+ let EFCanvas = class EFCanvas extends EFTargetable(TWMixin(LitElement)) {
20
19
  static {
21
20
  this.styles = [css`
22
21
  :host {
@@ -394,10 +393,10 @@ let EFCanvas = class EFCanvas$1 extends EFTargetable(TWMixin(LitElement)) {
394
393
  let actualWidth = element.offsetWidth;
395
394
  let actualHeight = element.offsetHeight;
396
395
  if (actualWidth === 0 || actualHeight === 0) {
397
- const elementRect$1 = getElementBounds(element);
396
+ const elementRect = getElementBounds(element);
398
397
  const scale = this.panZoomTransform?.scale || 1;
399
- actualWidth = elementRect$1.width / scale;
400
- actualHeight = elementRect$1.height / scale;
398
+ actualWidth = elementRect.width / scale;
399
+ actualHeight = elementRect.height / scale;
401
400
  }
402
401
  const elementRect = getElementBounds(element);
403
402
  const screenCenterX = elementRect.left + elementRect.width / 2;
@@ -675,14 +674,14 @@ let EFCanvas = class EFCanvas$1 extends EFTargetable(TWMixin(LitElement)) {
675
674
  updateTransformHandles() {
676
675
  if (!this.overlayLayer) return;
677
676
  const selectedIds = Array.from(this.selectionController.getModel().selectedIds);
678
- this.transformHandlesMap.forEach((handles$1, id) => {
677
+ this.transformHandlesMap.forEach((handles, id) => {
679
678
  const isMultiSelectionHandle = id === "multi-selection";
680
679
  const isMultiSelection = selectedIds.length > 1;
681
680
  let shouldKeep;
682
681
  if (isMultiSelectionHandle) shouldKeep = isMultiSelection;
683
682
  else shouldKeep = selectedIds.includes(id) && !isMultiSelection;
684
683
  if (!shouldKeep) {
685
- handles$1.remove();
684
+ handles.remove();
686
685
  this.transformHandlesMap.delete(id);
687
686
  }
688
687
  });
@@ -827,10 +826,10 @@ let EFCanvas = class EFCanvas$1 extends EFTargetable(TWMixin(LitElement)) {
827
826
  const newCanvasWidth = bounds.width;
828
827
  const newCanvasHeight = bounds.height;
829
828
  if (!this.multiSelectionResizeInitial) {
830
- let minX$1 = Infinity;
831
- let minY$1 = Infinity;
832
- let maxX$1 = -Infinity;
833
- let maxY$1 = -Infinity;
829
+ let minX = Infinity;
830
+ let minY = Infinity;
831
+ let maxX = -Infinity;
832
+ let maxY = -Infinity;
834
833
  const elements = /* @__PURE__ */ new Map();
835
834
  for (const id of elementIds) {
836
835
  const metadata = this.elementMetadata.get(id);
@@ -843,18 +842,18 @@ let EFCanvas = class EFCanvas$1 extends EFTargetable(TWMixin(LitElement)) {
843
842
  rotation: metadata.rotation ?? 0
844
843
  });
845
844
  const rotatedBounds = getRotatedBoundingBox(metadata.x, metadata.y, metadata.width, metadata.height, metadata.rotation ?? 0);
846
- minX$1 = Math.min(minX$1, rotatedBounds.minX);
847
- minY$1 = Math.min(minY$1, rotatedBounds.minY);
848
- maxX$1 = Math.max(maxX$1, rotatedBounds.maxX);
849
- maxY$1 = Math.max(maxY$1, rotatedBounds.maxY);
845
+ minX = Math.min(minX, rotatedBounds.minX);
846
+ minY = Math.min(minY, rotatedBounds.minY);
847
+ maxX = Math.max(maxX, rotatedBounds.maxX);
848
+ maxY = Math.max(maxY, rotatedBounds.maxY);
850
849
  }
851
850
  }
852
851
  this.multiSelectionResizeInitial = {
853
852
  elements,
854
- minX: minX$1,
855
- minY: minY$1,
856
- maxX: maxX$1,
857
- maxY: maxY$1
853
+ minX,
854
+ minY,
855
+ maxX,
856
+ maxY
858
857
  };
859
858
  }
860
859
  const { elements: initialElements, minX, minY, maxX, maxY } = this.multiSelectionResizeInitial;
@@ -1093,7 +1092,7 @@ __decorate([state()], EFCanvas.prototype, "_activeRootTemporal", void 0);
1093
1092
  __decorate([provide({ context: selectionContext }), state()], EFCanvas.prototype, "selectionContext", void 0);
1094
1093
  __decorate([state()], EFCanvas.prototype, "highlightedElement", void 0);
1095
1094
  EFCanvas = __decorate([customElement("ef-canvas")], EFCanvas);
1096
-
1097
1095
  //#endregion
1098
1096
  export { EFCanvas };
1097
+
1099
1098
  //# sourceMappingURL=EFCanvas.js.map