@remotion/media 4.0.494 → 4.0.495

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.
@@ -4,6 +4,7 @@ import { type MediaOnError } from '../on-error';
4
4
  import type { MediaRequestInit } from '../request-init';
5
5
  import type { FallbackHtml5AudioProps } from './props';
6
6
  type InnerAudioProps = {
7
+ readonly style: React.CSSProperties | null;
7
8
  readonly loop?: boolean;
8
9
  readonly src: string;
9
10
  readonly logLevel?: LogLevel;
@@ -21,4 +21,4 @@ export declare const Audio: React.ComponentType<{
21
21
  onError?: import("../on-error").MediaOnError | undefined;
22
22
  credentials?: RequestCredentials | undefined;
23
23
  requestInit?: import("..").MediaRequestInit | undefined;
24
- } & import("remotion").InteractiveBaseProps>;
24
+ } & import("remotion").InteractiveBaseProps & Pick<import("remotion").InteractivePremountProps, "postmountFor" | "premountFor">>;
@@ -1,4 +1,4 @@
1
- import type { InteractiveBaseProps, LogLevel, LoopVolumeCurveBehavior, VolumeProp } from 'remotion';
1
+ import type { InteractiveBaseProps, InteractivePremountProps, LogLevel, LoopVolumeCurveBehavior, VolumeProp } from 'remotion';
2
2
  import type { MediaOnError } from '../on-error';
3
3
  import type { MediaRequestInit } from '../request-init';
4
4
  export type FallbackHtml5AudioProps = {
@@ -38,4 +38,4 @@ export type AudioProps = {
38
38
  */
39
39
  credentials?: RequestCredentials;
40
40
  requestInit?: MediaRequestInit;
41
- } & InteractiveBaseProps;
41
+ } & InteractiveBaseProps & Pick<InteractivePremountProps, 'premountFor' | 'postmountFor'>;
@@ -39,6 +39,7 @@ var __callDispose = (stack, error, hasError) => {
39
39
  // src/audio/audio.tsx
40
40
  import { useMemo as useMemo3, useState as useState3 } from "react";
41
41
  import {
42
+ Freeze,
42
43
  Internals as Internals17,
43
44
  Interactive,
44
45
  Sequence,
@@ -2379,7 +2380,8 @@ var AudioForPreviewAssertedShowing = ({
2379
2380
  onError,
2380
2381
  credentials,
2381
2382
  requestInit,
2382
- setMediaDurationInSeconds
2383
+ setMediaDurationInSeconds,
2384
+ style
2383
2385
  }) => {
2384
2386
  const videoConfig = useUnsafeVideoConfig();
2385
2387
  const frame = useCurrentFrame();
@@ -2609,6 +2611,7 @@ var AudioForPreviewAssertedShowing = ({
2609
2611
  name,
2610
2612
  loop,
2611
2613
  showInTimeline,
2614
+ style: style ?? undefined,
2612
2615
  stack: stack ?? undefined,
2613
2616
  toneFrequency,
2614
2617
  audioStreamIndex,
@@ -2639,7 +2642,8 @@ var AudioForPreview = ({
2639
2642
  onError,
2640
2643
  credentials,
2641
2644
  requestInit,
2642
- setMediaDurationInSeconds
2645
+ setMediaDurationInSeconds,
2646
+ style
2643
2647
  }) => {
2644
2648
  const preloadedSrc = usePreload(src);
2645
2649
  const defaultLogLevel = Internals7.useLogLevel();
@@ -2693,7 +2697,8 @@ var AudioForPreview = ({
2693
2697
  credentials,
2694
2698
  requestInit,
2695
2699
  fallbackHtml5AudioProps,
2696
- setMediaDurationInSeconds
2700
+ setMediaDurationInSeconds,
2701
+ style
2697
2702
  });
2698
2703
  };
2699
2704
 
@@ -4883,6 +4888,7 @@ var audioSchema = {
4883
4888
  keyframable: false
4884
4889
  },
4885
4890
  ...Internals17.baseSchema,
4891
+ ...Internals17.premountSchema,
4886
4892
  volume: {
4887
4893
  type: "number",
4888
4894
  min: 0,
@@ -4913,6 +4919,9 @@ var AudioInner = (props) => {
4913
4919
  durationInFrames,
4914
4920
  freeze,
4915
4921
  hidden,
4922
+ style,
4923
+ premountFor,
4924
+ postmountFor,
4916
4925
  ...otherProps
4917
4926
  } = props;
4918
4927
  const environment = useRemotionEnvironment2();
@@ -4955,6 +4964,24 @@ var AudioInner = (props) => {
4955
4964
  type: "audio",
4956
4965
  data: basicInfo
4957
4966
  }), [basicInfo]);
4967
+ const {
4968
+ effectivePostmountFor,
4969
+ effectivePremountFor,
4970
+ freezeFrame,
4971
+ isPremountingOrPostmounting,
4972
+ postmountingActive,
4973
+ premountingActive,
4974
+ premountingStyle
4975
+ } = Internals17.usePremounting({
4976
+ from: from ?? 0,
4977
+ durationInFrames: basicInfo.duration,
4978
+ premountFor: premountFor ?? null,
4979
+ postmountFor: postmountFor ?? null,
4980
+ style: style ?? null,
4981
+ styleWhilePremounted: null,
4982
+ styleWhilePostmounted: null,
4983
+ hideWhilePremounted: "display-none"
4984
+ });
4958
4985
  if (typeof props.src !== "string") {
4959
4986
  throw new TypeError(`The \`<Audio>\` tag requires a string for \`src\`, but got ${JSON.stringify(props.src)} instead.`);
4960
4987
  }
@@ -4962,26 +4989,36 @@ var AudioInner = (props) => {
4962
4989
  if (sequenceDurationInFrames === 0) {
4963
4990
  return null;
4964
4991
  }
4965
- return /* @__PURE__ */ jsx3(Sequence, {
4966
- layout: "none",
4967
- from: from ?? 0,
4968
- durationInFrames: basicInfo.duration,
4969
- freeze,
4970
- _remotionInternalStack: stack,
4971
- _remotionInternalIsMedia: isMedia,
4972
- name: name ?? "<Audio>",
4973
- _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/media/audio" : undefined,
4974
- controls,
4975
- _remotionInternalLoopDisplay: loopDisplay,
4976
- showInTimeline: showInTimeline ?? true,
4977
- hidden,
4978
- children: environment.isRendering ? /* @__PURE__ */ jsx3(AudioForRendering, {
4979
- ...otherProps
4980
- }) : /* @__PURE__ */ jsx3(AudioForPreview, {
4981
- name,
4982
- ...otherProps,
4983
- stack: stack ?? null,
4984
- setMediaDurationInSeconds
4992
+ return /* @__PURE__ */ jsx3(Freeze, {
4993
+ frame: freezeFrame,
4994
+ active: isPremountingOrPostmounting,
4995
+ children: /* @__PURE__ */ jsx3(Sequence, {
4996
+ layout: "none",
4997
+ from: from ?? 0,
4998
+ durationInFrames: basicInfo.duration,
4999
+ freeze,
5000
+ _remotionInternalStack: stack,
5001
+ _remotionInternalIsMedia: isMedia,
5002
+ _remotionInternalPremountDisplay: effectivePremountFor || null,
5003
+ _remotionInternalPostmountDisplay: effectivePostmountFor || null,
5004
+ _remotionInternalIsPremounting: premountingActive,
5005
+ _remotionInternalIsPostmounting: postmountingActive,
5006
+ name: name ?? "<Audio>",
5007
+ _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/media/audio" : undefined,
5008
+ controls,
5009
+ _remotionInternalLoopDisplay: loopDisplay,
5010
+ showInTimeline: showInTimeline ?? true,
5011
+ hidden,
5012
+ children: environment.isRendering ? /* @__PURE__ */ jsx3(AudioForRendering, {
5013
+ ...otherProps,
5014
+ style: premountingStyle ?? undefined
5015
+ }) : /* @__PURE__ */ jsx3(AudioForPreview, {
5016
+ name,
5017
+ ...otherProps,
5018
+ style: premountingStyle,
5019
+ stack: stack ?? null,
5020
+ setMediaDurationInSeconds
5021
+ })
4985
5022
  })
4986
5023
  });
4987
5024
  };
@@ -4996,6 +5033,7 @@ var Audio = Interactive.withSchema({
4996
5033
  // src/video/video.tsx
4997
5034
  import React6, { useMemo as useMemo6, useState as useState6 } from "react";
4998
5035
  import {
5036
+ Freeze as Freeze2,
4999
5037
  Internals as Internals22,
5000
5038
  Interactive as Interactive2,
5001
5039
  Sequence as Sequence2,
@@ -5854,6 +5892,8 @@ var videoSchema = {
5854
5892
  keyframable: false
5855
5893
  },
5856
5894
  ...Internals22.baseSchema,
5895
+ ...Internals22.premountSchema,
5896
+ ...Internals22.premountStyleSchema,
5857
5897
  volume: {
5858
5898
  type: "number",
5859
5899
  min: 0,
@@ -6024,6 +6064,10 @@ var VideoInner = ({
6024
6064
  from,
6025
6065
  freeze,
6026
6066
  hidden,
6067
+ premountFor,
6068
+ postmountFor,
6069
+ styleWhilePremounted,
6070
+ styleWhilePostmounted,
6027
6071
  ...props
6028
6072
  }) => {
6029
6073
  const fallbackLogLevel = Internals22.useLogLevel();
@@ -6079,57 +6123,83 @@ var VideoInner = ({
6079
6123
  });
6080
6124
  const memoizedEffectDefinitions = Internals22.useMemoizedEffectDefinitions(effects ?? []);
6081
6125
  const refForOutline = React6.useRef(null);
6126
+ const {
6127
+ effectivePostmountFor,
6128
+ effectivePremountFor,
6129
+ freezeFrame,
6130
+ isPremountingOrPostmounting,
6131
+ postmountingActive,
6132
+ premountingActive,
6133
+ premountingStyle
6134
+ } = Internals22.usePremounting({
6135
+ from: from ?? 0,
6136
+ durationInFrames: videoSequenceDuration ?? Infinity,
6137
+ premountFor: premountFor ?? null,
6138
+ postmountFor: postmountFor ?? null,
6139
+ style: style ?? null,
6140
+ styleWhilePremounted: styleWhilePremounted ?? null,
6141
+ styleWhilePostmounted: styleWhilePostmounted ?? null,
6142
+ hideWhilePremounted: "display-none"
6143
+ });
6082
6144
  if (sequenceDurationInFrames === 0) {
6083
6145
  return null;
6084
6146
  }
6085
- return /* @__PURE__ */ jsx6(Sequence2, {
6086
- layout: "none",
6087
- from: from ?? 0,
6088
- durationInFrames: videoSequenceDuration,
6089
- freeze,
6090
- _remotionInternalStack: stack,
6091
- _remotionInternalIsMedia: isMedia,
6092
- name: name ?? "<Video>",
6093
- _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/media/video" : undefined,
6094
- controls,
6095
- _remotionInternalLoopDisplay: loopDisplay,
6096
- _remotionInternalEffects: memoizedEffectDefinitions,
6097
- outlineRef: refForOutline,
6098
- showInTimeline: showInTimeline ?? true,
6099
- hidden,
6100
- children: /* @__PURE__ */ jsx6(InnerVideo, {
6101
- ...props,
6102
- audioStreamIndex: audioStreamIndex ?? 0,
6103
- className,
6104
- delayRenderRetries: delayRenderRetries ?? null,
6105
- delayRenderTimeoutInMilliseconds: delayRenderTimeoutInMilliseconds ?? null,
6106
- disallowFallbackToOffthreadVideo: disallowFallbackToOffthreadVideo ?? false,
6107
- fallbackOffthreadVideoProps: fallbackOffthreadVideoProps ?? {},
6108
- logLevel: logLevel ?? fallbackLogLevel,
6109
- loop: loop ?? false,
6110
- loopVolumeCurveBehavior: loopVolumeCurveBehavior ?? "repeat",
6111
- muted: muted ?? false,
6112
- onVideoFrame,
6113
- playbackRate: playbackRate ?? 1,
6114
- showInTimeline: showInTimeline ?? true,
6115
- src,
6116
- style: style ?? {},
6117
- trimAfter,
6118
- trimBefore,
6119
- volume: volume ?? 1,
6120
- toneFrequency: toneFrequency ?? 1,
6121
- stack,
6122
- debugOverlay: debugOverlay ?? false,
6123
- headless: headless ?? false,
6124
- onError,
6125
- credentials,
6126
- requestInit,
6147
+ return /* @__PURE__ */ jsx6(Freeze2, {
6148
+ frame: freezeFrame,
6149
+ active: isPremountingOrPostmounting,
6150
+ children: /* @__PURE__ */ jsx6(Sequence2, {
6151
+ layout: "none",
6152
+ from: from ?? 0,
6153
+ durationInFrames: videoSequenceDuration,
6154
+ freeze,
6155
+ _remotionInternalStack: stack,
6156
+ _remotionInternalIsMedia: isMedia,
6157
+ _remotionInternalPremountDisplay: effectivePremountFor || null,
6158
+ _remotionInternalPostmountDisplay: effectivePostmountFor || null,
6159
+ _remotionInternalIsPremounting: premountingActive,
6160
+ _remotionInternalIsPostmounting: postmountingActive,
6161
+ name: name ?? "<Video>",
6162
+ _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/media/video" : undefined,
6127
6163
  controls,
6128
- objectFit: objectFit ?? "contain",
6129
- _experimentalInitiallyDrawCachedFrame: _experimentalInitiallyDrawCachedFrame ?? false,
6130
- effects: memoizedEffects,
6131
- setMediaDurationInSeconds,
6132
- refForOutline
6164
+ _remotionInternalLoopDisplay: loopDisplay,
6165
+ _remotionInternalEffects: memoizedEffectDefinitions,
6166
+ outlineRef: refForOutline,
6167
+ showInTimeline: showInTimeline ?? true,
6168
+ hidden,
6169
+ children: /* @__PURE__ */ jsx6(InnerVideo, {
6170
+ ...props,
6171
+ audioStreamIndex: audioStreamIndex ?? 0,
6172
+ className,
6173
+ delayRenderRetries: delayRenderRetries ?? null,
6174
+ delayRenderTimeoutInMilliseconds: delayRenderTimeoutInMilliseconds ?? null,
6175
+ disallowFallbackToOffthreadVideo: disallowFallbackToOffthreadVideo ?? false,
6176
+ fallbackOffthreadVideoProps: fallbackOffthreadVideoProps ?? {},
6177
+ logLevel: logLevel ?? fallbackLogLevel,
6178
+ loop: loop ?? false,
6179
+ loopVolumeCurveBehavior: loopVolumeCurveBehavior ?? "repeat",
6180
+ muted: muted ?? false,
6181
+ onVideoFrame,
6182
+ playbackRate: playbackRate ?? 1,
6183
+ showInTimeline: showInTimeline ?? true,
6184
+ src,
6185
+ style: premountingStyle ?? {},
6186
+ trimAfter,
6187
+ trimBefore,
6188
+ volume: volume ?? 1,
6189
+ toneFrequency: toneFrequency ?? 1,
6190
+ stack,
6191
+ debugOverlay: debugOverlay ?? false,
6192
+ headless: headless ?? false,
6193
+ onError,
6194
+ credentials,
6195
+ requestInit,
6196
+ controls,
6197
+ objectFit: objectFit ?? "contain",
6198
+ _experimentalInitiallyDrawCachedFrame: _experimentalInitiallyDrawCachedFrame ?? false,
6199
+ effects: memoizedEffects,
6200
+ setMediaDurationInSeconds,
6201
+ refForOutline
6202
+ })
6133
6203
  })
6134
6204
  });
6135
6205
  };
package/dist/index.d.ts CHANGED
@@ -25,7 +25,7 @@ export declare const experimental_Audio: import("react").ComponentType<{
25
25
  onError?: import("./on-error").MediaOnError | undefined;
26
26
  credentials?: RequestCredentials | undefined;
27
27
  requestInit?: import("./request-init").MediaRequestInit | undefined;
28
- } & import("remotion").InteractiveBaseProps>;
28
+ } & import("remotion").InteractiveBaseProps & Pick<import("remotion").InteractivePremountProps, "postmountFor" | "premountFor">>;
29
29
  /**
30
30
  * @deprecated Now just `Video`
31
31
  */
@@ -62,7 +62,7 @@ export declare const experimental_Video: import("react").ComponentType<{
62
62
  objectFit: import(".").VideoObjectFit;
63
63
  _experimentalInitiallyDrawCachedFrame: boolean;
64
64
  effects: import("remotion").EffectsProp;
65
- }> & Omit<import("react").HTMLAttributes<HTMLElement>, "_experimentalInitiallyDrawCachedFrame" | "audioStreamIndex" | "className" | "credentials" | "debugOverlay" | "delayRenderRetries" | "delayRenderTimeoutInMilliseconds" | "disallowFallbackToOffthreadVideo" | "effects" | "fallbackOffthreadVideoProps" | "headless" | "logLevel" | "loop" | "loopVolumeCurveBehavior" | "muted" | "objectFit" | "onError" | "onVideoFrame" | "playbackRate" | "requestInit" | "showInTimeline" | "src" | "stack" | "style" | "toneFrequency" | "trimAfter" | "trimBefore" | "volume"> & Record<`data-${string}`, string | undefined> & import("remotion").InteractiveBaseProps>;
65
+ }> & Omit<import("react").HTMLAttributes<HTMLElement>, "_experimentalInitiallyDrawCachedFrame" | "audioStreamIndex" | "className" | "credentials" | "debugOverlay" | "delayRenderRetries" | "delayRenderTimeoutInMilliseconds" | "disallowFallbackToOffthreadVideo" | "effects" | "fallbackOffthreadVideoProps" | "headless" | "logLevel" | "loop" | "loopVolumeCurveBehavior" | "muted" | "objectFit" | "onError" | "onVideoFrame" | "playbackRate" | "requestInit" | "showInTimeline" | "src" | "stack" | "style" | "toneFrequency" | "trimAfter" | "trimBefore" | "volume"> & Record<`data-${string}`, string | undefined> & import("remotion").InteractiveBaseProps & import("remotion").InteractivePremountProps>;
66
66
  export { AudioForPreview } from './audio/audio-for-preview';
67
67
  export { AudioProps, FallbackHtml5AudioProps } from './audio/props';
68
68
  export { MediaErrorAction } from './on-error';
@@ -1,5 +1,5 @@
1
1
  import type React from 'react';
2
- import type { EffectDefinitionAndStack, EffectsProp, InteractiveBaseProps, LogLevel, LoopVolumeCurveBehavior, OnVideoFrame, VolumeProp } from 'remotion';
2
+ import type { EffectDefinitionAndStack, EffectsProp, InteractiveBaseProps, InteractivePremountProps, LogLevel, LoopVolumeCurveBehavior, OnVideoFrame, VolumeProp } from 'remotion';
3
3
  import type { MediaOnError } from '../on-error';
4
4
  import type { MediaRequestInit } from '../request-init';
5
5
  export type MediaErrorEvent = {
@@ -64,5 +64,5 @@ export type NativeVideoProps = Omit<React.HTMLAttributes<HTMLElement>, keyof Man
64
64
  export type InnerVideoProps = MandatoryVideoProps & OuterVideoProps & Omit<OptionalVideoProps, 'effects'> & NativeVideoProps & {
65
65
  effects: EffectDefinitionAndStack<unknown>[];
66
66
  };
67
- export type VideoProps = MandatoryVideoProps & Partial<OuterVideoProps> & Partial<OptionalVideoProps> & NativeVideoProps & InteractiveBaseProps;
67
+ export type VideoProps = MandatoryVideoProps & Partial<OuterVideoProps> & Partial<OptionalVideoProps> & NativeVideoProps & InteractiveBaseProps & InteractivePremountProps;
68
68
  export {};
@@ -32,4 +32,4 @@ export declare const Video: React.ComponentType<{
32
32
  objectFit: import("./props").VideoObjectFit;
33
33
  _experimentalInitiallyDrawCachedFrame: boolean;
34
34
  effects: import("remotion").EffectsProp;
35
- }> & Omit<React.HTMLAttributes<HTMLElement>, "_experimentalInitiallyDrawCachedFrame" | "audioStreamIndex" | "className" | "credentials" | "debugOverlay" | "delayRenderRetries" | "delayRenderTimeoutInMilliseconds" | "disallowFallbackToOffthreadVideo" | "effects" | "fallbackOffthreadVideoProps" | "headless" | "logLevel" | "loop" | "loopVolumeCurveBehavior" | "muted" | "objectFit" | "onError" | "onVideoFrame" | "playbackRate" | "requestInit" | "showInTimeline" | "src" | "stack" | "style" | "toneFrequency" | "trimAfter" | "trimBefore" | "volume"> & Record<`data-${string}`, string | undefined> & import("remotion").InteractiveBaseProps>;
35
+ }> & Omit<React.HTMLAttributes<HTMLElement>, "_experimentalInitiallyDrawCachedFrame" | "audioStreamIndex" | "className" | "credentials" | "debugOverlay" | "delayRenderRetries" | "delayRenderTimeoutInMilliseconds" | "disallowFallbackToOffthreadVideo" | "effects" | "fallbackOffthreadVideoProps" | "headless" | "logLevel" | "loop" | "loopVolumeCurveBehavior" | "muted" | "objectFit" | "onError" | "onVideoFrame" | "playbackRate" | "requestInit" | "showInTimeline" | "src" | "stack" | "style" | "toneFrequency" | "trimAfter" | "trimBefore" | "volume"> & Record<`data-${string}`, string | undefined> & import("remotion").InteractiveBaseProps & import("remotion").InteractivePremountProps>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/media",
3
- "version": "4.0.494",
3
+ "version": "4.0.495",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "module": "dist/esm/index.mjs",
@@ -23,7 +23,7 @@
23
23
  },
24
24
  "dependencies": {
25
25
  "mediabunny": "1.50.8",
26
- "remotion": "4.0.494",
26
+ "remotion": "4.0.495",
27
27
  "zod": "4.3.6"
28
28
  },
29
29
  "peerDependencies": {
@@ -31,8 +31,8 @@
31
31
  "react-dom": ">=16.8.0"
32
32
  },
33
33
  "devDependencies": {
34
- "@remotion/eslint-config-internal": "4.0.494",
35
- "@remotion/player": "4.0.494",
34
+ "@remotion/eslint-config-internal": "4.0.495",
35
+ "@remotion/player": "4.0.495",
36
36
  "@vitest/browser-webdriverio": "4.0.9",
37
37
  "eslint": "9.19.0",
38
38
  "react": "19.2.3",