@remotion/studio 4.0.513 → 4.0.515
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/Studio.js +2 -1
- package/dist/api/install-package.js +14 -1
- package/dist/components/AskAiModal.js +1 -1
- package/dist/components/AssetSelector.js +2 -0
- package/dist/components/AssetSelectorItem.d.ts +2 -1
- package/dist/components/AssetSelectorItem.js +19 -16
- package/dist/components/AudioWaveform.d.ts +3 -0
- package/dist/components/AudioWaveform.js +65 -199
- package/dist/components/Canvas.js +40 -5
- package/dist/components/CanvasOrLoading.js +5 -0
- package/dist/components/CompositionSelector.js +2 -0
- package/dist/components/ConfigureDefaultEditorModal.js +17 -11
- package/dist/components/Editor.js +16 -1
- package/dist/components/ElementInstallConfirmation.d.ts +1 -0
- package/dist/components/ElementInstallConfirmation.js +4 -2
- package/dist/components/FixComputedValueModal.d.ts +9 -0
- package/dist/components/FixComputedValueModal.js +217 -0
- package/dist/components/InitialCompositionLoader.js +19 -0
- package/dist/components/InlineDropdown.js +4 -4
- package/dist/components/InspectorInfoHeader.js +3 -3
- package/dist/components/InspectorOpenInEditor.js +3 -1
- package/dist/components/InspectorPanel/CompositionInspector.js +37 -5
- package/dist/components/InspectorPanel/CompositionInspectorHeader.js +2 -2
- package/dist/components/InspectorPanel/ConnectedCompositionsSection.js +1 -1
- package/dist/components/InspectorPanel/EasingInspector.js +1 -1
- package/dist/components/InspectorPanel/KeyframeInspector.js +2 -2
- package/dist/components/InspectorPanel/SequenceInspectorHeader.js +1 -1
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +35 -6
- package/dist/components/InspectorPanel/common.d.ts +5 -5
- package/dist/components/InspectorPanel/common.js +8 -8
- package/dist/components/InspectorPanel/styles.d.ts +1 -1
- package/dist/components/InspectorPanel/styles.js +4 -2
- package/dist/components/InspectorSourceLocation.d.ts +1 -1
- package/dist/components/InspectorSourceLocation.js +2 -2
- package/dist/components/InstallPackage.d.ts +1 -1
- package/dist/components/InstallPackage.js +38 -6
- package/dist/components/LicenseKeyValidation.js +2 -2
- package/dist/components/Menu/MenuDivider.js +1 -1
- package/dist/components/Modals.js +11 -3
- package/dist/components/NewComposition/CodemodFooter.d.ts +1 -0
- package/dist/components/NewComposition/CodemodFooter.js +10 -8
- package/dist/components/NewComposition/DeleteComposition.js +1 -1
- package/dist/components/NewComposition/DeleteFolder.js +1 -1
- package/dist/components/NewComposition/DuplicateComposition.js +7 -2
- package/dist/components/NewComposition/NewComposition.js +1 -1
- package/dist/components/NewComposition/NewFolder.js +1 -1
- package/dist/components/NewComposition/RenameComposition.js +1 -1
- package/dist/components/NewComposition/RenameFolder.js +1 -1
- package/dist/components/NewComposition/duplicate-composition-api.d.ts +16 -0
- package/dist/components/NewComposition/duplicate-composition-api.js +16 -0
- package/dist/components/NoRegisterRoot.js +1 -1
- package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +4 -3
- package/dist/components/QuickSwitcher/QuickSwitcherContent.js +1 -0
- package/dist/components/QuickSwitcher/fuzzy-search.js +1 -1
- package/dist/components/RefreshCompositionOverlay.js +1 -1
- package/dist/components/RenderButton.js +6 -3
- package/dist/components/RenderModal/GuiRenderStatus.js +3 -1
- package/dist/components/RenderModal/RenderModalOutputName.js +3 -3
- package/dist/components/RenderModal/WebRenderModal.js +10 -4
- package/dist/components/RenderModal/WebRenderModalAdvanced.d.ts +2 -0
- package/dist/components/RenderModal/WebRenderModalAdvanced.js +9 -2
- package/dist/components/RenderModal/render-modals.js +5 -1
- package/dist/components/RenderQueue/ClientRenderQueueProcessor.js +5 -1
- package/dist/components/RenderQueue/RenderQueueItem.js +3 -1
- package/dist/components/RenderQueue/RenderQueueOpenInFolder.js +3 -1
- package/dist/components/RenderQueue/RenderQueueRemoveItem.js +1 -1
- package/dist/components/RenderQueue/actions.js +12 -2
- package/dist/components/RenderQueue/client-side-render-types.d.ts +1 -0
- package/dist/components/RenderingSettings.d.ts +2 -0
- package/dist/components/RenderingSettings.js +355 -0
- package/dist/components/SelectedOutlineCanvasRotation.d.ts +1 -0
- package/dist/components/SelectedOutlineCanvasRotation.js +11 -4
- package/dist/components/SelectedOutlineElement.js +3 -3
- package/dist/components/SelectedOutlinePolygon.d.ts +2 -0
- package/dist/components/SelectedOutlinePolygon.js +54 -9
- package/dist/components/SettingsContext.d.ts +4 -1
- package/dist/components/SettingsContext.js +9 -2
- package/dist/components/SettingsModal.d.ts +1 -1
- package/dist/components/SettingsModal.js +10 -1
- package/dist/components/SettingsModalFooter.js +1 -1
- package/dist/components/StudioSettings.d.ts +2 -0
- package/dist/components/StudioSettings.js +185 -0
- package/dist/components/Timeline/LoopedIndicator.js +1 -1
- package/dist/components/Timeline/LoopedTimelineIndicators.d.ts +3 -0
- package/dist/components/Timeline/LoopedTimelineIndicators.js +22 -14
- package/dist/components/Timeline/Timeline.js +11 -9
- package/dist/components/Timeline/TimelineAssetField.d.ts +2 -2
- package/dist/components/Timeline/TimelineAssetField.js +1 -1
- package/dist/components/Timeline/TimelineClipboardKeybindings.js +6 -2
- package/dist/components/Timeline/TimelineDragHandler.js +62 -76
- package/dist/components/Timeline/TimelineEffectItem.js +23 -6
- package/dist/components/Timeline/TimelineEffectPropItem.d.ts +4 -2
- package/dist/components/Timeline/TimelineEffectPropItem.js +22 -13
- package/dist/components/Timeline/TimelineExpandArrowButton.js +10 -7
- package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +4 -1
- package/dist/components/Timeline/TimelineExpandedRow.d.ts +1 -1
- package/dist/components/Timeline/TimelineExpandedRow.js +4 -4
- package/dist/components/Timeline/TimelineExpandedSection.js +8 -5
- package/dist/components/Timeline/TimelineHeightContainer.d.ts +0 -4
- package/dist/components/Timeline/TimelineHeightContainer.js +4 -4
- package/dist/components/Timeline/TimelineImageInfo.d.ts +1 -0
- package/dist/components/Timeline/TimelineImageInfo.js +3 -2
- package/dist/components/Timeline/TimelineKeyframeControls.js +6 -1
- package/dist/components/Timeline/TimelineList.d.ts +1 -5
- package/dist/components/Timeline/TimelineList.js +14 -9
- package/dist/components/Timeline/TimelinePinchZoom.js +5 -5
- package/dist/components/Timeline/TimelineRowChrome.d.ts +1 -2
- package/dist/components/Timeline/TimelineRowChrome.js +50 -7
- package/dist/components/Timeline/TimelineSchemaField.d.ts +7 -3
- package/dist/components/Timeline/TimelineSchemaField.js +71 -13
- package/dist/components/Timeline/TimelineScrollable.js +3 -1
- package/dist/components/Timeline/TimelineSelection.d.ts +13 -5
- package/dist/components/Timeline/TimelineSelection.js +95 -106
- package/dist/components/Timeline/TimelineSequence.js +59 -25
- package/dist/components/Timeline/TimelineSequenceItem.d.ts +1 -1
- package/dist/components/Timeline/TimelineSequenceItem.js +21 -12
- package/dist/components/Timeline/TimelineSequenceName.js +1 -1
- package/dist/components/Timeline/TimelineSequencePropItem.d.ts +2 -1
- package/dist/components/Timeline/TimelineSequencePropItem.js +3 -3
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +33 -10
- package/dist/components/Timeline/TimelineSlider.js +42 -33
- package/dist/components/Timeline/TimelineTimeIndicators.js +90 -98
- package/dist/components/Timeline/TimelineTrack.js +4 -1
- package/dist/components/Timeline/TimelineTracks.d.ts +0 -2
- package/dist/components/Timeline/TimelineTracks.js +11 -4
- package/dist/components/Timeline/TimelineTransformOriginField.js +1 -1
- package/dist/components/Timeline/TimelineVideoInfo.d.ts +4 -4
- package/dist/components/Timeline/TimelineVideoInfo.js +155 -63
- package/dist/components/Timeline/TimelineViewport.d.ts +12 -0
- package/dist/components/Timeline/TimelineViewport.js +62 -0
- package/dist/components/Timeline/TimelineVirtualization.d.ts +22 -0
- package/dist/components/Timeline/TimelineVirtualization.js +144 -0
- package/dist/components/Timeline/TimelineZoomControls.js +16 -8
- package/dist/components/Timeline/call-add-keyframe.js +31 -3
- package/dist/components/Timeline/call-delete-keyframe.js +13 -3
- package/dist/components/Timeline/call-move-keyframe.js +11 -1
- package/dist/components/Timeline/call-update-keyframe-settings.js +31 -3
- package/dist/components/Timeline/delete-selected-timeline-item.js +8 -3
- package/dist/components/Timeline/duplicate-selected-timeline-item.js +4 -2
- package/dist/components/Timeline/get-timeline-keyframes.d.ts +1 -2
- package/dist/components/Timeline/get-timeline-keyframes.js +1 -8
- package/dist/components/Timeline/get-timeline-sequence-visible-layout.d.ts +30 -0
- package/dist/components/Timeline/get-timeline-sequence-visible-layout.js +61 -0
- package/dist/components/Timeline/save-effect-prop.js +3 -3
- package/dist/components/Timeline/split-selected-timeline-item.js +2 -2
- package/dist/components/Timeline/timeline-scroll-logic.d.ts +24 -0
- package/dist/components/Timeline/timeline-scroll-logic.js +127 -4
- package/dist/components/Timeline/use-timeline-height.d.ts +3 -5
- package/dist/components/Timeline/use-timeline-height.js +16 -18
- package/dist/components/UpdateCheck.d.ts +2 -10
- package/dist/components/UpdateCheck.js +8 -2
- package/dist/components/VisualControls/VisualControlHandle.js +8 -0
- package/dist/components/delete-jsx-node-api.d.ts +2 -0
- package/dist/components/delete-jsx-node-api.js +12 -0
- package/dist/components/effect-drag-and-drop.js +6 -3
- package/dist/components/effect-operations-api.d.ts +8 -0
- package/dist/components/effect-operations-api.js +52 -0
- package/dist/components/element-install-api.d.ts +3 -0
- package/dist/components/element-install-api.js +19 -0
- package/dist/components/import-assets.js +20 -9
- package/dist/components/reorder-sequence-api.d.ts +2 -0
- package/dist/components/reorder-sequence-api.js +12 -0
- package/dist/components/split-jsx-sequence-api.d.ts +2 -0
- package/dist/components/split-jsx-sequence-api.js +12 -0
- package/dist/components/split-video-from-audio-api.d.ts +2 -0
- package/dist/components/split-video-from-audio-api.js +12 -0
- package/dist/error-overlay/remotion-overlay/Overlay.js +1 -1
- package/dist/error-overlay/remotion-overlay/log-studio-error.js +4 -0
- package/dist/esm/{chunk-r46yxrjr.js → chunk-s6k99gh2.js} +1 -1
- package/dist/esm/{chunk-tv7r0jy3.js → chunk-v5a8vpv4.js} +11479 -7851
- package/dist/esm/index.mjs +7 -5
- package/dist/esm/internals.mjs +11479 -7851
- package/dist/esm/previewEntry.mjs +11311 -7683
- package/dist/esm/renderEntry.mjs +3 -4
- package/dist/helpers/browser-studio-operations.d.ts +5 -0
- package/dist/helpers/browser-studio-operations.js +27 -1
- package/dist/helpers/colors.d.ts +1 -1
- package/dist/helpers/colors.js +1 -1
- package/dist/helpers/get-timeline-max-zoom.d.ts +26 -0
- package/dist/helpers/get-timeline-max-zoom.js +45 -0
- package/dist/helpers/inject-css.js +7 -5
- package/dist/helpers/render-codec-label.d.ts +1 -1
- package/dist/helpers/retry-payload.js +1 -0
- package/dist/helpers/studio-runtime-config.d.ts +1 -1
- package/dist/helpers/studio-runtime-config.js +2 -3
- package/dist/helpers/timeline-layout.d.ts +3 -1
- package/dist/helpers/timeline-layout.js +6 -1
- package/dist/helpers/url-state.js +3 -2
- package/dist/helpers/use-max-media-duration.js +5 -3
- package/dist/helpers/use-media-metadata.js +37 -20
- package/dist/helpers/use-menu-structure.js +67 -84
- package/dist/helpers/use-runtime-values.d.ts +2 -1
- package/dist/helpers/use-runtime-values.js +7 -3
- package/dist/icons/cloud-download.d.ts +4 -0
- package/dist/icons/cloud-download.js +8 -0
- package/dist/icons/remotion-triangle.d.ts +2 -0
- package/dist/icons/remotion-triangle.js +7 -0
- package/dist/renderEntry.js +1 -1
- package/dist/state/composition-list.d.ts +13 -0
- package/dist/state/composition-list.js +21 -0
- package/dist/state/modals.d.ts +8 -2
- package/dist/state/timeline-zoom.d.ts +1 -2
- package/dist/state/timeline-zoom.js +9 -5
- package/package.json +14 -13
|
@@ -2,6 +2,30 @@ export declare const canScrollTimelineIntoDirection: () => {
|
|
|
2
2
|
canScrollRight: boolean;
|
|
3
3
|
canScrollLeft: boolean;
|
|
4
4
|
};
|
|
5
|
+
export declare const SCROLL_INCREMENT = 200;
|
|
6
|
+
export declare const EDGE_SCROLL_VERTICAL_INCREMENT = 60;
|
|
7
|
+
export type TimelineEdgeScrollDirections = {
|
|
8
|
+
x: 'left' | 'right' | null;
|
|
9
|
+
y: 'up' | 'down' | null;
|
|
10
|
+
};
|
|
11
|
+
export type TimelineEdgeAutoScroller = {
|
|
12
|
+
update: (e: {
|
|
13
|
+
clientX: number;
|
|
14
|
+
clientY: number;
|
|
15
|
+
}) => TimelineEdgeScrollDirections;
|
|
16
|
+
stop: () => void;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Shared edge auto-scroll loop for drag gestures on the timeline (playhead
|
|
20
|
+
* scrubbing, marquee selection). Detects when the pointer is in an edge zone
|
|
21
|
+
* and repeatedly invokes `onTick` while it stays there. The consumer performs
|
|
22
|
+
* the actual scrolling (and any dependent updates) inside `onTick`, so it can
|
|
23
|
+
* read a settled scroll position afterwards.
|
|
24
|
+
*/
|
|
25
|
+
export declare const startTimelineEdgeAutoScroll: ({ includeVertical, onTick, }: {
|
|
26
|
+
includeVertical: boolean;
|
|
27
|
+
onTick: (directions: TimelineEdgeScrollDirections) => void;
|
|
28
|
+
}) => TimelineEdgeAutoScroller;
|
|
5
29
|
export declare const getFrameWhileScrollingLeft: ({ durationInFrames, width, }: {
|
|
6
30
|
durationInFrames: number;
|
|
7
31
|
width: number;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.prepareToPreserveTimelineCursor = exports.getScrollLeftToKeepCursorInPlace = exports.viewportClientXToScrollContentX = exports.getFrameFromTimelineDrop = exports.getFrameFromX = exports.getFrameWhileScrollingRight = exports.getFrameIncrementFromWidth = exports.getScrollPositionForCursorOnRightEdge = exports.getScrollPositionForCursorOnLeftEdge = exports.scrollToTimelineXOffset = exports.ensureFrameIsInViewport = exports.isCursorInViewport = exports.getFrameWhileScrollingLeft = exports.canScrollTimelineIntoDirection = void 0;
|
|
3
|
+
exports.prepareToPreserveTimelineCursor = exports.getScrollLeftToKeepCursorInPlace = exports.viewportClientXToScrollContentX = exports.getFrameFromTimelineDrop = exports.getFrameFromX = exports.getFrameWhileScrollingRight = exports.getFrameIncrementFromWidth = exports.getScrollPositionForCursorOnRightEdge = exports.getScrollPositionForCursorOnLeftEdge = exports.scrollToTimelineXOffset = exports.ensureFrameIsInViewport = exports.isCursorInViewport = exports.getFrameWhileScrollingLeft = exports.startTimelineEdgeAutoScroll = exports.EDGE_SCROLL_VERTICAL_INCREMENT = exports.SCROLL_INCREMENT = exports.canScrollTimelineIntoDirection = void 0;
|
|
4
4
|
const remotion_1 = require("remotion");
|
|
5
5
|
const timeline_layout_1 = require("../../helpers/timeline-layout");
|
|
6
|
+
const imperative_state_1 = require("./imperative-state");
|
|
6
7
|
const timeline_refs_1 = require("./timeline-refs");
|
|
7
8
|
const TimelineSlider_1 = require("./TimelineSlider");
|
|
8
9
|
const canScrollTimelineIntoDirection = () => {
|
|
@@ -13,7 +14,126 @@ const canScrollTimelineIntoDirection = () => {
|
|
|
13
14
|
return { canScrollRight, canScrollLeft };
|
|
14
15
|
};
|
|
15
16
|
exports.canScrollTimelineIntoDirection = canScrollTimelineIntoDirection;
|
|
16
|
-
|
|
17
|
+
exports.SCROLL_INCREMENT = 200;
|
|
18
|
+
exports.EDGE_SCROLL_VERTICAL_INCREMENT = 60;
|
|
19
|
+
const EDGE_SCROLL_INTERVAL_MS = 100;
|
|
20
|
+
// Once edge-scrolling has started, the pointer must move this many pixels
|
|
21
|
+
// back inside the timeline to stop it. Prevents pixel jitter around the edge
|
|
22
|
+
// threshold from rapidly cancelling and restarting the auto-scroll.
|
|
23
|
+
const EDGE_SCROLL_EXIT_HYSTERESIS = 8;
|
|
24
|
+
// The vertical edge zones extend this many pixels into the viewport, so the
|
|
25
|
+
// auto-scroll already engages when dragging close to (not exactly onto) the
|
|
26
|
+
// top or bottom edge.
|
|
27
|
+
const EDGE_SCROLL_VERTICAL_INSET = 8;
|
|
28
|
+
const canScrollTimelineVerticallyIntoDirection = () => {
|
|
29
|
+
const { current } = timeline_refs_1.timelineVerticalScroll;
|
|
30
|
+
if (!current) {
|
|
31
|
+
return { canScrollUp: false, canScrollDown: false };
|
|
32
|
+
}
|
|
33
|
+
const { scrollTop, scrollHeight, clientHeight } = current;
|
|
34
|
+
return {
|
|
35
|
+
canScrollUp: scrollTop > 0,
|
|
36
|
+
canScrollDown: scrollHeight - scrollTop - clientHeight > 0,
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
const getEdgeScrollDirections = ({ clientX, clientY, includeVertical, active, }) => {
|
|
40
|
+
let x = null;
|
|
41
|
+
const scrollable = timeline_refs_1.scrollableRef.current;
|
|
42
|
+
if (scrollable) {
|
|
43
|
+
const rect = scrollable.getBoundingClientRect();
|
|
44
|
+
const leftThreshold = rect.left + (active.x === 'left' ? EDGE_SCROLL_EXIT_HYSTERESIS : 0);
|
|
45
|
+
const rightThreshold = rect.left +
|
|
46
|
+
scrollable.clientWidth -
|
|
47
|
+
timeline_layout_1.TIMELINE_PADDING -
|
|
48
|
+
(active.x === 'right' ? EDGE_SCROLL_EXIT_HYSTERESIS : 0);
|
|
49
|
+
const { canScrollLeft, canScrollRight } = (0, exports.canScrollTimelineIntoDirection)();
|
|
50
|
+
if (clientX <= leftThreshold && canScrollLeft) {
|
|
51
|
+
x = 'left';
|
|
52
|
+
}
|
|
53
|
+
else if (clientX >= rightThreshold && canScrollRight) {
|
|
54
|
+
x = 'right';
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
let y = null;
|
|
58
|
+
const vertical = timeline_refs_1.timelineVerticalScroll.current;
|
|
59
|
+
if (includeVertical && vertical) {
|
|
60
|
+
const rect = vertical.getBoundingClientRect();
|
|
61
|
+
const topThreshold = rect.top +
|
|
62
|
+
EDGE_SCROLL_VERTICAL_INSET +
|
|
63
|
+
(active.y === 'up' ? EDGE_SCROLL_EXIT_HYSTERESIS : 0);
|
|
64
|
+
const bottomThreshold = rect.bottom -
|
|
65
|
+
EDGE_SCROLL_VERTICAL_INSET -
|
|
66
|
+
(active.y === 'down' ? EDGE_SCROLL_EXIT_HYSTERESIS : 0);
|
|
67
|
+
const { canScrollUp, canScrollDown } = canScrollTimelineVerticallyIntoDirection();
|
|
68
|
+
if (clientY <= topThreshold && canScrollUp) {
|
|
69
|
+
y = 'up';
|
|
70
|
+
}
|
|
71
|
+
else if (clientY >= bottomThreshold && canScrollDown) {
|
|
72
|
+
y = 'down';
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return { x, y };
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Shared edge auto-scroll loop for drag gestures on the timeline (playhead
|
|
79
|
+
* scrubbing, marquee selection). Detects when the pointer is in an edge zone
|
|
80
|
+
* and repeatedly invokes `onTick` while it stays there. The consumer performs
|
|
81
|
+
* the actual scrolling (and any dependent updates) inside `onTick`, so it can
|
|
82
|
+
* read a settled scroll position afterwards.
|
|
83
|
+
*/
|
|
84
|
+
const startTimelineEdgeAutoScroll = ({ includeVertical, onTick, }) => {
|
|
85
|
+
let active = { x: null, y: null };
|
|
86
|
+
let lastPointer = null;
|
|
87
|
+
let interval = null;
|
|
88
|
+
const stopInterval = () => {
|
|
89
|
+
if (interval !== null) {
|
|
90
|
+
clearInterval(interval);
|
|
91
|
+
interval = null;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
const tick = () => {
|
|
95
|
+
if (lastPointer === null) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
active = getEdgeScrollDirections({
|
|
99
|
+
clientX: lastPointer.clientX,
|
|
100
|
+
clientY: lastPointer.clientY,
|
|
101
|
+
includeVertical,
|
|
102
|
+
active,
|
|
103
|
+
});
|
|
104
|
+
if (active.x === null && active.y === null) {
|
|
105
|
+
stopInterval();
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
onTick(active);
|
|
109
|
+
};
|
|
110
|
+
const update = (e) => {
|
|
111
|
+
lastPointer = { clientX: e.clientX, clientY: e.clientY };
|
|
112
|
+
active = getEdgeScrollDirections({
|
|
113
|
+
clientX: e.clientX,
|
|
114
|
+
clientY: e.clientY,
|
|
115
|
+
includeVertical,
|
|
116
|
+
active,
|
|
117
|
+
});
|
|
118
|
+
if (active.x !== null || active.y !== null) {
|
|
119
|
+
if (interval === null) {
|
|
120
|
+
onTick(active);
|
|
121
|
+
interval = setInterval(tick, EDGE_SCROLL_INTERVAL_MS);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
stopInterval();
|
|
126
|
+
}
|
|
127
|
+
return active;
|
|
128
|
+
};
|
|
129
|
+
const stop = () => {
|
|
130
|
+
stopInterval();
|
|
131
|
+
lastPointer = null;
|
|
132
|
+
active = { x: null, y: null };
|
|
133
|
+
};
|
|
134
|
+
return { update, stop };
|
|
135
|
+
};
|
|
136
|
+
exports.startTimelineEdgeAutoScroll = startTimelineEdgeAutoScroll;
|
|
17
137
|
const calculateFrameWhileScrollingRight = ({ durationInFrames, width, scrollLeft, }) => {
|
|
18
138
|
var _a;
|
|
19
139
|
return ((0, exports.getFrameFromX)({
|
|
@@ -28,7 +148,7 @@ const calculateFrameWhileScrollingRight = ({ durationInFrames, width, scrollLeft
|
|
|
28
148
|
const getFrameWhileScrollingLeft = ({ durationInFrames, width, }) => {
|
|
29
149
|
var _a, _b;
|
|
30
150
|
const nextFrame = (0, exports.getFrameFromX)({
|
|
31
|
-
clientX: ((_a = timeline_refs_1.scrollableRef.current) === null || _a === void 0 ? void 0 : _a.scrollLeft) - SCROLL_INCREMENT,
|
|
151
|
+
clientX: ((_a = timeline_refs_1.scrollableRef.current) === null || _a === void 0 ? void 0 : _a.scrollLeft) - exports.SCROLL_INCREMENT,
|
|
32
152
|
durationInFrames,
|
|
33
153
|
width,
|
|
34
154
|
extrapolate: 'clamp',
|
|
@@ -71,6 +191,9 @@ exports.isCursorInViewport = isCursorInViewport;
|
|
|
71
191
|
const ensureFrameIsInViewport = ({ direction, durationInFrames, frame, }) => {
|
|
72
192
|
var _a, _b, _c;
|
|
73
193
|
var _d, _e;
|
|
194
|
+
// Sync the imperative frame first: scrolling below triggers the scroll
|
|
195
|
+
// listener in TimelineSlider, which reads the frame imperatively.
|
|
196
|
+
(0, imperative_state_1.setCurrentFrame)(frame);
|
|
74
197
|
(_a = TimelineSlider_1.redrawTimelineSliderFast.current) === null || _a === void 0 ? void 0 : _a.draw(frame);
|
|
75
198
|
const width = (_d = (_b = timeline_refs_1.scrollableRef.current) === null || _b === void 0 ? void 0 : _b.scrollWidth) !== null && _d !== void 0 ? _d : 0;
|
|
76
199
|
const scrollLeft = (_e = (_c = timeline_refs_1.scrollableRef.current) === null || _c === void 0 ? void 0 : _c.scrollLeft) !== null && _e !== void 0 ? _e : 0;
|
|
@@ -183,7 +306,7 @@ const getFrameWhileScrollingRight = ({ durationInFrames, width, }) => {
|
|
|
183
306
|
const nextFrame = calculateFrameWhileScrollingRight({
|
|
184
307
|
durationInFrames,
|
|
185
308
|
width,
|
|
186
|
-
scrollLeft: ((_a = timeline_refs_1.scrollableRef.current) === null || _a === void 0 ? void 0 : _a.scrollLeft) + SCROLL_INCREMENT,
|
|
309
|
+
scrollLeft: ((_a = timeline_refs_1.scrollableRef.current) === null || _a === void 0 ? void 0 : _a.scrollLeft) + exports.SCROLL_INCREMENT,
|
|
187
310
|
});
|
|
188
311
|
const currentFrame = calculateFrameWhileScrollingRight({
|
|
189
312
|
durationInFrames,
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import type { TimelineTrackData } from '../../helpers/get-timeline-sequence-sort-key';
|
|
2
|
-
export declare const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
isStill: boolean;
|
|
6
|
-
}) => number;
|
|
2
|
+
export declare const useTimelineTrackHeights: ({ timeline, }: {
|
|
3
|
+
timeline: readonly TimelineTrackData[];
|
|
4
|
+
}) => readonly number[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.useTimelineTrackHeights = void 0;
|
|
4
4
|
const react_1 = require("react");
|
|
5
5
|
const remotion_1 = require("remotion");
|
|
6
6
|
const client_id_1 = require("../../helpers/client-id");
|
|
@@ -8,11 +8,9 @@ const timeline_layout_1 = require("../../helpers/timeline-layout");
|
|
|
8
8
|
const use_runtime_values_1 = require("../../helpers/use-runtime-values");
|
|
9
9
|
const ExpandedTracksProvider_1 = require("../ExpandedTracksProvider");
|
|
10
10
|
const get_node_keyframes_1 = require("./get-node-keyframes");
|
|
11
|
-
const MaxTimelineTracks_1 = require("./MaxTimelineTracks");
|
|
12
11
|
const timeline_expanded_filter_1 = require("./timeline-expanded-filter");
|
|
13
12
|
const TimelineSelection_1 = require("./TimelineSelection");
|
|
14
|
-
const
|
|
15
|
-
const useTimelineHeight = ({ shown, hasBeenCut, isStill, }) => {
|
|
13
|
+
const useTimelineTrackHeights = ({ timeline, }) => {
|
|
16
14
|
const { getIsExpanded } = (0, react_1.useContext)(ExpandedTracksProvider_1.ExpandedTracksGetterContext);
|
|
17
15
|
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
18
16
|
const { propStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
|
|
@@ -20,7 +18,7 @@ const useTimelineHeight = ({ shown, hasBeenCut, isStill, }) => {
|
|
|
20
18
|
const { selectedItems } = (0, TimelineSelection_1.useTimelineSelection)();
|
|
21
19
|
const previewServerConnected = previewServerState.type === 'connected';
|
|
22
20
|
const selectedRowKeys = (0, react_1.useMemo)(() => (0, timeline_expanded_filter_1.getSelectedTimelineExpandedRowKeys)(selectedItems), [selectedItems]);
|
|
23
|
-
const expandedControls = (0, react_1.useMemo)(() =>
|
|
21
|
+
const expandedControls = (0, react_1.useMemo)(() => timeline.flatMap((track) => {
|
|
24
22
|
if (!previewServerConnected ||
|
|
25
23
|
track.nodePathInfo === null ||
|
|
26
24
|
!getIsExpanded(track.nodePathInfo) ||
|
|
@@ -28,14 +26,14 @@ const useTimelineHeight = ({ shown, hasBeenCut, isStill, }) => {
|
|
|
28
26
|
return [];
|
|
29
27
|
}
|
|
30
28
|
return [track.sequence.controls];
|
|
31
|
-
}), [getIsExpanded, previewServerConnected,
|
|
29
|
+
}), [getIsExpanded, previewServerConnected, timeline]);
|
|
32
30
|
const runtimeValueSnapshots = (0, use_runtime_values_1.useRuntimeValueSnapshots)(expandedControls);
|
|
33
31
|
const runtimeValuesByStore = (0, react_1.useMemo)(() => new Map(expandedControls.map((controls, index) => [
|
|
34
32
|
controls.runtimeValues,
|
|
35
33
|
runtimeValueSnapshots[index],
|
|
36
34
|
])), [expandedControls, runtimeValueSnapshots]);
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
const heights = (0, react_1.useMemo)(() => {
|
|
36
|
+
return timeline.map((track) => {
|
|
39
37
|
const isExpanded = previewServerConnected &&
|
|
40
38
|
track.nodePathInfo !== null &&
|
|
41
39
|
getIsExpanded(track.nodePathInfo);
|
|
@@ -84,16 +82,10 @@ const useTimelineHeight = ({ shown, hasBeenCut, isStill, }) => {
|
|
|
84
82
|
const separators = Math.max(0, flat.length - 1);
|
|
85
83
|
return totalRowsHeight + separators + timeline_layout_1.TIMELINE_ITEM_BORDER_BOTTOM;
|
|
86
84
|
})();
|
|
87
|
-
return
|
|
88
|
-
}
|
|
89
|
-
return (tracksHeight +
|
|
90
|
-
timeline_layout_1.TIMELINE_ITEM_BORDER_BOTTOM +
|
|
91
|
-
(hasBeenCut ? MaxTimelineTracks_1.MAX_TIMELINE_TRACKS_NOTICE_HEIGHT : 0) +
|
|
92
|
-
(isStill ? 0 : TimelineTimeIndicators_1.TIMELINE_TIME_INDICATOR_HEIGHT));
|
|
85
|
+
return layerHeight + expandedHeight;
|
|
86
|
+
});
|
|
93
87
|
}, [
|
|
94
|
-
|
|
95
|
-
hasBeenCut,
|
|
96
|
-
isStill,
|
|
88
|
+
timeline,
|
|
97
89
|
previewServerConnected,
|
|
98
90
|
getIsExpanded,
|
|
99
91
|
propStatuses,
|
|
@@ -102,5 +94,11 @@ const useTimelineHeight = ({ shown, hasBeenCut, isStill, }) => {
|
|
|
102
94
|
selectedRowKeys,
|
|
103
95
|
runtimeValuesByStore,
|
|
104
96
|
]);
|
|
97
|
+
const stableHeights = (0, react_1.useRef)(heights);
|
|
98
|
+
if (stableHeights.current.length !== heights.length ||
|
|
99
|
+
heights.some((height, index) => stableHeights.current[index] !== height)) {
|
|
100
|
+
stableHeights.current = heights;
|
|
101
|
+
}
|
|
102
|
+
return stableHeights.current;
|
|
105
103
|
};
|
|
106
|
-
exports.
|
|
104
|
+
exports.useTimelineTrackHeights = useTimelineTrackHeights;
|
|
@@ -1,13 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export type UpdateInfo =
|
|
3
|
-
currentVersion: string;
|
|
4
|
-
latestVersion: string;
|
|
5
|
-
updateAvailable: boolean;
|
|
6
|
-
skillsUpdateAvailable: boolean;
|
|
7
|
-
remotionUpgradeSkillAvailable: boolean;
|
|
8
|
-
timedOut: boolean;
|
|
9
|
-
packageManager: PackageManager | 'unknown';
|
|
10
|
-
};
|
|
1
|
+
import type { GetRemotionSkillsInfoResponse, UpdateAvailableResponse } from '@remotion/studio-shared';
|
|
2
|
+
export type UpdateInfo = UpdateAvailableResponse & Pick<GetRemotionSkillsInfoResponse, 'remotionUpgradeSkillAvailable'>;
|
|
11
3
|
export type Bug = {
|
|
12
4
|
title: string;
|
|
13
5
|
description: string;
|
|
@@ -9,6 +9,7 @@ const modals_1 = require("../state/modals");
|
|
|
9
9
|
const z_index_1 = require("../state/z-index");
|
|
10
10
|
const InlineAction_1 = require("./InlineAction");
|
|
11
11
|
const actions_1 = require("./RenderQueue/actions");
|
|
12
|
+
const SettingsContext_1 = require("./SettingsContext");
|
|
12
13
|
const buttonStyle = {
|
|
13
14
|
appearance: 'none',
|
|
14
15
|
border: 'none',
|
|
@@ -28,6 +29,7 @@ const updateIconContainer = {
|
|
|
28
29
|
const UpdateCheck = () => {
|
|
29
30
|
const [info, setInfo] = (0, react_1.useState)(null);
|
|
30
31
|
const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
|
|
32
|
+
const { remotionSkillsInfo } = (0, SettingsContext_1.useSettings)();
|
|
31
33
|
const { tabIndex } = (0, z_index_1.useZIndex)();
|
|
32
34
|
const [knownBugs, setKnownBugs] = (0, react_1.useState)(null);
|
|
33
35
|
const [hovered, setHovered] = (0, react_1.useState)(false);
|
|
@@ -76,12 +78,16 @@ const UpdateCheck = () => {
|
|
|
76
78
|
};
|
|
77
79
|
}, [checkForBugs, checkForUpdates]);
|
|
78
80
|
const openModal = (0, react_1.useCallback)(() => {
|
|
81
|
+
var _a;
|
|
79
82
|
setSelectedModal({
|
|
80
83
|
type: 'update',
|
|
81
|
-
info:
|
|
84
|
+
info: {
|
|
85
|
+
...info,
|
|
86
|
+
remotionUpgradeSkillAvailable: (_a = remotionSkillsInfo === null || remotionSkillsInfo === void 0 ? void 0 : remotionSkillsInfo.remotionUpgradeSkillAvailable) !== null && _a !== void 0 ? _a : false,
|
|
87
|
+
},
|
|
82
88
|
knownBugs: knownBugs,
|
|
83
89
|
});
|
|
84
|
-
}, [info, knownBugs, setSelectedModal]);
|
|
90
|
+
}, [info, knownBugs, remotionSkillsInfo, setSelectedModal]);
|
|
85
91
|
const dynButtonStyle = (0, react_1.useMemo)(() => {
|
|
86
92
|
return {
|
|
87
93
|
...buttonStyle,
|
|
@@ -5,6 +5,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const no_react_1 = require("remotion/no-react");
|
|
7
7
|
const fast_refresh_context_1 = require("../../fast-refresh-context");
|
|
8
|
+
const browser_studio_operations_1 = require("../../helpers/browser-studio-operations");
|
|
8
9
|
const get_current_edited_value_1 = require("../../visual-controls/get-current-edited-value");
|
|
9
10
|
const VisualControls_1 = require("../../visual-controls/VisualControls");
|
|
10
11
|
const get_zod_if_possible_1 = require("../get-zod-if-possible");
|
|
@@ -35,6 +36,13 @@ const VisualControlHandle = ({ value, keyName }) => {
|
|
|
35
36
|
if (disableSave) {
|
|
36
37
|
return;
|
|
37
38
|
}
|
|
39
|
+
// Saving visual control changes goes through
|
|
40
|
+
// /api/apply-visual-control-change, which Browser Studio does not
|
|
41
|
+
// support.
|
|
42
|
+
if ((0, browser_studio_operations_1.getBrowserStudioOperations)()) {
|
|
43
|
+
(0, NotificationCenter_1.showNotification)('Saving visual control changes is not supported in Browser Studio', 4000);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
38
46
|
if (originalFileName.type !== 'loaded') {
|
|
39
47
|
throw new Error('Original file name is not loaded');
|
|
40
48
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteJsxNode = void 0;
|
|
4
|
+
const browser_studio_operations_1 = require("../helpers/browser-studio-operations");
|
|
5
|
+
const call_api_1 = require("./call-api");
|
|
6
|
+
const deleteJsxNode = (request) => {
|
|
7
|
+
const browserStudioOperations = (0, browser_studio_operations_1.getBrowserStudioOperations)();
|
|
8
|
+
return browserStudioOperations
|
|
9
|
+
? browserStudioOperations.deleteJsxNode(request)
|
|
10
|
+
: (0, call_api_1.callApi)('/api/delete-jsx-node', request);
|
|
11
|
+
};
|
|
12
|
+
exports.deleteJsxNode = deleteJsxNode;
|
|
@@ -3,8 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.addEffectToSequence = exports.addEffectFromDragData = exports.getEffectDragData = exports.hasExplicitEffectDragType = exports.hasEffectDragType = void 0;
|
|
4
4
|
const studio_protocol_1 = require("@remotion/studio-protocol");
|
|
5
5
|
const studio_shared_1 = require("@remotion/studio-shared");
|
|
6
|
+
const browser_studio_operations_1 = require("../helpers/browser-studio-operations");
|
|
6
7
|
const install_required_package_1 = require("../helpers/install-required-package");
|
|
7
|
-
const
|
|
8
|
+
const effect_operations_api_1 = require("./effect-operations-api");
|
|
8
9
|
const NotificationCenter_1 = require("./Notifications/NotificationCenter");
|
|
9
10
|
const hasEffectDragType = (dataTransfer) => {
|
|
10
11
|
var _a;
|
|
@@ -33,8 +34,10 @@ exports.addEffectFromDragData = addEffectFromDragData;
|
|
|
33
34
|
const addEffectToSequence = async ({ clientId, effect, fileName, nodePath, }) => {
|
|
34
35
|
try {
|
|
35
36
|
const requiredPackage = (0, studio_shared_1.getRequiredPackageForEffectImportPath)(effect.importPath);
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
if ((0, browser_studio_operations_1.getBrowserStudioEffectOperations)() === null) {
|
|
38
|
+
await (0, install_required_package_1.installRequiredPackages)(requiredPackage ? [{ name: requiredPackage, version: null }] : []);
|
|
39
|
+
}
|
|
40
|
+
const result = await (0, effect_operations_api_1.addEffect)({
|
|
38
41
|
fileName,
|
|
39
42
|
sequenceNodePath: nodePath,
|
|
40
43
|
effectName: effect.name,
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AddEffectRequest, DeleteEffectRequest, DuplicateEffectRequest, PasteEffectsRequest, ReorderEffectRequest, SaveEffectPropsRequest, SaveMultipleEffectPropsRequest } from '@remotion/studio-shared';
|
|
2
|
+
export declare const addEffect: (request: AddEffectRequest) => Promise<import("@remotion/studio-shared").AddEffectResponse>;
|
|
3
|
+
export declare const deleteEffects: (request: DeleteEffectRequest) => Promise<import("@remotion/studio-shared").DeleteEffectResponse>;
|
|
4
|
+
export declare const duplicateEffects: (request: DuplicateEffectRequest) => Promise<import("@remotion/studio-shared").DuplicateEffectResponse>;
|
|
5
|
+
export declare const pasteEffects: (request: PasteEffectsRequest) => Promise<import("@remotion/studio-shared").PasteEffectsResponse>;
|
|
6
|
+
export declare const reorderEffect: (request: ReorderEffectRequest) => Promise<import("@remotion/studio-shared").ReorderEffectResponse>;
|
|
7
|
+
export declare const saveEffectProps: (request: SaveEffectPropsRequest) => Promise<import("remotion").CanUpdateEffectPropsResponse>;
|
|
8
|
+
export declare const saveMultipleEffectProps: (request: SaveMultipleEffectPropsRequest) => Promise<import("@remotion/studio-shared").SaveMultipleEffectPropsResponse>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.saveMultipleEffectProps = exports.saveEffectProps = exports.reorderEffect = exports.pasteEffects = exports.duplicateEffects = exports.deleteEffects = exports.addEffect = void 0;
|
|
4
|
+
const browser_studio_operations_1 = require("../helpers/browser-studio-operations");
|
|
5
|
+
const call_api_1 = require("./call-api");
|
|
6
|
+
const getBrowserEffectOperations = () => {
|
|
7
|
+
var _a;
|
|
8
|
+
var _b;
|
|
9
|
+
return (_b = (_a = (0, browser_studio_operations_1.getBrowserStudioOperations)()) === null || _a === void 0 ? void 0 : _a.effects) !== null && _b !== void 0 ? _b : null;
|
|
10
|
+
};
|
|
11
|
+
const addEffect = (request) => {
|
|
12
|
+
var _a;
|
|
13
|
+
var _b;
|
|
14
|
+
return (_b = (_a = getBrowserEffectOperations()) === null || _a === void 0 ? void 0 : _a.addEffect(request)) !== null && _b !== void 0 ? _b : (0, call_api_1.callApi)('/api/add-effect', request);
|
|
15
|
+
};
|
|
16
|
+
exports.addEffect = addEffect;
|
|
17
|
+
const deleteEffects = (request) => {
|
|
18
|
+
var _a;
|
|
19
|
+
var _b;
|
|
20
|
+
return (_b = (_a = getBrowserEffectOperations()) === null || _a === void 0 ? void 0 : _a.deleteEffects(request)) !== null && _b !== void 0 ? _b : (0, call_api_1.callApi)('/api/delete-effect', request);
|
|
21
|
+
};
|
|
22
|
+
exports.deleteEffects = deleteEffects;
|
|
23
|
+
const duplicateEffects = (request) => {
|
|
24
|
+
var _a;
|
|
25
|
+
var _b;
|
|
26
|
+
return (_b = (_a = getBrowserEffectOperations()) === null || _a === void 0 ? void 0 : _a.duplicateEffects(request)) !== null && _b !== void 0 ? _b : (0, call_api_1.callApi)('/api/duplicate-effect', request);
|
|
27
|
+
};
|
|
28
|
+
exports.duplicateEffects = duplicateEffects;
|
|
29
|
+
const pasteEffects = (request) => {
|
|
30
|
+
var _a;
|
|
31
|
+
var _b;
|
|
32
|
+
return (_b = (_a = getBrowserEffectOperations()) === null || _a === void 0 ? void 0 : _a.pasteEffects(request)) !== null && _b !== void 0 ? _b : (0, call_api_1.callApi)('/api/paste-effects', request);
|
|
33
|
+
};
|
|
34
|
+
exports.pasteEffects = pasteEffects;
|
|
35
|
+
const reorderEffect = (request) => {
|
|
36
|
+
var _a;
|
|
37
|
+
var _b;
|
|
38
|
+
return (_b = (_a = getBrowserEffectOperations()) === null || _a === void 0 ? void 0 : _a.reorderEffect(request)) !== null && _b !== void 0 ? _b : (0, call_api_1.callApi)('/api/reorder-effect', request);
|
|
39
|
+
};
|
|
40
|
+
exports.reorderEffect = reorderEffect;
|
|
41
|
+
const saveEffectProps = (request) => {
|
|
42
|
+
var _a;
|
|
43
|
+
var _b;
|
|
44
|
+
return (_b = (_a = getBrowserEffectOperations()) === null || _a === void 0 ? void 0 : _a.saveEffectProps(request)) !== null && _b !== void 0 ? _b : (0, call_api_1.callApi)('/api/save-effect-props', request);
|
|
45
|
+
};
|
|
46
|
+
exports.saveEffectProps = saveEffectProps;
|
|
47
|
+
const saveMultipleEffectProps = (request) => {
|
|
48
|
+
var _a;
|
|
49
|
+
var _b;
|
|
50
|
+
return (_b = (_a = getBrowserEffectOperations()) === null || _a === void 0 ? void 0 : _a.saveMultipleEffectProps(request)) !== null && _b !== void 0 ? _b : (0, call_api_1.callApi)('/api/save-multiple-effect-props', request);
|
|
51
|
+
};
|
|
52
|
+
exports.saveMultipleEffectProps = saveMultipleEffectProps;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { InsertElementRequest, InsertElementResponse, PrepareElementInstallRequest, PrepareElementInstallResponse } from '@remotion/studio-shared';
|
|
2
|
+
export declare const prepareElementInstall: (request: PrepareElementInstallRequest) => Promise<PrepareElementInstallResponse>;
|
|
3
|
+
export declare const installElement: (request: InsertElementRequest) => Promise<InsertElementResponse>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.installElement = exports.prepareElementInstall = void 0;
|
|
4
|
+
const browser_studio_operations_1 = require("../helpers/browser-studio-operations");
|
|
5
|
+
const call_api_1 = require("./call-api");
|
|
6
|
+
const prepareElementInstall = (request) => {
|
|
7
|
+
const browserStudioOperations = (0, browser_studio_operations_1.getBrowserStudioOperations)();
|
|
8
|
+
return browserStudioOperations
|
|
9
|
+
? browserStudioOperations.prepareElementInstall(request)
|
|
10
|
+
: (0, call_api_1.callApi)('/api/prepare-element-install', request);
|
|
11
|
+
};
|
|
12
|
+
exports.prepareElementInstall = prepareElementInstall;
|
|
13
|
+
const installElement = (request) => {
|
|
14
|
+
const browserStudioOperations = (0, browser_studio_operations_1.getBrowserStudioOperations)();
|
|
15
|
+
return browserStudioOperations
|
|
16
|
+
? browserStudioOperations.insertElement(request)
|
|
17
|
+
: (0, call_api_1.callApi)('/api/insert-element', request);
|
|
18
|
+
};
|
|
19
|
+
exports.installElement = installElement;
|
|
@@ -6,11 +6,13 @@ const remotion_1 = require("remotion");
|
|
|
6
6
|
const no_react_1 = require("remotion/no-react");
|
|
7
7
|
const get_static_files_1 = require("../api/get-static-files");
|
|
8
8
|
const write_static_file_1 = require("../api/write-static-file");
|
|
9
|
+
const browser_studio_operations_1 = require("../helpers/browser-studio-operations");
|
|
9
10
|
const clipboard_figma_1 = require("../helpers/clipboard-figma");
|
|
10
11
|
const inserted_element_selection_1 = require("../helpers/inserted-element-selection");
|
|
11
12
|
const install_required_package_1 = require("../helpers/install-required-package");
|
|
12
13
|
const use_media_metadata_1 = require("../helpers/use-media-metadata");
|
|
13
14
|
const call_api_1 = require("./call-api");
|
|
15
|
+
const element_install_api_1 = require("./element-install-api");
|
|
14
16
|
const NotificationCenter_1 = require("./Notifications/NotificationCenter");
|
|
15
17
|
const getFromForDrop = ({ durationInFrames, from, preferCompositionStart, }) => {
|
|
16
18
|
if (preferCompositionStart !== true) {
|
|
@@ -494,13 +496,14 @@ const notifyUnsupportedFiles = (unsupportedFiles) => {
|
|
|
494
496
|
};
|
|
495
497
|
const insertCompositionElement = async ({ compositionFile, compositionId, element, from, }) => {
|
|
496
498
|
const requiredPackage = (0, studio_shared_1.getRequiredPackageForInsertableElement)(element);
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
499
|
+
const browserStudioOperations = (0, browser_studio_operations_1.getBrowserStudioOperations)();
|
|
500
|
+
if (browserStudioOperations === null) {
|
|
501
|
+
await (0, install_required_package_1.installRequiredPackages)(requiredPackage ? [{ name: requiredPackage, version: null }] : []);
|
|
502
|
+
}
|
|
503
|
+
const request = { compositionFile, compositionId, element, from };
|
|
504
|
+
const result = browserStudioOperations
|
|
505
|
+
? await browserStudioOperations.insertJsxElement(request)
|
|
506
|
+
: await (0, call_api_1.callApi)('/api/insert-jsx-element', request);
|
|
504
507
|
if (!result.success) {
|
|
505
508
|
(0, NotificationCenter_1.showNotification)(result.reason, 4000);
|
|
506
509
|
return false;
|
|
@@ -635,6 +638,12 @@ const importAssets = async ({ compositionFile, compositionId, destinationDimensi
|
|
|
635
638
|
};
|
|
636
639
|
exports.importAssets = importAssets;
|
|
637
640
|
const importFigmaClipboard = async ({ compositionFile, compositionId, destinationDimensions, dropPosition, html, }) => {
|
|
641
|
+
// Figma clipboard conversion requires the SVGR-based pipeline in
|
|
642
|
+
// @remotion/studio-server, which Browser Studio does not support.
|
|
643
|
+
if ((0, browser_studio_operations_1.getBrowserStudioOperations)()) {
|
|
644
|
+
(0, NotificationCenter_1.showNotification)('Importing Figma clipboard data is not supported in Browser Studio', 4000);
|
|
645
|
+
return;
|
|
646
|
+
}
|
|
638
647
|
try {
|
|
639
648
|
const converted = await (0, call_api_1.callApi)('/api/convert-figma-clipboard-to-svg', {
|
|
640
649
|
html,
|
|
@@ -925,8 +934,10 @@ const insertComposition = async ({ composition, compositionFile, compositionId,
|
|
|
925
934
|
exports.insertComposition = insertComposition;
|
|
926
935
|
const insertElement = async ({ compositionFile, compositionId, element, expectedFileState, position, from, overwriteExisting, }) => {
|
|
927
936
|
try {
|
|
928
|
-
|
|
929
|
-
|
|
937
|
+
if ((0, browser_studio_operations_1.getBrowserStudioOperations)() === null) {
|
|
938
|
+
await (0, install_required_package_1.installRequiredPackages)(element.dependencies);
|
|
939
|
+
}
|
|
940
|
+
const response = await (0, element_install_api_1.installElement)({
|
|
930
941
|
compositionFile,
|
|
931
942
|
compositionId,
|
|
932
943
|
element,
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.reorderSequence = void 0;
|
|
4
|
+
const browser_studio_operations_1 = require("../helpers/browser-studio-operations");
|
|
5
|
+
const call_api_1 = require("./call-api");
|
|
6
|
+
const reorderSequence = (request) => {
|
|
7
|
+
const browserStudioOperations = (0, browser_studio_operations_1.getBrowserStudioOperations)();
|
|
8
|
+
return browserStudioOperations
|
|
9
|
+
? browserStudioOperations.reorderSequence(request)
|
|
10
|
+
: (0, call_api_1.callApi)('/api/reorder-sequence', request);
|
|
11
|
+
};
|
|
12
|
+
exports.reorderSequence = reorderSequence;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.splitJsxSequence = void 0;
|
|
4
|
+
const browser_studio_operations_1 = require("../helpers/browser-studio-operations");
|
|
5
|
+
const call_api_1 = require("./call-api");
|
|
6
|
+
const splitJsxSequence = (request) => {
|
|
7
|
+
const browserStudioOperations = (0, browser_studio_operations_1.getBrowserStudioOperations)();
|
|
8
|
+
return browserStudioOperations
|
|
9
|
+
? browserStudioOperations.splitJsxSequence(request)
|
|
10
|
+
: (0, call_api_1.callApi)('/api/split-jsx-sequence', request);
|
|
11
|
+
};
|
|
12
|
+
exports.splitJsxSequence = splitJsxSequence;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.splitVideoFromAudio = void 0;
|
|
4
|
+
const browser_studio_operations_1 = require("../helpers/browser-studio-operations");
|
|
5
|
+
const call_api_1 = require("./call-api");
|
|
6
|
+
const splitVideoFromAudio = (request) => {
|
|
7
|
+
const browserStudioOperations = (0, browser_studio_operations_1.getBrowserStudioOperations)();
|
|
8
|
+
return browserStudioOperations
|
|
9
|
+
? browserStudioOperations.splitVideoFromAudio(request)
|
|
10
|
+
: (0, call_api_1.callApi)('/api/split-video-from-audio', request);
|
|
11
|
+
};
|
|
12
|
+
exports.splitVideoFromAudio = splitVideoFromAudio;
|
|
@@ -43,7 +43,7 @@ const Overlay = () => {
|
|
|
43
43
|
if (errors.errors.length === 0) {
|
|
44
44
|
return null;
|
|
45
45
|
}
|
|
46
|
-
return (jsx_runtime_1.jsx(client_id_1.PreviewServerConnection, { children: jsx_runtime_1.jsx(SettingsContext_1.SettingsProvider, { children: jsx_runtime_1.jsx(keybindings_1.KeybindingContextProvider, { children: jsx_runtime_1.jsx(remotion_1.
|
|
46
|
+
return (jsx_runtime_1.jsx(client_id_1.PreviewServerConnection, { children: jsx_runtime_1.jsx(SettingsContext_1.SettingsProvider, { children: jsx_runtime_1.jsx(keybindings_1.KeybindingContextProvider, { children: jsx_runtime_1.jsx(remotion_1.Internals.AbsoluteFillElement, { style: {
|
|
47
47
|
backgroundColor: BACKGROUND_COLOR,
|
|
48
48
|
overflow: 'auto',
|
|
49
49
|
color: colors_1.WHITE,
|
|
@@ -2,9 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.logStudioError = exports.logStudioErrorData = void 0;
|
|
4
4
|
const call_api_1 = require("../../components/call-api");
|
|
5
|
+
const browser_studio_operations_1 = require("../../helpers/browser-studio-operations");
|
|
5
6
|
const loggedErrors = new Set();
|
|
6
7
|
const maxLoggedErrors = 100;
|
|
7
8
|
const logStudioErrorData = (data) => {
|
|
9
|
+
if ((0, browser_studio_operations_1.getBrowserStudioOperations)() !== null) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
8
12
|
const key = JSON.stringify([data.name, data.message, data.stack]);
|
|
9
13
|
if (loggedErrors.has(key)) {
|
|
10
14
|
return;
|