@remotion/studio 4.0.522 → 4.0.524

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 (259) hide show
  1. package/dist/api/install-package.js +4 -2
  2. package/dist/components/ActionTooltip.d.ts +9 -0
  3. package/dist/components/ActionTooltip.js +143 -0
  4. package/dist/components/AssetAudioVolume.d.ts +5 -0
  5. package/dist/components/AssetAudioVolume.js +33 -0
  6. package/dist/components/Canvas.js +8 -8
  7. package/dist/components/CaptionInspector.js +74 -20
  8. package/dist/components/CheckboardToggle.js +9 -10
  9. package/dist/components/Checkbox.d.ts +1 -0
  10. package/dist/components/Checkbox.js +2 -2
  11. package/dist/components/CompositionContextButton.js +4 -1
  12. package/dist/components/CompositionSelectorItem.js +2 -2
  13. package/dist/components/ConfigureLicenseModal.js +1 -1
  14. package/dist/components/CurrentAsset.js +40 -6
  15. package/dist/components/EditorContexts.js +3 -1
  16. package/dist/components/ElementInstallConfirmation.js +254 -137
  17. package/dist/components/FixComputedValueModal.js +38 -8
  18. package/dist/components/FullscreenToggle.js +8 -10
  19. package/dist/components/GlobalKeybindings.js +107 -49
  20. package/dist/components/InspectorPanel/MultiSequenceField.d.ts +12 -0
  21. package/dist/components/InspectorPanel/MultiSequenceField.js +131 -0
  22. package/dist/components/InspectorPanel/MultiSequenceInspector.d.ts +8 -0
  23. package/dist/components/InspectorPanel/MultiSequenceInspector.js +102 -0
  24. package/dist/components/InspectorPanel/MultiSequenceNumberField.d.ts +9 -0
  25. package/dist/components/InspectorPanel/MultiSequenceNumberField.js +88 -0
  26. package/dist/components/InspectorPanel.js +4 -0
  27. package/dist/components/InspectorSequenceSection.js +69 -6
  28. package/dist/components/InstallPackage.js +4 -5
  29. package/dist/components/KeyboardShortcutsSettings.js +212 -33
  30. package/dist/components/LazySyntaxHighlightedSource.d.ts +4 -0
  31. package/dist/components/LazySyntaxHighlightedSource.js +43 -0
  32. package/dist/components/LoopToggle.js +8 -2
  33. package/dist/components/MenuToolbar.js +11 -7
  34. package/dist/components/ModalContainer.d.ts +1 -0
  35. package/dist/components/ModalContainer.js +2 -2
  36. package/dist/components/Modals.js +3 -1
  37. package/dist/components/ModelManager.d.ts +16 -0
  38. package/dist/components/ModelManager.js +200 -0
  39. package/dist/components/ModelsSettings.d.ts +2 -0
  40. package/dist/components/ModelsSettings.js +133 -0
  41. package/dist/components/MuteToggle.d.ts +1 -0
  42. package/dist/components/MuteToggle.js +16 -6
  43. package/dist/components/NewComposition/DismissableModal.d.ts +1 -0
  44. package/dist/components/NewComposition/DismissableModal.js +2 -2
  45. package/dist/components/NewComposition/InputDragger.d.ts +2 -2
  46. package/dist/components/NewComposition/InputDragger.js +6 -6
  47. package/dist/components/NewComposition/NewComposition.d.ts +1 -0
  48. package/dist/components/NewComposition/NewComposition.js +5 -4
  49. package/dist/components/NewComposition/NewFolder.js +9 -8
  50. package/dist/components/NewComposition/RenameComposition.js +3 -2
  51. package/dist/components/NewComposition/RenameFolder.js +15 -10
  52. package/dist/components/NewComposition/SlugPreview.d.ts +7 -0
  53. package/dist/components/NewComposition/SlugPreview.js +18 -0
  54. package/dist/components/OptionalPackageModal.d.ts +11 -0
  55. package/dist/components/OptionalPackageModal.js +155 -0
  56. package/dist/components/OutlineToggle.js +16 -10
  57. package/dist/components/PlayPause.js +11 -9
  58. package/dist/components/PlaybackKeyboardShortcutsManager.d.ts +2 -0
  59. package/dist/components/PlaybackKeyboardShortcutsManager.js +39 -7
  60. package/dist/components/PlaybackRateSelector.js +2 -2
  61. package/dist/components/PreviewToolbar.js +1 -1
  62. package/dist/components/PreviewToolbarOverflowButton.js +19 -4
  63. package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +5 -2
  64. package/dist/components/RadioButton.d.ts +1 -0
  65. package/dist/components/RadioButton.js +2 -2
  66. package/dist/components/RenderButton.js +5 -1
  67. package/dist/components/RenderModal/NumberSetting.d.ts +6 -1
  68. package/dist/components/RenderModal/NumberSetting.js +2 -2
  69. package/dist/components/RenderModal/RenderModalBasic.js +1 -1
  70. package/dist/components/RenderModal/RenderModalOutputName.d.ts +3 -1
  71. package/dist/components/RenderModal/RenderModalOutputName.js +4 -4
  72. package/dist/components/RenderModal/SeparateAudioOption.js +1 -1
  73. package/dist/components/RenderModal/WebRenderModalBasic.js +1 -1
  74. package/dist/components/RenderQueue/CaptionQueueItem.d.ts +6 -0
  75. package/dist/components/RenderQueue/CaptionQueueItem.js +130 -0
  76. package/dist/components/RenderQueue/CaptionQueueProcessor.d.ts +1 -0
  77. package/dist/components/RenderQueue/CaptionQueueProcessor.js +110 -0
  78. package/dist/components/RenderQueue/CaptionQueueProcessorLoader.d.ts +2 -0
  79. package/dist/components/RenderQueue/CaptionQueueProcessorLoader.js +54 -0
  80. package/dist/components/RenderQueue/RenderQueueCopyToClipboard.js +2 -1
  81. package/dist/components/RenderQueue/RenderQueueDownloadItem.js +2 -1
  82. package/dist/components/RenderQueue/RenderQueueItem.js +3 -3
  83. package/dist/components/RenderQueue/RenderQueueItemCancelButton.js +2 -1
  84. package/dist/components/RenderQueue/RenderQueueOpenInFolder.js +2 -1
  85. package/dist/components/RenderQueue/RenderQueueRemoveItem.js +2 -1
  86. package/dist/components/RenderQueue/RenderQueueRepeat.js +2 -1
  87. package/dist/components/RenderQueue/VideoMattingQueueItem.d.ts +6 -0
  88. package/dist/components/RenderQueue/VideoMattingQueueItem.js +130 -0
  89. package/dist/components/RenderQueue/VideoMattingQueueProcessor.d.ts +1 -0
  90. package/dist/components/RenderQueue/VideoMattingQueueProcessor.js +105 -0
  91. package/dist/components/RenderQueue/VideoMattingQueueProcessorLoader.d.ts +2 -0
  92. package/dist/components/RenderQueue/VideoMattingQueueProcessorLoader.js +54 -0
  93. package/dist/components/RenderQueue/caption-job-types.d.ts +47 -0
  94. package/dist/components/RenderQueue/caption-job-types.js +7 -0
  95. package/dist/components/RenderQueue/context.d.ts +16 -0
  96. package/dist/components/RenderQueue/context.js +224 -11
  97. package/dist/components/RenderQueue/index.js +34 -10
  98. package/dist/components/RenderQueue/item-style.d.ts +1 -0
  99. package/dist/components/RenderQueue/item-style.js +2 -1
  100. package/dist/components/RenderQueue/load-model-for-job.d.ts +11 -0
  101. package/dist/components/RenderQueue/load-model-for-job.js +14 -0
  102. package/dist/components/RenderQueue/video-matting-job-types.d.ts +38 -0
  103. package/dist/components/RenderQueue/video-matting-job-types.js +5 -0
  104. package/dist/components/RendersTab.js +4 -4
  105. package/dist/components/RulersAndGuidesToggle.js +7 -1
  106. package/dist/components/SegmentedControl.d.ts +2 -2
  107. package/dist/components/SegmentedControl.js +38 -13
  108. package/dist/components/SelectedOutlinePolygon.js +8 -2
  109. package/dist/components/SettingsButton.d.ts +4 -0
  110. package/dist/components/SettingsButton.js +51 -0
  111. package/dist/components/SettingsModal.d.ts +1 -1
  112. package/dist/components/SettingsModal.js +3 -1
  113. package/dist/components/ShowOutlinesProvider.js +12 -0
  114. package/dist/components/SidebarCollapserControls.js +17 -21
  115. package/dist/components/SizeSelector.js +12 -4
  116. package/dist/components/SkillsSettings.js +2 -3
  117. package/dist/components/SnappingToggle.js +9 -8
  118. package/dist/components/StudioSettings.js +32 -18
  119. package/dist/components/SyntaxHighlightedSource.d.ts +5 -0
  120. package/dist/components/SyntaxHighlightedSource.js +78 -0
  121. package/dist/components/Tabs/vertical.d.ts +1 -0
  122. package/dist/components/Tabs/vertical.js +2 -2
  123. package/dist/components/TimeValue.js +2 -3
  124. package/dist/components/Timeline/SequencePropsObserver.js +4 -0
  125. package/dist/components/Timeline/Timeline.js +49 -81
  126. package/dist/components/Timeline/TimelineClipboardKeybindings.js +2 -4
  127. package/dist/components/Timeline/TimelineDeleteKeybindings.js +3 -18
  128. package/dist/components/Timeline/TimelineDragHandler.js +2 -2
  129. package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +1 -0
  130. package/dist/components/Timeline/TimelineLayerChildren.js +12 -9
  131. package/dist/components/Timeline/TimelineRowChrome.js +11 -3
  132. package/dist/components/Timeline/TimelineSchemaField.js +8 -4
  133. package/dist/components/Timeline/TimelineSelection.d.ts +2 -0
  134. package/dist/components/Timeline/TimelineSelection.js +55 -2
  135. package/dist/components/Timeline/TimelineSequence.js +75 -17
  136. package/dist/components/Timeline/TimelineSequenceItem.d.ts +0 -1
  137. package/dist/components/Timeline/TimelineSequenceItem.js +208 -111
  138. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +23 -3
  139. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +73 -25
  140. package/dist/components/Timeline/TimelineTimeIndicators.js +1 -0
  141. package/dist/components/Timeline/TimelineZoomControls.js +2 -1
  142. package/dist/components/Timeline/timeline-field-display-utils.js +8 -5
  143. package/dist/components/Timeline/use-asset-timeline-context-menu.d.ts +2 -0
  144. package/dist/components/Timeline/use-asset-timeline-context-menu.js +52 -0
  145. package/dist/components/TimelineCombobox.d.ts +1 -0
  146. package/dist/components/TimelineCombobox.js +8 -4
  147. package/dist/components/TimelineInOutToggle.js +14 -18
  148. package/dist/components/Transcription/LazyModels.d.ts +1 -0
  149. package/dist/components/Transcription/LazyModels.js +5 -0
  150. package/dist/components/Transcription/Models.d.ts +6 -0
  151. package/dist/components/Transcription/Models.js +18 -0
  152. package/dist/components/Transcription/TranscriptionModal.d.ts +3 -0
  153. package/dist/components/Transcription/TranscriptionModal.js +428 -0
  154. package/dist/components/Transcription/TranscriptionModalWithOptionalWhisper.d.ts +5 -0
  155. package/dist/components/Transcription/TranscriptionModalWithOptionalWhisper.js +48 -0
  156. package/dist/components/Transcription/caption-output-name.d.ts +2 -0
  157. package/dist/components/Transcription/caption-output-name.js +10 -0
  158. package/dist/components/Transcription/resample-media-to-16-khz.d.ts +6 -0
  159. package/dist/components/Transcription/resample-media-to-16-khz.js +82 -0
  160. package/dist/components/Transcription/whisper-languages.d.ts +2 -0
  161. package/dist/components/Transcription/whisper-languages.js +104 -0
  162. package/dist/components/Transcription/whisper-webgpu-capability.d.ts +2 -0
  163. package/dist/components/Transcription/whisper-webgpu-capability.js +7 -0
  164. package/dist/components/UndoRedoButtons.js +13 -38
  165. package/dist/components/UpdatesSettings.js +8 -12
  166. package/dist/components/VideoMatting/LazyModels.d.ts +1 -0
  167. package/dist/components/VideoMatting/LazyModels.js +5 -0
  168. package/dist/components/VideoMatting/Models.d.ts +6 -0
  169. package/dist/components/VideoMatting/Models.js +18 -0
  170. package/dist/components/VideoMatting/VideoMattingModal.d.ts +3 -0
  171. package/dist/components/VideoMatting/VideoMattingModal.js +207 -0
  172. package/dist/components/VideoMatting/VideoMattingModalWithOptionalPackage.d.ts +5 -0
  173. package/dist/components/VideoMatting/VideoMattingModalWithOptionalPackage.js +46 -0
  174. package/dist/components/VideoMatting/video-matting-capability.d.ts +2 -0
  175. package/dist/components/VideoMatting/video-matting-capability.js +7 -0
  176. package/dist/components/WebMcp.js +439 -22
  177. package/dist/components/handle-drop.js +3 -2
  178. package/dist/components/import-assets.d.ts +3 -2
  179. package/dist/components/import-assets.js +5 -9
  180. package/dist/components/keyboard-shortcuts.d.ts +17 -1
  181. package/dist/components/keyboard-shortcuts.js +191 -89
  182. package/dist/components/public-output-name.d.ts +5 -0
  183. package/dist/components/public-output-name.js +60 -0
  184. package/dist/components/use-model-cache-status.d.ts +7 -0
  185. package/dist/components/use-model-cache-status.js +35 -0
  186. package/dist/error-overlay/remotion-overlay/CodeFrame.js +29 -18
  187. package/dist/esm/CaptionQueueProcessor-k0yrm3dj.mjs +211 -0
  188. package/dist/esm/LazyModels-hc33szyn.mjs +11 -0
  189. package/dist/esm/LazyModels-sg40rjw6.mjs +11 -0
  190. package/dist/esm/SyntaxHighlightedSource-3xks91rz.mjs +1236 -0
  191. package/dist/esm/TranscriptionModal-3ctnxpt6.mjs +1011 -0
  192. package/dist/esm/VideoMattingModal-b0r7e60n.mjs +374 -0
  193. package/dist/esm/VideoMattingQueueProcessor-t1hgm2rm.mjs +109 -0
  194. package/dist/esm/index-1b9skrrd.mjs +142 -0
  195. package/dist/esm/index-2j3d1g81.mjs +261 -0
  196. package/dist/esm/index-5zrb1ft4.mjs +39 -0
  197. package/dist/esm/index-7tt71e8n.mjs +36 -0
  198. package/dist/esm/index-9qtvmwtx.mjs +1366 -0
  199. package/dist/esm/index-9x6e1dq0.mjs +428 -0
  200. package/dist/esm/index-c37kme2v.mjs +46209 -0
  201. package/dist/esm/index-cw0pnpg5.mjs +50 -0
  202. package/dist/esm/index-e3zwf3e7.mjs +36 -0
  203. package/dist/esm/index-er3mh6em.mjs +54688 -0
  204. package/dist/esm/{chunk-je0h1bgt.js → index-k426ye99.mjs} +4 -1
  205. package/dist/esm/index-q2epbw93.mjs +423 -0
  206. package/dist/esm/index-q5xv20xx.mjs +41 -0
  207. package/dist/esm/{chunk-6jf1natv.js → index-rcv7qkt5.mjs} +18 -1
  208. package/dist/esm/index-v4tr1bft.mjs +20 -0
  209. package/dist/esm/index-wbmp5srk.mjs +35 -0
  210. package/dist/esm/index-yfrysr5f.mjs +1154 -0
  211. package/dist/esm/index.mjs +45 -933
  212. package/dist/esm/internals.mjs +13 -114393
  213. package/dist/esm/previewEntry.mjs +387 -115050
  214. package/dist/esm/renderEntry.mjs +5 -5
  215. package/dist/esm/{chunk-m0jqdbkr.js → resolve-composition-component-location-bt2d6qxq.mjs} +1 -1
  216. package/dist/helpers/colors.d.ts +1 -0
  217. package/dist/helpers/colors.js +4 -3
  218. package/dist/helpers/drag-aware-double-click.d.ts +2 -1
  219. package/dist/helpers/drag-aware-double-click.js +12 -1
  220. package/dist/helpers/get-asset-metadata.d.ts +1 -0
  221. package/dist/helpers/get-asset-metadata.js +4 -0
  222. package/dist/helpers/hoverable.js +8 -0
  223. package/dist/helpers/inject-css.js +2 -0
  224. package/dist/helpers/optional-package-dependencies.d.ts +3 -0
  225. package/dist/helpers/optional-package-dependencies.js +24 -0
  226. package/dist/helpers/pointer-session.d.ts +6 -0
  227. package/dist/helpers/pointer-session.js +36 -14
  228. package/dist/helpers/prism-vsc-dark-plus.d.ts +1 -0
  229. package/dist/helpers/prism-vsc-dark-plus.js +305 -0
  230. package/dist/helpers/sequence-node-path-mutations.js +11 -0
  231. package/dist/helpers/slugify-name.d.ts +1 -0
  232. package/dist/helpers/slugify-name.js +14 -0
  233. package/dist/helpers/studio-runtime-config.d.ts +1 -0
  234. package/dist/helpers/studio-runtime-config.js +6 -1
  235. package/dist/helpers/use-create-composition.d.ts +1 -0
  236. package/dist/helpers/use-create-composition.js +12 -7
  237. package/dist/helpers/use-keybinding.d.ts +9 -3
  238. package/dist/helpers/use-keybinding.js +8 -9
  239. package/dist/helpers/use-keyboard-shortcut-label.d.ts +2 -0
  240. package/dist/helpers/use-keyboard-shortcut-label.js +15 -0
  241. package/dist/helpers/use-menu-structure.js +59 -14
  242. package/dist/helpers/use-rename-composition.d.ts +1 -0
  243. package/dist/helpers/use-rename-composition.js +11 -5
  244. package/dist/icons/input-props.d.ts +1 -1
  245. package/dist/icons/input-props.js +2 -2
  246. package/dist/icons/models.d.ts +4 -0
  247. package/dist/icons/models.js +7 -0
  248. package/dist/icons/separation.d.ts +4 -0
  249. package/dist/icons/separation.js +7 -0
  250. package/dist/icons/skills.js +1 -1
  251. package/dist/icons/transcription.d.ts +4 -0
  252. package/dist/icons/transcription.js +7 -0
  253. package/dist/icons/upload.js +1 -1
  254. package/dist/renderEntry.js +2 -2
  255. package/dist/state/modals.d.ts +14 -2
  256. package/package.json +35 -21
  257. package/dist/components/UpdateCheck.d.ts +0 -1
  258. package/dist/components/UpdateCheck.js +0 -79
  259. package/dist/esm/chunk-3netyjd9.js +0 -99793
@@ -60,6 +60,7 @@ const getTimelineSelectedTrackHighlightStyle = (timelineWidth, backgroundColor =
60
60
  position: 'absolute',
61
61
  top: 0,
62
62
  width: timelineWidth,
63
+ minWidth: `calc(100% + ${timeline_layout_1.TIMELINE_PADDING * 2}px)`,
63
64
  });
64
65
  exports.getTimelineSelectedTrackHighlightStyle = getTimelineSelectedTrackHighlightStyle;
65
66
  const getTimelineRowHighlightBackground = ({ showSelectedBackground, selected, containsSelection, hovered, selectedBackground, }) => {
@@ -219,6 +220,7 @@ const defaultTimelineSelectionContextValue = {
219
220
  selectedItems: [],
220
221
  }),
221
222
  containsSelection: () => false,
223
+ remapSelectionNodePaths: () => undefined,
222
224
  clearSelection: () => undefined,
223
225
  };
224
226
  const TimelineSelectionContext = (0, react_1.createContext)(defaultTimelineSelectionContextValue);
@@ -414,7 +416,7 @@ const TimelineSelectAllKeybindings = ({ timeline }) => {
414
416
  }
415
417
  const selectAll = keybindings.registerKeybinding({
416
418
  event: 'keydown',
417
- key: 'a',
419
+ action: 'selectAllSequenceRows',
418
420
  callback: () => {
419
421
  const latestSelectableSequenceSelections = selectableSequenceSelectionsRef.current;
420
422
  if (latestSelectableSequenceSelections.length === 0) {
@@ -422,7 +424,6 @@ const TimelineSelectAllKeybindings = ({ timeline }) => {
422
424
  }
423
425
  currentSelection.current.selectItems(latestSelectableSequenceSelections);
424
426
  },
425
- commandCtrlKey: true,
426
427
  preventDefault: true,
427
428
  triggerIfInputFieldFocused: false,
428
429
  keepRegisteredWhenNotHighestContext: false,
@@ -684,6 +685,56 @@ const TimelineSelectionProvider = ({ children }) => {
684
685
  return availableSelectedItems.some((selected) => selected.type !== 'guide' &&
685
686
  nodePathDescendsFrom(selected.nodePathInfo, nodePathInfo));
686
687
  }, [availableSelectedItems]);
688
+ const remapSelectionNodePaths = (0, react_1.useCallback)((mutations) => {
689
+ const remapItem = (item) => {
690
+ if (item === null || item.type === 'guide') {
691
+ return item;
692
+ }
693
+ const { sequenceSubscriptionKey } = item.nodePathInfo;
694
+ let { nodePath } = sequenceSubscriptionKey;
695
+ let wasRemapped = false;
696
+ for (const mutation of mutations) {
697
+ const file = mutation.files.find((candidate) => candidate.absolutePath === sequenceSubscriptionKey.absolutePath);
698
+ if (!file) {
699
+ continue;
700
+ }
701
+ const nodePathString = JSON.stringify(nodePath);
702
+ const remapping = file.remappings.find((candidate) => candidate.oldNodePath !== null &&
703
+ JSON.stringify(candidate.oldNodePath) === nodePathString);
704
+ if (!remapping) {
705
+ continue;
706
+ }
707
+ wasRemapped = true;
708
+ if (remapping.newNodePath === null) {
709
+ return null;
710
+ }
711
+ nodePath = remapping.newNodePath;
712
+ }
713
+ if (!wasRemapped) {
714
+ return item;
715
+ }
716
+ return {
717
+ ...item,
718
+ nodePathInfo: {
719
+ ...item.nodePathInfo,
720
+ sequenceSubscriptionKey: {
721
+ ...sequenceSubscriptionKey,
722
+ nodePath,
723
+ },
724
+ },
725
+ };
726
+ };
727
+ const snapshot = selectionController.getSnapshot();
728
+ const selectedItems = snapshot.selectedItems
729
+ .map(remapItem)
730
+ .filter((item) => item !== null);
731
+ const anchor = remapItem(snapshot.anchor);
732
+ if (selectedItems.some((item, index) => item !== snapshot.selectedItems[index]) ||
733
+ selectedItems.length !== snapshot.selectedItems.length ||
734
+ anchor !== snapshot.anchor) {
735
+ selectionController.setSnapshot({ selectedItems, anchor });
736
+ }
737
+ }, [selectionController]);
687
738
  const value = (0, react_1.useMemo)(() => ({
688
739
  canSelect,
689
740
  revealRequest,
@@ -694,6 +745,7 @@ const TimelineSelectionProvider = ({ children }) => {
694
745
  registerMarqueeSelectableItem,
695
746
  getMarqueeSelection: getMarqueeSelectionForRect,
696
747
  containsSelection,
748
+ remapSelectionNodePaths,
697
749
  clearSelection,
698
750
  }), [
699
751
  canSelect,
@@ -705,6 +757,7 @@ const TimelineSelectionProvider = ({ children }) => {
705
757
  registerMarqueeSelectableItem,
706
758
  getMarqueeSelectionForRect,
707
759
  containsSelection,
760
+ remapSelectionNodePaths,
708
761
  clearSelection,
709
762
  ]);
710
763
  const currentSelection = (0, react_1.useRef)(value);
@@ -69,6 +69,7 @@ const TimelineSequenceRightEdgeDragHandle_1 = require("./TimelineSequenceRightEd
69
69
  const TimelineVideoInfo_1 = require("./TimelineVideoInfo");
70
70
  const TimelineViewport_1 = require("./TimelineViewport");
71
71
  const TimelineWidthProvider_1 = require("./TimelineWidthProvider");
72
+ const use_asset_timeline_context_menu_1 = require("./use-asset-timeline-context-menu");
72
73
  const use_delete_timeline_items_1 = require("./use-delete-timeline-items");
73
74
  const use_open_sequence_in_apps_1 = require("./use-open-sequence-in-apps");
74
75
  const use_sequence_freeze_frame_menu_item_1 = require("./use-sequence-freeze-frame-menu-item");
@@ -118,8 +119,10 @@ const TimelineSequenceNegativeStartInner = ({ left, width, leftEdgeVisible, clip
118
119
  return (jsx_runtime_1.jsx("div", { style: outerStyle, children: jsx_runtime_1.jsx("div", { style: innerStyle }) }));
119
120
  };
120
121
  const TimelineSequenceNegativeStart = react_1.default.memo(TimelineSequenceNegativeStartInner);
121
- const TimelineSequenceCurrentFrame = ({ s, displayDurationInFrames, premount, postmount, negativeStart, leftEdgeVisible, negativeStartClipped, style, children, edgeDragHandles, nodePathInfo, sequenceFrameOffset, fromCanUpdate, frozenFrame, onMoveDragPointerDown, onPointerDownCapture, onDoubleClick, }) => {
122
+ const TimelineSequenceCurrentFrame = ({ s, displayDurationInFrames, premount, postmount, negativeStart, leftEdgeVisible, negativeStartClipped, style, children, edgeDragHandles, nodePathInfo, sequenceFrameOffset, fromCanUpdate, frozenFrame, onMoveDragPointerDown, onPointerDownCapture, onClick, }) => {
122
123
  var _a, _b, _c;
124
+ const { canvasContent } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
125
+ const isAsset = (canvasContent === null || canvasContent === void 0 ? void 0 : canvasContent.type) === 'asset';
123
126
  const ref = (0, react_1.useRef)(null);
124
127
  const { onSelect, selectable, selected, selectionItem } = (0, TimelineSelection_1.useTimelineRowSelection)(nodePathInfo);
125
128
  (0, TimelineSelection_1.useTimelineMarqueeSelectableItem)(selectionItem, ref);
@@ -163,9 +166,9 @@ const TimelineSequenceCurrentFrame = ({ s, displayDurationInFrames, premount, po
163
166
  ...style,
164
167
  background: negativeStart ? colors_1.TRANSPARENT : style.background,
165
168
  border: negativeStart ? 'none' : style.border,
166
- opacity: selected ? 1 : 0.75,
169
+ opacity: selected || isAsset ? 1 : 0.75,
167
170
  };
168
- }, [negativeStart, selected, style]);
171
+ }, [isAsset, negativeStart, selected, style]);
169
172
  const content = (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [premount ? (jsx_runtime_1.jsx("div", { style: {
170
173
  left: premount.left,
171
174
  width: premount.width,
@@ -200,7 +203,7 @@ const TimelineSequenceCurrentFrame = ({ s, displayDurationInFrames, premount, po
200
203
  display: 'flex',
201
204
  alignItems: 'center',
202
205
  }, children: jsx_runtime_1.jsx(TimelineSequenceFrame_1.TimelineSequenceFrame, { premounted: isPremounting, postmounted: isPostmounting ? s.duration - 1 : null, roundedFrame: roundedFrame, frozenFrame: frozenFrame }) })) : null] }));
203
- return (jsx_runtime_1.jsxs("div", { ref: ref, [TimelineSelection_1.TIMELINE_MARQUEE_ITEM_ATTR]: true, style: actualStyle, title: s.displayName, onPointerDownCapture: onPointerDownCapture, onPointerDown: selectable ? onPointerDown : undefined, onDoubleClick: onDoubleClick, children: [negativeStart ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
206
+ return (jsx_runtime_1.jsxs("div", { ref: ref, [TimelineSelection_1.TIMELINE_MARQUEE_ITEM_ATTR]: true, style: actualStyle, title: s.displayName, onPointerDownCapture: onPointerDownCapture, onPointerDown: selectable ? onPointerDown : undefined, onClick: onClick !== null && onClick !== void 0 ? onClick : undefined, children: [negativeStart ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
204
207
  jsx_runtime_1.jsx(TimelineSequenceNegativeStart, { left: negativeStart.left, width: negativeStart.width, leftEdgeVisible: leftEdgeVisible, clipped: negativeStartClipped }), jsx_runtime_1.jsx("div", { style: {
205
208
  background: style.background,
206
209
  border: style.border,
@@ -235,18 +238,19 @@ const TimelineSequenceInner = ({ s, connectedCompositions, windowWidth, nodePath
235
238
  // If a duration is 1, it is essentially a still and it should have width 0
236
239
  // Some compositions may not be longer than their media duration,
237
240
  // if that is the case, it needs to be asynchronously determined
238
- var _a, _b, _c;
239
- var _d, _e, _f, _g, _h, _j, _k;
241
+ var _a, _b, _c, _d, _e;
242
+ var _f, _g, _h, _j, _k, _l, _m;
240
243
  const video = remotion_1.Internals.useVideo();
241
244
  const { sequences } = (0, react_1.useContext)(remotion_1.Internals.SequenceManager);
242
245
  const renderWindow = (0, react_1.useContext)(TimelineViewport_1.TimelineViewportContext);
246
+ const mediaDurationDragLimitsRegistry = (0, react_1.useContext)(TimelineSequenceRightEdgeDragHandle_1.TimelineSequenceMediaDurationDragLimitsContext);
243
247
  const dragAwareDoubleClick = (0, react_1.useMemo)(() => (0, drag_aware_double_click_1.createDragAwareDoubleClickTracker)(), []);
244
248
  const mediaMetadata = (0, use_media_metadata_1.useMediaMetadata)(s.type === 'audio' || s.type === 'video' ? s.src : null);
245
249
  const extendVideoLastFrame = (0, is_video_with_last_frame_hold_1.isVideoWithLastFrameHold)(s);
246
250
  const naturalMediaDuration = (s.type === 'audio' || s.type === 'video') &&
247
251
  mediaMetadata !== null &&
248
252
  s.playbackRate > 0
249
- ? Math.max(0, (mediaMetadata.duration * ((_d = video === null || video === void 0 ? void 0 : video.fps) !== null && _d !== void 0 ? _d : 30) -
253
+ ? Math.max(0, (mediaMetadata.duration * ((_f = video === null || video === void 0 ? void 0 : video.fps) !== null && _f !== void 0 ? _f : 30) -
250
254
  (0, get_timeline_media_start_frame_1.getTimelineMediaStartFrame)({
251
255
  startMediaFrom: s.startMediaFrom,
252
256
  mediaFrameAtSequenceZero: s.mediaFrameAtSequenceZero,
@@ -274,7 +278,7 @@ const TimelineSequenceInner = ({ s, connectedCompositions, windowWidth, nodePath
274
278
  };
275
279
  }, [originalLocation]);
276
280
  const { propStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
277
- const nodePath = (_e = nodePathInfo === null || nodePathInfo === void 0 ? void 0 : nodePathInfo.sequenceSubscriptionKey) !== null && _e !== void 0 ? _e : null;
281
+ const nodePath = (_g = nodePathInfo === null || nodePathInfo === void 0 ? void 0 : nodePathInfo.sequenceSubscriptionKey) !== null && _g !== void 0 ? _g : null;
278
282
  const propStatusesForOverride = (0, react_1.useMemo)(() => {
279
283
  return nodePath
280
284
  ? remotion_1.Internals.getPropStatusesCtx(propStatuses, nodePath)
@@ -284,7 +288,6 @@ const TimelineSequenceInner = ({ s, connectedCompositions, windowWidth, nodePath
284
288
  ((_a = propStatusesForOverride === null || propStatusesForOverride === void 0 ? void 0 : propStatusesForOverride.durationInFrames) === null || _a === void 0 ? void 0 : _a.status) === 'static');
285
289
  const durationCanResize = Boolean((0, interactivity_enabled_1.isStudioInteractivityEnabled)() &&
286
290
  (0, TimelineSequenceRightEdgeDragHandle_1.canResizeTimelineSequenceDuration)({
287
- sequence: s,
288
291
  status: propStatusesForOverride === null || propStatusesForOverride === void 0 ? void 0 : propStatusesForOverride.durationInFrames,
289
292
  }));
290
293
  const fromCanUpdate = Boolean((0, interactivity_enabled_1.isStudioInteractivityEnabled)() &&
@@ -297,6 +300,7 @@ const TimelineSequenceInner = ({ s, connectedCompositions, windowWidth, nodePath
297
300
  const { setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
298
301
  const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
299
302
  const selectAsset = (0, use_select_asset_1.useSelectAsset)();
303
+ const assetContextMenu = (0, use_asset_timeline_context_menu_1.useAssetTimelineContextMenu)();
300
304
  const selectComposition = (0, InitialCompositionLoader_1.useSelectComposition)();
301
305
  const confirm = (0, ConfirmationDialog_1.useConfirmationDialog)();
302
306
  const deleteTimelineItems = (0, use_delete_timeline_items_1.useDeleteTimelineItems)();
@@ -310,7 +314,7 @@ const TimelineSequenceInner = ({ s, connectedCompositions, windowWidth, nodePath
310
314
  }
311
315
  return selectedItems.flatMap((item) => item.type === 'sequence' ? [item.nodePathInfo] : []);
312
316
  }, [selected, selectedItems]);
313
- const onSequenceDoubleClick = (0, react_1.useCallback)((e) => {
317
+ const performSequenceDoubleClick = (0, react_1.useCallback)((e) => {
314
318
  if ((0, TimelineSelection_1.isTimelineSelectionModifierEvent)(e)) {
315
319
  e.stopPropagation();
316
320
  return;
@@ -344,10 +348,16 @@ const TimelineSequenceInner = ({ s, connectedCompositions, windowWidth, nodePath
344
348
  selectComposition,
345
349
  sequenceFrameOffset,
346
350
  ]);
351
+ const onSequenceClick = (0, react_1.useCallback)((e) => {
352
+ if (!dragAwareDoubleClick.acceptClickAsDoubleClick(e)) {
353
+ return;
354
+ }
355
+ performSequenceDoubleClick(e);
356
+ }, [dragAwareDoubleClick, performSequenceDoubleClick]);
347
357
  const canHandleSequenceDoubleClick = connectedCompositions.length === 1 || canOpenInEditor;
348
358
  const canDeleteFromSource = Boolean(nodePath && (validatedLocation === null || validatedLocation === void 0 ? void 0 : validatedLocation.source));
349
359
  const deleteDisabled = !previewInteractive || !s.controls || !canDeleteFromSource;
350
- const isProgrammaticallyDuplicated = ((_f = nodePathInfo === null || nodePathInfo === void 0 ? void 0 : nodePathInfo.numberOfSequencesWithThisNodePath) !== null && _f !== void 0 ? _f : 1) > 1;
360
+ const isProgrammaticallyDuplicated = ((_h = nodePathInfo === null || nodePathInfo === void 0 ? void 0 : nodePathInfo.numberOfSequencesWithThisNodePath) !== null && _h !== void 0 ? _h : 1) > 1;
351
361
  const duplicateDisabled = deleteDisabled || isProgrammaticallyDuplicated;
352
362
  const disableInteractivityDisabled = !previewInteractive ||
353
363
  !s.showInTimeline ||
@@ -414,6 +424,9 @@ const TimelineSequenceInner = ({ s, connectedCompositions, windowWidth, nodePath
414
424
  ]);
415
425
  const getContextMenuItems = (0, react_1.useCallback)(() => {
416
426
  var _a;
427
+ if (assetContextMenu !== null) {
428
+ return assetContextMenu;
429
+ }
417
430
  if (selectable && !selected) {
418
431
  onSelect({ shiftKey: false, toggleKey: false });
419
432
  }
@@ -482,6 +495,7 @@ const TimelineSequenceInner = ({ s, connectedCompositions, windowWidth, nodePath
482
495
  : [],
483
496
  });
484
497
  }, [
498
+ assetContextMenu,
485
499
  canOpenInEditor,
486
500
  canConfigureApps,
487
501
  codingAgentInfo,
@@ -520,7 +534,7 @@ const TimelineSequenceInner = ({ s, connectedCompositions, windowWidth, nodePath
520
534
  const { onPointerDown: onMoveDragPointerDown } = (0, TimelineSequenceRightEdgeDragHandle_1.useTimelineSequenceFromDrag)({
521
535
  nodePathInfo,
522
536
  windowWidth,
523
- timelineDurationInFrames: (_g = video === null || video === void 0 ? void 0 : video.durationInFrames) !== null && _g !== void 0 ? _g : 1,
537
+ timelineDurationInFrames: (_j = video === null || video === void 0 ? void 0 : video.durationInFrames) !== null && _j !== void 0 ? _j : 1,
524
538
  onDragEnd: dragAwareDoubleClick.endPointerGesture,
525
539
  });
526
540
  if (!video) {
@@ -582,7 +596,7 @@ const TimelineSequenceInner = ({ s, connectedCompositions, windowWidth, nodePath
582
596
  }, [visibleLayout]);
583
597
  const showLeftBorderRadius = (visibleLayout === null || visibleLayout === void 0 ? void 0 : visibleLayout.leftEdgeVisible) === true &&
584
598
  localStart >= 0 &&
585
- ((_h = s.trimBefore) !== null && _h !== void 0 ? _h : 0) === 0 &&
599
+ ((_k = s.trimBefore) !== null && _k !== void 0 ? _k : 0) === 0 &&
586
600
  (s.type === 'sequence' ||
587
601
  s.type === 'image' ||
588
602
  (0, get_timeline_media_start_frame_1.getTimelineMediaStartFrame)({
@@ -607,6 +621,49 @@ const TimelineSequenceInner = ({ s, connectedCompositions, windowWidth, nodePath
607
621
  : video.durationInFrames;
608
622
  const endsAtContainerBoundary = Math.ceil(s.from + displayDurationInFrames) >=
609
623
  Math.ceil(Math.min(parentEnd, video.durationInFrames));
624
+ const hasImplicitMediaDuration = (s.type === 'audio' || s.type === 'video') &&
625
+ ((_d = propStatusesForOverride === null || propStatusesForOverride === void 0 ? void 0 : propStatusesForOverride.durationInFrames) === null || _d === void 0 ? void 0 : _d.status) === 'static' &&
626
+ propStatusesForOverride.durationInFrames.codeValue === undefined;
627
+ const durationInFramesCodeValue = ((_e = propStatusesForOverride === null || propStatusesForOverride === void 0 ? void 0 : propStatusesForOverride.durationInFrames) === null || _e === void 0 ? void 0 : _e.status) === 'static'
628
+ ? propStatusesForOverride.durationInFrames.codeValue
629
+ : null;
630
+ const explicitDurationInFrames = typeof durationInFramesCodeValue === 'number' &&
631
+ Number.isFinite(durationInFramesCodeValue)
632
+ ? durationInFramesCodeValue
633
+ : null;
634
+ const isMedia = s.type === 'audio' || s.type === 'video';
635
+ const mediaDurationDragLimits = isMedia
636
+ ? (0, TimelineSequenceRightEdgeDragHandle_1.getTimelineSequenceMediaDurationDragLimits)({
637
+ cascadedStart,
638
+ displayDurationInFrames: s.duration,
639
+ displayStart: s.from,
640
+ effectiveMaxMediaDuration,
641
+ explicitDurationInFrames,
642
+ hasImplicitDuration: hasImplicitMediaDuration,
643
+ naturalMediaDuration,
644
+ timelineDurationInFrames: video.durationInFrames,
645
+ })
646
+ : null;
647
+ const mediaDurationDragSelectionKey = nodePathInfo
648
+ ? (0, TimelineSelection_1.getTimelineSequenceSelectionKey)(nodePathInfo)
649
+ : null;
650
+ (0, react_1.useEffect)(() => {
651
+ if (mediaDurationDragLimitsRegistry === null ||
652
+ mediaDurationDragSelectionKey === null ||
653
+ !isMedia) {
654
+ return;
655
+ }
656
+ const registry = mediaDurationDragLimitsRegistry.current;
657
+ registry.set(mediaDurationDragSelectionKey, mediaDurationDragLimits);
658
+ return () => {
659
+ registry.delete(mediaDurationDragSelectionKey);
660
+ };
661
+ }, [
662
+ isMedia,
663
+ mediaDurationDragLimits,
664
+ mediaDurationDragLimitsRegistry,
665
+ mediaDurationDragSelectionKey,
666
+ ]);
610
667
  const showRightBorderRadius = (visibleLayout === null || visibleLayout === void 0 ? void 0 : visibleLayout.rightEdgeVisible) === true &&
611
668
  (endsAtContainerBoundary || endsAtNaturalMediaDuration);
612
669
  const style = (0, react_1.useMemo)(() => {
@@ -646,7 +703,8 @@ const TimelineSequenceInner = ({ s, connectedCompositions, windowWidth, nodePath
646
703
  const showRightEdgeDragHandle = (0, TimelineSequenceRightEdgeDragHandle_1.isTimelineSequenceDurationDraggable)(s) &&
647
704
  nodePath !== null &&
648
705
  validatedLocation !== null &&
649
- durationCanResize;
706
+ durationCanResize &&
707
+ (!isMedia || mediaDurationDragLimits !== null);
650
708
  const showLeftEdgeDragHandle = (0, TimelineSequenceRightEdgeDragHandle_1.isTimelineSequenceLeftEdgeDraggable)(s) &&
651
709
  nodePath !== null &&
652
710
  validatedLocation !== null &&
@@ -663,14 +721,14 @@ const TimelineSequenceInner = ({ s, connectedCompositions, windowWidth, nodePath
663
721
  const mediaDisplayDurationInFrames = visibleLayout.media
664
722
  ? visibleLayout.media.width / frameIncrement
665
723
  : 0;
666
- const sequence = (jsx_runtime_1.jsxs(TimelineSequenceCurrentFrame, { s: s, displayDurationInFrames: displayDurationInFrames, premount: visibleLayout.premount, postmount: visibleLayout.postmount, negativeStart: visibleLayout.negativeStart, leftEdgeVisible: visibleLayout.leftEdgeVisible, negativeStartClipped: negativeStartClipped, style: style, nodePathInfo: nodePathInfo, sequenceFrameOffset: sequenceFrameOffset, fromCanUpdate: fromCanUpdate, frozenFrame: frozenFrame, onMoveDragPointerDown: onMoveDragPointerDown, onPointerDownCapture: dragAwareDoubleClick.beginPointerGesture, edgeDragHandles: jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [showLeftEdgeDragHandle &&
724
+ const sequence = (jsx_runtime_1.jsxs(TimelineSequenceCurrentFrame, { s: s, displayDurationInFrames: displayDurationInFrames, premount: visibleLayout.premount, postmount: visibleLayout.postmount, negativeStart: visibleLayout.negativeStart, leftEdgeVisible: visibleLayout.leftEdgeVisible, negativeStartClipped: negativeStartClipped, style: style, nodePathInfo: nodePathInfo, sequenceFrameOffset: sequenceFrameOffset, fromCanUpdate: fromCanUpdate, frozenFrame: frozenFrame, onMoveDragPointerDown: onMoveDragPointerDown, onPointerDownCapture: dragAwareDoubleClick.beginPointerGesture, onClick: canHandleSequenceDoubleClick ? onSequenceClick : null, edgeDragHandles: jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [showLeftEdgeDragHandle &&
667
725
  visibleLayout.leftEdgeVisible &&
668
726
  negativeStartWidth === 0 &&
669
727
  nodePathInfo &&
670
- validatedLocation ? (jsx_runtime_1.jsx(TimelineSequenceRightEdgeDragHandle_1.TimelineSequenceLeftEdgeDragHandle, { nodePathInfo: nodePathInfo, windowWidth: windowWidth, timelineDurationInFrames: (_j = video.durationInFrames) !== null && _j !== void 0 ? _j : 1, onDragEnd: dragAwareDoubleClick.endPointerGesture, onSelect: onSelect, selected: selected })) : null, showRightEdgeDragHandle &&
728
+ validatedLocation ? (jsx_runtime_1.jsx(TimelineSequenceRightEdgeDragHandle_1.TimelineSequenceLeftEdgeDragHandle, { nodePathInfo: nodePathInfo, windowWidth: windowWidth, timelineDurationInFrames: (_l = video.durationInFrames) !== null && _l !== void 0 ? _l : 1, onDragEnd: dragAwareDoubleClick.endPointerGesture, onSelect: onSelect, selected: selected })) : null, showRightEdgeDragHandle &&
671
729
  visibleLayout.rightEdgeVisible &&
672
730
  nodePathInfo &&
673
- validatedLocation ? (jsx_runtime_1.jsx(TimelineSequenceRightEdgeDragHandle_1.TimelineSequenceRightEdgeDragHandle, { nodePathInfo: nodePathInfo, windowWidth: windowWidth, timelineDurationInFrames: (_k = video.durationInFrames) !== null && _k !== void 0 ? _k : 1, onDragEnd: dragAwareDoubleClick.endPointerGesture, onSelect: onSelect, selected: selected })) : null] }), onDoubleClick: canHandleSequenceDoubleClick ? onSequenceDoubleClick : undefined, children: [s.type === 'audio' && visibleLayout.media ? (jsx_runtime_1.jsx("div", { style: mediaVisualizationStyle, children: jsx_runtime_1.jsx(AudioWaveform_1.AudioWaveform, { src: s.src, height: timeline_layout_1.TIMELINE_LAYER_HEIGHT_AUDIO, doesVolumeChange: s.doesVolumeChange, muted: s.muted, visualizationWidth: visibleLayout.media.width, startFrom: s.startMediaFrom, durationInFrames: s.duration, displayOffsetInFrames: mediaDisplayOffsetInFrames, displayDurationInFrames: mediaDisplayDurationInFrames, volume: s.volume, playbackRate: s.playbackRate, loopDisplay: s.loopDisplay }) })) : null, s.type === 'video' && visibleLayout.media ? (jsx_runtime_1.jsx(TimelineVideoInfo_1.TimelineVideoInfo, { src: s.src, visualizationWidth: visibleLayout.media.width, displayOffsetInFrames: mediaDisplayOffsetInFrames, displayDurationInFrames: mediaDisplayDurationInFrames, startMediaFrom: s.startMediaFrom, mediaFrameAtSequenceZero: s.mediaFrameAtSequenceZero, sequenceFrameOffset: sequenceFrameOffset, playbackRate: s.playbackRate, volume: s.volume, muted: s.muted, doesVolumeChange: s.doesVolumeChange, marginLeft: visibleLayout.media.left, loopDisplay: s.loopDisplay, frozenMediaFrame: s.frozenMediaFrame, extendLastFrame: extendVideoLastFrame })) : null, s.type === 'image' && visibleLayout.media ? (jsx_runtime_1.jsx("div", { style: mediaVisualizationStyle, children: jsx_runtime_1.jsx(TimelineImageInfo_1.TimelineImageInfo, { src: s.src, offsetInPixels: visibleLayout.media.offset }) })) : null, s.loopDisplay === undefined ? null : (jsx_runtime_1.jsx(LoopedTimelineIndicators_1.LoopedTimelineIndicator, { loops: s.loopDisplay.numberOfTimes, fullWidth: width, visibleOffset: visibleLayout.cropLeft, visibleWidth: visibleLayout.width }))] }));
731
+ validatedLocation ? (jsx_runtime_1.jsx(TimelineSequenceRightEdgeDragHandle_1.TimelineSequenceRightEdgeDragHandle, { nodePathInfo: nodePathInfo, mediaDurationDragLimits: mediaDurationDragLimits, windowWidth: windowWidth, timelineDurationInFrames: (_m = video.durationInFrames) !== null && _m !== void 0 ? _m : 1, onDragEnd: dragAwareDoubleClick.endPointerGesture, onSelect: onSelect, selected: selected })) : null] }), children: [s.type === 'audio' && visibleLayout.media ? (jsx_runtime_1.jsx("div", { style: mediaVisualizationStyle, children: jsx_runtime_1.jsx(AudioWaveform_1.AudioWaveform, { src: s.src, height: timeline_layout_1.TIMELINE_LAYER_HEIGHT_AUDIO, doesVolumeChange: s.doesVolumeChange, muted: s.muted, visualizationWidth: visibleLayout.media.width, startFrom: s.startMediaFrom, durationInFrames: s.duration, displayOffsetInFrames: mediaDisplayOffsetInFrames, displayDurationInFrames: mediaDisplayDurationInFrames, volume: s.volume, playbackRate: s.playbackRate, loopDisplay: s.loopDisplay }) })) : null, s.type === 'video' && visibleLayout.media ? (jsx_runtime_1.jsx(TimelineVideoInfo_1.TimelineVideoInfo, { src: s.src, visualizationWidth: visibleLayout.media.width, displayOffsetInFrames: mediaDisplayOffsetInFrames, displayDurationInFrames: mediaDisplayDurationInFrames, startMediaFrom: s.startMediaFrom, mediaFrameAtSequenceZero: s.mediaFrameAtSequenceZero, sequenceFrameOffset: sequenceFrameOffset, playbackRate: s.playbackRate, volume: s.volume, muted: s.muted, doesVolumeChange: s.doesVolumeChange, marginLeft: visibleLayout.media.left, loopDisplay: s.loopDisplay, frozenMediaFrame: s.frozenMediaFrame, extendLastFrame: extendVideoLastFrame })) : null, s.type === 'image' && visibleLayout.media ? (jsx_runtime_1.jsx("div", { style: mediaVisualizationStyle, children: jsx_runtime_1.jsx(TimelineImageInfo_1.TimelineImageInfo, { src: s.src, offsetInPixels: visibleLayout.media.offset }) })) : null, s.loopDisplay === undefined ? null : (jsx_runtime_1.jsx(LoopedTimelineIndicators_1.LoopedTimelineIndicator, { loops: s.loopDisplay.numberOfTimes, fullWidth: width, visibleOffset: visibleLayout.cropLeft, visibleWidth: visibleLayout.width }))] }));
674
732
  return previewConnected || window.remotion_isReadOnlyStudio ? (jsx_runtime_1.jsx(ContextMenu_1.ContextMenu, { getItems: getContextMenuItems, children: sequence })) : (sequence);
675
733
  };
676
734
  exports.TimelineSequence = react_1.default.memo(TimelineSequenceFn);
@@ -1,7 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { TSequence } from 'remotion';
3
3
  import type { SequenceNodePathInfo } from '../../helpers/get-timeline-sequence-sort-key';
4
- export declare const SEQUENCE_REORDER_MIME_TYPE = "application/remotion-sequence-reorder";
5
4
  export declare const TimelineSequenceItem: React.NamedExoticComponent<{
6
5
  readonly afterDropLineOffset: number;
7
6
  readonly sequence: TSequence;