@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
@@ -35,13 +35,13 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.SelectedOutlineOverlay = exports.selectedOutlineDragThresholdPx = exports.getTransformedSvgViewportPoints = exports.getSequencesWithSelectableOutlines = exports.getSelectedSequenceKeys = exports.getSelectedOutlineRotationPivot = exports.getSelectedOutlineRotationDeltaDegrees = exports.getSelectedOutlineRotationCornerInfo = exports.getSelectedEffectFieldsBySequenceKey = exports.getSelectedCropInfo = exports.getOutlineSelectionInteraction = exports.snapSelectedOutlineUv = exports.snapSelectedOutlineTransformOriginUv = exports.snapSelectedOutlineRotationDeltaDegrees = exports.selectedOutlineUvSnapThresholdPx = exports.selectedOutlineTransformOriginSnapThresholdPx = exports.isSelectedOutlineDragPastThreshold = exports.getSelectedOutlineTransformOriginLockedAxis = exports.getSelectedOutlineTransformOriginDragChanges = exports.getSelectedOutlineScaleEdgeInfo = exports.getSelectedOutlineScaleDragValues = exports.getSelectedOutlineScaleDragStates = exports.getSelectedOutlineScaleDragChanges = exports.getSelectedOutlineRotationDragValues = exports.getSelectedOutlineRotationDragStates = exports.getSelectedOutlineRotationDragChanges = exports.getSelectedOutlineKeyboardNudgeDeltas = exports.getSelectedOutlineKeyboardNudgeDelta = exports.getSelectedOutlineDragValues = exports.getSelectedOutlineDragChanges = exports.getSelectedOutlineCropFollowingTransformOrigin = exports.getSelectedOutlineCropDragValues = exports.getSelectedOutlineCropDragChanges = exports.getSelectedOutlineActiveSchema = exports.getSelectedOutline3DRotationDragValues = exports.compensateTranslateForTransformOrigin = exports.applySelectedOutlineTransformOriginAxisLock = exports.applySelectedOutlineDragAxisLock = exports.orderOutlinesForRendering = void 0;
37
37
  const jsx_runtime_1 = require("react/jsx-runtime");
38
+ const canvas_1 = require("@remotion/canvas");
38
39
  const player_1 = require("@remotion/player");
39
40
  const react_1 = __importStar(require("react"));
40
41
  const remotion_1 = require("remotion");
41
42
  const no_react_1 = require("remotion/no-react");
42
43
  const client_id_1 = require("../helpers/client-id");
43
44
  const interactivity_enabled_1 = require("../helpers/interactivity-enabled");
44
- const timeline_node_path_key_1 = require("../helpers/timeline-node-path-key");
45
45
  const use_is_fullscreen_1 = require("../helpers/use-is-fullscreen");
46
46
  const use_runtime_values_1 = require("../helpers/use-runtime-values");
47
47
  const editor_outlines_1 = require("../state/editor-outlines");
@@ -58,6 +58,7 @@ const SelectedOutlineRenderer_1 = require("./SelectedOutlineRenderer");
58
58
  const get_timeline_keyframes_1 = require("./Timeline/get-timeline-keyframes");
59
59
  const TimelineSelection_1 = require("./Timeline/TimelineSelection");
60
60
  const transform_3d_mode_2 = require("./Timeline/transform-3d-mode");
61
+ const { calculateTimeline, getCanvasSelectableOutlines, getCanvasVisibleOutlineTargets, getCanvasActiveOutlineTargets, getCanvasOutlineActivity, getCanvasOutlineLayoutTargets, } = canvas_1.CanvasInternals;
61
62
  const selected_outline_drag_2 = require("./selected-outline-drag");
62
63
  Object.defineProperty(exports, "applySelectedOutlineDragAxisLock", { enumerable: true, get: function () { return selected_outline_drag_2.applySelectedOutlineDragAxisLock; } });
63
64
  Object.defineProperty(exports, "applySelectedOutlineTransformOriginAxisLock", { enumerable: true, get: function () { return selected_outline_drag_2.applySelectedOutlineTransformOriginAxisLock; } });
@@ -150,44 +151,29 @@ const calculateOutlineTargets = ({ connectedClientId, editorShowOutlines, getDra
150
151
  return [];
151
152
  }
152
153
  const previewInteractive = connectedClientId !== null && studioInteractivityEnabled;
153
- const firstNodePathInfoBySourceNode = new Map();
154
- const selectedSourceNodeKeys = new Set();
155
- for (const { key, nodePathInfo } of selectableOutlines) {
156
- const sourceNodeKey = (0, timeline_node_path_key_1.timelineSequenceNodePathToKey)(nodePathInfo.sequenceSubscriptionKey);
157
- if (selectedSequenceKeys.has(key)) {
158
- selectedSourceNodeKeys.add(sourceNodeKey);
159
- }
160
- const currentFirst = firstNodePathInfoBySourceNode.get(sourceNodeKey);
161
- if (currentFirst === undefined || nodePathInfo.index < currentFirst.index) {
162
- firstNodePathInfoBySourceNode.set(sourceNodeKey, nodePathInfo);
163
- }
164
- }
165
- return selectableOutlines.flatMap((selectableOutline) => {
166
- var _a, _b, _c, _d, _e, _f, _g;
167
- const { key, keyframeDisplayOffset, nodePathInfo, sequence } = selectableOutline;
168
- if (targetKey !== null && targetKey !== key) {
169
- return [];
170
- }
171
- if (sequence.refForOutline === null) {
172
- throw new Error('Expected sequence to have a ref for outline');
173
- }
174
- const selected = selectedSequenceKeys.has(key);
175
- const containsSelection = sequenceKeysContainingSelection.has(key);
154
+ return getCanvasOutlineLayoutTargets({
155
+ selectableOutlines,
156
+ selectedSequenceKeys,
157
+ sequenceKeysContainingSelection,
158
+ targetKey,
159
+ }).flatMap((canvasLayoutTarget) => {
160
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
161
+ const { key, keyframeDisplayOffset, keyframePlaybackRate, nodePathInfo, sequence, } = canvasLayoutTarget;
176
162
  const nodePath = nodePathInfo.sequenceSubscriptionKey;
177
- const sourceNodeKey = (0, timeline_node_path_key_1.timelineSequenceNodePathToKey)(nodePath);
178
- const showSelectedOutline = containsSelection || selectedSourceNodeKeys.has(sourceNodeKey);
179
- const selectionNodePathInfo = firstNodePathInfoBySourceNode.get(sourceNodeKey);
180
- if (selectionNodePathInfo === undefined) {
181
- throw new Error('Expected a first sequence for the source node');
182
- }
183
163
  const { controls } = sequence;
184
164
  const nodePropStatuses = remotion_1.Internals.getPropStatusesCtx(propStatuses, nodePath);
185
165
  const firstKeyframedStatus = Object.values(nodePropStatuses !== null && nodePropStatuses !== void 0 ? nodePropStatuses : {}).find((status) => status.status === 'keyframed');
186
166
  const nodeKeyframeDisplayOffset = (0, get_timeline_keyframes_1.getKeyframeDisplayOffset)({
187
- propStatus: firstKeyframedStatus,
167
+ propStatus: firstKeyframedStatus !== null && firstKeyframedStatus !== void 0 ? firstKeyframedStatus : null,
188
168
  keyframeDisplayOffset,
169
+ keyframePlaybackRate,
170
+ });
171
+ const sourceFrame = (0, get_timeline_keyframes_1.getKeyframeSourceFrame)({
172
+ displayFrame: targetTimelinePosition,
173
+ keyframeDisplayOffset: nodeKeyframeDisplayOffset,
174
+ keyframePlaybackRate,
175
+ propStatus: firstKeyframedStatus !== null && firstKeyframedStatus !== void 0 ? firstKeyframedStatus : null,
189
176
  });
190
- const sourceFrame = targetTimelinePosition - nodeKeyframeDisplayOffset;
191
177
  const dragOverrides = (_a = getDragOverrides(nodePath)) !== null && _a !== void 0 ? _a : {};
192
178
  const runtimeValues = controls
193
179
  ? ((_b = runtimeValuesByStore.get(controls.runtimeValues)) !== null && _b !== void 0 ? _b : controls.runtimeValues.getSnapshot())
@@ -241,6 +227,8 @@ const calculateOutlineTargets = ({ connectedClientId, editorShowOutlines, getDra
241
227
  const selectedForRotation = (selectedRotationInfo === null || selectedRotationInfo === void 0 ? void 0 : selectedRotationInfo.sequenceKey) === key;
242
228
  const selectedForUvHandles = selectedEffectsBySequenceKey.has(key);
243
229
  const fieldSchema = activeSchema === null || activeSchema === void 0 ? void 0 : activeSchema[selected_outline_types_1.translateFieldKey];
230
+ const pathFieldSchema = activeSchema === null || activeSchema === void 0 ? void 0 : activeSchema.d;
231
+ const pathPropStatus = nodePropStatuses === null || nodePropStatuses === void 0 ? void 0 : nodePropStatuses.d;
244
232
  const propStatus = nodePropStatuses === null || nodePropStatuses === void 0 ? void 0 : nodePropStatuses[selected_outline_types_1.translateFieldKey];
245
233
  const scaleFieldSchema = activeSchema === null || activeSchema === void 0 ? void 0 : activeSchema[selected_outline_types_1.scaleFieldKey];
246
234
  const scalePropStatus = nodePropStatuses === null || nodePropStatuses === void 0 ? void 0 : nodePropStatuses[selected_outline_types_1.scaleFieldKey];
@@ -252,7 +240,7 @@ const calculateOutlineTargets = ({ connectedClientId, editorShowOutlines, getDra
252
240
  ((transformOriginPropStatus === null || transformOriginPropStatus === void 0 ? void 0 : transformOriginPropStatus.status) === 'static' ||
253
241
  (transformOriginPropStatus === null || transformOriginPropStatus === void 0 ? void 0 : transformOriginPropStatus.status) === 'keyframed')
254
242
  ? String((_c = remotion_1.Internals.getEffectiveVisualModeValue({
255
- propStatus: transformOriginPropStatus,
243
+ propStatus: transformOriginPropStatus !== null && transformOriginPropStatus !== void 0 ? transformOriginPropStatus : null,
256
244
  dragOverrideValue: dragOverrides[selected_outline_types_1.transformOriginFieldKey],
257
245
  defaultValue: transformOriginFieldSchema.default,
258
246
  frame: sourceFrame,
@@ -260,24 +248,14 @@ const calculateOutlineTargets = ({ connectedClientId, editorShowOutlines, getDra
260
248
  })) !== null && _c !== void 0 ? _c : transformOriginFieldSchema.default)
261
249
  : '50% 50%';
262
250
  const layoutTarget = {
263
- key,
264
- containsSelection,
251
+ ...canvasLayoutTarget,
265
252
  crop,
266
253
  keyframeDisplayOffset: nodeKeyframeDisplayOffset,
267
- nodePathInfo,
268
- ref: sequence.refForOutline,
269
- selected,
270
254
  selectedForCrop,
271
255
  selectedForRotation,
272
256
  selectedForTransformOrigin,
273
257
  selectedForUvHandles,
274
- showSelectedOutline,
275
258
  transformOriginValue: transformOriginValueForRotation,
276
- selection: {
277
- type: 'sequence',
278
- nodePathInfo: selectionNodePathInfo,
279
- },
280
- sequence,
281
259
  };
282
260
  if (mode === 'layout') {
283
261
  return [layoutTarget];
@@ -322,11 +300,16 @@ const calculateOutlineTargets = ({ connectedClientId, editorShowOutlines, getDra
322
300
  const transformOriginSourceFrame = (selectedTransformOriginInfo === null || selectedTransformOriginInfo === void 0 ? void 0 : selectedTransformOriginInfo.displayFrame) === null ||
323
301
  (selectedTransformOriginInfo === null || selectedTransformOriginInfo === void 0 ? void 0 : selectedTransformOriginInfo.displayFrame) === undefined
324
302
  ? sourceFrame
325
- : selectedTransformOriginInfo.displayFrame -
326
- (0, get_timeline_keyframes_1.getKeyframeDisplayOffset)({
327
- propStatus: transformOriginPropStatus,
303
+ : (0, get_timeline_keyframes_1.getKeyframeSourceFrame)({
304
+ displayFrame: selectedTransformOriginInfo.displayFrame,
305
+ propStatus: transformOriginPropStatus !== null && transformOriginPropStatus !== void 0 ? transformOriginPropStatus : null,
306
+ keyframeDisplayOffset: (0, get_timeline_keyframes_1.getKeyframeDisplayOffset)({
307
+ propStatus: transformOriginPropStatus !== null && transformOriginPropStatus !== void 0 ? transformOriginPropStatus : null,
328
308
  keyframeDisplayOffset,
329
- });
309
+ keyframePlaybackRate,
310
+ }),
311
+ keyframePlaybackRate,
312
+ });
330
313
  const canTransformOriginStatus = (transformOriginPropStatus === null || transformOriginPropStatus === void 0 ? void 0 : transformOriginPropStatus.status) === 'static' ||
331
314
  ((transformOriginPropStatus === null || transformOriginPropStatus === void 0 ? void 0 : transformOriginPropStatus.status) === 'keyframed' &&
332
315
  transformOriginPropStatus.interpolationFunction === 'interpolate');
@@ -340,10 +323,11 @@ const calculateOutlineTargets = ({ connectedClientId, editorShowOutlines, getDra
340
323
  (fieldSchema === null || fieldSchema === void 0 ? void 0 : fieldSchema.type) === 'translate' &&
341
324
  canTransformOriginStatus &&
342
325
  canTransformOriginTranslateStatus;
343
- const cropSourceFrame = (selectedCropInfo === null || selectedCropInfo === void 0 ? void 0 : selectedCropInfo.displayFrame) === null ||
344
- (selectedCropInfo === null || selectedCropInfo === void 0 ? void 0 : selectedCropInfo.displayFrame) === undefined
345
- ? sourceFrame
346
- : selectedCropInfo.displayFrame - nodeKeyframeDisplayOffset;
326
+ const cropSourceFrame = {
327
+ displayFrame: (_d = selectedCropInfo === null || selectedCropInfo === void 0 ? void 0 : selectedCropInfo.displayFrame) !== null && _d !== void 0 ? _d : targetTimelinePosition,
328
+ keyframeDisplayOffset: nodeKeyframeDisplayOffset,
329
+ keyframePlaybackRate,
330
+ };
347
331
  const canCropDrag = previewInteractive &&
348
332
  selectedForCrop &&
349
333
  controls !== null &&
@@ -351,6 +335,30 @@ const calculateOutlineTargets = ({ connectedClientId, editorShowOutlines, getDra
351
335
  return [
352
336
  {
353
337
  ...layoutTarget,
338
+ pathDrag: previewInteractive &&
339
+ controls !== null &&
340
+ (pathFieldSchema === null || pathFieldSchema === void 0 ? void 0 : pathFieldSchema.type) === 'svg-path' &&
341
+ (((pathPropStatus === null || pathPropStatus === void 0 ? void 0 : pathPropStatus.status) === 'static' &&
342
+ typeof pathPropStatus.codeValue === 'string') ||
343
+ ((pathPropStatus === null || pathPropStatus === void 0 ? void 0 : pathPropStatus.status) === 'keyframed' &&
344
+ pathFieldSchema.keyframable !== false &&
345
+ pathPropStatus.interpolationFunction === 'interpolatePaths'))
346
+ ? {
347
+ clientId: connectedClientId,
348
+ nodePath,
349
+ propStatus: pathPropStatus,
350
+ schema: controls.schema,
351
+ sourceFrame: {
352
+ displayFrame: targetTimelinePosition,
353
+ keyframeDisplayOffset: (0, get_timeline_keyframes_1.getKeyframeDisplayOffset)({
354
+ propStatus: pathPropStatus,
355
+ keyframeDisplayOffset,
356
+ keyframePlaybackRate,
357
+ }),
358
+ keyframePlaybackRate,
359
+ },
360
+ }
361
+ : null,
354
362
  canCrop: previewInteractive && controls !== null && cropFields !== null,
355
363
  cropDrag: canCropDrag
356
364
  ? {
@@ -363,7 +371,7 @@ const calculateOutlineTargets = ({ connectedClientId, editorShowOutlines, getDra
363
371
  transformOriginPropStatus !== undefined
364
372
  ? {
365
373
  defaultValue: transformOriginFieldSchema.default,
366
- propStatus: transformOriginPropStatus,
374
+ propStatus: transformOriginPropStatus !== null && transformOriginPropStatus !== void 0 ? transformOriginPropStatus : null,
367
375
  value: transformOriginValueForRotation,
368
376
  }
369
377
  : null,
@@ -374,9 +382,11 @@ const calculateOutlineTargets = ({ connectedClientId, editorShowOutlines, getDra
374
382
  propStatus,
375
383
  clientId: connectedClientId,
376
384
  fieldDefault: fieldSchema.default,
385
+ keyframePlaybackRate,
377
386
  keyframeDisplayOffset: (0, get_timeline_keyframes_1.getKeyframeDisplayOffset)({
378
387
  propStatus,
379
388
  keyframeDisplayOffset,
389
+ keyframePlaybackRate,
380
390
  }),
381
391
  nodePath,
382
392
  schema: controls.schema,
@@ -388,9 +398,11 @@ const calculateOutlineTargets = ({ connectedClientId, editorShowOutlines, getDra
388
398
  clientId: connectedClientId,
389
399
  fieldDefault: scaleFieldSchema.default,
390
400
  fieldSchema: scaleFieldSchema,
401
+ keyframePlaybackRate,
391
402
  keyframeDisplayOffset: (0, get_timeline_keyframes_1.getKeyframeDisplayOffset)({
392
403
  propStatus: scalePropStatus,
393
404
  keyframeDisplayOffset,
405
+ keyframePlaybackRate,
394
406
  }),
395
407
  linked: getScaleLockState({
396
408
  nodePath,
@@ -417,9 +429,11 @@ const calculateOutlineTargets = ({ connectedClientId, editorShowOutlines, getDra
417
429
  clientId: connectedClientId,
418
430
  fieldDefault: rotationFieldSchema.default,
419
431
  fieldSchema: rotationFieldSchema,
432
+ keyframePlaybackRate,
420
433
  keyframeDisplayOffset: (0, get_timeline_keyframes_1.getKeyframeDisplayOffset)({
421
434
  propStatus: rotationPropStatus,
422
435
  keyframeDisplayOffset,
436
+ keyframePlaybackRate,
423
437
  }),
424
438
  nodePath,
425
439
  schema: controls.schema,
@@ -430,23 +444,25 @@ const calculateOutlineTargets = ({ connectedClientId, editorShowOutlines, getDra
430
444
  transformOriginDrag: canTransformOriginDrag
431
445
  ? {
432
446
  clientId: connectedClientId,
447
+ keyframePlaybackRate,
433
448
  keyframeDisplayOffset: (0, get_timeline_keyframes_1.getKeyframeDisplayOffset)({
434
- propStatus: transformOriginPropStatus,
449
+ propStatus: transformOriginPropStatus !== null && transformOriginPropStatus !== void 0 ? transformOriginPropStatus : null,
435
450
  keyframeDisplayOffset,
451
+ keyframePlaybackRate,
436
452
  }),
437
453
  nodePath,
438
454
  originDefault: transformOriginFieldSchema.default,
439
455
  originPropStatus: transformOriginPropStatus,
440
- originValue: String((_d = remotion_1.Internals.getEffectiveVisualModeValue({
441
- propStatus: transformOriginPropStatus,
456
+ originValue: String((_e = remotion_1.Internals.getEffectiveVisualModeValue({
457
+ propStatus: transformOriginPropStatus !== null && transformOriginPropStatus !== void 0 ? transformOriginPropStatus : null,
442
458
  dragOverrideValue: dragOverrides[selected_outline_types_1.transformOriginFieldKey],
443
459
  defaultValue: transformOriginFieldSchema.default,
444
460
  frame: transformOriginSourceFrame,
445
461
  shouldResortToDefaultValueIfUndefined: true,
446
- })) !== null && _d !== void 0 ? _d : transformOriginFieldSchema.default),
462
+ })) !== null && _e !== void 0 ? _e : transformOriginFieldSchema.default),
447
463
  rotateValue: String((rotationPropStatus === null || rotationPropStatus === void 0 ? void 0 : rotationPropStatus.status) === 'static' ||
448
464
  (rotationPropStatus === null || rotationPropStatus === void 0 ? void 0 : rotationPropStatus.status) === 'keyframed'
449
- ? ((_e = remotion_1.Internals.getEffectiveVisualModeValue({
465
+ ? ((_f = remotion_1.Internals.getEffectiveVisualModeValue({
450
466
  propStatus: rotationPropStatus,
451
467
  dragOverrideValue: dragOverrides[selected_outline_types_1.rotateFieldKey],
452
468
  defaultValue: (rotationFieldSchema === null || rotationFieldSchema === void 0 ? void 0 : rotationFieldSchema.type) === 'rotation-css'
@@ -454,11 +470,11 @@ const calculateOutlineTargets = ({ connectedClientId, editorShowOutlines, getDra
454
470
  : '0deg',
455
471
  frame: transformOriginSourceFrame,
456
472
  shouldResortToDefaultValueIfUndefined: true,
457
- })) !== null && _e !== void 0 ? _e : '0deg')
473
+ })) !== null && _f !== void 0 ? _f : '0deg')
458
474
  : '0deg'),
459
475
  scaleValue: (scalePropStatus === null || scalePropStatus === void 0 ? void 0 : scalePropStatus.status) === 'static' ||
460
476
  (scalePropStatus === null || scalePropStatus === void 0 ? void 0 : scalePropStatus.status) === 'keyframed'
461
- ? String((_f = remotion_1.Internals.getEffectiveVisualModeValue({
477
+ ? String((_g = remotion_1.Internals.getEffectiveVisualModeValue({
462
478
  propStatus: scalePropStatus,
463
479
  dragOverrideValue: dragOverrides[selected_outline_types_1.scaleFieldKey],
464
480
  defaultValue: (scaleFieldSchema === null || scaleFieldSchema === void 0 ? void 0 : scaleFieldSchema.type) === 'scale'
@@ -466,49 +482,46 @@ const calculateOutlineTargets = ({ connectedClientId, editorShowOutlines, getDra
466
482
  : 1,
467
483
  frame: transformOriginSourceFrame,
468
484
  shouldResortToDefaultValueIfUndefined: true,
469
- })) !== null && _f !== void 0 ? _f : 1)
485
+ })) !== null && _g !== void 0 ? _g : 1)
470
486
  : '1',
471
487
  schema: controls.schema,
472
- sourceFrame: transformOriginSourceFrame,
488
+ sourceFrame: {
489
+ displayFrame: (_h = selectedTransformOriginInfo === null || selectedTransformOriginInfo === void 0 ? void 0 : selectedTransformOriginInfo.displayFrame) !== null && _h !== void 0 ? _h : targetTimelinePosition,
490
+ keyframeDisplayOffset: (0, get_timeline_keyframes_1.getKeyframeDisplayOffset)({
491
+ propStatus: transformOriginPropStatus,
492
+ keyframeDisplayOffset,
493
+ keyframePlaybackRate,
494
+ }),
495
+ keyframePlaybackRate,
496
+ },
473
497
  translateDefault: fieldSchema.default,
474
498
  translatePropStatus: propStatus,
475
- translateValue: String((_g = remotion_1.Internals.getEffectiveVisualModeValue({
499
+ translateValue: String((_j = remotion_1.Internals.getEffectiveVisualModeValue({
476
500
  propStatus,
477
501
  dragOverrideValue: dragOverrides[selected_outline_types_1.translateFieldKey],
478
502
  defaultValue: fieldSchema.default,
479
503
  frame: transformOriginSourceFrame,
480
504
  shouldResortToDefaultValueIfUndefined: true,
481
- })) !== null && _g !== void 0 ? _g : fieldSchema.default),
505
+ })) !== null && _j !== void 0 ? _j : fieldSchema.default),
482
506
  }
483
507
  : null,
484
508
  },
485
509
  ];
486
510
  });
487
511
  };
488
- const ActiveSelectedOutlineOverlayUnmemoized = ({ calculateOutlineTargetsForCurrentState, compositionHeight, compositionWidth, draggingOutline, getLatestOutlineTargetByKey, getSelectableOutlines, hoveredTimelineNodePathKey, measureAllOutlines, onDraggingChange, onContextMenuOpenChange, onSelect, scale, selectedSequenceKeys, sequenceKeysContainingSelection, sequences, translationX, translationY, }) => {
512
+ const ActiveSelectedOutlineOverlayUnmemoized = ({ calculateOutlineTargetsForCurrentState, compositionHeight, compositionWidth, draggingOutline, getAllDragTargets, getLatestOutlineTargetByKey, getSelectableOutlines, hoveredTimelineNodePathKey, measureAllOutlines, onDraggingChange, onContextMenuOpenChange, onSelect, scale, selectedSequenceKeys, sequenceKeysContainingSelection, sequences, translationX, translationY, }) => {
489
513
  const timelinePosition = remotion_1.Internals.Timeline.useTimelinePosition();
490
514
  const updateOutlinesRef = (0, react_1.useRef)(() => undefined);
491
515
  const selectableOutlines = (0, react_1.useMemo)(() => {
492
516
  return getSelectableOutlines(timelinePosition);
493
517
  }, [getSelectableOutlines, timelinePosition]);
494
- const selectableOutlinesForLayout = (0, react_1.useMemo)(() => {
495
- if (measureAllOutlines) {
496
- return selectableOutlines;
497
- }
498
- // A timeline item can represent multiple connected canvas instances.
499
- // Keep every instance of an active source node without calculating targets
500
- // for unrelated timeline items while the canvas itself is inactive.
501
- const activeNodePathKeys = new Set();
502
- for (const { key, nodePathInfo } of selectableOutlines) {
503
- const nodePathKey = (0, timeline_node_path_key_1.timelineSequenceNodePathToKey)(nodePathInfo.sequenceSubscriptionKey);
504
- if (selectedSequenceKeys.has(key) ||
505
- sequenceKeysContainingSelection.has(key) ||
506
- nodePathKey === hoveredTimelineNodePathKey) {
507
- activeNodePathKeys.add(nodePathKey);
508
- }
509
- }
510
- return selectableOutlines.filter(({ nodePathInfo }) => activeNodePathKeys.has((0, timeline_node_path_key_1.timelineSequenceNodePathToKey)(nodePathInfo.sequenceSubscriptionKey)));
511
- }, [
518
+ const selectableOutlinesForLayout = (0, react_1.useMemo)(() => getCanvasActiveOutlineTargets({
519
+ targets: selectableOutlines,
520
+ selectedSequenceKeys,
521
+ sequenceKeysContainingSelection,
522
+ hoveredNodePathKey: hoveredTimelineNodePathKey,
523
+ measureAll: measureAllOutlines,
524
+ }), [
512
525
  hoveredTimelineNodePathKey,
513
526
  measureAllOutlines,
514
527
  selectableOutlines,
@@ -548,11 +561,12 @@ const ActiveSelectedOutlineOverlayUnmemoized = ({ calculateOutlineTargetsForCurr
548
561
  (0, react_1.useLayoutEffect)(() => {
549
562
  updateOutlinesRef.current();
550
563
  }, [scale, translationX, translationY]);
551
- return (jsx_runtime_1.jsx(SelectedOutlineRenderer_1.SelectedOutlineRenderer, { compositionHeight: compositionHeight, compositionWidth: compositionWidth, dragging: draggingOutline, getLatestOutlineTargetByKey: getLatestOutlineTargetByKey, outlineTargets: outlineTargets, onDraggingChange: onDraggingChange, onContextMenuOpenChange: onContextMenuOpenChange, onSelect: onSelect, scale: scale, sequences: sequences, updateOutlinesRef: updateOutlinesRef }));
564
+ return (jsx_runtime_1.jsx(SelectedOutlineRenderer_1.SelectedOutlineRenderer, { compositionHeight: compositionHeight, compositionWidth: compositionWidth, dragging: draggingOutline, getAllDragTargets: getAllDragTargets, getLatestOutlineTargetByKey: getLatestOutlineTargetByKey, outlineTargets: outlineTargets, onDraggingChange: onDraggingChange, onContextMenuOpenChange: onContextMenuOpenChange, onSelect: onSelect, scale: scale, sequences: sequences, updateOutlinesRef: updateOutlinesRef }));
552
565
  };
553
566
  const ActiveSelectedOutlineOverlay = react_1.default.memo(ActiveSelectedOutlineOverlayUnmemoized);
554
567
  const SelectedOutlineOverlayUnmemoized = ({ canvasHovered, compositionHeight, compositionWidth, scale, translationX, translationY, }) => {
555
568
  const { selectedItems, selectItem } = (0, TimelineSelection_1.useTimelineSelection)();
569
+ const currentSelection = (0, TimelineSelection_1.useCurrentTimelineSelectionStateAsRef)();
556
570
  const { sequences } = (0, react_1.useContext)(remotion_1.Internals.SequenceManager);
557
571
  const { compositions } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
558
572
  const { propStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
@@ -575,19 +589,33 @@ const SelectedOutlineOverlayUnmemoized = ({ canvasHovered, compositionHeight, co
575
589
  const selectedTransformOriginInfo = (0, react_1.useMemo)(() => (0, selected_outline_measurement_1.getSelectedTransformOriginInfo)(selectedItems), [selectedItems]);
576
590
  const selectedRotationInfo = (0, react_1.useMemo)(() => (0, selected_outline_measurement_1.getSelectedRotationInfo)(selectedItems), [selectedItems]);
577
591
  const selectedCropInfo = (0, react_1.useMemo)(() => (0, selected_outline_measurement_1.getSelectedCropInfo)(selectedItems), [selectedItems]);
578
- const getSelectableOutlines = (0, react_1.useCallback)((timelinePosition) => {
579
- if (isFullscreen ||
580
- !(0, interactivity_enabled_1.isStudioSelectionEnabled)() ||
581
- !previewSelectionAvailable ||
582
- !editorShowOutlines) {
583
- return [];
584
- }
585
- return (0, selected_outline_measurement_1.getSequencesWithSelectableOutlines)({
586
- sequences,
587
- overrideIdsToNodePaths: overrideIdToNodePathMappings,
588
- compositions,
589
- timelinePosition,
590
- });
592
+ const getSelectableOutlines = (0, react_1.useMemo)(() => {
593
+ // Resolve source identities once per sequence snapshot, on first demand.
594
+ // Playback only filters the cached candidates by their visible range.
595
+ let selectableOutlines = null;
596
+ return (timelinePosition) => {
597
+ if (isFullscreen ||
598
+ !(0, interactivity_enabled_1.isStudioSelectionEnabled)() ||
599
+ !previewSelectionAvailable ||
600
+ !editorShowOutlines) {
601
+ return [];
602
+ }
603
+ selectableOutlines !== null && selectableOutlines !== void 0 ? selectableOutlines : (selectableOutlines = getCanvasSelectableOutlines({
604
+ tracks: calculateTimeline({
605
+ sequences: [...sequences],
606
+ overrideIdsToNodePaths: overrideIdToNodePathMappings,
607
+ compositions,
608
+ }),
609
+ timelinePosition: null,
610
+ resolveSequenceNodePathInfo: null,
611
+ }));
612
+ return timelinePosition === null
613
+ ? selectableOutlines
614
+ : getCanvasVisibleOutlineTargets({
615
+ targets: selectableOutlines,
616
+ timelinePosition,
617
+ });
618
+ };
591
619
  }, [
592
620
  compositions,
593
621
  editorShowOutlines,
@@ -666,7 +694,38 @@ const SelectedOutlineOverlayUnmemoized = ({ canvasHovered, compositionHeight, co
666
694
  getCurrentFrame,
667
695
  getSelectableOutlinesAtFrame,
668
696
  ]);
669
- const getCurrentSelectableOutlines = (0, react_1.useCallback)(() => getSelectableOutlinesAtFrame(getCurrentFrame()), [getCurrentFrame, getSelectableOutlinesAtFrame]);
697
+ const getAllDragTargets = (0, react_1.useCallback)(() => {
698
+ // Selected layers can be outside the current frame and have no mounted DOM.
699
+ // Only outline measurement and snapping need to be restricted to visible layers.
700
+ const selectedKeys = (0, selected_outline_measurement_1.getSequenceKeysContainingSelection)(currentSelection.current.selectedItems);
701
+ if (selectedKeys.size === 0) {
702
+ return [];
703
+ }
704
+ const selectableOutlines = getSelectableOutlines(null).filter(({ key }) => selectedKeys.has(key));
705
+ const targets = calculateOutlineTargetsForCurrentState({
706
+ mode: 'controls',
707
+ runtimeValuesByStore: new Map(),
708
+ selectableOutlines,
709
+ targetKey: null,
710
+ targetTimelinePosition: getCurrentFrame(),
711
+ });
712
+ const dragTargets = new Map();
713
+ for (const { drag } of targets) {
714
+ if (drag === null) {
715
+ continue;
716
+ }
717
+ const sourceNodeKey = remotion_1.Internals.makeSequencePropsSubscriptionKey(drag.nodePath);
718
+ if (!dragTargets.has(sourceNodeKey)) {
719
+ dragTargets.set(sourceNodeKey, drag);
720
+ }
721
+ }
722
+ return [...dragTargets.values()];
723
+ }, [
724
+ calculateOutlineTargetsForCurrentState,
725
+ currentSelection,
726
+ getCurrentFrame,
727
+ getSelectableOutlines,
728
+ ]);
670
729
  const onDraggingChange = (0, react_1.useCallback)((dragging) => {
671
730
  setDraggingOutline(dragging);
672
731
  if (dragging) {
@@ -676,13 +735,13 @@ const SelectedOutlineOverlayUnmemoized = ({ canvasHovered, compositionHeight, co
676
735
  const selectOutlineItem = (0, react_1.useCallback)((item, interaction) => {
677
736
  selectItem(item, interaction, undefined, { reveal: true });
678
737
  }, [selectItem]);
679
- const measurementActive = canvasHovered ||
680
- draggingOutline ||
681
- canvasContextMenuOpen ||
682
- sequenceKeysContainingSelection.size > 0 ||
683
- (hoveredSequence === null || hoveredSequence === void 0 ? void 0 : hoveredSequence.source) === 'timeline';
684
- const measureAllOutlines = canvasHovered || draggingOutline || canvasContextMenuOpen;
685
- const hoveredTimelineNodePathKey = (hoveredSequence === null || hoveredSequence === void 0 ? void 0 : hoveredSequence.source) === 'timeline' ? hoveredSequence.nodePathKey : null;
738
+ const { measurementActive, measureAllOutlines, hoveredTimelineNodePathKey } = getCanvasOutlineActivity({
739
+ canvasHovered,
740
+ dragging: draggingOutline,
741
+ contextMenuOpen: canvasContextMenuOpen,
742
+ hasSelection: sequenceKeysContainingSelection.size > 0,
743
+ hoveredSequence,
744
+ });
686
745
  (0, react_1.useLayoutEffect)(() => {
687
746
  if (measurementActive) {
688
747
  return;
@@ -690,6 +749,6 @@ const SelectedOutlineOverlayUnmemoized = ({ canvasHovered, compositionHeight, co
690
749
  setHoveredSequence((currentHover) => (currentHover === null || currentHover === void 0 ? void 0 : currentHover.source) === 'canvas' ? null : currentHover);
691
750
  }, [measurementActive, setHoveredSequence]);
692
751
  return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
693
- jsx_runtime_1.jsx(SelectedOutlineKeyboardControls_1.SelectedOutlineKeyboardControls, { getLatestOutlineTargetByKey: getLatestOutlineTargetByKey, getSelectableOutlines: getCurrentSelectableOutlines }), measurementActive ? (jsx_runtime_1.jsx(ActiveSelectedOutlineOverlay, { calculateOutlineTargetsForCurrentState: calculateOutlineTargetsForCurrentState, compositionHeight: compositionHeight, compositionWidth: compositionWidth, draggingOutline: draggingOutline, getLatestOutlineTargetByKey: getLatestOutlineTargetByKey, getSelectableOutlines: getSelectableOutlines, hoveredTimelineNodePathKey: hoveredTimelineNodePathKey, measureAllOutlines: measureAllOutlines, onDraggingChange: onDraggingChange, onContextMenuOpenChange: setCanvasContextMenuOpen, onSelect: selectOutlineItem, scale: scale, selectedSequenceKeys: selectedSequenceKeys, sequenceKeysContainingSelection: sequenceKeysContainingSelection, sequences: sequences, translationX: translationX, translationY: translationY })) : null] }));
752
+ jsx_runtime_1.jsx(SelectedOutlineKeyboardControls_1.SelectedOutlineKeyboardControls, { getAllDragTargets: getAllDragTargets }), measurementActive ? (jsx_runtime_1.jsx(ActiveSelectedOutlineOverlay, { calculateOutlineTargetsForCurrentState: calculateOutlineTargetsForCurrentState, compositionHeight: compositionHeight, compositionWidth: compositionWidth, draggingOutline: draggingOutline, getAllDragTargets: getAllDragTargets, getLatestOutlineTargetByKey: getLatestOutlineTargetByKey, getSelectableOutlines: getSelectableOutlines, hoveredTimelineNodePathKey: hoveredTimelineNodePathKey, measureAllOutlines: measureAllOutlines, onDraggingChange: onDraggingChange, onContextMenuOpenChange: setCanvasContextMenuOpen, onSelect: selectOutlineItem, scale: scale, selectedSequenceKeys: selectedSequenceKeys, sequenceKeysContainingSelection: sequenceKeysContainingSelection, sequences: sequences, translationX: translationX, translationY: translationY })) : null] }));
694
753
  };
695
754
  exports.SelectedOutlineOverlay = react_1.default.memo(SelectedOutlineOverlayUnmemoized);
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import type { SelectedOutline } from './selected-outline-geometry';
3
+ import type { SelectedOutlinePathDragTarget } from './selected-outline-types';
4
+ export declare const SelectedOutlinePathPoints: React.FC<{
5
+ readonly outline: SelectedOutline;
6
+ readonly pathDrag: SelectedOutlinePathDragTarget;
7
+ readonly onDraggingChange: (dragging: boolean) => void;
8
+ }>;