remotion 4.0.499 → 4.0.501

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.
Files changed (57) hide show
  1. package/dist/cjs/AbsoluteFill.d.ts +237 -1
  2. package/dist/cjs/AbsoluteFill.js +40 -103
  3. package/dist/cjs/AbsoluteFillElement.d.ts +3 -0
  4. package/dist/cjs/AbsoluteFillElement.js +111 -0
  5. package/dist/cjs/Composition.js +2 -1
  6. package/dist/cjs/CompositionManager.d.ts +0 -1
  7. package/dist/cjs/Folder.js +2 -1
  8. package/dist/cjs/HtmlInCanvas.d.ts +84 -3
  9. package/dist/cjs/HtmlInCanvas.js +30 -2
  10. package/dist/cjs/Img.d.ts +84 -11
  11. package/dist/cjs/Img.js +16 -5
  12. package/dist/cjs/Interactive.d.ts +211 -6
  13. package/dist/cjs/Interactive.js +33 -11
  14. package/dist/cjs/Sequence.d.ts +4 -0
  15. package/dist/cjs/Sequence.js +30 -13
  16. package/dist/cjs/TimelineContext.d.ts +0 -1
  17. package/dist/cjs/TimelineContext.js +1 -4
  18. package/dist/cjs/animated-image/AnimatedImage.d.ts +82 -1
  19. package/dist/cjs/animated-image/AnimatedImage.js +13 -2
  20. package/dist/cjs/animated-image/props.d.ts +2 -2
  21. package/dist/cjs/audio/AudioForPreview.d.ts +0 -1
  22. package/dist/cjs/audio/AudioForPreview.js +1 -1
  23. package/dist/cjs/audio/html5-audio.d.ts +2 -2
  24. package/dist/cjs/audio/html5-audio.js +2 -2
  25. package/dist/cjs/canvas-image/CanvasImage.d.ts +83 -3
  26. package/dist/cjs/canvas-image/CanvasImage.js +13 -2
  27. package/dist/cjs/canvas-image/props.d.ts +6 -7
  28. package/dist/cjs/effects/Solid.d.ts +84 -3
  29. package/dist/cjs/effects/Solid.js +13 -2
  30. package/dist/cjs/enable-sequence-stack-traces.d.ts +4 -0
  31. package/dist/cjs/enable-sequence-stack-traces.js +16 -1
  32. package/dist/cjs/index.d.ts +3 -3
  33. package/dist/cjs/interactivity-schema.d.ts +420 -1
  34. package/dist/cjs/interactivity-schema.js +122 -1
  35. package/dist/cjs/internals.d.ts +211 -2
  36. package/dist/cjs/internals.js +7 -0
  37. package/dist/cjs/no-react.d.ts +81 -0
  38. package/dist/cjs/sequence-crop.d.ts +20 -0
  39. package/dist/cjs/sequence-crop.js +59 -0
  40. package/dist/cjs/series/index.js +4 -4
  41. package/dist/cjs/static-file.js +10 -0
  42. package/dist/cjs/truncate-src-for-label.js +5 -1
  43. package/dist/cjs/use-crop-style.d.ts +6 -0
  44. package/dist/cjs/use-crop-style.js +19 -0
  45. package/dist/cjs/use-media-in-timeline.d.ts +0 -1
  46. package/dist/cjs/use-media-in-timeline.js +1 -7
  47. package/dist/cjs/version.d.ts +1 -1
  48. package/dist/cjs/version.js +1 -1
  49. package/dist/cjs/video/OffthreadVideo.js +6 -6
  50. package/dist/cjs/video/html5-video.d.ts +2 -2
  51. package/dist/cjs/video/html5-video.js +5 -5
  52. package/dist/cjs/video/props.d.ts +1 -1
  53. package/dist/cjs/with-interactivity-schema.js +22 -12
  54. package/dist/esm/index.mjs +2453 -2022
  55. package/dist/esm/no-react.mjs +111 -0
  56. package/dist/esm/version.mjs +1 -1
  57. package/package.json +2 -2
@@ -14,7 +14,7 @@ const VideoForPreview_js_1 = require("./VideoForPreview.js");
14
14
  const InnerOffthreadVideo = (props) => {
15
15
  // Should only destruct `startFrom` and `endAt` from props,
16
16
  // rest gets drilled down
17
- const { startFrom, endAt, trimBefore, trimAfter, name, pauseWhenBuffering, stack, showInTimeline, ...otherProps } = props;
17
+ const { startFrom, endAt, trimBefore, trimAfter, name, pauseWhenBuffering, _remotionInternalStack, showInTimeline, ...otherProps } = props;
18
18
  const environment = (0, use_remotion_environment_js_1.useRemotionEnvironment)();
19
19
  const shouldPauseWhenBuffering = (0, v5_flag_js_1.resolveV5Default)(pauseWhenBuffering);
20
20
  if (environment.isClientSideRendering) {
@@ -33,25 +33,25 @@ const InnerOffthreadVideo = (props) => {
33
33
  });
34
34
  if (typeof trimBeforeValue !== 'undefined' ||
35
35
  typeof trimAfterValue !== 'undefined') {
36
- return (jsx_runtime_1.jsx(Sequence_js_1.Sequence, { layout: "none", from: 0 - (trimBeforeValue !== null && trimBeforeValue !== void 0 ? trimBeforeValue : 0), showInTimeline: false, durationInFrames: trimAfterValue, name: name, children: jsx_runtime_1.jsx(exports.InnerOffthreadVideo, { pauseWhenBuffering: shouldPauseWhenBuffering, ...otherProps, trimAfter: undefined, name: undefined, showInTimeline: showInTimeline, trimBefore: undefined, stack: undefined, startFrom: undefined, endAt: undefined }) }));
36
+ return (jsx_runtime_1.jsx(Sequence_js_1.Sequence, { layout: "none", from: 0 - (trimBeforeValue !== null && trimBeforeValue !== void 0 ? trimBeforeValue : 0), showInTimeline: false, durationInFrames: trimAfterValue, name: name, children: jsx_runtime_1.jsx(exports.InnerOffthreadVideo, { pauseWhenBuffering: shouldPauseWhenBuffering, ...otherProps, trimAfter: undefined, name: undefined, showInTimeline: showInTimeline, trimBefore: undefined, _remotionInternalStack: undefined, startFrom: undefined, endAt: undefined }) }));
37
37
  }
38
38
  (0, validate_media_props_js_1.validateMediaProps)(props, 'Video');
39
39
  if (environment.isRendering) {
40
- return (jsx_runtime_1.jsx(OffthreadVideoForRendering_js_1.OffthreadVideoForRendering, { pauseWhenBuffering: shouldPauseWhenBuffering, ...otherProps, trimAfter: undefined, name: undefined, showInTimeline: showInTimeline, trimBefore: undefined, stack: undefined, startFrom: undefined, endAt: undefined }));
40
+ return (jsx_runtime_1.jsx(OffthreadVideoForRendering_js_1.OffthreadVideoForRendering, { pauseWhenBuffering: shouldPauseWhenBuffering, ...otherProps, trimAfter: undefined, name: undefined, showInTimeline: showInTimeline, trimBefore: undefined, _remotionInternalStack: undefined, startFrom: undefined, endAt: undefined }));
41
41
  }
42
42
  const { transparent, toneMapped, onAutoPlayError, onVideoFrame, crossOrigin, delayRenderRetries, delayRenderTimeoutInMilliseconds, ...propsForPreview } = otherProps;
43
- return (jsx_runtime_1.jsx(VideoForPreview_js_1.VideoForPreview, { _remotionInternalStack: stack !== null && stack !== void 0 ? stack : null, onDuration: onDuration, onlyWarnForMediaSeekingError: true, pauseWhenBuffering: shouldPauseWhenBuffering, showInTimeline: showInTimeline !== null && showInTimeline !== void 0 ? showInTimeline : true, onAutoPlayError: onAutoPlayError !== null && onAutoPlayError !== void 0 ? onAutoPlayError : undefined, onVideoFrame: onVideoFrame !== null && onVideoFrame !== void 0 ? onVideoFrame : null, crossOrigin: crossOrigin, ...propsForPreview, _remotionInternalNativeLoopPassed: false }));
43
+ return (jsx_runtime_1.jsx(VideoForPreview_js_1.VideoForPreview, { _remotionInternalStack: _remotionInternalStack !== null && _remotionInternalStack !== void 0 ? _remotionInternalStack : null, onDuration: onDuration, onlyWarnForMediaSeekingError: true, pauseWhenBuffering: shouldPauseWhenBuffering, showInTimeline: showInTimeline !== null && showInTimeline !== void 0 ? showInTimeline : true, onAutoPlayError: onAutoPlayError !== null && onAutoPlayError !== void 0 ? onAutoPlayError : undefined, onVideoFrame: onVideoFrame !== null && onVideoFrame !== void 0 ? onVideoFrame : null, crossOrigin: crossOrigin, ...propsForPreview, _remotionInternalNativeLoopPassed: false }));
44
44
  };
45
45
  exports.InnerOffthreadVideo = InnerOffthreadVideo;
46
46
  /*
47
47
  * @description This method imports and displays a video, similar to <Html5Video />. During rendering, it extracts the exact frame from the video and displays it in an <img> tag
48
48
  * @see [Documentation](https://www.remotion.dev/docs/offthreadvideo)
49
49
  */
50
- const OffthreadVideo = ({ src, acceptableTimeShiftInSeconds, allowAmplificationDuringRender, audioStreamIndex, crossOrigin, delayRenderRetries, delayRenderTimeoutInMilliseconds, loopVolumeCurveBehavior, muted, name, onAutoPlayError, onError, onVideoFrame, pauseWhenBuffering, playbackRate, preservePitch, showInTimeline, style, toneFrequency, toneMapped, transparent, trimAfter, trimBefore, useWebAudioApi, volume, _remotionInternalNativeLoopPassed, endAt, stack, startFrom, imageFormat, ...props }) => {
50
+ const OffthreadVideo = ({ src, acceptableTimeShiftInSeconds, allowAmplificationDuringRender, audioStreamIndex, crossOrigin, delayRenderRetries, delayRenderTimeoutInMilliseconds, loopVolumeCurveBehavior, muted, name, onAutoPlayError, onError, onVideoFrame, pauseWhenBuffering, playbackRate, preservePitch, showInTimeline, style, toneFrequency, toneMapped, transparent, trimAfter, trimBefore, useWebAudioApi, volume, _remotionInternalNativeLoopPassed, endAt, _remotionInternalStack, startFrom, imageFormat, ...props }) => {
51
51
  if (imageFormat) {
52
52
  throw new TypeError(`The \`<OffthreadVideo>\` tag does no longer accept \`imageFormat\`. Use the \`transparent\` prop if you want to render a transparent video.`);
53
53
  }
54
- return (jsx_runtime_1.jsx(exports.InnerOffthreadVideo, { acceptableTimeShiftInSeconds: acceptableTimeShiftInSeconds, allowAmplificationDuringRender: allowAmplificationDuringRender !== null && allowAmplificationDuringRender !== void 0 ? allowAmplificationDuringRender : true, audioStreamIndex: audioStreamIndex !== null && audioStreamIndex !== void 0 ? audioStreamIndex : 0, crossOrigin: crossOrigin, delayRenderRetries: delayRenderRetries, delayRenderTimeoutInMilliseconds: delayRenderTimeoutInMilliseconds, loopVolumeCurveBehavior: loopVolumeCurveBehavior !== null && loopVolumeCurveBehavior !== void 0 ? loopVolumeCurveBehavior : 'repeat', muted: muted !== null && muted !== void 0 ? muted : false, name: name, onAutoPlayError: onAutoPlayError !== null && onAutoPlayError !== void 0 ? onAutoPlayError : null, onError: onError, onVideoFrame: onVideoFrame, pauseWhenBuffering: (0, v5_flag_js_1.resolveV5Default)(pauseWhenBuffering), playbackRate: playbackRate !== null && playbackRate !== void 0 ? playbackRate : 1, preservePitch: preservePitch, toneFrequency: toneFrequency !== null && toneFrequency !== void 0 ? toneFrequency : 1, showInTimeline: showInTimeline !== null && showInTimeline !== void 0 ? showInTimeline : true, src: src, stack: stack, startFrom: startFrom, _remotionInternalNativeLoopPassed: _remotionInternalNativeLoopPassed !== null && _remotionInternalNativeLoopPassed !== void 0 ? _remotionInternalNativeLoopPassed : false, endAt: endAt, style: style, toneMapped: toneMapped !== null && toneMapped !== void 0 ? toneMapped : true, transparent: transparent !== null && transparent !== void 0 ? transparent : false, trimAfter: trimAfter, trimBefore: trimBefore, useWebAudioApi: useWebAudioApi !== null && useWebAudioApi !== void 0 ? useWebAudioApi : false, volume: volume, ...props }));
54
+ return (jsx_runtime_1.jsx(exports.InnerOffthreadVideo, { acceptableTimeShiftInSeconds: acceptableTimeShiftInSeconds, allowAmplificationDuringRender: allowAmplificationDuringRender !== null && allowAmplificationDuringRender !== void 0 ? allowAmplificationDuringRender : true, audioStreamIndex: audioStreamIndex !== null && audioStreamIndex !== void 0 ? audioStreamIndex : 0, crossOrigin: crossOrigin, delayRenderRetries: delayRenderRetries, delayRenderTimeoutInMilliseconds: delayRenderTimeoutInMilliseconds, loopVolumeCurveBehavior: loopVolumeCurveBehavior !== null && loopVolumeCurveBehavior !== void 0 ? loopVolumeCurveBehavior : 'repeat', muted: muted !== null && muted !== void 0 ? muted : false, name: name, onAutoPlayError: onAutoPlayError !== null && onAutoPlayError !== void 0 ? onAutoPlayError : null, onError: onError, onVideoFrame: onVideoFrame, pauseWhenBuffering: (0, v5_flag_js_1.resolveV5Default)(pauseWhenBuffering), playbackRate: playbackRate !== null && playbackRate !== void 0 ? playbackRate : 1, preservePitch: preservePitch, toneFrequency: toneFrequency !== null && toneFrequency !== void 0 ? toneFrequency : 1, showInTimeline: showInTimeline !== null && showInTimeline !== void 0 ? showInTimeline : true, src: src, _remotionInternalStack: _remotionInternalStack, startFrom: startFrom, _remotionInternalNativeLoopPassed: _remotionInternalNativeLoopPassed !== null && _remotionInternalNativeLoopPassed !== void 0 ? _remotionInternalNativeLoopPassed : false, endAt: endAt, style: style, toneMapped: toneMapped !== null && toneMapped !== void 0 ? toneMapped : true, transparent: transparent !== null && transparent !== void 0 ? transparent : false, trimAfter: trimAfter, trimBefore: trimBefore, useWebAudioApi: useWebAudioApi !== null && useWebAudioApi !== void 0 ? useWebAudioApi : false, volume: volume, ...props }));
55
55
  };
56
56
  exports.OffthreadVideo = OffthreadVideo;
57
57
  (0, enable_sequence_stack_traces_js_1.addSequenceStackTraces)(exports.OffthreadVideo);
@@ -25,7 +25,7 @@ export declare const Html5Video: React.ForwardRefExoticComponent<Omit<import("./
25
25
  /**
26
26
  * @deprecated For internal use only
27
27
  */
28
- readonly stack?: string | undefined;
28
+ readonly _remotionInternalStack?: string | undefined;
29
29
  }, "ref"> & React.RefAttributes<HTMLVideoElement>>;
30
30
  /**
31
31
  * @deprecated This component has been renamed to `Html5Video`.
@@ -53,5 +53,5 @@ export declare const Video: React.ForwardRefExoticComponent<Omit<import("./props
53
53
  /**
54
54
  * @deprecated For internal use only
55
55
  */
56
- readonly stack?: string | undefined;
56
+ readonly _remotionInternalStack?: string | undefined;
57
57
  }, "ref"> & React.RefAttributes<HTMLVideoElement>>;
@@ -20,7 +20,7 @@ const VideoForPreview_js_1 = require("./VideoForPreview.js");
20
20
  const VideoForRendering_js_1 = require("./VideoForRendering.js");
21
21
  const VideoForwardingFunction = (props, ref) => {
22
22
  var _a, _b, _c;
23
- const { startFrom, endAt, trimBefore, trimAfter, name, pauseWhenBuffering, stack, _remotionInternalNativeLoopPassed, showInTimeline, onAutoPlayError, onVideoFrame, ...otherProps } = props;
23
+ const { startFrom, endAt, trimBefore, trimAfter, name, pauseWhenBuffering, _remotionInternalStack, _remotionInternalNativeLoopPassed, showInTimeline, onAutoPlayError, onVideoFrame, ...otherProps } = props;
24
24
  const { loop, ...propsOtherThanLoop } = props;
25
25
  const { fps } = (0, use_video_config_js_1.useVideoConfig)();
26
26
  const environment = (0, use_remotion_environment_js_1.useRemotionEnvironment)();
@@ -49,7 +49,7 @@ const VideoForwardingFunction = (props, ref) => {
49
49
  });
50
50
  if (loop && durationFetched !== undefined) {
51
51
  if (!Number.isFinite(durationFetched)) {
52
- return (jsx_runtime_1.jsx(exports.Html5Video, { ...propsOtherThanLoop, ref: ref, stack: stack, _remotionInternalNativeLoopPassed: true }));
52
+ return (jsx_runtime_1.jsx(exports.Html5Video, { ...propsOtherThanLoop, ref: ref, _remotionInternalStack: _remotionInternalStack, _remotionInternalNativeLoopPassed: true }));
53
53
  }
54
54
  const mediaDuration = durationFetched * fps;
55
55
  return (jsx_runtime_1.jsx(index_js_1.Loop, { durationInFrames: (0, calculate_media_duration_js_1.calculateMediaDuration)({
@@ -57,13 +57,13 @@ const VideoForwardingFunction = (props, ref) => {
57
57
  mediaDurationInFrames: mediaDuration,
58
58
  playbackRate: (_b = props.playbackRate) !== null && _b !== void 0 ? _b : 1,
59
59
  trimBefore: trimBeforeValue,
60
- }), layout: "none", name: name, showInTimeline: false, children: jsx_runtime_1.jsx(exports.Html5Video, { ...propsOtherThanLoop, ref: ref, stack: stack, _remotionInternalNativeLoopPassed: true }) }));
60
+ }), layout: "none", name: name, showInTimeline: false, children: jsx_runtime_1.jsx(exports.Html5Video, { ...propsOtherThanLoop, ref: ref, _remotionInternalStack: _remotionInternalStack, _remotionInternalNativeLoopPassed: true }) }));
61
61
  }
62
62
  if (typeof trimBeforeValue !== 'undefined' ||
63
63
  typeof trimAfterValue !== 'undefined') {
64
64
  return (jsx_runtime_1.jsx(Sequence_js_1.Sequence, { layout: "none", from: 0 - (trimBeforeValue !== null && trimBeforeValue !== void 0 ? trimBeforeValue : 0), showInTimeline: false, durationInFrames: trimAfterValue === undefined
65
65
  ? undefined
66
- : trimAfterValue / ((_c = props.playbackRate) !== null && _c !== void 0 ? _c : 1), name: name, children: jsx_runtime_1.jsx(exports.Html5Video, { pauseWhenBuffering: shouldPauseWhenBuffering, onVideoFrame: onVideoFrame, ...otherProps, ref: ref, stack: stack }) }));
66
+ : trimAfterValue / ((_c = props.playbackRate) !== null && _c !== void 0 ? _c : 1), name: name, children: jsx_runtime_1.jsx(exports.Html5Video, { pauseWhenBuffering: shouldPauseWhenBuffering, onVideoFrame: onVideoFrame, ...otherProps, ref: ref, _remotionInternalStack: _remotionInternalStack }) }));
67
67
  }
68
68
  (0, validate_media_props_js_1.validateMediaProps)({
69
69
  playbackRate: props.playbackRate,
@@ -73,7 +73,7 @@ const VideoForwardingFunction = (props, ref) => {
73
73
  if (environment.isRendering) {
74
74
  return (jsx_runtime_1.jsx(VideoForRendering_js_1.VideoForRendering, { onDuration: onDuration, onVideoFrame: onVideoFrame !== null && onVideoFrame !== void 0 ? onVideoFrame : null, ...otherProps, ref: ref }));
75
75
  }
76
- return (jsx_runtime_1.jsx(VideoForPreview_js_1.VideoForPreview, { onlyWarnForMediaSeekingError: false, ...otherProps, ref: ref, onVideoFrame: onVideoFrame !== null && onVideoFrame !== void 0 ? onVideoFrame : null, pauseWhenBuffering: shouldPauseWhenBuffering, onDuration: onDuration, _remotionInternalStack: stack !== null && stack !== void 0 ? stack : null, _remotionInternalNativeLoopPassed: _remotionInternalNativeLoopPassed !== null && _remotionInternalNativeLoopPassed !== void 0 ? _remotionInternalNativeLoopPassed : false, showInTimeline: showInTimeline !== null && showInTimeline !== void 0 ? showInTimeline : true, onAutoPlayError: onAutoPlayError !== null && onAutoPlayError !== void 0 ? onAutoPlayError : undefined }));
76
+ return (jsx_runtime_1.jsx(VideoForPreview_js_1.VideoForPreview, { onlyWarnForMediaSeekingError: false, ...otherProps, ref: ref, onVideoFrame: onVideoFrame !== null && onVideoFrame !== void 0 ? onVideoFrame : null, pauseWhenBuffering: shouldPauseWhenBuffering, onDuration: onDuration, _remotionInternalStack: _remotionInternalStack !== null && _remotionInternalStack !== void 0 ? _remotionInternalStack : null, _remotionInternalNativeLoopPassed: _remotionInternalNativeLoopPassed !== null && _remotionInternalNativeLoopPassed !== void 0 ? _remotionInternalNativeLoopPassed : false, showInTimeline: showInTimeline !== null && showInTimeline !== void 0 ? showInTimeline : true, onAutoPlayError: onAutoPlayError !== null && onAutoPlayError !== void 0 ? onAutoPlayError : undefined }));
77
77
  };
78
78
  /**
79
79
  * @description Wraps the native `<video>` element to include video in your component that is synchronized with Remotion's time.
@@ -74,7 +74,7 @@ type OptionalOffthreadVideoProps = {
74
74
  /**
75
75
  * @deprecated For internal use only
76
76
  */
77
- stack: string | undefined;
77
+ _remotionInternalStack: string | undefined;
78
78
  showInTimeline: boolean;
79
79
  onAutoPlayError: null | (() => void);
80
80
  onVideoFrame: OnVideoFrame | undefined;
@@ -37,6 +37,7 @@ exports.withInteractivitySchema = exports.mergeValues = exports.selectActiveKeys
37
37
  const react_1 = __importStar(require("react"));
38
38
  const delete_nested_key_js_1 = require("./delete-nested-key.js");
39
39
  const use_memoized_effects_js_1 = require("./effects/use-memoized-effects.js");
40
+ const enable_sequence_stack_traces_js_1 = require("./enable-sequence-stack-traces.js");
40
41
  const flatten_schema_js_1 = require("./flatten-schema.js");
41
42
  const interactivity_schema_js_1 = require("./interactivity-schema.js");
42
43
  const sequence_node_path_js_1 = require("./sequence-node-path.js");
@@ -125,10 +126,12 @@ const withInteractivitySchema = ({ Component, componentName, componentIdentity,
125
126
  const flatKeys = Object.keys(flatSchema);
126
127
  const Wrapped = (0, react_1.forwardRef)((props, ref) => {
127
128
  var _a;
129
+ const { _remotionInternalStack: internalStack, ...propsWithoutInternalStack } = props;
130
+ const cleanProps = propsWithoutInternalStack;
128
131
  const env = (0, use_remotion_environment_js_1.useRemotionEnvironment)();
129
- if (!env.isStudio || env.isReadOnlyStudio || env.isRendering) {
132
+ if (!env.isStudio || env.isRendering) {
130
133
  return react_1.default.createElement(Component, {
131
- ...props,
134
+ ...cleanProps,
132
135
  controls: null,
133
136
  ref,
134
137
  });
@@ -143,27 +146,33 @@ const withInteractivitySchema = ({ Component, componentName, componentIdentity,
143
146
  const frame = (0, use_current_frame_js_1.useCurrentFrame)();
144
147
  // If the parent has passed `controls`, we should not override it.
145
148
  // @ts-expect-error
146
- if (props.controls) {
149
+ if (cleanProps.controls) {
150
+ // @ts-expect-error `controls` is injected by another interactive wrapper.
151
+ const passedControls = cleanProps.controls;
152
+ if ((0, enable_sequence_stack_traces_js_1.getStackForControls)(passedControls) === null) {
153
+ (0, enable_sequence_stack_traces_js_1.setStackForControls)(passedControls, internalStack);
154
+ }
147
155
  return react_1.default.createElement(Component, {
148
- ...props,
156
+ ...cleanProps,
149
157
  ref,
150
158
  });
151
159
  }
152
160
  // eslint-disable-next-line react-hooks/rules-of-hooks
153
161
  const [overrideId] = (0, react_1.useState)(() => {
154
- const { stack } = props;
155
- if (!stack) {
162
+ if (!internalStack) {
156
163
  return String(Math.random());
157
164
  }
158
- const existingOverrideId = stackToOverrideMap[stack];
165
+ const existingOverrideId = stackToOverrideMap[internalStack];
159
166
  if (existingOverrideId) {
160
167
  return existingOverrideId;
161
168
  }
162
169
  const newOverrideId = String(Math.random());
163
- stackToOverrideMap[stack] = newOverrideId;
170
+ stackToOverrideMap[internalStack] = newOverrideId;
164
171
  return newOverrideId;
165
172
  });
166
- const nodePath = (_a = nodePathMapping.overrideIdToNodePathMappings[overrideId]) !== null && _a !== void 0 ? _a : null;
173
+ const nodePath = env.isReadOnlyStudio
174
+ ? null
175
+ : ((_a = nodePathMapping.overrideIdToNodePathMappings[overrideId]) !== null && _a !== void 0 ? _a : null);
167
176
  // Read the runtime values for every flat key from the JSX props,
168
177
  // memoized on the leaf values so the object reference is stable
169
178
  // when nothing changed — otherwise downstream `useMemo`s churn and
@@ -171,10 +180,10 @@ const withInteractivitySchema = ({ Component, componentName, componentIdentity,
171
180
  const runtimeValues = flatKeys.map((key) => (0, exports.getRuntimeValueForSchemaKey)({
172
181
  flatSchema,
173
182
  key,
174
- props: props,
183
+ props: cleanProps,
175
184
  }));
176
185
  // eslint-disable-next-line react-hooks/rules-of-hooks
177
- const currentRuntimeValueDotNotation = (0, react_1.useMemo)(() => (0, exports.readValuesFromProps)(props, flatKeys, flatSchema),
186
+ const currentRuntimeValueDotNotation = (0, react_1.useMemo)(() => (0, exports.readValuesFromProps)(cleanProps, flatKeys, flatSchema),
178
187
  // eslint-disable-next-line react-hooks/exhaustive-deps
179
188
  runtimeValues);
180
189
  // eslint-disable-next-line react-hooks/rules-of-hooks
@@ -188,6 +197,7 @@ const withInteractivitySchema = ({ Component, componentName, componentIdentity,
188
197
  componentName,
189
198
  };
190
199
  }, [currentRuntimeValueDotNotation, overrideId]);
200
+ (0, enable_sequence_stack_traces_js_1.setStackForControls)(controls, internalStack);
191
201
  // 3. Apply drag/code overrides on top of the runtime values.
192
202
  // eslint-disable-next-line react-hooks/rules-of-hooks
193
203
  const { merged: valuesDotNotation, propsToDelete } = (0, react_1.useMemo)(() => {
@@ -212,7 +222,7 @@ const withInteractivitySchema = ({ Component, componentName, componentIdentity,
212
222
  // 5. Apply the active values back onto the props.
213
223
  const mergedProps = (0, exports.mergeValues)({
214
224
  flatSchema,
215
- props: props,
225
+ props: cleanProps,
216
226
  valuesDotNotation,
217
227
  schemaKeys: activeKeys,
218
228
  propsToDelete,