remotion 4.0.491 → 4.0.492

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.
@@ -55,6 +55,7 @@ const InnerComposition = ({ width, height, fps, durationInFrames, id, defaultPro
55
55
  }
56
56
  const { folderName, parentName } = (0, react_1.useContext)(Folder_js_1.FolderContext);
57
57
  const stack = (_b = compProps.stack) !== null && _b !== void 0 ? _b : null;
58
+ const componentFromProps = 'component' in compProps ? compProps.component : null;
58
59
  (0, react_1.useEffect)(() => {
59
60
  var _a;
60
61
  // Ensure it's a URL safe id
@@ -74,6 +75,7 @@ const InnerComposition = ({ width, height, fps, durationInFrames, id, defaultPro
74
75
  defaultProps: (0, input_props_serialization_js_1.serializeThenDeserializeInStudio)((defaultProps !== null && defaultProps !== void 0 ? defaultProps : {})),
75
76
  nonce: nonce.get(),
76
77
  parentFolderName: parentName,
78
+ componentFromProps,
77
79
  schema: schema !== null && schema !== void 0 ? schema : null,
78
80
  calculateMetadata: (_a = compProps.calculateMetadata) !== null && _a !== void 0 ? _a : null,
79
81
  stack,
@@ -92,6 +94,7 @@ const InnerComposition = ({ width, height, fps, durationInFrames, id, defaultPro
92
94
  width,
93
95
  nonce,
94
96
  parentName,
97
+ componentFromProps,
95
98
  schema,
96
99
  compProps.calculateMetadata,
97
100
  stack,
@@ -16,6 +16,7 @@ export type TComposition<Schema extends AnyZodObject, Props extends Record<strin
16
16
  folderName: string | null;
17
17
  parentFolderName: string | null;
18
18
  component: LazyExoticComponent<ComponentType<Props>> | ComponentType<Props>;
19
+ componentFromProps?: unknown;
19
20
  nonce: NonceHistory;
20
21
  schema: Schema | null;
21
22
  calculateMetadata: CalculateMetadataFunction<InferProps<Schema, Props>> | null;
@@ -83,6 +84,7 @@ export type TSequence = {
83
84
  effects: readonly EffectDefinition<unknown>[];
84
85
  isInsideSeries: boolean;
85
86
  frozenFrame: number | null;
87
+ singleChildComponent?: unknown;
86
88
  } & EnhancedTSequenceData;
87
89
  export type AudioOrVideoAsset = {
88
90
  type: 'audio' | 'video';
package/dist/cjs/Img.d.ts CHANGED
@@ -82,6 +82,12 @@ export declare const imgSchema: {
82
82
  readonly hidden: import("./interactivity-schema.js").BooleanFieldSchema;
83
83
  readonly name: import("./interactivity-schema.js").HiddenFieldSchema;
84
84
  readonly showInTimeline: import("./interactivity-schema.js").HiddenFieldSchema;
85
+ readonly src: {
86
+ readonly type: "asset";
87
+ readonly default: undefined;
88
+ readonly description: "Source";
89
+ readonly keyframable: false;
90
+ };
85
91
  };
86
92
  export declare const Img: React.ComponentType<NativeImgProps & {
87
93
  readonly maxRetries?: number | undefined;
package/dist/cjs/Img.js CHANGED
@@ -198,6 +198,12 @@ const NativeImgInner = ({ hidden, name, stack, showInTimeline, src, from, trimBe
198
198
  };
199
199
  const CanvasImageWithPrivateProps = index_js_1.CanvasImage;
200
200
  exports.imgSchema = {
201
+ src: {
202
+ type: 'asset',
203
+ default: undefined,
204
+ description: 'Source',
205
+ keyframable: false,
206
+ },
201
207
  ...interactivity_schema_js_1.baseSchema,
202
208
  ...interactivity_schema_js_1.transformSchema,
203
209
  };
@@ -46,6 +46,10 @@ export type SequencePropsWithoutDuration = {
46
46
  * @deprecated For internal use only.
47
47
  */
48
48
  readonly _remotionInternalDocumentationLink?: string;
49
+ /**
50
+ * @deprecated For internal use only.
51
+ */
52
+ readonly _remotionInternalSingleChildComponent?: unknown;
49
53
  /**
50
54
  * @deprecated For internal use only.
51
55
  */
@@ -19,7 +19,7 @@ const use_video_config_js_1 = require("./use-video-config.js");
19
19
  const v5_flag_js_1 = require("./v5-flag.js");
20
20
  const with_interactivity_schema_js_1 = require("./with-interactivity-schema.js");
21
21
  const EMPTY_EFFECTS = [];
22
- const RegularSequenceRefForwardingFunction = ({ from = 0, trimBefore = 0, freeze, durationInFrames = Infinity, children, name, height, width, showInTimeline = true, hidden = false, controls, _remotionInternalEffects, _remotionInternalLoopDisplay: loopDisplay, _remotionInternalStack: stack, _remotionInternalDocumentationLink: documentationLink, _remotionInternalPremountDisplay: premountDisplay, _remotionInternalPostmountDisplay: postmountDisplay, _remotionInternalIsMedia: isMedia, outlineRef: passedRefForOutline, ...other }, ref) => {
22
+ const RegularSequenceRefForwardingFunction = ({ from = 0, trimBefore = 0, freeze, durationInFrames = Infinity, children, name, height, width, showInTimeline = true, hidden = false, controls, _remotionInternalEffects, _remotionInternalLoopDisplay: loopDisplay, _remotionInternalStack: stack, _remotionInternalDocumentationLink: documentationLink, _remotionInternalSingleChildComponent: singleChildComponent, _remotionInternalPremountDisplay: premountDisplay, _remotionInternalPostmountDisplay: postmountDisplay, _remotionInternalIsMedia: isMedia, outlineRef: passedRefForOutline, ...other }, ref) => {
23
23
  var _a, _b, _c;
24
24
  const { layout = 'absolute-fill' } = other;
25
25
  const [id] = (0, react_1.useState)(() => String(Math.random()));
@@ -210,6 +210,7 @@ const RegularSequenceRefForwardingFunction = ({ from = 0, trimBefore = 0, freeze
210
210
  refForOutline: refForOutline !== null && refForOutline !== void 0 ? refForOutline : null,
211
211
  isInsideSeries,
212
212
  frozenFrame: registeredFrozenFrame,
213
+ singleChildComponent: singleChildComponent !== null && singleChildComponent !== void 0 ? singleChildComponent : null,
213
214
  });
214
215
  }
215
216
  else {
@@ -241,6 +242,7 @@ const RegularSequenceRefForwardingFunction = ({ from = 0, trimBefore = 0, freeze
241
242
  isInsideSeries,
242
243
  frozenFrame: registeredFrozenFrame,
243
244
  frozenMediaFrame,
245
+ singleChildComponent: singleChildComponent !== null && singleChildComponent !== void 0 ? singleChildComponent : null,
244
246
  });
245
247
  }
246
248
  return () => {
@@ -268,6 +270,7 @@ const RegularSequenceRefForwardingFunction = ({ from = 0, trimBefore = 0, freeze
268
270
  refForOutline: refForOutline !== null && refForOutline !== void 0 ? refForOutline : null,
269
271
  isInsideSeries,
270
272
  frozenFrame: registeredFrozenFrame,
273
+ singleChildComponent: singleChildComponent !== null && singleChildComponent !== void 0 ? singleChildComponent : null,
271
274
  });
272
275
  return () => {
273
276
  unregisterSequence(id);
@@ -301,6 +304,7 @@ const RegularSequenceRefForwardingFunction = ({ from = 0, trimBefore = 0, freeze
301
304
  startMediaFrom,
302
305
  mediaFrameAtSequenceZero,
303
306
  frozenMediaFrame,
307
+ singleChildComponent,
304
308
  ]);
305
309
  // Ceil to support floats
306
310
  // https://github.com/remotion-dev/remotion/issues/2958
@@ -17,6 +17,12 @@ const decode_image_js_1 = require("./decode-image.js");
17
17
  const request_init_1 = require("./request-init");
18
18
  const resolve_image_source_1 = require("./resolve-image-source");
19
19
  const animatedImageSchema = {
20
+ src: {
21
+ type: 'asset',
22
+ default: undefined,
23
+ description: 'Source',
24
+ keyframable: false,
25
+ },
20
26
  ...interactivity_schema_js_1.baseSchema,
21
27
  playbackRate: {
22
28
  type: 'number',
@@ -1,2 +1,6 @@
1
+ import React from 'react';
1
2
  export declare const getComponentsToAddStacksTo: () => unknown[];
2
3
  export declare const addSequenceStackTraces: (component: unknown) => void;
4
+ export declare const setSequenceComponent: (component: unknown) => void;
5
+ export declare const getSequenceComponent: () => unknown;
6
+ export declare const getSingleChildComponent: (children: React.ReactNode) => unknown;
@@ -1,10 +1,36 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.addSequenceStackTraces = exports.getComponentsToAddStacksTo = void 0;
6
+ exports.getSingleChildComponent = exports.getSequenceComponent = exports.setSequenceComponent = exports.addSequenceStackTraces = exports.getComponentsToAddStacksTo = void 0;
7
+ const react_1 = __importDefault(require("react"));
4
8
  const componentsToAddStacksTo = [];
9
+ let sequenceComponent = null;
5
10
  const getComponentsToAddStacksTo = () => componentsToAddStacksTo;
6
11
  exports.getComponentsToAddStacksTo = getComponentsToAddStacksTo;
7
12
  const addSequenceStackTraces = (component) => {
8
13
  componentsToAddStacksTo.push(component);
9
14
  };
10
15
  exports.addSequenceStackTraces = addSequenceStackTraces;
16
+ const setSequenceComponent = (component) => {
17
+ sequenceComponent = component;
18
+ };
19
+ exports.setSequenceComponent = setSequenceComponent;
20
+ const getSequenceComponent = () => sequenceComponent;
21
+ exports.getSequenceComponent = getSequenceComponent;
22
+ const getSingleChildComponent = (children) => {
23
+ const mountedChildren = react_1.default.Children.toArray(children);
24
+ if (mountedChildren.length !== 1) {
25
+ return null;
26
+ }
27
+ const child = mountedChildren[0];
28
+ if (!react_1.default.isValidElement(child)) {
29
+ return null;
30
+ }
31
+ if (typeof child.type !== 'function' && typeof child.type !== 'object') {
32
+ return null;
33
+ }
34
+ return child.type;
35
+ };
36
+ exports.getSingleChildComponent = getSingleChildComponent;
@@ -5,7 +5,7 @@ import type { AnyCompMetadata, AnyComposition, AudioOrVideoAsset, JsxComponentId
5
5
  import type { DelayRenderScope } from './delay-render.js';
6
6
  import { type TFolder } from './Folder.js';
7
7
  import type { StaticFile } from './get-static-files.js';
8
- import type { ArrayFieldSchema, ArrayItemFieldSchema, InteractivitySchemaField, InteractivitySchema } from './interactivity-schema.js';
8
+ import type { AssetFieldSchema, ArrayFieldSchema, ArrayItemFieldSchema, InteractivitySchemaField, InteractivitySchema } from './interactivity-schema.js';
9
9
  import type { LogLevel } from './log.js';
10
10
  import type { ProResProfile } from './prores-profile.js';
11
11
  import type { PixelFormat, VideoImageFormat } from './render-types.js';
@@ -43,6 +43,7 @@ declare global {
43
43
  remotion_logLevel: LogLevel | undefined;
44
44
  remotion_projectName: string;
45
45
  remotion_cwd: string;
46
+ remotion_fileSystemPlatform: string | null;
46
47
  remotion_studioServerCommand: string;
47
48
  remotion_setFrame: (frame: number, composition: string, attempt: number) => void;
48
49
  remotion_attempt: number;
@@ -182,4 +183,4 @@ export type _InternalTypes = {
182
183
  TRenderAsset: TRenderAsset;
183
184
  ProResProfile: ProResProfile;
184
185
  };
185
- export type { AnyComposition, ArrayFieldSchema, ArrayItemFieldSchema, DelayRenderScope, JsxComponentIdentity, LoopDisplay, SequenceControls, InteractivitySchemaField, InteractivitySchema, UseBufferState, };
186
+ export type { AnyComposition, AssetFieldSchema, ArrayFieldSchema, ArrayItemFieldSchema, DelayRenderScope, JsxComponentIdentity, LoopDisplay, SequenceControls, InteractivitySchemaField, InteractivitySchema, UseBufferState, };
package/dist/cjs/index.js CHANGED
@@ -154,5 +154,6 @@ exports.Config = new Proxy(proxyObj, {
154
154
  });
155
155
  Sequence_js_1.Sequence.displayName = 'Sequence';
156
156
  (0, enable_sequence_stack_traces_js_1.addSequenceStackTraces)(Sequence_js_1.Sequence);
157
+ (0, enable_sequence_stack_traces_js_1.setSequenceComponent)(Sequence_js_1.Sequence);
157
158
  (0, enable_sequence_stack_traces_js_1.addSequenceStackTraces)(Composition_js_1.Composition);
158
159
  (0, enable_sequence_stack_traces_js_1.addSequenceStackTraces)(Folder_js_1.Folder);
@@ -97,6 +97,12 @@ export type FontFamilyFieldSchema = {
97
97
  description?: string;
98
98
  keyframable?: false;
99
99
  };
100
+ export type AssetFieldSchema = {
101
+ type: 'asset';
102
+ default: string | undefined;
103
+ description?: string;
104
+ keyframable?: false;
105
+ };
100
106
  export type EnumFieldSchema = {
101
107
  type: 'enum';
102
108
  default: string;
@@ -126,7 +132,7 @@ export type ArrayFieldSchema = {
126
132
  description?: string;
127
133
  keyframable?: false;
128
134
  };
129
- export type VisibleFieldSchema = NumberFieldSchema | BooleanFieldSchema | RotationCssFieldSchema | RotationDegreesFieldSchema | TranslateFieldSchema | TransformOriginFieldSchema | ScaleFieldSchema | UvCoordinateFieldSchema | ColorFieldSchema | TextContentFieldSchema | FontFamilyFieldSchema | ArrayFieldSchema | EnumFieldSchema;
135
+ export type VisibleFieldSchema = NumberFieldSchema | BooleanFieldSchema | RotationCssFieldSchema | RotationDegreesFieldSchema | TranslateFieldSchema | TransformOriginFieldSchema | ScaleFieldSchema | UvCoordinateFieldSchema | ColorFieldSchema | TextContentFieldSchema | FontFamilyFieldSchema | AssetFieldSchema | ArrayFieldSchema | EnumFieldSchema;
130
136
  export type InteractivitySchemaField = VisibleFieldSchema | HiddenFieldSchema;
131
137
  export type InteractivitySchema = {
132
138
  [key: string]: InteractivitySchemaField;
@@ -6,7 +6,7 @@ import type { JsxComponentIdentity, TCompMetadata, TComposition, TRenderAsset, T
6
6
  import type { CompositionManagerContext } from './CompositionManagerContext.js';
7
7
  import * as CSSUtils from './default-css.js';
8
8
  import type { SerializedJSONWithCustomFields } from './input-props-serialization.js';
9
- import { type ArrayFieldSchema, type ArrayItemFieldSchema, type InteractivitySchemaField, type InteractivitySchema, type VisibleFieldSchema } from './interactivity-schema.js';
9
+ import { type AssetFieldSchema, type ArrayFieldSchema, type ArrayItemFieldSchema, type InteractivitySchemaField, type InteractivitySchema, type VisibleFieldSchema } from './interactivity-schema.js';
10
10
  import type { LoggingContextValue } from './log-level-context.js';
11
11
  import type { NonceHistory } from './nonce.js';
12
12
  import type { RemotionEnvironment } from './remotion-environment-context.js';
@@ -701,6 +701,8 @@ export declare const Internals: {
701
701
  buffering: import("react").RefObject<boolean>;
702
702
  } | null>;
703
703
  readonly getComponentsToAddStacksTo: () => unknown[];
704
+ readonly getSequenceComponent: () => unknown;
705
+ readonly getSingleChildComponent: (children: import("react").ReactNode) => unknown;
704
706
  readonly CurrentScaleContext: import("react").Context<import("./use-current-scale.js").CurrentScaleContextType | null>;
705
707
  readonly PixelDensityContext: import("react").Context<number | null>;
706
708
  readonly PreviewSizeContext: import("react").Context<import("./use-current-scale.js").PreviewSizeCtx>;
@@ -930,4 +932,4 @@ export declare const Internals: {
930
932
  readonly hiddenFromList: true;
931
933
  };
932
934
  };
933
- export type { ArrayFieldSchema, ArrayItemFieldSchema, CannotUpdateSequenceReason, CanUpdateEffectPropsResponse, CanUpdateEffectPropsResponseFalse, CanUpdateEffectPropsResponseTrue, CanUpdateSequencePropsResponse, CanUpdateSequencePropsResponseFalse, CanUpdateSequencePropsResponseTrue, CanUpdateSequencePropStatus, CanUpdateSequencePropStatusEasing, CanUpdateSequencePropStatusFalse, CanUpdateSequencePropStatusKeyframed, CanUpdateSequencePropStatusStatic, VideoConfigNumericExpression, CompositionManagerContext, CompProps, DragOverrides, DragOverrideValue, EffectDragOverrides, GetDragOverrides, GetEffectDragOverrides, GetEffectPropStatuses, GetPropStatuses, JsxComponentIdentity, LoggingContextValue, MediaVolumeContextValue, NonceHistory, OverrideIdsToNodePathsGettersContext, OverrideIdsToNodePathsSettersContext, OverrideIdToNodePaths, OverrideToNodePathGetters, OverrideToNodeSetters, PlaybackRateContextValue, PropStatuses, RemotionAudioContextState, RemotionEnvironment, ResolvedStackLocation, ScheduleAudioNodeOptions, ScheduleAudioNodeResult, InteractivitySchemaField, SequenceNodePath, SequencePropsSubscriptionKey, VideoConfigValues, InteractivitySchema, SerializedJSONWithCustomFields, SetMediaVolumeContextValue, SetTimelineContextValue, TCompMetadata, TComposition, TimelineContextValue, TRenderAsset, TSequence, VisibleFieldSchema, WatchRemotionStaticFilesPayload, };
935
+ export type { ArrayFieldSchema, AssetFieldSchema, ArrayItemFieldSchema, CannotUpdateSequenceReason, CanUpdateEffectPropsResponse, CanUpdateEffectPropsResponseFalse, CanUpdateEffectPropsResponseTrue, CanUpdateSequencePropsResponse, CanUpdateSequencePropsResponseFalse, CanUpdateSequencePropsResponseTrue, CanUpdateSequencePropStatus, CanUpdateSequencePropStatusEasing, CanUpdateSequencePropStatusFalse, CanUpdateSequencePropStatusKeyframed, CanUpdateSequencePropStatusStatic, VideoConfigNumericExpression, CompositionManagerContext, CompProps, DragOverrides, DragOverrideValue, EffectDragOverrides, GetDragOverrides, GetEffectDragOverrides, GetEffectPropStatuses, GetPropStatuses, JsxComponentIdentity, LoggingContextValue, MediaVolumeContextValue, NonceHistory, OverrideIdsToNodePathsGettersContext, OverrideIdsToNodePathsSettersContext, OverrideIdToNodePaths, OverrideToNodePathGetters, OverrideToNodeSetters, PlaybackRateContextValue, PropStatuses, RemotionAudioContextState, RemotionEnvironment, ResolvedStackLocation, ScheduleAudioNodeOptions, ScheduleAudioNodeResult, InteractivitySchemaField, SequenceNodePath, SequencePropsSubscriptionKey, VideoConfigValues, InteractivitySchema, SerializedJSONWithCustomFields, SetMediaVolumeContextValue, SetTimelineContextValue, TCompMetadata, TComposition, TimelineContextValue, TRenderAsset, TSequence, VisibleFieldSchema, WatchRemotionStaticFilesPayload, };
@@ -211,6 +211,8 @@ exports.Internals = {
211
211
  BufferingProvider: buffering_js_1.BufferingProvider,
212
212
  BufferingContextReact: buffering_js_1.BufferingContextReact,
213
213
  getComponentsToAddStacksTo: enable_sequence_stack_traces_js_1.getComponentsToAddStacksTo,
214
+ getSequenceComponent: enable_sequence_stack_traces_js_1.getSequenceComponent,
215
+ getSingleChildComponent: enable_sequence_stack_traces_js_1.getSingleChildComponent,
214
216
  CurrentScaleContext: use_current_scale_js_1.CurrentScaleContext,
215
217
  PixelDensityContext: use_pixel_density_js_1.PixelDensityContext,
216
218
  PreviewSizeContext: use_current_scale_js_1.PreviewSizeContext,
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.computeEffectiveSchemaValuesDotNotation = exports.isKeyframedStatus = exports.getStaticDragOverrideValue = exports.makeKeyframedDragOverride = exports.makeStaticDragOverride = exports.DEFAULT_LINEAR_EASING = void 0;
4
4
  const find_props_to_delete_js_1 = require("./find-props-to-delete.js");
5
5
  const get_effective_visual_mode_value_js_1 = require("./get-effective-visual-mode-value.js");
6
+ const input_props_serialization_js_1 = require("./input-props-serialization.js");
6
7
  const interpolate_keyframed_status_js_1 = require("./interpolate-keyframed-status.js");
7
8
  exports.DEFAULT_LINEAR_EASING = {
8
9
  type: 'linear',
@@ -132,6 +133,11 @@ const computeEffectiveSchemaValuesDotNotation = ({ schema, currentValue, overrid
132
133
  shouldResortToDefaultValueIfUndefined: false,
133
134
  });
134
135
  }
136
+ if ((field === null || field === void 0 ? void 0 : field.type) === 'asset' &&
137
+ typeof value === 'string' &&
138
+ value.startsWith(input_props_serialization_js_1.FILE_TOKEN)) {
139
+ value = `${window.remotion_staticBase}/${value.slice(input_props_serialization_js_1.FILE_TOKEN.length)}`;
140
+ }
135
141
  if (value === undefined) {
136
142
  propsToDelete.add(key);
137
143
  }
@@ -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.491";
6
+ export declare const VERSION = "4.0.492";
@@ -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.491';
10
+ exports.VERSION = '4.0.492';
@@ -1184,6 +1184,7 @@ var InnerComposition = ({
1184
1184
  }
1185
1185
  const { folderName, parentName } = useContext9(FolderContext);
1186
1186
  const stack = compProps.stack ?? null;
1187
+ const componentFromProps = "component" in compProps ? compProps.component : null;
1187
1188
  useEffect2(() => {
1188
1189
  if (!id) {
1189
1190
  throw new Error("No id for composition passed.");
@@ -1201,6 +1202,7 @@ var InnerComposition = ({
1201
1202
  defaultProps: serializeThenDeserializeInStudio(defaultProps ?? {}),
1202
1203
  nonce: nonce.get(),
1203
1204
  parentFolderName: parentName,
1205
+ componentFromProps,
1204
1206
  schema: schema ?? null,
1205
1207
  calculateMetadata: compProps.calculateMetadata ?? null,
1206
1208
  stack
@@ -1219,6 +1221,7 @@ var InnerComposition = ({
1219
1221
  width,
1220
1222
  nonce,
1221
1223
  parentName,
1224
+ componentFromProps,
1222
1225
  schema,
1223
1226
  compProps.calculateMetadata,
1224
1227
  stack,
@@ -1278,14 +1281,34 @@ var Composition = (props) => {
1278
1281
  };
1279
1282
 
1280
1283
  // src/enable-sequence-stack-traces.ts
1284
+ import React9 from "react";
1281
1285
  var componentsToAddStacksTo = [];
1286
+ var sequenceComponent = null;
1282
1287
  var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
1283
1288
  var addSequenceStackTraces = (component) => {
1284
1289
  componentsToAddStacksTo.push(component);
1285
1290
  };
1291
+ var setSequenceComponent = (component) => {
1292
+ sequenceComponent = component;
1293
+ };
1294
+ var getSequenceComponent = () => sequenceComponent;
1295
+ var getSingleChildComponent = (children) => {
1296
+ const mountedChildren = React9.Children.toArray(children);
1297
+ if (mountedChildren.length !== 1) {
1298
+ return null;
1299
+ }
1300
+ const child = mountedChildren[0];
1301
+ if (!React9.isValidElement(child)) {
1302
+ return null;
1303
+ }
1304
+ if (typeof child.type !== "function" && typeof child.type !== "object") {
1305
+ return null;
1306
+ }
1307
+ return child.type;
1308
+ };
1286
1309
 
1287
1310
  // src/version.ts
1288
- var VERSION = "4.0.491";
1311
+ var VERSION = "4.0.492";
1289
1312
 
1290
1313
  // src/multiple-versions-warning.ts
1291
1314
  var checkMultipleRemotionVersions = () => {
@@ -1949,9 +1972,9 @@ var PremountContext = createContext14({
1949
1972
  });
1950
1973
 
1951
1974
  // src/SequenceManager.tsx
1952
- import React11, { useCallback as useCallback5, useMemo as useMemo12, useRef as useRef4, useState as useState3 } from "react";
1975
+ import React12, { useCallback as useCallback5, useMemo as useMemo12, useRef as useRef4, useState as useState3 } from "react";
1953
1976
  import { jsx as jsx10 } from "react/jsx-runtime";
1954
- var SequenceManager = React11.createContext({
1977
+ var SequenceManager = React12.createContext({
1955
1978
  registerSequence: () => {
1956
1979
  throw new Error("SequenceManagerContext not initialized");
1957
1980
  },
@@ -1960,19 +1983,19 @@ var SequenceManager = React11.createContext({
1960
1983
  },
1961
1984
  sequences: []
1962
1985
  });
1963
- var SequenceManagerRefContext = React11.createContext({
1986
+ var SequenceManagerRefContext = React12.createContext({
1964
1987
  current: []
1965
1988
  });
1966
1989
  var makeSequencePropsSubscriptionKey = (key) => {
1967
1990
  return `${key.absolutePath}\x00${key.nodePath.join(".")}\x00${key.sequenceKeys.join(".")}\x00${key.effectKeys.map((keys) => keys.join(".")).join(".")}`;
1968
1991
  };
1969
- var VisualModePropStatusesContext = React11.createContext({
1992
+ var VisualModePropStatusesContext = React12.createContext({
1970
1993
  propStatuses: {}
1971
1994
  });
1972
- var VisualModePropStatusesRefContext = React11.createContext({
1995
+ var VisualModePropStatusesRefContext = React12.createContext({
1973
1996
  current: {}
1974
1997
  });
1975
- var VisualModeDragOverridesContext = React11.createContext({
1998
+ var VisualModeDragOverridesContext = React12.createContext({
1976
1999
  getDragOverrides: () => {
1977
2000
  throw new Error("VisualModeDragOverridesContext not initialized");
1978
2001
  },
@@ -1980,7 +2003,7 @@ var VisualModeDragOverridesContext = React11.createContext({
1980
2003
  throw new Error("VisualModeDragOverridesContext not initialized");
1981
2004
  }
1982
2005
  });
1983
- var VisualModeSettersContext = React11.createContext({
2006
+ var VisualModeSettersContext = React12.createContext({
1984
2007
  setDragOverrides: () => {
1985
2008
  throw new Error("VisualModeSettersContext not initialized");
1986
2009
  },
@@ -2132,7 +2155,7 @@ var SequenceManagerProvider = ({ children }) => {
2132
2155
  };
2133
2156
 
2134
2157
  // src/series/is-inside-series.tsx
2135
- import React12, { createContext as createContext15 } from "react";
2158
+ import React13, { createContext as createContext15 } from "react";
2136
2159
  import { jsx as jsx11 } from "react/jsx-runtime";
2137
2160
  var IsInsideSeriesContext = createContext15(false);
2138
2161
  var IsInsideSeriesContainer = ({ children }) => {
@@ -2148,7 +2171,7 @@ var IsNotInsideSeriesProvider = ({ children }) => {
2148
2171
  });
2149
2172
  };
2150
2173
  var useRequireToBeInsideSeries = () => {
2151
- const isInsideSeries = React12.useContext(IsInsideSeriesContext);
2174
+ const isInsideSeries = React13.useContext(IsInsideSeriesContext);
2152
2175
  if (!isInsideSeries) {
2153
2176
  throw new Error("This component must be inside a <Series /> component.");
2154
2177
  }
@@ -2158,7 +2181,7 @@ var useRequireToBeInsideSeries = () => {
2158
2181
  var ENABLE_V5_BREAKING_CHANGES = false;
2159
2182
 
2160
2183
  // src/with-interactivity-schema.ts
2161
- import React13, { forwardRef as forwardRef2, useContext as useContext16, useMemo as useMemo13, useState as useState4 } from "react";
2184
+ import React14, { forwardRef as forwardRef2, useContext as useContext16, useMemo as useMemo13, useState as useState4 } from "react";
2162
2185
 
2163
2186
  // src/delete-nested-key.ts
2164
2187
  var deleteNestedKey = (obj, keysToRemove) => {
@@ -4262,6 +4285,9 @@ var computeEffectiveSchemaValuesDotNotation = ({
4262
4285
  shouldResortToDefaultValueIfUndefined: false
4263
4286
  });
4264
4287
  }
4288
+ if (field?.type === "asset" && typeof value === "string" && value.startsWith(FILE_TOKEN)) {
4289
+ value = `${window.remotion_staticBase}/${value.slice(FILE_TOKEN.length)}`;
4290
+ }
4265
4291
  if (value === undefined) {
4266
4292
  propsToDelete.add(key);
4267
4293
  }
@@ -4362,7 +4388,7 @@ var withInteractivitySchema = ({
4362
4388
  const Wrapped = forwardRef2((props, ref) => {
4363
4389
  const env = useRemotionEnvironment();
4364
4390
  if (!env.isStudio || env.isReadOnlyStudio || env.isRendering) {
4365
- return React13.createElement(Component, {
4391
+ return React14.createElement(Component, {
4366
4392
  ...props,
4367
4393
  controls: null,
4368
4394
  ref
@@ -4373,7 +4399,7 @@ var withInteractivitySchema = ({
4373
4399
  const nodePathMapping = useContext16(OverrideIdsToNodePathsGettersContext);
4374
4400
  const frame = useCurrentFrame();
4375
4401
  if (props.controls) {
4376
- return React13.createElement(Component, {
4402
+ return React14.createElement(Component, {
4377
4403
  ...props,
4378
4404
  ref
4379
4405
  });
@@ -4431,7 +4457,7 @@ var withInteractivitySchema = ({
4431
4457
  schemaKeys: activeKeys,
4432
4458
  propsToDelete
4433
4459
  });
4434
- return React13.createElement(Component, {
4460
+ return React14.createElement(Component, {
4435
4461
  ...mergedProps,
4436
4462
  controls,
4437
4463
  ref
@@ -4460,6 +4486,7 @@ var RegularSequenceRefForwardingFunction = ({
4460
4486
  _remotionInternalLoopDisplay: loopDisplay,
4461
4487
  _remotionInternalStack: stack,
4462
4488
  _remotionInternalDocumentationLink: documentationLink,
4489
+ _remotionInternalSingleChildComponent: singleChildComponent,
4463
4490
  _remotionInternalPremountDisplay: premountDisplay,
4464
4491
  _remotionInternalPostmountDisplay: postmountDisplay,
4465
4492
  _remotionInternalIsMedia: isMedia,
@@ -4606,7 +4633,8 @@ var RegularSequenceRefForwardingFunction = ({
4606
4633
  getStack: () => stackRef.current,
4607
4634
  refForOutline: refForOutline ?? null,
4608
4635
  isInsideSeries,
4609
- frozenFrame: registeredFrozenFrame
4636
+ frozenFrame: registeredFrozenFrame,
4637
+ singleChildComponent: singleChildComponent ?? null
4610
4638
  });
4611
4639
  } else {
4612
4640
  registerSequence({
@@ -4636,7 +4664,8 @@ var RegularSequenceRefForwardingFunction = ({
4636
4664
  refForOutline: refForOutline ?? null,
4637
4665
  isInsideSeries,
4638
4666
  frozenFrame: registeredFrozenFrame,
4639
- frozenMediaFrame
4667
+ frozenMediaFrame,
4668
+ singleChildComponent: singleChildComponent ?? null
4640
4669
  });
4641
4670
  }
4642
4671
  return () => {
@@ -4663,7 +4692,8 @@ var RegularSequenceRefForwardingFunction = ({
4663
4692
  effects: _remotionInternalEffects ?? EMPTY_EFFECTS,
4664
4693
  refForOutline: refForOutline ?? null,
4665
4694
  isInsideSeries,
4666
- frozenFrame: registeredFrozenFrame
4695
+ frozenFrame: registeredFrozenFrame,
4696
+ singleChildComponent: singleChildComponent ?? null
4667
4697
  });
4668
4698
  return () => {
4669
4699
  unregisterSequence(id);
@@ -4696,7 +4726,8 @@ var RegularSequenceRefForwardingFunction = ({
4696
4726
  registeredFrozenFrame,
4697
4727
  startMediaFrom,
4698
4728
  mediaFrameAtSequenceZero,
4699
- frozenMediaFrame
4729
+ frozenMediaFrame,
4730
+ singleChildComponent
4700
4731
  ]);
4701
4732
  const endThreshold = Math.ceil(cumulatedFrom + from + durationInFrames - 1);
4702
4733
  const content = absoluteFrame < cumulatedFrom + from ? null : absoluteFrame > endThreshold ? null : children;
@@ -4836,7 +4867,7 @@ import {
4836
4867
  } from "react";
4837
4868
 
4838
4869
  // src/animated-image/canvas.tsx
4839
- import React15, { useCallback as useCallback7, useImperativeHandle, useMemo as useMemo16, useRef as useRef8 } from "react";
4870
+ import React16, { useCallback as useCallback7, useImperativeHandle, useMemo as useMemo16, useRef as useRef8 } from "react";
4840
4871
 
4841
4872
  // src/calculate-image-fit.ts
4842
4873
  var calculateImageFit = (fit, imageSize, canvasSize) => {
@@ -5227,7 +5258,7 @@ var CanvasRefForwardingFunction = ({ width, height, fit, className, style, effec
5227
5258
  ...props
5228
5259
  });
5229
5260
  };
5230
- var Canvas = React15.forwardRef(CanvasRefForwardingFunction);
5261
+ var Canvas = React16.forwardRef(CanvasRefForwardingFunction);
5231
5262
 
5232
5263
  // src/animated-image/decode-image.ts
5233
5264
  var CACHE_SIZE = 5;
@@ -5397,6 +5428,12 @@ var resolveAnimatedImageSource = (src) => {
5397
5428
  // src/animated-image/AnimatedImage.tsx
5398
5429
  import { jsx as jsx14 } from "react/jsx-runtime";
5399
5430
  var animatedImageSchema = {
5431
+ src: {
5432
+ type: "asset",
5433
+ default: undefined,
5434
+ description: "Source",
5435
+ keyframable: false
5436
+ },
5400
5437
  ...baseSchema,
5401
5438
  playbackRate: {
5402
5439
  type: "number",
@@ -5841,11 +5878,11 @@ var calculateMediaDuration = ({
5841
5878
  };
5842
5879
 
5843
5880
  // src/loop/index.tsx
5844
- import React16, { createContext as createContext18, useMemo as useMemo18 } from "react";
5881
+ import React17, { createContext as createContext18, useMemo as useMemo18 } from "react";
5845
5882
  import { jsx as jsx16 } from "react/jsx-runtime";
5846
5883
  var LoopContext = createContext18(null);
5847
5884
  var useLoop = () => {
5848
- return React16.useContext(LoopContext);
5885
+ return React17.useContext(LoopContext);
5849
5886
  };
5850
5887
  var Loop = ({
5851
5888
  durationInFrames,
@@ -6289,7 +6326,7 @@ var DurationsContextProvider = ({ children }) => {
6289
6326
 
6290
6327
  // src/audio/AudioForPreview.tsx
6291
6328
  import { useCallback as useCallback13 } from "react";
6292
- import React22, {
6329
+ import React23, {
6293
6330
  forwardRef as forwardRef5,
6294
6331
  useContext as useContext28,
6295
6332
  useEffect as useEffect14,
@@ -6321,7 +6358,7 @@ var getCrossOriginValue = ({
6321
6358
  import { useContext as useContext21, useLayoutEffect as useLayoutEffect5, useRef as useRef14 } from "react";
6322
6359
 
6323
6360
  // src/audio/shared-audio-tags.tsx
6324
- import React19, {
6361
+ import React20, {
6325
6362
  createContext as createContext21,
6326
6363
  createRef as createRef2,
6327
6364
  useCallback as useCallback9,
@@ -6756,7 +6793,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
6756
6793
  };
6757
6794
  });
6758
6795
  }, [audioContext, numberOfAudioTags]);
6759
- const effectToUse = React19.useInsertionEffect ?? React19.useLayoutEffect;
6796
+ const effectToUse = React20.useInsertionEffect ?? React20.useLayoutEffect;
6760
6797
  effectToUse(() => {
6761
6798
  return () => {
6762
6799
  requestAnimationFrame(() => {
@@ -6926,7 +6963,7 @@ var useSharedAudio = ({
6926
6963
  if (tagsCtx && tagsCtx.numberOfAudioTags > 0) {
6927
6964
  return tagsCtx.registerAudio({ aud, audioId, premounting, postmounting });
6928
6965
  }
6929
- const el = React19.createRef();
6966
+ const el = React20.createRef();
6930
6967
  const mediaElementSourceNode = audioCtx?.audioContext ? makeSharedElementSourceNode({
6931
6968
  audioContext: audioCtx.audioContext,
6932
6969
  ref: el
@@ -6945,7 +6982,7 @@ var useSharedAudio = ({
6945
6982
  }
6946
6983
  };
6947
6984
  });
6948
- const effectToUse = React19.useInsertionEffect ?? React19.useLayoutEffect;
6985
+ const effectToUse = React20.useInsertionEffect ?? React20.useLayoutEffect;
6949
6986
  if (typeof document !== "undefined") {
6950
6987
  effectToUse(() => {
6951
6988
  if (tagsCtx && tagsCtx.numberOfAudioTags > 0) {
@@ -7450,7 +7487,7 @@ import { useCallback as useCallback11, useMemo as useMemo25, useRef as useRef16
7450
7487
  import { useContext as useContext25, useMemo as useMemo24 } from "react";
7451
7488
 
7452
7489
  // src/buffering.tsx
7453
- import React20, {
7490
+ import React21, {
7454
7491
  useCallback as useCallback10,
7455
7492
  useContext as useContext24,
7456
7493
  useEffect as useEffect9,
@@ -7545,7 +7582,7 @@ var useBufferManager = (logLevel, mountTime) => {
7545
7582
  return { addBlock, listenForBuffering, listenForResume, buffering };
7546
7583
  }, [addBlock, buffering, listenForBuffering, listenForResume]);
7547
7584
  };
7548
- var BufferingContextReact = React20.createContext(null);
7585
+ var BufferingContextReact = React21.createContext(null);
7549
7586
  var BufferingProvider = ({ children }) => {
7550
7587
  const { logLevel, mountTime } = useContext24(LogLevelContext);
7551
7588
  const bufferManager = useBufferManager(logLevel ?? "info", mountTime);
@@ -7765,9 +7802,9 @@ var getMediaSyncAction = (input) => {
7765
7802
  };
7766
7803
 
7767
7804
  // src/media-tag-current-time-timestamp.ts
7768
- import React21 from "react";
7805
+ import React22 from "react";
7769
7806
  var useCurrentTimeOfMediaTagWithUpdateTimeStamp = (mediaRef) => {
7770
- const lastUpdate = React21.useRef({
7807
+ const lastUpdate = React22.useRef({
7771
7808
  time: mediaRef.current?.currentTime ?? 0,
7772
7809
  lastUpdate: performance.now()
7773
7810
  });
@@ -8545,7 +8582,7 @@ var AudioForDevelopmentForwardRefFunction = (props, ref) => {
8545
8582
  volume: userPreferredVolume,
8546
8583
  shouldUseWebAudioApi: useWebAudioApi ?? false
8547
8584
  });
8548
- const effectToUse = React22.useInsertionEffect ?? React22.useLayoutEffect;
8585
+ const effectToUse = React23.useInsertionEffect ?? React23.useLayoutEffect;
8549
8586
  effectToUse(() => {
8550
8587
  return () => {
8551
8588
  requestAnimationFrame(() => {
@@ -10187,6 +10224,12 @@ var NativeImgInner = ({
10187
10224
  };
10188
10225
  var CanvasImageWithPrivateProps = CanvasImage;
10189
10226
  var imgSchema = {
10227
+ src: {
10228
+ type: "asset",
10229
+ default: undefined,
10230
+ description: "Source",
10231
+ keyframable: false
10232
+ },
10190
10233
  ...baseSchema,
10191
10234
  ...transformSchema
10192
10235
  };
@@ -10332,7 +10375,7 @@ var Img = withInteractivitySchema({
10332
10375
  });
10333
10376
  addSequenceStackTraces(Img);
10334
10377
  // src/Interactive.tsx
10335
- import React29, { forwardRef as forwardRef12, useCallback as useCallback20, useRef as useRef25 } from "react";
10378
+ import React30, { forwardRef as forwardRef12, useCallback as useCallback20, useRef as useRef25 } from "react";
10336
10379
  import { jsx as jsx29 } from "react/jsx-runtime";
10337
10380
  var sourcePathToIdentityPrefix = (packageName) => {
10338
10381
  if (packageName === "remotion") {
@@ -10400,7 +10443,7 @@ var makeInteractiveElement = (tag, displayName) => {
10400
10443
  _remotionInternalStack: stack,
10401
10444
  _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/interactive",
10402
10445
  outlineRef: refForOutline,
10403
- children: React29.createElement(tag, {
10446
+ children: React30.createElement(tag, {
10404
10447
  ...props2,
10405
10448
  ref: callbackRef
10406
10449
  })
@@ -10468,8 +10511,8 @@ var Interactive = {
10468
10511
  import { createRef as createRef3 } from "react";
10469
10512
 
10470
10513
  // src/CompositionManager.tsx
10471
- import React30 from "react";
10472
- var compositionsRef = React30.createRef();
10514
+ import React31 from "react";
10515
+ var compositionsRef = React31.createRef();
10473
10516
 
10474
10517
  // src/CompositionManagerProvider.tsx
10475
10518
  import {
@@ -10634,8 +10677,8 @@ var getPreviewDomElement = () => {
10634
10677
  };
10635
10678
 
10636
10679
  // src/max-video-cache-size.ts
10637
- import React31 from "react";
10638
- var MaxMediaCacheSizeContext = React31.createContext(null);
10680
+ import React32 from "react";
10681
+ var MaxMediaCacheSizeContext = React32.createContext(null);
10639
10682
 
10640
10683
  // src/register-root.ts
10641
10684
  var Root = null;
@@ -10940,8 +10983,8 @@ var resolveVideoConfigOrCatch = (params) => {
10940
10983
  };
10941
10984
 
10942
10985
  // src/sequence-stack-traces.ts
10943
- import React33 from "react";
10944
- var SequenceStackTracesUpdateContext = React33.createContext(() => {});
10986
+ import React34 from "react";
10987
+ var SequenceStackTracesUpdateContext = React34.createContext(() => {});
10945
10988
 
10946
10989
  // src/setup-env-variables.ts
10947
10990
  var getEnvVariables = () => {
@@ -10971,8 +11014,8 @@ var setupEnvVariables = () => {
10971
11014
  };
10972
11015
 
10973
11016
  // src/use-current-scale.ts
10974
- import React34, { createContext as createContext25 } from "react";
10975
- var CurrentScaleContext = React34.createContext(null);
11017
+ import React35, { createContext as createContext25 } from "react";
11018
+ var CurrentScaleContext = React35.createContext(null);
10976
11019
  var PreviewSizeContext = createContext25({
10977
11020
  setSize: () => {
10978
11021
  return;
@@ -10997,8 +11040,8 @@ var calculateScale = ({
10997
11040
  return Number(previewSize);
10998
11041
  };
10999
11042
  var useCurrentScale = (options) => {
11000
- const hasContext = React34.useContext(CurrentScaleContext);
11001
- const zoomContext = React34.useContext(PreviewSizeContext);
11043
+ const hasContext = React35.useContext(CurrentScaleContext);
11044
+ const zoomContext = React35.useContext(PreviewSizeContext);
11002
11045
  const config = useUnsafeVideoConfig();
11003
11046
  const env = useRemotionEnvironment();
11004
11047
  if (hasContext === null || config === null || zoomContext === null) {
@@ -11028,8 +11071,8 @@ var useCurrentScale = (options) => {
11028
11071
  };
11029
11072
 
11030
11073
  // src/use-pixel-density.ts
11031
- import React35, { useContext as useContext35 } from "react";
11032
- var PixelDensityContext = React35.createContext(null);
11074
+ import React36, { useContext as useContext35 } from "react";
11075
+ var PixelDensityContext = React36.createContext(null);
11033
11076
  var getBrowserPixelDensity = () => {
11034
11077
  if (typeof window === "undefined") {
11035
11078
  return 1;
@@ -11283,7 +11326,7 @@ var OffthreadVideoForRendering = ({
11283
11326
  };
11284
11327
 
11285
11328
  // src/video/VideoForPreview.tsx
11286
- import React37, {
11329
+ import React38, {
11287
11330
  forwardRef as forwardRef13,
11288
11331
  useCallback as useCallback23,
11289
11332
  useContext as useContext37,
@@ -11356,7 +11399,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
11356
11399
  ref: videoRef
11357
11400
  });
11358
11401
  }, [context.audioContext]);
11359
- const effectToUse = React37.useInsertionEffect ?? React37.useLayoutEffect;
11402
+ const effectToUse = React38.useInsertionEffect ?? React38.useLayoutEffect;
11360
11403
  effectToUse(() => {
11361
11404
  return () => {
11362
11405
  requestAnimationFrame(() => {
@@ -11772,23 +11815,23 @@ var watchStaticFile = (fileName, callback) => {
11772
11815
  };
11773
11816
 
11774
11817
  // src/wrap-remotion-context.tsx
11775
- import React39, { useMemo as useMemo37 } from "react";
11818
+ import React40, { useMemo as useMemo37 } from "react";
11776
11819
  import { jsx as jsx36 } from "react/jsx-runtime";
11777
11820
  function useRemotionContexts() {
11778
- const compositionManagerCtx = React39.useContext(CompositionManager);
11779
- const timelineContext = React39.useContext(TimelineContext);
11780
- const setTimelineContext = React39.useContext(SetTimelineContext);
11781
- const sequenceContext = React39.useContext(SequenceContext);
11782
- const nonceContext = React39.useContext(NonceContext);
11783
- const canUseRemotionHooksContext = React39.useContext(CanUseRemotionHooks);
11784
- const preloadContext = React39.useContext(PreloadContext);
11785
- const resolveCompositionContext = React39.useContext(ResolveCompositionContext);
11786
- const renderAssetManagerContext = React39.useContext(RenderAssetManager);
11787
- const sequenceManagerContext = React39.useContext(SequenceManager);
11788
- const sequenceManagerRefContext = React39.useContext(SequenceManagerRefContext);
11789
- const visualModePropStatusesRefContext = React39.useContext(VisualModePropStatusesRefContext);
11790
- const bufferManagerContext = React39.useContext(BufferingContextReact);
11791
- const logLevelContext = React39.useContext(LogLevelContext);
11821
+ const compositionManagerCtx = React40.useContext(CompositionManager);
11822
+ const timelineContext = React40.useContext(TimelineContext);
11823
+ const setTimelineContext = React40.useContext(SetTimelineContext);
11824
+ const sequenceContext = React40.useContext(SequenceContext);
11825
+ const nonceContext = React40.useContext(NonceContext);
11826
+ const canUseRemotionHooksContext = React40.useContext(CanUseRemotionHooks);
11827
+ const preloadContext = React40.useContext(PreloadContext);
11828
+ const resolveCompositionContext = React40.useContext(ResolveCompositionContext);
11829
+ const renderAssetManagerContext = React40.useContext(RenderAssetManager);
11830
+ const sequenceManagerContext = React40.useContext(SequenceManager);
11831
+ const sequenceManagerRefContext = React40.useContext(SequenceManagerRefContext);
11832
+ const visualModePropStatusesRefContext = React40.useContext(VisualModePropStatusesRefContext);
11833
+ const bufferManagerContext = React40.useContext(BufferingContextReact);
11834
+ const logLevelContext = React40.useContext(LogLevelContext);
11792
11835
  return useMemo37(() => ({
11793
11836
  compositionManagerCtx,
11794
11837
  timelineContext,
@@ -11964,6 +12007,8 @@ var Internals = {
11964
12007
  BufferingProvider,
11965
12008
  BufferingContextReact,
11966
12009
  getComponentsToAddStacksTo,
12010
+ getSequenceComponent,
12011
+ getSingleChildComponent,
11967
12012
  CurrentScaleContext,
11968
12013
  PixelDensityContext,
11969
12014
  PreviewSizeContext,
@@ -12021,17 +12066,17 @@ var Internals = {
12021
12066
  fromField
12022
12067
  };
12023
12068
  // src/series/index.tsx
12024
- import React41, {
12069
+ import React42, {
12025
12070
  forwardRef as forwardRef14,
12026
12071
  useMemo as useMemo38
12027
12072
  } from "react";
12028
12073
 
12029
12074
  // src/series/flatten-children.tsx
12030
- import React40 from "react";
12075
+ import React41 from "react";
12031
12076
  var flattenChildren = (children) => {
12032
- const childrenArray = React40.Children.toArray(children);
12077
+ const childrenArray = React41.Children.toArray(children);
12033
12078
  return childrenArray.reduce((flatChildren, child) => {
12034
- if (child.type === React40.Fragment) {
12079
+ if (child.type === React41.Fragment) {
12035
12080
  return flatChildren.concat(flattenChildren(child.props.children));
12036
12081
  }
12037
12082
  flatChildren.push(child);
@@ -12122,7 +12167,7 @@ var SeriesInner = (props2) => {
12122
12167
  index: i,
12123
12168
  childrenLength: flattenedChildren.length
12124
12169
  });
12125
- return React41.cloneElement(castedElement, {
12170
+ return React42.cloneElement(castedElement, {
12126
12171
  _remotionInternalRender: (resolvedProps, ref) => {
12127
12172
  const durationInFramesProp = resolvedProps.durationInFrames;
12128
12173
  const {
@@ -12276,14 +12321,14 @@ var staticFile = (path) => {
12276
12321
  return preparsed;
12277
12322
  };
12278
12323
  // src/Still.tsx
12279
- import React42 from "react";
12324
+ import React43 from "react";
12280
12325
  var Still = (props2) => {
12281
12326
  const newProps = {
12282
12327
  ...props2,
12283
12328
  durationInFrames: 1,
12284
12329
  fps: 1
12285
12330
  };
12286
- return React42.createElement(Composition, newProps);
12331
+ return React43.createElement(Composition, newProps);
12287
12332
  };
12288
12333
  addSequenceStackTraces(Still);
12289
12334
  // src/video/html5-video.tsx
@@ -12790,6 +12835,7 @@ var Config = new Proxy(proxyObj, {
12790
12835
  });
12791
12836
  Sequence.displayName = "Sequence";
12792
12837
  addSequenceStackTraces(Sequence);
12838
+ setSequenceComponent(Sequence);
12793
12839
  addSequenceStackTraces(Composition);
12794
12840
  addSequenceStackTraces(Folder);
12795
12841
  export {
@@ -1,5 +1,5 @@
1
1
  // src/version.ts
2
- var VERSION = "4.0.491";
2
+ var VERSION = "4.0.492";
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.491",
6
+ "version": "4.0.492",
7
7
  "description": "Make videos programmatically",
8
8
  "main": "dist/cjs/index.js",
9
9
  "types": "dist/cjs/index.d.ts",
@@ -35,7 +35,7 @@
35
35
  "react-dom": "19.2.3",
36
36
  "webpack": "5.105.0",
37
37
  "zod": "4.3.6",
38
- "@remotion/eslint-config-internal": "4.0.491",
38
+ "@remotion/eslint-config-internal": "4.0.492",
39
39
  "eslint": "9.19.0",
40
40
  "@typescript/native-preview": "7.0.0-dev.20260217.1"
41
41
  },