remotion 4.0.387 → 4.0.389

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.
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RenderAssetManagerProvider = exports.RenderAssetManager = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
- const react_dom_1 = require("react-dom");
7
6
  const validate_artifact_js_1 = require("./validation/validate-artifact.js");
8
7
  exports.RenderAssetManager = (0, react_1.createContext)({
9
8
  // Must be undefined, otherwise error in Player
@@ -13,38 +12,39 @@ exports.RenderAssetManager = (0, react_1.createContext)({
13
12
  });
14
13
  const RenderAssetManagerProvider = ({ children, collectAssets }) => {
15
14
  const [renderAssets, setRenderAssets] = (0, react_1.useState)([]);
15
+ const renderAssetsRef = (0, react_1.useRef)([]);
16
16
  const registerRenderAsset = (0, react_1.useCallback)((renderAsset) => {
17
17
  (0, validate_artifact_js_1.validateRenderAsset)(renderAsset);
18
- setRenderAssets((assets) => {
19
- return [...assets, renderAsset];
20
- });
18
+ renderAssetsRef.current = [...renderAssetsRef.current, renderAsset];
19
+ setRenderAssets(renderAssetsRef.current);
21
20
  }, []);
22
21
  if (collectAssets) {
23
22
  // eslint-disable-next-line react-hooks/rules-of-hooks
24
23
  (0, react_1.useImperativeHandle)(collectAssets, () => {
25
24
  return {
26
25
  collectAssets: () => {
27
- (0, react_dom_1.flushSync)(() => {
28
- setRenderAssets([]); // clear assets at next render
29
- });
30
- return renderAssets;
26
+ const assets = renderAssetsRef.current;
27
+ renderAssetsRef.current = [];
28
+ setRenderAssets([]);
29
+ return assets;
31
30
  },
32
31
  };
33
- }, [renderAssets]);
32
+ }, []);
34
33
  }
35
34
  const unregisterRenderAsset = (0, react_1.useCallback)((id) => {
36
- setRenderAssets((assts) => {
37
- return assts.filter((a) => a.id !== id);
38
- });
35
+ renderAssetsRef.current = renderAssetsRef.current.filter((a) => a.id !== id);
36
+ setRenderAssets(renderAssetsRef.current);
39
37
  }, []);
40
38
  (0, react_1.useLayoutEffect)(() => {
41
39
  if (typeof window !== 'undefined') {
42
40
  window.remotion_collectAssets = () => {
43
- setRenderAssets([]); // clear assets at next render
44
- return renderAssets;
41
+ const assets = renderAssetsRef.current;
42
+ renderAssetsRef.current = [];
43
+ setRenderAssets([]);
44
+ return assets;
45
45
  };
46
46
  }
47
- }, [renderAssets]);
47
+ }, []);
48
48
  const contextValue = (0, react_1.useMemo)(() => {
49
49
  return {
50
50
  registerRenderAsset,
@@ -3,4 +3,4 @@
3
3
  * @see [Documentation](https://remotion.dev/docs/version)
4
4
  * @returns {string} The current version of the remotion package
5
5
  */
6
- export declare const VERSION = "4.0.387";
6
+ export declare const VERSION = "4.0.389";
@@ -7,4 +7,4 @@ exports.VERSION = void 0;
7
7
  * @see [Documentation](https://remotion.dev/docs/version)
8
8
  * @returns {string} The current version of the remotion package
9
9
  */
10
- exports.VERSION = '4.0.387';
10
+ exports.VERSION = '4.0.389';
@@ -110,7 +110,7 @@ function truthy(value) {
110
110
  }
111
111
 
112
112
  // src/version.ts
113
- var VERSION = "4.0.387";
113
+ var VERSION = "4.0.389";
114
114
 
115
115
  // src/multiple-versions-warning.ts
116
116
  var checkMultipleRemotionVersions = () => {
@@ -2360,9 +2360,9 @@ import {
2360
2360
  useImperativeHandle as useImperativeHandle5,
2361
2361
  useLayoutEffect as useLayoutEffect3,
2362
2362
  useMemo as useMemo11,
2363
+ useRef as useRef5,
2363
2364
  useState as useState8
2364
2365
  } from "react";
2365
- import { flushSync } from "react-dom";
2366
2366
 
2367
2367
  // src/validation/validate-artifact.ts
2368
2368
  var validateArtifactFilename = (filename) => {
@@ -2408,37 +2408,38 @@ var RenderAssetManager = createContext12({
2408
2408
  });
2409
2409
  var RenderAssetManagerProvider = ({ children, collectAssets }) => {
2410
2410
  const [renderAssets, setRenderAssets] = useState8([]);
2411
+ const renderAssetsRef = useRef5([]);
2411
2412
  const registerRenderAsset = useCallback6((renderAsset) => {
2412
2413
  validateRenderAsset(renderAsset);
2413
- setRenderAssets((assets) => {
2414
- return [...assets, renderAsset];
2415
- });
2414
+ renderAssetsRef.current = [...renderAssetsRef.current, renderAsset];
2415
+ setRenderAssets(renderAssetsRef.current);
2416
2416
  }, []);
2417
2417
  if (collectAssets) {
2418
2418
  useImperativeHandle5(collectAssets, () => {
2419
2419
  return {
2420
2420
  collectAssets: () => {
2421
- flushSync(() => {
2422
- setRenderAssets([]);
2423
- });
2424
- return renderAssets;
2421
+ const assets = renderAssetsRef.current;
2422
+ renderAssetsRef.current = [];
2423
+ setRenderAssets([]);
2424
+ return assets;
2425
2425
  }
2426
2426
  };
2427
- }, [renderAssets]);
2427
+ }, []);
2428
2428
  }
2429
2429
  const unregisterRenderAsset = useCallback6((id) => {
2430
- setRenderAssets((assts) => {
2431
- return assts.filter((a) => a.id !== id);
2432
- });
2430
+ renderAssetsRef.current = renderAssetsRef.current.filter((a) => a.id !== id);
2431
+ setRenderAssets(renderAssetsRef.current);
2433
2432
  }, []);
2434
2433
  useLayoutEffect3(() => {
2435
2434
  if (typeof window !== "undefined") {
2436
2435
  window.remotion_collectAssets = () => {
2436
+ const assets = renderAssetsRef.current;
2437
+ renderAssetsRef.current = [];
2437
2438
  setRenderAssets([]);
2438
- return renderAssets;
2439
+ return assets;
2439
2440
  };
2440
2441
  }
2441
- }, [renderAssets]);
2442
+ }, []);
2442
2443
  const contextValue = useMemo11(() => {
2443
2444
  return {
2444
2445
  registerRenderAsset,
@@ -2976,7 +2977,7 @@ import {
2976
2977
  useEffect as useEffect12,
2977
2978
  useImperativeHandle as useImperativeHandle6,
2978
2979
  useMemo as useMemo21,
2979
- useRef as useRef12,
2980
+ useRef as useRef13,
2980
2981
  useState as useState15
2981
2982
  } from "react";
2982
2983
 
@@ -2995,7 +2996,7 @@ var getCrossOriginValue = ({
2995
2996
  };
2996
2997
 
2997
2998
  // src/use-amplification.ts
2998
- import { useContext as useContext17, useLayoutEffect as useLayoutEffect5, useRef as useRef7 } from "react";
2999
+ import { useContext as useContext17, useLayoutEffect as useLayoutEffect5, useRef as useRef8 } from "react";
2999
3000
 
3000
3001
  // src/audio/shared-audio-tags.tsx
3001
3002
  import React15, {
@@ -3004,7 +3005,7 @@ import React15, {
3004
3005
  useCallback as useCallback7,
3005
3006
  useContext as useContext16,
3006
3007
  useMemo as useMemo15,
3007
- useRef as useRef5,
3008
+ useRef as useRef6,
3008
3009
  useState as useState11
3009
3010
  } from "react";
3010
3011
 
@@ -3152,7 +3153,7 @@ var didPropChange = (key, newProp, prevProp) => {
3152
3153
  };
3153
3154
  var SharedAudioContext = createContext16(null);
3154
3155
  var SharedAudioContextProvider = ({ children, numberOfAudioTags, audioLatencyHint }) => {
3155
- const audios = useRef5([]);
3156
+ const audios = useRef6([]);
3156
3157
  const [initialNumberOfAudioTags] = useState11(numberOfAudioTags);
3157
3158
  if (numberOfAudioTags !== initialNumberOfAudioTags) {
3158
3159
  throw new Error("The number of shared audio tags has changed dynamically. Once you have set this property, you cannot change it afterwards.");
@@ -3172,7 +3173,7 @@ var SharedAudioContextProvider = ({ children, numberOfAudioTags, audioLatencyHin
3172
3173
  };
3173
3174
  });
3174
3175
  }, [audioContext, numberOfAudioTags]);
3175
- const takenAudios = useRef5(new Array(numberOfAudioTags).fill(false));
3176
+ const takenAudios = useRef6(new Array(numberOfAudioTags).fill(false));
3176
3177
  const rerenderAudios = useCallback7(() => {
3177
3178
  refs.forEach(({ ref, id }) => {
3178
3179
  const data = audios.current?.find((a) => a.id === id);
@@ -3358,7 +3359,7 @@ var isApproximatelyTheSame = (num1, num2) => {
3358
3359
  };
3359
3360
 
3360
3361
  // src/video/video-fragment.ts
3361
- import { useRef as useRef6 } from "react";
3362
+ import { useRef as useRef7 } from "react";
3362
3363
  var toSeconds = (time, fps) => {
3363
3364
  return Math.round(time / fps * 100) / 100;
3364
3365
  };
@@ -3445,9 +3446,9 @@ var useAppendVideoFragment = ({
3445
3446
  duration: initialDuration,
3446
3447
  fps
3447
3448
  }) => {
3448
- const actualFromRef = useRef6(initialActualFrom);
3449
- const actualDuration = useRef6(initialDuration);
3450
- const actualSrc = useRef6(initialActualSrc);
3449
+ const actualFromRef = useRef7(initialActualFrom);
3450
+ const actualDuration = useRef7(initialDuration);
3451
+ const actualSrc = useRef7(initialActualSrc);
3451
3452
  if (!isSubsetOfDuration({
3452
3453
  prevStartFrom: actualFromRef.current,
3453
3454
  newStartFrom: initialActualFrom,
@@ -3486,8 +3487,8 @@ var useVolume = ({
3486
3487
  source,
3487
3488
  shouldUseWebAudioApi
3488
3489
  }) => {
3489
- const audioStuffRef = useRef7(null);
3490
- const currentVolumeRef = useRef7(volume);
3490
+ const audioStuffRef = useRef8(null);
3491
+ const currentVolumeRef = useRef8(volume);
3491
3492
  currentVolumeRef.current = volume;
3492
3493
  const sharedAudioContext = useContext17(SharedAudioContext);
3493
3494
  if (!sharedAudioContext) {
@@ -3760,11 +3761,11 @@ import {
3760
3761
  useContext as useContext22,
3761
3762
  useEffect as useEffect10,
3762
3763
  useLayoutEffect as useLayoutEffect7,
3763
- useRef as useRef11
3764
+ useRef as useRef12
3764
3765
  } from "react";
3765
3766
 
3766
3767
  // src/buffer-until-first-frame.ts
3767
- import { useCallback as useCallback9, useMemo as useMemo19, useRef as useRef9 } from "react";
3768
+ import { useCallback as useCallback9, useMemo as useMemo19, useRef as useRef10 } from "react";
3768
3769
 
3769
3770
  // src/use-buffer-state.ts
3770
3771
  import { useContext as useContext21, useMemo as useMemo18 } from "react";
@@ -3776,7 +3777,7 @@ import React16, {
3776
3777
  useEffect as useEffect7,
3777
3778
  useLayoutEffect as useLayoutEffect6,
3778
3779
  useMemo as useMemo17,
3779
- useRef as useRef8,
3780
+ useRef as useRef9,
3780
3781
  useState as useState13
3781
3782
  } from "react";
3782
3783
  import { jsx as jsx17 } from "react/jsx-runtime";
@@ -3784,7 +3785,7 @@ var useBufferManager = (logLevel, mountTime) => {
3784
3785
  const [blocks, setBlocks] = useState13([]);
3785
3786
  const [onBufferingCallbacks, setOnBufferingCallbacks] = useState13([]);
3786
3787
  const [onResumeCallbacks, setOnResumeCallbacks] = useState13([]);
3787
- const buffering = useRef8(false);
3788
+ const buffering = useRef9(false);
3788
3789
  const addBlock = useCallback8((block) => {
3789
3790
  setBlocks((b) => [...b, block]);
3790
3791
  return {
@@ -3905,7 +3906,7 @@ var useBufferUntilFirstFrame = ({
3905
3906
  logLevel,
3906
3907
  mountTime
3907
3908
  }) => {
3908
- const bufferingRef = useRef9(false);
3909
+ const bufferingRef = useRef10(false);
3909
3910
  const { delayPlayback } = useBufferState();
3910
3911
  const bufferUntilFirstFrame = useCallback9((requestedTime) => {
3911
3912
  if (mediaType !== "video") {
@@ -4163,14 +4164,14 @@ var useMediaBuffering = ({
4163
4164
  };
4164
4165
 
4165
4166
  // src/use-request-video-callback-time.ts
4166
- import { useEffect as useEffect9, useRef as useRef10 } from "react";
4167
+ import { useEffect as useEffect9, useRef as useRef11 } from "react";
4167
4168
  var useRequestVideoCallbackTime = ({
4168
4169
  mediaRef,
4169
4170
  mediaType,
4170
4171
  lastSeek,
4171
4172
  onVariableFpsVideoDetected
4172
4173
  }) => {
4173
- const currentTime = useRef10(null);
4174
+ const currentTime = useRef11(null);
4174
4175
  useEffect9(() => {
4175
4176
  const { current } = mediaRef;
4176
4177
  if (current) {
@@ -4406,14 +4407,14 @@ var useMediaPlayback = ({
4406
4407
  const buffering = useContext22(BufferingContextReact);
4407
4408
  const { fps } = useVideoConfig();
4408
4409
  const mediaStartsAt = useMediaStartsAt();
4409
- const lastSeekDueToShift = useRef11(null);
4410
- const lastSeek = useRef11(null);
4410
+ const lastSeekDueToShift = useRef12(null);
4411
+ const lastSeek = useRef12(null);
4411
4412
  const logLevel = useLogLevel();
4412
4413
  const mountTime = useMountTime();
4413
4414
  if (!buffering) {
4414
4415
  throw new Error("useMediaPlayback must be used inside a <BufferingContext>");
4415
4416
  }
4416
- const isVariableFpsVideoMap = useRef11({});
4417
+ const isVariableFpsVideoMap = useRef12({});
4417
4418
  const onVariableFpsVideoDetected = useCallback10(() => {
4418
4419
  if (!src) {
4419
4420
  return;
@@ -4857,7 +4858,7 @@ var AudioForDevelopmentForwardRefFunction = (props, ref) => {
4857
4858
  useImperativeHandle6(ref, () => {
4858
4859
  return audioRef.current;
4859
4860
  }, [audioRef]);
4860
- const currentOnDurationCallback = useRef12(onDuration);
4861
+ const currentOnDurationCallback = useRef13(onDuration);
4861
4862
  currentOnDurationCallback.current = onDuration;
4862
4863
  useEffect12(() => {
4863
4864
  const { current } = audioRef;
@@ -4896,11 +4897,11 @@ import {
4896
4897
  useImperativeHandle as useImperativeHandle7,
4897
4898
  useLayoutEffect as useLayoutEffect8,
4898
4899
  useMemo as useMemo22,
4899
- useRef as useRef13
4900
+ useRef as useRef14
4900
4901
  } from "react";
4901
4902
  import { jsx as jsx19 } from "react/jsx-runtime";
4902
4903
  var AudioForRenderingRefForwardingFunction = (props, ref) => {
4903
- const audioRef = useRef13(null);
4904
+ const audioRef = useRef14(null);
4904
4905
  const {
4905
4906
  volume: volumeProp,
4906
4907
  playbackRate,
@@ -5722,7 +5723,7 @@ import {
5722
5723
  useContext as useContext30,
5723
5724
  useImperativeHandle as useImperativeHandle8,
5724
5725
  useLayoutEffect as useLayoutEffect9,
5725
- useRef as useRef14
5726
+ useRef as useRef15
5726
5727
  } from "react";
5727
5728
  import { jsx as jsx25 } from "react/jsx-runtime";
5728
5729
  function exponentialBackoff(errorCount) {
@@ -5739,8 +5740,8 @@ var ImgRefForwarding = ({
5739
5740
  crossOrigin,
5740
5741
  ...props2
5741
5742
  }, ref) => {
5742
- const imageRef = useRef14(null);
5743
- const errors = useRef14({});
5743
+ const imageRef = useRef15(null);
5744
+ const errors = useRef15({});
5744
5745
  const { delayPlayback } = useBufferState();
5745
5746
  const sequenceContext = useContext30(SequenceContext);
5746
5747
  if (!src) {
@@ -5883,7 +5884,7 @@ import {
5883
5884
  useCallback as useCallback14,
5884
5885
  useImperativeHandle as useImperativeHandle9,
5885
5886
  useMemo as useMemo25,
5886
- useRef as useRef15,
5887
+ useRef as useRef16,
5887
5888
  useState as useState17
5888
5889
  } from "react";
5889
5890
  import { jsx as jsx26 } from "react/jsx-runtime";
@@ -5897,7 +5898,7 @@ var CompositionManagerProvider = ({
5897
5898
  const [folders, setFolders] = useState17([]);
5898
5899
  const [canvasContent, setCanvasContent] = useState17(initialCanvasContent);
5899
5900
  const [compositions, setCompositions] = useState17(initialCompositions);
5900
- const currentcompositionsRef = useRef15(compositions);
5901
+ const currentcompositionsRef = useRef16(compositions);
5901
5902
  const updateCompositions = useCallback14((updateComps) => {
5902
5903
  setCompositions((comps) => {
5903
5904
  const updated = updateComps(comps);
@@ -6513,7 +6514,7 @@ import {
6513
6514
  useEffect as useEffect19,
6514
6515
  useImperativeHandle as useImperativeHandle10,
6515
6516
  useMemo as useMemo29,
6516
- useRef as useRef16,
6517
+ useRef as useRef17,
6517
6518
  useState as useState20
6518
6519
  } from "react";
6519
6520
 
@@ -6553,7 +6554,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
6553
6554
  if (!context) {
6554
6555
  throw new Error("SharedAudioContext not found");
6555
6556
  }
6556
- const videoRef = useRef16(null);
6557
+ const videoRef = useRef17(null);
6557
6558
  const sharedSource = useMemo29(() => {
6558
6559
  if (!context.audioContext) {
6559
6560
  return null;
@@ -6701,7 +6702,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
6701
6702
  current.removeEventListener("error", errorHandler);
6702
6703
  };
6703
6704
  }, [onError, src]);
6704
- const currentOnDurationCallback = useRef16(onDuration);
6705
+ const currentOnDurationCallback = useRef17(onDuration);
6705
6706
  currentOnDurationCallback.current = onDuration;
6706
6707
  useEmitVideoFrame({ ref: videoRef, onVideoFrame });
6707
6708
  useEffect19(() => {
@@ -7964,7 +7965,7 @@ import {
7964
7965
  useImperativeHandle as useImperativeHandle11,
7965
7966
  useLayoutEffect as useLayoutEffect11,
7966
7967
  useMemo as useMemo32,
7967
- useRef as useRef17
7968
+ useRef as useRef18
7968
7969
  } from "react";
7969
7970
 
7970
7971
  // src/video/seek-until-right.ts
@@ -8113,7 +8114,7 @@ var VideoForRenderingForwardFunction = ({
8113
8114
  const frame = useCurrentFrame();
8114
8115
  const volumePropsFrame = useFrameForVolumeProp(loopVolumeCurveBehavior ?? "repeat");
8115
8116
  const videoConfig = useUnsafeVideoConfig();
8116
- const videoRef = useRef17(null);
8117
+ const videoRef = useRef18(null);
8117
8118
  const sequenceContext = useContext34(SequenceContext);
8118
8119
  const mediaStartsAt = useMediaStartsAt();
8119
8120
  const environment = useRemotionEnvironment();
@@ -1,5 +1,5 @@
1
1
  // src/version.ts
2
- var VERSION = "4.0.387";
2
+ var VERSION = "4.0.389";
3
3
  export {
4
4
  VERSION
5
5
  };
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/core"
4
4
  },
5
5
  "name": "remotion",
6
- "version": "4.0.387",
6
+ "version": "4.0.389",
7
7
  "description": "Make videos programmatically",
8
8
  "main": "dist/cjs/index.js",
9
9
  "types": "dist/cjs/index.d.ts",
@@ -34,7 +34,7 @@
34
34
  "react-dom": "19.2.3",
35
35
  "webpack": "5.96.1",
36
36
  "zod": "3.22.3",
37
- "@remotion/eslint-config-internal": "4.0.387",
37
+ "@remotion/eslint-config-internal": "4.0.389",
38
38
  "eslint": "9.19.0"
39
39
  },
40
40
  "keywords": [
@@ -1,6 +0,0 @@
1
- export declare const calculateLoopDuration: ({ endAt, mediaDuration, playbackRate, startFrom, }: {
2
- mediaDuration: number;
3
- playbackRate: number;
4
- startFrom: number | undefined;
5
- endAt: number | undefined;
6
- }) => number;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateLoopDuration = void 0;
4
- const calculateLoopDuration = ({ endAt, mediaDuration, playbackRate, startFrom, }) => {
5
- let duration = mediaDuration;
6
- // Account for endAt
7
- if (typeof endAt !== 'undefined') {
8
- duration = endAt;
9
- }
10
- // Account for startFrom
11
- if (typeof startFrom !== 'undefined') {
12
- duration -= startFrom;
13
- }
14
- const actualDuration = duration / playbackRate;
15
- return Math.floor(actualDuration);
16
- };
17
- exports.calculateLoopDuration = calculateLoopDuration;
@@ -1,4 +0,0 @@
1
- export declare const useAudioChannelIndex: ({ ref, audioChannelIndex, }: {
2
- ref: React.RefObject<HTMLVideoElement | HTMLAudioElement | null>;
3
- audioChannelIndex: number;
4
- }) => void;
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useAudioChannelIndex = void 0;
4
- const react_1 = require("react");
5
- const useAudioChannelIndex = ({ ref, audioChannelIndex, }) => {
6
- (0, react_1.useEffect)(() => {
7
- var _a;
8
- // @ts-expect-error
9
- const audioChannels = (_a = ref === null || ref === void 0 ? void 0 : ref.current) === null || _a === void 0 ? void 0 : _a.audioTracks;
10
- console.log({ audioChannels, audioChannelIndex });
11
- }, [ref, audioChannelIndex]);
12
- };
13
- exports.useAudioChannelIndex = useAudioChannelIndex;