remotion 4.0.181 → 4.0.183
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/cjs/version.d.ts
CHANGED
package/dist/cjs/version.js
CHANGED
|
@@ -10,6 +10,7 @@ const absolute_src_js_1 = require("../absolute-src.js");
|
|
|
10
10
|
const use_audio_frame_js_1 = require("../audio/use-audio-frame.js");
|
|
11
11
|
const cancel_render_js_1 = require("../cancel-render.js");
|
|
12
12
|
const default_css_js_1 = require("../default-css.js");
|
|
13
|
+
const delay_render_js_1 = require("../delay-render.js");
|
|
13
14
|
const random_js_1 = require("../random.js");
|
|
14
15
|
const timeline_position_state_js_1 = require("../timeline-position-state.js");
|
|
15
16
|
const truthy_js_1 = require("../truthy.js");
|
|
@@ -18,7 +19,7 @@ const use_unsafe_video_config_js_1 = require("../use-unsafe-video-config.js");
|
|
|
18
19
|
const volume_prop_js_1 = require("../volume-prop.js");
|
|
19
20
|
const get_current_time_js_1 = require("./get-current-time.js");
|
|
20
21
|
const offthread_video_source_js_1 = require("./offthread-video-source.js");
|
|
21
|
-
const OffthreadVideoForRendering = ({ onError, volume: volumeProp, playbackRate, src, muted, allowAmplificationDuringRender, transparent = false, toneMapped = true, toneFrequency, name, loopVolumeCurveBehavior, ...props }) => {
|
|
22
|
+
const OffthreadVideoForRendering = ({ onError, volume: volumeProp, playbackRate, src, muted, allowAmplificationDuringRender, transparent = false, toneMapped = true, toneFrequency, name, loopVolumeCurveBehavior, delayRenderRetries, delayRenderTimeoutInMilliseconds, ...props }) => {
|
|
22
23
|
const absoluteFrame = (0, timeline_position_state_js_1.useTimelinePosition)();
|
|
23
24
|
const frame = (0, use_current_frame_js_1.useCurrentFrame)();
|
|
24
25
|
const volumePropsFrame = (0, use_audio_frame_js_1.useFrameForVolumeProp)(loopVolumeCurveBehavior !== null && loopVolumeCurveBehavior !== void 0 ? loopVolumeCurveBehavior : 'repeat');
|
|
@@ -102,19 +103,77 @@ const OffthreadVideoForRendering = ({ onError, volume: volumeProp, playbackRate,
|
|
|
102
103
|
toneMapped,
|
|
103
104
|
});
|
|
104
105
|
}, [toneMapped, currentTime, src, transparent]);
|
|
106
|
+
const [imageSrc, setImageSrc] = (0, react_1.useState)(null);
|
|
107
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
108
|
+
const cleanup = [];
|
|
109
|
+
setImageSrc(null);
|
|
110
|
+
const controller = new AbortController();
|
|
111
|
+
const newHandle = (0, delay_render_js_1.delayRender)('Fetching ' + actualSrc + 'from server', {
|
|
112
|
+
retries: delayRenderRetries !== null && delayRenderRetries !== void 0 ? delayRenderRetries : undefined,
|
|
113
|
+
timeoutInMilliseconds: delayRenderTimeoutInMilliseconds !== null && delayRenderTimeoutInMilliseconds !== void 0 ? delayRenderTimeoutInMilliseconds : undefined,
|
|
114
|
+
});
|
|
115
|
+
const execute = async () => {
|
|
116
|
+
try {
|
|
117
|
+
const res = await fetch(actualSrc, {
|
|
118
|
+
signal: controller.signal,
|
|
119
|
+
});
|
|
120
|
+
if (res.status !== 200) {
|
|
121
|
+
if (res.status === 500) {
|
|
122
|
+
const json = await res.json();
|
|
123
|
+
if (json.error) {
|
|
124
|
+
const cleanedUpErrorMessage = json.error.replace(/^Error: /, '');
|
|
125
|
+
throw new Error(cleanedUpErrorMessage);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
throw new Error(`Server returned status ${res.status} while fetching ${actualSrc}`);
|
|
129
|
+
}
|
|
130
|
+
const blob = await res.blob();
|
|
131
|
+
const url = URL.createObjectURL(blob);
|
|
132
|
+
cleanup.push(() => URL.revokeObjectURL(url));
|
|
133
|
+
setImageSrc(url);
|
|
134
|
+
(0, delay_render_js_1.continueRender)(newHandle);
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
if (onError) {
|
|
138
|
+
onError(err);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
(0, cancel_render_js_1.cancelRender)(err);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
execute();
|
|
146
|
+
cleanup.push(() => {
|
|
147
|
+
if (controller.signal.aborted) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
controller.abort();
|
|
151
|
+
});
|
|
152
|
+
return () => {
|
|
153
|
+
cleanup.forEach((c) => c());
|
|
154
|
+
};
|
|
155
|
+
}, [
|
|
156
|
+
actualSrc,
|
|
157
|
+
delayRenderRetries,
|
|
158
|
+
delayRenderTimeoutInMilliseconds,
|
|
159
|
+
onError,
|
|
160
|
+
]);
|
|
105
161
|
const onErr = (0, react_1.useCallback)(() => {
|
|
106
162
|
if (onError) {
|
|
107
|
-
onError === null || onError === void 0 ? void 0 : onError(new Error('Failed to load image with src ' +
|
|
163
|
+
onError === null || onError === void 0 ? void 0 : onError(new Error('Failed to load image with src ' + imageSrc));
|
|
108
164
|
}
|
|
109
165
|
else {
|
|
110
|
-
(0, cancel_render_js_1.cancelRender)('Failed to load image with src ' +
|
|
166
|
+
(0, cancel_render_js_1.cancelRender)('Failed to load image with src ' + imageSrc);
|
|
111
167
|
}
|
|
112
|
-
}, [
|
|
168
|
+
}, [imageSrc, onError]);
|
|
113
169
|
const className = (0, react_1.useMemo)(() => {
|
|
114
170
|
return [default_css_js_1.OFFTHREAD_VIDEO_CLASS_NAME, props.className]
|
|
115
171
|
.filter(truthy_js_1.truthy)
|
|
116
172
|
.join(' ');
|
|
117
173
|
}, [props.className]);
|
|
118
|
-
|
|
174
|
+
if (!imageSrc) {
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
return ((0, jsx_runtime_1.jsx)(Img_js_1.Img, { src: imageSrc, className: className, delayRenderRetries: delayRenderRetries, delayRenderTimeoutInMilliseconds: delayRenderTimeoutInMilliseconds, ...props, onError: onErr }));
|
|
119
178
|
};
|
|
120
179
|
exports.OffthreadVideoForRendering = OffthreadVideoForRendering;
|
package/dist/esm/index.mjs
CHANGED
|
@@ -138,7 +138,7 @@ function truthy(value) {
|
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
// src/version.ts
|
|
141
|
-
var VERSION = "4.0.
|
|
141
|
+
var VERSION = "4.0.183";
|
|
142
142
|
|
|
143
143
|
// src/multiple-versions-warning.ts
|
|
144
144
|
var checkMultipleRemotionVersions = () => {
|
|
@@ -5758,7 +5758,14 @@ var Still = (props2) => {
|
|
|
5758
5758
|
import {useCallback as useCallback14} from "react";
|
|
5759
5759
|
|
|
5760
5760
|
// src/video/OffthreadVideoForRendering.tsx
|
|
5761
|
-
import {
|
|
5761
|
+
import {
|
|
5762
|
+
useCallback as useCallback13,
|
|
5763
|
+
useContext as useContext27,
|
|
5764
|
+
useEffect as useEffect21,
|
|
5765
|
+
useLayoutEffect as useLayoutEffect6,
|
|
5766
|
+
useMemo as useMemo29,
|
|
5767
|
+
useState as useState18
|
|
5768
|
+
} from "react";
|
|
5762
5769
|
import {
|
|
5763
5770
|
jsx as jsx29
|
|
5764
5771
|
} from "react/jsx-runtime";
|
|
@@ -5774,6 +5781,8 @@ var OffthreadVideoForRendering = ({
|
|
|
5774
5781
|
toneFrequency,
|
|
5775
5782
|
name,
|
|
5776
5783
|
loopVolumeCurveBehavior,
|
|
5784
|
+
delayRenderRetries,
|
|
5785
|
+
delayRenderTimeoutInMilliseconds,
|
|
5777
5786
|
...props2
|
|
5778
5787
|
}) => {
|
|
5779
5788
|
const absoluteFrame = useTimelinePosition();
|
|
@@ -5856,19 +5865,77 @@ var OffthreadVideoForRendering = ({
|
|
|
5856
5865
|
toneMapped
|
|
5857
5866
|
});
|
|
5858
5867
|
}, [toneMapped, currentTime, src, transparent]);
|
|
5868
|
+
const [imageSrc, setImageSrc] = useState18(null);
|
|
5869
|
+
useLayoutEffect6(() => {
|
|
5870
|
+
const cleanup = [];
|
|
5871
|
+
setImageSrc(null);
|
|
5872
|
+
const controller = new AbortController;
|
|
5873
|
+
const newHandle = delayRender("Fetching " + actualSrc + "from server", {
|
|
5874
|
+
retries: delayRenderRetries ?? undefined,
|
|
5875
|
+
timeoutInMilliseconds: delayRenderTimeoutInMilliseconds ?? undefined
|
|
5876
|
+
});
|
|
5877
|
+
const execute = async () => {
|
|
5878
|
+
try {
|
|
5879
|
+
const res = await fetch(actualSrc, {
|
|
5880
|
+
signal: controller.signal
|
|
5881
|
+
});
|
|
5882
|
+
if (res.status !== 200) {
|
|
5883
|
+
if (res.status === 500) {
|
|
5884
|
+
const json = await res.json();
|
|
5885
|
+
if (json.error) {
|
|
5886
|
+
const cleanedUpErrorMessage = json.error.replace(/^Error: /, "");
|
|
5887
|
+
throw new Error(cleanedUpErrorMessage);
|
|
5888
|
+
}
|
|
5889
|
+
}
|
|
5890
|
+
throw new Error(`Server returned status ${res.status} while fetching ${actualSrc}`);
|
|
5891
|
+
}
|
|
5892
|
+
const blob = await res.blob();
|
|
5893
|
+
const url = URL.createObjectURL(blob);
|
|
5894
|
+
cleanup.push(() => URL.revokeObjectURL(url));
|
|
5895
|
+
setImageSrc(url);
|
|
5896
|
+
continueRender(newHandle);
|
|
5897
|
+
} catch (err) {
|
|
5898
|
+
if (onError) {
|
|
5899
|
+
onError(err);
|
|
5900
|
+
} else {
|
|
5901
|
+
cancelRender(err);
|
|
5902
|
+
}
|
|
5903
|
+
}
|
|
5904
|
+
};
|
|
5905
|
+
execute();
|
|
5906
|
+
cleanup.push(() => {
|
|
5907
|
+
if (controller.signal.aborted) {
|
|
5908
|
+
return;
|
|
5909
|
+
}
|
|
5910
|
+
controller.abort();
|
|
5911
|
+
});
|
|
5912
|
+
return () => {
|
|
5913
|
+
cleanup.forEach((c2) => c2());
|
|
5914
|
+
};
|
|
5915
|
+
}, [
|
|
5916
|
+
actualSrc,
|
|
5917
|
+
delayRenderRetries,
|
|
5918
|
+
delayRenderTimeoutInMilliseconds,
|
|
5919
|
+
onError
|
|
5920
|
+
]);
|
|
5859
5921
|
const onErr = useCallback13(() => {
|
|
5860
5922
|
if (onError) {
|
|
5861
|
-
onError?.(new Error("Failed to load image with src " +
|
|
5923
|
+
onError?.(new Error("Failed to load image with src " + imageSrc));
|
|
5862
5924
|
} else {
|
|
5863
|
-
cancelRender("Failed to load image with src " +
|
|
5925
|
+
cancelRender("Failed to load image with src " + imageSrc);
|
|
5864
5926
|
}
|
|
5865
|
-
}, [
|
|
5927
|
+
}, [imageSrc, onError]);
|
|
5866
5928
|
const className = useMemo29(() => {
|
|
5867
5929
|
return [OFFTHREAD_VIDEO_CLASS_NAME, props2.className].filter(truthy).join(" ");
|
|
5868
5930
|
}, [props2.className]);
|
|
5931
|
+
if (!imageSrc) {
|
|
5932
|
+
return null;
|
|
5933
|
+
}
|
|
5869
5934
|
return jsx29(Img, {
|
|
5870
|
-
src:
|
|
5935
|
+
src: imageSrc,
|
|
5871
5936
|
className,
|
|
5937
|
+
delayRenderRetries,
|
|
5938
|
+
delayRenderTimeoutInMilliseconds,
|
|
5872
5939
|
...props2,
|
|
5873
5940
|
onError: onErr
|
|
5874
5941
|
});
|
|
@@ -5882,7 +5949,7 @@ useEffect as useEffect22,
|
|
|
5882
5949
|
useImperativeHandle as useImperativeHandle7,
|
|
5883
5950
|
useMemo as useMemo30,
|
|
5884
5951
|
useRef as useRef13,
|
|
5885
|
-
useState as
|
|
5952
|
+
useState as useState19
|
|
5886
5953
|
} from "react";
|
|
5887
5954
|
import {
|
|
5888
5955
|
jsx as jsx30
|
|
@@ -5914,7 +5981,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
|
|
|
5914
5981
|
const { fps, durationInFrames } = useVideoConfig();
|
|
5915
5982
|
const parentSequence = useContext28(SequenceContext);
|
|
5916
5983
|
const { hidden } = useContext28(SequenceVisibilityToggleContext);
|
|
5917
|
-
const [timelineId] =
|
|
5984
|
+
const [timelineId] = useState19(() => String(Math.random()));
|
|
5918
5985
|
const isSequenceHidden = hidden[timelineId] ?? false;
|
|
5919
5986
|
if (typeof acceptableTimeShift !== "undefined") {
|
|
5920
5987
|
throw new Error("acceptableTimeShift has been removed. Use acceptableTimeShiftInSeconds instead.");
|
|
@@ -6113,7 +6180,7 @@ forwardRef as forwardRef10,
|
|
|
6113
6180
|
useContext as useContext29,
|
|
6114
6181
|
useEffect as useEffect23,
|
|
6115
6182
|
useImperativeHandle as useImperativeHandle8,
|
|
6116
|
-
useLayoutEffect as
|
|
6183
|
+
useLayoutEffect as useLayoutEffect7,
|
|
6117
6184
|
useMemo as useMemo31,
|
|
6118
6185
|
useRef as useRef14
|
|
6119
6186
|
} from "react";
|
|
@@ -6364,7 +6431,7 @@ var VideoForRenderingForwardFunction = ({
|
|
|
6364
6431
|
]);
|
|
6365
6432
|
const { src } = props2;
|
|
6366
6433
|
if (environment.isRendering) {
|
|
6367
|
-
|
|
6434
|
+
useLayoutEffect7(() => {
|
|
6368
6435
|
if (window.process?.env?.NODE_ENV === "test") {
|
|
6369
6436
|
return;
|
|
6370
6437
|
}
|
package/dist/esm/version.mjs
CHANGED
package/package.json
CHANGED