@remotion/studio 4.0.514 → 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/api/install-package.js +14 -1
- package/dist/components/AssetSelectorItem.d.ts +2 -1
- package/dist/components/AssetSelectorItem.js +18 -14
- package/dist/components/AudioWaveform.js +17 -139
- package/dist/components/InspectorPanel/CompositionInspector.js +27 -5
- package/dist/components/InstallPackage.d.ts +1 -1
- package/dist/components/InstallPackage.js +38 -6
- package/dist/components/Menu/MenuDivider.js +1 -1
- package/dist/components/Modals.js +9 -2
- package/dist/components/RenderModal/GuiRenderStatus.js +3 -1
- package/dist/components/RenderModal/RenderModalOutputName.js +3 -3
- package/dist/components/RenderModal/WebRenderModal.js +4 -2
- 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/SelectedOutlineCanvasRotation.d.ts +1 -0
- package/dist/components/SelectedOutlineCanvasRotation.js +11 -4
- package/dist/components/SelectedOutlineElement.js +1 -1
- package/dist/components/SelectedOutlinePolygon.d.ts +1 -0
- package/dist/components/SelectedOutlinePolygon.js +3 -2
- package/dist/components/Timeline/TimelineClipboardKeybindings.js +6 -2
- package/dist/components/Timeline/TimelineEffectItem.js +23 -6
- package/dist/components/Timeline/TimelineEffectPropItem.js +6 -2
- package/dist/components/Timeline/TimelineExpandArrowButton.js +10 -7
- package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +4 -1
- package/dist/components/Timeline/TimelineExpandedSection.js +8 -5
- package/dist/components/Timeline/TimelineRowChrome.d.ts +1 -0
- package/dist/components/Timeline/TimelineRowChrome.js +38 -2
- package/dist/components/Timeline/TimelineSelection.d.ts +8 -3
- package/dist/components/Timeline/TimelineSelection.js +6 -4
- package/dist/components/Timeline/TimelineSequenceItem.js +7 -4
- package/dist/components/Timeline/TimelineSequenceName.js +1 -1
- package/dist/components/Timeline/TimelineTrack.js +4 -1
- package/dist/components/Timeline/TimelineVideoInfo.js +4 -2
- package/dist/components/Timeline/delete-selected-timeline-item.js +6 -2
- package/dist/components/Timeline/duplicate-selected-timeline-item.js +4 -2
- package/dist/components/Timeline/save-effect-prop.js +3 -3
- 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/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-xn2q7eem.js → chunk-v5a8vpv4.js} +3525 -3475
- package/dist/esm/internals.mjs +3525 -3475
- package/dist/esm/previewEntry.mjs +3533 -3483
- package/dist/esm/renderEntry.mjs +2 -2
- package/dist/helpers/browser-studio-operations.d.ts +3 -0
- package/dist/helpers/browser-studio-operations.js +18 -1
- package/dist/helpers/colors.d.ts +1 -1
- package/dist/helpers/colors.js +1 -1
- package/dist/helpers/inject-css.js +5 -3
- 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 -80
- package/dist/icons/cloud-download.d.ts +4 -0
- package/dist/icons/cloud-download.js +8 -0
- package/dist/state/modals.d.ts +1 -1
- package/package.json +12 -12
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useTimelineRowHighlightBackground = exports.useTimelineRowContainsSelection = exports.useTimelineGuideSelection = exports.useTimelineEasingSelection = exports.useTimelineKeyframeSelection = exports.useTimelineRowSelection = exports.useTimelineMarqueeSelectableItem = exports.useTimelineMarqueeSelection = exports.useCurrentTimelineSelectionStateAsRef = exports.TIMELINE_SCRUBBER_ATTR = exports.TIMELINE_MARQUEE_ITEM_ATTR = exports.useTimelineSelection = exports.TimelineSelectionProvider = exports.TimelineSelectableItemsProvider = exports.getTimelineSequenceSelectionForEscape = exports.TimelineSelectAllKeybindings = exports.getTimelineSequenceSelectionKey = exports.getSelectableTimelineItems = exports.getSelectableTimelineSequenceSelections = exports.getTimelineSelectionKey = exports.getTimelineSelectionFromNodePathInfo = exports.TimelineSelectionOrderProvider = exports.extendTimelineMarqueeSelection = exports.getTimelineMarqueeSelection = exports.timelineMarqueeRectsIntersect = exports.getClampedTimelineMarqueePoint = exports.getNormalizedTimelineMarqueeRect = exports.getAvailableTimelineSelectionState = exports.getTimelineSelectionAfterInteraction = exports.EMPTY_TIMELINE_SELECTION_STATE = exports.shouldSelectTimelineRowOnPointerDown = exports.isTimelineSelectionModifierEvent = exports.TIMELINE_TICKS_BACKGROUND = exports.TIMELINE_BACKGROUND = exports.getTimelineRowHighlightBackground = exports.getTimelineSelectedTrackHighlightStyle = exports.getTimelineColor = exports.getTimelineSelectedLabelStyle = exports.TIMELINE_SELECTED_LABEL_HORIZONTAL_PADDING = exports.TIMELINE_SELECTED_LABEL_TEXT = exports.TIMELINE_SELECTED_LABEL_BACKGROUND = exports.TIMELINE_HOVER_BACKGROUND = exports.TIMELINE_SELECTED_BACKGROUND = void 0;
|
|
3
|
+
exports.useTimelineRowHighlightBackground = exports.useTimelineRowContainsSelection = exports.useTimelineGuideSelection = exports.useTimelineEasingSelection = exports.useTimelineKeyframeSelection = exports.useTimelineRowSelection = exports.useTimelineMarqueeSelectableItem = exports.useTimelineMarqueeSelection = exports.useCurrentTimelineSelectionStateAsRef = exports.TIMELINE_SCRUBBER_ATTR = exports.TIMELINE_MARQUEE_ITEM_ATTR = exports.useTimelineSelection = exports.TimelineSelectionProvider = exports.TimelineSelectableItemsProvider = exports.getTimelineSequenceSelectionForEscape = exports.TimelineSelectAllKeybindings = exports.getTimelineSequenceSelectionKey = exports.getSelectableTimelineItems = exports.getSelectableTimelineSequenceSelections = exports.getTimelineSelectionKey = exports.getTimelineSelectionFromNodePathInfo = exports.TimelineSelectionOrderProvider = exports.extendTimelineMarqueeSelection = exports.getTimelineMarqueeSelection = exports.timelineMarqueeRectsIntersect = exports.getClampedTimelineMarqueePoint = exports.getNormalizedTimelineMarqueeRect = exports.getAvailableTimelineSelectionState = exports.getTimelineSelectionAfterInteraction = exports.EMPTY_TIMELINE_SELECTION_STATE = exports.shouldSelectTimelineRowOnPointerDown = exports.isTimelineSelectionModifierEvent = exports.TIMELINE_TICKS_BACKGROUND = exports.TIMELINE_BACKGROUND = exports.getTimelineRowHighlightBackground = exports.getTimelineSelectedTrackHighlightStyle = exports.getTimelineColor = exports.getTimelineSelectedLabelStyle = exports.TIMELINE_SELECTED_LABEL_HORIZONTAL_PADDING = exports.TIMELINE_SELECTED_LABEL_TEXT = exports.TIMELINE_SELECTED_LABEL_BACKGROUND = exports.TIMELINE_HOVER_BACKGROUND = exports.TIMELINE_EXPANDED_SELECTED_BACKGROUND = exports.TIMELINE_SELECTED_BACKGROUND = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const studio_shared_1 = require("@remotion/studio-shared");
|
|
6
6
|
const react_1 = require("react");
|
|
@@ -26,6 +26,7 @@ const timeline_scroll_logic_1 = require("./timeline-scroll-logic");
|
|
|
26
26
|
const TimelineClipboardKeybindings_1 = require("./TimelineClipboardKeybindings");
|
|
27
27
|
const TimelineDeleteKeybindings_1 = require("./TimelineDeleteKeybindings");
|
|
28
28
|
exports.TIMELINE_SELECTED_BACKGROUND = colors_1.TIMELINE_SELECTED_BACKGROUND_COLOR;
|
|
29
|
+
exports.TIMELINE_EXPANDED_SELECTED_BACKGROUND = colors_1.BACKGROUND;
|
|
29
30
|
exports.TIMELINE_HOVER_BACKGROUND = colors_1.WHITE_ALPHA_05;
|
|
30
31
|
exports.TIMELINE_SELECTED_LABEL_BACKGROUND = colors_1.TIMELINE_SELECTED_LABEL_BACKGROUND_COLOR;
|
|
31
32
|
exports.TIMELINE_SELECTED_LABEL_TEXT = colors_1.BLACK;
|
|
@@ -60,9 +61,9 @@ const getTimelineSelectedTrackHighlightStyle = (timelineWidth, backgroundColor =
|
|
|
60
61
|
width: timelineWidth,
|
|
61
62
|
});
|
|
62
63
|
exports.getTimelineSelectedTrackHighlightStyle = getTimelineSelectedTrackHighlightStyle;
|
|
63
|
-
const getTimelineRowHighlightBackground = ({ showSelectedBackground, selected, containsSelection, hovered, }) => {
|
|
64
|
+
const getTimelineRowHighlightBackground = ({ showSelectedBackground, selected, containsSelection, hovered, selectedBackground, }) => {
|
|
64
65
|
if (showSelectedBackground && (selected || containsSelection)) {
|
|
65
|
-
return
|
|
66
|
+
return selectedBackground;
|
|
66
67
|
}
|
|
67
68
|
return hovered ? exports.TIMELINE_HOVER_BACKGROUND : undefined;
|
|
68
69
|
};
|
|
@@ -1134,7 +1135,7 @@ const useTimelineRowContainsSelection = (nodePathInfo) => {
|
|
|
1134
1135
|
return containsSelection(nodePathInfo);
|
|
1135
1136
|
};
|
|
1136
1137
|
exports.useTimelineRowContainsSelection = useTimelineRowContainsSelection;
|
|
1137
|
-
const useTimelineRowHighlightBackground = (nodePathInfo, hovered
|
|
1138
|
+
const useTimelineRowHighlightBackground = (nodePathInfo, { hovered, selectedBackground, }) => {
|
|
1138
1139
|
const { selected } = (0, exports.useTimelineRowSelection)(nodePathInfo);
|
|
1139
1140
|
const containsSelection = (0, exports.useTimelineRowContainsSelection)(nodePathInfo);
|
|
1140
1141
|
return (0, exports.getTimelineRowHighlightBackground)({
|
|
@@ -1142,6 +1143,7 @@ const useTimelineRowHighlightBackground = (nodePathInfo, hovered = false) => {
|
|
|
1142
1143
|
selected,
|
|
1143
1144
|
containsSelection,
|
|
1144
1145
|
hovered,
|
|
1146
|
+
selectedBackground,
|
|
1145
1147
|
});
|
|
1146
1148
|
};
|
|
1147
1149
|
exports.useTimelineRowHighlightBackground = useTimelineRowHighlightBackground;
|
|
@@ -38,6 +38,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
38
38
|
const react_1 = __importStar(require("react"));
|
|
39
39
|
const remotion_1 = require("remotion");
|
|
40
40
|
const are_sequence_node_path_infos_equal_1 = require("../../helpers/are-sequence-node-path-infos-equal");
|
|
41
|
+
const browser_studio_operations_1 = require("../../helpers/browser-studio-operations");
|
|
41
42
|
const client_id_1 = require("../../helpers/client-id");
|
|
42
43
|
const colors_1 = require("../../helpers/colors");
|
|
43
44
|
const get_sequence_double_click_action_1 = require("../../helpers/get-sequence-double-click-action");
|
|
@@ -83,6 +84,7 @@ const labelContainerStyle = {
|
|
|
83
84
|
alignItems: 'center',
|
|
84
85
|
alignSelf: 'stretch',
|
|
85
86
|
display: 'flex',
|
|
87
|
+
flex: 1,
|
|
86
88
|
flexDirection: 'row',
|
|
87
89
|
minWidth: 0,
|
|
88
90
|
};
|
|
@@ -184,6 +186,7 @@ const TimelineSequenceItemInner = ({ afterDropLineOffset, connectedCompositions,
|
|
|
184
186
|
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
185
187
|
const previewConnected = previewServerState.type === 'connected';
|
|
186
188
|
const previewInteractive = previewConnected && (0, interactivity_enabled_1.isStudioInteractivityEnabled)();
|
|
189
|
+
const canMutateEffects = previewConnected && (0, interactivity_enabled_1.isStudioSelectionEnabled)() && (0, browser_studio_operations_1.canUseEffectOperations)();
|
|
187
190
|
const { getIsExpanded } = (0, react_1.useContext)(ExpandedTracksProvider_1.ExpandedTracksGetterContext);
|
|
188
191
|
const { setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
189
192
|
const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
|
|
@@ -620,7 +623,7 @@ const TimelineSequenceItemInner = ({ afterDropLineOffset, connectedCompositions,
|
|
|
620
623
|
setIsRenaming(true);
|
|
621
624
|
}, [canRenameThisSequence]);
|
|
622
625
|
const canAddEffect = (nodePathInfo === null || nodePathInfo === void 0 ? void 0 : nodePathInfo.supportsEffects) === true &&
|
|
623
|
-
|
|
626
|
+
canMutateEffects &&
|
|
624
627
|
Boolean(validatedLocation === null || validatedLocation === void 0 ? void 0 : validatedLocation.source);
|
|
625
628
|
const canCrop = (0, use_runtime_values_1.useRuntimeValueSelector)({
|
|
626
629
|
controls: sequence.controls,
|
|
@@ -850,7 +853,7 @@ const TimelineSequenceItemInner = ({ afterDropLineOffset, connectedCompositions,
|
|
|
850
853
|
setPropStatuses,
|
|
851
854
|
validatedLocation === null || validatedLocation === void 0 ? void 0 : validatedLocation.source,
|
|
852
855
|
]);
|
|
853
|
-
const canDropEffect =
|
|
856
|
+
const canDropEffect = canMutateEffects &&
|
|
854
857
|
nodePath !== null &&
|
|
855
858
|
validatedLocation !== null &&
|
|
856
859
|
((_b = sequence.controls) === null || _b === void 0 ? void 0 : _b.supportsEffects) === true;
|
|
@@ -908,9 +911,9 @@ const TimelineSequenceItemInner = ({ afterDropLineOffset, connectedCompositions,
|
|
|
908
911
|
clientId: previewServerState.clientId,
|
|
909
912
|
});
|
|
910
913
|
}, [canDropEffect, nodePath, previewServerState, validatedLocation]);
|
|
911
|
-
const trackRow = (jsx_runtime_1.jsx(TimelineRowChrome_1.TimelineRowChrome, { depth: nestedDepth, eye: canToggleVisibility ? (jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEye, { type: sequence.type === 'audio' ? 'speaker' : 'eye', hidden: isItemHidden, onInvoked: onToggleVisibility })) : (jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEyeSpacer, {})), arrow:
|
|
914
|
+
const trackRow = (jsx_runtime_1.jsx(TimelineRowChrome_1.TimelineRowChrome, { depth: nestedDepth, eye: canToggleVisibility ? (jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEye, { type: sequence.type === 'audio' ? 'speaker' : 'eye', hidden: isItemHidden, onInvoked: onToggleVisibility })) : (jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEyeSpacer, {})), arrow: jsx_runtime_1.jsx(TimelineExpandArrowButton_1.TimelineExpandArrowSpacer, {}), style: rowStyle, selected: selected, selectable: selectable, onSelect: onSelect, showSelectedBackground: true, containsSelection: containsSelection, hovered: hovered, isFieldRow: false, outerHeight: outerHeight, onDragLeave: canDropEffect ? onEffectDragLeave : undefined, onDragOver: canDropEffect ? onEffectDragOver : undefined, onDrop: canDropEffect ? onEffectDrop : undefined, onDoubleClick: canHandleSequenceDoubleClick ? onSequenceDoubleClick : undefined, onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, children: jsx_runtime_1.jsxs("div", { style: labelContainerStyle, children: [connectedCompositions.length > 0 ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
912
915
|
jsx_runtime_1.jsx(CompositionOrStillIcon_1.CompositionOrStillIcon, { color: (0, TimelineSelection_1.getTimelineColor)(false, false), composition: connectedCompositions[0], style: connectedCompositionIconStyle }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 })
|
|
913
|
-
] })) : null, jsx_runtime_1.jsx(TimelineSequenceName_1.TimelineSequenceName, { displayName: timelineDisplayName, fallbackDisplayName: fallbackDisplayName, selected: selected, containsSelection: containsSelection, editing: isRenaming, onCancelEditing: onCancelRenaming, onSaveName: onSaveName }), numberOfHiddenDuplicates > 0 ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
916
|
+
] })) : null, jsx_runtime_1.jsx(TimelineSequenceName_1.TimelineSequenceName, { displayName: timelineDisplayName, fallbackDisplayName: fallbackDisplayName, selected: selected, containsSelection: containsSelection, editing: isRenaming, onCancelEditing: onCancelRenaming, onSaveName: onSaveName }), hasExpandableContent && nodePathInfo !== null ? (jsx_runtime_1.jsx(TimelineSequenceExpandArrow, { disabled: !previewInteractive, isExpanded: isExpanded, nodePathInfo: nodePathInfo, sequence: sequence })) : null, numberOfHiddenDuplicates > 0 ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
914
917
|
jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(TimelineDuplicateCount_1.TimelineDuplicateCount, { count: numberOfHiddenDuplicates })
|
|
915
918
|
] })) : null, mediaSrc ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
916
919
|
jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }),
|
|
@@ -24,7 +24,7 @@ const TimelineSequenceName = ({ displayName, fallbackDisplayName, selected, cont
|
|
|
24
24
|
alignSelf: 'stretch',
|
|
25
25
|
...(0, TimelineSelection_1.getTimelineSelectedLabelStyle)(selected, false),
|
|
26
26
|
display: 'inline-flex',
|
|
27
|
-
flexShrink:
|
|
27
|
+
flexShrink: 1,
|
|
28
28
|
fontFamily: 'inherit',
|
|
29
29
|
fontSize: 12,
|
|
30
30
|
lineHeight: 'normal',
|
|
@@ -52,7 +52,10 @@ const TimelineTrackUnmemoized = ({ track }) => {
|
|
|
52
52
|
const previewServerConnected = previewServerState.type === 'connected';
|
|
53
53
|
const timelineWidth = (0, react_1.useContext)(TimelineWidthProvider_1.TimelineWidthContext);
|
|
54
54
|
const { hovered, onPointerEnter, onPointerLeave } = (0, timeline_sequence_hover_1.useTimelineSequenceHover)(track.nodePathInfo);
|
|
55
|
-
const rowHighlightBackground = (0, TimelineSelection_1.useTimelineRowHighlightBackground)(track.nodePathInfo,
|
|
55
|
+
const rowHighlightBackground = (0, TimelineSelection_1.useTimelineRowHighlightBackground)(track.nodePathInfo, {
|
|
56
|
+
hovered,
|
|
57
|
+
selectedBackground: TimelineSelection_1.TIMELINE_SELECTED_BACKGROUND,
|
|
58
|
+
});
|
|
56
59
|
const layerStyle = (0, react_1.useMemo)(() => ({
|
|
57
60
|
height: (0, timeline_layout_1.getTimelineLayerHeight)(track.sequence.type),
|
|
58
61
|
marginBottom: timeline_layout_1.TIMELINE_ITEM_BORDER_BOTTOM,
|
|
@@ -61,6 +61,7 @@ const MAX_FROZEN_FRAME_CACHE_DEVIATION = timeline_utils_1.WEBCODECS_TIMESCALE *
|
|
|
61
61
|
const TimelineVideoInfoSegment = ({ src, visualizationWidth, startMediaFrom, mediaFrameAtSequenceZero, sequenceFrameOffset, durationInFrames, sourceOffsetInFrames, tiledLoop, playbackRate, volume, doesVolumeChange, muted, frozenMediaFrame, extendLastFrame, }) => {
|
|
62
62
|
var _a, _b;
|
|
63
63
|
const { fps } = (0, remotion_1.useVideoConfig)();
|
|
64
|
+
const resolvedSrc = remotion_1.Internals.usePreload(src);
|
|
64
65
|
const ref = (0, react_1.useRef)(null);
|
|
65
66
|
const [error, setError] = (0, react_1.useState)(null);
|
|
66
67
|
const aspectRatio = (0, react_1.useRef)((0, timeline_utils_1.getAspectRatioFromCache)(src));
|
|
@@ -143,7 +144,7 @@ const TimelineVideoInfoSegment = ({ src, visualizationWidth, startMediaFrom, med
|
|
|
143
144
|
timeline_utils_1.aspectRatioCache.set(src, aspectRatio.current);
|
|
144
145
|
return [times.timestampInSeconds];
|
|
145
146
|
},
|
|
146
|
-
src,
|
|
147
|
+
src: resolvedSrc,
|
|
147
148
|
onVideoSample: (sample) => {
|
|
148
149
|
let frame;
|
|
149
150
|
try {
|
|
@@ -274,7 +275,7 @@ const TimelineVideoInfoSegment = ({ src, visualizationWidth, startMediaFrom, med
|
|
|
274
275
|
.filter((timestamp) => filledSlots.get(timestamp) === undefined)
|
|
275
276
|
.map((timestamp) => timestamp / timeline_utils_1.WEBCODECS_TIMESCALE);
|
|
276
277
|
},
|
|
277
|
-
src,
|
|
278
|
+
src: resolvedSrc,
|
|
278
279
|
onVideoSample: (sample) => {
|
|
279
280
|
let frame;
|
|
280
281
|
try {
|
|
@@ -356,6 +357,7 @@ const TimelineVideoInfoSegment = ({ src, visualizationWidth, startMediaFrom, med
|
|
|
356
357
|
frozenMediaFrame,
|
|
357
358
|
mediaStartFrame,
|
|
358
359
|
playbackRate,
|
|
360
|
+
resolvedSrc,
|
|
359
361
|
src,
|
|
360
362
|
tiledLoop,
|
|
361
363
|
visualizationWidth,
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.deleteSelectedTimelineItems = exports.getTimelineSelectionAfterDeletingItems = exports.deleteSequencesFromSource = void 0;
|
|
4
4
|
const remotion_1 = require("remotion");
|
|
5
|
-
const
|
|
5
|
+
const browser_studio_operations_1 = require("../../helpers/browser-studio-operations");
|
|
6
6
|
const delete_jsx_node_api_1 = require("../delete-jsx-node-api");
|
|
7
|
+
const effect_operations_api_1 = require("../effect-operations-api");
|
|
7
8
|
const NotificationCenter_1 = require("../Notifications/NotificationCenter");
|
|
8
9
|
const delete_selected_keyframe_1 = require("./delete-selected-keyframe");
|
|
9
10
|
const find_track_for_node_path_info_1 = require("./find-track-for-node-path-info");
|
|
@@ -63,7 +64,10 @@ const deleteEffects = (effects) => {
|
|
|
63
64
|
if (effects.length === 0) {
|
|
64
65
|
return Promise.resolve(false);
|
|
65
66
|
}
|
|
66
|
-
|
|
67
|
+
if (!(0, browser_studio_operations_1.canUseEffectOperations)()) {
|
|
68
|
+
return Promise.resolve(false);
|
|
69
|
+
}
|
|
70
|
+
return (0, effect_operations_api_1.deleteEffects)(effects.map((effect) => {
|
|
67
71
|
const nodePath = effect.nodePathInfo.sequenceSubscriptionKey;
|
|
68
72
|
return effect.type === 'single-effect'
|
|
69
73
|
? {
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.duplicateSelectedTimelineItems = exports.isDuplicatableEffectSelection = exports.isDuplicatableSequenceRowSelection = exports.duplicateSequencesFromSource = void 0;
|
|
4
|
+
const browser_studio_operations_1 = require("../../helpers/browser-studio-operations");
|
|
4
5
|
const call_api_1 = require("../call-api");
|
|
6
|
+
const effect_operations_api_1 = require("../effect-operations-api");
|
|
5
7
|
const NotificationCenter_1 = require("../Notifications/NotificationCenter");
|
|
6
8
|
const confirmDuplicatingProgrammaticallyDuplicatedSequences = (nodePathInfos, confirm) => {
|
|
7
9
|
if (nodePathInfos.length === 0) {
|
|
@@ -64,7 +66,7 @@ exports.isDuplicatableSequenceRowSelection = isDuplicatableSequenceRowSelection;
|
|
|
64
66
|
const isDuplicatableEffectSelection = (selection) => selection.type === 'sequence-effect';
|
|
65
67
|
exports.isDuplicatableEffectSelection = isDuplicatableEffectSelection;
|
|
66
68
|
const duplicateEffectsFromSource = (effects) => {
|
|
67
|
-
return (0,
|
|
69
|
+
return (0, effect_operations_api_1.duplicateEffects)(effects.map((effect) => {
|
|
68
70
|
const nodePath = effect.nodePathInfo.sequenceSubscriptionKey;
|
|
69
71
|
return {
|
|
70
72
|
fileName: nodePath.absolutePath,
|
|
@@ -92,7 +94,7 @@ const duplicateSelectedTimelineItems = ({ selections, confirm, }) => {
|
|
|
92
94
|
return (0, exports.duplicateSequencesFromSource)(sequenceSelections.map((selection) => selection.nodePathInfo), confirm);
|
|
93
95
|
}
|
|
94
96
|
const effectSelections = selections.filter(exports.isDuplicatableEffectSelection);
|
|
95
|
-
if (effectSelections.length === 0) {
|
|
97
|
+
if (effectSelections.length === 0 || !(0, browser_studio_operations_1.canUseEffectOperations)()) {
|
|
96
98
|
return null;
|
|
97
99
|
}
|
|
98
100
|
return duplicateEffectsFromSource(effectSelections);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.saveEffectProp = exports.saveMultipleEffectProps = void 0;
|
|
4
4
|
const studio_shared_1 = require("@remotion/studio-shared");
|
|
5
|
-
const
|
|
5
|
+
const effect_operations_api_1 = require("../effect-operations-api");
|
|
6
6
|
const apply_effect_response_to_prop_statuses_1 = require("./apply-effect-response-to-prop-statuses");
|
|
7
7
|
const save_prop_queue_1 = require("./save-prop-queue");
|
|
8
8
|
const saveMultipleEffectProps = ({ changes, setPropStatuses, clientId, undoLabel, redoLabel, }) => {
|
|
@@ -21,7 +21,7 @@ const saveMultipleEffectProps = ({ changes, setPropStatuses, clientId, undoLabel
|
|
|
21
21
|
schema: change.schema,
|
|
22
22
|
}));
|
|
23
23
|
}
|
|
24
|
-
return (0,
|
|
24
|
+
return (0, effect_operations_api_1.saveMultipleEffectProps)({
|
|
25
25
|
edits: changes.map((change) => change.type === 'effect-param'
|
|
26
26
|
? {
|
|
27
27
|
type: 'effect-param',
|
|
@@ -71,7 +71,7 @@ const saveEffectProp = (input) => {
|
|
|
71
71
|
schema,
|
|
72
72
|
}),
|
|
73
73
|
applyServerResponse: (prev, response) => (0, apply_effect_response_to_prop_statuses_1.applyEffectResponseToPropStatuses)({ previous: prev, response }),
|
|
74
|
-
apiCall: () => (0,
|
|
74
|
+
apiCall: () => (0, effect_operations_api_1.saveEffectProps)(input.type === 'effect-param'
|
|
75
75
|
? {
|
|
76
76
|
type: 'effect-param',
|
|
77
77
|
fileName,
|
|
@@ -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;
|
|
@@ -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;
|
|
@@ -87,7 +87,7 @@ var ERROR_LINK_COLOR = "#58a6ff";
|
|
|
87
87
|
var INFO_BLUE = "#60a5fa";
|
|
88
88
|
var SERVER_DISCONNECTED_BACKGROUND = "#e74c3c";
|
|
89
89
|
var STACK_FRAME_BORDER_BLUE = "rgb(66, 144, 245)";
|
|
90
|
-
var TIMELINE_BACKGROUND_COLOR = "#
|
|
90
|
+
var TIMELINE_BACKGROUND_COLOR = "#15181B";
|
|
91
91
|
var TIMELINE_SELECTED_BACKGROUND_COLOR = "#3B3F42";
|
|
92
92
|
var TIMELINE_SELECTED_LABEL_BACKGROUND_COLOR = "#B0B0B0";
|
|
93
93
|
var TIMELINE_BLUE = "#0b84ff";
|