@remotion/studio 4.0.520 → 4.0.522

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 (117) 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/components/AudioWaveform.js +10 -6
  4. package/dist/components/Canvas.js +84 -12
  5. package/dist/components/CanvasIfSizeIsAvailable.js +7 -0
  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 -30
  10. package/dist/components/CompositionSelectorItem.d.ts +7 -0
  11. package/dist/components/CompositionSelectorItem.js +343 -67
  12. package/dist/components/CopyButton.js +7 -14
  13. package/dist/components/Editor.js +6 -5
  14. package/dist/components/EditorContent.js +1 -1
  15. package/dist/components/ElementInstallConfirmation.js +77 -65
  16. package/dist/components/ElementLibraryModal.js +3 -1
  17. package/dist/components/FixComputedValueModal.js +20 -10
  18. package/dist/components/InlineCaptionInspector.js +37 -1
  19. package/dist/components/InspectorLocationCopy.js +10 -5
  20. package/dist/components/InspectorPanel/ElementLibraryButton.js +3 -18
  21. package/dist/components/InspectorSequenceSection.js +1 -4
  22. package/dist/components/Menu/MenuSubItem.js +1 -1
  23. package/dist/components/MenuBuildIndicator.js +7 -2
  24. package/dist/components/MenuCompositionName.js +62 -6
  25. package/dist/components/ModalContainer.d.ts +1 -0
  26. package/dist/components/ModalContainer.js +2 -2
  27. package/dist/components/ModalHeader.js +5 -1
  28. package/dist/components/QuickSwitcher/asset-search.d.ts +0 -1
  29. package/dist/components/QuickSwitcher/asset-search.js +1 -16
  30. package/dist/components/RenderButton.js +2 -2
  31. package/dist/components/RenderModal/CliCopyButton.js +13 -27
  32. package/dist/components/RenderModal/RenderStatusModal.js +7 -1
  33. package/dist/components/RenderModal/ServerRenderModal.js +1 -1
  34. package/dist/components/RenderModal/WebRenderModal.js +1 -1
  35. package/dist/components/RenderQueue/ClientRenderQueueProcessor.js +1 -1
  36. package/dist/components/RenderQueue/RenderQueueCopyToClipboard.js +7 -4
  37. package/dist/components/SettingsModal.js +8 -5
  38. package/dist/components/SidebarCollapserControls.js +11 -5
  39. package/dist/components/SkillsSettings.js +9 -5
  40. package/dist/components/Splitter/SplitterContainer.js +63 -10
  41. package/dist/components/Splitter/SplitterContext.d.ts +3 -0
  42. package/dist/components/Splitter/SplitterContext.js +5 -1
  43. package/dist/components/Splitter/SplitterElement.js +11 -2
  44. package/dist/components/Splitter/SplitterHandle.d.ts +1 -0
  45. package/dist/components/Splitter/SplitterHandle.js +55 -25
  46. package/dist/components/TimeValue.js +36 -7
  47. package/dist/components/Timeline/SubscribeToNodePaths.d.ts +2 -1
  48. package/dist/components/Timeline/SubscribeToNodePaths.js +2 -1
  49. package/dist/components/Timeline/Timeline.d.ts +1 -1
  50. package/dist/components/Timeline/Timeline.js +45 -22
  51. package/dist/components/Timeline/TimelineAssetField.d.ts +0 -1
  52. package/dist/components/Timeline/TimelineAssetField.js +16 -9
  53. package/dist/components/Timeline/TimelineCollapseToggle.js +1 -1
  54. package/dist/components/Timeline/TimelineDragHandler.js +9 -4
  55. package/dist/components/Timeline/TimelineFontWeightField.d.ts +11 -0
  56. package/dist/components/Timeline/TimelineFontWeightField.js +65 -0
  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 +6 -30
  61. package/dist/components/Timeline/TimelinePlayCursorSyncer.js +1 -7
  62. package/dist/components/Timeline/TimelinePrimitiveFieldValue.js +4 -0
  63. package/dist/components/Timeline/TimelineSequence.js +113 -42
  64. package/dist/components/Timeline/TimelineSequenceItem.js +14 -2
  65. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +13 -3
  66. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +185 -126
  67. package/dist/components/Timeline/TimelineSlider.js +1 -4
  68. package/dist/components/Timeline/TimelineTickFormatProvider.d.ts +8 -0
  69. package/dist/components/Timeline/TimelineTickFormatProvider.js +16 -0
  70. package/dist/components/Timeline/TimelineTimeIndicators.js +7 -3
  71. package/dist/components/Timeline/TimelineVideoInfo.js +7 -3
  72. package/dist/components/Timeline/TimelineWidthProvider.js +2 -5
  73. package/dist/components/Timeline/TimelineZoomControls.js +20 -20
  74. package/dist/components/Timeline/get-sequence-split-menu-item.d.ts +11 -0
  75. package/dist/components/Timeline/get-sequence-split-menu-item.js +55 -0
  76. package/dist/components/Timeline/timeline-field-display-utils.js +1 -0
  77. package/dist/components/Timeline/use-sequence-props-subscription.d.ts +3 -2
  78. package/dist/components/Timeline/use-sequence-props-subscription.js +4 -10
  79. package/dist/components/TopPanel.js +3 -19
  80. package/dist/components/UpdateStatusContext.d.ts +5 -0
  81. package/dist/components/UpdateStatusContext.js +53 -2
  82. package/dist/components/UpdatesSettings.js +34 -9
  83. package/dist/components/WebMcp.js +26 -0
  84. package/dist/components/ZoomPersistor.js +6 -3
  85. package/dist/components/composition-menu-items.js +1 -1
  86. package/dist/components/composition-selector-drag-data.d.ts +27 -0
  87. package/dist/components/composition-selector-drag-data.js +80 -0
  88. package/dist/components/import-assets.d.ts +2 -1
  89. package/dist/components/import-assets.js +11 -1
  90. package/dist/components/parse-caption-file.d.ts +5 -0
  91. package/dist/components/parse-caption-file.js +63 -0
  92. package/dist/esm/{chunk-np6q13k5.js → chunk-3netyjd9.js} +7943 -6314
  93. package/dist/esm/index.mjs +23 -8
  94. package/dist/esm/internals.mjs +7965 -6336
  95. package/dist/esm/previewEntry.mjs +8007 -6378
  96. package/dist/esm/renderEntry.mjs +1 -1
  97. package/dist/helpers/copy-text.js +1 -2
  98. package/dist/helpers/get-preview-file-type.js +22 -3
  99. package/dist/helpers/inserted-element-selection.d.ts +2 -1
  100. package/dist/helpers/use-copy-feedback.d.ts +4 -0
  101. package/dist/helpers/use-copy-feedback.js +19 -0
  102. package/dist/helpers/use-menu-structure.js +2 -2
  103. package/dist/icons/copy.d.ts +5 -0
  104. package/dist/icons/copy.js +12 -0
  105. package/dist/index.d.ts +1 -0
  106. package/dist/index.js +3 -1
  107. package/dist/state/canvas-ref.d.ts +1 -0
  108. package/dist/state/canvas-ref.js +2 -1
  109. package/dist/state/modals.d.ts +0 -2
  110. package/dist/state/sidebar.d.ts +3 -0
  111. package/dist/state/sidebar.js +6 -1
  112. package/dist/state/timeline-zoom.d.ts +1 -1
  113. package/dist/state/timeline-zoom.js +3 -3
  114. package/dist/visual-controls/VisualControls.js +4 -0
  115. package/package.json +16 -16
  116. package/dist/helpers/use-max-media-duration.d.ts +0 -2
  117. package/dist/helpers/use-max-media-duration.js +0 -61
@@ -64,12 +64,14 @@ const use_select_asset_1 = require("../use-select-asset");
64
64
  const disable_sequence_interactivity_1 = require("./disable-sequence-interactivity");
65
65
  const duplicate_selected_timeline_item_1 = require("./duplicate-selected-timeline-item");
66
66
  const get_sequence_context_menu_items_1 = require("./get-sequence-context-menu-items");
67
+ const get_sequence_split_menu_item_1 = require("./get-sequence-split-menu-item");
67
68
  const imperative_state_1 = require("./imperative-state");
68
69
  const save_sequence_prop_1 = require("./save-sequence-prop");
69
70
  const timeline_asset_link_1 = require("./timeline-asset-link");
70
71
  const TimelineDuplicateCount_1 = require("./TimelineDuplicateCount");
71
72
  const TimelineExpandArrowButton_1 = require("./TimelineExpandArrowButton");
72
73
  const TimelineExpandedSection_1 = require("./TimelineExpandedSection");
74
+ const TimelineLayerChildren_1 = require("./TimelineLayerChildren");
73
75
  const TimelineLayerEye_1 = require("./TimelineLayerEye");
74
76
  const TimelineMediaInfo_1 = require("./TimelineMediaInfo");
75
77
  const TimelineRowChrome_1 = require("./TimelineRowChrome");
@@ -704,6 +706,14 @@ const TimelineSequenceItemInner = ({ afterDropLineOffset, connectedCompositions,
704
706
  onDuplicateSelectedSequences,
705
707
  });
706
708
  }
709
+ const splitMenuItem = (0, get_sequence_split_menu_item_1.getSequenceSplitMenuItem)({
710
+ nodePathInfo,
711
+ sequence,
712
+ propStatuses: propStatusesForOverride,
713
+ splitFrame: (0, imperative_state_1.getCurrentFrame)(),
714
+ canEditSource: previewInteractive && Boolean(validatedLocation === null || validatedLocation === void 0 ? void 0 : validatedLocation.source),
715
+ hasMultipleSelection: selected && selectedItems.length > 1,
716
+ });
707
717
  const freezeFrameMenuItem = (0, use_sequence_freeze_frame_menu_item_1.getSequenceFreezeFrameMenuItem)({
708
718
  clientId: previewInteractive && previewServerState.type === 'connected'
709
719
  ? previewServerState.clientId
@@ -819,6 +829,7 @@ const TimelineSequenceItemInner = ({ afterDropLineOffset, connectedCompositions,
819
829
  subMenu: null,
820
830
  value: 'rename-sequence',
821
831
  },
832
+ ...(splitMenuItem ? [splitMenuItem] : []),
822
833
  ...(freezeFrameMenuItem ? [freezeFrameMenuItem] : []),
823
834
  ]
824
835
  : [],
@@ -838,7 +849,7 @@ const TimelineSequenceItemInner = ({ afterDropLineOffset, connectedCompositions,
838
849
  isProgrammaticallyDuplicated,
839
850
  mediaSrc,
840
851
  nodePath,
841
- nodePathInfo === null || nodePathInfo === void 0 ? void 0 : nodePathInfo.supportsEffects,
852
+ nodePathInfo,
842
853
  onAddEffect,
843
854
  onCrop,
844
855
  onRotate,
@@ -858,6 +869,7 @@ const TimelineSequenceItemInner = ({ afterDropLineOffset, connectedCompositions,
858
869
  selectAsset,
859
870
  selectable,
860
871
  selected,
872
+ selectedItems.length,
861
873
  selectedSequenceNodePathInfos,
862
874
  sequence,
863
875
  sequenceFrameOffset,
@@ -923,7 +935,7 @@ const TimelineSequenceItemInner = ({ afterDropLineOffset, connectedCompositions,
923
935
  clientId: previewServerState.clientId,
924
936
  });
925
937
  }, [canDropEffect, nodePath, previewServerState, validatedLocation]);
926
- const trackRow = (jsx_runtime_1.jsx(TimelineRowChrome_1.TimelineRowChrome, { depth: nestedDepth, eye: canToggleVisibility ? (jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEye, { type: sequence.type === 'audio' ? 'speaker' : 'eye', hidden: isItemHidden, onInvoked: onToggleVisibility })) : (jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEyeSpacer, {})), arrow: jsx_runtime_1.jsx(TimelineExpandArrowButton_1.TimelineExpandArrowSpacer, {}), style: rowStyle, selected: selected, selectable: selectable, onSelect: onSelect, showSelectedBackground: true, containsSelection: containsSelection, hovered: hovered, outerHeight: outerHeight, onDragLeave: canDropEffect ? onEffectDragLeave : undefined, onDragOver: canDropEffect ? onEffectDragOver : undefined, onDrop: canDropEffect ? onEffectDrop : undefined, onDoubleClick: canHandleSequenceDoubleClick ? onSequenceDoubleClick : undefined, onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, children: jsx_runtime_1.jsxs("div", { style: labelContainerStyle, children: [connectedCompositions.length > 0 ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
938
+ const trackRow = (jsx_runtime_1.jsx(TimelineRowChrome_1.TimelineRowChrome, { depth: nestedDepth, eye: canToggleVisibility ? (jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEye, { type: sequence.type === 'audio' ? 'speaker' : 'eye', hidden: isItemHidden, onInvoked: onToggleVisibility })) : (jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEyeSpacer, {})), arrow: jsx_runtime_1.jsx(TimelineLayerChildren_1.TimelineLayerChildrenToggle, { sequence: sequence }), style: rowStyle, selected: selected, selectable: selectable, onSelect: onSelect, showSelectedBackground: true, containsSelection: containsSelection, hovered: hovered, outerHeight: outerHeight, onDragLeave: canDropEffect ? onEffectDragLeave : undefined, onDragOver: canDropEffect ? onEffectDragOver : undefined, onDrop: canDropEffect ? onEffectDrop : undefined, onDoubleClick: canHandleSequenceDoubleClick ? onSequenceDoubleClick : undefined, onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, children: jsx_runtime_1.jsxs("div", { style: labelContainerStyle, children: [connectedCompositions.length > 0 ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
927
939
  jsx_runtime_1.jsx(CompositionOrStillIcon_1.CompositionOrStillIcon, { color: (0, TimelineSelection_1.getTimelineColor)(false, false), composition: connectedCompositions[0], style: connectedCompositionIconStyle }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 })
928
940
  ] })) : null, jsx_runtime_1.jsx(TimelineSequenceName_1.TimelineSequenceName, { displayName: timelineDisplayName, fallbackDisplayName: fallbackDisplayName, selected: selected, containsSelection: containsSelection, editing: isRenaming, onCancelEditing: onCancelRenaming, onSaveName: onSaveName }), hasExpandableContent && nodePathInfo !== null ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
929
941
  jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(TimelineSequenceExpandArrow, { disabled: !previewInteractive, isExpanded: isExpanded, nodePathInfo: nodePathInfo, sequence: sequence })
@@ -7,6 +7,7 @@ export declare const timelineSequenceFromDragSnapThresholdPx = 10;
7
7
  export type TimelineSequenceDurationDragTarget = {
8
8
  readonly fileName: string;
9
9
  readonly initialDuration: number;
10
+ readonly maximumDuration: number;
10
11
  readonly minimumDuration: number;
11
12
  readonly nodePath: SequencePropsSubscriptionKey;
12
13
  readonly schema: InteractivitySchema;
@@ -24,6 +25,8 @@ export type TimelineSequenceLeftEdgeDragTarget = {
24
25
  };
25
26
  export type TimelineSequenceFromDragTarget = {
26
27
  readonly canSnapToTimelineStart: boolean;
28
+ readonly minimumDeltaFrames: number;
29
+ readonly initialTimelineStart: number;
27
30
  readonly effectKeyframes: TimelineSequenceEffectKeyframeDragTarget[];
28
31
  readonly fileName: string;
29
32
  readonly initialFrom: number;
@@ -49,9 +52,10 @@ export declare const canResizeTimelineSequenceDuration: ({ sequence, status, }:
49
52
  readonly status: CanUpdateSequencePropStatus | undefined;
50
53
  }) => boolean;
51
54
  export declare const isTimelineSequenceLeftEdgeDraggable: (sequence: TSequence) => boolean;
52
- export declare const getTimelineSequenceDurationDragValue: ({ initialDuration, deltaFrames, minimumDuration, }: {
55
+ export declare const getTimelineSequenceDurationDragValue: ({ initialDuration, deltaFrames, maximumDuration, minimumDuration, }: {
53
56
  readonly initialDuration: number;
54
57
  readonly deltaFrames: number;
58
+ readonly maximumDuration: number;
55
59
  readonly minimumDuration?: number | undefined;
56
60
  }) => number;
57
61
  export declare const getTimelineSequenceLeftEdgeDragDelta: ({ initialDuration, initialTrimBefore, deltaFrames, playbackRate, minimumDuration, }: {
@@ -85,8 +89,9 @@ export declare const getTimelineSequenceFromDragValue: ({ initialFrom, deltaFram
85
89
  readonly initialFrom: number;
86
90
  readonly deltaFrames: number;
87
91
  }) => number;
88
- export declare const getTimelineSequenceFromDragDelta: ({ deltaFrames, pxPerFrame, snappingEnabled, targets, }: {
92
+ export declare const getTimelineSequenceFromDragDelta: ({ deltaFrames, timelineDurationInFrames, pxPerFrame, snappingEnabled, targets, }: {
89
93
  readonly deltaFrames: number;
94
+ readonly timelineDurationInFrames: number;
90
95
  readonly pxPerFrame: number;
91
96
  readonly snappingEnabled: boolean;
92
97
  readonly targets: readonly TimelineSequenceFromDragTarget[];
@@ -102,12 +107,13 @@ export declare const getTimelineSequenceFromDragKeyframeMoves: ({ targets, delta
102
107
  readonly effectKeyframes: MoveEffectKeyframeChange[];
103
108
  readonly sequenceKeyframes: MoveSequenceKeyframeChange[];
104
109
  };
105
- export declare const getTimelineSequenceDurationDragTargets: ({ draggedNodePathInfo, selectedItems, sequences, overrideIdsToNodePaths, propStatuses, }: {
110
+ export declare const getTimelineSequenceDurationDragTargets: ({ draggedNodePathInfo, selectedItems, sequences, overrideIdsToNodePaths, propStatuses, timelineDurationInFrames, }: {
106
111
  readonly draggedNodePathInfo: SequenceNodePathInfo;
107
112
  readonly selectedItems: readonly import("@remotion/canvas").CanvasSelectionItem[];
108
113
  readonly sequences: TSequence[];
109
114
  readonly overrideIdsToNodePaths: OverrideIdToNodePaths;
110
115
  readonly propStatuses: PropStatuses;
116
+ readonly timelineDurationInFrames: number;
111
117
  }) => TimelineSequenceDurationDragTarget[] | null;
112
118
  export declare const getTimelineSequenceLeftEdgeDragTargets: ({ draggedNodePathInfo, selectedItems, sequences, overrideIdsToNodePaths, propStatuses, }: {
113
119
  readonly draggedNodePathInfo: SequenceNodePathInfo;
@@ -128,6 +134,8 @@ export declare const TimelineSequenceLeftEdgeDragHandle: React.NamedExoticCompon
128
134
  readonly windowWidth: number;
129
135
  readonly timelineDurationInFrames: number;
130
136
  readonly onDragEnd: (wasDragged: boolean) => void;
137
+ readonly onSelect: (interaction?: import("@remotion/canvas").CanvasSelectionInteraction | undefined) => void;
138
+ readonly selected: boolean;
131
139
  }>;
132
140
  export declare const useTimelineSequenceFromDrag: ({ nodePathInfo, windowWidth, timelineDurationInFrames, onDragEnd, }: {
133
141
  readonly nodePathInfo: SequenceNodePathInfo | null;
@@ -142,5 +150,7 @@ export declare const TimelineSequenceRightEdgeDragHandle: React.NamedExoticCompo
142
150
  readonly windowWidth: number;
143
151
  readonly timelineDurationInFrames: number;
144
152
  readonly onDragEnd: (wasDragged: boolean) => void;
153
+ readonly onSelect: (interaction?: import("@remotion/canvas").CanvasSelectionInteraction | undefined) => void;
154
+ readonly selected: boolean;
145
155
  }>;
146
156
  export {};