@remotion/three 4.0.344 → 4.0.345

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.
@@ -5,14 +5,15 @@ const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const remotion_1 = require("remotion");
7
7
  const Unblocker = () => {
8
+ const { delayRender, continueRender } = (0, remotion_1.useDelayRender)();
8
9
  if (typeof document !== 'undefined') {
9
10
  // eslint-disable-next-line react-hooks/rules-of-hooks
10
11
  (0, react_1.useLayoutEffect)(() => {
11
- const handle = (0, remotion_1.delayRender)(`Waiting for <Suspense /> of <ThreeCanvas /> to resolve`);
12
+ const handle = delayRender(`Waiting for <Suspense /> of <ThreeCanvas /> to resolve`);
12
13
  return () => {
13
- (0, remotion_1.continueRender)(handle);
14
+ continueRender(handle);
14
15
  };
15
- }, []);
16
+ }, [continueRender, delayRender]);
16
17
  }
17
18
  return null;
18
19
  };
@@ -34,7 +34,8 @@ const ThreeCanvas = (props) => {
34
34
  // https://r3f.docs.pmnd.rs/advanced/scaling-performance#on-demand-rendering
35
35
  const shouldUseFrameloopDemand = isRendering;
36
36
  const { children, width, height, style, onCreated, ...rest } = props;
37
- const [waitForCreated] = (0, react_1.useState)(() => (0, remotion_1.delayRender)('Waiting for <ThreeCanvas/> to be created'));
37
+ const { delayRender, continueRender } = (0, remotion_1.useDelayRender)();
38
+ const [waitForCreated] = (0, react_1.useState)(() => delayRender('Waiting for <ThreeCanvas/> to be created'));
38
39
  (0, validate_1.validateDimension)(width, 'width', 'of the <ThreeCanvas /> component');
39
40
  (0, validate_1.validateDimension)(height, 'height', 'of the <ThreeCanvas /> component');
40
41
  const contexts = remotion_1.Internals.useRemotionContexts();
@@ -44,9 +45,9 @@ const ThreeCanvas = (props) => {
44
45
  ...(style !== null && style !== void 0 ? style : {}),
45
46
  };
46
47
  const remotion_onCreated = (0, react_1.useCallback)((state) => {
47
- (0, remotion_1.continueRender)(waitForCreated);
48
+ continueRender(waitForCreated);
48
49
  onCreated === null || onCreated === void 0 ? void 0 : onCreated(state);
49
- }, [onCreated, waitForCreated]);
50
+ }, [onCreated, waitForCreated, continueRender]);
50
51
  return ((0, jsx_runtime_1.jsx)(SuspenseLoader_1.SuspenseLoader, { children: (0, jsx_runtime_1.jsxs)(fiber_1.Canvas, { style: actualStyle, ...rest, frameloop: shouldUseFrameloopDemand ? 'demand' : 'always', onCreated: remotion_onCreated, children: [(0, jsx_runtime_1.jsx)(Scale, { width: width, height: height }), (0, jsx_runtime_1.jsxs)(remotion_1.Internals.RemotionContextProvider, { contexts: contexts, children: [shouldUseFrameloopDemand && (0, jsx_runtime_1.jsx)(FiberFrameInvalidator, {}), children] })] }) }));
51
52
  };
52
53
  exports.ThreeCanvas = ThreeCanvas;
@@ -59,8 +59,9 @@ const useInnerVideoTexture = ({ playbackRate, src, transparent, toneMapped, dela
59
59
  }, [toneMapped, currentTime, src, transparent]);
60
60
  const [textLoaderPromise] = (0, react_1.useState)(() => Promise.resolve().then(() => __importStar(require('three/src/loaders/TextureLoader.js'))));
61
61
  const [imageTexture, setImageTexture] = (0, react_1.useState)(null);
62
+ const { delayRender, continueRender } = (0, remotion_1.useDelayRender)();
62
63
  const fetchTexture = (0, react_1.useCallback)(() => {
63
- const imageTextureHandle = (0, remotion_1.delayRender)('fetch offthread video frame', {
64
+ const imageTextureHandle = delayRender('fetch offthread video frame', {
64
65
  retries: delayRenderRetries !== null && delayRenderRetries !== void 0 ? delayRenderRetries : undefined,
65
66
  timeoutInMilliseconds: delayRenderTimeoutInMilliseconds !== null && delayRenderTimeoutInMilliseconds !== void 0 ? delayRenderTimeoutInMilliseconds : undefined,
66
67
  });
@@ -75,7 +76,7 @@ const useInnerVideoTexture = ({ playbackRate, src, transparent, toneMapped, dela
75
76
  return;
76
77
  }
77
78
  setImageTexture(texture);
78
- (0, remotion_1.continueRender)(imageTextureHandle);
79
+ continueRender(imageTextureHandle);
79
80
  })
80
81
  .catch((err) => {
81
82
  (0, remotion_1.cancelRender)(err);
@@ -84,13 +85,15 @@ const useInnerVideoTexture = ({ playbackRate, src, transparent, toneMapped, dela
84
85
  return () => {
85
86
  cleanedUp = true;
86
87
  textureLoaded === null || textureLoaded === void 0 ? void 0 : textureLoaded.dispose();
87
- (0, remotion_1.continueRender)(imageTextureHandle);
88
+ continueRender(imageTextureHandle);
88
89
  };
89
90
  }, [
90
91
  offthreadVideoFrameSrc,
91
92
  textLoaderPromise,
92
93
  delayRenderRetries,
93
94
  delayRenderTimeoutInMilliseconds,
95
+ continueRender,
96
+ delayRender,
94
97
  ]);
95
98
  (0, react_1.useLayoutEffect)(() => {
96
99
  const cleanup = fetchTexture();
@@ -50,11 +50,12 @@ const warnAboutRequestVideoFrameCallback = () => {
50
50
  * @see [Documentation](https://www.remotion.dev/docs/use-video-texture)
51
51
  */
52
52
  const useVideoTexture = (videoRef) => {
53
+ const { delayRender, continueRender } = (0, remotion_1.useDelayRender)();
53
54
  const [loaded] = (0, react_1.useState)(() => {
54
55
  if (typeof document === 'undefined') {
55
56
  return 0;
56
57
  }
57
- return (0, remotion_1.delayRender)(`Waiting for texture in useVideoTexture() to be loaded`);
58
+ return delayRender(`Waiting for texture in useVideoTexture() to be loaded`);
58
59
  });
59
60
  const [videoTexture, setVideoTexture] = (0, react_1.useState)(null);
60
61
  const [vidText] = (0, react_1.useState)(() => Promise.resolve().then(() => __importStar(require('three/src/textures/VideoTexture.js'))));
@@ -69,12 +70,12 @@ const useVideoTexture = (videoRef) => {
69
70
  videoRef.current.width = videoRef.current.videoWidth;
70
71
  videoRef.current.height = videoRef.current.videoHeight;
71
72
  setVideoTexture(vt);
72
- (0, remotion_1.continueRender)(loaded);
73
+ continueRender(loaded);
73
74
  })
74
75
  .catch((err) => {
75
76
  (0, remotion_1.cancelRender)(err);
76
77
  });
77
- }, [loaded, vidText, videoRef]);
78
+ }, [loaded, vidText, videoRef, continueRender]);
78
79
  react_1.default.useLayoutEffect(() => {
79
80
  if (!videoRef.current) {
80
81
  return;
@@ -105,12 +106,12 @@ const useVideoTexture = (videoRef) => {
105
106
  (0, react_1.useEffect)(() => {
106
107
  // Clean up on unmount
107
108
  return () => {
108
- (0, remotion_1.continueRender)(loaded);
109
+ continueRender(loaded);
109
110
  };
110
- }, [loaded]);
111
+ }, [loaded, continueRender]);
111
112
  if (typeof HTMLVideoElement === 'undefined' ||
112
113
  !HTMLVideoElement.prototype.requestVideoFrameCallback) {
113
- (0, remotion_1.continueRender)(loaded);
114
+ continueRender(loaded);
114
115
  return null;
115
116
  }
116
117
  return videoTexture;
@@ -27,24 +27,24 @@ import { Canvas, useThree } from "@react-three/fiber";
27
27
  import { useCallback, useEffect, useLayoutEffect as useLayoutEffect2, useState } from "react";
28
28
  import {
29
29
  Internals,
30
- continueRender as continueRender2,
31
- delayRender as delayRender2,
32
30
  useCurrentFrame,
31
+ useDelayRender as useDelayRender2,
33
32
  useRemotionEnvironment
34
33
  } from "remotion";
35
34
 
36
35
  // src/SuspenseLoader.tsx
37
36
  import { Suspense, useLayoutEffect } from "react";
38
- import { continueRender, delayRender } from "remotion";
37
+ import { useDelayRender } from "remotion";
39
38
  import { jsx } from "react/jsx-runtime";
40
39
  var Unblocker = () => {
40
+ const { delayRender, continueRender } = useDelayRender();
41
41
  if (typeof document !== "undefined") {
42
42
  useLayoutEffect(() => {
43
43
  const handle = delayRender(`Waiting for <Suspense /> of <ThreeCanvas /> to resolve`);
44
44
  return () => {
45
45
  continueRender(handle);
46
46
  };
47
- }, []);
47
+ }, [continueRender, delayRender]);
48
48
  }
49
49
  return null;
50
50
  };
@@ -86,7 +86,8 @@ var ThreeCanvas = (props) => {
86
86
  const { isRendering } = useRemotionEnvironment();
87
87
  const shouldUseFrameloopDemand = isRendering;
88
88
  const { children, width, height, style, onCreated, ...rest } = props;
89
- const [waitForCreated] = useState(() => delayRender2("Waiting for <ThreeCanvas/> to be created"));
89
+ const { delayRender, continueRender } = useDelayRender2();
90
+ const [waitForCreated] = useState(() => delayRender("Waiting for <ThreeCanvas/> to be created"));
90
91
  validateDimension(width, "width", "of the <ThreeCanvas /> component");
91
92
  validateDimension(height, "height", "of the <ThreeCanvas /> component");
92
93
  const contexts = Internals.useRemotionContexts();
@@ -96,9 +97,9 @@ var ThreeCanvas = (props) => {
96
97
  ...style ?? {}
97
98
  };
98
99
  const remotion_onCreated = useCallback((state) => {
99
- continueRender2(waitForCreated);
100
+ continueRender(waitForCreated);
100
101
  onCreated?.(state);
101
- }, [onCreated, waitForCreated]);
102
+ }, [onCreated, waitForCreated, continueRender]);
102
103
  return /* @__PURE__ */ jsx2(SuspenseLoader, {
103
104
  children: /* @__PURE__ */ jsxs(Canvas, {
104
105
  style: actualStyle,
@@ -126,9 +127,8 @@ import { useCallback as useCallback2, useLayoutEffect as useLayoutEffect3, useMe
126
127
  import {
127
128
  Internals as Internals2,
128
129
  cancelRender,
129
- continueRender as continueRender3,
130
- delayRender as delayRender3,
131
130
  useCurrentFrame as useCurrentFrame2,
131
+ useDelayRender as useDelayRender3,
132
132
  useRemotionEnvironment as useRemotionEnvironment2,
133
133
  useVideoConfig
134
134
  } from "remotion";
@@ -161,8 +161,9 @@ var useInnerVideoTexture = ({
161
161
  }, [toneMapped, currentTime, src, transparent]);
162
162
  const [textLoaderPromise] = useState2(() => import("three/src/loaders/TextureLoader.js"));
163
163
  const [imageTexture, setImageTexture] = useState2(null);
164
+ const { delayRender, continueRender } = useDelayRender3();
164
165
  const fetchTexture = useCallback2(() => {
165
- const imageTextureHandle = delayRender3("fetch offthread video frame", {
166
+ const imageTextureHandle = delayRender("fetch offthread video frame", {
166
167
  retries: delayRenderRetries ?? undefined,
167
168
  timeoutInMilliseconds: delayRenderTimeoutInMilliseconds ?? undefined
168
169
  });
@@ -175,7 +176,7 @@ var useInnerVideoTexture = ({
175
176
  return;
176
177
  }
177
178
  setImageTexture(texture);
178
- continueRender3(imageTextureHandle);
179
+ continueRender(imageTextureHandle);
179
180
  }).catch((err) => {
180
181
  cancelRender(err);
181
182
  });
@@ -183,13 +184,15 @@ var useInnerVideoTexture = ({
183
184
  return () => {
184
185
  cleanedUp = true;
185
186
  textureLoaded?.dispose();
186
- continueRender3(imageTextureHandle);
187
+ continueRender(imageTextureHandle);
187
188
  };
188
189
  }, [
189
190
  offthreadVideoFrameSrc,
190
191
  textLoaderPromise,
191
192
  delayRenderRetries,
192
- delayRenderTimeoutInMilliseconds
193
+ delayRenderTimeoutInMilliseconds,
194
+ continueRender,
195
+ delayRender
193
196
  ]);
194
197
  useLayoutEffect3(() => {
195
198
  const cleanup = fetchTexture();
@@ -226,12 +229,7 @@ function useOffthreadVideoTexture({
226
229
  }
227
230
  // src/use-video-texture.ts
228
231
  import React3, { useCallback as useCallback3, useEffect as useEffect2, useState as useState3 } from "react";
229
- import {
230
- cancelRender as cancelRender2,
231
- continueRender as continueRender4,
232
- delayRender as delayRender4,
233
- useCurrentFrame as useCurrentFrame3
234
- } from "remotion";
232
+ import { cancelRender as cancelRender2, useCurrentFrame as useCurrentFrame3, useDelayRender as useDelayRender4 } from "remotion";
235
233
  var warned = false;
236
234
  var warnAboutRequestVideoFrameCallback = () => {
237
235
  if (warned) {
@@ -241,11 +239,12 @@ var warnAboutRequestVideoFrameCallback = () => {
241
239
  console.warn("Browser does not support requestVideoFrameCallback. Cannot display video.");
242
240
  };
243
241
  var useVideoTexture = (videoRef) => {
242
+ const { delayRender, continueRender } = useDelayRender4();
244
243
  const [loaded] = useState3(() => {
245
244
  if (typeof document === "undefined") {
246
245
  return 0;
247
246
  }
248
- return delayRender4(`Waiting for texture in useVideoTexture() to be loaded`);
247
+ return delayRender(`Waiting for texture in useVideoTexture() to be loaded`);
249
248
  });
250
249
  const [videoTexture, setVideoTexture] = useState3(null);
251
250
  const [vidText] = useState3(() => import("three/src/textures/VideoTexture.js"));
@@ -259,11 +258,11 @@ var useVideoTexture = (videoRef) => {
259
258
  videoRef.current.width = videoRef.current.videoWidth;
260
259
  videoRef.current.height = videoRef.current.videoHeight;
261
260
  setVideoTexture(vt);
262
- continueRender4(loaded);
261
+ continueRender(loaded);
263
262
  }).catch((err) => {
264
263
  cancelRender2(err);
265
264
  });
266
- }, [loaded, vidText, videoRef]);
265
+ }, [loaded, vidText, videoRef, continueRender]);
267
266
  React3.useLayoutEffect(() => {
268
267
  if (!videoRef.current) {
269
268
  return;
@@ -290,11 +289,11 @@ var useVideoTexture = (videoRef) => {
290
289
  }, [frame, loaded, videoRef]);
291
290
  useEffect2(() => {
292
291
  return () => {
293
- continueRender4(loaded);
292
+ continueRender(loaded);
294
293
  };
295
- }, [loaded]);
294
+ }, [loaded, continueRender]);
296
295
  if (typeof HTMLVideoElement === "undefined" || !HTMLVideoElement.prototype.requestVideoFrameCallback) {
297
- continueRender4(loaded);
296
+ continueRender(loaded);
298
297
  return null;
299
298
  }
300
299
  return videoTexture;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/three"
4
4
  },
5
5
  "name": "@remotion/three",
6
- "version": "4.0.344",
6
+ "version": "4.0.345",
7
7
  "description": "Include React Three Fiber components in a Remotion video",
8
8
  "main": "dist/cjs/index.js",
9
9
  "types": "dist/cjs/index.d.ts",
@@ -16,14 +16,14 @@
16
16
  "url": "https://github.com/remotion-dev/remotion/issues"
17
17
  },
18
18
  "dependencies": {
19
- "remotion": "4.0.344"
19
+ "remotion": "4.0.345"
20
20
  },
21
21
  "peerDependencies": {
22
22
  "@react-three/fiber": ">=8.0.0",
23
23
  "react": ">=16.8.0",
24
24
  "react-dom": ">=16.8.0",
25
25
  "three": ">=0.137.0",
26
- "remotion": "4.0.344"
26
+ "remotion": "4.0.345"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@react-three/fiber": "9.2.0",
@@ -34,8 +34,8 @@
34
34
  "react-dom": "19.0.0",
35
35
  "three": "0.178.0",
36
36
  "eslint": "9.19.0",
37
- "@remotion/eslint-config-internal": "4.0.344",
38
- "remotion": "4.0.344"
37
+ "@remotion/eslint-config-internal": "4.0.345",
38
+ "remotion": "4.0.345"
39
39
  },
40
40
  "keywords": [
41
41
  "remotion",