@remotion/studio 4.0.519 → 4.0.520
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/visual-control.js +2 -2
- package/dist/components/AudioWaveform.js +6 -1
- package/dist/components/Canvas.js +30 -36
- package/dist/components/CompositionSelector.js +6 -10
- package/dist/components/CompositionSelectorItem.js +7 -12
- package/dist/components/CurrentCompositionSideEffects.js +5 -0
- package/dist/components/ElementInstallConfirmation.d.ts +2 -23
- package/dist/components/ElementInstallConfirmation.js +16 -2
- package/dist/components/FpsCounter.js +1 -1
- package/dist/components/FramePersistor.js +1 -1
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +4 -3
- package/dist/components/InspectorPanel/use-composition-actions.js +5 -8
- package/dist/components/Modals.js +1 -1
- package/dist/components/NewComposition/NewComposition.js +2 -2
- package/dist/components/PlayPause.js +2 -13
- package/dist/components/PreviewToolbar.js +1 -1
- package/dist/components/QuickSwitcher/QuickSwitcherContent.js +29 -15
- package/dist/components/QuickSwitcher/QuickSwitcherResult.d.ts +14 -1
- package/dist/components/QuickSwitcher/QuickSwitcherResult.js +64 -9
- package/dist/components/QuickSwitcher/composition-search.d.ts +16 -0
- package/dist/components/QuickSwitcher/composition-search.js +136 -0
- package/dist/components/ResetZoomButton.js +17 -2
- package/dist/components/SelectedOutlineElement.js +10 -30
- package/dist/components/Timeline/Timeline.js +2 -1
- package/dist/components/Timeline/TimelineAssetField.js +1 -0
- package/dist/components/Timeline/TimelineDeleteKeybindings.js +5 -90
- package/dist/components/Timeline/TimelineDragHandler.js +18 -8
- package/dist/components/Timeline/TimelineInOutDragHandler.js +2 -3
- package/dist/components/Timeline/TimelinePinchZoom.js +14 -4
- package/dist/components/Timeline/TimelinePlayCursorSyncer.js +8 -4
- package/dist/components/Timeline/TimelineSequence.js +16 -41
- package/dist/components/Timeline/TimelineSequenceItem.js +14 -35
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +3 -3
- package/dist/components/Timeline/TimelineSlider.js +2 -2
- package/dist/components/Timeline/TimelineWidthProvider.js +15 -8
- package/dist/components/Timeline/TimelineZoomControls.js +25 -8
- package/dist/components/Timeline/delete-selected-timeline-item.js +2 -2
- package/dist/components/Timeline/timeline-scroll-logic.d.ts +1 -0
- package/dist/components/Timeline/timeline-scroll-logic.js +21 -17
- package/dist/components/Timeline/use-delete-timeline-items.d.ts +1 -0
- package/dist/components/Timeline/use-delete-timeline-items.js +118 -0
- package/dist/components/Timeline/use-timeline-asset-drop.js +8 -14
- package/dist/components/WebMcp.js +61 -8
- package/dist/components/ZoomPersistor.js +2 -2
- package/dist/components/composition-drag-data.d.ts +36 -0
- package/dist/components/composition-drag-data.js +232 -0
- package/dist/components/drop-handler-data.d.ts +2 -1
- package/dist/components/drop-handler-data.js +6 -4
- package/dist/components/effect-drag-and-drop.d.ts +2 -5
- package/dist/components/handle-drop.js +6 -2
- package/dist/components/import-assets.d.ts +5 -13
- package/dist/error-overlay/current-error.d.ts +13 -0
- package/dist/error-overlay/current-error.js +21 -0
- package/dist/error-overlay/remotion-overlay/ErrorLoader.js +5 -1
- package/dist/esm/{chunk-1fkq5bfq.js → chunk-np6q13k5.js} +21571 -18952
- package/dist/esm/index.mjs +4 -1
- package/dist/esm/internals.mjs +17206 -14587
- package/dist/esm/previewEntry.mjs +19510 -16804
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/helpers/create-folder-tree.js +2 -5
- package/dist/helpers/document-title.d.ts +2 -0
- package/dist/helpers/document-title.js +14 -3
- package/dist/helpers/get-timeline-max-zoom.d.ts +34 -28
- package/dist/helpers/get-timeline-max-zoom.js +46 -29
- package/dist/helpers/install-fiber-sequence-order-observer.d.ts +37 -0
- package/dist/helpers/install-fiber-sequence-order-observer.js +109 -0
- package/dist/helpers/open-in-editor.js +2 -1
- package/dist/helpers/use-runtime-values.d.ts +1 -1
- package/dist/helpers/use-runtime-values.js +5 -4
- package/dist/helpers/use-sync-external-store.d.ts +3 -0
- package/dist/helpers/use-sync-external-store.js +5 -0
- package/dist/previewEntry.js +2 -0
- package/dist/state/modals.d.ts +18 -2
- package/dist/state/timeline-sequence-hover.js +3 -2
- package/dist/state/timeline-zoom.d.ts +0 -1
- package/dist/state/timeline-zoom.js +13 -6
- package/package.json +16 -16
- package/dist/helpers/sort-by-nonce-history.d.ts +0 -1
- package/dist/helpers/sort-by-nonce-history.js +0 -6
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.visualControl = void 0;
|
|
4
|
-
const react_1 = require("react");
|
|
5
4
|
const remotion_1 = require("remotion");
|
|
5
|
+
const use_sync_external_store_1 = require("../helpers/use-sync-external-store");
|
|
6
6
|
const visual_control_store_1 = require("../visual-controls/visual-control-store");
|
|
7
7
|
const VisualControls_1 = require("../visual-controls/VisualControls");
|
|
8
8
|
/**
|
|
@@ -12,7 +12,7 @@ const visualControl = (key, value, schema) => {
|
|
|
12
12
|
// Subscribe to store changes so the calling component
|
|
13
13
|
// re-renders when a visual control value is edited in the sidebar.
|
|
14
14
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
15
|
-
(0,
|
|
15
|
+
(0, use_sync_external_store_1.useSyncExternalStore)(visual_control_store_1.visualControlStore.subscribe, visual_control_store_1.visualControlStore.getSnapshot, visual_control_store_1.visualControlStore.getSnapshot);
|
|
16
16
|
if ((0, remotion_1.getRemotionEnvironment)().isRendering) {
|
|
17
17
|
return value;
|
|
18
18
|
}
|
|
@@ -39,6 +39,7 @@ const timeline_utils_1 = require("@remotion/timeline-utils");
|
|
|
39
39
|
const react_1 = __importStar(require("react"));
|
|
40
40
|
const remotion_1 = require("remotion");
|
|
41
41
|
const colors_1 = require("../helpers/colors");
|
|
42
|
+
const get_timeline_max_zoom_1 = require("../helpers/get-timeline-max-zoom");
|
|
42
43
|
const timeline_layout_1 = require("../helpers/timeline-layout");
|
|
43
44
|
const EMPTY_PEAKS = new Float32Array(0);
|
|
44
45
|
const getContainerStyle = (height) => {
|
|
@@ -74,6 +75,7 @@ const AudioWaveformInner = ({ src, height, startFrom, durationInFrames, displayO
|
|
|
74
75
|
if (vidConf === null) {
|
|
75
76
|
throw new Error('Expected video config');
|
|
76
77
|
}
|
|
78
|
+
const waveformSampleRate = Math.ceil(vidConf.fps * get_timeline_max_zoom_1.TIMELINE_FRAME_WIDTH_AT_MAX_ZOOM);
|
|
77
79
|
const waveformCanvas = (0, react_1.useRef)(null);
|
|
78
80
|
const volumeCanvas = (0, react_1.useRef)(null);
|
|
79
81
|
const shouldRenderVolumeOverlay = doesVolumeChange && typeof volume === 'string';
|
|
@@ -102,10 +104,11 @@ const AudioWaveformInner = ({ src, height, startFrom, durationInFrames, displayO
|
|
|
102
104
|
setError(null);
|
|
103
105
|
return (0, timeline_utils_1.subscribeToWaveformPeaks)({
|
|
104
106
|
src,
|
|
107
|
+
waveformSampleRate,
|
|
105
108
|
onPeaks: (p) => setPeaks(p),
|
|
106
109
|
onError: (err) => setError(err),
|
|
107
110
|
});
|
|
108
|
-
}, [src]);
|
|
111
|
+
}, [src, waveformSampleRate]);
|
|
109
112
|
const portionPeaks = (0, react_1.useMemo)(() => {
|
|
110
113
|
if (!peaks) {
|
|
111
114
|
return null;
|
|
@@ -119,6 +122,7 @@ const AudioWaveformInner = ({ src, height, startFrom, durationInFrames, displayO
|
|
|
119
122
|
peaks,
|
|
120
123
|
playbackRate,
|
|
121
124
|
startFrom,
|
|
125
|
+
waveformSampleRate,
|
|
122
126
|
});
|
|
123
127
|
}, [
|
|
124
128
|
displayDurationInFrames,
|
|
@@ -129,6 +133,7 @@ const AudioWaveformInner = ({ src, height, startFrom, durationInFrames, displayO
|
|
|
129
133
|
playbackRate,
|
|
130
134
|
startFrom,
|
|
131
135
|
vidConf.fps,
|
|
136
|
+
waveformSampleRate,
|
|
132
137
|
]);
|
|
133
138
|
// Drawing must happen in a layout effect: when the timeline zooms, the
|
|
134
139
|
// canvas CSS box resizes in the same commit, and painting the bitmap
|
|
@@ -29,6 +29,7 @@ const editor_zoom_gestures_1 = require("../state/editor-zoom-gestures");
|
|
|
29
29
|
const modals_1 = require("../state/modals");
|
|
30
30
|
const call_api_1 = require("./call-api");
|
|
31
31
|
const canvas_capture_drop_1 = require("./canvas-capture-drop");
|
|
32
|
+
const composition_drag_data_1 = require("./composition-drag-data");
|
|
32
33
|
const composition_drop_preview_1 = require("./composition-drop-preview");
|
|
33
34
|
const drop_handler_data_1 = require("./drop-handler-data");
|
|
34
35
|
const EditorGuides_1 = __importDefault(require("./EditorGuides"));
|
|
@@ -37,7 +38,6 @@ const use_is_ruler_visible_1 = require("./EditorRuler/use-is-ruler-visible");
|
|
|
37
38
|
const effect_drag_and_drop_1 = require("./effect-drag-and-drop");
|
|
38
39
|
const element_install_api_1 = require("./element-install-api");
|
|
39
40
|
const element_install_request_1 = require("./element-install-request");
|
|
40
|
-
const ElementInstallConfirmation_1 = require("./ElementInstallConfirmation");
|
|
41
41
|
const handle_drop_1 = require("./handle-drop");
|
|
42
42
|
const import_assets_1 = require("./import-assets");
|
|
43
43
|
const layout_1 = require("./layout");
|
|
@@ -48,6 +48,19 @@ const SvgImportDialog_1 = require("./SvgImportDialog");
|
|
|
48
48
|
const imperative_state_1 = require("./Timeline/imperative-state");
|
|
49
49
|
const use_resolved_stack_1 = require("./Timeline/use-resolved-stack");
|
|
50
50
|
const elementInstallDependencyIgnoreList = ['react', 'react-dom', 'remotion'];
|
|
51
|
+
const getCanvasDragPreviewMetadata = (mimeTypes) => {
|
|
52
|
+
var _a, _b, _c;
|
|
53
|
+
const composition = (0, composition_drag_data_1.getCompositionDragPreviewMetadata)(mimeTypes);
|
|
54
|
+
if (composition !== null) {
|
|
55
|
+
return {
|
|
56
|
+
...composition,
|
|
57
|
+
width: (_a = composition.width) !== null && _a !== void 0 ? _a : undefined,
|
|
58
|
+
height: (_b = composition.height) !== null && _b !== void 0 ? _b : undefined,
|
|
59
|
+
durationInFrames: (_c = composition.durationInFrames) !== null && _c !== void 0 ? _c : undefined,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return studio_protocol_1.StudioProtocolInternals.getDragPreviewMetadata(mimeTypes);
|
|
63
|
+
};
|
|
51
64
|
const getContainerStyle = (editorZoomGestures) => ({
|
|
52
65
|
flex: 1,
|
|
53
66
|
display: 'flex',
|
|
@@ -140,10 +153,8 @@ const Canvas = ({ canvasContent, size }) => {
|
|
|
140
153
|
: null;
|
|
141
154
|
const [isAddingAsset, setIsAddingAsset] = (0, react_1.useState)(false);
|
|
142
155
|
const [compositionDropPreview, setCompositionDropPreview] = (0, react_1.useState)(null);
|
|
143
|
-
const [installingElementName, setInstallingElementName] = (0, react_1.useState)(null);
|
|
144
156
|
const [pendingElementInstallRequests, setPendingElementInstallRequests] = (0, react_1.useState)([]);
|
|
145
157
|
const [activeElementInstallRequest, setActiveElementInstallRequest] = (0, react_1.useState)(null);
|
|
146
|
-
const [elementInstallReview, setElementInstallReview] = (0, react_1.useState)(null);
|
|
147
158
|
const lastFocusedAtRef = (0, react_1.useRef)(typeof document === 'undefined' || document.hasFocus() ? Date.now() : null);
|
|
148
159
|
const [assetResolution, setAssetResolution] = (0, react_1.useState)(null);
|
|
149
160
|
const metadataRequestRef = (0, react_1.useRef)(0);
|
|
@@ -601,16 +612,6 @@ const Canvas = ({ canvasContent, size }) => {
|
|
|
601
612
|
updateElementInstallTarget(event.requestId);
|
|
602
613
|
});
|
|
603
614
|
}, [subscribeToEvent, updateElementInstallTarget]);
|
|
604
|
-
(0, react_1.useEffect)(() => {
|
|
605
|
-
if (installingElementName === null) {
|
|
606
|
-
return;
|
|
607
|
-
}
|
|
608
|
-
const previousTitle = document.title;
|
|
609
|
-
document.title = `📦 Install ${installingElementName} - Remotion Studio`;
|
|
610
|
-
return () => {
|
|
611
|
-
document.title = previousTitle;
|
|
612
|
-
};
|
|
613
|
-
}, [installingElementName]);
|
|
614
615
|
(0, react_1.useEffect)(() => {
|
|
615
616
|
if (previewServerClientId === null) {
|
|
616
617
|
return;
|
|
@@ -680,6 +681,10 @@ const Canvas = ({ canvasContent, size }) => {
|
|
|
680
681
|
setActiveElementInstallRequest(nextRequest);
|
|
681
682
|
setPendingElementInstallRequests(remainingRequests);
|
|
682
683
|
}, [activeElementInstallRequest, pendingElementInstallRequests]);
|
|
684
|
+
const closeElementInstallDialog = (0, react_1.useCallback)(() => {
|
|
685
|
+
setSelectedModal(null);
|
|
686
|
+
setActiveElementInstallRequest(null);
|
|
687
|
+
}, [setSelectedModal]);
|
|
683
688
|
(0, react_1.useEffect)(() => {
|
|
684
689
|
if (activeElementInstallRequest === null) {
|
|
685
690
|
return;
|
|
@@ -687,7 +692,6 @@ const Canvas = ({ canvasContent, size }) => {
|
|
|
687
692
|
let canceled = false;
|
|
688
693
|
const handleInstallRequest = async () => {
|
|
689
694
|
var _a;
|
|
690
|
-
setInstallingElementName(activeElementInstallRequest.element.displayName);
|
|
691
695
|
try {
|
|
692
696
|
const [newPreflight, currentPreflight] = await Promise.all([
|
|
693
697
|
(0, element_install_api_1.prepareElementInstall)({
|
|
@@ -711,7 +715,6 @@ const Canvas = ({ canvasContent, size }) => {
|
|
|
711
715
|
}
|
|
712
716
|
if (!newPreflight.success) {
|
|
713
717
|
(0, NotificationCenter_1.showNotification)(`Could not review Element installation: ${newPreflight.reason}`, 4000);
|
|
714
|
-
setInstallingElementName(null);
|
|
715
718
|
setActiveElementInstallRequest(null);
|
|
716
719
|
return;
|
|
717
720
|
}
|
|
@@ -735,12 +738,14 @@ const Canvas = ({ canvasContent, size }) => {
|
|
|
735
738
|
const currentPlan = currentPreflight.success
|
|
736
739
|
? currentPreflight.plan
|
|
737
740
|
: null;
|
|
738
|
-
setSelectedModal(
|
|
739
|
-
|
|
741
|
+
setSelectedModal({
|
|
742
|
+
type: 'element-install',
|
|
740
743
|
currentPlan,
|
|
741
744
|
dependenciesToReview,
|
|
742
745
|
missingPackages,
|
|
743
746
|
newPlan: newPreflight.plan,
|
|
747
|
+
onClose: closeElementInstallDialog,
|
|
748
|
+
request: activeElementInstallRequest,
|
|
744
749
|
sourceIsUnverified,
|
|
745
750
|
sourceLabel,
|
|
746
751
|
});
|
|
@@ -750,7 +755,6 @@ const Canvas = ({ canvasContent, size }) => {
|
|
|
750
755
|
return;
|
|
751
756
|
}
|
|
752
757
|
(0, NotificationCenter_1.showNotification)(`Could not review Element installation: ${error instanceof Error ? error.message : String(error)}`, 4000);
|
|
753
|
-
setInstallingElementName(null);
|
|
754
758
|
setActiveElementInstallRequest(null);
|
|
755
759
|
}
|
|
756
760
|
};
|
|
@@ -758,12 +762,11 @@ const Canvas = ({ canvasContent, size }) => {
|
|
|
758
762
|
return () => {
|
|
759
763
|
canceled = true;
|
|
760
764
|
};
|
|
761
|
-
}, [
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
}, []);
|
|
765
|
+
}, [
|
|
766
|
+
activeElementInstallRequest,
|
|
767
|
+
closeElementInstallDialog,
|
|
768
|
+
setSelectedModal,
|
|
769
|
+
]);
|
|
767
770
|
const onDragOver = (0, react_1.useCallback)((event) => {
|
|
768
771
|
var _a;
|
|
769
772
|
var _b;
|
|
@@ -787,7 +790,7 @@ const Canvas = ({ canvasContent, size }) => {
|
|
|
787
790
|
setCompositionDropPreview(null);
|
|
788
791
|
return;
|
|
789
792
|
}
|
|
790
|
-
const metadata =
|
|
793
|
+
const metadata = getCanvasDragPreviewMetadata((_b = (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.types) !== null && _b !== void 0 ? _b : []);
|
|
791
794
|
if (((metadata === null || metadata === void 0 ? void 0 : metadata.type) !== 'composition' && (metadata === null || metadata === void 0 ? void 0 : metadata.type) !== 'element') ||
|
|
792
795
|
metadata.width === undefined ||
|
|
793
796
|
metadata.height === undefined) {
|
|
@@ -918,7 +921,7 @@ const Canvas = ({ canvasContent, size }) => {
|
|
|
918
921
|
event.stopPropagation();
|
|
919
922
|
setIsAddingAsset(true);
|
|
920
923
|
try {
|
|
921
|
-
const metadata =
|
|
924
|
+
const metadata = getCanvasDragPreviewMetadata((_d = (_b = event.dataTransfer) === null || _b === void 0 ? void 0 : _b.types) !== null && _d !== void 0 ? _d : []);
|
|
922
925
|
const isComposition = (metadata === null || metadata === void 0 ? void 0 : metadata.type) === 'composition';
|
|
923
926
|
let dropPosition = getDropPosition({
|
|
924
927
|
addFitPadding,
|
|
@@ -1122,15 +1125,6 @@ const Canvas = ({ canvasContent, size }) => {
|
|
|
1122
1125
|
};
|
|
1123
1126
|
}, [compositionDropPreview, contentDimensions, previewSize, size]);
|
|
1124
1127
|
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
1125
|
-
jsx_runtime_1.jsxs("div", { ref: canvas_ref_1.canvasRef, style: getContainerStyle(editorZoomGestures), children: [size ? (jsx_runtime_1.jsx(Preview_1.VideoPreview, { canvasContent: canvasContent, contentDimensions: contentDimensions, canvasSize: size, assetMetadata: assetResolution, onRetryAssetMetadata: fetchMetadata })) : null, compositionDropPreviewStyle === null ? null : (jsx_runtime_1.jsx("div", { className: "css-reset", "data-testid": "composition-drop-preview", style: compositionDropPreviewStyle })), isFit ? null : (jsx_runtime_1.jsx("div", { style: resetZoom, className: "css-reset", children: jsx_runtime_1.jsx(ResetZoomButton_1.ResetZoomButton, { onClick: onReset }) })), editorShowGuides && canvasContent.type === 'composition' && (jsx_runtime_1.jsx(EditorGuides_1.default, { canvasSize: size, contentDimensions: contentDimensions, assetMetadata: assetResolution }))] }), areRulersVisible && (jsx_runtime_1.jsx(EditorRuler_1.EditorRulers, { canCreateGuides: canvasContent.type === 'composition', contentDimensions: contentDimensions, canvasSize: size, assetMetadata: assetResolution, containerRef: canvas_ref_1.canvasRef }))
|
|
1126
|
-
elementInstallReview === null ? null : (jsx_runtime_1.jsx(ElementInstallConfirmation_1.ElementInstallConfirmation, { currentCompositionMetadata: config === null ||
|
|
1127
|
-
currentCompositionId !== activeElementInstallRequest.compositionId
|
|
1128
|
-
? null
|
|
1129
|
-
: {
|
|
1130
|
-
durationInFrames: config.durationInFrames,
|
|
1131
|
-
fps: config.fps,
|
|
1132
|
-
height: config.height,
|
|
1133
|
-
width: config.width,
|
|
1134
|
-
}, currentPlan: elementInstallReview.currentPlan, dependenciesToReview: elementInstallReview.dependenciesToReview, missingPackages: elementInstallReview.missingPackages, newPlan: elementInstallReview.newPlan, onClose: closeElementInstallDialog, request: activeElementInstallRequest, sourceIsUnverified: elementInstallReview.sourceIsUnverified, sourceLabel: elementInstallReview.sourceLabel, usesBrowserDependencyResolution: (0, browser_studio_operations_1.getBrowserStudioOperations)() !== null }))] }));
|
|
1128
|
+
jsx_runtime_1.jsxs("div", { ref: canvas_ref_1.canvasRef, style: getContainerStyle(editorZoomGestures), children: [size ? (jsx_runtime_1.jsx(Preview_1.VideoPreview, { canvasContent: canvasContent, contentDimensions: contentDimensions, canvasSize: size, assetMetadata: assetResolution, onRetryAssetMetadata: fetchMetadata })) : null, compositionDropPreviewStyle === null ? null : (jsx_runtime_1.jsx("div", { className: "css-reset", "data-testid": "composition-drop-preview", style: compositionDropPreviewStyle })), isFit ? null : (jsx_runtime_1.jsx("div", { style: resetZoom, className: "css-reset", children: jsx_runtime_1.jsx(ResetZoomButton_1.ResetZoomButton, { onClick: onReset }) })), editorShowGuides && canvasContent.type === 'composition' && (jsx_runtime_1.jsx(EditorGuides_1.default, { canvasSize: size, contentDimensions: contentDimensions, assetMetadata: assetResolution }))] }), areRulersVisible && (jsx_runtime_1.jsx(EditorRuler_1.EditorRulers, { canCreateGuides: canvasContent.type === 'composition', contentDimensions: contentDimensions, canvasSize: size, assetMetadata: assetResolution, containerRef: canvas_ref_1.canvasRef }))] }));
|
|
1135
1129
|
};
|
|
1136
1130
|
exports.Canvas = Canvas;
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CompositionSelector = exports.useCompositionNavigation = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
const studio_protocol_1 = require("@remotion/studio-protocol");
|
|
6
|
-
const studio_shared_1 = require("@remotion/studio-shared");
|
|
7
5
|
const react_1 = require("react");
|
|
8
6
|
const remotion_1 = require("remotion");
|
|
9
7
|
const client_id_1 = require("../helpers/client-id");
|
|
@@ -13,6 +11,7 @@ const persist_open_folders_1 = require("../helpers/persist-open-folders");
|
|
|
13
11
|
const folders_1 = require("../state/folders");
|
|
14
12
|
const modals_1 = require("../state/modals");
|
|
15
13
|
const z_index_1 = require("../state/z-index");
|
|
14
|
+
const composition_drag_data_1 = require("./composition-drag-data");
|
|
16
15
|
const CompositionSelectorItem_1 = require("./CompositionSelectorItem");
|
|
17
16
|
const ContextMenu_1 = require("./ContextMenu");
|
|
18
17
|
const InitialCompositionLoader_1 = require("./InitialCompositionLoader");
|
|
@@ -166,9 +165,8 @@ const CompositionSelector = () => {
|
|
|
166
165
|
}
|
|
167
166
|
}, [runCompositionListAutoScroll, stopCompositionListAutoScroll]);
|
|
168
167
|
const onCompositionListDragOverCapture = (0, react_1.useCallback)((event) => {
|
|
169
|
-
var _a;
|
|
170
168
|
if (window.remotion_isReadOnlyStudio ||
|
|
171
|
-
(
|
|
169
|
+
(0, composition_drag_data_1.getCompositionDragPreviewMetadata)(event.dataTransfer.types) === null) {
|
|
172
170
|
stopCompositionListAutoScroll();
|
|
173
171
|
return;
|
|
174
172
|
}
|
|
@@ -183,9 +181,8 @@ const CompositionSelector = () => {
|
|
|
183
181
|
return stopCompositionListAutoScroll;
|
|
184
182
|
}, [stopCompositionListAutoScroll]);
|
|
185
183
|
const onRootDragOver = (0, react_1.useCallback)((event) => {
|
|
186
|
-
var _a;
|
|
187
184
|
if (window.remotion_isReadOnlyStudio ||
|
|
188
|
-
(
|
|
185
|
+
(0, composition_drag_data_1.getCompositionDragPreviewMetadata)(event.dataTransfer.types) === null) {
|
|
189
186
|
return;
|
|
190
187
|
}
|
|
191
188
|
event.preventDefault();
|
|
@@ -205,11 +202,10 @@ const CompositionSelector = () => {
|
|
|
205
202
|
if (window.remotion_isReadOnlyStudio) {
|
|
206
203
|
return;
|
|
207
204
|
}
|
|
208
|
-
const
|
|
209
|
-
if (
|
|
205
|
+
const compositionDragData = (0, composition_drag_data_1.parseCompositionDragData)(event.dataTransfer);
|
|
206
|
+
if (compositionDragData === null) {
|
|
210
207
|
return;
|
|
211
208
|
}
|
|
212
|
-
const compositionDragData = parsed.data;
|
|
213
209
|
event.preventDefault();
|
|
214
210
|
event.stopPropagation();
|
|
215
211
|
stopCompositionListAutoScroll();
|
|
@@ -230,7 +226,7 @@ const CompositionSelector = () => {
|
|
|
230
226
|
},
|
|
231
227
|
dryRun: false,
|
|
232
228
|
signal: controller.signal,
|
|
233
|
-
symbolicatedStack: (0,
|
|
229
|
+
symbolicatedStack: (0, composition_drag_data_1.compositionDragDataToSymbolicatedStack)(compositionDragData),
|
|
234
230
|
});
|
|
235
231
|
if (result.success) {
|
|
236
232
|
notification.dismiss();
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CompositionSelectorItem = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
const studio_protocol_1 = require("@remotion/studio-protocol");
|
|
6
|
-
const studio_shared_1 = require("@remotion/studio-shared");
|
|
7
5
|
const react_1 = require("react");
|
|
8
6
|
const client_id_1 = require("../helpers/client-id");
|
|
9
7
|
const colors_1 = require("../helpers/colors");
|
|
@@ -12,6 +10,7 @@ const noop_1 = require("../helpers/noop");
|
|
|
12
10
|
const sidebar_scroll_into_view_1 = require("../helpers/sidebar-scroll-into-view");
|
|
13
11
|
const folder_1 = require("../icons/folder");
|
|
14
12
|
const modals_1 = require("../state/modals");
|
|
13
|
+
const composition_drag_data_1 = require("./composition-drag-data");
|
|
15
14
|
const composition_menu_items_1 = require("./composition-menu-items");
|
|
16
15
|
const CompositionContextButton_1 = require("./CompositionContextButton");
|
|
17
16
|
const CompositionOrStillIcon_1 = require("./CompositionOrStillIcon");
|
|
@@ -155,8 +154,7 @@ const CompositionSelectorItem = ({ item, level, currentComposition, tabIndex, se
|
|
|
155
154
|
}
|
|
156
155
|
setIsDragging(true);
|
|
157
156
|
event.dataTransfer.effectAllowed = 'copyMove';
|
|
158
|
-
const dragData =
|
|
159
|
-
type: 'composition',
|
|
157
|
+
const dragData = (0, composition_drag_data_1.makeCompositionDragData)({
|
|
160
158
|
compositionFile: (_a = resolvedLocation === null || resolvedLocation === void 0 ? void 0 : resolvedLocation.source) !== null && _a !== void 0 ? _a : null,
|
|
161
159
|
compositionId: item.composition.id,
|
|
162
160
|
width: (_b = item.composition.width) !== null && _b !== void 0 ? _b : null,
|
|
@@ -169,10 +167,9 @@ const CompositionSelectorItem = ({ item, level, currentComposition, tabIndex, se
|
|
|
169
167
|
setIsDragging(false);
|
|
170
168
|
}, []);
|
|
171
169
|
const onFolderDragOver = (0, react_1.useCallback)((event) => {
|
|
172
|
-
var _a;
|
|
173
170
|
if (item.type !== 'folder' ||
|
|
174
171
|
window.remotion_isReadOnlyStudio ||
|
|
175
|
-
(
|
|
172
|
+
(0, composition_drag_data_1.getCompositionDragPreviewMetadata)(event.dataTransfer.types) === null) {
|
|
176
173
|
return;
|
|
177
174
|
}
|
|
178
175
|
event.preventDefault();
|
|
@@ -185,10 +182,9 @@ const CompositionSelectorItem = ({ item, level, currentComposition, tabIndex, se
|
|
|
185
182
|
setDragHovered(false);
|
|
186
183
|
}, []);
|
|
187
184
|
const onFolderChildListDragOver = (0, react_1.useCallback)((event) => {
|
|
188
|
-
var _a;
|
|
189
185
|
if (item.type !== 'folder' ||
|
|
190
186
|
window.remotion_isReadOnlyStudio ||
|
|
191
|
-
(
|
|
187
|
+
(0, composition_drag_data_1.getCompositionDragPreviewMetadata)(event.dataTransfer.types) === null) {
|
|
192
188
|
return;
|
|
193
189
|
}
|
|
194
190
|
event.preventDefault();
|
|
@@ -200,11 +196,10 @@ const CompositionSelectorItem = ({ item, level, currentComposition, tabIndex, se
|
|
|
200
196
|
if (item.type !== 'folder' || window.remotion_isReadOnlyStudio) {
|
|
201
197
|
return;
|
|
202
198
|
}
|
|
203
|
-
const
|
|
204
|
-
if (
|
|
199
|
+
const compositionDragData = (0, composition_drag_data_1.parseCompositionDragData)(event.dataTransfer);
|
|
200
|
+
if (compositionDragData === null) {
|
|
205
201
|
return;
|
|
206
202
|
}
|
|
207
|
-
const compositionDragData = parsed.data;
|
|
208
203
|
event.preventDefault();
|
|
209
204
|
event.stopPropagation();
|
|
210
205
|
clearRootDragHover();
|
|
@@ -228,7 +223,7 @@ const CompositionSelectorItem = ({ item, level, currentComposition, tabIndex, se
|
|
|
228
223
|
},
|
|
229
224
|
dryRun: false,
|
|
230
225
|
signal: controller.signal,
|
|
231
|
-
symbolicatedStack: (0,
|
|
226
|
+
symbolicatedStack: (0, composition_drag_data_1.compositionDragDataToSymbolicatedStack)(compositionDragData),
|
|
232
227
|
});
|
|
233
228
|
if (result.success) {
|
|
234
229
|
notification.dismiss();
|
|
@@ -4,10 +4,12 @@ exports.TitleUpdater = void 0;
|
|
|
4
4
|
const react_1 = require("react");
|
|
5
5
|
const remotion_1 = require("remotion");
|
|
6
6
|
const document_title_1 = require("../helpers/document-title");
|
|
7
|
+
const modals_1 = require("../state/modals");
|
|
7
8
|
const context_1 = require("./RenderQueue/context");
|
|
8
9
|
const TitleUpdater = () => {
|
|
9
10
|
const renderQueue = (0, react_1.useContext)(context_1.RenderQueueContext);
|
|
10
11
|
const { canvasContent } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
|
|
12
|
+
const selectedModal = (0, react_1.useContext)(modals_1.SelectedModalContext);
|
|
11
13
|
const { jobs } = renderQueue;
|
|
12
14
|
(0, react_1.useEffect)(() => {
|
|
13
15
|
if (!canvasContent) {
|
|
@@ -31,6 +33,9 @@ const TitleUpdater = () => {
|
|
|
31
33
|
(0, react_1.useEffect)(() => {
|
|
32
34
|
(0, document_title_1.setRenderJobs)(jobs);
|
|
33
35
|
}, [jobs]);
|
|
36
|
+
(0, react_1.useEffect)(() => {
|
|
37
|
+
(0, document_title_1.setCurrentModal)(selectedModal);
|
|
38
|
+
}, [selectedModal]);
|
|
34
39
|
return null;
|
|
35
40
|
};
|
|
36
41
|
exports.TitleUpdater = TitleUpdater;
|
|
@@ -1,31 +1,10 @@
|
|
|
1
|
-
import type { ElementInstallExpectedFileState, ElementInstallRequest } from '@remotion/studio-shared';
|
|
2
1
|
import React from 'react';
|
|
2
|
+
import type { ElementInstallModalState } from '../state/modals';
|
|
3
3
|
export declare const ElementLibraryAddConfirmation: React.FC<{
|
|
4
4
|
readonly displayName: string | null;
|
|
5
5
|
readonly origin: string;
|
|
6
6
|
readonly url: string;
|
|
7
7
|
}>;
|
|
8
|
-
type ElementInstallPlan = {
|
|
9
|
-
readonly compositionFile: string;
|
|
10
|
-
readonly filePath: string;
|
|
11
|
-
readonly expectedFileState: ElementInstallExpectedFileState;
|
|
12
|
-
};
|
|
13
|
-
type CurrentCompositionMetadata = {
|
|
14
|
-
readonly durationInFrames: number;
|
|
15
|
-
readonly fps: number;
|
|
16
|
-
readonly height: number;
|
|
17
|
-
readonly width: number;
|
|
18
|
-
};
|
|
19
8
|
export declare const ElementInstallConfirmation: React.FC<{
|
|
20
|
-
readonly
|
|
21
|
-
readonly currentPlan: ElementInstallPlan | null;
|
|
22
|
-
readonly dependenciesToReview: string[];
|
|
23
|
-
readonly missingPackages: string[];
|
|
24
|
-
readonly newPlan: ElementInstallPlan;
|
|
25
|
-
readonly onClose: () => void;
|
|
26
|
-
readonly request: ElementInstallRequest;
|
|
27
|
-
readonly sourceIsUnverified: boolean;
|
|
28
|
-
readonly sourceLabel: string;
|
|
29
|
-
readonly usesBrowserDependencyResolution: boolean;
|
|
9
|
+
readonly state: ElementInstallModalState;
|
|
30
10
|
}>;
|
|
31
|
-
export {};
|
|
@@ -7,6 +7,7 @@ const react_1 = require("react");
|
|
|
7
7
|
const react_dom_1 = require("react-dom");
|
|
8
8
|
const remotion_1 = require("remotion");
|
|
9
9
|
const ShortcutHint_1 = require("../error-overlay/remotion-overlay/ShortcutHint");
|
|
10
|
+
const browser_studio_operations_1 = require("../helpers/browser-studio-operations");
|
|
10
11
|
const colors_1 = require("../helpers/colors");
|
|
11
12
|
const hoverable_1 = require("../helpers/hoverable");
|
|
12
13
|
const resolved_stack_to_symbolicated_1 = require("../helpers/resolved-stack-to-symbolicated");
|
|
@@ -262,9 +263,22 @@ const ElementLibraryAddConfirmation = ({ displayName, origin, url }) => {
|
|
|
262
263
|
] }));
|
|
263
264
|
};
|
|
264
265
|
exports.ElementLibraryAddConfirmation = ElementLibraryAddConfirmation;
|
|
265
|
-
const ElementInstallConfirmation = ({
|
|
266
|
+
const ElementInstallConfirmation = ({ state }) => {
|
|
266
267
|
var _a, _b;
|
|
267
|
-
const {
|
|
268
|
+
const { currentPlan, dependenciesToReview, missingPackages, newPlan, onClose, request, sourceIsUnverified, sourceLabel, } = state;
|
|
269
|
+
const config = remotion_1.Internals.useUnsafeVideoConfig();
|
|
270
|
+
const { canvasContent, compositions } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
|
|
271
|
+
const currentCompositionMetadata = config === null ||
|
|
272
|
+
(canvasContent === null || canvasContent === void 0 ? void 0 : canvasContent.type) !== 'composition' ||
|
|
273
|
+
canvasContent.compositionId !== request.compositionId
|
|
274
|
+
? null
|
|
275
|
+
: {
|
|
276
|
+
durationInFrames: config.durationInFrames,
|
|
277
|
+
fps: config.fps,
|
|
278
|
+
height: config.height,
|
|
279
|
+
width: config.width,
|
|
280
|
+
};
|
|
281
|
+
const usesBrowserDependencyResolution = (0, browser_studio_operations_1.getBrowserStudioOperations)() !== null;
|
|
268
282
|
const { currentZIndex } = (0, z_index_1.useZIndex)();
|
|
269
283
|
const [mode, setMode] = (0, react_1.useState)(currentPlan === null ? 'new-composition' : 'current-composition');
|
|
270
284
|
const [submitting, setSubmitting] = (0, react_1.useState)(false);
|
|
@@ -17,7 +17,7 @@ const pushWithMaxSize = (arr, value, maxSize) => {
|
|
|
17
17
|
};
|
|
18
18
|
const FpsCounter = ({ playbackSpeed }) => {
|
|
19
19
|
const videoConfig = remotion_1.Internals.useUnsafeVideoConfig();
|
|
20
|
-
const
|
|
20
|
+
const playing = remotion_1.Internals.usePlaying();
|
|
21
21
|
const frame = remotion_1.Internals.Timeline.useTimelinePosition();
|
|
22
22
|
const [marker, rerender] = (0, react_1.useState)({});
|
|
23
23
|
const [fps, setFps] = (0, react_1.useState)(0);
|
|
@@ -4,7 +4,7 @@ exports.FramePersistor = void 0;
|
|
|
4
4
|
const react_1 = require("react");
|
|
5
5
|
const remotion_1 = require("remotion");
|
|
6
6
|
const FramePersistor = () => {
|
|
7
|
-
const
|
|
7
|
+
const playing = remotion_1.Internals.usePlaying();
|
|
8
8
|
const config = (0, remotion_1.useVideoConfig)();
|
|
9
9
|
const frame = remotion_1.Internals.Timeline.useTimelinePosition();
|
|
10
10
|
const setFrame = remotion_1.Internals.useTimelineSetFrame();
|
|
@@ -16,10 +16,10 @@ const InspectorSequenceSection_1 = require("../InspectorSequenceSection");
|
|
|
16
16
|
const is_menu_item_1 = require("../Menu/is-menu-item");
|
|
17
17
|
const NotificationCenter_1 = require("../Notifications/NotificationCenter");
|
|
18
18
|
const split_video_from_audio_api_1 = require("../split-video-from-audio-api");
|
|
19
|
-
const delete_selected_timeline_item_1 = require("../Timeline/delete-selected-timeline-item");
|
|
20
19
|
const duplicate_selected_timeline_item_1 = require("../Timeline/duplicate-selected-timeline-item");
|
|
21
20
|
const split_selected_timeline_item_1 = require("../Timeline/split-selected-timeline-item");
|
|
22
21
|
const TimelineSelection_1 = require("../Timeline/TimelineSelection");
|
|
22
|
+
const use_delete_timeline_items_1 = require("../Timeline/use-delete-timeline-items");
|
|
23
23
|
const use_sequence_freeze_frame_menu_item_1 = require("../Timeline/use-sequence-freeze-frame-menu-item");
|
|
24
24
|
const AlignmentControls_1 = require("./AlignmentControls");
|
|
25
25
|
const common_1 = require("./common");
|
|
@@ -74,6 +74,7 @@ const SequenceSourceQuickActions = ({ selection, track, validatedSource }) => {
|
|
|
74
74
|
const { propStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
|
|
75
75
|
const { setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
76
76
|
const confirm = (0, ConfirmationDialog_1.useConfirmationDialog)();
|
|
77
|
+
const deleteTimelineItems = (0, use_delete_timeline_items_1.useDeleteTimelineItems)();
|
|
77
78
|
const propStatusesForOverride = (0, react_1.useMemo)(() => remotion_1.Internals.getPropStatusesCtx(propStatuses, selection.nodePathInfo.sequenceSubscriptionKey), [propStatuses, selection.nodePathInfo.sequenceSubscriptionKey]);
|
|
78
79
|
const freezeFrameMenuItem = (0, use_sequence_freeze_frame_menu_item_1.getSequenceFreezeFrameMenuItem)({
|
|
79
80
|
clientId: previewServerState.type === 'connected' && (0, interactivity_enabled_1.isStudioInteractivityEnabled)()
|
|
@@ -98,8 +99,8 @@ const SequenceSourceQuickActions = ({ selection, track, validatedSource }) => {
|
|
|
98
99
|
if (sourceActionsDisabled) {
|
|
99
100
|
return;
|
|
100
101
|
}
|
|
101
|
-
(
|
|
102
|
-
}, [
|
|
102
|
+
deleteTimelineItems([selection]);
|
|
103
|
+
}, [deleteTimelineItems, selection, sourceActionsDisabled]);
|
|
103
104
|
const splitVideoFromAudioDisabledReason = sourceActionsDisabled
|
|
104
105
|
? 'Studio is read-only'
|
|
105
106
|
: selection.nodePathInfo.numberOfSequencesWithThisNodePath > 1
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useCompositionActions = void 0;
|
|
4
|
-
const studio_protocol_1 = require("@remotion/studio-protocol");
|
|
5
4
|
const react_1 = require("react");
|
|
6
5
|
const remotion_1 = require("remotion");
|
|
7
6
|
const browser_studio_operations_1 = require("../../helpers/browser-studio-operations");
|
|
@@ -173,7 +172,7 @@ const useCompositionActions = () => {
|
|
|
173
172
|
});
|
|
174
173
|
}, [canInsertAsset, onAssetSelected, onFilesSelected, setSelectedModal]);
|
|
175
174
|
const onCompositionSelected = (0, react_1.useCallback)(async (composition) => {
|
|
176
|
-
var _a, _b
|
|
175
|
+
var _a, _b;
|
|
177
176
|
if (!canInsertComposition ||
|
|
178
177
|
currentCompositionId === null ||
|
|
179
178
|
compositionFile === null) {
|
|
@@ -185,14 +184,12 @@ const useCompositionActions = () => {
|
|
|
185
184
|
? await (0, get_stack_1.getOriginalLocationFromStack)(composition.stack, 'sequence')
|
|
186
185
|
: null;
|
|
187
186
|
const selectedCompositionFile = (_b = (_a = resolvedLocation === null || resolvedLocation === void 0 ? void 0 : resolvedLocation.source) !== null && _a !== void 0 ? _a : browserStudioOperations === null || browserStudioOperations === void 0 ? void 0 : browserStudioOperations.getCompositionFile(composition.id)) !== null && _b !== void 0 ? _b : null;
|
|
188
|
-
const compositionDragData =
|
|
189
|
-
type: 'composition',
|
|
187
|
+
const compositionDragData = {
|
|
188
|
+
type: 'remotion-composition',
|
|
189
|
+
version: 1,
|
|
190
190
|
compositionFile: selectedCompositionFile,
|
|
191
191
|
compositionId: composition.id,
|
|
192
|
-
|
|
193
|
-
height: (_d = composition.height) !== null && _d !== void 0 ? _d : null,
|
|
194
|
-
durationInFrames: (_e = composition.durationInFrames) !== null && _e !== void 0 ? _e : null,
|
|
195
|
-
}).data;
|
|
192
|
+
};
|
|
196
193
|
await (0, import_assets_1.insertComposition)({
|
|
197
194
|
composition: compositionDragData,
|
|
198
195
|
compositionFile,
|
|
@@ -107,6 +107,6 @@ const Modals = ({ readOnlyStudio }) => {
|
|
|
107
107
|
modalContextType.initialTab === 'packages' ||
|
|
108
108
|
modalContextType.initialTab === 'shortcuts') ? (jsx_runtime_1.jsx(SettingsModal_1.SettingsModal, { initialTab: modalContextType.initialTab, initialPublicLicenseKey: modalContextType.initialPublicLicenseKey }, `${modalContextType.initialTab}-${modalContextType.initialPublicLicenseKey}`)) : null, modalContextType && modalContextType.type === 'web-render' && (jsx_runtime_1.jsx(WebRenderModal_1.WebRenderModalWithLoader, { ...modalContextType })), modalContextType &&
|
|
109
109
|
modalContextType.type === 'server-render' &&
|
|
110
|
-
(canRender || modalContextType.readOnlyStudio) ? (jsx_runtime_1.jsx(ServerRenderModal_1.RenderModalWithLoader, { readOnlyStudio: (_a = modalContextType.readOnlyStudio) !== null && _a !== void 0 ? _a : false, initialFrame: modalContextType.initialFrame, initialDarkMode: modalContextType.initialDarkMode, compositionId: modalContextType.compositionId, initialVideoImageFormat: modalContextType.initialVideoImageFormat, initialJpegQuality: modalContextType.initialJpegQuality, initialScale: modalContextType.initialScale, initialLogLevel: modalContextType.initialLogLevel, initialOffthreadVideoCacheSizeInBytes: modalContextType.initialOffthreadVideoCacheSizeInBytes, initialOffthreadVideoThreads: modalContextType.initialOffthreadVideoThreads, initialMediaCacheSizeInBytes: modalContextType.initialMediaCacheSizeInBytes, initialConcurrency: modalContextType.initialConcurrency, maxConcurrency: modalContextType.maxConcurrency, minConcurrency: modalContextType.minConcurrency, initialStillImageFormat: modalContextType.initialStillImageFormat, initialMuted: modalContextType.initialMuted, initialEnforceAudioTrack: modalContextType.initialEnforceAudioTrack, initialProResProfile: modalContextType.initialProResProfile, initialx264Preset: modalContextType.initialx264Preset, initialGopSize: modalContextType.initialGopSize, initialPixelFormat: modalContextType.initialPixelFormat, initialAudioBitrate: modalContextType.initialAudioBitrate, initialVideoBitrate: modalContextType.initialVideoBitrate, initialEveryNthFrame: modalContextType.initialEveryNthFrame, initialNumberOfGifLoops: modalContextType.initialNumberOfGifLoops, initialDelayRenderTimeout: modalContextType.initialDelayRenderTimeout, initialEnvVariables: modalContextType.initialEnvVariables, initialDisableWebSecurity: modalContextType.initialDisableWebSecurity, initialGl: modalContextType.initialOpenGlRenderer, initialHeadless: modalContextType.initialHeadless, initialIgnoreCertificateErrors: modalContextType.initialIgnoreCertificateErrors, initialEncodingBufferSize: modalContextType.initialEncodingBufferSize, initialEncodingMaxRate: modalContextType.initialEncodingMaxRate, initialUserAgent: modalContextType.initialUserAgent, initialColorSpace: modalContextType.initialColorSpace, initialMultiProcessOnLinux: modalContextType.initialMultiProcessOnLinux, initialRepro: modalContextType.initialRepro, initialBeep: modalContextType.initialBeep, initialForSeamlessAacConcatenation: modalContextType.initialForSeamlessAacConcatenation, defaultProps: modalContextType.defaultProps, inFrameMark: modalContextType.inFrameMark, outFrameMark: modalContextType.outFrameMark, defaultConfigurationAudioCodec: modalContextType.defaultConfigurationAudioCodec, defaultConfigurationVideoCodec: modalContextType.defaultConfigurationVideoCodec, renderTypeOfLastRender: modalContextType.renderTypeOfLastRender, defaultMetadata: modalContextType.defaulMetadata, initialHardwareAcceleration: modalContextType.initialHardwareAcceleration, initialSampleRate: modalContextType.initialSampleRate, initialChromeMode: modalContextType.initialChromeMode, renderDefaults: modalContextType.renderDefaults })) : null, modalContextType && modalContextType.type === 'render-progress' && (jsx_runtime_1.jsx(RenderStatusModal_1.RenderStatusModal, { jobId: modalContextType.jobId })), modalContextType && modalContextType.type === 'fix-computed-value' && (jsx_runtime_1.jsx(FixComputedValueModal_1.FixComputedValueModal, { state: modalContextType })), modalContextType && modalContextType.type === 'quick-switcher' && (jsx_runtime_1.jsx(QuickSwitcher_1.default, { readOnlyStudio: readOnlyStudio, invocationTimestamp: modalContextType.invocationTimestamp, initialMode: modalContextType.mode, assetSelection: modalContextType.assetSelection, compositionSelection: modalContextType.compositionSelection })), modalContextType && modalContextType.type === 'element-library' && (jsx_runtime_1.jsx(ElementLibraryModal_1.ElementLibraryModal, { name: modalContextType.name, url: modalContextType.url })), modalContextType && modalContextType.type === 'add-effect' && (jsx_runtime_1.jsx(EffectPickerModal_1.EffectPickerModal, { state: modalContextType })), modalContextType && modalContextType.type === 'confirmation-dialog' && (jsx_runtime_1.jsx(ConfirmationDialog_1.ConfirmationDialog, { state: modalContextType })), modalContextType && modalContextType.type === 'svg-import-dialog' && (jsx_runtime_1.jsx(SvgImportDialog_1.SvgImportDialog, { state: modalContextType })), (0, studio_runtime_config_1.getStudioAskAIEnabled)() && jsx_runtime_1.jsx(AskAiModal_1.AskAiModal, {})] }));
|
|
110
|
+
(canRender || modalContextType.readOnlyStudio) ? (jsx_runtime_1.jsx(ServerRenderModal_1.RenderModalWithLoader, { readOnlyStudio: (_a = modalContextType.readOnlyStudio) !== null && _a !== void 0 ? _a : false, initialFrame: modalContextType.initialFrame, initialDarkMode: modalContextType.initialDarkMode, compositionId: modalContextType.compositionId, initialVideoImageFormat: modalContextType.initialVideoImageFormat, initialJpegQuality: modalContextType.initialJpegQuality, initialScale: modalContextType.initialScale, initialLogLevel: modalContextType.initialLogLevel, initialOffthreadVideoCacheSizeInBytes: modalContextType.initialOffthreadVideoCacheSizeInBytes, initialOffthreadVideoThreads: modalContextType.initialOffthreadVideoThreads, initialMediaCacheSizeInBytes: modalContextType.initialMediaCacheSizeInBytes, initialConcurrency: modalContextType.initialConcurrency, maxConcurrency: modalContextType.maxConcurrency, minConcurrency: modalContextType.minConcurrency, initialStillImageFormat: modalContextType.initialStillImageFormat, initialMuted: modalContextType.initialMuted, initialEnforceAudioTrack: modalContextType.initialEnforceAudioTrack, initialProResProfile: modalContextType.initialProResProfile, initialx264Preset: modalContextType.initialx264Preset, initialGopSize: modalContextType.initialGopSize, initialPixelFormat: modalContextType.initialPixelFormat, initialAudioBitrate: modalContextType.initialAudioBitrate, initialVideoBitrate: modalContextType.initialVideoBitrate, initialEveryNthFrame: modalContextType.initialEveryNthFrame, initialNumberOfGifLoops: modalContextType.initialNumberOfGifLoops, initialDelayRenderTimeout: modalContextType.initialDelayRenderTimeout, initialEnvVariables: modalContextType.initialEnvVariables, initialDisableWebSecurity: modalContextType.initialDisableWebSecurity, initialGl: modalContextType.initialOpenGlRenderer, initialHeadless: modalContextType.initialHeadless, initialIgnoreCertificateErrors: modalContextType.initialIgnoreCertificateErrors, initialEncodingBufferSize: modalContextType.initialEncodingBufferSize, initialEncodingMaxRate: modalContextType.initialEncodingMaxRate, initialUserAgent: modalContextType.initialUserAgent, initialColorSpace: modalContextType.initialColorSpace, initialMultiProcessOnLinux: modalContextType.initialMultiProcessOnLinux, initialRepro: modalContextType.initialRepro, initialBeep: modalContextType.initialBeep, initialForSeamlessAacConcatenation: modalContextType.initialForSeamlessAacConcatenation, defaultProps: modalContextType.defaultProps, inFrameMark: modalContextType.inFrameMark, outFrameMark: modalContextType.outFrameMark, defaultConfigurationAudioCodec: modalContextType.defaultConfigurationAudioCodec, defaultConfigurationVideoCodec: modalContextType.defaultConfigurationVideoCodec, renderTypeOfLastRender: modalContextType.renderTypeOfLastRender, defaultMetadata: modalContextType.defaulMetadata, initialHardwareAcceleration: modalContextType.initialHardwareAcceleration, initialSampleRate: modalContextType.initialSampleRate, initialChromeMode: modalContextType.initialChromeMode, renderDefaults: modalContextType.renderDefaults })) : null, modalContextType && modalContextType.type === 'render-progress' && (jsx_runtime_1.jsx(RenderStatusModal_1.RenderStatusModal, { jobId: modalContextType.jobId })), modalContextType && modalContextType.type === 'fix-computed-value' && (jsx_runtime_1.jsx(FixComputedValueModal_1.FixComputedValueModal, { state: modalContextType })), modalContextType && modalContextType.type === 'quick-switcher' && (jsx_runtime_1.jsx(QuickSwitcher_1.default, { readOnlyStudio: readOnlyStudio, invocationTimestamp: modalContextType.invocationTimestamp, initialMode: modalContextType.mode, assetSelection: modalContextType.assetSelection, compositionSelection: modalContextType.compositionSelection })), modalContextType && modalContextType.type === 'element-library' && (jsx_runtime_1.jsx(ElementLibraryModal_1.ElementLibraryModal, { name: modalContextType.name, url: modalContextType.url })), modalContextType && modalContextType.type === 'element-install' && (jsx_runtime_1.jsx(ElementInstallConfirmation_1.ElementInstallConfirmation, { state: modalContextType })), modalContextType && modalContextType.type === 'add-effect' && (jsx_runtime_1.jsx(EffectPickerModal_1.EffectPickerModal, { state: modalContextType })), modalContextType && modalContextType.type === 'confirmation-dialog' && (jsx_runtime_1.jsx(ConfirmationDialog_1.ConfirmationDialog, { state: modalContextType })), modalContextType && modalContextType.type === 'svg-import-dialog' && (jsx_runtime_1.jsx(SvgImportDialog_1.SvgImportDialog, { state: modalContextType })), (0, studio_runtime_config_1.getStudioAskAIEnabled)() && jsx_runtime_1.jsx(AskAiModal_1.AskAiModal, {})] }));
|
|
111
111
|
};
|
|
112
112
|
exports.Modals = Modals;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NewComposition = exports.NewCompositionFields = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const canvas_1 = require("@remotion/canvas");
|
|
5
6
|
const react_1 = require("react");
|
|
6
7
|
const remotion_1 = require("remotion");
|
|
7
8
|
const get_static_files_1 = require("../../api/get-static-files");
|
|
@@ -9,7 +10,6 @@ const write_static_file_1 = require("../../api/write-static-file");
|
|
|
9
10
|
const colors_1 = require("../../helpers/colors");
|
|
10
11
|
const get_folder_id_1 = require("../../helpers/get-folder-id");
|
|
11
12
|
const install_required_package_1 = require("../../helpers/install-required-package");
|
|
12
|
-
const sort_by_nonce_history_1 = require("../../helpers/sort-by-nonce-history");
|
|
13
13
|
const use_create_composition_1 = require("../../helpers/use-create-composition");
|
|
14
14
|
const Checkmark_1 = require("../../icons/Checkmark");
|
|
15
15
|
const folder_1 = require("../../icons/folder");
|
|
@@ -83,7 +83,7 @@ const NewCompositionFields = ({ heightValidationMessage, inputRef, nameValidatio
|
|
|
83
83
|
? folders
|
|
84
84
|
.slice()
|
|
85
85
|
.sort((a, b) => a.name.localeCompare(b.name, undefined, { numeric: true }))
|
|
86
|
-
: (0,
|
|
86
|
+
: (0, canvas_1.sortItemsByCommitOrder)(folders, (folder) => folder.order);
|
|
87
87
|
const appendFolders = (parent) => {
|
|
88
88
|
sortedFolders
|
|
89
89
|
.filter((folder) => folder.parent === parent)
|
|
@@ -79,19 +79,8 @@ const PlayPauseInner = ({ playbackRate, loop, bufferStateDelayInMilliseconds, mu
|
|
|
79
79
|
const { inFrame, outFrame } = (0, in_out_1.useTimelineInOutFramePosition)();
|
|
80
80
|
const videoConfig = remotion_1.Internals.useUnsafeVideoConfig();
|
|
81
81
|
const [showBufferIndicator, setShowBufferState] = (0, react_1.useState)(false);
|
|
82
|
-
const { play, pause, pauseAndReturnToPlayStart, frameBack, seek, frameForward, emitter, getCurrentFrame,
|
|
83
|
-
const
|
|
84
|
-
(0, react_1.useEffect)(() => {
|
|
85
|
-
const onPlay = () => setPlaying(true);
|
|
86
|
-
const onPause = () => setPlaying(false);
|
|
87
|
-
setPlaying(isPlaying());
|
|
88
|
-
emitter.addEventListener('play', onPlay);
|
|
89
|
-
emitter.addEventListener('pause', onPause);
|
|
90
|
-
return () => {
|
|
91
|
-
emitter.removeEventListener('play', onPlay);
|
|
92
|
-
emitter.removeEventListener('pause', onPause);
|
|
93
|
-
};
|
|
94
|
-
}, [emitter, isPlaying]);
|
|
82
|
+
const { play, pause, pauseAndReturnToPlayStart, frameBack, seek, frameForward, emitter, getCurrentFrame, } = player_1.PlayerInternals.usePlayerMethods();
|
|
83
|
+
const playing = remotion_1.Internals.usePlaying();
|
|
95
84
|
const isStill = (0, is_current_selected_still_1.useIsStill)();
|
|
96
85
|
(0, react_1.useEffect)(() => {
|
|
97
86
|
if (isStill) {
|