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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. package/dist/EF_FRAMEGEN.d.ts +5 -0
  2. package/dist/EF_FRAMEGEN.js +20 -4
  3. package/dist/EF_FRAMEGEN.js.map +1 -1
  4. package/dist/EF_INTERACTIVE.js.map +1 -1
  5. package/dist/_virtual/rolldown_runtime.js +27 -0
  6. package/dist/canvas/EFCanvas.d.ts +311 -0
  7. package/dist/canvas/EFCanvas.js +1089 -0
  8. package/dist/canvas/EFCanvas.js.map +1 -0
  9. package/dist/canvas/EFCanvasItem.d.ts +55 -0
  10. package/dist/canvas/EFCanvasItem.js +72 -0
  11. package/dist/canvas/EFCanvasItem.js.map +1 -0
  12. package/dist/canvas/api/CanvasAPI.d.ts +115 -0
  13. package/dist/canvas/api/CanvasAPI.js +182 -0
  14. package/dist/canvas/api/CanvasAPI.js.map +1 -0
  15. package/dist/canvas/api/types.d.ts +42 -0
  16. package/dist/canvas/coordinateTransform.js +90 -0
  17. package/dist/canvas/coordinateTransform.js.map +1 -0
  18. package/dist/canvas/getElementBounds.js +40 -0
  19. package/dist/canvas/getElementBounds.js.map +1 -0
  20. package/dist/canvas/overlays/SelectionOverlay.js +265 -0
  21. package/dist/canvas/overlays/SelectionOverlay.js.map +1 -0
  22. package/dist/canvas/overlays/overlayState.js +153 -0
  23. package/dist/canvas/overlays/overlayState.js.map +1 -0
  24. package/dist/canvas/selection/SelectionController.js +105 -0
  25. package/dist/canvas/selection/SelectionController.js.map +1 -0
  26. package/dist/canvas/selection/SelectionModel.d.ts +98 -0
  27. package/dist/canvas/selection/SelectionModel.js +229 -0
  28. package/dist/canvas/selection/SelectionModel.js.map +1 -0
  29. package/dist/canvas/selection/selectionContext.d.ts +31 -0
  30. package/dist/canvas/selection/selectionContext.js +12 -0
  31. package/dist/canvas/selection/selectionContext.js.map +1 -0
  32. package/dist/elements/ContainerInfo.d.ts +29 -0
  33. package/dist/elements/ContainerInfo.js +30 -0
  34. package/dist/elements/ContainerInfo.js.map +1 -0
  35. package/dist/elements/EFAudio.d.ts +13 -3
  36. package/dist/elements/EFAudio.js +64 -10
  37. package/dist/elements/EFAudio.js.map +1 -1
  38. package/dist/elements/EFCaptions.d.ts +18 -16
  39. package/dist/elements/EFCaptions.js +110 -19
  40. package/dist/elements/EFCaptions.js.map +1 -1
  41. package/dist/elements/EFImage.d.ts +16 -6
  42. package/dist/elements/EFImage.js +79 -9
  43. package/dist/elements/EFImage.js.map +1 -1
  44. package/dist/elements/EFMedia/AssetIdMediaEngine.js +51 -4
  45. package/dist/elements/EFMedia/AssetIdMediaEngine.js.map +1 -1
  46. package/dist/elements/EFMedia/AssetMediaEngine.js +125 -52
  47. package/dist/elements/EFMedia/AssetMediaEngine.js.map +1 -1
  48. package/dist/elements/EFMedia/BaseMediaEngine.js +24 -6
  49. package/dist/elements/EFMedia/BaseMediaEngine.js.map +1 -1
  50. package/dist/elements/EFMedia/JitMediaEngine.js +12 -8
  51. package/dist/elements/EFMedia/JitMediaEngine.js.map +1 -1
  52. package/dist/elements/EFMedia/audioTasks/makeAudioBufferTask.js +46 -7
  53. package/dist/elements/EFMedia/audioTasks/makeAudioBufferTask.js.map +1 -1
  54. package/dist/elements/EFMedia/audioTasks/makeAudioFrequencyAnalysisTask.js +98 -73
  55. package/dist/elements/EFMedia/audioTasks/makeAudioFrequencyAnalysisTask.js.map +1 -1
  56. package/dist/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.js +28 -5
  57. package/dist/elements/EFMedia/audioTasks/makeAudioInitSegmentFetchTask.js.map +1 -1
  58. package/dist/elements/EFMedia/audioTasks/makeAudioInputTask.js +18 -6
  59. package/dist/elements/EFMedia/audioTasks/makeAudioInputTask.js.map +1 -1
  60. package/dist/elements/EFMedia/audioTasks/makeAudioSeekTask.js +8 -2
  61. package/dist/elements/EFMedia/audioTasks/makeAudioSeekTask.js.map +1 -1
  62. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentFetchTask.js +31 -6
  63. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentFetchTask.js.map +1 -1
  64. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentIdTask.js +28 -5
  65. package/dist/elements/EFMedia/audioTasks/makeAudioSegmentIdTask.js.map +1 -1
  66. package/dist/elements/EFMedia/audioTasks/makeAudioTimeDomainAnalysisTask.js +97 -72
  67. package/dist/elements/EFMedia/audioTasks/makeAudioTimeDomainAnalysisTask.js.map +1 -1
  68. package/dist/elements/EFMedia/shared/AudioSpanUtils.js +3 -1
  69. package/dist/elements/EFMedia/shared/AudioSpanUtils.js.map +1 -1
  70. package/dist/elements/EFMedia/shared/BufferUtils.js +1 -1
  71. package/dist/elements/EFMedia/shared/BufferUtils.js.map +1 -1
  72. package/dist/elements/EFMedia/shared/ThumbnailExtractor.js +25 -14
  73. package/dist/elements/EFMedia/shared/ThumbnailExtractor.js.map +1 -1
  74. package/dist/elements/EFMedia/tasks/makeMediaEngineTask.js +47 -16
  75. package/dist/elements/EFMedia/tasks/makeMediaEngineTask.js.map +1 -1
  76. package/dist/elements/EFMedia/videoTasks/MainVideoInputCache.js +37 -19
  77. package/dist/elements/EFMedia/videoTasks/MainVideoInputCache.js.map +1 -1
  78. package/dist/elements/EFMedia/videoTasks/ScrubInputCache.js +65 -21
  79. package/dist/elements/EFMedia/videoTasks/ScrubInputCache.js.map +1 -1
  80. package/dist/elements/EFMedia/videoTasks/makeScrubVideoBufferTask.js +8 -3
  81. package/dist/elements/EFMedia/videoTasks/makeScrubVideoBufferTask.js.map +1 -1
  82. package/dist/elements/EFMedia/videoTasks/makeScrubVideoInitSegmentFetchTask.js +32 -9
  83. package/dist/elements/EFMedia/videoTasks/makeScrubVideoInitSegmentFetchTask.js.map +1 -1
  84. package/dist/elements/EFMedia/videoTasks/makeScrubVideoInputTask.js +33 -10
  85. package/dist/elements/EFMedia/videoTasks/makeScrubVideoInputTask.js.map +1 -1
  86. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSeekTask.js +23 -8
  87. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSeekTask.js.map +1 -1
  88. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentFetchTask.js +34 -10
  89. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentFetchTask.js.map +1 -1
  90. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentIdTask.js +31 -8
  91. package/dist/elements/EFMedia/videoTasks/makeScrubVideoSegmentIdTask.js.map +1 -1
  92. package/dist/elements/EFMedia/videoTasks/makeUnifiedVideoSeekTask.js +31 -114
  93. package/dist/elements/EFMedia/videoTasks/makeUnifiedVideoSeekTask.js.map +1 -1
  94. package/dist/elements/EFMedia/videoTasks/makeVideoBufferTask.js +44 -8
  95. package/dist/elements/EFMedia/videoTasks/makeVideoBufferTask.js.map +1 -1
  96. package/dist/elements/EFMedia.d.ts +18 -7
  97. package/dist/elements/EFMedia.js +23 -3
  98. package/dist/elements/EFMedia.js.map +1 -1
  99. package/dist/elements/EFPanZoom.d.ts +96 -0
  100. package/dist/elements/EFPanZoom.js +290 -0
  101. package/dist/elements/EFPanZoom.js.map +1 -0
  102. package/dist/elements/EFSourceMixin.js +7 -6
  103. package/dist/elements/EFSourceMixin.js.map +1 -1
  104. package/dist/elements/EFSurface.d.ts +6 -6
  105. package/dist/elements/EFSurface.js +7 -2
  106. package/dist/elements/EFSurface.js.map +1 -1
  107. package/dist/elements/EFTemporal.d.ts +2 -1
  108. package/dist/elements/EFTemporal.js +192 -71
  109. package/dist/elements/EFTemporal.js.map +1 -1
  110. package/dist/elements/EFText.d.ts +5 -4
  111. package/dist/elements/EFText.js +102 -13
  112. package/dist/elements/EFText.js.map +1 -1
  113. package/dist/elements/EFTextSegment.d.ts +32 -6
  114. package/dist/elements/EFTextSegment.js +53 -15
  115. package/dist/elements/EFTextSegment.js.map +1 -1
  116. package/dist/elements/EFThumbnailStrip.d.ts +129 -56
  117. package/dist/elements/EFThumbnailStrip.js +605 -359
  118. package/dist/elements/EFThumbnailStrip.js.map +1 -1
  119. package/dist/elements/EFTimegroup.d.ts +233 -25
  120. package/dist/elements/EFTimegroup.js +865 -144
  121. package/dist/elements/EFTimegroup.js.map +1 -1
  122. package/dist/elements/EFVideo.d.ts +42 -5
  123. package/dist/elements/EFVideo.js +165 -11
  124. package/dist/elements/EFVideo.js.map +1 -1
  125. package/dist/elements/EFWaveform.d.ts +6 -6
  126. package/dist/elements/EFWaveform.js +2 -1
  127. package/dist/elements/EFWaveform.js.map +1 -1
  128. package/dist/elements/ElementPositionInfo.d.ts +35 -0
  129. package/dist/elements/ElementPositionInfo.js +49 -0
  130. package/dist/elements/ElementPositionInfo.js.map +1 -0
  131. package/dist/elements/FetchMixin.js +16 -1
  132. package/dist/elements/FetchMixin.js.map +1 -1
  133. package/dist/elements/SessionThumbnailCache.js +154 -0
  134. package/dist/elements/SessionThumbnailCache.js.map +1 -0
  135. package/dist/elements/TargetController.js +3 -1
  136. package/dist/elements/TargetController.js.map +1 -1
  137. package/dist/elements/TimegroupController.js +9 -3
  138. package/dist/elements/TimegroupController.js.map +1 -1
  139. package/dist/elements/findRootTemporal.js +30 -0
  140. package/dist/elements/findRootTemporal.js.map +1 -0
  141. package/dist/elements/renderTemporalAudio.js +18 -5
  142. package/dist/elements/renderTemporalAudio.js.map +1 -1
  143. package/dist/elements/updateAnimations.js +171 -28
  144. package/dist/elements/updateAnimations.js.map +1 -1
  145. package/dist/getRenderInfo.d.ts +2 -2
  146. package/dist/gui/ContextMixin.js +4 -2
  147. package/dist/gui/ContextMixin.js.map +1 -1
  148. package/dist/gui/Controllable.js +74 -1
  149. package/dist/gui/Controllable.js.map +1 -1
  150. package/dist/gui/EFActiveRootTemporal.d.ts +50 -0
  151. package/dist/gui/EFActiveRootTemporal.js +94 -0
  152. package/dist/gui/EFActiveRootTemporal.js.map +1 -0
  153. package/dist/gui/EFConfiguration.d.ts +7 -1
  154. package/dist/gui/EFConfiguration.js.map +1 -1
  155. package/dist/gui/EFControls.d.ts +2 -2
  156. package/dist/gui/EFControls.js +109 -13
  157. package/dist/gui/EFControls.js.map +1 -1
  158. package/dist/gui/EFDial.d.ts +4 -4
  159. package/dist/gui/EFFilmstrip.d.ts +11 -214
  160. package/dist/gui/EFFilmstrip.js +53 -1152
  161. package/dist/gui/EFFilmstrip.js.map +1 -1
  162. package/dist/gui/EFFitScale.d.ts +3 -3
  163. package/dist/gui/EFFitScale.js +39 -12
  164. package/dist/gui/EFFitScale.js.map +1 -1
  165. package/dist/gui/EFFocusOverlay.d.ts +4 -4
  166. package/dist/gui/EFOverlayItem.d.ts +48 -0
  167. package/dist/gui/EFOverlayItem.js +97 -0
  168. package/dist/gui/EFOverlayItem.js.map +1 -0
  169. package/dist/gui/EFOverlayLayer.d.ts +70 -0
  170. package/dist/gui/EFOverlayLayer.js +104 -0
  171. package/dist/gui/EFOverlayLayer.js.map +1 -0
  172. package/dist/gui/EFPause.d.ts +4 -4
  173. package/dist/gui/EFPlay.d.ts +4 -4
  174. package/dist/gui/EFResizableBox.d.ts +12 -16
  175. package/dist/gui/EFResizableBox.js +109 -451
  176. package/dist/gui/EFResizableBox.js.map +1 -1
  177. package/dist/gui/EFScrubber.d.ts +30 -5
  178. package/dist/gui/EFScrubber.js +224 -31
  179. package/dist/gui/EFScrubber.js.map +1 -1
  180. package/dist/gui/EFTimeDisplay.d.ts +4 -4
  181. package/dist/gui/EFTimeDisplay.js +4 -1
  182. package/dist/gui/EFTimeDisplay.js.map +1 -1
  183. package/dist/gui/EFTimelineRuler.d.ts +71 -0
  184. package/dist/gui/EFTimelineRuler.js +320 -0
  185. package/dist/gui/EFTimelineRuler.js.map +1 -0
  186. package/dist/gui/EFToggleLoop.d.ts +4 -4
  187. package/dist/gui/EFTogglePlay.d.ts +4 -4
  188. package/dist/gui/EFTransformHandles.d.ts +91 -0
  189. package/dist/gui/EFTransformHandles.js +393 -0
  190. package/dist/gui/EFTransformHandles.js.map +1 -0
  191. package/dist/gui/EFWorkbench.d.ts +178 -0
  192. package/dist/gui/EFWorkbench.js +2067 -22
  193. package/dist/gui/EFWorkbench.js.map +1 -1
  194. package/dist/gui/FitScaleHelpers.d.ts +31 -0
  195. package/dist/gui/FitScaleHelpers.js +41 -0
  196. package/dist/gui/FitScaleHelpers.js.map +1 -0
  197. package/dist/gui/PlaybackController.d.ts +2 -1
  198. package/dist/gui/PlaybackController.js +46 -15
  199. package/dist/gui/PlaybackController.js.map +1 -1
  200. package/dist/gui/TWMixin.js +1 -1
  201. package/dist/gui/TWMixin.js.map +1 -1
  202. package/dist/gui/hierarchy/EFHierarchy.d.ts +65 -0
  203. package/dist/gui/hierarchy/EFHierarchy.js +338 -0
  204. package/dist/gui/hierarchy/EFHierarchy.js.map +1 -0
  205. package/dist/gui/hierarchy/EFHierarchyItem.d.ts +118 -0
  206. package/dist/gui/hierarchy/EFHierarchyItem.js +551 -0
  207. package/dist/gui/hierarchy/EFHierarchyItem.js.map +1 -0
  208. package/dist/gui/hierarchy/hierarchyContext.d.ts +38 -0
  209. package/dist/gui/hierarchy/hierarchyContext.js +8 -0
  210. package/dist/gui/hierarchy/hierarchyContext.js.map +1 -0
  211. package/dist/gui/icons.js +34 -0
  212. package/dist/gui/icons.js.map +1 -0
  213. package/dist/gui/panZoomTransformContext.js +12 -0
  214. package/dist/gui/panZoomTransformContext.js.map +1 -0
  215. package/dist/gui/previewSettingsContext.js +12 -0
  216. package/dist/gui/previewSettingsContext.js.map +1 -0
  217. package/dist/gui/timeline/EFTimeline.d.ts +270 -0
  218. package/dist/gui/timeline/EFTimeline.js +1369 -0
  219. package/dist/gui/timeline/EFTimeline.js.map +1 -0
  220. package/dist/gui/timeline/EFTimelineRow.js +374 -0
  221. package/dist/gui/timeline/EFTimelineRow.js.map +1 -0
  222. package/dist/gui/timeline/TrimHandles.d.ts +36 -0
  223. package/dist/gui/timeline/TrimHandles.js +204 -0
  224. package/dist/gui/timeline/TrimHandles.js.map +1 -0
  225. package/dist/gui/timeline/flattenHierarchy.js +31 -0
  226. package/dist/gui/timeline/flattenHierarchy.js.map +1 -0
  227. package/dist/gui/timeline/timelineStateContext.d.ts +26 -0
  228. package/dist/gui/timeline/timelineStateContext.js +42 -0
  229. package/dist/gui/timeline/timelineStateContext.js.map +1 -0
  230. package/dist/gui/timeline/tracks/AudioTrack.js +264 -0
  231. package/dist/gui/timeline/tracks/AudioTrack.js.map +1 -0
  232. package/dist/gui/timeline/tracks/CaptionsTrack.js +595 -0
  233. package/dist/gui/timeline/tracks/CaptionsTrack.js.map +1 -0
  234. package/dist/gui/timeline/tracks/HTMLTrack.js +19 -0
  235. package/dist/gui/timeline/tracks/HTMLTrack.js.map +1 -0
  236. package/dist/gui/timeline/tracks/ImageTrack.js +53 -0
  237. package/dist/gui/timeline/tracks/ImageTrack.js.map +1 -0
  238. package/dist/gui/timeline/tracks/TextTrack.js +250 -0
  239. package/dist/gui/timeline/tracks/TextTrack.js.map +1 -0
  240. package/dist/gui/timeline/tracks/TimegroupTrack.js +143 -0
  241. package/dist/gui/timeline/tracks/TimegroupTrack.js.map +1 -0
  242. package/dist/gui/timeline/tracks/TrackItem.js +269 -0
  243. package/dist/gui/timeline/tracks/TrackItem.js.map +1 -0
  244. package/dist/gui/timeline/tracks/VideoTrack.js +265 -0
  245. package/dist/gui/timeline/tracks/VideoTrack.js.map +1 -0
  246. package/dist/gui/timeline/tracks/WaveformTrack.js +19 -0
  247. package/dist/gui/timeline/tracks/WaveformTrack.js.map +1 -0
  248. package/dist/gui/timeline/tracks/ensureTrackItemInit.js +1 -0
  249. package/dist/gui/timeline/tracks/preloadTracks.js +9 -0
  250. package/dist/gui/timeline/tracks/renderTrackChildren.js +119 -0
  251. package/dist/gui/timeline/tracks/renderTrackChildren.js.map +1 -0
  252. package/dist/gui/timeline/tracks/waveformUtils.js +80 -0
  253. package/dist/gui/timeline/tracks/waveformUtils.js.map +1 -0
  254. package/dist/gui/transformCalculations.js +217 -0
  255. package/dist/gui/transformCalculations.js.map +1 -0
  256. package/dist/gui/transformUtils.d.ts +37 -0
  257. package/dist/gui/transformUtils.js +77 -0
  258. package/dist/gui/transformUtils.js.map +1 -0
  259. package/dist/gui/tree/EFTree.d.ts +59 -0
  260. package/dist/gui/tree/EFTree.js +174 -0
  261. package/dist/gui/tree/EFTree.js.map +1 -0
  262. package/dist/gui/tree/EFTreeItem.d.ts +38 -0
  263. package/dist/gui/tree/EFTreeItem.js +146 -0
  264. package/dist/gui/tree/EFTreeItem.js.map +1 -0
  265. package/dist/gui/tree/treeContext.d.ts +60 -0
  266. package/dist/gui/tree/treeContext.js +23 -0
  267. package/dist/gui/tree/treeContext.js.map +1 -0
  268. package/dist/index.d.ts +32 -8
  269. package/dist/index.js +30 -6
  270. package/dist/index.js.map +1 -1
  271. package/dist/node_modules/react/cjs/react-jsx-runtime.development.js +688 -0
  272. package/dist/node_modules/react/cjs/react-jsx-runtime.development.js.map +1 -0
  273. package/dist/node_modules/react/cjs/react.development.js +1521 -0
  274. package/dist/node_modules/react/cjs/react.development.js.map +1 -0
  275. package/dist/node_modules/react/index.js +13 -0
  276. package/dist/node_modules/react/index.js.map +1 -0
  277. package/dist/node_modules/react/jsx-runtime.js +13 -0
  278. package/dist/node_modules/react/jsx-runtime.js.map +1 -0
  279. package/dist/preview/AdaptiveResolutionTracker.js +228 -0
  280. package/dist/preview/AdaptiveResolutionTracker.js.map +1 -0
  281. package/dist/preview/RenderProfiler.js +135 -0
  282. package/dist/preview/RenderProfiler.js.map +1 -0
  283. package/dist/preview/previewSettings.js +131 -0
  284. package/dist/preview/previewSettings.js.map +1 -0
  285. package/dist/preview/previewTypes.js +64 -0
  286. package/dist/preview/previewTypes.js.map +1 -0
  287. package/dist/preview/renderTimegroupPreview.js +656 -0
  288. package/dist/preview/renderTimegroupPreview.js.map +1 -0
  289. package/dist/preview/renderTimegroupToCanvas.d.ts +37 -0
  290. package/dist/preview/renderTimegroupToCanvas.js +833 -0
  291. package/dist/preview/renderTimegroupToCanvas.js.map +1 -0
  292. package/dist/preview/renderTimegroupToVideo.d.ts +39 -0
  293. package/dist/preview/renderTimegroupToVideo.js +274 -0
  294. package/dist/preview/renderTimegroupToVideo.js.map +1 -0
  295. package/dist/preview/renderers.js +16 -0
  296. package/dist/preview/renderers.js.map +1 -0
  297. package/dist/preview/statsTrackingStrategy.js +201 -0
  298. package/dist/preview/statsTrackingStrategy.js.map +1 -0
  299. package/dist/preview/thumbnailCacheSettings.js +52 -0
  300. package/dist/preview/thumbnailCacheSettings.js.map +1 -0
  301. package/dist/preview/workers/WorkerPool.js +178 -0
  302. package/dist/preview/workers/WorkerPool.js.map +1 -0
  303. package/dist/preview/workers/encoderWorkerInline.js +103 -0
  304. package/dist/preview/workers/encoderWorkerInline.js.map +1 -0
  305. package/dist/sandbox/PlaybackControls.js +10 -0
  306. package/dist/sandbox/PlaybackControls.js.map +1 -0
  307. package/dist/sandbox/ScenarioRunner.js +1 -0
  308. package/dist/sandbox/index.js +2 -0
  309. package/dist/style.css +71 -67
  310. package/dist/transcoding/types/index.d.ts +2 -1
  311. package/dist/transcoding/utils/UrlGenerator.d.ts +6 -1
  312. package/dist/transcoding/utils/UrlGenerator.js +12 -3
  313. package/dist/transcoding/utils/UrlGenerator.js.map +1 -1
  314. package/dist/utils/LRUCache.js +1 -375
  315. package/dist/utils/LRUCache.js.map +1 -1
  316. package/dist/utils/frameTime.js +14 -0
  317. package/dist/utils/frameTime.js.map +1 -0
  318. package/package.json +3 -3
  319. package/test/profilingPlugin.ts +223 -0
  320. package/test/recordReplayProxyPlugin.js +22 -27
  321. package/test/thumbnail-performance-test.html +116 -0
  322. package/test/visualRegressionUtils.ts +286 -0
  323. package/types.json +1 -1
  324. package/dist/elements/TimegroupController.d.ts +0 -18
  325. package/dist/msToTimeCode.js +0 -17
  326. package/dist/msToTimeCode.js.map +0 -1
@@ -1,214 +1,11 @@
1
1
  import { __decorate } from "../_virtual/_@oxc-project_runtime@0.94.0/helpers/decorate.js";
2
+ import { getCornerPoint, getOppositeCorner } from "./transformUtils.js";
2
3
  import { LitElement, css, html } from "lit";
3
4
  import { customElement, property, state } from "lit/decorators.js";
4
5
  import { styleMap } from "lit/directives/style-map.js";
5
6
 
6
7
  //#region src/gui/EFResizableBox.ts
7
8
  const DEFAULT_MIN_SIZE = 10;
8
- const CENTER_RESIZE_MULTIPLIER = 2;
9
- function constrainMovementDeltas(initialBounds, deltaX, deltaY, container) {
10
- const maxLeftMovement = -initialBounds.x;
11
- const maxRightMovement = container.width - (initialBounds.x + initialBounds.width);
12
- const maxUpMovement = -initialBounds.y;
13
- const maxDownMovement = container.height - (initialBounds.y + initialBounds.height);
14
- return {
15
- deltaX: Math.max(maxLeftMovement, Math.min(maxRightMovement, deltaX)),
16
- deltaY: Math.max(maxUpMovement, Math.min(maxDownMovement, deltaY))
17
- };
18
- }
19
- function calculateNormalResize(context, handle) {
20
- const { initialBounds, movement } = context;
21
- const { deltaX, deltaY } = movement;
22
- switch (handle) {
23
- case "bottom-right": return {
24
- ...initialBounds,
25
- width: initialBounds.width + deltaX,
26
- height: initialBounds.height + deltaY
27
- };
28
- case "top-left": {
29
- const rightEdge = initialBounds.x + initialBounds.width;
30
- const bottomEdge = initialBounds.y + initialBounds.height;
31
- const newX = initialBounds.x + deltaX;
32
- const newY = initialBounds.y + deltaY;
33
- return {
34
- x: newX,
35
- y: newY,
36
- width: rightEdge - newX,
37
- height: bottomEdge - newY
38
- };
39
- }
40
- case "top-right": {
41
- const bottomEdge = initialBounds.y + initialBounds.height;
42
- const newY = initialBounds.y + deltaY;
43
- return {
44
- ...initialBounds,
45
- y: newY,
46
- width: initialBounds.width + deltaX,
47
- height: bottomEdge - newY
48
- };
49
- }
50
- case "bottom-left": {
51
- const rightEdge = initialBounds.x + initialBounds.width;
52
- const newX = initialBounds.x + deltaX;
53
- return {
54
- ...initialBounds,
55
- x: newX,
56
- width: rightEdge - newX,
57
- height: initialBounds.height + deltaY
58
- };
59
- }
60
- case "top": {
61
- const bottomEdge = initialBounds.y + initialBounds.height;
62
- const newY = initialBounds.y + deltaY;
63
- return {
64
- ...initialBounds,
65
- y: newY,
66
- height: bottomEdge - newY
67
- };
68
- }
69
- case "right": return {
70
- ...initialBounds,
71
- width: initialBounds.width + deltaX
72
- };
73
- case "bottom": return {
74
- ...initialBounds,
75
- height: initialBounds.height + deltaY
76
- };
77
- case "left": {
78
- const rightEdge = initialBounds.x + initialBounds.width;
79
- const newX = initialBounds.x + deltaX;
80
- return {
81
- ...initialBounds,
82
- x: newX,
83
- width: rightEdge - newX
84
- };
85
- }
86
- default: return initialBounds;
87
- }
88
- }
89
- function calculateAspectRatioResize(context, handle) {
90
- const { initialBounds, movement, constraints } = context;
91
- const { deltaX, deltaY } = movement;
92
- if (!constraints.aspectRatio) return initialBounds;
93
- const aspectRatio = constraints.aspectRatio;
94
- const widthMovement = deltaX;
95
- const heightMovement = deltaY * aspectRatio;
96
- let movementValue;
97
- switch (handle) {
98
- case "bottom-right":
99
- case "top-left":
100
- movementValue = (widthMovement + heightMovement) / 2;
101
- break;
102
- case "top-right":
103
- case "bottom-left":
104
- movementValue = (widthMovement - heightMovement) / 2;
105
- break;
106
- default: movementValue = widthMovement;
107
- }
108
- const baseWidth = handle === "top-left" || handle === "bottom-left" ? initialBounds.width - movementValue : initialBounds.width + movementValue;
109
- const width = Math.max(constraints.minSize, baseWidth);
110
- const height = width / aspectRatio;
111
- const newBounds = {
112
- ...initialBounds,
113
- width,
114
- height
115
- };
116
- switch (handle) {
117
- case "top-left":
118
- newBounds.x = initialBounds.x + initialBounds.width - width;
119
- newBounds.y = initialBounds.y + initialBounds.height - height;
120
- break;
121
- case "top-right":
122
- newBounds.y = initialBounds.y + initialBounds.height - height;
123
- break;
124
- case "bottom-left":
125
- newBounds.x = initialBounds.x + initialBounds.width - width;
126
- break;
127
- }
128
- return newBounds;
129
- }
130
- function calculateCenterResize(context, handle) {
131
- const { initialBounds, movement } = context;
132
- const { deltaX, deltaY } = movement;
133
- const centerX = initialBounds.x + initialBounds.width / 2;
134
- const centerY = initialBounds.y + initialBounds.height / 2;
135
- let widthChange = 0;
136
- let heightChange = 0;
137
- switch (handle) {
138
- case "bottom-right":
139
- widthChange = deltaX * CENTER_RESIZE_MULTIPLIER;
140
- heightChange = deltaY * CENTER_RESIZE_MULTIPLIER;
141
- break;
142
- case "top-left":
143
- widthChange = -deltaX * CENTER_RESIZE_MULTIPLIER;
144
- heightChange = -deltaY * CENTER_RESIZE_MULTIPLIER;
145
- break;
146
- case "top-right":
147
- widthChange = deltaX * CENTER_RESIZE_MULTIPLIER;
148
- heightChange = -deltaY * CENTER_RESIZE_MULTIPLIER;
149
- break;
150
- case "bottom-left":
151
- widthChange = -deltaX * CENTER_RESIZE_MULTIPLIER;
152
- heightChange = deltaY * CENTER_RESIZE_MULTIPLIER;
153
- break;
154
- case "top":
155
- case "bottom":
156
- heightChange = (handle === "bottom" ? deltaY : -deltaY) * CENTER_RESIZE_MULTIPLIER;
157
- break;
158
- case "left":
159
- case "right":
160
- widthChange = (handle === "right" ? deltaX : -deltaX) * CENTER_RESIZE_MULTIPLIER;
161
- break;
162
- }
163
- const newWidth = initialBounds.width + widthChange;
164
- const newHeight = initialBounds.height + heightChange;
165
- return {
166
- x: centerX - newWidth / 2,
167
- y: centerY - newHeight / 2,
168
- width: newWidth,
169
- height: newHeight
170
- };
171
- }
172
- function calculateCenterResizeWithAspectRatio(context, handle) {
173
- const { initialBounds, movement, constraints } = context;
174
- const { deltaX, deltaY } = movement;
175
- if (!constraints.aspectRatio) return initialBounds;
176
- const aspectRatio = constraints.aspectRatio;
177
- const centerX = initialBounds.x + initialBounds.width / 2;
178
- const centerY = initialBounds.y + initialBounds.height / 2;
179
- let movementValue;
180
- switch (handle) {
181
- case "bottom-right":
182
- movementValue = Math.max(deltaX, deltaY);
183
- break;
184
- case "top-left":
185
- movementValue = -Math.max(-deltaX, -deltaY);
186
- break;
187
- case "top-right":
188
- movementValue = Math.max(deltaX, -deltaY);
189
- break;
190
- case "bottom-left":
191
- movementValue = Math.max(-deltaX, deltaY);
192
- break;
193
- case "top":
194
- case "bottom":
195
- movementValue = handle === "bottom" ? deltaY : -deltaY;
196
- break;
197
- case "left":
198
- case "right":
199
- movementValue = handle === "right" ? deltaX : -deltaX;
200
- break;
201
- default: movementValue = Math.max(deltaX, deltaY);
202
- }
203
- const newWidth = Math.max(constraints.minSize, initialBounds.width + movementValue * CENTER_RESIZE_MULTIPLIER);
204
- const newHeight = newWidth / aspectRatio;
205
- return {
206
- x: centerX - newWidth / 2,
207
- y: centerY - newHeight / 2,
208
- width: newWidth,
209
- height: newHeight
210
- };
211
- }
212
9
  let EFResizableBox = class EFResizableBox$1 extends LitElement {
213
10
  constructor(..._args) {
214
11
  super(..._args);
@@ -222,63 +19,82 @@ let EFResizableBox = class EFResizableBox$1 extends LitElement {
222
19
  this.containerHeight = 0;
223
20
  this.minSize = DEFAULT_MIN_SIZE;
224
21
  this.isDragging = false;
225
- this.dragMode = null;
226
- this.interaction = null;
227
- this.modifiers = {
228
- shift: false,
229
- alt: false
22
+ this.isResizing = null;
23
+ this.dragStart = null;
24
+ this.dragStartPosition = {
25
+ x: 0,
26
+ y: 0
230
27
  };
231
- this.handlePointerMove = (e) => {
232
- if (!this.isDragging || !this.interaction || e.pointerId !== this.interaction.pointerId) return;
28
+ this.resizeStartCorner = null;
29
+ this.resizeStartSize = null;
30
+ this.resizeStartPosition = null;
31
+ this.handlePointerDown = (e, mode, handle) => {
233
32
  e.preventDefault();
234
- const deltaX = e.clientX - this.interaction.startPoint.x;
235
- const deltaY = e.clientY - this.interaction.startPoint.y;
236
- this.modifiers = {
237
- shift: e.shiftKey,
238
- alt: e.altKey
33
+ e.stopPropagation();
34
+ this.isDragging = true;
35
+ this.isResizing = mode === "resize" ? handle || null : null;
36
+ this.dragStart = {
37
+ x: e.clientX,
38
+ y: e.clientY
239
39
  };
240
- if (this.dragMode === "move") {
241
- const constrainedMovement = constrainMovementDeltas(this.interaction.initialBounds, deltaX, deltaY, {
242
- width: this.containerWidth,
243
- height: this.containerHeight
244
- });
40
+ this.dragStartPosition = {
41
+ x: this.bounds.x,
42
+ y: this.bounds.y
43
+ };
44
+ if (mode === "resize" && handle) {
45
+ const oppositeCorner = getOppositeCorner(handle);
46
+ this.resizeStartCorner = getCornerPoint(this.bounds.x, this.bounds.y, this.bounds.width, this.bounds.height, 0, oppositeCorner.x, oppositeCorner.y);
47
+ this.resizeStartSize = {
48
+ width: this.bounds.width,
49
+ height: this.bounds.height
50
+ };
51
+ this.resizeStartPosition = {
52
+ x: this.bounds.x,
53
+ y: this.bounds.y
54
+ };
55
+ }
56
+ document.addEventListener("pointermove", this.handlePointerMove, { passive: false });
57
+ document.addEventListener("pointerup", this.handlePointerUp, { passive: false });
58
+ };
59
+ this.handlePointerMove = (e) => {
60
+ if (!this.isDragging || !this.dragStart) return;
61
+ e.preventDefault();
62
+ const deltaX = e.clientX - this.dragStart.x;
63
+ const deltaY = e.clientY - this.dragStart.y;
64
+ if (this.isResizing && this.resizeStartCorner && this.resizeStartSize && this.resizeStartPosition) {
65
+ const oppositeCorner = getOppositeCorner(this.isResizing);
66
+ const rotationRadians = 0;
67
+ let newWidth = this.resizeStartSize.width;
68
+ let newHeight = this.resizeStartSize.height;
69
+ if (this.isResizing.includes("e")) newWidth = this.resizeStartSize.width + deltaX;
70
+ else if (this.isResizing.includes("w")) newWidth = this.resizeStartSize.width - deltaX;
71
+ if (this.isResizing.includes("s")) newHeight = this.resizeStartSize.height + deltaY;
72
+ else if (this.isResizing.includes("n")) newHeight = this.resizeStartSize.height - deltaY;
73
+ newWidth = Math.max(this.minSize, Math.min(this.containerWidth - this.bounds.x, newWidth));
74
+ newHeight = Math.max(this.minSize, Math.min(this.containerHeight - this.bounds.y, newHeight));
75
+ const newOppositeCorner = getCornerPoint(this.resizeStartPosition.x, this.resizeStartPosition.y, newWidth, newHeight, rotationRadians, oppositeCorner.x, oppositeCorner.y);
76
+ const offsetX = this.resizeStartCorner.x - newOppositeCorner.x;
77
+ const offsetY = this.resizeStartCorner.y - newOppositeCorner.y;
245
78
  this.bounds = {
246
- ...this.interaction.initialBounds,
247
- x: this.interaction.initialBounds.x + constrainedMovement.deltaX,
248
- y: this.interaction.initialBounds.y + constrainedMovement.deltaY
79
+ x: Math.max(0, Math.min(this.containerWidth - newWidth, this.resizeStartPosition.x + offsetX)),
80
+ y: Math.max(0, Math.min(this.containerHeight - newHeight, this.resizeStartPosition.y + offsetY)),
81
+ width: newWidth,
82
+ height: newHeight
249
83
  };
250
- } else if (this.dragMode === "resize" && this.interaction.target.handle) {
251
- const context = {
252
- initialBounds: this.interaction.initialBounds,
253
- container: {
254
- width: this.containerWidth,
255
- height: this.containerHeight
256
- },
257
- constraints: {
258
- minSize: this.minSize,
259
- aspectRatio: this.modifiers.shift ? this.interaction.initialBounds.width / this.interaction.initialBounds.height : void 0
260
- },
261
- movement: {
262
- deltaX,
263
- deltaY
264
- },
265
- modifiers: {
266
- centerResize: this.modifiers.alt,
267
- preserveAspectRatio: this.modifiers.shift
268
- }
84
+ } else {
85
+ const constrainedX = Math.max(0, Math.min(this.containerWidth - this.bounds.width, this.dragStartPosition.x + deltaX));
86
+ const constrainedY = Math.max(0, Math.min(this.containerHeight - this.bounds.height, this.dragStartPosition.y + deltaY));
87
+ this.bounds = {
88
+ ...this.bounds,
89
+ x: constrainedX,
90
+ y: constrainedY
269
91
  };
270
- this.bounds = this.calculateBoundsWithModeAwareConstraints(context, this.interaction.target.handle);
271
92
  }
272
93
  this.dispatchBoundsChange();
273
94
  };
274
95
  this.handlePointerUp = (e) => {
275
- if (this.interaction && e.pointerId !== this.interaction.pointerId) return;
276
96
  e.preventDefault();
277
- this.isDragging = false;
278
- this.dragMode = null;
279
- this.interaction = null;
280
- document.removeEventListener("pointermove", this.handlePointerMove);
281
- document.removeEventListener("pointerup", this.handlePointerUp);
97
+ this.cleanup();
282
98
  };
283
99
  }
284
100
  static {
@@ -298,14 +114,14 @@ let EFResizableBox = class EFResizableBox$1 extends LitElement {
298
114
  background-color: var(--ef-resizable-box-handle-color, #3b82f6);
299
115
  touch-action: none;
300
116
  }
301
- .top-left { top: -4px; left: -4px; width: 8px; height: 8px; cursor: nwse-resize; }
302
- .top-right { top: -4px; right: -4px; width: 8px; height: 8px; cursor: nesw-resize; }
303
- .bottom-left { bottom: -4px; left: -4px; width: 8px; height: 8px; cursor: nesw-resize; }
304
- .bottom-right { bottom: -4px; right: -4px; width: 8px; height: 8px; cursor: nwse-resize; }
305
- .top { top: -4px; left: 4px; right: 4px; height: 8px; cursor: ns-resize; }
306
- .right { top: 4px; bottom: 4px; right: -4px; width: 8px; cursor: ew-resize; }
307
- .bottom { bottom: -4px; left: 4px; right: 4px; height: 8px; cursor: ns-resize; }
308
- .left { top: 4px; bottom: 4px; left: -4px; width: 8px; cursor: ew-resize; }
117
+ .handle.nw { top: -4px; left: -4px; width: 8px; height: 8px; cursor: nwse-resize; }
118
+ .handle.ne { top: -4px; right: -4px; width: 8px; height: 8px; cursor: nesw-resize; }
119
+ .handle.sw { bottom: -4px; left: -4px; width: 8px; height: 8px; cursor: nesw-resize; }
120
+ .handle.se { bottom: -4px; right: -4px; width: 8px; height: 8px; cursor: nwse-resize; }
121
+ .handle.n { top: -4px; left: 4px; right: 4px; height: 8px; cursor: ns-resize; }
122
+ .handle.e { top: 4px; bottom: 4px; right: -4px; width: 8px; cursor: ew-resize; }
123
+ .handle.s { bottom: -4px; left: 4px; right: 4px; height: 8px; cursor: ns-resize; }
124
+ .handle.w { top: 4px; bottom: 4px; left: -4px; width: 8px; cursor: ew-resize; }
309
125
  `;
310
126
  }
311
127
  connectedCallback() {
@@ -322,182 +138,24 @@ let EFResizableBox = class EFResizableBox$1 extends LitElement {
322
138
  });
323
139
  if (this.offsetParent) this.resizeObserver.observe(this.offsetParent);
324
140
  }
325
- handlePointerDown(e, mode, handle) {
326
- e.preventDefault();
327
- e.stopPropagation();
328
- this.isDragging = true;
329
- this.dragMode = mode;
330
- this.interaction = {
331
- startPoint: {
332
- x: e.clientX,
333
- y: e.clientY
334
- },
335
- target: {
336
- mode,
337
- handle
338
- },
339
- initialBounds: { ...this.bounds },
340
- pointerId: e.pointerId
341
- };
342
- this.modifiers = {
343
- shift: e.shiftKey,
344
- alt: e.altKey
345
- };
346
- document.addEventListener("pointermove", this.handlePointerMove, { passive: false });
347
- document.addEventListener("pointerup", this.handlePointerUp, { passive: false });
348
- }
349
- calculateBoundsWithModeAwareConstraints(context, handle) {
350
- const { modifiers, constraints, container, initialBounds } = context;
351
- if (!modifiers.centerResize && !modifiers.preserveAspectRatio) {
352
- const constrainedMovement = this.constrainResizeDeltas(initialBounds, context.movement.deltaX, context.movement.deltaY, handle, container, constraints.minSize);
353
- return calculateNormalResize({
354
- ...context,
355
- movement: constrainedMovement
356
- }, handle);
357
- }
358
- let idealBounds;
359
- if (modifiers.centerResize && modifiers.preserveAspectRatio) idealBounds = calculateCenterResizeWithAspectRatio(context, handle);
360
- else if (modifiers.centerResize) idealBounds = calculateCenterResize(context, handle);
361
- else idealBounds = calculateAspectRatioResize(context, handle);
362
- return this.constrainBoundsForMode(idealBounds, context, handle);
363
- }
364
- constrainBoundsForMode(idealBounds, context, handle) {
365
- const { container, constraints, modifiers } = context;
366
- if (this.isValidBounds(idealBounds, container, constraints.minSize)) return idealBounds;
367
- if (modifiers.centerResize && modifiers.preserveAspectRatio && constraints.aspectRatio) return this.constrainCenterResizeWithAspectRatio(idealBounds, context);
368
- if (modifiers.preserveAspectRatio && constraints.aspectRatio) return this.constrainWithAspectRatio(idealBounds, context, handle);
369
- if (modifiers.centerResize) return this.constrainCenterResize(idealBounds, context);
370
- return this.simpleConstrainBounds(idealBounds, container, constraints.minSize);
141
+ disconnectedCallback() {
142
+ super.disconnectedCallback();
143
+ this.resizeObserver?.disconnect();
144
+ this.cleanup();
371
145
  }
372
- isValidBounds(bounds, container, minSize) {
373
- return bounds.x >= 0 && bounds.y >= 0 && bounds.width >= minSize && bounds.height >= minSize && bounds.x + bounds.width <= container.width && bounds.y + bounds.height <= container.height;
374
- }
375
- constrainWithAspectRatio(idealBounds, context, handle) {
376
- const { container, constraints, initialBounds } = context;
377
- if (!constraints.aspectRatio) return initialBounds;
378
- const aspectRatio = constraints.aspectRatio;
379
- const maxWidth = container.width - Math.max(0, idealBounds.x);
380
- const maxHeight = container.height - Math.max(0, idealBounds.y);
381
- let constrainedWidth = Math.max(constraints.minSize, Math.min(maxWidth, idealBounds.width));
382
- let constrainedHeight = constrainedWidth / aspectRatio;
383
- if (constrainedHeight > maxHeight) {
384
- constrainedHeight = Math.max(constraints.minSize, maxHeight);
385
- constrainedWidth = constrainedHeight * aspectRatio;
386
- }
387
- if (constrainedWidth < constraints.minSize) {
388
- constrainedWidth = constraints.minSize;
389
- constrainedHeight = constrainedWidth / aspectRatio;
390
- }
391
- const result = {
392
- ...idealBounds,
393
- width: constrainedWidth,
394
- height: constrainedHeight
395
- };
396
- switch (handle) {
397
- case "top-left":
398
- result.x = initialBounds.x + initialBounds.width - constrainedWidth;
399
- result.y = initialBounds.y + initialBounds.height - constrainedHeight;
400
- break;
401
- case "top-right":
402
- result.y = initialBounds.y + initialBounds.height - constrainedHeight;
403
- break;
404
- case "bottom-left":
405
- result.x = initialBounds.x + initialBounds.width - constrainedWidth;
406
- break;
407
- }
408
- result.x = Math.max(0, Math.min(container.width - result.width, result.x));
409
- result.y = Math.max(0, Math.min(container.height - result.height, result.y));
410
- return result;
411
- }
412
- constrainCenterResize(idealBounds, context) {
413
- const { container, constraints, initialBounds } = context;
414
- const centerX = initialBounds.x + initialBounds.width / 2;
415
- const centerY = initialBounds.y + initialBounds.height / 2;
416
- const maxWidthFromCenter = Math.min(centerX * 2, (container.width - centerX) * 2);
417
- const maxHeightFromCenter = Math.min(centerY * 2, (container.height - centerY) * 2);
418
- const constrainedWidth = Math.max(constraints.minSize, Math.min(maxWidthFromCenter, idealBounds.width));
419
- const constrainedHeight = Math.max(constraints.minSize, Math.min(maxHeightFromCenter, idealBounds.height));
420
- return {
421
- x: centerX - constrainedWidth / 2,
422
- y: centerY - constrainedHeight / 2,
423
- width: constrainedWidth,
424
- height: constrainedHeight
425
- };
426
- }
427
- constrainCenterResizeWithAspectRatio(idealBounds, context) {
428
- const { container, constraints, initialBounds } = context;
429
- if (!constraints.aspectRatio) return initialBounds;
430
- const aspectRatio = constraints.aspectRatio;
431
- const centerX = initialBounds.x + initialBounds.width / 2;
432
- const centerY = initialBounds.y + initialBounds.height / 2;
433
- const maxWidthFromCenter = Math.min(centerX * 2, (container.width - centerX) * 2);
434
- const maxHeightFromCenter = Math.min(centerY * 2, (container.height - centerY) * 2);
435
- let constrainedWidth = Math.max(constraints.minSize, Math.min(maxWidthFromCenter, idealBounds.width));
436
- let constrainedHeight = constrainedWidth / aspectRatio;
437
- if (constrainedHeight > maxHeightFromCenter) {
438
- constrainedHeight = Math.max(constraints.minSize, maxHeightFromCenter);
439
- constrainedWidth = constrainedHeight * aspectRatio;
440
- }
441
- if (constrainedWidth < constraints.minSize) {
442
- constrainedWidth = constraints.minSize;
443
- constrainedHeight = constrainedWidth / aspectRatio;
444
- }
445
- if (constrainedHeight < constraints.minSize) {
446
- constrainedHeight = constraints.minSize;
447
- constrainedWidth = constrainedHeight * aspectRatio;
448
- }
449
- return {
450
- x: centerX - constrainedWidth / 2,
451
- y: centerY - constrainedHeight / 2,
452
- width: constrainedWidth,
453
- height: constrainedHeight
454
- };
455
- }
456
- simpleConstrainBounds(bounds, container, minSize) {
457
- return {
458
- x: Math.max(0, Math.min(container.width - bounds.width, bounds.x)),
459
- y: Math.max(0, Math.min(container.height - bounds.height, bounds.y)),
460
- width: Math.max(minSize, Math.min(container.width - bounds.x, bounds.width)),
461
- height: Math.max(minSize, Math.min(container.height - bounds.y, bounds.height))
462
- };
463
- }
464
- constrainResizeDeltas(initialBounds, deltaX, deltaY, handle, container, minSize) {
465
- let constrainedDeltaX = deltaX;
466
- let constrainedDeltaY = deltaY;
467
- switch (handle) {
468
- case "bottom-right":
469
- constrainedDeltaX = Math.max(minSize - initialBounds.width, Math.min(container.width - initialBounds.x - initialBounds.width, deltaX));
470
- constrainedDeltaY = Math.max(minSize - initialBounds.height, Math.min(container.height - initialBounds.y - initialBounds.height, deltaY));
471
- break;
472
- case "top-left":
473
- constrainedDeltaX = Math.max(-initialBounds.x, Math.min(initialBounds.width - minSize, deltaX));
474
- constrainedDeltaY = Math.max(-initialBounds.y, Math.min(initialBounds.height - minSize, deltaY));
475
- break;
476
- case "top-right":
477
- constrainedDeltaX = Math.max(minSize - initialBounds.width, Math.min(container.width - initialBounds.x - initialBounds.width, deltaX));
478
- constrainedDeltaY = Math.max(-initialBounds.y, Math.min(initialBounds.height - minSize, deltaY));
479
- break;
480
- case "bottom-left":
481
- constrainedDeltaX = Math.max(-initialBounds.x, Math.min(initialBounds.width - minSize, deltaX));
482
- constrainedDeltaY = Math.max(minSize - initialBounds.height, Math.min(container.height - initialBounds.y - initialBounds.height, deltaY));
483
- break;
484
- case "right":
485
- constrainedDeltaX = Math.max(minSize - initialBounds.width, Math.min(container.width - initialBounds.x - initialBounds.width, deltaX));
486
- break;
487
- case "left":
488
- constrainedDeltaX = Math.max(-initialBounds.x, Math.min(initialBounds.width - minSize, deltaX));
489
- break;
490
- case "bottom":
491
- constrainedDeltaY = Math.max(minSize - initialBounds.height, Math.min(container.height - initialBounds.y - initialBounds.height, deltaY));
492
- break;
493
- case "top":
494
- constrainedDeltaY = Math.max(-initialBounds.y, Math.min(initialBounds.height - minSize, deltaY));
495
- break;
496
- }
497
- return {
498
- deltaX: constrainedDeltaX,
499
- deltaY: constrainedDeltaY
146
+ cleanup() {
147
+ this.isDragging = false;
148
+ this.isResizing = null;
149
+ this.dragStart = null;
150
+ this.dragStartPosition = {
151
+ x: 0,
152
+ y: 0
500
153
  };
154
+ this.resizeStartCorner = null;
155
+ this.resizeStartSize = null;
156
+ this.resizeStartPosition = null;
157
+ document.removeEventListener("pointermove", this.handlePointerMove);
158
+ document.removeEventListener("pointerup", this.handlePointerUp);
501
159
  }
502
160
  dispatchBoundsChange() {
503
161
  this.dispatchEvent(new CustomEvent("bounds-change", {
@@ -519,35 +177,35 @@ let EFResizableBox = class EFResizableBox$1 extends LitElement {
519
177
  style=${styleMap(boxStyles)}
520
178
  @pointerdown=${(e) => this.handlePointerDown(e, "move")}
521
179
  >
522
- ${this.renderHandles()}
180
+ ${[
181
+ "nw",
182
+ "n",
183
+ "ne",
184
+ "e",
185
+ "se",
186
+ "s",
187
+ "sw",
188
+ "w"
189
+ ].map((handle) => html`
190
+ <div
191
+ class="handle ${handle}"
192
+ @pointerdown=${(e) => {
193
+ e.stopPropagation();
194
+ this.handlePointerDown(e, "resize", handle);
195
+ }}
196
+ ></div>
197
+ `)}
523
198
  <slot></slot>
524
199
  </div>
525
200
  `;
526
201
  }
527
- renderHandles() {
528
- return [
529
- "top-left",
530
- "top-right",
531
- "bottom-left",
532
- "bottom-right",
533
- "top",
534
- "right",
535
- "bottom",
536
- "left"
537
- ].map((handle) => html`
538
- <div
539
- class="handle ${handle}"
540
- @pointerdown=${(e) => this.handlePointerDown(e, "resize", handle)}
541
- ></div>
542
- `);
543
- }
544
202
  };
545
203
  __decorate([property({ type: Object })], EFResizableBox.prototype, "bounds", void 0);
546
204
  __decorate([state()], EFResizableBox.prototype, "containerWidth", void 0);
547
205
  __decorate([state()], EFResizableBox.prototype, "containerHeight", void 0);
548
206
  __decorate([property({ type: Number })], EFResizableBox.prototype, "minSize", void 0);
549
207
  __decorate([state()], EFResizableBox.prototype, "isDragging", void 0);
550
- __decorate([state()], EFResizableBox.prototype, "dragMode", void 0);
208
+ __decorate([state()], EFResizableBox.prototype, "isResizing", void 0);
551
209
  EFResizableBox = __decorate([customElement("ef-resizable-box")], EFResizableBox);
552
210
 
553
211
  //#endregion