remotion 4.0.0-oops.3 → 4.0.0-preload.13

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.
@@ -1,5 +1,5 @@
1
- remotion:build: cache hit, replaying output 631f1a83aedea9d9
2
- remotion:build: 
3
- remotion:build: > remotion@3.0.7 build /Users/jonathanburger/remotion/packages/core
4
- remotion:build: > tsc -d
5
- remotion:build: 
1
+ remotion:build: cache hit, replaying output 18641be29acc0312
2
+ remotion:build: 
3
+ remotion:build: > remotion@3.0.9 build /Users/jonathanburger/remotion/packages/core
4
+ remotion:build: > tsc -d
5
+ remotion:build: 
@@ -0,0 +1,11 @@
1
+ remotion:lint: cache hit, replaying output ca801c8a64489efb
2
+ remotion:lint: 
3
+ remotion:lint: > remotion@3.0.9 lint /Users/jonathanburger/remotion/packages/core
4
+ remotion:lint: > eslint src --ext ts,tsx
5
+ remotion:lint: 
6
+ remotion:lint: 
7
+ remotion:lint: /Users/jonathanburger/remotion/packages/core/src/use-lazy-component.ts
8
+ remotion:lint:  9:50 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
9
+ remotion:lint: 
10
+ remotion:lint: ✖ 1 problem (0 errors, 1 warning)
11
+ remotion:lint: 
@@ -0,0 +1,63 @@
1
+ remotion:test: cache hit, replaying output cceb170b4f03ca12
2
+ remotion:test: 
3
+ remotion:test: > remotion@3.0.9 test /Users/jonathanburger/remotion/packages/core
4
+ remotion:test: > jest --coverage && node generate-badges.js
5
+ remotion:test: 
6
+ remotion:test: watchman warning: Recrawled this watch 25 times, most recently because:
7
+ remotion:test: MustScanSubDirs UserDroppedTo resolve, please review the information on
8
+ remotion:test: https://facebook.github.io/watchman/docs/troubleshooting.html#recrawl
9
+ remotion:test: To clear this warning, run:
10
+ remotion:test: `watchman watch-del '/Users/jonathanburger/remotion' ; watchman watch-project '/Users/jonathanburger/remotion'`
11
+ remotion:test: 
12
+ remotion:test: PASS src/test/easing.test.ts (16.995 s)
13
+ remotion:test: PASS src/test/interpolate.test.ts (17.428 s)
14
+ remotion:test: PASS src/test/crf.test.ts (17.267 s)
15
+ remotion:test: PASS src/test/volume-prop.test.ts
16
+ remotion:test: PASS src/test/interpolateColors.test.ts
17
+ remotion:test: PASS src/test/nested-sequences.test.tsx (21.573 s)
18
+ remotion:test: PASS src/test/pixel-format.test.ts
19
+ remotion:test: PASS src/test/media-validation.test.tsx
20
+ remotion:test: PASS src/test/random.test.ts
21
+ remotion:test: PASS src/test/image-format.test.ts
22
+ remotion:test: PASS src/test/codec.test.ts
23
+ remotion:test: PASS src/test/get-current-time.test.ts
24
+ remotion:test: PASS src/test/range.test.tsx (9.35 s)
25
+ remotion:test: PASS src/test/audio-for-rendering.test.tsx (7.636 s)
26
+ remotion:test: PASS src/test/sequence-validation.test.tsx
27
+ remotion:test: PASS src/test/use-audio-frame.test.tsx (5.104 s)
28
+ remotion:test: PASS src/test/freeze.test.tsx (6.656 s)
29
+ remotion:test: PASS src/test/composition-validation.test.tsx (32.821 s)
30
+ remotion:test: PASS src/test/validate-start-from-props.test.ts
31
+ remotion:test: PASS src/test/series.test.tsx (32.945 s)
32
+ remotion:test: PASS src/test/loop-validation.test.tsx (32.887 s)
33
+ remotion:test: PASS src/test/composition-rules.test.tsx (5.824 s)
34
+ remotion:test: PASS src/test/log.test.ts
35
+ remotion:test: PASS src/test/measure-spring.test.ts
36
+ remotion:test: PASS src/test/pro-res-profile.test.ts
37
+ remotion:test: PASS src/test/video.test.tsx (8.266 s)
38
+ remotion:test: PASS src/test/bezier.test.ts
39
+ remotion:test: PASS src/test/use-media-tag-volume.test.tsx
40
+ remotion:test: PASS src/test/quality.test.ts
41
+ remotion:test: PASS src/test/use-sync-volume-with-media-tag.test.ts
42
+ remotion:test: PASS src/test/image-sequence.test.ts
43
+ remotion:test: PASS src/test/overwrite.test.ts
44
+ remotion:test: PASS src/test/input-props.test.ts
45
+ remotion:test: PASS src/test/validate-frame.test.ts
46
+ remotion:test: PASS src/test/preview-server.test.ts
47
+ remotion:test: PASS src/test/concurrency.test.ts
48
+ remotion:test: PASS src/test/spring.test.ts
49
+ remotion:test: PASS src/test/webpack-caching.test.ts
50
+ remotion:test: PASS src/test/ready-manager.test.ts
51
+ remotion:test: PASS src/test/use-media-in-timeline.test.tsx
52
+ remotion:test: PASS src/test/get-asset-file-name.test.ts
53
+ remotion:test: PASS src/test/truthy.test.ts
54
+ remotion:test: PASS src/test/absolute-src.test.ts
55
+ remotion:test: PASS src/test/validate-image-format.test.ts
56
+ remotion:test: PASS src/test/audio.test.tsx (7.831 s)
57
+ remotion:test: PASS src/test/Img.test.tsx
58
+ remotion:test: 
59
+ remotion:test: Test Suites: 46 passed, 46 total
60
+ remotion:test: Tests: 474 passed, 474 total
61
+ remotion:test: Snapshots: 0 total
62
+ remotion:test: Time: 43.001 s
63
+ remotion:test: Ran all test suites.
package/dist/Img.js CHANGED
@@ -5,19 +5,26 @@ const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const delay_render_1 = require("./delay-render");
7
7
  const ImgRefForwarding = ({ onLoad, onError, ...props }, ref) => {
8
- const [handle] = (0, react_1.useState)(() => (0, delay_render_1.delayRender)('Loading <Img> with src=' + props.src));
8
+ const [handle, setHandle] = (0, react_1.useState)(() => {
9
+ return null;
10
+ });
9
11
  (0, react_1.useEffect)(() => {
10
12
  if (ref &&
11
- ref.current.complete) {
13
+ ref.current.complete &&
14
+ handle) {
12
15
  (0, delay_render_1.continueRender)(handle);
13
16
  }
14
17
  }, [handle, ref]);
15
18
  const didLoad = (0, react_1.useCallback)((e) => {
16
- (0, delay_render_1.continueRender)(handle);
19
+ if (handle) {
20
+ (0, delay_render_1.continueRender)(handle);
21
+ }
17
22
  onLoad === null || onLoad === void 0 ? void 0 : onLoad(e);
18
23
  }, [handle, onLoad]);
19
24
  const didGetError = (0, react_1.useCallback)((e) => {
20
- (0, delay_render_1.continueRender)(handle);
25
+ if (handle) {
26
+ (0, delay_render_1.continueRender)(handle);
27
+ }
21
28
  if (onError) {
22
29
  onError(e);
23
30
  }
@@ -25,6 +32,15 @@ const ImgRefForwarding = ({ onLoad, onError, ...props }, ref) => {
25
32
  console.error('Error loading image:', e, 'Handle the event using the onError() prop to make this message disappear.');
26
33
  }
27
34
  }, [handle, onError]);
35
+ // If image source switches, make new handle
36
+ (0, react_1.useEffect)(() => {
37
+ const newHandle = (0, delay_render_1.delayRender)('Loading <Img> with src=' + props.src);
38
+ setHandle(newHandle);
39
+ // If tag gets unmounted, clear pending handles because image is not going to load
40
+ return () => {
41
+ (0, delay_render_1.continueRender)(newHandle);
42
+ };
43
+ }, [props.src]);
28
44
  return (0, jsx_runtime_1.jsx)("img", { ...props, ref: ref, onLoad: didLoad, onError: didGetError }, void 0);
29
45
  };
30
46
  exports.Img = (0, react_1.forwardRef)(ImgRefForwarding);
package/dist/Still.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  import { StillProps } from './Composition';
3
2
  export declare const Still: <T>(props: StillProps<T>) => JSX.Element;
@@ -4,7 +4,7 @@ export declare const getChromiumDisableWebSecurity: () => boolean;
4
4
  export declare const setChromiumDisableWebSecurity: (should: boolean) => void;
5
5
  export declare const getIgnoreCertificateErrors: () => boolean;
6
6
  export declare const setChromiumIgnoreCertificateErrors: (should: boolean) => void;
7
- export declare const getChromiumOpenGlRenderer: () => "angle" | "egl" | "swiftshader" | null;
7
+ export declare const getChromiumOpenGlRenderer: () => "swangle" | "angle" | "egl" | "swiftshader" | null;
8
8
  export declare const setChromiumOpenGlRenderer: (renderer: OpenGlRenderer) => void;
9
9
  export declare const getChromiumHeadlessMode: () => boolean;
10
10
  export declare const setChromiumHeadlessMode: (should: boolean) => void;
@@ -73,10 +73,10 @@ export declare const Config: {
73
73
  */
74
74
  readonly setChromiumHeadlessMode: (should: boolean) => void;
75
75
  /**
76
- * Set the OpenGL rendering backend for Chrome. Possible values: 'egl', 'angle' and 'swiftshader'.
77
- * Default: 'swiftshader' in Lambda, 'angle' elsewhere.
76
+ * Set the OpenGL rendering backend for Chrome. Possible values: 'egl', 'angle', 'swiftshader' and 'swangle'.
77
+ * Default: 'swangle' in Lambda, null elsewhere.
78
78
  */
79
- readonly setChromiumOpenGlRenderer: (renderer: "angle" | "egl" | "swiftshader") => void;
79
+ readonly setChromiumOpenGlRenderer: (renderer: "swangle" | "angle" | "egl" | "swiftshader") => void;
80
80
  };
81
81
  readonly Rendering: {
82
82
  /**
@@ -87,8 +87,8 @@ exports.Config = {
87
87
  */
88
88
  setChromiumHeadlessMode: chromium_flags_1.setChromiumHeadlessMode,
89
89
  /**
90
- * Set the OpenGL rendering backend for Chrome. Possible values: 'egl', 'angle' and 'swiftshader'.
91
- * Default: 'swiftshader' in Lambda, 'angle' elsewhere.
90
+ * Set the OpenGL rendering backend for Chrome. Possible values: 'egl', 'angle', 'swiftshader' and 'swangle'.
91
+ * Default: 'swangle' in Lambda, null elsewhere.
92
92
  */
93
93
  setChromiumOpenGlRenderer: chromium_flags_1.setChromiumOpenGlRenderer,
94
94
  },
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { CompProps } from './Composition';
3
2
  import { CompositionManagerContext, RenderAssetInfo, TAsset, TCompMetadata, TComposition, TSequence } from './CompositionManager';
4
3
  import * as AssetCompression from './compress-assets';
@@ -93,9 +92,7 @@ export declare const Internals: {
93
92
  RemotionContextProvider: (props: import("./wrap-remotion-context").RemotionContextProviderProps) => JSX.Element;
94
93
  CSSUtils: typeof CSSUtils;
95
94
  setupEnvVariables: () => void;
96
- setupInitialFrame: () => void;
97
95
  ENV_VARIABLES_ENV_NAME: "ENV_VARIABLES";
98
- INITIAL_FRAME_LOCAL_STORAGE_KEY: string;
99
96
  getDotEnvLocation: () => string | null;
100
97
  getServerPort: () => number | undefined;
101
98
  MediaVolumeContext: import("react").Context<MediaVolumeContextValue>;
@@ -138,10 +135,10 @@ export declare const Internals: {
138
135
  getCurrentPuppeteerTimeout: () => number;
139
136
  getChromiumDisableWebSecurity: () => boolean;
140
137
  getIgnoreCertificateErrors: () => boolean;
141
- validateOpenGlRenderer: (option: "angle" | "egl" | "swiftshader" | null) => "angle" | "egl" | "swiftshader" | null;
142
- getChromiumOpenGlRenderer: () => "angle" | "egl" | "swiftshader" | null;
138
+ validateOpenGlRenderer: (option: "swangle" | "angle" | "egl" | "swiftshader" | null) => "swangle" | "angle" | "egl" | "swiftshader" | null;
139
+ getChromiumOpenGlRenderer: () => "swangle" | "angle" | "egl" | "swiftshader" | null;
143
140
  getChromiumHeadlessMode: () => boolean;
144
- DEFAULT_OPENGL_RENDERER: "angle" | "egl" | "swiftshader" | null;
141
+ DEFAULT_OPENGL_RENDERER: "swangle" | "angle" | "egl" | "swiftshader" | null;
145
142
  getPreviewDomElement: () => HTMLElement | null;
146
143
  compositionsRef: import("react").RefObject<{
147
144
  getCompositions: () => TCompMetadata[];
package/dist/internals.js CHANGED
@@ -51,7 +51,6 @@ const delay_render_1 = require("./delay-render");
51
51
  const feature_flags_1 = require("./feature-flags");
52
52
  const get_environment_1 = require("./get-environment");
53
53
  const get_preview_dom_element_1 = require("./get-preview-dom-element");
54
- const initial_frame_1 = require("./initial-frame");
55
54
  const is_audio_codec_1 = require("./is-audio-codec");
56
55
  const perf = __importStar(require("./perf"));
57
56
  const register_root_1 = require("./register-root");
@@ -125,9 +124,7 @@ exports.Internals = {
125
124
  RemotionContextProvider: wrap_remotion_context_1.RemotionContextProvider,
126
125
  CSSUtils,
127
126
  setupEnvVariables: setup_env_variables_1.setupEnvVariables,
128
- setupInitialFrame: initial_frame_1.setupInitialFrame,
129
127
  ENV_VARIABLES_ENV_NAME: setup_env_variables_1.ENV_VARIABLES_ENV_NAME,
130
- INITIAL_FRAME_LOCAL_STORAGE_KEY: initial_frame_1.INITIAL_FRAME_LOCAL_STORAGE_KEY,
131
128
  getDotEnvLocation: env_file_1.getDotEnvLocation,
132
129
  getServerPort: preview_server_1.getServerPort,
133
130
  MediaVolumeContext: volume_position_state_1.MediaVolumeContext,
@@ -1,4 +1,4 @@
1
- declare const validRenderers: readonly ["angle", "egl", "swiftshader"];
1
+ declare const validRenderers: readonly ["swangle", "angle", "egl", "swiftshader"];
2
2
  export declare type OpenGlRenderer = typeof validRenderers[number];
3
3
  export declare const validateOpenGlRenderer: (option: OpenGlRenderer | null) => OpenGlRenderer | null;
4
4
  export {};
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.validateOpenGlRenderer = void 0;
4
- const validRenderers = ['angle', 'egl', 'swiftshader'];
4
+ const validRenderers = ['swangle', 'angle', 'egl', 'swiftshader'];
5
5
  const validateOpenGlRenderer = (option) => {
6
6
  if (option === null) {
7
7
  return null;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { RemotionOffthreadVideoProps } from './props';
3
+ export declare const OffthreadVideo: React.ForwardRefExoticComponent<Pick<RemotionOffthreadVideoProps, "volume" | "playbackRate" | "key" | "muted" | keyof React.ImgHTMLAttributes<HTMLImageElement>> & React.RefAttributes<HTMLImageElement>>;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OffthreadVideo = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const absolute_src_1 = require("../absolute-src");
7
+ const use_audio_frame_1 = require("../audio/use-audio-frame");
8
+ const CompositionManager_1 = require("../CompositionManager");
9
+ const Img_1 = require("../Img");
10
+ const random_1 = require("../random");
11
+ const sequencing_1 = require("../sequencing");
12
+ const use_frame_1 = require("../use-frame");
13
+ const use_unsafe_video_config_1 = require("../use-unsafe-video-config");
14
+ const volume_prop_1 = require("../volume-prop");
15
+ const get_current_time_1 = require("./get-current-time");
16
+ const OffthreadVideoForRenderingForwardFunction = ({ onError, volume: volumeProp, playbackRate, src, ...props }, ref) => {
17
+ const absoluteFrame = (0, use_frame_1.useAbsoluteCurrentFrame)();
18
+ const frame = (0, use_frame_1.useCurrentFrame)();
19
+ const volumePropsFrame = (0, use_audio_frame_1.useFrameForVolumeProp)();
20
+ const videoConfig = (0, use_unsafe_video_config_1.useUnsafeVideoConfig)();
21
+ const imageRef = (0, react_1.useRef)(null);
22
+ const sequenceContext = (0, react_1.useContext)(sequencing_1.SequenceContext);
23
+ const mediaStartsAt = (0, use_audio_frame_1.useMediaStartsAt)();
24
+ (0, react_1.useImperativeHandle)(ref, () => {
25
+ return imageRef.current;
26
+ });
27
+ const { registerAsset, unregisterAsset } = (0, react_1.useContext)(CompositionManager_1.CompositionManager);
28
+ if (!src) {
29
+ throw new TypeError('No `src` was passed to <OffthreadVideo>.');
30
+ }
31
+ // Generate a string that's as unique as possible for this asset
32
+ // but at the same time the same on all threads
33
+ const id = (0, react_1.useMemo)(() => `video-${(0, random_1.random)(src !== null && src !== void 0 ? src : '')}-${sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.cumulatedFrom}-${sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.relativeFrom}-${sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.durationInFrames}-muted:${props.muted}`, [
34
+ src,
35
+ props.muted,
36
+ sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.cumulatedFrom,
37
+ sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.relativeFrom,
38
+ sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.durationInFrames,
39
+ ]);
40
+ if (!videoConfig) {
41
+ throw new Error('No video config found');
42
+ }
43
+ const volume = (0, volume_prop_1.evaluateVolume)({
44
+ volume: volumeProp,
45
+ frame: volumePropsFrame,
46
+ mediaVolume: 1,
47
+ });
48
+ (0, react_1.useEffect)(() => {
49
+ if (!src) {
50
+ throw new Error('No src passed');
51
+ }
52
+ if (props.muted) {
53
+ return;
54
+ }
55
+ registerAsset({
56
+ type: 'video',
57
+ src: (0, absolute_src_1.getAbsoluteSrc)(src),
58
+ id,
59
+ frame: absoluteFrame,
60
+ volume,
61
+ mediaFrame: frame,
62
+ playbackRate: playbackRate !== null && playbackRate !== void 0 ? playbackRate : 1,
63
+ });
64
+ return () => unregisterAsset(id);
65
+ }, [
66
+ props.muted,
67
+ src,
68
+ registerAsset,
69
+ id,
70
+ unregisterAsset,
71
+ volume,
72
+ frame,
73
+ absoluteFrame,
74
+ playbackRate,
75
+ ]);
76
+ const currentTime = (0, react_1.useMemo)(() => {
77
+ return (0, get_current_time_1.getMediaTime)({
78
+ fps: videoConfig.fps,
79
+ frame,
80
+ src,
81
+ playbackRate: playbackRate || 1,
82
+ startFrom: -mediaStartsAt,
83
+ });
84
+ }, [frame, mediaStartsAt, playbackRate, src, videoConfig.fps]);
85
+ const actualSrc = (0, react_1.useMemo)(() => {
86
+ return `https://remotionoffthreadvideo.com/proxy?src=${encodeURIComponent(src)}&time=${encodeURIComponent(currentTime)}`;
87
+ }, [currentTime, src]);
88
+ return (0, jsx_runtime_1.jsx)(Img_1.Img, { ref: imageRef, src: actualSrc, ...props, onError: onError }, void 0);
89
+ };
90
+ exports.OffthreadVideo = (0, react_1.forwardRef)(OffthreadVideoForRenderingForwardFunction);
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { RemotionMainVideoProps } from './props';
3
- export declare const Video: React.ForwardRefExoticComponent<Pick<Omit<React.DetailedHTMLProps<React.VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, "autoPlay" | "controls" | "loop" | "onEnded"> & {
3
+ export declare const Video: React.ForwardRefExoticComponent<Pick<Omit<React.DetailedHTMLProps<React.VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, "onEnded" | "autoPlay" | "controls" | "loop"> & {
4
4
  volume?: import("../volume-prop").VolumeProp | undefined;
5
5
  playbackRate?: number | undefined;
6
- } & RemotionMainVideoProps, "key" | "height" | "playsInline" | "poster" | "width" | "disablePictureInPicture" | "disableRemotePlayback" | "controlsList" | "crossOrigin" | "mediaGroup" | "muted" | "preload" | "src" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "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" | "playbackRate" | keyof RemotionMainVideoProps> & React.RefAttributes<HTMLVideoElement>>;
6
+ } & RemotionMainVideoProps, "style" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "slot" | "spellCheck" | "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" | "height" | "width" | "src" | "volume" | "playbackRate" | "controlsList" | "crossOrigin" | "mediaGroup" | "muted" | "playsInline" | "preload" | "key" | "poster" | "disablePictureInPicture" | "disableRemotePlayback" | keyof RemotionMainVideoProps> & React.RefAttributes<HTMLVideoElement>>;
@@ -1,3 +1,3 @@
1
1
  import React from 'react';
2
2
  import { RemotionVideoProps } from './props';
3
- export declare const VideoForRendering: React.ForwardRefExoticComponent<Pick<RemotionVideoProps, "key" | "height" | "playsInline" | "poster" | "width" | "disablePictureInPicture" | "disableRemotePlayback" | "controlsList" | "crossOrigin" | "mediaGroup" | "muted" | "preload" | "src" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "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" | "playbackRate"> & React.RefAttributes<HTMLVideoElement>>;
3
+ export declare const VideoForRendering: React.ForwardRefExoticComponent<Pick<RemotionVideoProps, "style" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "slot" | "spellCheck" | "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" | "height" | "width" | "src" | "volume" | "playbackRate" | "controlsList" | "crossOrigin" | "mediaGroup" | "muted" | "playsInline" | "preload" | "key" | "poster" | "disablePictureInPicture" | "disableRemotePlayback"> & React.RefAttributes<HTMLVideoElement>>;
@@ -103,36 +103,36 @@ const VideoForRenderingForwardFunction = ({ onError, volume: volumeProp, playbac
103
103
  return;
104
104
  }
105
105
  videoRef.current.currentTime = currentTime;
106
- // @ts-expect-error
107
- videoRef.current.requestVideoFrameCallback((now, metadata) => {
108
- window.requestAnimationFrame(() => {
109
- var _a, _b, _c, _d;
110
- if (window.navigator.platform.startsWith('Mac')) {
111
- // Improve me: This is ensures frame perfectness but slows down render.
112
- // Please see this issue for context: https://github.com/remotion-dev/remotion/issues/200
113
- // Only affects macOS since it uses VideoToolbox decoding.
114
- console.log('new frame ', frame, now, JSON.stringify(metadata), (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.readyState, (_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.currentTime, currentTime);
106
+ videoRef.current.addEventListener('seeked', () => {
107
+ if (window.navigator.platform.startsWith('Mac')) {
108
+ // Improve me: This is ensures frame perfectness but slows down render.
109
+ // Please see this issue for context: https://github.com/remotion-dev/remotion/issues/200
110
+ // Only affects macOS since it uses VideoToolbox decoding.
111
+ setTimeout(() => {
115
112
  (0, delay_render_1.continueRender)(handle);
116
- }
117
- else {
118
- console.log('new frame ', frame, now, JSON.stringify(metadata), (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.readyState, (_d = videoRef.current) === null || _d === void 0 ? void 0 : _d.currentTime, currentTime);
119
- (0, delay_render_1.continueRender)(handle);
120
- }
121
- });
122
- });
113
+ }, 100);
114
+ }
115
+ else {
116
+ (0, delay_render_1.continueRender)(handle);
117
+ }
118
+ }, { once: true });
123
119
  videoRef.current.addEventListener('ended', () => {
124
120
  (0, delay_render_1.continueRender)(handle);
125
121
  }, { once: true });
126
122
  videoRef.current.addEventListener('error', () => {
127
123
  var _a, _b, _c, _d;
128
124
  if ((_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.error) {
129
- console.error('Error occurred in video', (_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.error.toString());
125
+ console.error('Error occurred in video', (_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.error);
130
126
  throw new Error(`The browser threw an error while playing the video: ${(_d = (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.error) === null || _d === void 0 ? void 0 : _d.message}`);
131
127
  }
132
128
  else {
133
129
  throw new Error('The browser threw an errir');
134
130
  }
135
131
  }, { once: true });
132
+ // If video skips to another frame or unmounts, we clear the created handle
133
+ return () => {
134
+ (0, delay_render_1.continueRender)(handle);
135
+ };
136
136
  }, [
137
137
  volumePropsFrame,
138
138
  props.src,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "remotion",
3
- "version": "4.0.0-oops.3+31c506229",
3
+ "version": "4.0.0-preload.13+f7b159495",
4
4
  "description": "Render videos in React",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -55,5 +55,5 @@
55
55
  "publishConfig": {
56
56
  "access": "public"
57
57
  },
58
- "gitHead": "31c506229ccf43f67dee263b0edce90ebbb2e22e"
58
+ "gitHead": "f7b1594951e881444050f2f9d4af8d442bbec942"
59
59
  }