remotion 4.0.74 → 4.0.76
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/IFrame.js +1 -0
- package/dist/cjs/Img.js +2 -0
- package/dist/cjs/ResolveCompositionConfig.js +10 -0
- package/dist/cjs/audio/Audio.d.ts +1 -1
- package/dist/cjs/audio/Audio.js +2 -0
- package/dist/cjs/audio/AudioForRendering.js +1 -1
- package/dist/cjs/audio/shared-audio-tags.js +2 -2
- package/dist/cjs/config/input-props.js +3 -0
- package/dist/cjs/get-static-files.js +2 -0
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/play-and-handle-not-allowed-error.js +2 -0
- package/dist/cjs/prefetch.js +1 -0
- package/dist/cjs/static-file.js +1 -0
- package/dist/cjs/use-media-in-timeline.js +1 -0
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/video/VideoForDevelopment.js +1 -0
- package/dist/cjs/video/VideoForRendering.js +1 -0
- package/dist/cjs/video/seek-until-right.d.ts +8 -0
- package/dist/cjs/video/seek-until-right.js +60 -0
- package/dist/cjs/warn-about-non-seekable-media.js +2 -0
- package/dist/cjs/watch-static-file.js +1 -0
- package/dist/esm/index.mjs +32 -16
- package/dist/esm/no-react.mjs +1 -0
- package/dist/esm/version.mjs +1 -1
- package/package.json +1 -1
package/dist/cjs/IFrame.js
CHANGED
|
@@ -16,6 +16,7 @@ const IFrameRefForwarding = ({ onLoad, onError, ...props }, ref) => {
|
|
|
16
16
|
onError(e);
|
|
17
17
|
}
|
|
18
18
|
else {
|
|
19
|
+
// eslint-disable-next-line no-console
|
|
19
20
|
console.error('Error loading iframe:', e, 'Handle the event using the onError() prop to make this message disappear.');
|
|
20
21
|
}
|
|
21
22
|
}, [handle, onError]);
|
package/dist/cjs/Img.js
CHANGED
|
@@ -53,6 +53,7 @@ const ImgRefForwarding = ({ onError, maxRetries = 2, src, ...props }, ref) => {
|
|
|
53
53
|
}
|
|
54
54
|
if (((_g = errors.current[(_f = imageRef.current) === null || _f === void 0 ? void 0 : _f.src]) !== null && _g !== void 0 ? _g : 0) <= maxRetries) {
|
|
55
55
|
const backoff = exponentialBackoff((_j = errors.current[(_h = imageRef.current) === null || _h === void 0 ? void 0 : _h.src]) !== null && _j !== void 0 ? _j : 0);
|
|
56
|
+
// eslint-disable-next-line no-console
|
|
56
57
|
console.warn(`Could not load image with source ${(_k = imageRef.current) === null || _k === void 0 ? void 0 : _k.src}, retrying again in ${backoff}ms`);
|
|
57
58
|
retryIn(backoff);
|
|
58
59
|
return;
|
|
@@ -71,6 +72,7 @@ const ImgRefForwarding = ({ onError, maxRetries = 2, src, ...props }, ref) => {
|
|
|
71
72
|
var _a, _b, _c, _d;
|
|
72
73
|
if (((_b = errors.current[(_a = imageRef.current) === null || _a === void 0 ? void 0 : _a.src]) !== null && _b !== void 0 ? _b : 0) > 0) {
|
|
73
74
|
delete errors.current[(_c = imageRef.current) === null || _c === void 0 ? void 0 : _c.src];
|
|
75
|
+
// eslint-disable-next-line no-console
|
|
74
76
|
console.info(`Retry successful - ${(_d = imageRef.current) === null || _d === void 0 ? void 0 : _d.src} is now loaded`);
|
|
75
77
|
}
|
|
76
78
|
(0, delay_render_js_1.continueRender)(newHandle);
|
|
@@ -8,6 +8,9 @@ const input_props_js_1 = require("./config/input-props.js");
|
|
|
8
8
|
const EditorProps_js_1 = require("./EditorProps.js");
|
|
9
9
|
const get_remotion_environment_js_1 = require("./get-remotion-environment.js");
|
|
10
10
|
const resolve_video_config_js_1 = require("./resolve-video-config.js");
|
|
11
|
+
const validate_dimensions_js_1 = require("./validation/validate-dimensions.js");
|
|
12
|
+
const validate_duration_in_frames_js_1 = require("./validation/validate-duration-in-frames.js");
|
|
13
|
+
const validate_fps_js_1 = require("./validation/validate-fps.js");
|
|
11
14
|
exports.ResolveCompositionContext = (0, react_1.createContext)(null);
|
|
12
15
|
exports.resolveCompositionsRef = (0, react_1.createRef)();
|
|
13
16
|
const needsResolution = (composition) => {
|
|
@@ -182,6 +185,13 @@ const useResolvedVideoConfig = (preferredCompositionId) => {
|
|
|
182
185
|
};
|
|
183
186
|
}
|
|
184
187
|
if (!(0, exports.needsResolution)(composition)) {
|
|
188
|
+
(0, validate_duration_in_frames_js_1.validateDurationInFrames)(composition.durationInFrames, {
|
|
189
|
+
allowFloats: false,
|
|
190
|
+
component: `in <Composition id="${composition.id}">`,
|
|
191
|
+
});
|
|
192
|
+
(0, validate_fps_js_1.validateFps)(composition.fps, `in <Composition id="${composition.id}">`, false);
|
|
193
|
+
(0, validate_dimensions_js_1.validateDimension)(composition.width, 'width', `in <Composition id="${composition.id}">`);
|
|
194
|
+
(0, validate_dimensions_js_1.validateDimension)(composition.height, 'height', `in <Composition id="${composition.id}">`);
|
|
185
195
|
return {
|
|
186
196
|
type: 'success',
|
|
187
197
|
result: {
|
|
@@ -13,4 +13,4 @@ export declare const Audio: React.ForwardRefExoticComponent<Pick<Omit<React.Deta
|
|
|
13
13
|
_remotionInternalNeedsDurationCalculation?: boolean | undefined;
|
|
14
14
|
_remotionInternalNativeLoopPassed?: boolean | undefined;
|
|
15
15
|
toneFrequency?: number | undefined;
|
|
16
|
-
} & RemotionMainAudioProps, "id" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "lang" | "placeholder" | "slot" | "spellCheck" | "style" | "tabIndex" | "title" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "volume" | "allowAmplificationDuringRender" | "controlsList" | "crossOrigin" | "loop" | "mediaGroup" | "
|
|
16
|
+
} & RemotionMainAudioProps, "id" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "lang" | "placeholder" | "slot" | "spellCheck" | "style" | "tabIndex" | "title" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "muted" | "volume" | "allowAmplificationDuringRender" | "controlsList" | "crossOrigin" | "loop" | "mediaGroup" | "playsInline" | "preload" | "src" | "name" | "playbackRate" | "acceptableTimeShiftInSeconds" | "_remotionInternalNeedsDurationCalculation" | "_remotionInternalNativeLoopPassed" | "toneFrequency" | keyof RemotionMainAudioProps> & React.RefAttributes<HTMLAudioElement>>;
|
package/dist/cjs/audio/Audio.js
CHANGED
|
@@ -31,6 +31,7 @@ const AudioRefForwardingFunction = (props, ref) => {
|
|
|
31
31
|
}
|
|
32
32
|
const preloadedSrc = (0, prefetch_js_1.usePreload)(props.src);
|
|
33
33
|
const onError = (0, react_1.useCallback)((e) => {
|
|
34
|
+
// eslint-disable-next-line no-console
|
|
34
35
|
console.log(e.currentTarget.error);
|
|
35
36
|
// If there is no `loop` property, we don't need to get the duration
|
|
36
37
|
// and this does not need to be a fatal error
|
|
@@ -39,6 +40,7 @@ const AudioRefForwardingFunction = (props, ref) => {
|
|
|
39
40
|
(0, cancel_render_js_1.cancelRender)(new Error(errMessage));
|
|
40
41
|
}
|
|
41
42
|
else {
|
|
43
|
+
// eslint-disable-next-line no-console
|
|
42
44
|
console.warn(errMessage);
|
|
43
45
|
}
|
|
44
46
|
}, [loop, preloadedSrc]);
|
|
@@ -30,7 +30,7 @@ const AudioForRenderingRefForwardingFunction = (props, ref) => {
|
|
|
30
30
|
sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.cumulatedFrom,
|
|
31
31
|
sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.durationInFrames,
|
|
32
32
|
]);
|
|
33
|
-
const { volume: volumeProp, playbackRate, allowAmplificationDuringRender, onDuration, toneFrequency, _remotionInternalNeedsDurationCalculation, _remotionInternalNativeLoopPassed, acceptableTimeShiftInSeconds, name, ...nativeProps } = props;
|
|
33
|
+
const { volume: volumeProp, playbackRate, allowAmplificationDuringRender, onDuration, toneFrequency, _remotionInternalNeedsDurationCalculation, _remotionInternalNativeLoopPassed, acceptableTimeShiftInSeconds, name, onError, ...nativeProps } = props;
|
|
34
34
|
const volume = (0, volume_prop_js_1.evaluateVolume)({
|
|
35
35
|
volume: volumeProp,
|
|
36
36
|
frame: volumePropFrame,
|
|
@@ -26,6 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.useSharedAudio = exports.SharedAudioContextProvider = exports.SharedAudioContext = void 0;
|
|
27
27
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
28
28
|
const react_1 = __importStar(require("react"));
|
|
29
|
+
const play_and_handle_not_allowed_error_js_1 = require("../play-and-handle-not-allowed-error.js");
|
|
29
30
|
const EMPTY_AUDIO = 'data:audio/mp3;base64,/+MYxAAJcAV8AAgAABn//////+/gQ5BAMA+D4Pg+BAQBAEAwD4Pg+D4EBAEAQDAPg++hYBH///hUFQVBUFREDQNHmf///////+MYxBUGkAGIMAAAAP/29Xt6lUxBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxDUAAANIAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV';
|
|
30
31
|
const compareProps = (obj1, obj2) => {
|
|
31
32
|
const keysA = Object.keys(obj1).sort();
|
|
@@ -157,8 +158,7 @@ const SharedAudioContextProvider = ({ children, numberOfAudioTags, component })
|
|
|
157
158
|
}, [rerenderAudios]);
|
|
158
159
|
const playAllAudios = (0, react_1.useCallback)(() => {
|
|
159
160
|
refs.forEach((ref) => {
|
|
160
|
-
|
|
161
|
-
(_a = ref.ref.current) === null || _a === void 0 ? void 0 : _a.play();
|
|
161
|
+
(0, play_and_handle_not_allowed_error_js_1.playAndHandleNotAllowedError)(ref.ref, 'audio');
|
|
162
162
|
});
|
|
163
163
|
}, [refs]);
|
|
164
164
|
const value = (0, react_1.useMemo)(() => {
|
|
@@ -9,8 +9,11 @@ const warnOnceSSRImport = () => {
|
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
11
|
didWarnSSRImport = true;
|
|
12
|
+
// eslint-disable-next-line no-console
|
|
12
13
|
console.warn('Called `getInputProps()` on the server. This function is not available server-side and has returned an empty object.');
|
|
14
|
+
// eslint-disable-next-line no-console
|
|
13
15
|
console.warn("To hide this warning, don't call this function on the server:");
|
|
16
|
+
// eslint-disable-next-line no-console
|
|
14
17
|
console.warn(" typeof window === 'undefined' ? {} : getInputProps()");
|
|
15
18
|
};
|
|
16
19
|
const getInputProps = () => {
|
|
@@ -8,6 +8,7 @@ const warnServerOnce = () => {
|
|
|
8
8
|
return;
|
|
9
9
|
}
|
|
10
10
|
warnedServer = true;
|
|
11
|
+
// eslint-disable-next-line no-console
|
|
11
12
|
console.warn('Called getStaticFiles() on the server. The API is only available in the browser. An empty array was returned.');
|
|
12
13
|
};
|
|
13
14
|
const warnPlayerOnce = () => {
|
|
@@ -15,6 +16,7 @@ const warnPlayerOnce = () => {
|
|
|
15
16
|
return;
|
|
16
17
|
}
|
|
17
18
|
warnedPlayer = true;
|
|
19
|
+
// eslint-disable-next-line no-console
|
|
18
20
|
console.warn('Called getStaticFiles() while using the Remotion Player. The API is only available while using the Remotion Studio. An empty array was returned.');
|
|
19
21
|
};
|
|
20
22
|
/**
|
package/dist/cjs/index.js
CHANGED
|
@@ -94,6 +94,7 @@ exports.Config = new Proxy(proxyObj, {
|
|
|
94
94
|
return exports.Config;
|
|
95
95
|
}
|
|
96
96
|
return () => {
|
|
97
|
+
/* eslint-disable no-console */
|
|
97
98
|
console.warn('⚠️ The CLI configuration has been extracted from Remotion Core.');
|
|
98
99
|
console.warn('Update the import from the config file:');
|
|
99
100
|
console.warn();
|
|
@@ -103,6 +104,7 @@ exports.Config = new Proxy(proxyObj, {
|
|
|
103
104
|
console.warn('import {Config} from "@remotion/cli/config";');
|
|
104
105
|
console.warn();
|
|
105
106
|
console.warn('For more information, see https://www.remotion.dev/docs/4-0-migration.');
|
|
107
|
+
/* eslint-enable no-console */
|
|
106
108
|
process.exit(1);
|
|
107
109
|
};
|
|
108
110
|
},
|
|
@@ -32,8 +32,10 @@ const playAndHandleNotAllowedError = (mediaRef, mediaType) => {
|
|
|
32
32
|
if (err.message.includes('because the media was removed from the document')) {
|
|
33
33
|
return;
|
|
34
34
|
}
|
|
35
|
+
// eslint-disable-next-line no-console
|
|
35
36
|
console.log(`Could not play ${mediaType} due to following error: `, err);
|
|
36
37
|
if (!current.muted) {
|
|
38
|
+
// eslint-disable-next-line no-console
|
|
37
39
|
console.log(`The video will be muted and we'll retry playing it.`, err);
|
|
38
40
|
current.muted = true;
|
|
39
41
|
current.play();
|
package/dist/cjs/prefetch.js
CHANGED
|
@@ -66,6 +66,7 @@ const prefetch = (src, options) => {
|
|
|
66
66
|
if (!buf.type.startsWith('video/') &&
|
|
67
67
|
!buf.type.startsWith('audio/') &&
|
|
68
68
|
!(options === null || options === void 0 ? void 0 : options.contentType)) {
|
|
69
|
+
// eslint-disable-next-line no-console
|
|
69
70
|
console.warn(`Called prefetch() on ${src} which returned a "Content-Type" of ${buf.type}. Prefetched content should have a proper content type (video/... or audio/...) or a contentType passed the options of prefetch(). Otherwise, prefetching will not work properly in all browsers.`);
|
|
70
71
|
}
|
|
71
72
|
const actualBlob = (options === null || options === void 0 ? void 0 : options.contentType)
|
package/dist/cjs/static-file.js
CHANGED
package/dist/cjs/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "4.0.
|
|
1
|
+
export declare const VERSION = "4.0.76";
|
package/dist/cjs/version.js
CHANGED
|
@@ -75,6 +75,7 @@ const VideoForDevelopmentRefForwardingFunction = (props, ref) => {
|
|
|
75
75
|
const errorHandler = () => {
|
|
76
76
|
var _a;
|
|
77
77
|
if (current === null || current === void 0 ? void 0 : current.error) {
|
|
78
|
+
// eslint-disable-next-line no-console
|
|
78
79
|
console.error('Error occurred in video', current === null || current === void 0 ? void 0 : current.error);
|
|
79
80
|
// If user is handling the error, we don't cause an unhandled exception
|
|
80
81
|
if (props.onError) {
|
|
@@ -147,6 +147,7 @@ const VideoForRenderingForwardFunction = ({ onError, volume: volumeProp, allowAm
|
|
|
147
147
|
const errorHandler = () => {
|
|
148
148
|
var _a;
|
|
149
149
|
if (current === null || current === void 0 ? void 0 : current.error) {
|
|
150
|
+
// eslint-disable-next-line no-console
|
|
150
151
|
console.error('Error occurred in video', current === null || current === void 0 ? void 0 : current.error);
|
|
151
152
|
// If user is handling the error, we don't cause an unhandled exception
|
|
152
153
|
if (onError) {
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const seekToTime: (element: HTMLVideoElement, desiredTime: number) => {
|
|
2
|
+
wait: Promise<number>;
|
|
3
|
+
cancel: () => void;
|
|
4
|
+
};
|
|
5
|
+
export declare const seekToTimeMultipleUntilRight: (element: HTMLVideoElement, desiredTime: number, fps: number) => {
|
|
6
|
+
prom: Promise<void>;
|
|
7
|
+
cancel: () => void;
|
|
8
|
+
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.seekToTimeMultipleUntilRight = exports.seekToTime = void 0;
|
|
4
|
+
const seekToTime = (element, desiredTime) => {
|
|
5
|
+
element.currentTime = desiredTime;
|
|
6
|
+
let cancel;
|
|
7
|
+
const prom = new Promise((resolve) => {
|
|
8
|
+
cancel = element.requestVideoFrameCallback((_cb, metadata) => {
|
|
9
|
+
resolve(metadata.mediaTime);
|
|
10
|
+
});
|
|
11
|
+
});
|
|
12
|
+
return {
|
|
13
|
+
wait: prom,
|
|
14
|
+
cancel: () => {
|
|
15
|
+
element.cancelVideoFrameCallback(cancel);
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
exports.seekToTime = seekToTime;
|
|
20
|
+
const seekToTimeMultipleUntilRight = (element, desiredTime, fps) => {
|
|
21
|
+
const threshold = 1 / fps / 2;
|
|
22
|
+
let currentCancel = () => undefined;
|
|
23
|
+
const prom = new Promise((resolve, reject) => {
|
|
24
|
+
const firstSeek = (0, exports.seekToTime)(element, desiredTime + threshold);
|
|
25
|
+
firstSeek.wait.then((seekedTo) => {
|
|
26
|
+
const difference = Math.abs(desiredTime - seekedTo);
|
|
27
|
+
const ident = Math.random();
|
|
28
|
+
if (difference < threshold) {
|
|
29
|
+
return resolve();
|
|
30
|
+
}
|
|
31
|
+
const sign = desiredTime > seekedTo ? 1 : -1;
|
|
32
|
+
const newSeek = (0, exports.seekToTime)(element, seekedTo + threshold * sign);
|
|
33
|
+
currentCancel = newSeek.cancel;
|
|
34
|
+
newSeek.wait
|
|
35
|
+
.then((newTime) => {
|
|
36
|
+
const newDifference = Math.abs(desiredTime - newTime);
|
|
37
|
+
console.log(ident, 'before', seekedTo, 'after', newTime, 'desired', desiredTime);
|
|
38
|
+
if (newDifference < threshold) {
|
|
39
|
+
return resolve();
|
|
40
|
+
}
|
|
41
|
+
const thirdSeek = (0, exports.seekToTime)(element, desiredTime);
|
|
42
|
+
currentCancel = thirdSeek.cancel;
|
|
43
|
+
thirdSeek.wait.then(() => {
|
|
44
|
+
resolve();
|
|
45
|
+
});
|
|
46
|
+
})
|
|
47
|
+
.catch((err) => {
|
|
48
|
+
reject(err);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
currentCancel = firstSeek.cancel;
|
|
52
|
+
});
|
|
53
|
+
return {
|
|
54
|
+
prom,
|
|
55
|
+
cancel: () => {
|
|
56
|
+
currentCancel();
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
exports.seekToTimeMultipleUntilRight = seekToTimeMultipleUntilRight;
|
|
@@ -20,9 +20,11 @@ const warnAboutNonSeekableMedia = (ref, type) => {
|
|
|
20
20
|
if (range.start === 0 && range.end === 0) {
|
|
21
21
|
const msg = `The media ${ref.src} cannot be seeked. This could be one of two reasons: 1) The media resource was replaced while the video is playing but it was not loaded yet. 2) The media does not support seeking. Please see https://remotion.dev/docs/non-seekable-media for assistance.`;
|
|
22
22
|
if (type === 'console-error') {
|
|
23
|
+
// eslint-disable-next-line no-console
|
|
23
24
|
console.error(msg);
|
|
24
25
|
}
|
|
25
26
|
else if (type === 'console-warning') {
|
|
27
|
+
// eslint-disable-next-line no-console
|
|
26
28
|
console.warn(`The media ${ref.src} does not support seeking. The video will render fine, but may not play correctly in the Remotion Studio and in the <Player>. See https://remotion.dev/docs/non-seekable-media for an explanation.`);
|
|
27
29
|
}
|
|
28
30
|
else {
|
|
@@ -13,6 +13,7 @@ exports.WATCH_REMOTION_STATIC_FILES = 'remotion_staticFilesChanged';
|
|
|
13
13
|
const watchStaticFile = (fileName, callback) => {
|
|
14
14
|
// Check if function is called in Remotion Studio
|
|
15
15
|
if (!(0, get_remotion_environment_1.getRemotionEnvironment)().isStudio) {
|
|
16
|
+
// eslint-disable-next-line no-console
|
|
16
17
|
console.warn('The API is only available while using the Remotion Studio.');
|
|
17
18
|
return { cancel: () => undefined };
|
|
18
19
|
}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -59,7 +59,7 @@ function truthy(value) {
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
// Automatically generated on publish
|
|
62
|
-
const VERSION = '4.0.
|
|
62
|
+
const VERSION = '4.0.76';
|
|
63
63
|
|
|
64
64
|
const checkMultipleRemotionVersions = () => {
|
|
65
65
|
if (typeof globalThis === 'undefined') {
|
|
@@ -352,6 +352,7 @@ const warnOnce$1 = (message) => {
|
|
|
352
352
|
if (didWarn$1[message]) {
|
|
353
353
|
return;
|
|
354
354
|
}
|
|
355
|
+
// eslint-disable-next-line no-console
|
|
355
356
|
console.warn(message);
|
|
356
357
|
didWarn$1[message] = true;
|
|
357
358
|
};
|
|
@@ -444,8 +445,11 @@ const warnOnceSSRImport = () => {
|
|
|
444
445
|
return;
|
|
445
446
|
}
|
|
446
447
|
didWarnSSRImport = true;
|
|
448
|
+
// eslint-disable-next-line no-console
|
|
447
449
|
console.warn('Called `getInputProps()` on the server. This function is not available server-side and has returned an empty object.');
|
|
450
|
+
// eslint-disable-next-line no-console
|
|
448
451
|
console.warn("To hide this warning, don't call this function on the server:");
|
|
452
|
+
// eslint-disable-next-line no-console
|
|
449
453
|
console.warn(" typeof window === 'undefined' ? {} : getInputProps()");
|
|
450
454
|
};
|
|
451
455
|
const getInputProps = () => {
|
|
@@ -820,6 +824,13 @@ const useResolvedVideoConfig = (preferredCompositionId) => {
|
|
|
820
824
|
};
|
|
821
825
|
}
|
|
822
826
|
if (!needsResolution(composition)) {
|
|
827
|
+
validateDurationInFrames(composition.durationInFrames, {
|
|
828
|
+
allowFloats: false,
|
|
829
|
+
component: `in <Composition id="${composition.id}">`,
|
|
830
|
+
});
|
|
831
|
+
validateFps(composition.fps, `in <Composition id="${composition.id}">`, false);
|
|
832
|
+
validateDimension(composition.width, 'width', `in <Composition id="${composition.id}">`);
|
|
833
|
+
validateDimension(composition.height, 'height', `in <Composition id="${composition.id}">`);
|
|
823
834
|
return {
|
|
824
835
|
type: 'success',
|
|
825
836
|
result: {
|
|
@@ -1259,6 +1270,7 @@ const prefetch = (src, options) => {
|
|
|
1259
1270
|
if (!buf.type.startsWith('video/') &&
|
|
1260
1271
|
!buf.type.startsWith('audio/') &&
|
|
1261
1272
|
!(options === null || options === void 0 ? void 0 : options.contentType)) {
|
|
1273
|
+
// eslint-disable-next-line no-console
|
|
1262
1274
|
console.warn(`Called prefetch() on ${src} which returned a "Content-Type" of ${buf.type}. Prefetched content should have a proper content type (video/... or audio/...) or a contentType passed the options of prefetch(). Otherwise, prefetching will not work properly in all browsers.`);
|
|
1263
1275
|
}
|
|
1264
1276
|
const actualBlob = (options === null || options === void 0 ? void 0 : options.contentType)
|
|
@@ -1484,8 +1496,10 @@ const playAndHandleNotAllowedError = (mediaRef, mediaType) => {
|
|
|
1484
1496
|
if (err.message.includes('because the media was removed from the document')) {
|
|
1485
1497
|
return;
|
|
1486
1498
|
}
|
|
1499
|
+
// eslint-disable-next-line no-console
|
|
1487
1500
|
console.log(`Could not play ${mediaType} due to following error: `, err);
|
|
1488
1501
|
if (!current.muted) {
|
|
1502
|
+
// eslint-disable-next-line no-console
|
|
1489
1503
|
console.log(`The video will be muted and we'll retry playing it.`, err);
|
|
1490
1504
|
current.muted = true;
|
|
1491
1505
|
current.play();
|
|
@@ -1520,6 +1534,7 @@ const warnOnce = (message) => {
|
|
|
1520
1534
|
if (didWarn[message]) {
|
|
1521
1535
|
return;
|
|
1522
1536
|
}
|
|
1537
|
+
// eslint-disable-next-line no-console
|
|
1523
1538
|
console.warn(message);
|
|
1524
1539
|
didWarn[message] = true;
|
|
1525
1540
|
};
|
|
@@ -1846,9 +1861,11 @@ const warnAboutNonSeekableMedia = (ref, type) => {
|
|
|
1846
1861
|
if (range.start === 0 && range.end === 0) {
|
|
1847
1862
|
const msg = `The media ${ref.src} cannot be seeked. This could be one of two reasons: 1) The media resource was replaced while the video is playing but it was not loaded yet. 2) The media does not support seeking. Please see https://remotion.dev/docs/non-seekable-media for assistance.`;
|
|
1848
1863
|
if (type === 'console-error') {
|
|
1864
|
+
// eslint-disable-next-line no-console
|
|
1849
1865
|
console.error(msg);
|
|
1850
1866
|
}
|
|
1851
1867
|
else if (type === 'console-warning') {
|
|
1868
|
+
// eslint-disable-next-line no-console
|
|
1852
1869
|
console.warn(`The media ${ref.src} does not support seeking. The video will render fine, but may not play correctly in the Remotion Studio and in the <Player>. See https://remotion.dev/docs/non-seekable-media for an explanation.`);
|
|
1853
1870
|
}
|
|
1854
1871
|
else {
|
|
@@ -1912,18 +1929,6 @@ const useMediaPlayback = ({ mediaRef, src, mediaType, playbackRate: localPlaybac
|
|
|
1912
1929
|
startFrom: -mediaStartsAt,
|
|
1913
1930
|
mediaType,
|
|
1914
1931
|
});
|
|
1915
|
-
console.log({
|
|
1916
|
-
desiredUnclampedTime,
|
|
1917
|
-
cur: mediaRef.current.currentTime,
|
|
1918
|
-
paused: mediaRef.current.paused,
|
|
1919
|
-
ended: mediaRef.current.ended,
|
|
1920
|
-
loadedStart: mediaRef.current.seekable.length > 0
|
|
1921
|
-
? mediaRef.current.seekable.start(0)
|
|
1922
|
-
: null,
|
|
1923
|
-
loadedEnd: mediaRef.current.seekable.length > 0
|
|
1924
|
-
? mediaRef.current.seekable.end(0)
|
|
1925
|
-
: null,
|
|
1926
|
-
});
|
|
1927
1932
|
const { duration } = mediaRef.current;
|
|
1928
1933
|
const shouldBeTime = !Number.isNaN(duration) && Number.isFinite(duration)
|
|
1929
1934
|
? Math.min(duration, desiredUnclampedTime)
|
|
@@ -2178,8 +2183,7 @@ const SharedAudioContextProvider = ({ children, numberOfAudioTags, component })
|
|
|
2178
2183
|
}, [rerenderAudios]);
|
|
2179
2184
|
const playAllAudios = useCallback(() => {
|
|
2180
2185
|
refs.forEach((ref) => {
|
|
2181
|
-
|
|
2182
|
-
(_a = ref.ref.current) === null || _a === void 0 ? void 0 : _a.play();
|
|
2186
|
+
playAndHandleNotAllowedError(ref.ref, 'audio');
|
|
2183
2187
|
});
|
|
2184
2188
|
}, [refs]);
|
|
2185
2189
|
const value = useMemo(() => {
|
|
@@ -2491,7 +2495,7 @@ const AudioForRenderingRefForwardingFunction = (props, ref) => {
|
|
|
2491
2495
|
sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.cumulatedFrom,
|
|
2492
2496
|
sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.durationInFrames,
|
|
2493
2497
|
]);
|
|
2494
|
-
const { volume: volumeProp, playbackRate, allowAmplificationDuringRender, onDuration, toneFrequency, _remotionInternalNeedsDurationCalculation, _remotionInternalNativeLoopPassed, acceptableTimeShiftInSeconds, name, ...nativeProps } = props;
|
|
2498
|
+
const { volume: volumeProp, playbackRate, allowAmplificationDuringRender, onDuration, toneFrequency, _remotionInternalNeedsDurationCalculation, _remotionInternalNativeLoopPassed, acceptableTimeShiftInSeconds, name, onError, ...nativeProps } = props;
|
|
2495
2499
|
const volume = evaluateVolume({
|
|
2496
2500
|
volume: volumeProp,
|
|
2497
2501
|
frame: volumePropFrame,
|
|
@@ -2595,6 +2599,7 @@ const AudioRefForwardingFunction = (props, ref) => {
|
|
|
2595
2599
|
}
|
|
2596
2600
|
const preloadedSrc = usePreload(props.src);
|
|
2597
2601
|
const onError = useCallback((e) => {
|
|
2602
|
+
// eslint-disable-next-line no-console
|
|
2598
2603
|
console.log(e.currentTarget.error);
|
|
2599
2604
|
// If there is no `loop` property, we don't need to get the duration
|
|
2600
2605
|
// and this does not need to be a fatal error
|
|
@@ -2603,6 +2608,7 @@ const AudioRefForwardingFunction = (props, ref) => {
|
|
|
2603
2608
|
cancelRender(new Error(errMessage));
|
|
2604
2609
|
}
|
|
2605
2610
|
else {
|
|
2611
|
+
// eslint-disable-next-line no-console
|
|
2606
2612
|
console.warn(errMessage);
|
|
2607
2613
|
}
|
|
2608
2614
|
}, [loop, preloadedSrc]);
|
|
@@ -3101,6 +3107,7 @@ const warnServerOnce = () => {
|
|
|
3101
3107
|
return;
|
|
3102
3108
|
}
|
|
3103
3109
|
warnedServer = true;
|
|
3110
|
+
// eslint-disable-next-line no-console
|
|
3104
3111
|
console.warn('Called getStaticFiles() on the server. The API is only available in the browser. An empty array was returned.');
|
|
3105
3112
|
};
|
|
3106
3113
|
const warnPlayerOnce = () => {
|
|
@@ -3108,6 +3115,7 @@ const warnPlayerOnce = () => {
|
|
|
3108
3115
|
return;
|
|
3109
3116
|
}
|
|
3110
3117
|
warnedPlayer = true;
|
|
3118
|
+
// eslint-disable-next-line no-console
|
|
3111
3119
|
console.warn('Called getStaticFiles() while using the Remotion Player. The API is only available while using the Remotion Studio. An empty array was returned.');
|
|
3112
3120
|
};
|
|
3113
3121
|
/**
|
|
@@ -3138,6 +3146,7 @@ const IFrameRefForwarding = ({ onLoad, onError, ...props }, ref) => {
|
|
|
3138
3146
|
onError(e);
|
|
3139
3147
|
}
|
|
3140
3148
|
else {
|
|
3149
|
+
// eslint-disable-next-line no-console
|
|
3141
3150
|
console.error('Error loading iframe:', e, 'Handle the event using the onError() prop to make this message disappear.');
|
|
3142
3151
|
}
|
|
3143
3152
|
}, [handle, onError]);
|
|
@@ -3196,6 +3205,7 @@ const ImgRefForwarding = ({ onError, maxRetries = 2, src, ...props }, ref) => {
|
|
|
3196
3205
|
}
|
|
3197
3206
|
if (((_g = errors.current[(_f = imageRef.current) === null || _f === void 0 ? void 0 : _f.src]) !== null && _g !== void 0 ? _g : 0) <= maxRetries) {
|
|
3198
3207
|
const backoff = exponentialBackoff((_j = errors.current[(_h = imageRef.current) === null || _h === void 0 ? void 0 : _h.src]) !== null && _j !== void 0 ? _j : 0);
|
|
3208
|
+
// eslint-disable-next-line no-console
|
|
3199
3209
|
console.warn(`Could not load image with source ${(_k = imageRef.current) === null || _k === void 0 ? void 0 : _k.src}, retrying again in ${backoff}ms`);
|
|
3200
3210
|
retryIn(backoff);
|
|
3201
3211
|
return;
|
|
@@ -3214,6 +3224,7 @@ const ImgRefForwarding = ({ onError, maxRetries = 2, src, ...props }, ref) => {
|
|
|
3214
3224
|
var _a, _b, _c, _d;
|
|
3215
3225
|
if (((_b = errors.current[(_a = imageRef.current) === null || _a === void 0 ? void 0 : _a.src]) !== null && _b !== void 0 ? _b : 0) > 0) {
|
|
3216
3226
|
delete errors.current[(_c = imageRef.current) === null || _c === void 0 ? void 0 : _c.src];
|
|
3227
|
+
// eslint-disable-next-line no-console
|
|
3217
3228
|
console.info(`Retry successful - ${(_d = imageRef.current) === null || _d === void 0 ? void 0 : _d.src} is now loaded`);
|
|
3218
3229
|
}
|
|
3219
3230
|
continueRender(newHandle);
|
|
@@ -3519,6 +3530,7 @@ const WATCH_REMOTION_STATIC_FILES = 'remotion_staticFilesChanged';
|
|
|
3519
3530
|
const watchStaticFile = (fileName, callback) => {
|
|
3520
3531
|
// Check if function is called in Remotion Studio
|
|
3521
3532
|
if (!getRemotionEnvironment().isStudio) {
|
|
3533
|
+
// eslint-disable-next-line no-console
|
|
3522
3534
|
console.warn('The API is only available while using the Remotion Studio.');
|
|
3523
3535
|
return { cancel: () => undefined };
|
|
3524
3536
|
}
|
|
@@ -4568,6 +4580,7 @@ const VideoForDevelopmentRefForwardingFunction = (props, ref) => {
|
|
|
4568
4580
|
const errorHandler = () => {
|
|
4569
4581
|
var _a;
|
|
4570
4582
|
if (current === null || current === void 0 ? void 0 : current.error) {
|
|
4583
|
+
// eslint-disable-next-line no-console
|
|
4571
4584
|
console.error('Error occurred in video', current === null || current === void 0 ? void 0 : current.error);
|
|
4572
4585
|
// If user is handling the error, we don't cause an unhandled exception
|
|
4573
4586
|
if (props.onError) {
|
|
@@ -4787,6 +4800,7 @@ const VideoForRenderingForwardFunction = ({ onError, volume: volumeProp, allowAm
|
|
|
4787
4800
|
const errorHandler = () => {
|
|
4788
4801
|
var _a;
|
|
4789
4802
|
if (current === null || current === void 0 ? void 0 : current.error) {
|
|
4803
|
+
// eslint-disable-next-line no-console
|
|
4790
4804
|
console.error('Error occurred in video', current === null || current === void 0 ? void 0 : current.error);
|
|
4791
4805
|
// If user is handling the error, we don't cause an unhandled exception
|
|
4792
4806
|
if (onError) {
|
|
@@ -4919,6 +4933,7 @@ const Config = new Proxy(proxyObj, {
|
|
|
4919
4933
|
return Config;
|
|
4920
4934
|
}
|
|
4921
4935
|
return () => {
|
|
4936
|
+
/* eslint-disable no-console */
|
|
4922
4937
|
console.warn('⚠️ The CLI configuration has been extracted from Remotion Core.');
|
|
4923
4938
|
console.warn('Update the import from the config file:');
|
|
4924
4939
|
console.warn();
|
|
@@ -4928,6 +4943,7 @@ const Config = new Proxy(proxyObj, {
|
|
|
4928
4943
|
console.warn('import {Config} from "@remotion/cli/config";');
|
|
4929
4944
|
console.warn();
|
|
4930
4945
|
console.warn('For more information, see https://www.remotion.dev/docs/4-0-migration.');
|
|
4946
|
+
/* eslint-enable no-console */
|
|
4931
4947
|
process.exit(1);
|
|
4932
4948
|
};
|
|
4933
4949
|
},
|
package/dist/esm/no-react.mjs
CHANGED
package/dist/esm/version.mjs
CHANGED