@remotion/studio 4.0.527 → 4.0.529

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 (367) hide show
  1. package/dist/Studio.js +2 -0
  2. package/dist/components/AgentPrompt.js +3 -4
  3. package/dist/components/AppLaunchButton.d.ts +0 -1
  4. package/dist/components/AppLaunchButton.js +2 -5
  5. package/dist/components/AssetAudioVolume.js +2 -2
  6. package/dist/components/AssetSelectorItem.js +5 -5
  7. package/dist/components/AudioWaveform.d.ts +1 -0
  8. package/dist/components/AudioWaveform.js +10 -14
  9. package/dist/components/Button.d.ts +1 -1
  10. package/dist/components/Button.js +2 -2
  11. package/dist/components/CaptionInspector.js +1 -1
  12. package/dist/components/CaptionTextEditor.js +1 -1
  13. package/dist/components/CheckboardToggle.js +1 -1
  14. package/dist/components/CodeFrame.js +1 -1
  15. package/dist/components/CodingAgentButton.js +1 -1
  16. package/dist/components/ColorPicker/ColorPicker.d.ts +1 -1
  17. package/dist/components/ColorPicker/ColorPicker.js +2 -2
  18. package/dist/components/ColorPicker/ColorPickerPopup.js +1 -1
  19. package/dist/components/ColorPicker/checker.d.ts +1 -1
  20. package/dist/components/CompactExplanation.js +3 -3
  21. package/dist/components/CompositionSelectorItem.js +2 -2
  22. package/dist/components/ConfigSelect.js +1 -1
  23. package/dist/components/ConfigureDefaultEditorModal.js +2 -2
  24. package/dist/components/ControlButton.d.ts +0 -1
  25. package/dist/components/ControlButton.js +2 -2
  26. package/dist/components/CurrentAsset.js +4 -3
  27. package/dist/components/EditorRuler/Ruler.js +6 -3
  28. package/dist/components/EffectPickerModal.js +69 -43
  29. package/dist/components/ElementInstallConfirmation.js +3 -3
  30. package/dist/components/ElementLibrariesSettings.d.ts +2 -0
  31. package/dist/components/ElementLibrariesSettings.js +200 -0
  32. package/dist/components/ElementLibraryModal.js +1 -1
  33. package/dist/components/FramePersistor.js +3 -3
  34. package/dist/components/FullscreenToggle.js +1 -1
  35. package/dist/components/InitialCompositionLoader.js +5 -3
  36. package/dist/components/InlineAction.d.ts +2 -2
  37. package/dist/components/InlineAction.js +2 -3
  38. package/dist/components/InlineEditableTitle.d.ts +1 -1
  39. package/dist/components/InlineEditableTitle.js +3 -3
  40. package/dist/components/InspectorLocationCopy.js +1 -1
  41. package/dist/components/InspectorOpenInEditor.js +14 -3
  42. package/dist/components/InspectorPanel/AlignmentControls.js +31 -12
  43. package/dist/components/InspectorPanel/CollapsibleInspectorSectionHeader.js +1 -1
  44. package/dist/components/InspectorPanel/CompositionInspector.js +1 -5
  45. package/dist/components/InspectorPanel/CompositionMetadata.js +4 -4
  46. package/dist/components/InspectorPanel/EasingInspector.js +7 -3
  47. package/dist/components/InspectorPanel/ElementLibraryButton.js +3 -14
  48. package/dist/components/InspectorPanel/KeyframeEasingNavigator.js +6 -8
  49. package/dist/components/InspectorPanel/KeyframeInspector.js +29 -25
  50. package/dist/components/InspectorPanel/KeyframeSettings.js +16 -11
  51. package/dist/components/InspectorPanel/MultiSequenceField.js +1 -1
  52. package/dist/components/InspectorPanel/MultiSequenceInspector.js +2 -7
  53. package/dist/components/InspectorPanel/MultiSequenceNumberField.js +2 -2
  54. package/dist/components/InspectorPanel/SequenceInspectorHeader.d.ts +3 -1
  55. package/dist/components/InspectorPanel/SequenceInspectorHeader.js +1 -1
  56. package/dist/components/InspectorPanel/SequenceSelectionInspector.js +33 -14
  57. package/dist/components/InspectorPanel/SequenceWrapAction.d.ts +8 -0
  58. package/dist/components/InspectorPanel/SequenceWrapAction.js +143 -0
  59. package/dist/components/InspectorPanel/common.d.ts +6 -2
  60. package/dist/components/InspectorPanel/common.js +25 -9
  61. package/dist/components/InspectorPanel/easing-inspector-selection.d.ts +2 -1
  62. package/dist/components/InspectorPanel/easing-inspector-selection.js +4 -3
  63. package/dist/components/InspectorPanel/keyframe-inspector-frame.d.ts +2 -1
  64. package/dist/components/InspectorPanel/keyframe-inspector-frame.js +2 -2
  65. package/dist/components/InspectorSequenceSection.d.ts +1 -0
  66. package/dist/components/InspectorSequenceSection.js +12 -10
  67. package/dist/components/InspectorSourceLocation.js +2 -2
  68. package/dist/components/KeyboardShortcutsSettings.js +2 -2
  69. package/dist/components/LicenseKeyValidation.js +2 -2
  70. package/dist/components/LoopToggle.js +1 -1
  71. package/dist/components/Menu/MenuSubItem.js +4 -2
  72. package/dist/components/Menu/styles.d.ts +2 -2
  73. package/dist/components/MenuBuildIndicator.js +1 -1
  74. package/dist/components/MenuCompositionName.js +1 -1
  75. package/dist/components/Modals.js +7 -6
  76. package/dist/components/ModelManager.js +10 -9
  77. package/dist/components/MuteToggle.js +1 -1
  78. package/dist/components/NewComposition/CancelButton.js +10 -4
  79. package/dist/components/NewComposition/ComboBox.d.ts +1 -1
  80. package/dist/components/NewComposition/ComboBox.js +2 -2
  81. package/dist/components/NewComposition/DuplicateComposition.js +1 -1
  82. package/dist/components/NewComposition/InputDragger.d.ts +4 -2
  83. package/dist/components/NewComposition/InputDragger.js +29 -10
  84. package/dist/components/NewComposition/NewComposition.js +8 -7
  85. package/dist/components/NewComposition/RemInput.d.ts +1 -1
  86. package/dist/components/NewComposition/menu-typeahead.js +1 -1
  87. package/dist/components/OpenIssueButton.js +1 -1
  88. package/dist/components/OutlineToggle.js +1 -1
  89. package/dist/components/PlayPause.js +1 -1
  90. package/dist/components/PlaybackRateSelector.js +1 -1
  91. package/dist/components/PreviewToolbarOverflowButton.js +1 -1
  92. package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +1 -1
  93. package/dist/components/RenderButton.js +2 -4
  94. package/dist/components/RenderModal/InfoBubble.d.ts +1 -1
  95. package/dist/components/RenderModal/InfoBubble.js +2 -2
  96. package/dist/components/RenderModal/NumberSetting.js +1 -1
  97. package/dist/components/RenderModal/OptionExplainerBubble.js +2 -2
  98. package/dist/components/RenderModal/RenderModalAdvanced.js +2 -2
  99. package/dist/components/RenderModal/RenderModalAudio.js +2 -2
  100. package/dist/components/RenderModal/RenderModalBasic.js +3 -3
  101. package/dist/components/RenderModal/RenderModalEncoding.js +4 -4
  102. package/dist/components/RenderModal/RenderModalOutputName.js +1 -1
  103. package/dist/components/RenderModal/SchemaEditor/SchemaLabel.js +1 -1
  104. package/dist/components/RenderModal/SchemaEditor/ZodDiscriminatedUnionEditor.js +1 -1
  105. package/dist/components/RenderModal/SchemaEditor/ZodEnumEditor.js +1 -1
  106. package/dist/components/RenderModal/SchemaEditor/ZodFieldValidation.js +1 -1
  107. package/dist/components/RenderModal/SchemaEditor/ZodStaticFileEditor.js +1 -1
  108. package/dist/components/RenderModal/SchemaEditor/create-zod-values.js +1 -2
  109. package/dist/components/RenderModal/WebRenderModalAdvanced.js +2 -2
  110. package/dist/components/RenderModal/WebRenderModalAudio.js +2 -2
  111. package/dist/components/RenderModal/WebRenderModalBasic.js +3 -3
  112. package/dist/components/RenderModal/WebRenderModalPicture.js +2 -3
  113. package/dist/components/RenderQueue/CaptionQueueItem.js +14 -5
  114. package/dist/components/RenderQueue/CaptionQueueProcessor.js +30 -7
  115. package/dist/components/RenderQueue/QueueJobError.d.ts +8 -0
  116. package/dist/components/RenderQueue/QueueJobError.js +24 -0
  117. package/dist/components/RenderQueue/QueueJobErrorModal.d.ts +8 -0
  118. package/dist/components/RenderQueue/QueueJobErrorModal.js +63 -0
  119. package/dist/components/RenderQueue/RenderQueueError.js +1 -1
  120. package/dist/components/RenderQueue/RenderQueueItemCancelButton.d.ts +3 -1
  121. package/dist/components/RenderQueue/RenderQueueItemCancelButton.js +11 -4
  122. package/dist/components/RenderQueue/RenderQueueOutputName.js +1 -1
  123. package/dist/components/RenderQueue/RenderQueueProgressMessage.js +1 -1
  124. package/dist/components/RenderQueue/RenderQueueRepeat.d.ts +3 -1
  125. package/dist/components/RenderQueue/RenderQueueRepeat.js +20 -3
  126. package/dist/components/RenderQueue/VideoMattingQueueItem.js +24 -27
  127. package/dist/components/RenderQueue/VideoMattingQueueProcessor.js +68 -28
  128. package/dist/components/RenderQueue/caption-job-types.d.ts +3 -1
  129. package/dist/components/RenderQueue/context.d.ts +4 -0
  130. package/dist/components/RenderQueue/context.js +58 -8
  131. package/dist/components/RenderQueue/index.js +2 -3
  132. package/dist/components/RenderQueue/load-model-for-job.d.ts +2 -1
  133. package/dist/components/RenderQueue/load-model-for-job.js +5 -1
  134. package/dist/components/RenderQueue/video-matting-job-types.d.ts +13 -6
  135. package/dist/components/RenderingSettings.js +6 -6
  136. package/dist/components/RulersAndGuidesToggle.js +1 -1
  137. package/dist/components/SegmentedButton.d.ts +0 -2
  138. package/dist/components/SegmentedButton.js +6 -6
  139. package/dist/components/SelectedOutlineCropControls.js +2 -1
  140. package/dist/components/SelectedOutlineEditingHandles.js +9 -2
  141. package/dist/components/SelectedOutlineElement.js +9 -3
  142. package/dist/components/SelectedOutlineKeyboardControls.d.ts +2 -4
  143. package/dist/components/SelectedOutlineKeyboardControls.js +4 -22
  144. package/dist/components/SelectedOutlineOverlay.js +165 -106
  145. package/dist/components/SelectedOutlinePathPoints.d.ts +8 -0
  146. package/dist/components/SelectedOutlinePathPoints.js +457 -0
  147. package/dist/components/SelectedOutlinePolygon.js +21 -46
  148. package/dist/components/SelectedOutlineRenderer.d.ts +3 -5
  149. package/dist/components/SelectedOutlineRenderer.js +32 -136
  150. package/dist/components/SelectedOutlineTransformOriginHandle.js +3 -2
  151. package/dist/components/SelectedOutlineUvControls.js +12 -7
  152. package/dist/components/SettingsButton.js +1 -1
  153. package/dist/components/SettingsModal.js +30 -3
  154. package/dist/components/SettingsModalFooter.d.ts +1 -0
  155. package/dist/components/SettingsModalFooter.js +7 -3
  156. package/dist/components/ShowOutlinesProvider.js +1 -1
  157. package/dist/components/SizeSelector.js +1 -1
  158. package/dist/components/SkillsSettings.d.ts +0 -1
  159. package/dist/components/SkillsSettings.js +14 -15
  160. package/dist/components/SnappingToggle.js +1 -1
  161. package/dist/components/Splitter/SplitterElement.js +1 -2
  162. package/dist/components/StudioSettings.js +2 -2
  163. package/dist/components/TimeValue.js +2 -4
  164. package/dist/components/Timeline/EasingEditorModal.js +3 -3
  165. package/dist/components/Timeline/LoopedTimelineIndicators.d.ts +1 -0
  166. package/dist/components/Timeline/LoopedTimelineIndicators.js +7 -6
  167. package/dist/components/Timeline/TimelineArrayField.js +3 -3
  168. package/dist/components/Timeline/TimelineAssetField.js +3 -3
  169. package/dist/components/Timeline/TimelineClipboardKeybindings.js +0 -1
  170. package/dist/components/Timeline/TimelineColorField.js +3 -3
  171. package/dist/components/Timeline/TimelineDragHandler.js +3 -3
  172. package/dist/components/Timeline/TimelineDuplicateCount.js +1 -1
  173. package/dist/components/Timeline/TimelineEffectItem.js +1 -1
  174. package/dist/components/Timeline/TimelineEffectPropItem.d.ts +1 -0
  175. package/dist/components/Timeline/TimelineEffectPropItem.js +12 -5
  176. package/dist/components/Timeline/TimelineEnumField.js +1 -1
  177. package/dist/components/Timeline/TimelineExpandedRow.d.ts +1 -0
  178. package/dist/components/Timeline/TimelineExpandedRow.js +5 -4
  179. package/dist/components/Timeline/TimelineExpandedSection.d.ts +1 -0
  180. package/dist/components/Timeline/TimelineExpandedSection.js +2 -2
  181. package/dist/components/Timeline/TimelineExpandedTrackKeyframes.d.ts +1 -0
  182. package/dist/components/Timeline/TimelineExpandedTrackKeyframes.js +3 -1
  183. package/dist/components/Timeline/TimelineFieldLabel.js +1 -1
  184. package/dist/components/Timeline/TimelineFontFamilyField.js +14 -14
  185. package/dist/components/Timeline/TimelineFontWeightField.js +1 -1
  186. package/dist/components/Timeline/TimelineKeyframeControls.d.ts +1 -0
  187. package/dist/components/Timeline/TimelineKeyframeControls.js +42 -31
  188. package/dist/components/Timeline/TimelineKeyframeDiamond.js +1 -1
  189. package/dist/components/Timeline/TimelineKeyframeEasingLine.js +1 -1
  190. package/dist/components/Timeline/TimelineLayerChildren.js +2 -2
  191. package/dist/components/Timeline/TimelineList.js +16 -8
  192. package/dist/components/Timeline/TimelineMediaInfo.js +1 -1
  193. package/dist/components/Timeline/TimelineNumberField.js +2 -4
  194. package/dist/components/Timeline/TimelinePrimitiveFieldValue.js +1 -1
  195. package/dist/components/Timeline/TimelineScaleField.js +1 -1
  196. package/dist/components/Timeline/TimelineSchemaField.js +2 -2
  197. package/dist/components/Timeline/TimelineSelection.d.ts +9 -9
  198. package/dist/components/Timeline/TimelineSelection.js +16 -9
  199. package/dist/components/Timeline/TimelineSequence.d.ts +3 -1
  200. package/dist/components/Timeline/TimelineSequence.js +40 -22
  201. package/dist/components/Timeline/TimelineSequenceItem.d.ts +1 -0
  202. package/dist/components/Timeline/TimelineSequenceItem.js +52 -24
  203. package/dist/components/Timeline/TimelineSequenceName.d.ts +1 -0
  204. package/dist/components/Timeline/TimelineSequenceName.js +38 -6
  205. package/dist/components/Timeline/TimelineSequencePropItem.d.ts +3 -0
  206. package/dist/components/Timeline/TimelineSequencePropItem.js +266 -27
  207. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +11 -13
  208. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +98 -77
  209. package/dist/components/Timeline/TimelineTextContentField.js +27 -4
  210. package/dist/components/Timeline/TimelineTimeIndicators.js +10 -5
  211. package/dist/components/Timeline/TimelineTrack.js +1 -1
  212. package/dist/components/Timeline/TimelineTrimTooltip.d.ts +11 -0
  213. package/dist/components/Timeline/TimelineTrimTooltip.js +41 -0
  214. package/dist/components/Timeline/TimelineVideoInfo.d.ts +1 -0
  215. package/dist/components/Timeline/TimelineVideoInfo.js +13 -10
  216. package/dist/components/Timeline/TimelineZoomControls.js +2 -2
  217. package/dist/components/Timeline/delete-selected-keyframe.js +22 -8
  218. package/dist/components/Timeline/delete-selected-timeline-item.d.ts +1 -5
  219. package/dist/components/Timeline/delete-selected-timeline-item.js +7 -93
  220. package/dist/components/Timeline/get-animation-item-selection-for-frame.d.ts +2 -1
  221. package/dist/components/Timeline/get-animation-item-selection-for-frame.js +7 -5
  222. package/dist/components/Timeline/get-keyframed-sequence-drag-targets.d.ts +23 -0
  223. package/dist/components/Timeline/get-keyframed-sequence-drag-targets.js +57 -0
  224. package/dist/components/Timeline/get-node-keyframes.d.ts +2 -1
  225. package/dist/components/Timeline/get-node-keyframes.js +6 -4
  226. package/dist/components/Timeline/get-playback-rate-keyframe-changes.d.ts +21 -0
  227. package/dist/components/Timeline/get-playback-rate-keyframe-changes.js +142 -0
  228. package/dist/components/Timeline/get-sequence-split-menu-item.js +2 -2
  229. package/dist/components/Timeline/get-timeline-keyframes.d.ts +15 -2
  230. package/dist/components/Timeline/get-timeline-keyframes.js +44 -6
  231. package/dist/components/Timeline/keyframe-clipboard.js +17 -3
  232. package/dist/components/Timeline/split-selected-timeline-item.js +4 -1
  233. package/dist/components/Timeline/timeline-field-display-utils.js +1 -0
  234. package/dist/components/Timeline/timeline-field-row-layout.js +1 -0
  235. package/dist/components/Timeline/use-delete-timeline-items.js +17 -11
  236. package/dist/components/Timeline/use-expanded-track-keyframe-rows.d.ts +2 -1
  237. package/dist/components/Timeline/use-expanded-track-keyframe-rows.js +3 -1
  238. package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.js +7 -3
  239. package/dist/components/Timeline/use-timeline-expanded-tree.d.ts +1 -1
  240. package/dist/components/Timeline/use-timeline-expanded-tree.js +3 -0
  241. package/dist/components/Timeline/use-timeline-keyframe-drag.js +28 -19
  242. package/dist/components/TimelineCombobox.d.ts +1 -1
  243. package/dist/components/TimelineCombobox.js +5 -6
  244. package/dist/components/TimelineInOutToggle.js +1 -1
  245. package/dist/components/Transcription/Models.js +1 -1
  246. package/dist/components/Transcription/TranscriptionModal.js +9 -7
  247. package/dist/components/Transcription/resample-media-to-16-khz.d.ts +2 -1
  248. package/dist/components/Transcription/resample-media-to-16-khz.js +20 -2
  249. package/dist/components/UndoRedoButtons.js +1 -1
  250. package/dist/components/UpdatesSettings.js +4 -2
  251. package/dist/components/VideoMatting/Models.js +1 -1
  252. package/dist/components/VideoMatting/VideoMattingModal.js +34 -51
  253. package/dist/components/VideoMatting/VideoMattingModalWithOptionalPackage.js +1 -1
  254. package/dist/components/WebMcp.js +22 -40
  255. package/dist/components/composition-drop-preview.js +1 -0
  256. package/dist/components/effect-drag-and-drop.d.ts +13 -5
  257. package/dist/components/effect-drag-and-drop.js +19 -4
  258. package/dist/components/get-open-in-menu-items.d.ts +2 -1
  259. package/dist/components/get-open-in-menu-items.js +17 -1
  260. package/dist/components/selected-outline-drag.d.ts +1 -6
  261. package/dist/components/selected-outline-drag.js +22 -6
  262. package/dist/components/selected-outline-geometry.d.ts +2 -18
  263. package/dist/components/selected-outline-measurement.d.ts +23 -41
  264. package/dist/components/selected-outline-measurement.js +14 -252
  265. package/dist/components/selected-outline-order.d.ts +4 -11
  266. package/dist/components/selected-outline-order.js +2 -254
  267. package/dist/components/selected-outline-snap.d.ts +1 -1
  268. package/dist/components/selected-outline-snap.js +2 -1
  269. package/dist/components/selected-outline-types.d.ts +20 -28
  270. package/dist/components/selected-outline-uv.d.ts +4 -4
  271. package/dist/components/selected-outline-uv.js +6 -111
  272. package/dist/components/sequence-props-api.js +0 -10
  273. package/dist/components/use-selected-outline-control-target.js +12 -21
  274. package/dist/components/wrap-jsx-node-api.d.ts +2 -0
  275. package/dist/components/wrap-jsx-node-api.js +13 -0
  276. package/dist/error-overlay/remotion-overlay/CompositionIdListItem.js +1 -1
  277. package/dist/error-overlay/remotion-overlay/OpenInEditor.js +46 -3
  278. package/dist/error-overlay/remotion-overlay/StackFrame.js +32 -3
  279. package/dist/esm/{CaptionQueueProcessor-npa6szn1.mjs → CaptionQueueProcessor-qj37c6r2.mjs} +63 -17
  280. package/dist/esm/LazyModels-rjsrgap5.mjs +12 -0
  281. package/dist/esm/LazyModels-rnbjx98t.mjs +12 -0
  282. package/dist/esm/{TranscriptionModal-79m5wgcj.mjs → TranscriptionModal-y7zeqj2d.mjs} +21 -21
  283. package/dist/esm/{VideoMattingModal-31pew0xj.mjs → VideoMattingModal-jzrkhah1.mjs} +51 -69
  284. package/dist/esm/{VideoMattingQueueProcessor-t1hgm2rm.mjs → VideoMattingQueueProcessor-4tkj0f4k.mjs} +69 -26
  285. package/dist/esm/{index-v4tr1bft.mjs → index-09txs1bj.mjs} +5 -0
  286. package/dist/esm/{index-e855w59j.mjs → index-19d05w9e.mjs} +3 -5
  287. package/dist/esm/index-24wge6y5.mjs +102 -0
  288. package/dist/esm/index-3qb54r5j.mjs +157 -0
  289. package/dist/esm/{index-n5gmcvhz.mjs → index-5ycb9e9q.mjs} +2 -4
  290. package/dist/esm/{index-s7qa3xbw.mjs → index-cakcjjy2.mjs} +7 -7
  291. package/dist/esm/{index-r1gr3j3a.mjs → index-dfy1t576.mjs} +50 -1
  292. package/dist/esm/{index-614tdz2q.mjs → index-f9hxt5yh.mjs} +3 -3
  293. package/dist/esm/{index-9x6e1dq0.mjs → index-hqxc6tzp.mjs} +40 -6
  294. package/dist/esm/{index-ac5550e7.mjs → index-jc22b2wb.mjs} +3 -3
  295. package/dist/esm/{index-5t2dwxsk.mjs → index-m01zjph7.mjs} +261 -25
  296. package/dist/esm/{index-ppspzgn9.mjs → index-m2a95v3p.mjs} +4904 -4951
  297. package/dist/esm/{index-9xxg6218.mjs → index-qve7mdfp.mjs} +19 -1
  298. package/dist/esm/{index-vxwg66ar.mjs → index-r9bj4tta.mjs} +47 -60
  299. package/dist/esm/{index-r0ejh5sy.mjs → index-vnc2wdfd.mjs} +44 -27
  300. package/dist/esm/{index-21hxsfaa.mjs → index-vtr5qzam.mjs} +6 -25
  301. package/dist/esm/{index-4zen9prq.mjs → index-x7kg7jqv.mjs} +6809 -5640
  302. package/dist/esm/index.mjs +4 -5
  303. package/dist/esm/internals.mjs +13 -13
  304. package/dist/esm/previewEntry.mjs +18 -15
  305. package/dist/esm/renderEntry.mjs +5 -1
  306. package/dist/helpers/calculate-timeline.d.ts +5 -1
  307. package/dist/helpers/calculate-timeline.js +1 -1
  308. package/dist/helpers/checkerboard-background.d.ts +2 -2
  309. package/dist/helpers/checkerboard-background.js +1 -1
  310. package/dist/helpers/colors.d.ts +131 -112
  311. package/dist/helpers/colors.js +121 -100
  312. package/dist/helpers/create-folder-tree.js +2 -1
  313. package/dist/helpers/editor-guide-selection.d.ts +1 -1
  314. package/dist/helpers/editor-ruler.js +23 -12
  315. package/dist/helpers/get-connected-compositions.d.ts +6 -1
  316. package/dist/helpers/get-connected-compositions.js +1 -1
  317. package/dist/helpers/get-sequence-double-click-action.js +1 -1
  318. package/dist/helpers/get-sequence-visible-range.d.ts +1 -1
  319. package/dist/helpers/get-sequence-visible-range.js +2 -5
  320. package/dist/helpers/get-timeline-nestedness.d.ts +1 -1
  321. package/dist/helpers/get-timeline-nestedness.js +1 -1
  322. package/dist/helpers/get-timeline-sequence-sort-key.d.ts +1 -1
  323. package/dist/helpers/get-timeline-sequence-sort-key.js +1 -1
  324. package/dist/helpers/hoverable.js +4 -4
  325. package/dist/helpers/inject-css.js +5 -7
  326. package/dist/helpers/prism-vsc-dark-plus.d.ts +1 -1
  327. package/dist/helpers/prism-vsc-dark-plus.js +52 -51
  328. package/dist/helpers/resolve-studio-color.d.ts +1 -0
  329. package/dist/helpers/resolve-studio-color.js +11 -0
  330. package/dist/helpers/studio-css-variables.d.ts +1 -0
  331. package/dist/helpers/studio-css-variables.js +104 -0
  332. package/dist/helpers/studio-pixel-ratio.d.ts +1 -0
  333. package/dist/helpers/studio-pixel-ratio.js +7 -0
  334. package/dist/helpers/timeline-node-path-key.d.ts +1 -1
  335. package/dist/helpers/timeline-node-path-key.js +2 -2
  336. package/dist/helpers/use-runtime-values.js +2 -28
  337. package/dist/hot-middleware-client/client.js +5 -3
  338. package/dist/icons/align-center-horizontal.js +2 -1
  339. package/dist/icons/align-left.js +2 -1
  340. package/dist/icons/align-right.js +2 -1
  341. package/dist/icons/{separation.d.ts → background-removal.d.ts} +1 -1
  342. package/dist/icons/background-removal.js +9 -0
  343. package/dist/icons/snowflake.js +1 -3
  344. package/dist/icons/{scissors.d.ts → split.d.ts} +1 -1
  345. package/dist/icons/split.js +8 -0
  346. package/dist/icons/trash.js +2 -2
  347. package/dist/icons/wrap.d.ts +4 -0
  348. package/dist/icons/wrap.js +10 -0
  349. package/dist/previewEntry.js +2 -0
  350. package/dist/renderEntry.js +2 -0
  351. package/dist/state/modals.d.ts +15 -1
  352. package/dist/state/timeline-sequence-hover.d.ts +6 -16
  353. package/dist/state/timeline-sequence-hover.js +6 -67
  354. package/package.json +20 -19
  355. package/dist/components/Timeline/get-easing-selection-after-keyframe-delete.d.ts +0 -15
  356. package/dist/components/Timeline/get-easing-selection-after-keyframe-delete.js +0 -31
  357. package/dist/esm/LazyModels-nh3c8h9p.mjs +0 -12
  358. package/dist/esm/LazyModels-rr5v8h5y.mjs +0 -12
  359. package/dist/esm/index-cw0pnpg5.mjs +0 -50
  360. package/dist/esm/index-k426ye99.mjs +0 -139
  361. package/dist/helpers/get-box-quads-polyfill-internals.d.ts +0 -82
  362. package/dist/helpers/get-box-quads-polyfill-internals.js +0 -2403
  363. package/dist/helpers/get-box-quads-ponyfill.d.ts +0 -10
  364. package/dist/helpers/get-box-quads-ponyfill.js +0 -23
  365. package/dist/icons/scissors.js +0 -8
  366. package/dist/icons/separation.js +0 -7
  367. /package/dist/esm/{resolve-composition-component-location-qrp05g62.mjs → resolve-composition-component-location-2hgf6g0a.mjs} +0 -0
@@ -0,0 +1,457 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SelectedOutlinePathPoints = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const paths_1 = require("@remotion/paths");
6
+ const react_1 = require("react");
7
+ const remotion_1 = require("remotion");
8
+ const colors_1 = require("../helpers/colors");
9
+ const pointer_session_1 = require("../helpers/pointer-session");
10
+ const NotificationCenter_1 = require("./Notifications/NotificationCenter");
11
+ const call_add_keyframe_1 = require("./Timeline/call-add-keyframe");
12
+ const get_timeline_keyframes_1 = require("./Timeline/get-timeline-keyframes");
13
+ const save_sequence_prop_1 = require("./Timeline/save-sequence-prop");
14
+ const SelectedOutlinePathPoints = ({ outline, pathDrag, onDraggingChange }) => {
15
+ const { setDragOverrides, clearDragOverrides, setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
16
+ const { points, connections, implicitTControls } = (0, react_1.useMemo)(() => {
17
+ if (outline.path === null) {
18
+ return {
19
+ points: [],
20
+ connections: [],
21
+ implicitTControls: new Map(),
22
+ };
23
+ }
24
+ try {
25
+ const instructions = (0, paths_1.parsePath)((0, paths_1.normalizePath)(outline.path.d));
26
+ const pathPoints = [];
27
+ const pathConnections = [];
28
+ const pathImplicitTControls = new Map();
29
+ let x = 0;
30
+ let y = 0;
31
+ let subpathX = 0;
32
+ let subpathY = 0;
33
+ let previousCubicControl = null;
34
+ let previousQuadraticControl = null;
35
+ for (const [instructionIndex, instruction] of instructions.entries()) {
36
+ if (instruction.type === 'Z') {
37
+ x = subpathX;
38
+ y = subpathY;
39
+ previousCubicControl = null;
40
+ previousQuadraticControl = null;
41
+ continue;
42
+ }
43
+ if (instruction.type === 'C') {
44
+ pathConnections.push({
45
+ x1: x,
46
+ y1: y,
47
+ x2: instruction.cp1x,
48
+ y2: instruction.cp1y,
49
+ key: `${instructionIndex}-start-handle`,
50
+ }, {
51
+ x1: instruction.x,
52
+ y1: instruction.y,
53
+ x2: instruction.cp2x,
54
+ y2: instruction.cp2y,
55
+ key: `${instructionIndex}-end-handle`,
56
+ });
57
+ pathPoints.push({
58
+ x: instruction.cp1x,
59
+ y: instruction.cp1y,
60
+ key: `${instructionIndex}-cp1`,
61
+ instructionIndex,
62
+ role: 'cp1',
63
+ }, {
64
+ x: instruction.cp2x,
65
+ y: instruction.cp2y,
66
+ key: `${instructionIndex}-cp2`,
67
+ instructionIndex,
68
+ role: 'cp2',
69
+ });
70
+ previousCubicControl = { x: instruction.cp2x, y: instruction.cp2y };
71
+ previousQuadraticControl = null;
72
+ }
73
+ else if (instruction.type === 'S') {
74
+ if (previousCubicControl !== null) {
75
+ const reflectedX = 2 * x - previousCubicControl.x;
76
+ const reflectedY = 2 * y - previousCubicControl.y;
77
+ if (reflectedX !== x || reflectedY !== y) {
78
+ pathConnections.push({
79
+ x1: x,
80
+ y1: y,
81
+ x2: reflectedX,
82
+ y2: reflectedY,
83
+ key: `${instructionIndex}-start-handle`,
84
+ });
85
+ pathPoints.push({
86
+ x: reflectedX,
87
+ y: reflectedY,
88
+ key: `${instructionIndex}-reflected-cp`,
89
+ instructionIndex,
90
+ role: 'reflected-cp',
91
+ });
92
+ }
93
+ }
94
+ pathConnections.push({
95
+ x1: instruction.x,
96
+ y1: instruction.y,
97
+ x2: instruction.cpx,
98
+ y2: instruction.cpy,
99
+ key: `${instructionIndex}-end-handle`,
100
+ });
101
+ pathPoints.push({
102
+ x: instruction.cpx,
103
+ y: instruction.cpy,
104
+ key: `${instructionIndex}-cp`,
105
+ instructionIndex,
106
+ role: 'cp',
107
+ });
108
+ previousCubicControl = { x: instruction.cpx, y: instruction.cpy };
109
+ previousQuadraticControl = null;
110
+ }
111
+ else if (instruction.type === 'Q') {
112
+ pathConnections.push({
113
+ x1: x,
114
+ y1: y,
115
+ x2: instruction.cpx,
116
+ y2: instruction.cpy,
117
+ key: `${instructionIndex}-start-handle`,
118
+ }, {
119
+ x1: instruction.x,
120
+ y1: instruction.y,
121
+ x2: instruction.cpx,
122
+ y2: instruction.cpy,
123
+ key: `${instructionIndex}-end-handle`,
124
+ });
125
+ pathPoints.push({
126
+ x: instruction.cpx,
127
+ y: instruction.cpy,
128
+ key: `${instructionIndex}-cp`,
129
+ instructionIndex,
130
+ role: 'cp',
131
+ });
132
+ previousQuadraticControl = { x: instruction.cpx, y: instruction.cpy };
133
+ previousCubicControl = null;
134
+ }
135
+ else if (instruction.type === 'T') {
136
+ const control = previousQuadraticControl === null
137
+ ? { x, y }
138
+ : {
139
+ x: 2 * x - previousQuadraticControl.x,
140
+ y: 2 * y - previousQuadraticControl.y,
141
+ };
142
+ pathImplicitTControls.set(instructionIndex, control);
143
+ if (control.x !== x || control.y !== y) {
144
+ pathConnections.push({
145
+ x1: x,
146
+ y1: y,
147
+ x2: control.x,
148
+ y2: control.y,
149
+ key: `${instructionIndex}-start-handle`,
150
+ }, {
151
+ x1: instruction.x,
152
+ y1: instruction.y,
153
+ x2: control.x,
154
+ y2: control.y,
155
+ key: `${instructionIndex}-end-handle`,
156
+ });
157
+ pathPoints.push({
158
+ x: control.x,
159
+ y: control.y,
160
+ key: `${instructionIndex}-reflected-cp`,
161
+ instructionIndex,
162
+ role: 'reflected-cp',
163
+ });
164
+ }
165
+ previousQuadraticControl = control;
166
+ previousCubicControl = null;
167
+ }
168
+ else {
169
+ previousCubicControl = null;
170
+ previousQuadraticControl = null;
171
+ }
172
+ if (instruction.type === 'H') {
173
+ x = instruction.x;
174
+ }
175
+ else if (instruction.type === 'V') {
176
+ y = instruction.y;
177
+ }
178
+ else if ('x' in instruction && 'y' in instruction) {
179
+ x = instruction.x;
180
+ y = instruction.y;
181
+ }
182
+ if (instruction.type === 'M') {
183
+ subpathX = x;
184
+ subpathY = y;
185
+ }
186
+ pathPoints.push({
187
+ x,
188
+ y,
189
+ key: `${instructionIndex}-end`,
190
+ instructionIndex,
191
+ role: 'end',
192
+ });
193
+ }
194
+ const { a, b, c, d, e, f } = outline.path.matrix;
195
+ const transformPoint = (localX, localY) => ({
196
+ x: a * localX + c * localY + e,
197
+ y: b * localX + d * localY + f,
198
+ });
199
+ return {
200
+ points: pathPoints.map((point) => ({
201
+ ...transformPoint(point.x, point.y),
202
+ localX: point.x,
203
+ localY: point.y,
204
+ key: point.key,
205
+ instructionIndex: point.instructionIndex,
206
+ role: point.role,
207
+ })),
208
+ connections: pathConnections.map((connection) => {
209
+ const from = transformPoint(connection.x1, connection.y1);
210
+ const to = transformPoint(connection.x2, connection.y2);
211
+ return {
212
+ x1: from.x,
213
+ y1: from.y,
214
+ x2: to.x,
215
+ y2: to.y,
216
+ key: connection.key,
217
+ };
218
+ }),
219
+ implicitTControls: pathImplicitTControls,
220
+ };
221
+ }
222
+ catch (_a) {
223
+ return {
224
+ points: [],
225
+ connections: [],
226
+ implicitTControls: new Map(),
227
+ };
228
+ }
229
+ }, [outline.path]);
230
+ const onPointPointerDown = (event, point) => {
231
+ if (event.button !== 0 || outline.path === null) {
232
+ return;
233
+ }
234
+ const svg = event.currentTarget.ownerSVGElement;
235
+ if (svg === null) {
236
+ return;
237
+ }
238
+ const { a, b, c, d } = outline.path.matrix;
239
+ const determinant = a * d - b * c;
240
+ if (!Number.isFinite(determinant) || determinant === 0) {
241
+ return;
242
+ }
243
+ let instructions;
244
+ try {
245
+ instructions = (0, paths_1.parsePath)((0, paths_1.normalizePath)(outline.path.d));
246
+ }
247
+ catch (_a) {
248
+ return;
249
+ }
250
+ event.preventDefault();
251
+ event.stopPropagation();
252
+ onDraggingChange(true);
253
+ const startX = event.clientX;
254
+ const startY = event.clientY;
255
+ const originalD = (0, paths_1.serializeInstructions)(instructions);
256
+ const sourceFrame = (0, get_timeline_keyframes_1.resolveKeyframeSourceFrame)(pathDrag.sourceFrame, pathDrag.propStatus);
257
+ let lastD = originalD;
258
+ const updatePathOverride = (value) => {
259
+ setDragOverrides(pathDrag.nodePath, 'd', pathDrag.propStatus.status === 'keyframed'
260
+ ? remotion_1.Internals.makeKeyframedDragOverride({
261
+ status: pathDrag.propStatus,
262
+ frame: sourceFrame,
263
+ value,
264
+ })
265
+ : remotion_1.Internals.makeStaticDragOverride(value));
266
+ };
267
+ (0, pointer_session_1.startCapturedPointerSession)({
268
+ event,
269
+ captureTarget: svg,
270
+ onMove: (moveEvent) => {
271
+ moveEvent.preventDefault();
272
+ const deltaX = moveEvent.clientX - startX;
273
+ const deltaY = moveEvent.clientY - startY;
274
+ const localDeltaX = Math.round(((d * deltaX - c * deltaY) / determinant) * 100) / 100;
275
+ const localDeltaY = Math.round(((a * deltaY - b * deltaX) / determinant) * 100) / 100;
276
+ if (localDeltaX === 0 && localDeltaY === 0) {
277
+ if (lastD !== originalD) {
278
+ lastD = originalD;
279
+ updatePathOverride(originalD);
280
+ }
281
+ return;
282
+ }
283
+ const nextX = localDeltaX === 0
284
+ ? point.localX
285
+ : Math.round((point.localX + localDeltaX) * 100) / 100;
286
+ const nextY = localDeltaY === 0
287
+ ? point.localY
288
+ : Math.round((point.localY + localDeltaY) * 100) / 100;
289
+ const translatedX = (value) => nextX === point.localX
290
+ ? value
291
+ : Math.round((value + nextX - point.localX) * 100) / 100;
292
+ const translatedY = (value) => nextY === point.localY
293
+ ? value
294
+ : Math.round((value + nextY - point.localY) * 100) / 100;
295
+ const instruction = instructions[point.instructionIndex];
296
+ if (instruction === undefined) {
297
+ return;
298
+ }
299
+ let updated;
300
+ if (point.role === 'end') {
301
+ if (instruction.type === 'H') {
302
+ updated =
303
+ nextY === point.localY
304
+ ? { ...instruction, x: nextX }
305
+ : { type: 'L', x: nextX, y: nextY };
306
+ }
307
+ else if (instruction.type === 'V') {
308
+ updated =
309
+ nextX === point.localX
310
+ ? { ...instruction, y: nextY }
311
+ : { type: 'L', x: nextX, y: nextY };
312
+ }
313
+ else if (instruction.type === 'C') {
314
+ updated = {
315
+ ...instruction,
316
+ cp2x: translatedX(instruction.cp2x),
317
+ cp2y: translatedY(instruction.cp2y),
318
+ x: nextX,
319
+ y: nextY,
320
+ };
321
+ }
322
+ else if (instruction.type === 'S' || instruction.type === 'Q') {
323
+ updated = {
324
+ ...instruction,
325
+ cpx: translatedX(instruction.cpx),
326
+ cpy: translatedY(instruction.cpy),
327
+ x: nextX,
328
+ y: nextY,
329
+ };
330
+ }
331
+ else if (instruction.type === 'T') {
332
+ const control = implicitTControls.get(point.instructionIndex);
333
+ if (control === undefined) {
334
+ return;
335
+ }
336
+ updated = {
337
+ type: 'Q',
338
+ cpx: translatedX(control.x),
339
+ cpy: translatedY(control.y),
340
+ x: nextX,
341
+ y: nextY,
342
+ };
343
+ }
344
+ else if ('x' in instruction && 'y' in instruction) {
345
+ updated = { ...instruction, x: nextX, y: nextY };
346
+ }
347
+ else {
348
+ return;
349
+ }
350
+ }
351
+ else if (point.role === 'cp1' && instruction.type === 'C') {
352
+ updated = { ...instruction, cp1x: nextX, cp1y: nextY };
353
+ }
354
+ else if (point.role === 'cp2' && instruction.type === 'C') {
355
+ updated = { ...instruction, cp2x: nextX, cp2y: nextY };
356
+ }
357
+ else if (point.role === 'cp' &&
358
+ (instruction.type === 'Q' || instruction.type === 'S')) {
359
+ updated = { ...instruction, cpx: nextX, cpy: nextY };
360
+ }
361
+ else if (point.role === 'reflected-cp' && instruction.type === 'S') {
362
+ updated = {
363
+ type: 'C',
364
+ cp1x: nextX,
365
+ cp1y: nextY,
366
+ cp2x: instruction.cpx,
367
+ cp2y: instruction.cpy,
368
+ x: instruction.x,
369
+ y: instruction.y,
370
+ };
371
+ }
372
+ else if (point.role === 'reflected-cp' && instruction.type === 'T') {
373
+ updated = {
374
+ type: 'Q',
375
+ cpx: nextX,
376
+ cpy: nextY,
377
+ x: instruction.x,
378
+ y: instruction.y,
379
+ };
380
+ }
381
+ else {
382
+ return;
383
+ }
384
+ const nextInstructions = instructions.slice();
385
+ nextInstructions[point.instructionIndex] = updated;
386
+ if (point.role === 'end') {
387
+ const nextInstruction = instructions[point.instructionIndex + 1];
388
+ if ((nextInstruction === null || nextInstruction === void 0 ? void 0 : nextInstruction.type) === 'C') {
389
+ nextInstructions[point.instructionIndex + 1] = {
390
+ ...nextInstruction,
391
+ cp1x: translatedX(nextInstruction.cp1x),
392
+ cp1y: translatedY(nextInstruction.cp1y),
393
+ };
394
+ }
395
+ else if ((nextInstruction === null || nextInstruction === void 0 ? void 0 : nextInstruction.type) === 'Q') {
396
+ nextInstructions[point.instructionIndex + 1] = {
397
+ ...nextInstruction,
398
+ cpx: translatedX(nextInstruction.cpx),
399
+ cpy: translatedY(nextInstruction.cpy),
400
+ };
401
+ }
402
+ }
403
+ const nextD = (0, paths_1.serializeInstructions)(nextInstructions);
404
+ if (lastD === nextD) {
405
+ return;
406
+ }
407
+ lastD = nextD;
408
+ updatePathOverride(nextD);
409
+ },
410
+ onEnd: (reason, endEvent) => {
411
+ onDraggingChange(false);
412
+ if (!(0, pointer_session_1.isPointerSessionRelease)(reason, endEvent) || lastD === originalD) {
413
+ clearDragOverrides(pathDrag.nodePath);
414
+ return;
415
+ }
416
+ const promise = pathDrag.propStatus.status === 'keyframed'
417
+ ? (0, call_add_keyframe_1.callAddSequenceKeyframe)({
418
+ fileName: pathDrag.nodePath.absolutePath,
419
+ nodePath: pathDrag.nodePath,
420
+ fieldKey: 'd',
421
+ sourceFrame,
422
+ value: lastD,
423
+ schema: pathDrag.schema,
424
+ setPropStatuses,
425
+ clientId: pathDrag.clientId,
426
+ })
427
+ : (0, save_sequence_prop_1.saveSequenceProps)({
428
+ changes: [
429
+ {
430
+ fileName: pathDrag.nodePath.absolutePath,
431
+ nodePath: pathDrag.nodePath,
432
+ fieldKey: 'd',
433
+ value: lastD,
434
+ defaultValue: null,
435
+ schema: pathDrag.schema,
436
+ },
437
+ ],
438
+ addedKeyframes: null,
439
+ movedKeyframes: null,
440
+ setPropStatuses,
441
+ clientId: pathDrag.clientId,
442
+ undoLabel: 'Edit path point',
443
+ redoLabel: 'Edit path point back',
444
+ });
445
+ promise
446
+ .catch((error) => {
447
+ (0, NotificationCenter_1.showNotification)(`Could not save path: ${error instanceof Error ? error.message : String(error)}`, 3000);
448
+ })
449
+ .finally(() => clearDragOverrides(pathDrag.nodePath));
450
+ },
451
+ });
452
+ };
453
+ return (jsx_runtime_1.jsxs("g", { children: [connections.map((connection) => (jsx_runtime_1.jsx("line", { x1: connection.x1, y1: connection.y1, x2: connection.x2, y2: connection.y2, stroke: colors_1.BLUE, strokeWidth: 2, pointerEvents: "none" }, connection.key))), points.map((point) => (jsx_runtime_1.jsxs("g", { children: [
454
+ jsx_runtime_1.jsx("circle", { cx: point.x, cy: point.y, r: 10, fill: "transparent", pointerEvents: "all", onPointerDown: (event) => onPointPointerDown(event, point), style: { cursor: 'default' } }), jsx_runtime_1.jsx("circle", { cx: point.x, cy: point.y, r: 4.5, fill: colors_1.WHITE, stroke: colors_1.BLUE, strokeWidth: 2, pointerEvents: "none" })
455
+ ] }, point.key)))] }));
456
+ };
457
+ exports.SelectedOutlinePathPoints = SelectedOutlinePathPoints;
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.SelectedOutlinePolygon = exports.SELECTED_OUTLINE_KEY_ATTR = void 0;
37
37
  const jsx_runtime_1 = require("react/jsx-runtime");
38
+ const canvas_1 = require("@remotion/canvas");
38
39
  const react_1 = __importStar(require("react"));
39
40
  const remotion_1 = require("remotion");
40
41
  const client_id_1 = require("../helpers/client-id");
@@ -49,7 +50,6 @@ const effect_drag_and_drop_1 = require("./effect-drag-and-drop");
49
50
  const ForceSpecificCursor_1 = require("./ForceSpecificCursor");
50
51
  const NotificationCenter_1 = require("./Notifications/NotificationCenter");
51
52
  const selected_outline_drag_1 = require("./selected-outline-drag");
52
- const selected_outline_measurement_1 = require("./selected-outline-measurement");
53
53
  const selected_outline_snap_1 = require("./selected-outline-snap");
54
54
  const selected_outline_types_1 = require("./selected-outline-types");
55
55
  const call_add_keyframe_1 = require("./Timeline/call-add-keyframe");
@@ -57,6 +57,8 @@ const focus_inspector_field_1 = require("./Timeline/focus-inspector-field");
57
57
  const imperative_state_1 = require("./Timeline/imperative-state");
58
58
  const save_sequence_prop_1 = require("./Timeline/save-sequence-prop");
59
59
  const should_clear_selection_on_pointer_down_1 = require("./Timeline/should-clear-selection-on-pointer-down");
60
+ const TimelineSelection_1 = require("./Timeline/TimelineSelection");
61
+ const { CanvasOutlinePolygon, handleCanvasOutlinePointerDown } = canvas_1.CanvasInternals;
60
62
  exports.SELECTED_OUTLINE_KEY_ATTR = 'data-remotion-studio-selected-outline-key';
61
63
  const SelectedOutlinePolygonUnmemoized = ({ compositionHeight, compositionWidth, containsSelection, directlySelected, dragging, getAllDragOutlines, getAllDragTargets, getLayoutTarget, getTarget, hasTarget, hovered, outline, onDraggingChange, onHoverChange, onSnapPointsChange, onSelect, onDoubleClickTarget, scale, showSelectedOutline, translateWithCommandKey, }) => {
62
64
  const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
@@ -67,7 +69,7 @@ const SelectedOutlinePolygonUnmemoized = ({ compositionHeight, compositionWidth,
67
69
  const { editorSnapping } = (0, react_1.useContext)(editor_snapping_1.EditorSnappingContext);
68
70
  const { editorShowGuides, guidesList } = (0, react_1.useContext)(editor_guides_1.EditorShowGuidesContext);
69
71
  const polygonRef = (0, react_1.useRef)(null);
70
- const points = (0, react_1.useMemo)(() => outline.points.map(selected_outline_measurement_1.pointToString).join(' '), [outline.points]);
72
+ const { selectItems } = (0, TimelineSelection_1.useTimelineSelection)();
71
73
  const [effectDropHovered, setEffectDropHovered] = (0, react_1.useState)(false);
72
74
  const visible = showSelectedOutline || hovered;
73
75
  const getEffectDropTarget = react_1.default.useCallback(() => {
@@ -84,45 +86,26 @@ const SelectedOutlinePolygonUnmemoized = ({ compositionHeight, compositionWidth,
84
86
  return {
85
87
  clientId: previewServerState.clientId,
86
88
  fileName: nodePath.absolutePath,
87
- nodePath,
89
+ nodePathInfo: target.nodePathInfo,
88
90
  };
89
91
  }, [getLayoutTarget, previewServerState]);
90
92
  const onPointerDown = react_1.default.useCallback((event) => {
91
93
  var _a;
92
94
  const target = getTarget();
93
- if (event.button !== 0 || target === undefined) {
95
+ const decision = handleCanvasOutlinePointerDown({
96
+ event,
97
+ polygon: polygonRef.current,
98
+ hasTarget: target !== undefined,
99
+ selected: (_a = target === null || target === void 0 ? void 0 : target.selected) !== null && _a !== void 0 ? _a : false,
100
+ containsSelection,
101
+ translateWithCommandKey,
102
+ isMac: is_mac_1.isMac,
103
+ });
104
+ if (decision === null || target === undefined) {
94
105
  return;
95
106
  }
96
- const { drag, selected } = target;
97
- event.preventDefault();
98
- event.stopPropagation();
99
- const temporaryTranslate = translateWithCommandKey &&
100
- (selected || containsSelection) &&
101
- (is_mac_1.isMac ? event.metaKey : event.ctrlKey);
102
- const interaction = temporaryTranslate
103
- ? { shiftKey: false, toggleKey: false }
104
- : (0, selected_outline_measurement_1.getOutlineSelectionInteraction)(event);
105
- const shouldUpdateSelection = !selected || interaction.shiftKey || interaction.toggleKey;
106
- const ownerSvg = (_a = polygonRef.current) === null || _a === void 0 ? void 0 : _a.ownerSVGElement;
107
- let pointerInsideSelectedOutline = false;
108
- if (ownerSvg) {
109
- const screenPoint = ownerSvg.createSVGPoint();
110
- screenPoint.x = event.clientX;
111
- screenPoint.y = event.clientY;
112
- pointerInsideSelectedOutline = Array.from(ownerSvg.querySelectorAll('polygon[data-remotion-directly-selected-outline="true"]')).some((selectedPolygon) => {
113
- const screenTransform = selectedPolygon.getScreenCTM();
114
- if (screenTransform === null) {
115
- return false;
116
- }
117
- const polygonPoint = screenPoint.matrixTransform(screenTransform.inverse());
118
- return (selectedPolygon.isPointInFill(polygonPoint) ||
119
- selectedPolygon.isPointInStroke(polygonPoint));
120
- });
121
- }
122
- const deferSelection = !selected &&
123
- !interaction.shiftKey &&
124
- !interaction.toggleKey &&
125
- (containsSelection || pointerInsideSelectedOutline);
107
+ const { drag } = target;
108
+ const { interaction, temporaryTranslate, shouldUpdateSelection, deferSelection, dragExistingSelection, } = decision;
126
109
  if (!deferSelection && shouldUpdateSelection) {
127
110
  onSelect(target.selection, interaction);
128
111
  }
@@ -139,7 +122,6 @@ const SelectedOutlinePolygonUnmemoized = ({ compositionHeight, compositionWidth,
139
122
  }
140
123
  const startPointerX = event.clientX;
141
124
  const startPointerY = event.clientY;
142
- const dragExistingSelection = selected || deferSelection;
143
125
  const dragTargets = dragExistingSelection
144
126
  ? getAllDragTargets()
145
127
  : drag === null
@@ -407,18 +389,11 @@ const SelectedOutlinePolygonUnmemoized = ({ compositionHeight, compositionWidth,
407
389
  await (0, effect_drag_and_drop_1.addEffectFromDragData)({
408
390
  dragData,
409
391
  fileName: effectDrop.fileName,
410
- nodePath: effectDrop.nodePath,
392
+ nodePathInfo: effectDrop.nodePathInfo,
411
393
  clientId: effectDrop.clientId,
394
+ selectItems,
412
395
  });
413
- }, [getEffectDropTarget]);
414
- return (jsx_runtime_1.jsx("polygon", { ref: polygonRef, [should_clear_selection_on_pointer_down_1.PREVENT_CLEAR_SELECTION_ON_POINTER_DOWN_ATTR]: 'true', [exports.SELECTED_OUTLINE_KEY_ATTR]: outline.key, "data-remotion-directly-selected-outline": directlySelected ? 'true' : undefined, points: points, fill: effectDropHovered ? colors_1.TIMELINE_DROP_BLUE_ALPHA_12 : colors_1.TRANSPARENT, stroke: colors_1.BLUE, strokeOpacity: visible || effectDropHovered ? 1 : 0, strokeWidth: 2, vectorEffect: "non-scaling-stroke", pointerEvents: hasTarget ? 'all' : undefined, onPointerEnter: () => {
415
- if (!dragging) {
416
- onHoverChange(outline.key);
417
- }
418
- }, onPointerLeave: () => {
419
- if (!dragging) {
420
- onHoverChange(null);
421
- }
422
- }, onPointerDown: onPointerDown, onPointerDownCapture: dragAwareDoubleClick.beginPointerGesture, onClick: onClick, onDragOver: onEffectDragOver, onDragLeave: onEffectDragLeave, onDrop: onEffectDrop }));
396
+ }, [getEffectDropTarget, selectItems]);
397
+ return (jsx_runtime_1.jsx(CanvasOutlinePolygon, { ref: polygonRef, [should_clear_selection_on_pointer_down_1.PREVENT_CLEAR_SELECTION_ON_POINTER_DOWN_ATTR]: 'true', [exports.SELECTED_OUTLINE_KEY_ATTR]: outline.key, outline: outline, directlySelected: directlySelected, dragging: dragging, fill: effectDropHovered ? colors_1.TIMELINE_DROP_BLUE_ALPHA_12 : colors_1.TRANSPARENT, stroke: colors_1.BLUE, visible: visible || effectDropHovered, interactive: hasTarget, onHoverChange: onHoverChange, onPointerDown: onPointerDown, onPointerDownCapture: dragAwareDoubleClick.beginPointerGesture, onClick: onClick, onDragOver: onEffectDragOver, onDragLeave: onEffectDragLeave, onDrop: onEffectDrop }));
423
398
  };
424
399
  exports.SelectedOutlinePolygon = react_1.default.memo(SelectedOutlinePolygonUnmemoized);
@@ -1,18 +1,16 @@
1
1
  import React from 'react';
2
- import type { SelectedOutlineLayoutTarget, SelectedOutlineTarget } from './selected-outline-types';
2
+ import type { SelectedOutlineDragTarget, SelectedOutlineLayoutTarget, SelectedOutlineTarget } from './selected-outline-types';
3
3
  export declare const SelectedOutlineRenderer: React.NamedExoticComponent<{
4
4
  readonly compositionHeight: number;
5
5
  readonly compositionWidth: number;
6
6
  readonly dragging: boolean;
7
+ readonly getAllDragTargets: () => readonly SelectedOutlineDragTarget[];
7
8
  readonly getLatestOutlineTargetByKey: (key: string) => SelectedOutlineTarget | undefined;
8
9
  readonly outlineTargets: readonly SelectedOutlineLayoutTarget[];
9
10
  readonly onDraggingChange: (dragging: boolean) => void;
10
11
  readonly onContextMenuOpenChange: (open: boolean) => void;
11
12
  readonly onSelect: (item: import("@remotion/canvas").CanvasSelectionItem, interaction?: import("@remotion/canvas").CanvasSelectionInteraction | undefined) => void;
12
13
  readonly scale: number;
13
- readonly sequences: readonly {
14
- readonly id: string;
15
- readonly parent: string | null;
16
- }[];
14
+ readonly sequences: readonly import("@remotion/canvas").CanvasOutlineSequenceParent[];
17
15
  readonly updateOutlinesRef: React.MutableRefObject<() => void>;
18
16
  }>;