@remotion/three 4.0.386 → 4.0.387
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/index.d.ts
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
1
|
export { ThreeCanvas, ThreeCanvasProps } from './ThreeCanvas';
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated useOffthreadVideoTexture has been deprecated.
|
|
4
|
+
* Use the approach documented at https://remotion.dev/docs/videos/as-threejs-texture instead.
|
|
5
|
+
*/
|
|
6
|
+
export type { UseOffthreadVideoTextureOptions } from './use-offthread-video-texture';
|
|
7
|
+
/**
|
|
8
|
+
* @deprecated useOffthreadVideoTexture has been deprecated.
|
|
9
|
+
* Use the approach documented at https://remotion.dev/docs/videos/as-threejs-texture instead.
|
|
10
|
+
*/
|
|
11
|
+
export declare const useOffthreadVideoTexture: () => never;
|
|
12
|
+
/**
|
|
13
|
+
* @deprecated useVideoTexture has been deprecated.
|
|
14
|
+
* Use the approach documented at https://remotion.dev/docs/videos/as-threejs-texture instead.
|
|
15
|
+
*/
|
|
16
|
+
export type { UseVideoTextureOptions } from './use-video-texture';
|
|
17
|
+
/**
|
|
18
|
+
* @deprecated useVideoTexture has been deprecated.
|
|
19
|
+
* Use the approach documented at https://remotion.dev/docs/videos/as-threejs-texture for alternatives.
|
|
20
|
+
*/
|
|
21
|
+
export declare const useVideoTexture: () => never;
|
package/dist/cjs/index.js
CHANGED
|
@@ -3,7 +3,19 @@ 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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
/**
|
|
7
|
+
* @deprecated useOffthreadVideoTexture has been deprecated.
|
|
8
|
+
* Use the approach documented at https://remotion.dev/docs/videos/as-threejs-texture instead.
|
|
9
|
+
*/
|
|
10
|
+
const useOffthreadVideoTexture = () => {
|
|
11
|
+
throw new Error('useOffthreadVideoTexture has been deprecated. Please see https://remotion.dev/docs/videos/as-threejs-texture for alternatives.');
|
|
12
|
+
};
|
|
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 for alternatives.
|
|
17
|
+
*/
|
|
18
|
+
const useVideoTexture = () => {
|
|
19
|
+
throw new Error('useVideoTexture has been deprecated. Please see https://remotion.dev/docs/videos/as-threejs-texture for alternatives.');
|
|
20
|
+
};
|
|
21
|
+
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
|
-
|
|
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
|
-
|
|
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;
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1,27 +1,3 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __toESM = (mod, isNodeMode, target) => {
|
|
7
|
-
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
8
|
-
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
9
|
-
for (let key of __getOwnPropNames(mod))
|
|
10
|
-
if (!__hasOwnProp.call(to, key))
|
|
11
|
-
__defProp(to, key, {
|
|
12
|
-
get: () => mod[key],
|
|
13
|
-
enumerable: true
|
|
14
|
-
});
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
18
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
19
|
-
}) : x)(function(x) {
|
|
20
|
-
if (typeof require !== "undefined")
|
|
21
|
-
return require.apply(this, arguments);
|
|
22
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
23
|
-
});
|
|
24
|
-
|
|
25
1
|
// src/ThreeCanvas.tsx
|
|
26
2
|
import { Canvas, useThree } from "@react-three/fiber";
|
|
27
3
|
import { useCallback, useEffect, useLayoutEffect as useLayoutEffect2, useState } from "react";
|
|
@@ -122,181 +98,13 @@ var ThreeCanvas = (props) => {
|
|
|
122
98
|
})
|
|
123
99
|
});
|
|
124
100
|
};
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
cancelRender,
|
|
130
|
-
useCurrentFrame as useCurrentFrame2,
|
|
131
|
-
useDelayRender as useDelayRender3,
|
|
132
|
-
useRemotionEnvironment as useRemotionEnvironment2,
|
|
133
|
-
useVideoConfig
|
|
134
|
-
} from "remotion";
|
|
135
|
-
import { NoReactInternals as NoReactInternals2 } from "remotion/no-react";
|
|
136
|
-
var useInnerVideoTexture = ({
|
|
137
|
-
playbackRate,
|
|
138
|
-
src,
|
|
139
|
-
transparent,
|
|
140
|
-
toneMapped,
|
|
141
|
-
delayRenderRetries,
|
|
142
|
-
delayRenderTimeoutInMilliseconds
|
|
143
|
-
}) => {
|
|
144
|
-
const frame = useCurrentFrame2();
|
|
145
|
-
const { fps } = useVideoConfig();
|
|
146
|
-
const mediaStartsAt = Internals2.useMediaStartsAt();
|
|
147
|
-
const currentTime = useMemo(() => {
|
|
148
|
-
return NoReactInternals2.getExpectedMediaFrameUncorrected({
|
|
149
|
-
frame,
|
|
150
|
-
playbackRate,
|
|
151
|
-
startFrom: -mediaStartsAt
|
|
152
|
-
}) / fps;
|
|
153
|
-
}, [frame, playbackRate, mediaStartsAt, fps]);
|
|
154
|
-
const offthreadVideoFrameSrc = useMemo(() => {
|
|
155
|
-
return NoReactInternals2.getOffthreadVideoSource({
|
|
156
|
-
currentTime,
|
|
157
|
-
src,
|
|
158
|
-
transparent,
|
|
159
|
-
toneMapped
|
|
160
|
-
});
|
|
161
|
-
}, [toneMapped, currentTime, src, transparent]);
|
|
162
|
-
const [textLoaderPromise] = useState2(() => import("three/src/loaders/TextureLoader.js"));
|
|
163
|
-
const [imageTexture, setImageTexture] = useState2(null);
|
|
164
|
-
const { delayRender, continueRender } = useDelayRender3();
|
|
165
|
-
const fetchTexture = useCallback2(() => {
|
|
166
|
-
const imageTextureHandle = delayRender("fetch offthread video frame", {
|
|
167
|
-
retries: delayRenderRetries ?? undefined,
|
|
168
|
-
timeoutInMilliseconds: delayRenderTimeoutInMilliseconds ?? undefined
|
|
169
|
-
});
|
|
170
|
-
let textureLoaded = null;
|
|
171
|
-
let cleanedUp = false;
|
|
172
|
-
textLoaderPromise.then((loader) => {
|
|
173
|
-
new loader.TextureLoader().loadAsync(offthreadVideoFrameSrc).then((texture) => {
|
|
174
|
-
textureLoaded = texture;
|
|
175
|
-
if (cleanedUp) {
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
setImageTexture(texture);
|
|
179
|
-
continueRender(imageTextureHandle);
|
|
180
|
-
}).catch((err) => {
|
|
181
|
-
cancelRender(err);
|
|
182
|
-
});
|
|
183
|
-
});
|
|
184
|
-
return () => {
|
|
185
|
-
cleanedUp = true;
|
|
186
|
-
textureLoaded?.dispose();
|
|
187
|
-
continueRender(imageTextureHandle);
|
|
188
|
-
};
|
|
189
|
-
}, [
|
|
190
|
-
offthreadVideoFrameSrc,
|
|
191
|
-
textLoaderPromise,
|
|
192
|
-
delayRenderRetries,
|
|
193
|
-
delayRenderTimeoutInMilliseconds,
|
|
194
|
-
continueRender,
|
|
195
|
-
delayRender
|
|
196
|
-
]);
|
|
197
|
-
useLayoutEffect3(() => {
|
|
198
|
-
const cleanup = fetchTexture();
|
|
199
|
-
return () => {
|
|
200
|
-
cleanup();
|
|
201
|
-
};
|
|
202
|
-
}, [offthreadVideoFrameSrc, fetchTexture]);
|
|
203
|
-
return imageTexture;
|
|
204
|
-
};
|
|
205
|
-
function useOffthreadVideoTexture({
|
|
206
|
-
src,
|
|
207
|
-
playbackRate = 1,
|
|
208
|
-
transparent = false,
|
|
209
|
-
toneMapped = true,
|
|
210
|
-
delayRenderRetries,
|
|
211
|
-
delayRenderTimeoutInMilliseconds
|
|
212
|
-
}) {
|
|
213
|
-
if (!src) {
|
|
214
|
-
throw new Error("src must be provided to useOffthreadVideoTexture");
|
|
215
|
-
}
|
|
216
|
-
const env = useRemotionEnvironment2();
|
|
217
|
-
const { isRendering } = env;
|
|
218
|
-
if (!isRendering) {
|
|
219
|
-
throw new Error("useOffthreadVideoTexture() can only be used during rendering. Use useRemotionEnvironment().isRendering to render it conditionally.");
|
|
220
|
-
}
|
|
221
|
-
return useInnerVideoTexture({
|
|
222
|
-
playbackRate,
|
|
223
|
-
src,
|
|
224
|
-
transparent,
|
|
225
|
-
toneMapped,
|
|
226
|
-
delayRenderRetries,
|
|
227
|
-
delayRenderTimeoutInMilliseconds
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
// src/use-video-texture.ts
|
|
231
|
-
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";
|
|
233
|
-
var warned = false;
|
|
234
|
-
var warnAboutRequestVideoFrameCallback = () => {
|
|
235
|
-
if (warned) {
|
|
236
|
-
return false;
|
|
237
|
-
}
|
|
238
|
-
warned = true;
|
|
239
|
-
console.warn("Browser does not support requestVideoFrameCallback. Cannot display video.");
|
|
101
|
+
|
|
102
|
+
// src/index.ts
|
|
103
|
+
var useOffthreadVideoTexture = () => {
|
|
104
|
+
throw new Error("useOffthreadVideoTexture has been deprecated. Please see https://remotion.dev/docs/videos/as-threejs-texture for alternatives.");
|
|
240
105
|
};
|
|
241
|
-
var useVideoTexture = (
|
|
242
|
-
|
|
243
|
-
const [loaded] = useState3(() => {
|
|
244
|
-
if (typeof document === "undefined") {
|
|
245
|
-
return 0;
|
|
246
|
-
}
|
|
247
|
-
return delayRender(`Waiting for texture in useVideoTexture() to be loaded`);
|
|
248
|
-
});
|
|
249
|
-
const [videoTexture, setVideoTexture] = useState3(null);
|
|
250
|
-
const [vidText] = useState3(() => import("three/src/textures/VideoTexture.js"));
|
|
251
|
-
const frame = useCurrentFrame3();
|
|
252
|
-
const onReady = useCallback3(() => {
|
|
253
|
-
vidText.then(({ VideoTexture }) => {
|
|
254
|
-
if (!videoRef.current) {
|
|
255
|
-
throw new Error("Video not ready");
|
|
256
|
-
}
|
|
257
|
-
const vt = new VideoTexture(videoRef.current);
|
|
258
|
-
videoRef.current.width = videoRef.current.videoWidth;
|
|
259
|
-
videoRef.current.height = videoRef.current.videoHeight;
|
|
260
|
-
setVideoTexture(vt);
|
|
261
|
-
continueRender(loaded);
|
|
262
|
-
}).catch((err) => {
|
|
263
|
-
cancelRender2(err);
|
|
264
|
-
});
|
|
265
|
-
}, [loaded, vidText, videoRef, continueRender]);
|
|
266
|
-
React3.useLayoutEffect(() => {
|
|
267
|
-
if (!videoRef.current) {
|
|
268
|
-
return;
|
|
269
|
-
}
|
|
270
|
-
if (videoRef.current.readyState >= 2) {
|
|
271
|
-
onReady();
|
|
272
|
-
return;
|
|
273
|
-
}
|
|
274
|
-
videoRef.current.addEventListener("loadeddata", () => {
|
|
275
|
-
onReady();
|
|
276
|
-
}, { once: true });
|
|
277
|
-
}, [loaded, onReady, videoRef]);
|
|
278
|
-
React3.useEffect(() => {
|
|
279
|
-
const { current } = videoRef;
|
|
280
|
-
if (!current) {
|
|
281
|
-
return;
|
|
282
|
-
}
|
|
283
|
-
if (!current.requestVideoFrameCallback) {
|
|
284
|
-
warnAboutRequestVideoFrameCallback();
|
|
285
|
-
return;
|
|
286
|
-
}
|
|
287
|
-
const ready = () => {};
|
|
288
|
-
current.requestVideoFrameCallback(ready);
|
|
289
|
-
}, [frame, loaded, videoRef]);
|
|
290
|
-
useEffect2(() => {
|
|
291
|
-
return () => {
|
|
292
|
-
continueRender(loaded);
|
|
293
|
-
};
|
|
294
|
-
}, [loaded, continueRender]);
|
|
295
|
-
if (typeof HTMLVideoElement === "undefined" || !HTMLVideoElement.prototype.requestVideoFrameCallback) {
|
|
296
|
-
continueRender(loaded);
|
|
297
|
-
return null;
|
|
298
|
-
}
|
|
299
|
-
return videoTexture;
|
|
106
|
+
var useVideoTexture = () => {
|
|
107
|
+
throw new Error("useVideoTexture has been deprecated. Please see https://remotion.dev/docs/videos/as-threejs-texture for alternatives.");
|
|
300
108
|
};
|
|
301
109
|
export {
|
|
302
110
|
useVideoTexture,
|
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.
|
|
6
|
+
"version": "4.0.387",
|
|
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.
|
|
24
|
+
"remotion": "4.0.387"
|
|
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.
|
|
31
|
+
"remotion": "4.0.387"
|
|
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.
|
|
39
|
-
"react-dom": "19.2.
|
|
40
|
-
"remotion": "4.0.
|
|
38
|
+
"react": "19.2.3",
|
|
39
|
+
"react-dom": "19.2.3",
|
|
40
|
+
"remotion": "4.0.387",
|
|
41
41
|
"three": "0.178.0",
|
|
42
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
42
|
+
"@remotion/eslint-config-internal": "4.0.387",
|
|
43
43
|
"eslint": "9.19.0"
|
|
44
44
|
},
|
|
45
45
|
"keywords": [
|