@remotion/studio 4.0.521 → 4.0.523
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.
- package/dist/api/install-package.js +4 -2
- package/dist/components/AssetAudioVolume.d.ts +5 -0
- package/dist/components/AssetAudioVolume.js +33 -0
- package/dist/components/Canvas.js +5 -6
- package/dist/components/CanvasIfSizeIsAvailable.js +7 -0
- package/dist/components/CaptionInspector.js +74 -20
- package/dist/components/CheckboardToggle.js +8 -6
- package/dist/components/Checkbox.d.ts +1 -0
- package/dist/components/Checkbox.js +2 -2
- package/dist/components/CompositionContextButton.js +4 -1
- package/dist/components/CompositionSelectorItem.js +2 -2
- package/dist/components/ConfigureLicenseModal.js +1 -1
- package/dist/components/CopyButton.js +7 -14
- package/dist/components/CurrentAsset.js +40 -6
- package/dist/components/Editor.js +6 -5
- package/dist/components/EditorContent.js +1 -1
- package/dist/components/EditorContexts.js +3 -1
- package/dist/components/ElementInstallConfirmation.js +290 -136
- package/dist/components/FixComputedValueModal.js +56 -16
- package/dist/components/FullscreenToggle.js +9 -8
- package/dist/components/GlobalKeybindings.js +50 -49
- package/dist/components/HighlightedElementSource.d.ts +5 -0
- package/dist/components/HighlightedElementSource.js +78 -0
- package/dist/components/InspectorLocationCopy.js +10 -5
- package/dist/components/InspectorPanel/MultiSequenceField.d.ts +12 -0
- package/dist/components/InspectorPanel/MultiSequenceField.js +131 -0
- package/dist/components/InspectorPanel/MultiSequenceInspector.d.ts +8 -0
- package/dist/components/InspectorPanel/MultiSequenceInspector.js +102 -0
- package/dist/components/InspectorPanel/MultiSequenceNumberField.d.ts +9 -0
- package/dist/components/InspectorPanel/MultiSequenceNumberField.js +88 -0
- package/dist/components/InspectorPanel.js +4 -0
- package/dist/components/InspectorSequenceSection.js +64 -1
- package/dist/components/InstallPackage.js +4 -5
- package/dist/components/KeyboardShortcutsSettings.js +212 -33
- package/dist/components/MenuBuildIndicator.js +7 -2
- package/dist/components/MenuCompositionName.js +62 -6
- package/dist/components/MenuToolbar.js +7 -5
- package/dist/components/ModalContainer.d.ts +1 -0
- package/dist/components/ModalContainer.js +2 -2
- package/dist/components/Modals.js +3 -1
- package/dist/components/ModelManager.d.ts +16 -0
- package/dist/components/ModelManager.js +200 -0
- package/dist/components/ModelsSettings.d.ts +2 -0
- package/dist/components/ModelsSettings.js +133 -0
- package/dist/components/NewComposition/DismissableModal.d.ts +1 -0
- package/dist/components/NewComposition/DismissableModal.js +2 -2
- package/dist/components/NewComposition/InputDragger.d.ts +2 -2
- package/dist/components/NewComposition/InputDragger.js +6 -6
- package/dist/components/NewComposition/NewFolder.js +11 -8
- package/dist/components/NewComposition/RenameFolder.js +17 -10
- package/dist/components/OptionalPackageModal.d.ts +11 -0
- package/dist/components/OptionalPackageModal.js +155 -0
- package/dist/components/PlayPause.js +4 -8
- package/dist/components/PlaybackKeyboardShortcutsManager.js +3 -6
- package/dist/components/PreviewToolbarOverflowButton.js +11 -2
- package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +5 -2
- package/dist/components/RadioButton.d.ts +1 -0
- package/dist/components/RadioButton.js +2 -2
- package/dist/components/RenderButton.js +5 -1
- package/dist/components/RenderModal/CliCopyButton.js +13 -27
- package/dist/components/RenderModal/NumberSetting.d.ts +6 -1
- package/dist/components/RenderModal/NumberSetting.js +2 -2
- package/dist/components/RenderModal/RenderModalBasic.js +1 -1
- package/dist/components/RenderModal/RenderModalOutputName.d.ts +3 -1
- package/dist/components/RenderModal/RenderModalOutputName.js +4 -4
- package/dist/components/RenderModal/SeparateAudioOption.js +1 -1
- package/dist/components/RenderModal/WebRenderModalBasic.js +1 -1
- package/dist/components/RenderQueue/CaptionQueueItem.d.ts +6 -0
- package/dist/components/RenderQueue/CaptionQueueItem.js +129 -0
- package/dist/components/RenderQueue/CaptionQueueProcessor.d.ts +1 -0
- package/dist/components/RenderQueue/CaptionQueueProcessor.js +110 -0
- package/dist/components/RenderQueue/CaptionQueueProcessorLoader.d.ts +2 -0
- package/dist/components/RenderQueue/CaptionQueueProcessorLoader.js +54 -0
- package/dist/components/RenderQueue/RenderQueueCopyToClipboard.js +7 -4
- package/dist/components/RenderQueue/RenderQueueItem.js +3 -3
- package/dist/components/RenderQueue/VideoMattingQueueItem.d.ts +6 -0
- package/dist/components/RenderQueue/VideoMattingQueueItem.js +129 -0
- package/dist/components/RenderQueue/VideoMattingQueueProcessor.d.ts +1 -0
- package/dist/components/RenderQueue/VideoMattingQueueProcessor.js +105 -0
- package/dist/components/RenderQueue/VideoMattingQueueProcessorLoader.d.ts +2 -0
- package/dist/components/RenderQueue/VideoMattingQueueProcessorLoader.js +54 -0
- package/dist/components/RenderQueue/caption-job-types.d.ts +47 -0
- package/dist/components/RenderQueue/caption-job-types.js +7 -0
- package/dist/components/RenderQueue/context.d.ts +16 -0
- package/dist/components/RenderQueue/context.js +224 -11
- package/dist/components/RenderQueue/index.js +34 -10
- package/dist/components/RenderQueue/item-style.d.ts +1 -0
- package/dist/components/RenderQueue/item-style.js +2 -1
- package/dist/components/RenderQueue/load-model-for-job.d.ts +11 -0
- package/dist/components/RenderQueue/load-model-for-job.js +14 -0
- package/dist/components/RenderQueue/video-matting-job-types.d.ts +38 -0
- package/dist/components/RenderQueue/video-matting-job-types.js +5 -0
- package/dist/components/RendersTab.js +4 -4
- package/dist/components/SegmentedControl.d.ts +2 -2
- package/dist/components/SegmentedControl.js +38 -13
- package/dist/components/SelectedOutlinePolygon.js +8 -2
- package/dist/components/SettingsButton.d.ts +4 -0
- package/dist/components/SettingsButton.js +49 -0
- package/dist/components/SettingsModal.d.ts +1 -1
- package/dist/components/SettingsModal.js +3 -1
- package/dist/components/ShowOutlinesProvider.js +12 -0
- package/dist/components/SidebarCollapserControls.js +21 -16
- package/dist/components/SizeSelector.js +10 -2
- package/dist/components/SkillsSettings.js +11 -8
- package/dist/components/SnappingToggle.js +5 -2
- package/dist/components/Splitter/SplitterContainer.js +63 -10
- package/dist/components/Splitter/SplitterContext.d.ts +3 -0
- package/dist/components/Splitter/SplitterContext.js +5 -1
- package/dist/components/Splitter/SplitterElement.js +11 -2
- package/dist/components/Splitter/SplitterHandle.d.ts +1 -0
- package/dist/components/Splitter/SplitterHandle.js +55 -25
- package/dist/components/Tabs/vertical.d.ts +1 -0
- package/dist/components/Tabs/vertical.js +2 -2
- package/dist/components/TimeValue.js +2 -3
- package/dist/components/Timeline/SequencePropsObserver.js +4 -0
- package/dist/components/Timeline/SubscribeToNodePaths.d.ts +2 -1
- package/dist/components/Timeline/SubscribeToNodePaths.js +2 -1
- package/dist/components/Timeline/Timeline.js +17 -46
- package/dist/components/Timeline/TimelineClipboardKeybindings.js +2 -4
- package/dist/components/Timeline/TimelineDeleteKeybindings.js +3 -18
- package/dist/components/Timeline/TimelineDragHandler.js +11 -6
- package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +1 -0
- package/dist/components/Timeline/TimelinePinchZoom.js +6 -30
- package/dist/components/Timeline/TimelinePlayCursorSyncer.js +1 -7
- package/dist/components/Timeline/TimelineRowChrome.js +11 -3
- package/dist/components/Timeline/TimelineSchemaField.js +8 -4
- package/dist/components/Timeline/TimelineSelection.d.ts +2 -0
- package/dist/components/Timeline/TimelineSelection.js +55 -2
- package/dist/components/Timeline/TimelineSequence.js +148 -25
- package/dist/components/Timeline/TimelineSequenceItem.d.ts +0 -1
- package/dist/components/Timeline/TimelineSequenceItem.js +220 -112
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +35 -5
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +233 -138
- package/dist/components/Timeline/TimelineSlider.js +1 -4
- package/dist/components/Timeline/TimelineTimeIndicators.js +1 -0
- package/dist/components/Timeline/TimelineWidthProvider.js +2 -5
- package/dist/components/Timeline/TimelineZoomControls.js +20 -20
- package/dist/components/Timeline/get-sequence-split-menu-item.d.ts +11 -0
- package/dist/components/Timeline/get-sequence-split-menu-item.js +55 -0
- package/dist/components/Timeline/use-asset-timeline-context-menu.d.ts +2 -0
- package/dist/components/Timeline/use-asset-timeline-context-menu.js +52 -0
- package/dist/components/Timeline/use-sequence-props-subscription.d.ts +3 -2
- package/dist/components/Timeline/use-sequence-props-subscription.js +4 -10
- package/dist/components/TimelineInOutToggle.js +20 -17
- package/dist/components/TopPanel.js +3 -19
- package/dist/components/Transcription/LazyModels.d.ts +1 -0
- package/dist/components/Transcription/LazyModels.js +5 -0
- package/dist/components/Transcription/Models.d.ts +6 -0
- package/dist/components/Transcription/Models.js +18 -0
- package/dist/components/Transcription/TranscriptionModal.d.ts +3 -0
- package/dist/components/Transcription/TranscriptionModal.js +428 -0
- package/dist/components/Transcription/TranscriptionModalWithOptionalWhisper.d.ts +5 -0
- package/dist/components/Transcription/TranscriptionModalWithOptionalWhisper.js +48 -0
- package/dist/components/Transcription/caption-output-name.d.ts +2 -0
- package/dist/components/Transcription/caption-output-name.js +10 -0
- package/dist/components/Transcription/resample-media-to-16-khz.d.ts +6 -0
- package/dist/components/Transcription/resample-media-to-16-khz.js +82 -0
- package/dist/components/Transcription/whisper-languages.d.ts +2 -0
- package/dist/components/Transcription/whisper-languages.js +104 -0
- package/dist/components/Transcription/whisper-webgpu-capability.d.ts +2 -0
- package/dist/components/Transcription/whisper-webgpu-capability.js +7 -0
- package/dist/components/UndoRedoButtons.js +13 -38
- package/dist/components/UpdatesSettings.js +17 -17
- package/dist/components/VideoMatting/LazyModels.d.ts +1 -0
- package/dist/components/VideoMatting/LazyModels.js +5 -0
- package/dist/components/VideoMatting/Models.d.ts +6 -0
- package/dist/components/VideoMatting/Models.js +18 -0
- package/dist/components/VideoMatting/VideoMattingModal.d.ts +3 -0
- package/dist/components/VideoMatting/VideoMattingModal.js +207 -0
- package/dist/components/VideoMatting/VideoMattingModalWithOptionalPackage.d.ts +5 -0
- package/dist/components/VideoMatting/VideoMattingModalWithOptionalPackage.js +46 -0
- package/dist/components/VideoMatting/video-matting-capability.d.ts +2 -0
- package/dist/components/VideoMatting/video-matting-capability.js +7 -0
- package/dist/components/WebMcp.js +439 -22
- package/dist/components/ZoomPersistor.js +6 -3
- package/dist/components/composition-menu-items.js +1 -1
- package/dist/components/import-assets.d.ts +3 -2
- package/dist/components/import-assets.js +5 -9
- package/dist/components/keyboard-shortcuts.d.ts +17 -1
- package/dist/components/keyboard-shortcuts.js +177 -89
- package/dist/components/public-output-name.d.ts +5 -0
- package/dist/components/public-output-name.js +60 -0
- package/dist/components/use-model-cache-status.d.ts +7 -0
- package/dist/components/use-model-cache-status.js +35 -0
- package/dist/esm/CaptionQueueProcessor-k0yrm3dj.mjs +211 -0
- package/dist/esm/HighlightedElementSource-jfc66k4p.mjs +1236 -0
- package/dist/esm/LazyModels-2trdm224.mjs +11 -0
- package/dist/esm/LazyModels-fjb5ckaq.mjs +11 -0
- package/dist/esm/TranscriptionModal-916jqhry.mjs +1011 -0
- package/dist/esm/VideoMattingModal-2tm79s9b.mjs +374 -0
- package/dist/esm/VideoMattingQueueProcessor-t1hgm2rm.mjs +109 -0
- package/dist/esm/index-1x7bsdh6.mjs +261 -0
- package/dist/esm/index-3hgr6gjx.mjs +41 -0
- package/dist/esm/index-5qddp5h7.mjs +36 -0
- package/dist/esm/index-5zrb1ft4.mjs +39 -0
- package/dist/esm/index-6cvm9a65.mjs +45923 -0
- package/dist/esm/index-7tt71e8n.mjs +36 -0
- package/dist/esm/index-9x6e1dq0.mjs +428 -0
- package/dist/esm/index-cw0pnpg5.mjs +50 -0
- package/dist/esm/index-czwvnn9g.mjs +35 -0
- package/dist/esm/index-hy4xcgty.mjs +1366 -0
- package/dist/esm/{chunk-je0h1bgt.js → index-jg13hf2g.mjs} +3 -1
- package/dist/esm/{chunk-6jf1natv.js → index-rcv7qkt5.mjs} +18 -1
- package/dist/esm/index-sgtmgc4h.mjs +423 -0
- package/dist/esm/index-te66vvrp.mjs +142 -0
- package/dist/esm/index-v4tr1bft.mjs +20 -0
- package/dist/esm/index-x7t2y7ws.mjs +54194 -0
- package/dist/esm/index-xhe2m2qr.mjs +1146 -0
- package/dist/esm/index.mjs +45 -933
- package/dist/esm/internals.mjs +13 -114127
- package/dist/esm/previewEntry.mjs +387 -114784
- package/dist/esm/renderEntry.mjs +3 -3
- package/dist/esm/{chunk-m0jqdbkr.js → resolve-composition-component-location-14148845.mjs} +1 -1
- package/dist/helpers/copy-text.js +1 -2
- package/dist/helpers/drag-aware-double-click.d.ts +2 -1
- package/dist/helpers/drag-aware-double-click.js +12 -1
- package/dist/helpers/get-asset-metadata.d.ts +1 -0
- package/dist/helpers/get-asset-metadata.js +4 -0
- package/dist/helpers/hoverable.js +8 -0
- package/dist/helpers/inject-css.js +2 -0
- package/dist/helpers/optional-package-dependencies.d.ts +3 -0
- package/dist/helpers/optional-package-dependencies.js +24 -0
- package/dist/helpers/pointer-session.d.ts +6 -0
- package/dist/helpers/pointer-session.js +36 -14
- package/dist/helpers/prism-tomorrow.d.ts +1 -0
- package/dist/helpers/prism-tomorrow.js +151 -0
- package/dist/helpers/sequence-node-path-mutations.js +11 -0
- package/dist/helpers/slugify-name.d.ts +1 -0
- package/dist/helpers/slugify-name.js +14 -0
- package/dist/helpers/studio-runtime-config.d.ts +1 -0
- package/dist/helpers/studio-runtime-config.js +6 -1
- package/dist/helpers/use-copy-feedback.d.ts +4 -0
- package/dist/helpers/use-copy-feedback.js +19 -0
- package/dist/helpers/use-keybinding.d.ts +9 -3
- package/dist/helpers/use-keybinding.js +8 -9
- package/dist/helpers/use-keyboard-shortcut-label.d.ts +2 -0
- package/dist/helpers/use-keyboard-shortcut-label.js +15 -0
- package/dist/helpers/use-menu-structure.js +58 -13
- package/dist/icons/copy.d.ts +5 -0
- package/dist/icons/copy.js +12 -0
- package/dist/icons/input-props.d.ts +1 -1
- package/dist/icons/input-props.js +2 -2
- package/dist/icons/models.d.ts +4 -0
- package/dist/icons/models.js +7 -0
- package/dist/icons/separation.d.ts +4 -0
- package/dist/icons/separation.js +7 -0
- package/dist/icons/transcription.d.ts +4 -0
- package/dist/icons/transcription.js +7 -0
- package/dist/icons/upload.js +1 -1
- package/dist/state/canvas-ref.d.ts +1 -0
- package/dist/state/canvas-ref.js +2 -1
- package/dist/state/modals.d.ts +14 -2
- package/dist/state/sidebar.d.ts +3 -0
- package/dist/state/sidebar.js +6 -1
- package/dist/state/timeline-zoom.d.ts +1 -1
- package/dist/state/timeline-zoom.js +3 -3
- package/dist/visual-controls/VisualControls.js +4 -0
- package/package.json +34 -20
- package/dist/components/UpdateCheck.d.ts +0 -1
- package/dist/components/UpdateCheck.js +0 -79
- package/dist/esm/chunk-emw4k5b0.js +0 -99527
- package/dist/esm/chunk-vkrvnx2h.js +0 -99378
- package/dist/helpers/use-max-media-duration.d.ts +0 -2
- package/dist/helpers/use-max-media-duration.js +0 -61
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.SplitterContext = exports.getClampedSplitterFlex = exports.getSplitterFlexBounds = void 0;
|
|
6
|
+
exports.SplitterLayoutContext = exports.SplitterContext = exports.getClampedSplitterFlex = exports.getSplitterFlexBounds = void 0;
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
8
|
const getSplitterFlexBounds = ({ availableSize, maxAntiFlexerSize, maxFlex, maxFlexerSize, minAntiFlexerSize, minFlex, minFlexerSize, }) => {
|
|
9
9
|
if (availableSize === null || availableSize <= 0) {
|
|
@@ -21,6 +21,8 @@ const getClampedSplitterFlex = ({ flexValue, ...bounds }) => {
|
|
|
21
21
|
exports.getClampedSplitterFlex = getClampedSplitterFlex;
|
|
22
22
|
exports.SplitterContext = react_1.default.createContext({
|
|
23
23
|
flexValue: 1,
|
|
24
|
+
collapsedDuringDrag: null,
|
|
25
|
+
setCollapsedDuringDrag: () => undefined,
|
|
24
26
|
ref: { current: null },
|
|
25
27
|
setFlexValue: () => undefined,
|
|
26
28
|
isDragging: { current: false },
|
|
@@ -35,3 +37,5 @@ exports.SplitterContext = react_1.default.createContext({
|
|
|
35
37
|
id: '--',
|
|
36
38
|
persistFlex: () => undefined,
|
|
37
39
|
});
|
|
40
|
+
// Propagate layout changes only through the affected splitter subtree.
|
|
41
|
+
exports.SplitterLayoutContext = react_1.default.createContext(null);
|
|
@@ -15,7 +15,9 @@ const SplitterElement = ({ children, type, sticky }) => {
|
|
|
15
15
|
flex:
|
|
16
16
|
// Multiply by 1000 because if flex values don't add up to at least 1, they will not fill up the screen
|
|
17
17
|
(type === 'flexer' ? context.flexValue : 1 - context.flexValue) * 1000,
|
|
18
|
-
display: '
|
|
18
|
+
display: context.collapsedDuringDrag === (type === 'flexer' ? 'left' : 'right')
|
|
19
|
+
? 'none'
|
|
20
|
+
: 'flex',
|
|
19
21
|
position: 'relative',
|
|
20
22
|
overflow: 'hidden',
|
|
21
23
|
flexDirection: 'column',
|
|
@@ -28,7 +30,14 @@ const SplitterElement = ({ children, type, sticky }) => {
|
|
|
28
30
|
? (minSize !== null && minSize !== void 0 ? minSize : undefined)
|
|
29
31
|
: undefined,
|
|
30
32
|
};
|
|
31
|
-
}, [
|
|
33
|
+
}, [
|
|
34
|
+
context.collapsedDuringDrag,
|
|
35
|
+
context.flexValue,
|
|
36
|
+
context.orientation,
|
|
37
|
+
maxSize,
|
|
38
|
+
minSize,
|
|
39
|
+
type,
|
|
40
|
+
]);
|
|
32
41
|
const stickStyle = (0, react_1.useMemo)(() => {
|
|
33
42
|
return {
|
|
34
43
|
position: 'absolute',
|
|
@@ -3,4 +3,5 @@ export declare const SPLITTER_HANDLE_SIZE = 3;
|
|
|
3
3
|
export declare const SplitterHandle: React.FC<{
|
|
4
4
|
readonly allowToCollapse: 'right' | 'left' | 'none';
|
|
5
5
|
readonly onCollapse: () => void;
|
|
6
|
+
readonly onCollapseDuringDrag: ((side: 'left' | 'right' | null) => void) | null;
|
|
6
7
|
}>;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SplitterHandle = exports.SPLITTER_HANDLE_SIZE = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
const player_1 = require("@remotion/player");
|
|
6
5
|
const react_1 = require("react");
|
|
7
6
|
const pointer_session_1 = require("../../helpers/pointer-session");
|
|
8
7
|
const ForceSpecificCursor_1 = require("../ForceSpecificCursor");
|
|
@@ -11,10 +10,14 @@ exports.SPLITTER_HANDLE_SIZE = 3;
|
|
|
11
10
|
const containerRow = {
|
|
12
11
|
height: exports.SPLITTER_HANDLE_SIZE,
|
|
13
12
|
};
|
|
13
|
+
const collapsedContainer = {
|
|
14
|
+
width: 0,
|
|
15
|
+
height: 0,
|
|
16
|
+
};
|
|
14
17
|
const containerColumn = {
|
|
15
18
|
width: exports.SPLITTER_HANDLE_SIZE,
|
|
16
19
|
};
|
|
17
|
-
const SplitterHandle = ({ allowToCollapse, onCollapse }) => {
|
|
20
|
+
const SplitterHandle = ({ allowToCollapse, onCollapse, onCollapseDuringDrag }) => {
|
|
18
21
|
const context = (0, react_1.useContext)(SplitterContext_1.SplitterContext);
|
|
19
22
|
if (!context) {
|
|
20
23
|
throw new Error('Cannot find splitter context');
|
|
@@ -22,8 +25,13 @@ const SplitterHandle = ({ allowToCollapse, onCollapse }) => {
|
|
|
22
25
|
const ref = (0, react_1.useRef)(null);
|
|
23
26
|
// Keep the latest props/context readable inside the long-lived pointerdown
|
|
24
27
|
// listener without re-subscribing it on every render.
|
|
25
|
-
const latest = (0, react_1.useRef)({
|
|
26
|
-
|
|
28
|
+
const latest = (0, react_1.useRef)({
|
|
29
|
+
context,
|
|
30
|
+
allowToCollapse,
|
|
31
|
+
onCollapse,
|
|
32
|
+
onCollapseDuringDrag,
|
|
33
|
+
});
|
|
34
|
+
latest.current = { context, allowToCollapse, onCollapse, onCollapseDuringDrag };
|
|
27
35
|
(0, react_1.useEffect)(() => {
|
|
28
36
|
const { current } = ref;
|
|
29
37
|
if (!current) {
|
|
@@ -75,41 +83,59 @@ const SplitterHandle = ({ allowToCollapse, onCollapse }) => {
|
|
|
75
83
|
}
|
|
76
84
|
return newFlex;
|
|
77
85
|
};
|
|
86
|
+
const getCollapsedSide = (ev) => {
|
|
87
|
+
const collapse = latest.current.allowToCollapse;
|
|
88
|
+
const unclamped = getNewValue(ev, false);
|
|
89
|
+
if (collapse === 'left' && unclamped < dragContext.minFlex / 2) {
|
|
90
|
+
return 'left';
|
|
91
|
+
}
|
|
92
|
+
if (collapse === 'right' &&
|
|
93
|
+
1 - unclamped < (1 - dragContext.maxFlex) / 2) {
|
|
94
|
+
return 'right';
|
|
95
|
+
}
|
|
96
|
+
return null;
|
|
97
|
+
};
|
|
98
|
+
let lastFlex = startFlex;
|
|
99
|
+
let lastCollapsedSide = null;
|
|
78
100
|
const onPointerMove = (ev) => {
|
|
101
|
+
var _a, _b;
|
|
79
102
|
if (!dragContext.isDragging.current) {
|
|
80
103
|
return;
|
|
81
104
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
else if (collapse === 'right') {
|
|
92
|
-
const unclamped = 1 - getNewValue(ev, false);
|
|
93
|
-
if (unclamped < (1 - dragContext.maxFlex) / 2) {
|
|
94
|
-
endDrag === null || endDrag === void 0 ? void 0 : endDrag();
|
|
95
|
-
latest.current.onCollapse();
|
|
96
|
-
}
|
|
97
|
-
}
|
|
105
|
+
// Keep the handle mounted and captured until release, even while
|
|
106
|
+
// the panel is hidden, so moving inward can restore it.
|
|
107
|
+
lastCollapsedSide = getCollapsedSide(ev);
|
|
108
|
+
lastFlex = getNewValue(ev, true);
|
|
109
|
+
(_b = (_a = latest.current).onCollapseDuringDrag) === null || _b === void 0 ? void 0 : _b.call(_a, lastCollapsedSide);
|
|
110
|
+
dragContext.setCollapsedDuringDrag(lastCollapsedSide);
|
|
111
|
+
dragContext.setFlexValue(lastFlex);
|
|
98
112
|
};
|
|
99
113
|
endDrag = (0, pointer_session_1.startCapturedPointerSession)({
|
|
100
114
|
event: e,
|
|
101
115
|
captureTarget: current,
|
|
102
116
|
onMove: onPointerMove,
|
|
103
117
|
onEnd: (reason, endEvent) => {
|
|
118
|
+
var _a, _b;
|
|
104
119
|
if ((reason === 'pointerup' || reason === 'buttons-released') &&
|
|
105
|
-
endEvent
|
|
106
|
-
|
|
107
|
-
|
|
120
|
+
endEvent) {
|
|
121
|
+
lastFlex = getNewValue(endEvent, true);
|
|
122
|
+
lastCollapsedSide = getCollapsedSide(endEvent);
|
|
123
|
+
}
|
|
124
|
+
// Capture loss and cancellation may have no usable coordinates.
|
|
125
|
+
// Commit the last displayed state instead of resetting the panel.
|
|
126
|
+
if (reason !== 'manual' && dragContext.isDragging.current) {
|
|
127
|
+
const savedFlex = lastCollapsedSide === null ? lastFlex : startFlex;
|
|
128
|
+
dragContext.setFlexValue(savedFlex);
|
|
129
|
+
dragContext.persistFlex(savedFlex);
|
|
130
|
+
if (lastCollapsedSide !== null) {
|
|
131
|
+
latest.current.onCollapse();
|
|
132
|
+
}
|
|
108
133
|
}
|
|
134
|
+
(_b = (_a = latest.current).onCollapseDuringDrag) === null || _b === void 0 ? void 0 : _b.call(_a, null);
|
|
135
|
+
dragContext.setCollapsedDuringDrag(null);
|
|
109
136
|
dragContext.isDragging.current = false;
|
|
110
137
|
(0, ForceSpecificCursor_1.stopForcingSpecificCursor)();
|
|
111
138
|
endDrag = null;
|
|
112
|
-
player_1.PlayerInternals.updateAllElementsSizes();
|
|
113
139
|
},
|
|
114
140
|
});
|
|
115
141
|
};
|
|
@@ -124,6 +150,10 @@ const SplitterHandle = ({ allowToCollapse, onCollapse }) => {
|
|
|
124
150
|
context.orientation === 'horizontal'
|
|
125
151
|
? 'remotion-splitter-horizontal'
|
|
126
152
|
: 'remotion-splitter-vertical',
|
|
127
|
-
].join(' '), style: context.
|
|
153
|
+
].join(' '), style: context.collapsedDuringDrag !== null
|
|
154
|
+
? collapsedContainer
|
|
155
|
+
: context.orientation === 'horizontal'
|
|
156
|
+
? containerRow
|
|
157
|
+
: containerColumn }));
|
|
128
158
|
};
|
|
129
159
|
exports.SplitterHandle = SplitterHandle;
|
|
@@ -19,7 +19,7 @@ const selectorButton = {
|
|
|
19
19
|
userSelect: 'none',
|
|
20
20
|
WebkitUserSelect: 'none',
|
|
21
21
|
};
|
|
22
|
-
const VerticalTab = ({ children, onClick, renderIcon, style, selected }) => {
|
|
22
|
+
const VerticalTab = ({ children, onClick, renderIcon, style, selected, autoFocus }) => {
|
|
23
23
|
const [hovered, setHovered] = (0, react_1.useState)(false);
|
|
24
24
|
const { tabIndex } = (0, z_index_1.useZIndex)();
|
|
25
25
|
const onPointerEnter = (0, react_1.useCallback)(() => {
|
|
@@ -38,6 +38,6 @@ const VerticalTab = ({ children, onClick, renderIcon, style, selected }) => {
|
|
|
38
38
|
...style,
|
|
39
39
|
};
|
|
40
40
|
}, [color, hovered, selected, style]);
|
|
41
|
-
return (jsx_runtime_1.jsxs("button", { style: definiteStyle, type: "button", onClick: onClick, tabIndex: tabIndex, onPointerLeave: onPointerLeave, onPointerEnter: onPointerEnter, children: [renderIcon ? renderIcon(color) : null, children] }));
|
|
41
|
+
return (jsx_runtime_1.jsxs("button", { autoFocus: autoFocus, style: definiteStyle, type: "button", onClick: onClick, tabIndex: tabIndex, onPointerLeave: onPointerLeave, onPointerEnter: onPointerEnter, children: [renderIcon ? renderIcon(color) : null, children] }));
|
|
42
42
|
};
|
|
43
43
|
exports.VerticalTab = VerticalTab;
|
|
@@ -102,13 +102,12 @@ const TimeValue = () => {
|
|
|
102
102
|
}), [seek, play, pause, toggle]);
|
|
103
103
|
(0, react_1.useEffect)(() => {
|
|
104
104
|
const gKey = keybindings.registerKeybinding({
|
|
105
|
-
event: '
|
|
106
|
-
|
|
105
|
+
event: 'keydown',
|
|
106
|
+
action: 'goToFrame',
|
|
107
107
|
callback: () => {
|
|
108
108
|
var _a;
|
|
109
109
|
(_a = ref.current) === null || _a === void 0 ? void 0 : _a.click();
|
|
110
110
|
},
|
|
111
|
-
commandCtrlKey: false,
|
|
112
111
|
preventDefault: true,
|
|
113
112
|
triggerIfInputFieldFocused: false,
|
|
114
113
|
keepRegisteredWhenNotHighestContext: false,
|
|
@@ -8,6 +8,7 @@ const client_id_1 = require("../../helpers/client-id");
|
|
|
8
8
|
const sequence_node_path_mutations_1 = require("../../helpers/sequence-node-path-mutations");
|
|
9
9
|
const ExpandedTracksProvider_1 = require("../ExpandedTracksProvider");
|
|
10
10
|
const sequence_props_subscription_store_1 = require("./sequence-props-subscription-store");
|
|
11
|
+
const TimelineSelection_1 = require("./TimelineSelection");
|
|
11
12
|
const SequencePropsObserver = () => {
|
|
12
13
|
const { subscribeToEvent } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
13
14
|
const { remapPropStatuses, setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
@@ -18,6 +19,7 @@ const SequencePropsObserver = () => {
|
|
|
18
19
|
const { setOverrideIdToNodePath } = (0, react_1.useContext)(remotion_1.Internals.OverrideIdsToNodePathsSettersContext);
|
|
19
20
|
const { fastRefreshes } = (0, react_1.useContext)(fast_refresh_context_1.FastRefreshContext);
|
|
20
21
|
const { migrateExpandedTracksForSubscriptionKey } = (0, react_1.useContext)(ExpandedTracksProvider_1.ExpandedTracksSetterContext);
|
|
22
|
+
const { remapSelectionNodePaths } = (0, TimelineSelection_1.useTimelineSelection)();
|
|
21
23
|
(0, react_1.useEffect)(() => {
|
|
22
24
|
const handleEvent = (event) => {
|
|
23
25
|
if (event.type !== 'sequence-props-updated') {
|
|
@@ -36,6 +38,7 @@ const SequencePropsObserver = () => {
|
|
|
36
38
|
if (mutations.length === 0) {
|
|
37
39
|
return;
|
|
38
40
|
}
|
|
41
|
+
remapSelectionNodePaths(mutations);
|
|
39
42
|
const statusRemappings = [];
|
|
40
43
|
const overrideUpdates = [];
|
|
41
44
|
const overrideIdsToRefresh = new Set();
|
|
@@ -127,6 +130,7 @@ const SequencePropsObserver = () => {
|
|
|
127
130
|
fastRefreshes,
|
|
128
131
|
migrateExpandedTracksForSubscriptionKey,
|
|
129
132
|
propStatusesRef,
|
|
133
|
+
remapSelectionNodePaths,
|
|
130
134
|
remapPropStatuses,
|
|
131
135
|
setOverrideIdToNodePath,
|
|
132
136
|
]);
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { type FC } from 'react';
|
|
2
|
-
import type { EffectDefinition, JsxComponentIdentity, InteractivitySchema } from 'remotion';
|
|
2
|
+
import type { EffectDefinition, JsxComponentIdentity, InteractivitySchema, VideoConfigValues } from 'remotion';
|
|
3
3
|
export declare const SubscribeToNodePaths: FC<{
|
|
4
4
|
readonly overrideId: string;
|
|
5
5
|
readonly componentIdentity: JsxComponentIdentity | null;
|
|
6
6
|
readonly schema: InteractivitySchema;
|
|
7
7
|
readonly getStack: () => string | null;
|
|
8
8
|
readonly effects: readonly EffectDefinition<unknown>[];
|
|
9
|
+
readonly videoConfigValues: VideoConfigValues | null;
|
|
9
10
|
}>;
|
|
@@ -5,7 +5,7 @@ const react_1 = require("react");
|
|
|
5
5
|
const no_react_1 = require("remotion/no-react");
|
|
6
6
|
const use_resolved_stack_react_to_change_1 = require("./use-resolved-stack-react-to-change");
|
|
7
7
|
const use_sequence_props_subscription_1 = require("./use-sequence-props-subscription");
|
|
8
|
-
const SubscribeToNodePaths = ({ overrideId, componentIdentity, schema, getStack, effects }) => {
|
|
8
|
+
const SubscribeToNodePaths = ({ overrideId, componentIdentity, schema, getStack, effects, videoConfigValues, }) => {
|
|
9
9
|
const { resolvedLocation, stack, preferMappedNodePath } = (0, use_resolved_stack_react_to_change_1.useResolveStackAndReactToChange)(getStack, overrideId);
|
|
10
10
|
const effectSubscriptions = (0, react_1.useMemo)(() => {
|
|
11
11
|
return effects
|
|
@@ -22,6 +22,7 @@ const SubscribeToNodePaths = ({ overrideId, componentIdentity, schema, getStack,
|
|
|
22
22
|
originalLocation: resolvedLocation,
|
|
23
23
|
preferMappedNodePath,
|
|
24
24
|
stack,
|
|
25
|
+
videoConfigValues,
|
|
25
26
|
});
|
|
26
27
|
return null;
|
|
27
28
|
};
|
|
@@ -63,7 +63,6 @@ const should_subscribe_to_sequence_props_1 = require("./should-subscribe-to-sequ
|
|
|
63
63
|
const SubscribeToNodePaths_1 = require("./SubscribeToNodePaths");
|
|
64
64
|
const timeline_asset_drop_context_1 = require("./timeline-asset-drop-context");
|
|
65
65
|
const timeline_refs_1 = require("./timeline-refs");
|
|
66
|
-
const timeline_scroll_logic_1 = require("./timeline-scroll-logic");
|
|
67
66
|
const TimelineDragHandler_1 = require("./TimelineDragHandler");
|
|
68
67
|
const TimelineHeightContainer_1 = require("./TimelineHeightContainer");
|
|
69
68
|
const TimelineInOutDragHandler_1 = require("./TimelineInOutDragHandler");
|
|
@@ -75,7 +74,7 @@ const TimelinePinchZoom_1 = require("./TimelinePinchZoom");
|
|
|
75
74
|
const TimelinePlayCursorSyncer_1 = require("./TimelinePlayCursorSyncer");
|
|
76
75
|
const TimelineScrollable_1 = require("./TimelineScrollable");
|
|
77
76
|
const TimelineSelection_1 = require("./TimelineSelection");
|
|
78
|
-
const
|
|
77
|
+
const TimelineSequenceRightEdgeDragHandle_1 = require("./TimelineSequenceRightEdgeDragHandle");
|
|
79
78
|
const TimelineSlider_1 = require("./TimelineSlider");
|
|
80
79
|
const TimelineTickFormatProvider_1 = require("./TimelineTickFormatProvider");
|
|
81
80
|
const TimelineTimeIndicators_1 = require("./TimelineTimeIndicators");
|
|
@@ -99,7 +98,6 @@ const TimelineContextMenuArea = ({ children }) => {
|
|
|
99
98
|
const assetDropFrame = (0, use_timeline_asset_drop_1.useTimelineAssetDrop)();
|
|
100
99
|
const { compositions, canvasContent } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
|
|
101
100
|
const videoConfig = remotion_1.Internals.useUnsafeVideoConfig();
|
|
102
|
-
const isStill = (0, is_current_selected_still_1.useIsStill)();
|
|
103
101
|
const [isAddingSolid, setIsAddingSolid] = (0, react_1.useState)(false);
|
|
104
102
|
const [isAddingAsset, setIsAddingAsset] = (0, react_1.useState)(false);
|
|
105
103
|
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
@@ -107,44 +105,6 @@ const TimelineContextMenuArea = ({ children }) => {
|
|
|
107
105
|
const previewInteractive = previewConnected && (0, interactivity_enabled_1.isStudioInteractivityEnabled)();
|
|
108
106
|
const browserStudioOperations = (0, browser_studio_operations_1.getBrowserStudioOperations)();
|
|
109
107
|
const browserStudioCanInsertSolid = browserStudioOperations !== null;
|
|
110
|
-
(0, react_1.useEffect)(() => {
|
|
111
|
-
const verticalScroll = timeline_refs_1.timelineVerticalScroll.current;
|
|
112
|
-
if (!verticalScroll) {
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
const autoScroll = (0, timeline_scroll_logic_1.startTimelineEdgeAutoScroll)({
|
|
116
|
-
includeHorizontal: false,
|
|
117
|
-
includeVertical: true,
|
|
118
|
-
verticalTopOffset: isStill ? 0 : TimelineTimeIndicators_1.TIMELINE_TIME_INDICATOR_HEIGHT,
|
|
119
|
-
onTick: (directions) => {
|
|
120
|
-
if (directions.y === null) {
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
verticalScroll.scrollTop +=
|
|
124
|
-
directions.y === 'up'
|
|
125
|
-
? -timeline_scroll_logic_1.EDGE_SCROLL_VERTICAL_INCREMENT
|
|
126
|
-
: timeline_scroll_logic_1.EDGE_SCROLL_VERTICAL_INCREMENT;
|
|
127
|
-
},
|
|
128
|
-
});
|
|
129
|
-
const onDragOver = (event) => {
|
|
130
|
-
if (!event.dataTransfer ||
|
|
131
|
-
!Array.from(event.dataTransfer.types).includes(TimelineSequenceItem_1.SEQUENCE_REORDER_MIME_TYPE)) {
|
|
132
|
-
autoScroll.stop();
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
autoScroll.update(event);
|
|
136
|
-
};
|
|
137
|
-
const stopAutoScroll = () => autoScroll.stop();
|
|
138
|
-
verticalScroll.addEventListener('dragover', onDragOver, true);
|
|
139
|
-
document.addEventListener('dragend', stopAutoScroll, true);
|
|
140
|
-
document.addEventListener('drop', stopAutoScroll, true);
|
|
141
|
-
return () => {
|
|
142
|
-
autoScroll.stop();
|
|
143
|
-
verticalScroll.removeEventListener('dragover', onDragOver, true);
|
|
144
|
-
document.removeEventListener('dragend', stopAutoScroll, true);
|
|
145
|
-
document.removeEventListener('drop', stopAutoScroll, true);
|
|
146
|
-
};
|
|
147
|
-
}, [isStill]);
|
|
148
108
|
const currentCompositionId = (canvasContent === null || canvasContent === void 0 ? void 0 : canvasContent.type) === 'composition' ? canvasContent.compositionId : null;
|
|
149
109
|
const currentComposition = (0, react_1.useMemo)(() => {
|
|
150
110
|
var _a;
|
|
@@ -356,9 +316,20 @@ const TimelineInner = () => {
|
|
|
356
316
|
timeline,
|
|
357
317
|
]);
|
|
358
318
|
const durationInFrames = (_a = videoConfig === null || videoConfig === void 0 ? void 0 : videoConfig.durationInFrames) !== null && _a !== void 0 ? _a : 0;
|
|
319
|
+
const { getDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
|
|
359
320
|
const filtered = (0, react_1.useMemo)(() => {
|
|
360
|
-
return timeline.filter((t) =>
|
|
361
|
-
|
|
321
|
+
return timeline.filter((t) => {
|
|
322
|
+
// Moving outside the composition can reduce the displayed duration to
|
|
323
|
+
// zero. Keep the drag owner mounted until its pending edit is saved.
|
|
324
|
+
if (t.sequence.showInTimeline &&
|
|
325
|
+
t.nodePathInfo !== null &&
|
|
326
|
+
getDragOverrides(t.nodePathInfo.sequenceSubscriptionKey).from !==
|
|
327
|
+
undefined) {
|
|
328
|
+
return true;
|
|
329
|
+
}
|
|
330
|
+
return (0, should_show_track_in_timeline_1.shouldShowTrackInTimeline)(t, durationInFrames);
|
|
331
|
+
});
|
|
332
|
+
}, [durationInFrames, getDragOverrides, timeline]);
|
|
362
333
|
// Keep `filtered` complete so a future toggle can show every programmatic
|
|
363
334
|
// instance without recalculating the timeline or losing its instance index.
|
|
364
335
|
const collapsed = (0, react_1.useMemo)(() => {
|
|
@@ -388,10 +359,10 @@ const TimelineInner = () => {
|
|
|
388
359
|
if (!(0, should_subscribe_to_sequence_props_1.shouldSubscribeToSequenceProps)(sequence, previewInteractive)) {
|
|
389
360
|
return null;
|
|
390
361
|
}
|
|
391
|
-
return (jsx_runtime_1.jsx(SubscribeToNodePaths_1.SubscribeToNodePaths, { overrideId: sequence.controls.overrideId, componentIdentity: sequence.controls.componentIdentity, schema: sequence.controls.schema, getStack: sequence.getStack, effects: sequence.effects }, sequence.id));
|
|
362
|
+
return (jsx_runtime_1.jsx(SubscribeToNodePaths_1.SubscribeToNodePaths, { overrideId: sequence.controls.overrideId, componentIdentity: sequence.controls.componentIdentity, schema: sequence.controls.schema, getStack: sequence.getStack, effects: sequence.effects, videoConfigValues: sequence.controls.videoConfigValues }, sequence.id));
|
|
392
363
|
}), (0, interactivity_enabled_1.isStudioInteractivityEnabled)() ? jsx_runtime_1.jsx(SequencePropsObserver_1.SequencePropsObserver, {}) : null, jsx_runtime_1.jsx(TimelineLayerChildren_1.TimelineLayerChildrenProvider, { value: layerChildrenValue, children: jsx_runtime_1.jsx(TimelineKeyframeTracksContext_1.TimelineKeyframeTracksProvider, { tracks: filtered, children: jsx_runtime_1.jsx(TimelineSelection_1.TimelineSelectableItemsProvider, { timeline: shown, children: jsx_runtime_1.jsxs(TimelineVirtualization_1.TimelineVirtualizationProvider, { hasBeenCut: hasBeenCut, isStill: isStill, timeline: shown, children: [(0, interactivity_enabled_1.isStudioInteractivityEnabled)() ? (jsx_runtime_1.jsx(TimelineSelection_1.TimelineSelectAllKeybindings, { timeline: shown })) : null, jsx_runtime_1.jsx(TimelineHeightContainer_1.TimelineHeightContainer, { children: isStill ? (jsx_runtime_1.jsx(TimelineList_1.TimelineList, {})) : (jsx_runtime_1.jsxs(TimelineWidthProvider_1.TimelineWidthProvider, { children: [
|
|
393
364
|
jsx_runtime_1.jsx(TimelinePinchZoom_1.TimelinePinchZoom, {}), jsx_runtime_1.jsxs(SplitterContainer_1.SplitterContainer, { orientation: "vertical", defaultFlex: 0.2, id: "names-to-timeline", maxFlex: 0.5, minFlex: 0.15, maxFlexerSize: null, minFlexerSize: MIN_TIMELINE_LABELS_WIDTH, maxAntiFlexerSize: null, minAntiFlexerSize: null, children: [
|
|
394
|
-
jsx_runtime_1.jsx(SplitterElement_1.SplitterElement, { type: "flexer", sticky: jsx_runtime_1.jsx(TimelineTimeIndicators_1.TimelineTimePlaceholders, {}), children: jsx_runtime_1.jsx(TimelineList_1.TimelineList, {}) }), jsx_runtime_1.jsx(SplitterHandle_1.SplitterHandle, { onCollapse: noop, allowToCollapse: "none" }), jsx_runtime_1.jsx(SplitterElement_1.SplitterElement, { type: "anti-flexer", sticky: jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
365
|
+
jsx_runtime_1.jsx(SplitterElement_1.SplitterElement, { type: "flexer", sticky: jsx_runtime_1.jsx(TimelineTimeIndicators_1.TimelineTimePlaceholders, {}), children: jsx_runtime_1.jsx(TimelineList_1.TimelineList, {}) }), jsx_runtime_1.jsx(SplitterHandle_1.SplitterHandle, { onCollapse: noop, onCollapseDuringDrag: null, allowToCollapse: "none" }), jsx_runtime_1.jsx(SplitterElement_1.SplitterElement, { type: "anti-flexer", sticky: jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
395
366
|
jsx_runtime_1.jsx(TimelineTimeIndicators_1.TimelineTimeIndicators, {}), jsx_runtime_1.jsx(TimelineSlider_1.TimelineSlider, {})
|
|
396
367
|
] }), children: jsx_runtime_1.jsxs(TimelineScrollable_1.TimelineScrollable, { children: [
|
|
397
368
|
jsx_runtime_1.jsx(TimelineTracks_1.TimelineTracks, { hasBeenCut: hasBeenCut }), jsx_runtime_1.jsx(TimelinePlayCursorSyncer_1.TimelinePlayCursorSyncer, {}), jsx_runtime_1.jsx(TimelineInOutPointer_1.TimelineInOutPointer, {}), jsx_runtime_1.jsx(TimelineDragHandler_1.TimelineDragHandler, {}), (0, interactivity_enabled_1.isStudioInteractivityEnabled)() ? (jsx_runtime_1.jsx(TimelineInOutDragHandler_1.TimelineInOutDragHandler, {})) : null] }) })
|
|
@@ -402,6 +373,6 @@ const TimelineInner = () => {
|
|
|
402
373
|
};
|
|
403
374
|
const MemoizedTimelineInner = react_1.default.memo(TimelineInner);
|
|
404
375
|
const Timeline = () => {
|
|
405
|
-
return (jsx_runtime_1.jsx(TimelineTickFormatProvider_1.TimelineTickFormatProvider, { children: jsx_runtime_1.jsx(MemoizedTimelineInner, {}) }));
|
|
376
|
+
return (jsx_runtime_1.jsx(TimelineTickFormatProvider_1.TimelineTickFormatProvider, { children: jsx_runtime_1.jsx(TimelineSequenceRightEdgeDragHandle_1.TimelineSequenceMediaDurationDragLimitsProvider, { children: jsx_runtime_1.jsx(MemoizedTimelineInner, {}) }) }));
|
|
406
377
|
};
|
|
407
378
|
exports.Timeline = Timeline;
|
|
@@ -367,7 +367,7 @@ const TimelineClipboardKeybindings = () => {
|
|
|
367
367
|
const { clientId } = previewServerState;
|
|
368
368
|
const copy = keybindings.registerKeybinding({
|
|
369
369
|
event: 'keydown',
|
|
370
|
-
|
|
370
|
+
action: 'copyEffectsAndValues',
|
|
371
371
|
callback: (e) => {
|
|
372
372
|
var _a, _b;
|
|
373
373
|
const { selectedItems } = currentSelection.current;
|
|
@@ -509,14 +509,13 @@ const TimelineClipboardKeybindings = () => {
|
|
|
509
509
|
(0, NotificationCenter_1.showNotification)(`Could not copy effects: ${err.message}`, 2000);
|
|
510
510
|
});
|
|
511
511
|
},
|
|
512
|
-
commandCtrlKey: true,
|
|
513
512
|
preventDefault: false,
|
|
514
513
|
triggerIfInputFieldFocused: false,
|
|
515
514
|
keepRegisteredWhenNotHighestContext: false,
|
|
516
515
|
});
|
|
517
516
|
const cut = keybindings.registerKeybinding({
|
|
518
517
|
event: 'keydown',
|
|
519
|
-
|
|
518
|
+
action: 'cutEffects',
|
|
520
519
|
callback: (e) => {
|
|
521
520
|
const { selectedItems, clearSelection, selectItems } = currentSelection.current;
|
|
522
521
|
if (selectedItems.length === 0) {
|
|
@@ -575,7 +574,6 @@ const TimelineClipboardKeybindings = () => {
|
|
|
575
574
|
(0, NotificationCenter_1.showNotification)(`Could not cut effects: ${err.message}`, 2000);
|
|
576
575
|
});
|
|
577
576
|
},
|
|
578
|
-
commandCtrlKey: true,
|
|
579
577
|
preventDefault: false,
|
|
580
578
|
triggerIfInputFieldFocused: false,
|
|
581
579
|
keepRegisteredWhenNotHighestContext: false,
|
|
@@ -25,31 +25,18 @@ const TimelineDeleteKeybindings = () => {
|
|
|
25
25
|
if (!canSelect || previewServerState.type !== 'connected') {
|
|
26
26
|
return;
|
|
27
27
|
}
|
|
28
|
-
const backspace = keybindings.registerKeybinding({
|
|
29
|
-
event: 'keydown',
|
|
30
|
-
key: 'Backspace',
|
|
31
|
-
callback: () => deleteTimelineItems(null),
|
|
32
|
-
commandCtrlKey: false,
|
|
33
|
-
preventDefault: true,
|
|
34
|
-
triggerIfInputFieldFocused: false,
|
|
35
|
-
keepRegisteredWhenNotHighestContext: false,
|
|
36
|
-
});
|
|
37
28
|
const deleteKey = keybindings.registerKeybinding({
|
|
38
29
|
event: 'keydown',
|
|
39
|
-
|
|
30
|
+
action: 'deleteSelection',
|
|
40
31
|
callback: () => deleteTimelineItems(null),
|
|
41
|
-
commandCtrlKey: false,
|
|
42
32
|
preventDefault: true,
|
|
43
33
|
triggerIfInputFieldFocused: false,
|
|
44
34
|
keepRegisteredWhenNotHighestContext: false,
|
|
45
35
|
});
|
|
46
36
|
const duplicate = keybindings.registerKeybinding({
|
|
47
37
|
event: 'keydown',
|
|
48
|
-
|
|
49
|
-
callback: (
|
|
50
|
-
if (!(0, split_selected_timeline_item_1.shouldHandleTimelineDuplicateShortcut)(event)) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
38
|
+
action: 'duplicateSequences',
|
|
39
|
+
callback: () => {
|
|
53
40
|
const { selectedItems } = currentSelection.current;
|
|
54
41
|
if (selectedItems.length === 0) {
|
|
55
42
|
return;
|
|
@@ -63,7 +50,6 @@ const TimelineDeleteKeybindings = () => {
|
|
|
63
50
|
}
|
|
64
51
|
duplicatePromise.catch(() => undefined);
|
|
65
52
|
},
|
|
66
|
-
commandCtrlKey: true,
|
|
67
53
|
preventDefault: true,
|
|
68
54
|
triggerIfInputFieldFocused: false,
|
|
69
55
|
keepRegisteredWhenNotHighestContext: false,
|
|
@@ -97,7 +83,6 @@ const TimelineDeleteKeybindings = () => {
|
|
|
97
83
|
keepRegisteredWhenNotHighestContext: false,
|
|
98
84
|
});
|
|
99
85
|
return () => {
|
|
100
|
-
backspace.unregister();
|
|
101
86
|
deleteKey.unregister();
|
|
102
87
|
duplicate.unregister();
|
|
103
88
|
split.unregister();
|
|
@@ -80,6 +80,7 @@ const TimelineDragHandler = () => {
|
|
|
80
80
|
});
|
|
81
81
|
const { zoom: zoomMap } = (0, react_1.useContext)(timeline_zoom_1.TimelineZoomCtx);
|
|
82
82
|
const { canvasContent, currentAssetMetadata } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
|
|
83
|
+
const videoId = video === null || video === void 0 ? void 0 : video.id;
|
|
83
84
|
const containerStyle = (0, react_1.useMemo)(() => {
|
|
84
85
|
var _a;
|
|
85
86
|
var _b, _c, _d, _e;
|
|
@@ -90,16 +91,20 @@ const TimelineDragHandler = () => {
|
|
|
90
91
|
const zoom = (0, get_timeline_max_zoom_1.getTimelineZoom)({
|
|
91
92
|
durationInFrames,
|
|
92
93
|
timelineViewportWidth: (_d = (_c = timelineSize === null || timelineSize === void 0 ? void 0 : timelineSize.width) !== null && _c !== void 0 ? _c : (_a = timeline_refs_1.scrollableRef.current) === null || _a === void 0 ? void 0 : _a.clientWidth) !== null && _d !== void 0 ? _d : 0,
|
|
93
|
-
zoom:
|
|
94
|
-
? ((_e = zoomMap[canvasContent.compositionId]) !== null && _e !== void 0 ? _e : null)
|
|
95
|
-
: null,
|
|
94
|
+
zoom: videoId ? ((_e = zoomMap[videoId]) !== null && _e !== void 0 ? _e : null) : null,
|
|
96
95
|
});
|
|
97
96
|
return {
|
|
98
97
|
...container,
|
|
99
98
|
width: (0, get_timeline_max_zoom_1.getTimelineWidth)({ durationInFrames, zoom }),
|
|
100
99
|
height: TimelineTimeIndicators_1.TIMELINE_TIME_INDICATOR_HEIGHT,
|
|
101
100
|
};
|
|
102
|
-
}, [
|
|
101
|
+
}, [
|
|
102
|
+
canvasContent,
|
|
103
|
+
timelineSize === null || timelineSize === void 0 ? void 0 : timelineSize.width,
|
|
104
|
+
video === null || video === void 0 ? void 0 : video.durationInFrames,
|
|
105
|
+
videoId,
|
|
106
|
+
zoomMap,
|
|
107
|
+
]);
|
|
103
108
|
const hasPlayableContent = (canvasContent === null || canvasContent === void 0 ? void 0 : canvasContent.type) === 'composition' ||
|
|
104
109
|
((canvasContent === null || canvasContent === void 0 ? void 0 : canvasContent.type) === 'asset' &&
|
|
105
110
|
(currentAssetMetadata === null || currentAssetMetadata === void 0 ? void 0 : currentAssetMetadata.asset) === canvasContent.asset);
|
|
@@ -110,7 +115,7 @@ const TimelineDragHandler = () => {
|
|
|
110
115
|
};
|
|
111
116
|
exports.TimelineDragHandler = TimelineDragHandler;
|
|
112
117
|
const TimelineDragHandlerInner = () => {
|
|
113
|
-
var _a;
|
|
118
|
+
var _a, _b;
|
|
114
119
|
const videoConfig = (0, remotion_1.useVideoConfig)();
|
|
115
120
|
const size = player_1.PlayerInternals.useElementSize(timeline_refs_1.scrollableRef, {
|
|
116
121
|
triggerOnWindowResize: true,
|
|
@@ -315,6 +320,6 @@ const TimelineDragHandlerInner = () => {
|
|
|
315
320
|
current.removeEventListener('scroll', onScroll);
|
|
316
321
|
};
|
|
317
322
|
}, []);
|
|
318
|
-
return (jsx_runtime_1.jsx("div", { ref: ref, style: style, onPointerDown: onPointerDown, children: jsx_runtime_1.jsx("div", { style: inner, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME }) }));
|
|
323
|
+
return (jsx_runtime_1.jsx("div", { ref: ref, style: { ...style, minWidth: (_b = size === null || size === void 0 ? void 0 : size.width) !== null && _b !== void 0 ? _b : 0 }, onPointerDown: onPointerDown, children: jsx_runtime_1.jsx("div", { style: inner, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME }) }));
|
|
319
324
|
};
|
|
320
325
|
const TimelineDragHandlerInnerMemo = react_1.default.memo(TimelineDragHandlerInner);
|
|
@@ -47,6 +47,7 @@ const rowClipper = {
|
|
|
47
47
|
boxSizing: 'border-box',
|
|
48
48
|
marginLeft: -timeline_layout_1.TIMELINE_PADDING,
|
|
49
49
|
marginRight: -timeline_layout_1.TIMELINE_PADDING,
|
|
50
|
+
minWidth: `calc(100% + ${timeline_layout_1.TIMELINE_PADDING * 2}px)`,
|
|
50
51
|
overflow: 'hidden',
|
|
51
52
|
paddingLeft: timeline_layout_1.TIMELINE_PADDING,
|
|
52
53
|
paddingRight: timeline_layout_1.TIMELINE_PADDING,
|