@evatril/video-templates 2.0.2 → 2.0.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evatril/video-templates",
3
- "version": "2.0.2",
3
+ "version": "2.0.3",
4
4
  "description": "",
5
5
  "main": "src/index.js",
6
6
  "remotion": {
@@ -1,44 +1,37 @@
1
- import { useState, useEffect } from "react";
2
- import { delayRender, continueRender } from "remotion";
1
+ import { useEffect, useState } from "react";
2
+ import { delayRender, continueRender, prefetch } from "remotion";
3
3
 
4
4
  export const usePreloadImages = (imageSources) => {
5
5
  const [handle] = useState(() => delayRender("Preloading images"));
6
- const [loaded, setLoaded] = useState(false);
7
6
 
8
7
  useEffect(() => {
9
- let cancelled = false;
10
-
11
- const done = () => {
12
- if (!cancelled) {
13
- setLoaded(true);
14
- continueRender(handle);
15
- }
16
- };
17
-
18
8
  if (!imageSources || imageSources.length === 0) {
19
- done();
9
+ continueRender(handle);
20
10
  return;
21
11
  }
22
12
 
13
+ let cancelled = false;
14
+
23
15
  Promise.all(
24
- imageSources.map(
25
- (src) =>
26
- new Promise((resolve) => {
27
- const img = new Image();
28
- img.onload = resolve;
29
- img.onerror = resolve;
30
- img.src = src;
31
- }),
32
- ),
16
+ imageSources.map((src) =>
17
+ prefetch(src)
18
+ .then(({ waitUntilDone }) => waitUntilDone())
19
+ .catch(() => null) // never block render
20
+ )
33
21
  )
34
- .then(done)
35
- .catch(done);
22
+ .then(() => {
23
+ if (!cancelled) {
24
+ continueRender(handle);
25
+ }
26
+ })
27
+ .catch(() => {
28
+ if (!cancelled) {
29
+ continueRender(handle);
30
+ }
31
+ });
36
32
 
37
33
  return () => {
38
34
  cancelled = true;
39
- continueRender(handle); // 🔥 safety cleanup
40
35
  };
41
36
  }, [handle, imageSources]);
42
-
43
- return loaded;
44
37
  };