@remotion/three 4.0.386 → 4.0.388

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,3 +1,25 @@
1
1
  export { ThreeCanvas, ThreeCanvasProps } from './ThreeCanvas';
2
- export { UseOffthreadVideoTextureOptions, useOffthreadVideoTexture, } from './use-offthread-video-texture';
3
- export { UseVideoTextureOptions, useVideoTexture } from './use-video-texture';
2
+ import type { UseOffthreadVideoTextureOptions as UseOffthreadVideoTextureOptionsType } from './use-offthread-video-texture';
3
+ import { useOffthreadVideoTexture as useOffthreadVideoTextureType } from './use-offthread-video-texture';
4
+ import type { UseVideoTextureOptions as UseVideoTextureOptionsType } from './use-video-texture';
5
+ /**
6
+ * @deprecated useOffthreadVideoTexture has been deprecated.
7
+ * Use the approach documented at https://remotion.dev/docs/videos/as-threejs-texture instead.
8
+ */
9
+ declare const useOffthreadVideoTexture: typeof useOffthreadVideoTextureType;
10
+ /**
11
+ * @deprecated useOffthreadVideoTexture has been deprecated.
12
+ * Use the approach documented at https://remotion.dev/docs/videos/as-threejs-texture instead.
13
+ */
14
+ type UseOffthreadVideoTextureOptions = UseOffthreadVideoTextureOptionsType;
15
+ /**
16
+ * @deprecated useVideoTexture has been deprecated.
17
+ * Use the approach documented at https://remotion.dev/docs/videos/as-threejs-texture instead.
18
+ */
19
+ declare const useVideoTexture: (videoRef: React.RefObject<HTMLVideoElement | null>) => import("three").VideoTexture | null;
20
+ /**
21
+ * @deprecated useVideoTexture has been deprecated.
22
+ * Use the approach documented at https://remotion.dev/docs/videos/as-threejs-texture instead.
23
+ */
24
+ type UseVideoTextureOptions = UseVideoTextureOptionsType;
25
+ export { useOffthreadVideoTexture, UseOffthreadVideoTextureOptions, useVideoTexture, UseVideoTextureOptions, };
package/dist/cjs/index.js CHANGED
@@ -3,7 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useVideoTexture = exports.useOffthreadVideoTexture = exports.ThreeCanvas = void 0;
4
4
  var ThreeCanvas_1 = require("./ThreeCanvas");
5
5
  Object.defineProperty(exports, "ThreeCanvas", { enumerable: true, get: function () { return ThreeCanvas_1.ThreeCanvas; } });
6
- var use_offthread_video_texture_1 = require("./use-offthread-video-texture");
7
- Object.defineProperty(exports, "useOffthreadVideoTexture", { enumerable: true, get: function () { return use_offthread_video_texture_1.useOffthreadVideoTexture; } });
8
- var use_video_texture_1 = require("./use-video-texture");
9
- Object.defineProperty(exports, "useVideoTexture", { enumerable: true, get: function () { return use_video_texture_1.useVideoTexture; } });
6
+ const use_offthread_video_texture_1 = require("./use-offthread-video-texture");
7
+ const use_video_texture_1 = require("./use-video-texture");
8
+ /**
9
+ * @deprecated useOffthreadVideoTexture has been deprecated.
10
+ * Use the approach documented at https://remotion.dev/docs/videos/as-threejs-texture instead.
11
+ */
12
+ const useOffthreadVideoTexture = use_offthread_video_texture_1.useOffthreadVideoTexture;
13
+ exports.useOffthreadVideoTexture = useOffthreadVideoTexture;
14
+ /**
15
+ * @deprecated useVideoTexture has been deprecated.
16
+ * Use the approach documented at https://remotion.dev/docs/videos/as-threejs-texture instead.
17
+ */
18
+ const useVideoTexture = use_video_texture_1.useVideoTexture;
19
+ exports.useVideoTexture = useVideoTexture;
@@ -59,7 +59,7 @@ 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
+ const { delayRender, continueRender, cancelRender } = (0, remotion_1.useDelayRender)();
63
63
  const fetchTexture = (0, react_1.useCallback)(() => {
64
64
  const imageTextureHandle = delayRender('fetch offthread video frame', {
65
65
  retries: delayRenderRetries !== null && delayRenderRetries !== void 0 ? delayRenderRetries : undefined,
@@ -79,7 +79,7 @@ const useInnerVideoTexture = ({ playbackRate, src, transparent, toneMapped, dela
79
79
  continueRender(imageTextureHandle);
80
80
  })
81
81
  .catch((err) => {
82
- (0, remotion_1.cancelRender)(err);
82
+ cancelRender(err);
83
83
  });
84
84
  });
85
85
  return () => {
@@ -94,6 +94,7 @@ const useInnerVideoTexture = ({ playbackRate, src, transparent, toneMapped, dela
94
94
  delayRenderTimeoutInMilliseconds,
95
95
  continueRender,
96
96
  delayRender,
97
+ cancelRender,
97
98
  ]);
98
99
  (0, react_1.useLayoutEffect)(() => {
99
100
  const cleanup = fetchTexture();
@@ -113,7 +114,10 @@ function useOffthreadVideoTexture({ src, playbackRate = 1, transparent = false,
113
114
  throw new Error('src must be provided to useOffthreadVideoTexture');
114
115
  }
115
116
  const env = (0, remotion_1.useRemotionEnvironment)();
116
- const { isRendering } = env;
117
+ const { isRendering, isClientSideRendering } = env;
118
+ if (isClientSideRendering) {
119
+ throw new Error('useOffthreadVideoTexture() cannot be used in client-side rendering.');
120
+ }
117
121
  if (!isRendering) {
118
122
  throw new Error('useOffthreadVideoTexture() can only be used during rendering. Use useRemotionEnvironment().isRendering to render it conditionally.');
119
123
  }
@@ -50,13 +50,18 @@ 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
+ const { delayRender, continueRender, cancelRender } = (0, remotion_1.useDelayRender)();
54
54
  const [loaded] = (0, react_1.useState)(() => {
55
55
  if (typeof document === 'undefined') {
56
56
  return 0;
57
57
  }
58
58
  return delayRender(`Waiting for texture in useVideoTexture() to be loaded`);
59
59
  });
60
+ const environment = (0, remotion_1.useRemotionEnvironment)();
61
+ const { isClientSideRendering } = environment;
62
+ if (isClientSideRendering) {
63
+ throw new Error('useVideoTexture() cannot be used in client side rendering.');
64
+ }
60
65
  const [videoTexture, setVideoTexture] = (0, react_1.useState)(null);
61
66
  const [vidText] = (0, react_1.useState)(() => Promise.resolve().then(() => __importStar(require('three/src/textures/VideoTexture.js'))));
62
67
  const frame = (0, remotion_1.useCurrentFrame)();
@@ -73,9 +78,9 @@ const useVideoTexture = (videoRef) => {
73
78
  continueRender(loaded);
74
79
  })
75
80
  .catch((err) => {
76
- (0, remotion_1.cancelRender)(err);
81
+ cancelRender(err);
77
82
  });
78
- }, [loaded, vidText, videoRef, continueRender]);
83
+ }, [loaded, vidText, videoRef, continueRender, cancelRender]);
79
84
  react_1.default.useLayoutEffect(() => {
80
85
  if (!videoRef.current) {
81
86
  return;
@@ -126,7 +126,6 @@ var ThreeCanvas = (props) => {
126
126
  import { useCallback as useCallback2, useLayoutEffect as useLayoutEffect3, useMemo, useState as useState2 } from "react";
127
127
  import {
128
128
  Internals as Internals2,
129
- cancelRender,
130
129
  useCurrentFrame as useCurrentFrame2,
131
130
  useDelayRender as useDelayRender3,
132
131
  useRemotionEnvironment as useRemotionEnvironment2,
@@ -161,7 +160,7 @@ var useInnerVideoTexture = ({
161
160
  }, [toneMapped, currentTime, src, transparent]);
162
161
  const [textLoaderPromise] = useState2(() => import("three/src/loaders/TextureLoader.js"));
163
162
  const [imageTexture, setImageTexture] = useState2(null);
164
- const { delayRender, continueRender } = useDelayRender3();
163
+ const { delayRender, continueRender, cancelRender } = useDelayRender3();
165
164
  const fetchTexture = useCallback2(() => {
166
165
  const imageTextureHandle = delayRender("fetch offthread video frame", {
167
166
  retries: delayRenderRetries ?? undefined,
@@ -192,7 +191,8 @@ var useInnerVideoTexture = ({
192
191
  delayRenderRetries,
193
192
  delayRenderTimeoutInMilliseconds,
194
193
  continueRender,
195
- delayRender
194
+ delayRender,
195
+ cancelRender
196
196
  ]);
197
197
  useLayoutEffect3(() => {
198
198
  const cleanup = fetchTexture();
@@ -214,7 +214,10 @@ function useOffthreadVideoTexture({
214
214
  throw new Error("src must be provided to useOffthreadVideoTexture");
215
215
  }
216
216
  const env = useRemotionEnvironment2();
217
- const { isRendering } = env;
217
+ const { isRendering, isClientSideRendering } = env;
218
+ if (isClientSideRendering) {
219
+ throw new Error("useOffthreadVideoTexture() cannot be used in client-side rendering.");
220
+ }
218
221
  if (!isRendering) {
219
222
  throw new Error("useOffthreadVideoTexture() can only be used during rendering. Use useRemotionEnvironment().isRendering to render it conditionally.");
220
223
  }
@@ -227,9 +230,14 @@ function useOffthreadVideoTexture({
227
230
  delayRenderTimeoutInMilliseconds
228
231
  });
229
232
  }
233
+
230
234
  // src/use-video-texture.ts
231
235
  import React3, { useCallback as useCallback3, useEffect as useEffect2, useState as useState3 } from "react";
232
- import { cancelRender as cancelRender2, useCurrentFrame as useCurrentFrame3, useDelayRender as useDelayRender4 } from "remotion";
236
+ import {
237
+ useCurrentFrame as useCurrentFrame3,
238
+ useDelayRender as useDelayRender4,
239
+ useRemotionEnvironment as useRemotionEnvironment3
240
+ } from "remotion";
233
241
  var warned = false;
234
242
  var warnAboutRequestVideoFrameCallback = () => {
235
243
  if (warned) {
@@ -239,13 +247,18 @@ var warnAboutRequestVideoFrameCallback = () => {
239
247
  console.warn("Browser does not support requestVideoFrameCallback. Cannot display video.");
240
248
  };
241
249
  var useVideoTexture = (videoRef) => {
242
- const { delayRender, continueRender } = useDelayRender4();
250
+ const { delayRender, continueRender, cancelRender } = useDelayRender4();
243
251
  const [loaded] = useState3(() => {
244
252
  if (typeof document === "undefined") {
245
253
  return 0;
246
254
  }
247
255
  return delayRender(`Waiting for texture in useVideoTexture() to be loaded`);
248
256
  });
257
+ const environment = useRemotionEnvironment3();
258
+ const { isClientSideRendering } = environment;
259
+ if (isClientSideRendering) {
260
+ throw new Error("useVideoTexture() cannot be used in client side rendering.");
261
+ }
249
262
  const [videoTexture, setVideoTexture] = useState3(null);
250
263
  const [vidText] = useState3(() => import("three/src/textures/VideoTexture.js"));
251
264
  const frame = useCurrentFrame3();
@@ -260,9 +273,9 @@ var useVideoTexture = (videoRef) => {
260
273
  setVideoTexture(vt);
261
274
  continueRender(loaded);
262
275
  }).catch((err) => {
263
- cancelRender2(err);
276
+ cancelRender(err);
264
277
  });
265
- }, [loaded, vidText, videoRef, continueRender]);
278
+ }, [loaded, vidText, videoRef, continueRender, cancelRender]);
266
279
  React3.useLayoutEffect(() => {
267
280
  if (!videoRef.current) {
268
281
  return;
@@ -298,8 +311,12 @@ var useVideoTexture = (videoRef) => {
298
311
  }
299
312
  return videoTexture;
300
313
  };
314
+
315
+ // src/index.ts
316
+ var useOffthreadVideoTexture2 = useOffthreadVideoTexture;
317
+ var useVideoTexture2 = useVideoTexture;
301
318
  export {
302
- useVideoTexture,
303
- useOffthreadVideoTexture,
319
+ useVideoTexture2 as useVideoTexture,
320
+ useOffthreadVideoTexture2 as useOffthreadVideoTexture,
304
321
  ThreeCanvas
305
322
  };
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.386",
6
+ "version": "4.0.388",
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",
@@ -21,25 +21,25 @@
21
21
  "url": "https://github.com/remotion-dev/remotion/issues"
22
22
  },
23
23
  "dependencies": {
24
- "remotion": "4.0.386"
24
+ "remotion": "4.0.388"
25
25
  },
26
26
  "peerDependencies": {
27
27
  "@react-three/fiber": ">=8.0.0",
28
28
  "react": ">=16.8.0",
29
29
  "react-dom": ">=16.8.0",
30
30
  "three": ">=0.137.0",
31
- "remotion": "4.0.386"
31
+ "remotion": "4.0.388"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@react-three/fiber": "9.2.0",
35
35
  "@types/react-reconciler": "0.32.0",
36
36
  "@types/three": "0.170.0",
37
37
  "@types/web": "0.0.166",
38
- "react": "19.2.1",
39
- "react-dom": "19.2.1",
40
- "remotion": "4.0.386",
38
+ "react": "19.2.3",
39
+ "react-dom": "19.2.3",
40
+ "remotion": "4.0.388",
41
41
  "three": "0.178.0",
42
- "@remotion/eslint-config-internal": "4.0.386",
42
+ "@remotion/eslint-config-internal": "4.0.388",
43
43
  "eslint": "9.19.0"
44
44
  },
45
45
  "keywords": [