@remotion/gif 4.0.250 → 4.0.252

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
1
 
2
2
  
3
- > @remotion/gif@4.0.249 make /Users/jonathanburger/remotion/packages/gif
3
+ > @remotion/gif@4.0.251 make /Users/jonathanburger/remotion/packages/gif
4
4
  > tsc -d && node build.mjs && bun --env-file=../.env.bundle bundle.ts
5
5
 
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GifForRendering = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
- /* eslint-disable no-console */
6
5
  const react_1 = require("react");
7
6
  const remotion_1 = require("remotion");
8
7
  const canvas_1 = require("./canvas");
@@ -26,12 +25,13 @@ exports.GifForRendering = (0, react_1.forwardRef)(({ src, width, height, onLoad,
26
25
  return parsedGif;
27
26
  });
28
27
  const [error, setError] = (0, react_1.useState)(null);
29
- const [id] = (0, react_1.useState)(() => (0, remotion_1.delayRender)(`Rendering <Gif/> with src="${resolvedSrc}"`));
28
+ const [renderHandle] = (0, react_1.useState)(() => (0, remotion_1.delayRender)(`Rendering <Gif/> with src="${resolvedSrc}"`));
29
+ const logLevel = remotion_1.Internals.useLogLevel();
30
30
  (0, react_1.useEffect)(() => {
31
31
  return () => {
32
- (0, remotion_1.continueRender)(id);
32
+ (0, remotion_1.continueRender)(renderHandle);
33
33
  };
34
- }, [id]);
34
+ }, [renderHandle]);
35
35
  const index = (0, useCurrentGifIndex_1.useCurrentGifIndex)({
36
36
  delays: state.delays,
37
37
  loopBehavior,
@@ -46,21 +46,25 @@ exports.GifForRendering = (0, react_1.forwardRef)(({ src, width, height, onLoad,
46
46
  let done = false;
47
47
  let aborted = false;
48
48
  const newHandle = (0, remotion_1.delayRender)('Loading <Gif /> with src=' + resolvedSrc);
49
+ remotion_1.Internals.Log.verbose(logLevel, 'Loading GIF with source', resolvedSrc);
50
+ const time = Date.now();
49
51
  (0, react_tools_1.parseGif)({ controller, src: resolvedSrc })
50
52
  .then((parsed) => {
51
53
  var _a;
54
+ remotion_1.Internals.Log.verbose(logLevel, 'Parsed GIF in', Date.now() - time, 'ms');
52
55
  (_a = currentOnLoad.current) === null || _a === void 0 ? void 0 : _a.call(currentOnLoad, parsed);
53
56
  update(parsed);
54
57
  gif_cache_1.volatileGifCache.set(resolvedSrc, parsed);
55
58
  done = true;
56
59
  (0, remotion_1.continueRender)(newHandle);
57
- (0, remotion_1.continueRender)(id);
60
+ (0, remotion_1.continueRender)(renderHandle);
58
61
  })
59
62
  .catch((err) => {
60
63
  if (aborted) {
61
64
  (0, remotion_1.continueRender)(newHandle);
62
65
  return;
63
66
  }
67
+ remotion_1.Internals.Log.error('Failed to load GIF', err);
64
68
  if (currentOnError.current) {
65
69
  currentOnError.current(err);
66
70
  }
@@ -74,10 +78,11 @@ exports.GifForRendering = (0, react_1.forwardRef)(({ src, width, height, onLoad,
74
78
  controller.abort();
75
79
  }
76
80
  (0, remotion_1.continueRender)(newHandle);
81
+ (0, remotion_1.continueRender)(renderHandle);
77
82
  };
78
- }, [id, resolvedSrc]);
83
+ }, [renderHandle, logLevel, resolvedSrc]);
79
84
  if (error) {
80
- console.error(error.stack);
85
+ remotion_1.Internals.Log.error(error.stack);
81
86
  if ((0, is_cors_error_1.isCorsError)(error)) {
82
87
  throw new Error(`Failed to render GIF with source ${src}: "${error.message}". You must enable CORS for this URL.`);
83
88
  }
@@ -4,6 +4,7 @@ exports.getGifDurationInSeconds = void 0;
4
4
  const remotion_1 = require("remotion");
5
5
  const gif_cache_1 = require("./gif-cache");
6
6
  const react_tools_1 = require("./react-tools");
7
+ const resolve_gif_source_1 = require("./resolve-gif-source");
7
8
  const calcDuration = (parsed) => {
8
9
  return (parsed.delays.reduce((sum, delay) => sum + delay, 0) / 1000);
9
10
  };
@@ -13,7 +14,7 @@ const calcDuration = (parsed) => {
13
14
  */
14
15
  const getGifDurationInSeconds = async (src) => {
15
16
  var _a;
16
- const resolvedSrc = new URL(src, window.origin).href;
17
+ const resolvedSrc = (0, resolve_gif_source_1.resolveGifSource)(src);
17
18
  const inCache = (_a = gif_cache_1.volatileGifCache.get(resolvedSrc)) !== null && _a !== void 0 ? _a : gif_cache_1.manuallyManagedGifCache.get(resolvedSrc);
18
19
  if (inCache) {
19
20
  return calcDuration(inCache);
@@ -787,12 +787,20 @@ var parseWithWorker = (src2) => {
787
787
  };
788
788
  };
789
789
 
790
+ // src/resolve-gif-source.ts
791
+ var resolveGifSource = (src2) => {
792
+ if (typeof window === "undefined") {
793
+ return src2;
794
+ }
795
+ return new URL(src2, window.origin).href;
796
+ };
797
+
790
798
  // src/get-gif-duration-in-seconds.ts
791
799
  var calcDuration = (parsed) => {
792
800
  return parsed.delays.reduce((sum, delay) => sum + delay, 0) / 1000;
793
801
  };
794
802
  var getGifDurationInSeconds = async (src2) => {
795
- const resolvedSrc = new URL(src2, window.origin).href;
803
+ const resolvedSrc = resolveGifSource(src2);
796
804
  const inCache = volatileGifCache.get(resolvedSrc) ?? manuallyManagedGifCache.get(resolvedSrc);
797
805
  if (inCache) {
798
806
  return calcDuration(inCache);
@@ -992,14 +1000,6 @@ var isCorsError = (error) => {
992
1000
  return error.message.includes("Failed to fetch") || error.message.includes("Load failed") || error.message.includes("NetworkError when attempting to fetch resource");
993
1001
  };
994
1002
 
995
- // src/resolve-gif-source.ts
996
- var resolveGifSource = (src2) => {
997
- if (typeof window === "undefined") {
998
- return src2;
999
- }
1000
- return new URL(src2, window.origin).href;
1001
- };
1002
-
1003
1003
  // src/useCurrentGifIndex.tsx
1004
1004
  import { useMemo as useMemo2 } from "react";
1005
1005
  import { useCurrentFrame, useVideoConfig } from "remotion";
@@ -1129,7 +1129,7 @@ var GifForDevelopment = forwardRef2(({
1129
1129
 
1130
1130
  // src/GifForRendering.tsx
1131
1131
  import { forwardRef as forwardRef3, useEffect as useEffect4, useRef as useRef3, useState as useState4 } from "react";
1132
- import { continueRender as continueRender2, delayRender as delayRender2 } from "remotion";
1132
+ import { continueRender as continueRender2, delayRender as delayRender2, Internals } from "remotion";
1133
1133
  import { jsx as jsx3 } from "react/jsx-runtime";
1134
1134
  var GifForRendering = forwardRef3(({
1135
1135
  src: src2,
@@ -1156,12 +1156,13 @@ var GifForRendering = forwardRef3(({
1156
1156
  return parsedGif;
1157
1157
  });
1158
1158
  const [error, setError] = useState4(null);
1159
- const [id] = useState4(() => delayRender2(`Rendering <Gif/> with src="${resolvedSrc}"`));
1159
+ const [renderHandle] = useState4(() => delayRender2(`Rendering <Gif/> with src="${resolvedSrc}"`));
1160
+ const logLevel = Internals.useLogLevel();
1160
1161
  useEffect4(() => {
1161
1162
  return () => {
1162
- continueRender2(id);
1163
+ continueRender2(renderHandle);
1163
1164
  };
1164
- }, [id]);
1165
+ }, [renderHandle]);
1165
1166
  const index = useCurrentGifIndex({
1166
1167
  delays: state.delays,
1167
1168
  loopBehavior,
@@ -1176,18 +1177,22 @@ var GifForRendering = forwardRef3(({
1176
1177
  let done = false;
1177
1178
  let aborted = false;
1178
1179
  const newHandle = delayRender2("Loading <Gif /> with src=" + resolvedSrc);
1180
+ Internals.Log.verbose(logLevel, "Loading GIF with source", resolvedSrc);
1181
+ const time = Date.now();
1179
1182
  parseGif({ controller, src: resolvedSrc }).then((parsed) => {
1183
+ Internals.Log.verbose(logLevel, "Parsed GIF in", Date.now() - time, "ms");
1180
1184
  currentOnLoad.current?.(parsed);
1181
1185
  update(parsed);
1182
1186
  volatileGifCache.set(resolvedSrc, parsed);
1183
1187
  done = true;
1184
1188
  continueRender2(newHandle);
1185
- continueRender2(id);
1189
+ continueRender2(renderHandle);
1186
1190
  }).catch((err) => {
1187
1191
  if (aborted) {
1188
1192
  continueRender2(newHandle);
1189
1193
  return;
1190
1194
  }
1195
+ Internals.Log.error("Failed to load GIF", err);
1191
1196
  if (currentOnError.current) {
1192
1197
  currentOnError.current(err);
1193
1198
  } else {
@@ -1200,10 +1205,11 @@ var GifForRendering = forwardRef3(({
1200
1205
  controller.abort();
1201
1206
  }
1202
1207
  continueRender2(newHandle);
1208
+ continueRender2(renderHandle);
1203
1209
  };
1204
- }, [id, resolvedSrc]);
1210
+ }, [renderHandle, logLevel, resolvedSrc]);
1205
1211
  if (error) {
1206
- console.error(error.stack);
1212
+ Internals.Log.error(error.stack);
1207
1213
  if (isCorsError(error)) {
1208
1214
  throw new Error(`Failed to render GIF with source ${src2}: "${error.message}". You must enable CORS for this URL.`);
1209
1215
  }
package/eslint.config.mjs CHANGED
@@ -2,9 +2,4 @@ import {remotionFlatConfig} from '@remotion/eslint-config-internal';
2
2
 
3
3
  const config = remotionFlatConfig({react: true});
4
4
 
5
- export default {
6
- ...config,
7
- rules: {
8
- ...config.rules,
9
- },
10
- };
5
+ export default config;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/gif"
4
4
  },
5
5
  "name": "@remotion/gif",
6
- "version": "4.0.250",
6
+ "version": "4.0.252",
7
7
  "description": "Embed GIFs in a Remotion video",
8
8
  "sideEffects": false,
9
9
  "bugs": {
@@ -24,7 +24,7 @@
24
24
  }
25
25
  },
26
26
  "dependencies": {
27
- "remotion": "4.0.250"
27
+ "remotion": "4.0.252"
28
28
  },
29
29
  "devDependencies": {
30
30
  "esbuild": "0.24.0",
@@ -32,7 +32,7 @@
32
32
  "react-dom": "19.0.0",
33
33
  "webpack": "5.96.1",
34
34
  "eslint": "9.14.0",
35
- "@remotion/eslint-config-internal": "4.0.250"
35
+ "@remotion/eslint-config-internal": "4.0.252"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "react": ">=16.8.0",