@remotion/studio 4.0.519 → 4.0.521

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 (130) hide show
  1. package/dist/api/shut-down-studio.d.ts +6 -0
  2. package/dist/api/shut-down-studio.js +23 -0
  3. package/dist/api/visual-control.js +2 -2
  4. package/dist/components/AudioWaveform.js +16 -7
  5. package/dist/components/Canvas.js +114 -48
  6. package/dist/components/CaptionInspector.d.ts +1 -0
  7. package/dist/components/CaptionInspector.js +43 -2
  8. package/dist/components/CaptionTextEditor.js +1 -1
  9. package/dist/components/CompositionSelector.js +41 -34
  10. package/dist/components/CompositionSelectorItem.d.ts +7 -0
  11. package/dist/components/CompositionSelectorItem.js +344 -73
  12. package/dist/components/CurrentCompositionSideEffects.js +5 -0
  13. package/dist/components/ElementInstallConfirmation.d.ts +2 -23
  14. package/dist/components/ElementInstallConfirmation.js +89 -65
  15. package/dist/components/ElementLibraryModal.js +3 -1
  16. package/dist/components/FpsCounter.js +1 -1
  17. package/dist/components/FramePersistor.js +1 -1
  18. package/dist/components/InlineCaptionInspector.js +37 -1
  19. package/dist/components/InspectorPanel/ElementLibraryButton.js +3 -18
  20. package/dist/components/InspectorPanel/SequenceSelectionInspector.js +4 -3
  21. package/dist/components/InspectorPanel/use-composition-actions.js +5 -8
  22. package/dist/components/InspectorSequenceSection.js +1 -4
  23. package/dist/components/Menu/MenuSubItem.js +1 -1
  24. package/dist/components/ModalContainer.d.ts +1 -0
  25. package/dist/components/ModalContainer.js +2 -2
  26. package/dist/components/ModalHeader.js +5 -1
  27. package/dist/components/Modals.js +1 -1
  28. package/dist/components/NewComposition/NewComposition.js +2 -2
  29. package/dist/components/PlayPause.js +2 -13
  30. package/dist/components/PreviewToolbar.js +1 -1
  31. package/dist/components/QuickSwitcher/QuickSwitcherContent.js +29 -15
  32. package/dist/components/QuickSwitcher/QuickSwitcherResult.d.ts +14 -1
  33. package/dist/components/QuickSwitcher/QuickSwitcherResult.js +64 -9
  34. package/dist/components/QuickSwitcher/asset-search.d.ts +0 -1
  35. package/dist/components/QuickSwitcher/asset-search.js +1 -16
  36. package/dist/components/QuickSwitcher/composition-search.d.ts +16 -0
  37. package/dist/components/QuickSwitcher/composition-search.js +136 -0
  38. package/dist/components/RenderButton.js +2 -2
  39. package/dist/components/RenderModal/RenderStatusModal.js +7 -1
  40. package/dist/components/RenderModal/ServerRenderModal.js +1 -1
  41. package/dist/components/RenderModal/WebRenderModal.js +1 -1
  42. package/dist/components/RenderQueue/ClientRenderQueueProcessor.js +1 -1
  43. package/dist/components/ResetZoomButton.js +17 -2
  44. package/dist/components/SelectedOutlineElement.js +10 -30
  45. package/dist/components/SettingsModal.js +8 -5
  46. package/dist/components/TimeValue.js +36 -7
  47. package/dist/components/Timeline/Timeline.d.ts +1 -1
  48. package/dist/components/Timeline/Timeline.js +33 -20
  49. package/dist/components/Timeline/TimelineAssetField.d.ts +0 -1
  50. package/dist/components/Timeline/TimelineAssetField.js +17 -9
  51. package/dist/components/Timeline/TimelineCollapseToggle.js +1 -1
  52. package/dist/components/Timeline/TimelineDeleteKeybindings.js +5 -90
  53. package/dist/components/Timeline/TimelineDragHandler.js +18 -8
  54. package/dist/components/Timeline/TimelineFontWeightField.d.ts +11 -0
  55. package/dist/components/Timeline/TimelineFontWeightField.js +65 -0
  56. package/dist/components/Timeline/TimelineInOutDragHandler.js +2 -3
  57. package/dist/components/Timeline/TimelineLayerChildren.d.ts +21 -0
  58. package/dist/components/Timeline/TimelineLayerChildren.js +129 -0
  59. package/dist/components/Timeline/TimelineNumberField.js +13 -5
  60. package/dist/components/Timeline/TimelinePinchZoom.js +14 -4
  61. package/dist/components/Timeline/TimelinePlayCursorSyncer.js +8 -4
  62. package/dist/components/Timeline/TimelinePrimitiveFieldValue.js +4 -0
  63. package/dist/components/Timeline/TimelineSequence.js +54 -73
  64. package/dist/components/Timeline/TimelineSequenceItem.js +16 -36
  65. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +22 -10
  66. package/dist/components/Timeline/TimelineSlider.js +2 -2
  67. package/dist/components/Timeline/TimelineTickFormatProvider.d.ts +8 -0
  68. package/dist/components/Timeline/TimelineTickFormatProvider.js +16 -0
  69. package/dist/components/Timeline/TimelineTimeIndicators.js +7 -3
  70. package/dist/components/Timeline/TimelineVideoInfo.js +7 -3
  71. package/dist/components/Timeline/TimelineWidthProvider.js +15 -8
  72. package/dist/components/Timeline/TimelineZoomControls.js +25 -8
  73. package/dist/components/Timeline/delete-selected-timeline-item.js +2 -2
  74. package/dist/components/Timeline/timeline-field-display-utils.js +1 -0
  75. package/dist/components/Timeline/timeline-scroll-logic.d.ts +1 -0
  76. package/dist/components/Timeline/timeline-scroll-logic.js +21 -17
  77. package/dist/components/Timeline/use-delete-timeline-items.d.ts +1 -0
  78. package/dist/components/Timeline/use-delete-timeline-items.js +118 -0
  79. package/dist/components/Timeline/use-timeline-asset-drop.js +8 -14
  80. package/dist/components/UpdateStatusContext.d.ts +5 -0
  81. package/dist/components/UpdateStatusContext.js +53 -2
  82. package/dist/components/UpdatesSettings.js +25 -4
  83. package/dist/components/WebMcp.js +87 -8
  84. package/dist/components/ZoomPersistor.js +2 -2
  85. package/dist/components/composition-drag-data.d.ts +36 -0
  86. package/dist/components/composition-drag-data.js +232 -0
  87. package/dist/components/composition-selector-drag-data.d.ts +27 -0
  88. package/dist/components/composition-selector-drag-data.js +80 -0
  89. package/dist/components/drop-handler-data.d.ts +2 -1
  90. package/dist/components/drop-handler-data.js +6 -4
  91. package/dist/components/effect-drag-and-drop.d.ts +2 -5
  92. package/dist/components/handle-drop.js +6 -2
  93. package/dist/components/import-assets.d.ts +7 -14
  94. package/dist/components/import-assets.js +11 -1
  95. package/dist/components/parse-caption-file.d.ts +5 -0
  96. package/dist/components/parse-caption-file.js +63 -0
  97. package/dist/error-overlay/current-error.d.ts +13 -0
  98. package/dist/error-overlay/current-error.js +21 -0
  99. package/dist/error-overlay/remotion-overlay/ErrorLoader.js +5 -1
  100. package/dist/esm/chunk-emw4k5b0.js +99527 -0
  101. package/dist/esm/{chunk-1fkq5bfq.js → chunk-vkrvnx2h.js} +20116 -16283
  102. package/dist/esm/index.mjs +27 -9
  103. package/dist/esm/internals.mjs +17408 -13426
  104. package/dist/esm/previewEntry.mjs +17285 -13216
  105. package/dist/esm/renderEntry.mjs +1 -1
  106. package/dist/helpers/create-folder-tree.js +2 -5
  107. package/dist/helpers/document-title.d.ts +2 -0
  108. package/dist/helpers/document-title.js +14 -3
  109. package/dist/helpers/get-preview-file-type.js +22 -3
  110. package/dist/helpers/get-timeline-max-zoom.d.ts +34 -28
  111. package/dist/helpers/get-timeline-max-zoom.js +46 -29
  112. package/dist/helpers/inserted-element-selection.d.ts +2 -1
  113. package/dist/helpers/install-fiber-sequence-order-observer.d.ts +37 -0
  114. package/dist/helpers/install-fiber-sequence-order-observer.js +109 -0
  115. package/dist/helpers/open-in-editor.js +2 -1
  116. package/dist/helpers/use-menu-structure.js +2 -2
  117. package/dist/helpers/use-runtime-values.d.ts +1 -1
  118. package/dist/helpers/use-runtime-values.js +5 -4
  119. package/dist/helpers/use-sync-external-store.d.ts +3 -0
  120. package/dist/helpers/use-sync-external-store.js +5 -0
  121. package/dist/index.d.ts +1 -0
  122. package/dist/index.js +3 -1
  123. package/dist/previewEntry.js +2 -0
  124. package/dist/state/modals.d.ts +16 -2
  125. package/dist/state/timeline-sequence-hover.js +3 -2
  126. package/dist/state/timeline-zoom.d.ts +0 -1
  127. package/dist/state/timeline-zoom.js +13 -6
  128. package/package.json +17 -17
  129. package/dist/helpers/sort-by-nonce-history.d.ts +0 -1
  130. package/dist/helpers/sort-by-nonce-history.js +0 -6
@@ -2,8 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CompositionSelector = exports.useCompositionNavigation = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
- const studio_protocol_1 = require("@remotion/studio-protocol");
6
- const studio_shared_1 = require("@remotion/studio-shared");
7
5
  const react_1 = require("react");
8
6
  const remotion_1 = require("remotion");
9
7
  const client_id_1 = require("../helpers/client-id");
@@ -13,6 +11,7 @@ const persist_open_folders_1 = require("../helpers/persist-open-folders");
13
11
  const folders_1 = require("../state/folders");
14
12
  const modals_1 = require("../state/modals");
15
13
  const z_index_1 = require("../state/z-index");
14
+ const composition_selector_drag_data_1 = require("./composition-selector-drag-data");
16
15
  const CompositionSelectorItem_1 = require("./CompositionSelectorItem");
17
16
  const ContextMenu_1 = require("./ContextMenu");
18
17
  const InitialCompositionLoader_1 = require("./InitialCompositionLoader");
@@ -64,6 +63,19 @@ const container = {
64
63
  overflow: 'hidden',
65
64
  backgroundColor: colors_1.BACKGROUND,
66
65
  };
66
+ const list = {
67
+ flex: 1,
68
+ overflowY: 'auto',
69
+ paddingTop: 4,
70
+ paddingBottom: 4,
71
+ backgroundColor: colors_1.BACKGROUND,
72
+ };
73
+ const rootReorderLine = {
74
+ backgroundColor: colors_1.TIMELINE_BLUE,
75
+ height: 2,
76
+ pointerEvents: 'none',
77
+ width: '100%',
78
+ };
67
79
  const autoScrollThreshold = 70;
68
80
  const maxAutoScrollSpeed = 18;
69
81
  const getAutoScrollSpeed = ({ clientY, element, }) => {
@@ -106,6 +118,7 @@ const CompositionSelector = () => {
106
118
  setSelectedModal,
107
119
  ]);
108
120
  const [rootDragHovered, setRootDragHovered] = (0, react_1.useState)(false);
121
+ const activeDragRef = (0, react_1.useRef)(null);
109
122
  const listRef = (0, react_1.useRef)(null);
110
123
  const autoScrollAnimation = (0, react_1.useRef)(null);
111
124
  const autoScrollSpeed = (0, react_1.useRef)(0);
@@ -117,15 +130,6 @@ const CompositionSelector = () => {
117
130
  ? (0, create_folder_tree_1.sortFolderTreeAlphabetically)(tree)
118
131
  : tree;
119
132
  }, [compositionSortOrder, compositions, folders, foldersExpanded]);
120
- const list = (0, react_1.useMemo)(() => {
121
- return {
122
- flex: 1,
123
- overflowY: 'auto',
124
- paddingTop: 4,
125
- paddingBottom: 4,
126
- backgroundColor: rootDragHovered ? colors_1.WHITE_ALPHA_12 : colors_1.BACKGROUND,
127
- };
128
- }, [rootDragHovered]);
129
133
  const toggleFolder = (0, react_1.useCallback)((folderName, parentName) => {
130
134
  var _a;
131
135
  (_a = remotion_1.Internals.compositionSelectorRef.current) === null || _a === void 0 ? void 0 : _a.toggleFolder(folderName, parentName);
@@ -166,9 +170,8 @@ const CompositionSelector = () => {
166
170
  }
167
171
  }, [runCompositionListAutoScroll, stopCompositionListAutoScroll]);
168
172
  const onCompositionListDragOverCapture = (0, react_1.useCallback)((event) => {
169
- var _a;
170
173
  if (window.remotion_isReadOnlyStudio ||
171
- ((_a = studio_protocol_1.StudioProtocolInternals.getDragPreviewMetadata(event.dataTransfer.types)) === null || _a === void 0 ? void 0 : _a.type) !== 'composition') {
174
+ !(0, composition_selector_drag_data_1.hasCompositionSelectorDragData)(event.dataTransfer.types)) {
172
175
  stopCompositionListAutoScroll();
173
176
  return;
174
177
  }
@@ -183,9 +186,13 @@ const CompositionSelector = () => {
183
186
  return stopCompositionListAutoScroll;
184
187
  }, [stopCompositionListAutoScroll]);
185
188
  const onRootDragOver = (0, react_1.useCallback)((event) => {
186
- var _a;
187
189
  if (window.remotion_isReadOnlyStudio ||
188
- ((_a = studio_protocol_1.StudioProtocolInternals.getDragPreviewMetadata(event.dataTransfer.types)) === null || _a === void 0 ? void 0 : _a.type) !== 'composition') {
190
+ !(0, composition_selector_drag_data_1.hasCompositionSelectorDragData)(event.dataTransfer.types)) {
191
+ return;
192
+ }
193
+ if (activeDragRef.current === null ||
194
+ activeDragRef.current.parentFolderPath === null) {
195
+ setRootDragHovered(false);
189
196
  return;
190
197
  }
191
198
  event.preventDefault();
@@ -205,32 +212,32 @@ const CompositionSelector = () => {
205
212
  if (window.remotion_isReadOnlyStudio) {
206
213
  return;
207
214
  }
208
- const parsed = studio_protocol_1.StudioProtocolInternals.parseDragData(event.dataTransfer);
209
- if ((parsed === null || parsed === void 0 ? void 0 : parsed.type) !== 'composition') {
215
+ const dragData = (0, composition_selector_drag_data_1.parseCompositionSelectorDragData)(event.dataTransfer);
216
+ if (dragData === null) {
217
+ return;
218
+ }
219
+ if (activeDragRef.current === null ||
220
+ activeDragRef.current.parentFolderPath === null) {
221
+ event.stopPropagation();
222
+ setRootDragHovered(false);
210
223
  return;
211
224
  }
212
- const compositionDragData = parsed.data;
213
225
  event.preventDefault();
214
226
  event.stopPropagation();
215
227
  stopCompositionListAutoScroll();
216
228
  setRootDragHovered(false);
217
- const composition = compositions.find((c) => c.id === compositionDragData.compositionId);
218
- if (!composition || composition.folderName === null) {
219
- return;
220
- }
221
- const notification = (0, NotificationCenter_1.showNotification)(`Moving ${compositionDragData.compositionId}...`, null);
229
+ const notification = (0, NotificationCenter_1.showNotification)(`Moving ${dragData.item.type === 'composition' ? dragData.item.compositionId : dragData.item.folderName}...`, null);
222
230
  const controller = new AbortController();
223
231
  try {
224
232
  const result = await (0, actions_1.applyCodemod)({
225
233
  codemod: {
226
- type: 'move-composition-to-folder',
227
- idToMove: compositionDragData.compositionId,
228
- folderName: null,
229
- parentName: null,
234
+ type: 'move-composition-or-folder',
235
+ source: dragData.item,
236
+ destination: { type: 'root' },
230
237
  },
231
238
  dryRun: false,
232
239
  signal: controller.signal,
233
- symbolicatedStack: (0, studio_shared_1.compositionDragDataToSymbolicatedStack)(compositionDragData),
240
+ symbolicatedStack: (0, composition_selector_drag_data_1.compositionSelectorDragDataToSymbolicatedStack)(dragData),
234
241
  });
235
242
  if (result.success) {
236
243
  notification.dismiss();
@@ -242,13 +249,13 @@ const CompositionSelector = () => {
242
249
  catch (err) {
243
250
  notification.replaceContent(err instanceof Error ? err.message : String(err), 4000);
244
251
  }
245
- }, [compositions, stopCompositionListAutoScroll]);
252
+ }, [stopCompositionListAutoScroll]);
246
253
  return (jsx_runtime_1.jsxs("div", { style: container, children: [
247
- jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: listRef, getItems: getRootContextMenuItems }), jsx_runtime_1.jsx(ExplorerQuickSwitcherTrigger_1.ExplorerQuickSwitcherTrigger, { mode: "compositions", showShortcut: true, tabIndex: tabIndex, getActions: getRootContextMenuItems }), jsx_runtime_1.jsx("div", { ref: listRef, className: "__remotion-vertical-scrollbar", style: list, onDragOverCapture: onCompositionListDragOverCapture, onDragEndCapture: stopCompositionListAutoScroll, onDragOver: onRootDragOver, onDragLeave: onRootDragLeave, onDropCapture: stopCompositionListAutoScroll, onDrop: onRootDrop, children: items.map((c) => {
248
- return (jsx_runtime_1.jsx(CompositionSelectorItem_1.CompositionSelectorItem, { level: 0, currentComposition: canvasContent && canvasContent.type === 'composition'
249
- ? canvasContent.compositionId
250
- : null, selectComposition: selectComposition, toggleFolder: toggleFolder, clearRootDragHover: clearRootDragHover, tabIndex: tabIndex, item: c }, c.key + c.type));
251
- }) })
254
+ jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: listRef, getItems: getRootContextMenuItems }), jsx_runtime_1.jsx(ExplorerQuickSwitcherTrigger_1.ExplorerQuickSwitcherTrigger, { mode: "compositions", showShortcut: true, tabIndex: tabIndex, getActions: getRootContextMenuItems }), jsx_runtime_1.jsxs("div", { ref: listRef, className: "__remotion-vertical-scrollbar", style: list, onDragOverCapture: onCompositionListDragOverCapture, onDragEndCapture: stopCompositionListAutoScroll, onDragOver: onRootDragOver, onDragLeave: onRootDragLeave, onDropCapture: stopCompositionListAutoScroll, onDrop: onRootDrop, children: [items.map((c, index) => {
255
+ return (jsx_runtime_1.jsx(CompositionSelectorItem_1.CompositionSelectorItem, { level: 0, currentComposition: canvasContent && canvasContent.type === 'composition'
256
+ ? canvasContent.compositionId
257
+ : null, selectComposition: selectComposition, toggleFolder: toggleFolder, clearRootDragHover: clearRootDragHover, canReorder: compositionSortOrder === 'registration', tabIndex: tabIndex, item: c, activeDragRef: activeDragRef, parentFolderPath: null, previousSibling: index === 0 ? null : items[index - 1], nextSibling: index === items.length - 1 ? null : items[index + 1] }, c.key + c.type));
258
+ }), rootDragHovered ? (jsx_runtime_1.jsx("div", { "data-composition-root-reorder-line": true, style: rootReorderLine })) : null] })
252
259
  ] }));
253
260
  };
254
261
  exports.CompositionSelector = CompositionSelector;
@@ -1,5 +1,7 @@
1
+ import type { MutableRefObject } from 'react';
1
2
  import React from 'react';
2
3
  import { type _InternalTypes } from 'remotion';
4
+ import { type CompositionSelectorActiveDrag } from './composition-selector-drag-data';
3
5
  export type CompositionSelectorItemType = {
4
6
  key: string;
5
7
  type: 'composition';
@@ -20,5 +22,10 @@ export declare const CompositionSelectorItem: React.FC<{
20
22
  readonly selectComposition: (c: _InternalTypes['AnyComposition'], push: boolean) => void;
21
23
  readonly toggleFolder: (folderName: string, parentName: string | null) => void;
22
24
  readonly clearRootDragHover: () => void;
25
+ readonly canReorder: boolean;
23
26
  readonly level: number;
27
+ readonly activeDragRef: MutableRefObject<CompositionSelectorActiveDrag | null>;
28
+ readonly parentFolderPath: string | null;
29
+ readonly previousSibling: CompositionSelectorItemType | null;
30
+ readonly nextSibling: CompositionSelectorItemType | null;
24
31
  }>;