remotion 4.0.516 → 4.0.517

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.
@@ -109,6 +109,7 @@ export type InlineAudioAsset = {
109
109
  id: string;
110
110
  audio: Int16Array | number[];
111
111
  frame: number;
112
+ startInVideo: number | null;
112
113
  timestamp: number;
113
114
  duration: number;
114
115
  toneFrequency: number;
@@ -5,6 +5,10 @@ import type { TFolder } from './Folder.js';
5
5
  import type { NonceHistory } from './nonce.js';
6
6
  import type { VideoConfig } from './video-config.js';
7
7
  export type BaseMetadata = Pick<VideoConfig, 'durationInFrames' | 'fps' | 'props' | 'height' | 'width' | 'defaultCodec' | 'defaultOutName' | 'defaultVideoImageFormat' | 'defaultPixelFormat' | 'defaultProResProfile' | 'defaultSampleRate'>;
8
+ export type AssetPreviewMetadata = BaseMetadata & {
9
+ asset: string;
10
+ };
11
+ export declare const getAssetPreviewCompositionId: (asset: string) => string;
8
12
  export type CanvasContent = {
9
13
  type: 'composition';
10
14
  compositionId: string;
@@ -28,11 +32,13 @@ export type CompositionManagerSetters = {
28
32
  registerFolder: (name: string, parent: string | null, nonce: NonceHistory, stack: string | null) => void;
29
33
  unregisterFolder: (name: string, parent: string | null) => void;
30
34
  setCanvasContent: React.Dispatch<React.SetStateAction<CanvasContent | null>>;
35
+ setCurrentAssetMetadata: React.Dispatch<React.SetStateAction<AssetPreviewMetadata | null>>;
31
36
  onlyRenderComposition: string | null;
32
37
  };
33
38
  export type CompositionManagerContext = {
34
39
  compositions: AnyComposition[];
35
40
  currentCompositionMetadata: BaseMetadata | null;
41
+ currentAssetMetadata: AssetPreviewMetadata | null;
36
42
  folders: TFolder[];
37
43
  canvasContent: CanvasContent | null;
38
44
  };
@@ -1,11 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CompositionSetters = exports.CompositionManager = void 0;
3
+ exports.CompositionSetters = exports.CompositionManager = exports.getAssetPreviewCompositionId = void 0;
4
4
  const react_1 = require("react");
5
+ const getAssetPreviewCompositionId = (asset) => `asset:${asset}`;
6
+ exports.getAssetPreviewCompositionId = getAssetPreviewCompositionId;
5
7
  exports.CompositionManager = (0, react_1.createContext)({
6
8
  compositions: [],
7
9
  folders: [],
8
10
  currentCompositionMetadata: null,
11
+ currentAssetMetadata: null,
9
12
  canvasContent: null,
10
13
  });
11
14
  exports.CompositionSetters = (0, react_1.createContext)({
@@ -14,5 +17,6 @@ exports.CompositionSetters = (0, react_1.createContext)({
14
17
  registerFolder: () => undefined,
15
18
  unregisterFolder: () => undefined,
16
19
  setCanvasContent: () => undefined,
20
+ setCurrentAssetMetadata: () => undefined,
17
21
  onlyRenderComposition: null,
18
22
  });
@@ -8,6 +8,7 @@ const CompositionManagerContext_1 = require("./CompositionManagerContext");
8
8
  const CompositionManagerProvider = ({ children, onlyRenderComposition, currentCompositionMetadata, initialCompositions, initialCanvasContent, }) => {
9
9
  const [folders, setFolders] = (0, react_1.useState)([]);
10
10
  const [canvasContent, setCanvasContent] = (0, react_1.useState)(initialCanvasContent);
11
+ const [currentAssetMetadata, setCurrentAssetMetadata] = (0, react_1.useState)(null);
11
12
  const [compositions, setCompositions] = (0, react_1.useState)(initialCompositions);
12
13
  // CompositionManagerProvider state
13
14
  const currentcompositionsRef = (0, react_1.useRef)(compositions);
@@ -61,6 +62,7 @@ const CompositionManagerProvider = ({ children, onlyRenderComposition, currentCo
61
62
  registerFolder,
62
63
  unregisterFolder,
63
64
  setCanvasContent,
65
+ setCurrentAssetMetadata,
64
66
  onlyRenderComposition,
65
67
  };
66
68
  }, [
@@ -75,9 +77,16 @@ const CompositionManagerProvider = ({ children, onlyRenderComposition, currentCo
75
77
  compositions,
76
78
  folders,
77
79
  currentCompositionMetadata,
80
+ currentAssetMetadata,
78
81
  canvasContent,
79
82
  };
80
- }, [compositions, folders, currentCompositionMetadata, canvasContent]);
83
+ }, [
84
+ compositions,
85
+ folders,
86
+ currentCompositionMetadata,
87
+ currentAssetMetadata,
88
+ canvasContent,
89
+ ]);
81
90
  return (jsx_runtime_1.jsx(CompositionManagerContext_1.CompositionManager.Provider, { value: compositionManagerContextValue, children: jsx_runtime_1.jsx(CompositionManagerContext_1.CompositionSetters.Provider, { value: compositionManagerSetters, children: children }) }));
82
91
  };
83
92
  exports.CompositionManagerProvider = CompositionManagerProvider;
@@ -18,7 +18,7 @@ exports.needsResolution = needsResolution;
18
18
  const useResolvedVideoConfig = (preferredCompositionId) => {
19
19
  const context = (0, react_1.useContext)(exports.ResolveCompositionContext);
20
20
  const { props: allEditorProps } = (0, react_1.useContext)(EditorProps_js_1.EditorPropsContext);
21
- const { compositions, canvasContent, currentCompositionMetadata } = (0, react_1.useContext)(CompositionManagerContext_js_1.CompositionManager);
21
+ const { compositions, canvasContent, currentCompositionMetadata, currentAssetMetadata, } = (0, react_1.useContext)(CompositionManagerContext_js_1.CompositionManager);
22
22
  const currentComposition = (canvasContent === null || canvasContent === void 0 ? void 0 : canvasContent.type) === 'composition' ? canvasContent.compositionId : null;
23
23
  const compositionId = preferredCompositionId !== null && preferredCompositionId !== void 0 ? preferredCompositionId : currentComposition;
24
24
  const composition = compositions.find((c) => c.id === compositionId);
@@ -29,6 +29,19 @@ const useResolvedVideoConfig = (preferredCompositionId) => {
29
29
  const env = (0, use_remotion_environment_js_1.useRemotionEnvironment)();
30
30
  return (0, react_1.useMemo)(() => {
31
31
  var _a, _b, _c, _d;
32
+ if (preferredCompositionId === null &&
33
+ (canvasContent === null || canvasContent === void 0 ? void 0 : canvasContent.type) === 'asset' &&
34
+ (currentAssetMetadata === null || currentAssetMetadata === void 0 ? void 0 : currentAssetMetadata.asset) === canvasContent.asset) {
35
+ return {
36
+ type: 'success',
37
+ metadataSource: null,
38
+ result: {
39
+ ...currentAssetMetadata,
40
+ id: (0, CompositionManagerContext_js_1.getAssetPreviewCompositionId)(canvasContent.asset),
41
+ defaultProps: {},
42
+ },
43
+ };
44
+ }
32
45
  if (!composition) {
33
46
  return null;
34
47
  }
@@ -91,8 +104,11 @@ const useResolvedVideoConfig = (preferredCompositionId) => {
91
104
  return context[composition.id];
92
105
  }, [
93
106
  composition,
107
+ canvasContent,
94
108
  context,
109
+ currentAssetMetadata,
95
110
  currentCompositionMetadata,
111
+ preferredCompositionId,
96
112
  selectedEditorProps,
97
113
  env.isPlayer,
98
114
  ]);
@@ -89,6 +89,7 @@ const RegularSequenceRefForwardingFunction = ({ from = 0, trimBefore = 0, freeze
89
89
  : durationInFrames;
90
90
  const actualDurationInFrames = Math.max(0, Math.min(videoConfig.durationInFrames - from, parentSequenceDuration));
91
91
  const { registerSequence, unregisterSequence } = (0, react_1.useContext)(SequenceManager_js_1.SequenceManager);
92
+ const sequenceRegistrationEnabled = (0, react_1.useContext)(SequenceManager_js_1.SequenceRegistrationContext);
92
93
  const wrapperRefForOutline = (0, react_1.useRef)(null);
93
94
  const refForOutline = other.layout === 'none'
94
95
  ? (passedRefForOutline !== null && passedRefForOutline !== void 0 ? passedRefForOutline : null)
@@ -226,7 +227,7 @@ const RegularSequenceRefForwardingFunction = ({ from = 0, trimBefore = 0, freeze
226
227
  ]);
227
228
  (0, react_1.useEffect)(() => {
228
229
  var _a, _b, _c;
229
- if (!env.isStudio) {
230
+ if (!env.isStudio && !sequenceRegistrationEnabled) {
230
231
  return;
231
232
  }
232
233
  if (isMedia) {
@@ -337,6 +338,7 @@ const RegularSequenceRefForwardingFunction = ({ from = 0, trimBefore = 0, freeze
337
338
  premountDisplay,
338
339
  postmountDisplay,
339
340
  env.isStudio,
341
+ sequenceRegistrationEnabled,
340
342
  registrationControls,
341
343
  _remotionInternalEffects,
342
344
  effectRuntimeValues,
@@ -12,6 +12,7 @@ export type SequenceManagerRef = {
12
12
  export type SequenceNodePath = Array<string | number>;
13
13
  export declare const SequenceManager: React.Context<SequenceManagerContext>;
14
14
  export declare const SequenceManagerRefContext: React.Context<SequenceManagerRef>;
15
+ export declare const SequenceRegistrationContext: React.Context<boolean>;
15
16
  export type VisualModePropStatuses = {
16
17
  propStatuses: PropStatuses;
17
18
  };
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.SequenceManagerProvider = exports.VisualModeSettersContext = exports.VisualModeDragOverridesContext = exports.VisualModePropStatusesRefContext = exports.VisualModePropStatusesContext = exports.makeSequencePropsSubscriptionKey = exports.SequenceManagerRefContext = exports.SequenceManager = void 0;
36
+ exports.SequenceManagerProvider = exports.VisualModeSettersContext = exports.VisualModeDragOverridesContext = exports.VisualModePropStatusesRefContext = exports.VisualModePropStatusesContext = exports.makeSequencePropsSubscriptionKey = exports.SequenceRegistrationContext = exports.SequenceManagerRefContext = exports.SequenceManager = void 0;
37
37
  const jsx_runtime_1 = require("react/jsx-runtime");
38
38
  const react_1 = __importStar(require("react"));
39
39
  exports.SequenceManager = react_1.default.createContext({
@@ -48,6 +48,7 @@ exports.SequenceManager = react_1.default.createContext({
48
48
  exports.SequenceManagerRefContext = react_1.default.createContext({
49
49
  current: [],
50
50
  });
51
+ exports.SequenceRegistrationContext = react_1.default.createContext(false);
51
52
  const makeSequencePropsSubscriptionKey = (key) => {
52
53
  return `${key.absolutePath}\0${key.nodePath.join('.')}\0${key.sequenceKeys.join('.')}\0${key.effectKeys.map((keys) => keys.join('.')).join('.')}`;
53
54
  };
@@ -93,7 +93,11 @@ export declare const Internals: {
93
93
  readonly VisualModeDragOverridesContext: import("react").Context<import("./SequenceManager.js").VisualModeDragOverrides>;
94
94
  readonly VisualModeSettersContext: import("react").Context<import("./SequenceManager.js").VisualModeSetters>;
95
95
  readonly SequenceManager: import("react").Context<import("./SequenceManager.js").SequenceManagerContext>;
96
+ readonly SequenceManagerProvider: import("react").FC<{
97
+ readonly children: import("react").ReactNode;
98
+ }>;
96
99
  readonly SequenceManagerRefContext: import("react").Context<import("./SequenceManager.js").SequenceManagerRef>;
100
+ readonly SequenceRegistrationContext: import("react").Context<boolean>;
97
101
  readonly SequenceStackTracesUpdateContext: import("react").Context<import("./sequence-stack-traces.js").UpdateResolvedStackTraceFn>;
98
102
  readonly baseSchema: {
99
103
  readonly durationInFrames: {
@@ -896,6 +900,9 @@ export declare const Internals: {
896
900
  readonly children: import("react").ReactNode;
897
901
  }>;
898
902
  readonly CanUseRemotionHooks: import("react").Context<boolean>;
903
+ readonly DisableInteractivityProvider: import("react").FC<{
904
+ readonly children: import("react").ReactNode;
905
+ }>;
899
906
  readonly PrefetchProvider: import("react").FC<{
900
907
  readonly children: import("react").ReactNode;
901
908
  }>;
@@ -119,6 +119,7 @@ const volume_position_state_js_1 = require("./volume-position-state.js");
119
119
  const volume_prop_js_1 = require("./volume-prop.js");
120
120
  const volume_safeguard_js_1 = require("./volume-safeguard.js");
121
121
  const watch_static_file_js_1 = require("./watch-static-file.js");
122
+ const with_interactivity_schema_js_1 = require("./with-interactivity-schema.js");
122
123
  const wrap_remotion_context_js_1 = require("./wrap-remotion-context.js");
123
124
  // needs to be in core package so gets deduplicated in studio
124
125
  const compositionSelectorRef = (0, react_1.createRef)();
@@ -153,7 +154,9 @@ exports.Internals = {
153
154
  VisualModeDragOverridesContext: SequenceManager_js_1.VisualModeDragOverridesContext,
154
155
  VisualModeSettersContext: SequenceManager_js_1.VisualModeSettersContext,
155
156
  SequenceManager: SequenceManager_js_1.SequenceManager,
157
+ SequenceManagerProvider: SequenceManager_js_1.SequenceManagerProvider,
156
158
  SequenceManagerRefContext: SequenceManager_js_1.SequenceManagerRefContext,
159
+ SequenceRegistrationContext: SequenceManager_js_1.SequenceRegistrationContext,
157
160
  SequenceStackTracesUpdateContext: sequence_stack_traces_js_1.SequenceStackTracesUpdateContext,
158
161
  baseSchema: interactivity_schema_js_1.baseSchema,
159
162
  sequenceSchema: interactivity_schema_js_1.sequenceSchema,
@@ -203,6 +206,7 @@ exports.Internals = {
203
206
  SetTimelineContext: TimelineContext_js_1.SetTimelineContext,
204
207
  CanUseRemotionHooksProvider: CanUseRemotionHooks_js_1.CanUseRemotionHooksProvider,
205
208
  CanUseRemotionHooks: CanUseRemotionHooks_js_1.CanUseRemotionHooks,
209
+ DisableInteractivityProvider: with_interactivity_schema_js_1.DisableInteractivityProvider,
206
210
  PrefetchProvider: prefetch_state_js_1.PrefetchProvider,
207
211
  DurationsContextProvider: duration_state_js_1.DurationsContextProvider,
208
212
  IsPlayerContextProvider: is_player_js_1.IsPlayerContextProvider,
@@ -3,13 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Loading = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const AbsoluteFillElement_js_1 = require("./AbsoluteFillElement.js");
6
+ const use_current_scale_js_1 = require("./use-current-scale.js");
6
7
  const rotate = {
7
8
  transform: `rotate(90deg)`,
8
9
  };
9
10
  const ICON_SIZE = 40;
11
+ const LABEL_SIZE = 14;
10
12
  const label = {
11
- color: 'white',
12
- fontSize: 14,
13
+ color: 'rgba(255, 255, 255, 0.8)',
13
14
  fontFamily: 'sans-serif',
14
15
  };
15
16
  const container = {
@@ -25,6 +26,7 @@ const content = {
25
26
  animationFillMode: 'forwards',
26
27
  };
27
28
  const Loading = () => {
29
+ const scale = (0, use_current_scale_js_1.useCurrentScale)({ dontThrowIfOutsideOfRemotion: true });
28
30
  return (jsx_runtime_1.jsxs(AbsoluteFillElement_js_1.AbsoluteFillElement, { style: container, id: "remotion-comp-loading", children: [
29
31
  jsx_runtime_1.jsx("style", { type: "text/css", children: `
30
32
  @keyframes anim {
@@ -36,7 +38,7 @@ const Loading = () => {
36
38
  }
37
39
  }
38
40
  ` }), jsx_runtime_1.jsxs("div", { id: "remotion-comp-loading-content", style: content, children: [
39
- jsx_runtime_1.jsx("svg", { width: ICON_SIZE, height: ICON_SIZE, viewBox: "-100 -100 400 400", style: rotate, children: jsx_runtime_1.jsx("path", { fill: "#555", stroke: "#555", strokeWidth: "100", strokeLinejoin: "round", d: "M 2 172 a 196 100 0 0 0 195 5 A 196 240 0 0 0 100 2.259 A 196 240 0 0 0 2 172 z" }) }), jsx_runtime_1.jsxs("p", { style: label, children: ["Resolving ", '<Suspense>', "..."] })
41
+ jsx_runtime_1.jsx("svg", { width: ICON_SIZE / scale, height: ICON_SIZE / scale, viewBox: "-100 -100 400 400", style: rotate, children: jsx_runtime_1.jsx("path", { fill: "#555", stroke: "#555", strokeWidth: "100", strokeLinejoin: "round", d: "M 2 172 a 196 100 0 0 0 195 5 A 196 240 0 0 0 100 2.259 A 196 240 0 0 0 2 172 z" }) }), jsx_runtime_1.jsxs("p", { style: { ...label, fontSize: LABEL_SIZE / scale }, children: ["Resolving ", '<Suspense>', "..."] })
40
42
  ] })
41
43
  ] }));
42
44
  };
@@ -95,6 +95,7 @@ const useMediaInTimeline = ({ volume, mediaVolume, src, mediaType, playbackRate,
95
95
  const parentSequence = (0, react_1.useContext)(SequenceContext_js_1.SequenceContext);
96
96
  const startsAt = (0, use_audio_frame_js_1.useMediaStartsAt)();
97
97
  const { registerSequence, unregisterSequence } = (0, react_1.useContext)(SequenceManager_js_1.SequenceManager);
98
+ const sequenceRegistrationEnabled = (0, react_1.useContext)(SequenceManager_js_1.SequenceRegistrationContext);
98
99
  const { durationInFrames } = (0, use_video_config_js_1.useVideoConfig)();
99
100
  const mediaStartsAt = (0, use_audio_frame_js_1.useMediaStartsAt)();
100
101
  const { volumes, duration, doesVolumeChange, nonce, finalDisplayName } = (0, exports.useBasicMediaInTimeline)({
@@ -118,7 +119,9 @@ const useMediaInTimeline = ({ volume, mediaVolume, src, mediaType, playbackRate,
118
119
  if (!src) {
119
120
  throw new Error('No src passed');
120
121
  }
121
- if (!isStudio && ((_b = (_a = window.process) === null || _a === void 0 ? void 0 : _a.env) === null || _b === void 0 ? void 0 : _b.NODE_ENV) !== 'test') {
122
+ if (!isStudio &&
123
+ !sequenceRegistrationEnabled &&
124
+ ((_b = (_a = window.process) === null || _a === void 0 ? void 0 : _a.env) === null || _b === void 0 ? void 0 : _b.NODE_ENV) !== 'test') {
122
125
  return;
123
126
  }
124
127
  if (!showInTimeline) {
@@ -178,6 +181,7 @@ const useMediaInTimeline = ({ volume, mediaVolume, src, mediaType, playbackRate,
178
181
  documentationLink,
179
182
  finalDisplayName,
180
183
  isStudio,
184
+ sequenceRegistrationEnabled,
181
185
  refForOutline,
182
186
  muted,
183
187
  ]);
@@ -4,9 +4,10 @@ exports.useVideo = void 0;
4
4
  const react_1 = require("react");
5
5
  const CompositionManagerContext_js_1 = require("./CompositionManagerContext.js");
6
6
  const ResolveCompositionConfig_js_1 = require("./ResolveCompositionConfig.js");
7
+ const AssetPreviewComposition = () => null;
7
8
  const useVideo = () => {
8
9
  var _a;
9
- const { canvasContent, compositions, currentCompositionMetadata } = (0, react_1.useContext)(CompositionManagerContext_js_1.CompositionManager);
10
+ const { canvasContent, compositions, currentCompositionMetadata, currentAssetMetadata, } = (0, react_1.useContext)(CompositionManagerContext_js_1.CompositionManager);
10
11
  const selected = compositions.find((c) => {
11
12
  return ((canvasContent === null || canvasContent === void 0 ? void 0 : canvasContent.type) === 'composition' &&
12
13
  c.id === canvasContent.compositionId);
@@ -14,6 +15,15 @@ const useVideo = () => {
14
15
  const resolved = (0, ResolveCompositionConfig_js_1.useResolvedVideoConfig)((_a = selected === null || selected === void 0 ? void 0 : selected.id) !== null && _a !== void 0 ? _a : null);
15
16
  return (0, react_1.useMemo)(() => {
16
17
  var _a;
18
+ if ((canvasContent === null || canvasContent === void 0 ? void 0 : canvasContent.type) === 'asset' &&
19
+ (currentAssetMetadata === null || currentAssetMetadata === void 0 ? void 0 : currentAssetMetadata.asset) === canvasContent.asset) {
20
+ return {
21
+ ...currentAssetMetadata,
22
+ id: (0, CompositionManagerContext_js_1.getAssetPreviewCompositionId)(canvasContent.asset),
23
+ defaultProps: {},
24
+ component: AssetPreviewComposition,
25
+ };
26
+ }
17
27
  if (!resolved) {
18
28
  return null;
19
29
  }
@@ -35,6 +45,12 @@ const useVideo = () => {
35
45
  ...(currentCompositionMetadata !== null && currentCompositionMetadata !== void 0 ? currentCompositionMetadata : {}),
36
46
  component: selected.component,
37
47
  };
38
- }, [currentCompositionMetadata, resolved, selected]);
48
+ }, [
49
+ canvasContent,
50
+ currentAssetMetadata,
51
+ currentCompositionMetadata,
52
+ resolved,
53
+ selected,
54
+ ]);
39
55
  };
40
56
  exports.useVideo = useVideo;
@@ -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.516";
6
+ export declare const VERSION = "4.0.517";
@@ -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.516';
10
+ exports.VERSION = '4.0.517';
@@ -25,4 +25,7 @@ export type WithInteractivitySchemaOptions<S extends InteractivitySchema, Props
25
25
  schema: S;
26
26
  supportsEffects: boolean;
27
27
  };
28
+ export declare const DisableInteractivityProvider: React.FC<{
29
+ readonly children: React.ReactNode;
30
+ }>;
28
31
  export declare const withInteractivitySchema: <S extends InteractivitySchema, Props extends object>({ Component, componentName, componentIdentity, schema, supportsEffects, }: WithInteractivitySchemaOptions<S, Props>) => React.ComponentType<Props>;
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.withInteractivitySchema = exports.mergeValues = exports.selectActiveKeys = exports.readValuesFromProps = exports.getRuntimeValueForSchemaKey = exports.getNestedValue = void 0;
36
+ exports.withInteractivitySchema = exports.DisableInteractivityProvider = exports.mergeValues = exports.selectActiveKeys = exports.readValuesFromProps = exports.getRuntimeValueForSchemaKey = exports.getNestedValue = void 0;
37
37
  const react_1 = __importStar(require("react"));
38
38
  const CanUseRemotionHooks_js_1 = require("./CanUseRemotionHooks.js");
39
39
  const delete_nested_key_js_1 = require("./delete-nested-key.js");
@@ -121,6 +121,11 @@ const mergeValues = ({ flatSchema, props, valuesDotNotation, schemaKeys, propsTo
121
121
  };
122
122
  exports.mergeValues = mergeValues;
123
123
  const stackToOverrideMap = {};
124
+ const DisableInteractivityContext = (0, react_1.createContext)(false);
125
+ const DisableInteractivityProvider = ({ children }) => {
126
+ return react_1.default.createElement(DisableInteractivityContext.Provider, { value: true }, children);
127
+ };
128
+ exports.DisableInteractivityProvider = DisableInteractivityProvider;
124
129
  const withInteractivitySchema = ({ Component, componentName, componentIdentity, schema, supportsEffects, }) => {
125
130
  // Schema is static for a component, so we move this outside
126
131
  const schemaWithSequenceName = (0, interactivity_schema_js_1.extendSchemaWithSequenceName)(schema);
@@ -132,7 +137,11 @@ const withInteractivitySchema = ({ Component, componentName, componentIdentity,
132
137
  const cleanProps = propsWithoutInternalStack;
133
138
  const env = (0, use_remotion_environment_js_1.useRemotionEnvironment)();
134
139
  const canUseRemotionHooks = (0, react_1.useContext)(CanUseRemotionHooks_js_1.CanUseRemotionHooks);
135
- if (!env.isStudio || env.isRendering || !canUseRemotionHooks) {
140
+ const disableInteractivity = (0, react_1.useContext)(DisableInteractivityContext);
141
+ if (!env.isStudio ||
142
+ env.isRendering ||
143
+ !canUseRemotionHooks ||
144
+ disableInteractivity) {
136
145
  return react_1.default.createElement(Component, {
137
146
  ...cleanProps,
138
147
  controls: null,