@remotion/studio 4.0.376 → 4.0.377
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/components/Modals.js +1 -1
- package/dist/components/RenderModal/WebRenderModal.js +25 -14
- package/dist/components/WebRender/TriggerWebRender.js +12 -1
- package/dist/esm/chunk-2ez05n0k.js +51223 -0
- package/dist/esm/chunk-3g5wg04y.js +51226 -0
- package/dist/esm/chunk-77y8pms8.js +51225 -0
- package/dist/esm/chunk-7tgz2zqw.js +51225 -0
- package/dist/esm/chunk-8jyxeyas.js +51222 -0
- package/dist/esm/chunk-b1p07732.js +51226 -0
- package/dist/esm/chunk-cyhf8qzy.js +51193 -0
- package/dist/esm/chunk-mg5dh9jk.js +51233 -0
- package/dist/esm/chunk-n343yf9m.js +51223 -0
- package/dist/esm/chunk-py0a10ah.js +51234 -0
- package/dist/esm/chunk-t7jt8rdr.js +51225 -0
- package/dist/esm/chunk-vwn455kj.js +51226 -0
- package/dist/esm/chunk-vyzynf0q.js +51221 -0
- package/dist/esm/chunk-w8g9jsxa.js +51223 -0
- package/dist/esm/chunk-x5sy3ah8.js +51215 -0
- package/dist/esm/chunk-z8h3dxed.js +51225 -0
- package/dist/esm/chunk-zz78szv1.js +51224 -0
- package/dist/esm/internals.mjs +72 -50
- package/dist/esm/previewEntry.mjs +72 -50
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/state/modals.d.ts +2 -0
- package/package.json +9 -9
package/dist/esm/internals.mjs
CHANGED
|
@@ -17956,6 +17956,7 @@ var label8 = {
|
|
|
17956
17956
|
var TriggerWebRender = () => {
|
|
17957
17957
|
const video = Internals44.useVideo();
|
|
17958
17958
|
const getCurrentFrame2 = PlayerInternals15.useFrameImperative();
|
|
17959
|
+
const { inFrame, outFrame } = useTimelineInOutFramePosition();
|
|
17959
17960
|
const { setSelectedModal } = useContext53(ModalsContext);
|
|
17960
17961
|
const onClick = useCallback89(() => {
|
|
17961
17962
|
if (!video?.id) {
|
|
@@ -17966,9 +17967,18 @@ var TriggerWebRender = () => {
|
|
|
17966
17967
|
type: "web-render",
|
|
17967
17968
|
initialFrame: frame2,
|
|
17968
17969
|
compositionId: video.id,
|
|
17969
|
-
defaultProps: video.defaultProps
|
|
17970
|
+
defaultProps: video.defaultProps,
|
|
17971
|
+
inFrameMark: inFrame,
|
|
17972
|
+
outFrameMark: outFrame
|
|
17970
17973
|
});
|
|
17971
|
-
}, [
|
|
17974
|
+
}, [
|
|
17975
|
+
getCurrentFrame2,
|
|
17976
|
+
inFrame,
|
|
17977
|
+
outFrame,
|
|
17978
|
+
setSelectedModal,
|
|
17979
|
+
video?.defaultProps,
|
|
17980
|
+
video?.id
|
|
17981
|
+
]);
|
|
17972
17982
|
if (!video) {
|
|
17973
17983
|
return null;
|
|
17974
17984
|
}
|
|
@@ -48683,41 +48693,31 @@ var calculateTransforms = (element) => {
|
|
|
48683
48693
|
nativeTransformOrigin
|
|
48684
48694
|
};
|
|
48685
48695
|
};
|
|
48686
|
-
var
|
|
48687
|
-
const { totalMatrix, reset, dimensions, nativeTransformOrigin } = calculateTransforms(canvas);
|
|
48688
|
-
const translateX = nativeTransformOrigin.x + dimensions.left;
|
|
48689
|
-
const translateY = nativeTransformOrigin.y + dimensions.top;
|
|
48690
|
-
const matrix = new DOMMatrix().translate(translateX, translateY).multiply(totalMatrix).translate(-translateX, -translateY);
|
|
48691
|
-
context.setTransform(matrix);
|
|
48692
|
-
context.drawImage(canvas, dimensions.left, dimensions.top, dimensions.width, dimensions.height);
|
|
48693
|
-
context.setTransform(new DOMMatrix);
|
|
48694
|
-
reset();
|
|
48695
|
-
};
|
|
48696
|
-
var svgToImageBitmap = (svg) => {
|
|
48697
|
-
const {
|
|
48698
|
-
dimensions: svgDimensions,
|
|
48699
|
-
totalMatrix,
|
|
48700
|
-
reset
|
|
48701
|
-
} = calculateTransforms(svg);
|
|
48696
|
+
var turnSvgIntoDrawable = (svg) => {
|
|
48702
48697
|
const originalTransform = svg.style.transform;
|
|
48703
48698
|
const originalTransformOrigin = svg.style.transformOrigin;
|
|
48704
|
-
svg.style.
|
|
48705
|
-
svg.style.
|
|
48699
|
+
const originalMarginLeft = svg.style.marginLeft;
|
|
48700
|
+
const originalMarginRight = svg.style.marginRight;
|
|
48701
|
+
const originalMarginTop = svg.style.marginTop;
|
|
48702
|
+
const originalMarginBottom = svg.style.marginBottom;
|
|
48703
|
+
svg.style.transform = "none";
|
|
48704
|
+
svg.style.transformOrigin = "";
|
|
48705
|
+
svg.style.marginLeft = "0";
|
|
48706
|
+
svg.style.marginRight = "0";
|
|
48707
|
+
svg.style.marginTop = "0";
|
|
48708
|
+
svg.style.marginBottom = "0";
|
|
48706
48709
|
const svgData = new XMLSerializer().serializeToString(svg);
|
|
48710
|
+
svg.style.marginLeft = originalMarginLeft;
|
|
48711
|
+
svg.style.marginRight = originalMarginRight;
|
|
48712
|
+
svg.style.marginTop = originalMarginTop;
|
|
48713
|
+
svg.style.marginBottom = originalMarginBottom;
|
|
48707
48714
|
svg.style.transform = originalTransform;
|
|
48708
48715
|
svg.style.transformOrigin = originalTransformOrigin;
|
|
48709
|
-
reset();
|
|
48710
48716
|
return new Promise((resolve, reject) => {
|
|
48711
|
-
const image = new Image
|
|
48717
|
+
const image = new Image;
|
|
48712
48718
|
const url2 = `data:image/svg+xml;base64,${btoa(svgData)}`;
|
|
48713
48719
|
image.onload = function() {
|
|
48714
|
-
resolve(
|
|
48715
|
-
image,
|
|
48716
|
-
width: svgDimensions.width,
|
|
48717
|
-
height: svgDimensions.height,
|
|
48718
|
-
left: svgDimensions.left,
|
|
48719
|
-
top: svgDimensions.top
|
|
48720
|
-
});
|
|
48720
|
+
resolve(image);
|
|
48721
48721
|
};
|
|
48722
48722
|
image.onerror = () => {
|
|
48723
48723
|
reject(new Error("Failed to convert SVG to image"));
|
|
@@ -48725,6 +48725,17 @@ var svgToImageBitmap = (svg) => {
|
|
|
48725
48725
|
image.src = url2;
|
|
48726
48726
|
});
|
|
48727
48727
|
};
|
|
48728
|
+
var composeCanvas = async (canvas, context) => {
|
|
48729
|
+
const { totalMatrix, reset, dimensions } = calculateTransforms(canvas);
|
|
48730
|
+
const translateX = dimensions.left + dimensions.width / 2;
|
|
48731
|
+
const translateY = dimensions.top + dimensions.height / 2;
|
|
48732
|
+
const matrix = new DOMMatrix().translate(translateX, translateY).multiply(totalMatrix).translate(-translateX, -translateY);
|
|
48733
|
+
context.setTransform(matrix);
|
|
48734
|
+
const drawable = canvas instanceof SVGSVGElement ? await turnSvgIntoDrawable(canvas) : canvas;
|
|
48735
|
+
context.drawImage(drawable, dimensions.left, dimensions.top, dimensions.width, dimensions.height);
|
|
48736
|
+
context.setTransform(new DOMMatrix);
|
|
48737
|
+
reset();
|
|
48738
|
+
};
|
|
48728
48739
|
var compose = async ({
|
|
48729
48740
|
composables,
|
|
48730
48741
|
width: width2,
|
|
@@ -48736,14 +48747,7 @@ var compose = async ({
|
|
|
48736
48747
|
throw new Error("Could not get context");
|
|
48737
48748
|
}
|
|
48738
48749
|
for (const composable of composables) {
|
|
48739
|
-
|
|
48740
|
-
composeCanvas(composable.element, context);
|
|
48741
|
-
} else if (composable.type === "svg") {
|
|
48742
|
-
const imageBitmap = await svgToImageBitmap(composable.element);
|
|
48743
|
-
if (imageBitmap) {
|
|
48744
|
-
context.drawImage(imageBitmap.image, imageBitmap.left, imageBitmap.top, imageBitmap.width, imageBitmap.height);
|
|
48745
|
-
}
|
|
48746
|
-
}
|
|
48750
|
+
await composeCanvas(composable.element, context);
|
|
48747
48751
|
}
|
|
48748
48752
|
return canvas;
|
|
48749
48753
|
};
|
|
@@ -49760,7 +49764,9 @@ var validateOutnameForStill = ({
|
|
|
49760
49764
|
};
|
|
49761
49765
|
var WebRenderModal = ({
|
|
49762
49766
|
initialFrame,
|
|
49763
|
-
defaultProps
|
|
49767
|
+
defaultProps,
|
|
49768
|
+
inFrameMark,
|
|
49769
|
+
outFrameMark
|
|
49764
49770
|
}) => {
|
|
49765
49771
|
const context = useContext83(ResolvedCompositionContext);
|
|
49766
49772
|
if (!context) {
|
|
@@ -49784,10 +49790,28 @@ var WebRenderModal = ({
|
|
|
49784
49790
|
const [videoBitrate, setVideoBitrate] = useState81("high");
|
|
49785
49791
|
const [hardwareAcceleration, setHardwareAcceleration] = useState81("no-preference");
|
|
49786
49792
|
const [keyframeIntervalInSeconds, setKeyframeIntervalInSeconds] = useState81(5);
|
|
49787
|
-
const [startFrame, setStartFrame] = useState81(null);
|
|
49788
|
-
const [endFrame, setEndFrame] = useState81(null);
|
|
49793
|
+
const [startFrame, setStartFrame] = useState81(() => inFrameMark ?? null);
|
|
49794
|
+
const [endFrame, setEndFrame] = useState81(() => outFrameMark ?? null);
|
|
49789
49795
|
const [renderProgress, setRenderProgress] = useState81(null);
|
|
49790
49796
|
const [transparent, setTransparent] = useState81(false);
|
|
49797
|
+
const finalEndFrame = useMemo132(() => {
|
|
49798
|
+
if (endFrame === null) {
|
|
49799
|
+
return resolvedComposition.durationInFrames - 1;
|
|
49800
|
+
}
|
|
49801
|
+
return Math.max(0, Math.min(resolvedComposition.durationInFrames - 1, endFrame));
|
|
49802
|
+
}, [endFrame, resolvedComposition.durationInFrames]);
|
|
49803
|
+
const finalStartFrame = useMemo132(() => {
|
|
49804
|
+
if (startFrame === null) {
|
|
49805
|
+
return 0;
|
|
49806
|
+
}
|
|
49807
|
+
return Math.max(0, Math.min(finalEndFrame, startFrame));
|
|
49808
|
+
}, [finalEndFrame, startFrame]);
|
|
49809
|
+
const frameRange = useMemo132(() => {
|
|
49810
|
+
if (startFrame === null && endFrame === null) {
|
|
49811
|
+
return null;
|
|
49812
|
+
}
|
|
49813
|
+
return [finalStartFrame, finalEndFrame];
|
|
49814
|
+
}, [endFrame, finalEndFrame, finalStartFrame, startFrame]);
|
|
49791
49815
|
const [initialOutName] = useState81(() => {
|
|
49792
49816
|
return getDefaultOutLocation2({
|
|
49793
49817
|
compositionName: resolvedComposition.id,
|
|
@@ -49968,10 +49992,7 @@ var WebRenderModal = ({
|
|
|
49968
49992
|
videoBitrate,
|
|
49969
49993
|
hardwareAcceleration,
|
|
49970
49994
|
keyframeIntervalInSeconds,
|
|
49971
|
-
frameRange
|
|
49972
|
-
startFrame ?? 0,
|
|
49973
|
-
endFrame ?? resolvedComposition.durationInFrames - 1
|
|
49974
|
-
] : null,
|
|
49995
|
+
frameRange,
|
|
49975
49996
|
onProgress: (progress) => {
|
|
49976
49997
|
setRenderProgress(progress);
|
|
49977
49998
|
},
|
|
@@ -49999,8 +50020,7 @@ var WebRenderModal = ({
|
|
|
49999
50020
|
videoBitrate,
|
|
50000
50021
|
hardwareAcceleration,
|
|
50001
50022
|
keyframeIntervalInSeconds,
|
|
50002
|
-
|
|
50003
|
-
endFrame,
|
|
50023
|
+
frameRange,
|
|
50004
50024
|
resolvedComposition.durationInFrames,
|
|
50005
50025
|
resolvedComposition.width,
|
|
50006
50026
|
resolvedComposition.height,
|
|
@@ -50040,7 +50060,7 @@ var WebRenderModal = ({
|
|
|
50040
50060
|
style: buttonStyle7,
|
|
50041
50061
|
disabled: !outnameValidation.valid,
|
|
50042
50062
|
children: [
|
|
50043
|
-
renderProgress ? `Rendering... ${renderProgress.renderedFrames}/${
|
|
50063
|
+
renderProgress ? `Rendering... ${renderProgress.renderedFrames}/${finalEndFrame}` : `Render ${renderMode}`,
|
|
50044
50064
|
/* @__PURE__ */ jsx263(ShortcutHint, {
|
|
50045
50065
|
keyToPress: "↵",
|
|
50046
50066
|
cmdOrCtrl: true
|
|
@@ -50128,9 +50148,9 @@ var WebRenderModal = ({
|
|
|
50128
50148
|
setContainerFormat,
|
|
50129
50149
|
codec,
|
|
50130
50150
|
setCodec,
|
|
50131
|
-
startFrame,
|
|
50151
|
+
startFrame: finalStartFrame,
|
|
50132
50152
|
setStartFrame,
|
|
50133
|
-
endFrame,
|
|
50153
|
+
endFrame: finalEndFrame,
|
|
50134
50154
|
setEndFrame,
|
|
50135
50155
|
outName,
|
|
50136
50156
|
onOutNameChange,
|
|
@@ -50482,7 +50502,9 @@ var Modals = ({ readOnlyStudio }) => {
|
|
|
50482
50502
|
type: "web-render",
|
|
50483
50503
|
initialFrame: modalContextType.initialFrame,
|
|
50484
50504
|
compositionId: modalContextType.compositionId,
|
|
50485
|
-
defaultProps: modalContextType.defaultProps
|
|
50505
|
+
defaultProps: modalContextType.defaultProps,
|
|
50506
|
+
inFrameMark: modalContextType.inFrameMark,
|
|
50507
|
+
outFrameMark: modalContextType.outFrameMark
|
|
50486
50508
|
}),
|
|
50487
50509
|
modalContextType && canRender && modalContextType.type === "server-render" && /* @__PURE__ */ jsx268(RenderModalWithLoader, {
|
|
50488
50510
|
initialFrame: modalContextType.initialFrame,
|
|
@@ -18236,6 +18236,7 @@ var label8 = {
|
|
|
18236
18236
|
var TriggerWebRender = () => {
|
|
18237
18237
|
const video = Internals44.useVideo();
|
|
18238
18238
|
const getCurrentFrame2 = PlayerInternals15.useFrameImperative();
|
|
18239
|
+
const { inFrame, outFrame } = useTimelineInOutFramePosition();
|
|
18239
18240
|
const { setSelectedModal } = useContext53(ModalsContext);
|
|
18240
18241
|
const onClick = useCallback90(() => {
|
|
18241
18242
|
if (!video?.id) {
|
|
@@ -18246,9 +18247,18 @@ var TriggerWebRender = () => {
|
|
|
18246
18247
|
type: "web-render",
|
|
18247
18248
|
initialFrame: frame2,
|
|
18248
18249
|
compositionId: video.id,
|
|
18249
|
-
defaultProps: video.defaultProps
|
|
18250
|
+
defaultProps: video.defaultProps,
|
|
18251
|
+
inFrameMark: inFrame,
|
|
18252
|
+
outFrameMark: outFrame
|
|
18250
18253
|
});
|
|
18251
|
-
}, [
|
|
18254
|
+
}, [
|
|
18255
|
+
getCurrentFrame2,
|
|
18256
|
+
inFrame,
|
|
18257
|
+
outFrame,
|
|
18258
|
+
setSelectedModal,
|
|
18259
|
+
video?.defaultProps,
|
|
18260
|
+
video?.id
|
|
18261
|
+
]);
|
|
18252
18262
|
if (!video) {
|
|
18253
18263
|
return null;
|
|
18254
18264
|
}
|
|
@@ -48963,41 +48973,31 @@ var calculateTransforms = (element) => {
|
|
|
48963
48973
|
nativeTransformOrigin
|
|
48964
48974
|
};
|
|
48965
48975
|
};
|
|
48966
|
-
var
|
|
48967
|
-
const { totalMatrix, reset, dimensions, nativeTransformOrigin } = calculateTransforms(canvas);
|
|
48968
|
-
const translateX = nativeTransformOrigin.x + dimensions.left;
|
|
48969
|
-
const translateY = nativeTransformOrigin.y + dimensions.top;
|
|
48970
|
-
const matrix = new DOMMatrix().translate(translateX, translateY).multiply(totalMatrix).translate(-translateX, -translateY);
|
|
48971
|
-
context.setTransform(matrix);
|
|
48972
|
-
context.drawImage(canvas, dimensions.left, dimensions.top, dimensions.width, dimensions.height);
|
|
48973
|
-
context.setTransform(new DOMMatrix);
|
|
48974
|
-
reset();
|
|
48975
|
-
};
|
|
48976
|
-
var svgToImageBitmap = (svg) => {
|
|
48977
|
-
const {
|
|
48978
|
-
dimensions: svgDimensions,
|
|
48979
|
-
totalMatrix,
|
|
48980
|
-
reset
|
|
48981
|
-
} = calculateTransforms(svg);
|
|
48976
|
+
var turnSvgIntoDrawable = (svg) => {
|
|
48982
48977
|
const originalTransform = svg.style.transform;
|
|
48983
48978
|
const originalTransformOrigin = svg.style.transformOrigin;
|
|
48984
|
-
svg.style.
|
|
48985
|
-
svg.style.
|
|
48979
|
+
const originalMarginLeft = svg.style.marginLeft;
|
|
48980
|
+
const originalMarginRight = svg.style.marginRight;
|
|
48981
|
+
const originalMarginTop = svg.style.marginTop;
|
|
48982
|
+
const originalMarginBottom = svg.style.marginBottom;
|
|
48983
|
+
svg.style.transform = "none";
|
|
48984
|
+
svg.style.transformOrigin = "";
|
|
48985
|
+
svg.style.marginLeft = "0";
|
|
48986
|
+
svg.style.marginRight = "0";
|
|
48987
|
+
svg.style.marginTop = "0";
|
|
48988
|
+
svg.style.marginBottom = "0";
|
|
48986
48989
|
const svgData = new XMLSerializer().serializeToString(svg);
|
|
48990
|
+
svg.style.marginLeft = originalMarginLeft;
|
|
48991
|
+
svg.style.marginRight = originalMarginRight;
|
|
48992
|
+
svg.style.marginTop = originalMarginTop;
|
|
48993
|
+
svg.style.marginBottom = originalMarginBottom;
|
|
48987
48994
|
svg.style.transform = originalTransform;
|
|
48988
48995
|
svg.style.transformOrigin = originalTransformOrigin;
|
|
48989
|
-
reset();
|
|
48990
48996
|
return new Promise((resolve, reject) => {
|
|
48991
|
-
const image = new Image
|
|
48997
|
+
const image = new Image;
|
|
48992
48998
|
const url2 = `data:image/svg+xml;base64,${btoa(svgData)}`;
|
|
48993
48999
|
image.onload = function() {
|
|
48994
|
-
resolve(
|
|
48995
|
-
image,
|
|
48996
|
-
width: svgDimensions.width,
|
|
48997
|
-
height: svgDimensions.height,
|
|
48998
|
-
left: svgDimensions.left,
|
|
48999
|
-
top: svgDimensions.top
|
|
49000
|
-
});
|
|
49000
|
+
resolve(image);
|
|
49001
49001
|
};
|
|
49002
49002
|
image.onerror = () => {
|
|
49003
49003
|
reject(new Error("Failed to convert SVG to image"));
|
|
@@ -49005,6 +49005,17 @@ var svgToImageBitmap = (svg) => {
|
|
|
49005
49005
|
image.src = url2;
|
|
49006
49006
|
});
|
|
49007
49007
|
};
|
|
49008
|
+
var composeCanvas = async (canvas, context) => {
|
|
49009
|
+
const { totalMatrix, reset, dimensions } = calculateTransforms(canvas);
|
|
49010
|
+
const translateX = dimensions.left + dimensions.width / 2;
|
|
49011
|
+
const translateY = dimensions.top + dimensions.height / 2;
|
|
49012
|
+
const matrix = new DOMMatrix().translate(translateX, translateY).multiply(totalMatrix).translate(-translateX, -translateY);
|
|
49013
|
+
context.setTransform(matrix);
|
|
49014
|
+
const drawable = canvas instanceof SVGSVGElement ? await turnSvgIntoDrawable(canvas) : canvas;
|
|
49015
|
+
context.drawImage(drawable, dimensions.left, dimensions.top, dimensions.width, dimensions.height);
|
|
49016
|
+
context.setTransform(new DOMMatrix);
|
|
49017
|
+
reset();
|
|
49018
|
+
};
|
|
49008
49019
|
var compose = async ({
|
|
49009
49020
|
composables,
|
|
49010
49021
|
width: width2,
|
|
@@ -49016,14 +49027,7 @@ var compose = async ({
|
|
|
49016
49027
|
throw new Error("Could not get context");
|
|
49017
49028
|
}
|
|
49018
49029
|
for (const composable of composables) {
|
|
49019
|
-
|
|
49020
|
-
composeCanvas(composable.element, context);
|
|
49021
|
-
} else if (composable.type === "svg") {
|
|
49022
|
-
const imageBitmap = await svgToImageBitmap(composable.element);
|
|
49023
|
-
if (imageBitmap) {
|
|
49024
|
-
context.drawImage(imageBitmap.image, imageBitmap.left, imageBitmap.top, imageBitmap.width, imageBitmap.height);
|
|
49025
|
-
}
|
|
49026
|
-
}
|
|
49030
|
+
await composeCanvas(composable.element, context);
|
|
49027
49031
|
}
|
|
49028
49032
|
return canvas;
|
|
49029
49033
|
};
|
|
@@ -50040,7 +50044,9 @@ var validateOutnameForStill = ({
|
|
|
50040
50044
|
};
|
|
50041
50045
|
var WebRenderModal = ({
|
|
50042
50046
|
initialFrame,
|
|
50043
|
-
defaultProps
|
|
50047
|
+
defaultProps,
|
|
50048
|
+
inFrameMark,
|
|
50049
|
+
outFrameMark
|
|
50044
50050
|
}) => {
|
|
50045
50051
|
const context = useContext83(ResolvedCompositionContext);
|
|
50046
50052
|
if (!context) {
|
|
@@ -50064,10 +50070,28 @@ var WebRenderModal = ({
|
|
|
50064
50070
|
const [videoBitrate, setVideoBitrate] = useState82("high");
|
|
50065
50071
|
const [hardwareAcceleration, setHardwareAcceleration] = useState82("no-preference");
|
|
50066
50072
|
const [keyframeIntervalInSeconds, setKeyframeIntervalInSeconds] = useState82(5);
|
|
50067
|
-
const [startFrame, setStartFrame] = useState82(null);
|
|
50068
|
-
const [endFrame, setEndFrame] = useState82(null);
|
|
50073
|
+
const [startFrame, setStartFrame] = useState82(() => inFrameMark ?? null);
|
|
50074
|
+
const [endFrame, setEndFrame] = useState82(() => outFrameMark ?? null);
|
|
50069
50075
|
const [renderProgress, setRenderProgress] = useState82(null);
|
|
50070
50076
|
const [transparent, setTransparent] = useState82(false);
|
|
50077
|
+
const finalEndFrame = useMemo132(() => {
|
|
50078
|
+
if (endFrame === null) {
|
|
50079
|
+
return resolvedComposition.durationInFrames - 1;
|
|
50080
|
+
}
|
|
50081
|
+
return Math.max(0, Math.min(resolvedComposition.durationInFrames - 1, endFrame));
|
|
50082
|
+
}, [endFrame, resolvedComposition.durationInFrames]);
|
|
50083
|
+
const finalStartFrame = useMemo132(() => {
|
|
50084
|
+
if (startFrame === null) {
|
|
50085
|
+
return 0;
|
|
50086
|
+
}
|
|
50087
|
+
return Math.max(0, Math.min(finalEndFrame, startFrame));
|
|
50088
|
+
}, [finalEndFrame, startFrame]);
|
|
50089
|
+
const frameRange = useMemo132(() => {
|
|
50090
|
+
if (startFrame === null && endFrame === null) {
|
|
50091
|
+
return null;
|
|
50092
|
+
}
|
|
50093
|
+
return [finalStartFrame, finalEndFrame];
|
|
50094
|
+
}, [endFrame, finalEndFrame, finalStartFrame, startFrame]);
|
|
50071
50095
|
const [initialOutName] = useState82(() => {
|
|
50072
50096
|
return getDefaultOutLocation2({
|
|
50073
50097
|
compositionName: resolvedComposition.id,
|
|
@@ -50248,10 +50272,7 @@ var WebRenderModal = ({
|
|
|
50248
50272
|
videoBitrate,
|
|
50249
50273
|
hardwareAcceleration,
|
|
50250
50274
|
keyframeIntervalInSeconds,
|
|
50251
|
-
frameRange
|
|
50252
|
-
startFrame ?? 0,
|
|
50253
|
-
endFrame ?? resolvedComposition.durationInFrames - 1
|
|
50254
|
-
] : null,
|
|
50275
|
+
frameRange,
|
|
50255
50276
|
onProgress: (progress) => {
|
|
50256
50277
|
setRenderProgress(progress);
|
|
50257
50278
|
},
|
|
@@ -50279,8 +50300,7 @@ var WebRenderModal = ({
|
|
|
50279
50300
|
videoBitrate,
|
|
50280
50301
|
hardwareAcceleration,
|
|
50281
50302
|
keyframeIntervalInSeconds,
|
|
50282
|
-
|
|
50283
|
-
endFrame,
|
|
50303
|
+
frameRange,
|
|
50284
50304
|
resolvedComposition.durationInFrames,
|
|
50285
50305
|
resolvedComposition.width,
|
|
50286
50306
|
resolvedComposition.height,
|
|
@@ -50320,7 +50340,7 @@ var WebRenderModal = ({
|
|
|
50320
50340
|
style: buttonStyle7,
|
|
50321
50341
|
disabled: !outnameValidation.valid,
|
|
50322
50342
|
children: [
|
|
50323
|
-
renderProgress ? `Rendering... ${renderProgress.renderedFrames}/${
|
|
50343
|
+
renderProgress ? `Rendering... ${renderProgress.renderedFrames}/${finalEndFrame}` : `Render ${renderMode}`,
|
|
50324
50344
|
/* @__PURE__ */ jsx264(ShortcutHint, {
|
|
50325
50345
|
keyToPress: "↵",
|
|
50326
50346
|
cmdOrCtrl: true
|
|
@@ -50408,9 +50428,9 @@ var WebRenderModal = ({
|
|
|
50408
50428
|
setContainerFormat,
|
|
50409
50429
|
codec,
|
|
50410
50430
|
setCodec,
|
|
50411
|
-
startFrame,
|
|
50431
|
+
startFrame: finalStartFrame,
|
|
50412
50432
|
setStartFrame,
|
|
50413
|
-
endFrame,
|
|
50433
|
+
endFrame: finalEndFrame,
|
|
50414
50434
|
setEndFrame,
|
|
50415
50435
|
outName,
|
|
50416
50436
|
onOutNameChange,
|
|
@@ -50762,7 +50782,9 @@ var Modals = ({ readOnlyStudio }) => {
|
|
|
50762
50782
|
type: "web-render",
|
|
50763
50783
|
initialFrame: modalContextType.initialFrame,
|
|
50764
50784
|
compositionId: modalContextType.compositionId,
|
|
50765
|
-
defaultProps: modalContextType.defaultProps
|
|
50785
|
+
defaultProps: modalContextType.defaultProps,
|
|
50786
|
+
inFrameMark: modalContextType.inFrameMark,
|
|
50787
|
+
outFrameMark: modalContextType.outFrameMark
|
|
50766
50788
|
}),
|
|
50767
50789
|
modalContextType && canRender && modalContextType.type === "server-render" && /* @__PURE__ */ jsx269(RenderModalWithLoader, {
|
|
50768
50790
|
initialFrame: modalContextType.initialFrame,
|
package/dist/esm/renderEntry.mjs
CHANGED
|
@@ -206,7 +206,7 @@ var renderContent = (Root) => {
|
|
|
206
206
|
renderToDOM(/* @__PURE__ */ jsx("div", {
|
|
207
207
|
children: /* @__PURE__ */ jsx(DelayedSpinner, {})
|
|
208
208
|
}));
|
|
209
|
-
import("./chunk-
|
|
209
|
+
import("./chunk-x5sy3ah8.js").then(({ StudioInternals }) => {
|
|
210
210
|
window.remotion_isStudio = true;
|
|
211
211
|
window.remotion_isReadOnlyStudio = true;
|
|
212
212
|
window.remotion_inputProps = "{}";
|
package/dist/state/modals.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"url": "https://github.com/remotion-dev/remotion/tree/main/packages/studio"
|
|
4
4
|
},
|
|
5
5
|
"name": "@remotion/studio",
|
|
6
|
-
"version": "4.0.
|
|
6
|
+
"version": "4.0.377",
|
|
7
7
|
"description": "APIs for interacting with the Remotion Studio",
|
|
8
8
|
"main": "dist",
|
|
9
9
|
"sideEffects": false,
|
|
@@ -25,13 +25,13 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"semver": "7.5.3",
|
|
28
|
-
"remotion": "4.0.
|
|
29
|
-
"@remotion/player": "4.0.
|
|
30
|
-
"@remotion/media-utils": "4.0.
|
|
31
|
-
"@remotion/renderer": "4.0.
|
|
32
|
-
"@remotion/web-renderer": "4.0.
|
|
33
|
-
"@remotion/studio-shared": "4.0.
|
|
34
|
-
"@remotion/zod-types": "4.0.
|
|
28
|
+
"remotion": "4.0.377",
|
|
29
|
+
"@remotion/player": "4.0.377",
|
|
30
|
+
"@remotion/media-utils": "4.0.377",
|
|
31
|
+
"@remotion/renderer": "4.0.377",
|
|
32
|
+
"@remotion/web-renderer": "4.0.377",
|
|
33
|
+
"@remotion/studio-shared": "4.0.377",
|
|
34
|
+
"@remotion/zod-types": "4.0.377",
|
|
35
35
|
"mediabunny": "1.24.5",
|
|
36
36
|
"memfs": "3.4.3",
|
|
37
37
|
"source-map": "0.7.3",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"react": "19.0.0",
|
|
43
43
|
"react-dom": "19.0.0",
|
|
44
44
|
"@types/semver": "^7.3.4",
|
|
45
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
45
|
+
"@remotion/eslint-config-internal": "4.0.377",
|
|
46
46
|
"eslint": "9.19.0"
|
|
47
47
|
},
|
|
48
48
|
"publishConfig": {
|