@remotion/promo-pages 4.0.478 → 4.0.479

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.
package/dist/experts.js CHANGED
@@ -2335,7 +2335,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
2335
2335
  var addSequenceStackTraces = (component) => {
2336
2336
  componentsToAddStacksTo.push(component);
2337
2337
  };
2338
- var VERSION = "4.0.478";
2338
+ var VERSION = "4.0.479";
2339
2339
  var checkMultipleRemotionVersions = () => {
2340
2340
  if (typeof globalThis === "undefined") {
2341
2341
  return;
@@ -2698,10 +2698,7 @@ var Freeze = ({
2698
2698
  })
2699
2699
  });
2700
2700
  };
2701
- var PremountContext = createContext14({
2702
- premountFramesRemaining: 0
2703
- });
2704
- var sequenceVisualStyleSchema = {
2701
+ var transformSchema = {
2705
2702
  "style.transformOrigin": {
2706
2703
  type: "transform-origin",
2707
2704
  step: 1,
@@ -2737,7 +2734,8 @@ var sequenceVisualStyleSchema = {
2737
2734
  hiddenFromList: false
2738
2735
  }
2739
2736
  };
2740
- var sequencePremountSchema = {
2737
+ var sequenceVisualStyleSchema = transformSchema;
2738
+ var premountSchema = {
2741
2739
  premountFor: {
2742
2740
  type: "number",
2743
2741
  default: 0,
@@ -2760,9 +2758,10 @@ var sequencePremountSchema = {
2760
2758
  type: "hidden"
2761
2759
  }
2762
2760
  };
2761
+ var sequencePremountSchema = premountSchema;
2763
2762
  var sequenceStyleSchema = {
2764
- ...sequenceVisualStyleSchema,
2765
- ...sequencePremountSchema
2763
+ ...transformSchema,
2764
+ ...premountSchema
2766
2765
  };
2767
2766
  var hiddenField = {
2768
2767
  type: "boolean",
@@ -2800,12 +2799,16 @@ var freezeField = {
2800
2799
  step: 1,
2801
2800
  hiddenFromList: true
2802
2801
  };
2803
- var sequenceSchema = extendSchemaWithSequenceName({
2804
- hidden: hiddenField,
2805
- showInTimeline: showInTimelineField,
2802
+ var baseSchema = {
2803
+ durationInFrames: durationInFramesField,
2806
2804
  from: fromField,
2807
2805
  freeze: freezeField,
2808
- durationInFrames: durationInFramesField,
2806
+ hidden: hiddenField,
2807
+ name: sequenceNameField,
2808
+ showInTimeline: showInTimelineField
2809
+ };
2810
+ var sequenceSchema = {
2811
+ ...baseSchema,
2809
2812
  layout: {
2810
2813
  type: "enum",
2811
2814
  default: "absolute-fill",
@@ -2815,14 +2818,18 @@ var sequenceSchema = extendSchemaWithSequenceName({
2815
2818
  none: {}
2816
2819
  }
2817
2820
  }
2818
- });
2819
- var sequenceSchemaWithoutFrom = extendSchemaWithSequenceName({
2820
- hidden: hiddenField,
2821
- showInTimeline: showInTimelineField,
2822
- freeze: freezeField,
2821
+ };
2822
+ var baseSchemaWithoutFrom = {
2823
2823
  durationInFrames: durationInFramesField,
2824
+ freeze: freezeField,
2825
+ hidden: hiddenField,
2826
+ name: sequenceNameField,
2827
+ showInTimeline: showInTimelineField
2828
+ };
2829
+ var sequenceSchemaWithoutFrom = {
2830
+ ...baseSchemaWithoutFrom,
2824
2831
  layout: sequenceSchema.layout
2825
- });
2832
+ };
2826
2833
  var sequenceSchemaDefaultLayoutNone = {
2827
2834
  ...sequenceSchema,
2828
2835
  layout: {
@@ -2830,6 +2837,9 @@ var sequenceSchemaDefaultLayoutNone = {
2830
2837
  default: "none"
2831
2838
  }
2832
2839
  };
2840
+ var PremountContext = createContext14({
2841
+ premountFramesRemaining: 0
2842
+ });
2833
2843
  var SequenceManager = React11.createContext({
2834
2844
  registerSequence: () => {
2835
2845
  throw new Error("SequenceManagerContext not initialized");
@@ -4514,10 +4524,21 @@ var interpolateColors = (input, inputRange, outputRange, options) => {
4514
4524
  return interpolateColorsRGB(input, inputRange, processedOutputRange, options);
4515
4525
  };
4516
4526
  var easingToFn = (e) => {
4517
- if (e === "linear") {
4518
- return Easing.linear;
4527
+ switch (e.type) {
4528
+ case "linear":
4529
+ return Easing.linear;
4530
+ case "spring":
4531
+ return Easing.spring({
4532
+ damping: e.damping,
4533
+ mass: e.mass,
4534
+ overshootClamping: e.overshootClamping,
4535
+ stiffness: e.stiffness
4536
+ });
4537
+ case "bezier":
4538
+ return bezier(e.x1, e.y1, e.x2, e.y2);
4539
+ default:
4540
+ throw new TypeError(`Unsupported easing: ${JSON.stringify(e)}`);
4519
4541
  }
4520
- return bezier(e[0], e[1], e[2], e[3]);
4521
4542
  };
4522
4543
  var interpolateKeyframedStatus = ({
4523
4544
  frame,
@@ -4839,6 +4860,9 @@ var findPropsToDelete = ({
4839
4860
  }
4840
4861
  return [...otherKeys];
4841
4862
  };
4863
+ var DEFAULT_LINEAR_EASING = {
4864
+ type: "linear"
4865
+ };
4842
4866
  var makeStaticDragOverride = (value) => {
4843
4867
  return { type: "static", value };
4844
4868
  };
@@ -4851,7 +4875,7 @@ var makeKeyframedDragOverride = ({
4851
4875
  const keyframes = existingIndex === -1 ? [...status.keyframes, { frame, value }].sort((first, second) => first.frame - second.frame) : status.keyframes.map((keyframe, index) => index === existingIndex ? { frame, value } : keyframe);
4852
4876
  const easing = [...status.easing];
4853
4877
  while (easing.length < keyframes.length - 1) {
4854
- easing.push("linear");
4878
+ easing.push(DEFAULT_LINEAR_EASING);
4855
4879
  }
4856
4880
  if (easing.length > keyframes.length - 1) {
4857
4881
  easing.length = keyframes.length - 1;
@@ -5009,7 +5033,7 @@ var mergeValues = ({
5009
5033
  return merged;
5010
5034
  };
5011
5035
  var stackToOverrideMap = {};
5012
- var wrapInSchema = ({
5036
+ var withInteractivitySchema = ({
5013
5037
  Component,
5014
5038
  componentIdentity,
5015
5039
  schema,
@@ -5023,7 +5047,7 @@ var wrapInSchema = ({
5023
5047
  if (!env.isStudio || env.isReadOnlyStudio || env.isRendering) {
5024
5048
  return React13.createElement(Component, {
5025
5049
  ...props,
5026
- _experimentalControls: null,
5050
+ controls: null,
5027
5051
  ref
5028
5052
  });
5029
5053
  }
@@ -5031,7 +5055,7 @@ var wrapInSchema = ({
5031
5055
  const { getDragOverrides } = useContext16(VisualModeDragOverridesContext);
5032
5056
  const nodePathMapping = useContext16(OverrideIdsToNodePathsGettersContext);
5033
5057
  const frame = useCurrentFrame();
5034
- if (props._experimentalControls) {
5058
+ if (props.controls) {
5035
5059
  return React13.createElement(Component, {
5036
5060
  ...props,
5037
5061
  ref
@@ -5086,11 +5110,11 @@ var wrapInSchema = ({
5086
5110
  });
5087
5111
  return React13.createElement(Component, {
5088
5112
  ...mergedProps,
5089
- _experimentalControls: controls,
5113
+ controls,
5090
5114
  ref
5091
5115
  });
5092
5116
  });
5093
- Wrapped.displayName = `wrapInSchema(${Component.displayName || Component.name || "Component"})`;
5117
+ Wrapped.displayName = `withInteractivitySchema(${Component.displayName || Component.name || "Component"})`;
5094
5118
  return Wrapped;
5095
5119
  };
5096
5120
  var EMPTY_EFFECTS = [];
@@ -5104,7 +5128,7 @@ var RegularSequenceRefForwardingFunction = ({
5104
5128
  width,
5105
5129
  showInTimeline = true,
5106
5130
  hidden = false,
5107
- _experimentalControls: controls,
5131
+ controls,
5108
5132
  _remotionInternalEffects,
5109
5133
  _remotionInternalLoopDisplay: loopDisplay,
5110
5134
  _remotionInternalStack: stack,
@@ -5112,7 +5136,7 @@ var RegularSequenceRefForwardingFunction = ({
5112
5136
  _remotionInternalPremountDisplay: premountDisplay,
5113
5137
  _remotionInternalPostmountDisplay: postmountDisplay,
5114
5138
  _remotionInternalIsMedia: isMedia,
5115
- _remotionInternalRefForOutline: passedRefForOutline,
5139
+ outlineRef: passedRefForOutline,
5116
5140
  ...other
5117
5141
  }, ref) => {
5118
5142
  const { layout = "absolute-fill" } = other;
@@ -5439,13 +5463,13 @@ var SequenceRefForwardingFunction = (props, ref) => {
5439
5463
  };
5440
5464
  var SequenceInner = forwardRef3(SequenceRefForwardingFunction);
5441
5465
  var SequenceWithoutSchema = SequenceInner;
5442
- var Sequence = wrapInSchema({
5466
+ var Sequence = withInteractivitySchema({
5443
5467
  Component: SequenceInner,
5444
5468
  componentIdentity: "dev.remotion.remotion.Sequence",
5445
5469
  schema: sequenceSchema,
5446
5470
  supportsEffects: false
5447
5471
  });
5448
- var SequenceWithoutFrom = wrapInSchema({
5472
+ var SequenceWithoutFrom = withInteractivitySchema({
5449
5473
  Component: SequenceInner,
5450
5474
  componentIdentity: null,
5451
5475
  schema: sequenceSchemaWithoutFrom,
@@ -5984,9 +6008,7 @@ var resolveAnimatedImageSource = (src) => {
5984
6008
  return new URL(src, window.origin).href;
5985
6009
  };
5986
6010
  var animatedImageSchema = {
5987
- durationInFrames: durationInFramesField,
5988
- from: fromField,
5989
- freeze: freezeField,
6011
+ ...baseSchema,
5990
6012
  playbackRate: {
5991
6013
  type: "number",
5992
6014
  min: 0,
@@ -5997,8 +6019,7 @@ var animatedImageSchema = {
5997
6019
  hiddenFromList: false,
5998
6020
  keyframable: false
5999
6021
  },
6000
- ...sequenceVisualStyleSchema,
6001
- hidden: hiddenField
6022
+ ...transformSchema
6002
6023
  };
6003
6024
  var AnimatedImageContent = forwardRef4(({
6004
6025
  src,
@@ -6143,7 +6164,7 @@ var AnimatedImageInner = ({
6143
6164
  durationInFrames,
6144
6165
  requestInit,
6145
6166
  effects = [],
6146
- _experimentalControls: controls,
6167
+ controls,
6147
6168
  ref,
6148
6169
  ...sequenceProps
6149
6170
  }) => {
@@ -6172,10 +6193,10 @@ var AnimatedImageInner = ({
6172
6193
  durationInFrames: resolvedDuration,
6173
6194
  name: "<AnimatedImage>",
6174
6195
  _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/animatedimage",
6175
- _experimentalControls: controls,
6196
+ controls,
6176
6197
  _remotionInternalEffects: memoizedEffectDefinitions,
6177
6198
  ...sequenceProps,
6178
- _remotionInternalRefForOutline: actualRef,
6199
+ outlineRef: actualRef,
6179
6200
  children: /* @__PURE__ */ jsx14(AnimatedImageContent, {
6180
6201
  ...animatedImageProps,
6181
6202
  ref: actualRef,
@@ -6184,7 +6205,7 @@ var AnimatedImageInner = ({
6184
6205
  })
6185
6206
  });
6186
6207
  };
6187
- var AnimatedImage = wrapInSchema({
6208
+ var AnimatedImage = withInteractivitySchema({
6188
6209
  Component: AnimatedImageInner,
6189
6210
  componentIdentity: "dev.remotion.remotion.AnimatedImage",
6190
6211
  schema: animatedImageSchema,
@@ -6192,6 +6213,36 @@ var AnimatedImage = wrapInSchema({
6192
6213
  });
6193
6214
  AnimatedImage.displayName = "AnimatedImage";
6194
6215
  addSequenceStackTraces(AnimatedImage);
6216
+ var disabledEffectField = {
6217
+ type: "boolean",
6218
+ default: false,
6219
+ description: "Disabled"
6220
+ };
6221
+ var createEffect = (definition) => {
6222
+ const { calculateKey: userCalculateKey, validateParams } = definition;
6223
+ const widened = {
6224
+ ...definition,
6225
+ documentationLink: definition.documentationLink ?? null,
6226
+ calculateKey: (params) => {
6227
+ const disabled = params.disabled ?? false;
6228
+ return `${userCalculateKey(params)}-disabled-${disabled}`;
6229
+ },
6230
+ schema: {
6231
+ disabled: disabledEffectField,
6232
+ ...definition.schema
6233
+ }
6234
+ };
6235
+ const factory = (params = {}) => {
6236
+ validateParams(params);
6237
+ return {
6238
+ definition: widened,
6239
+ params,
6240
+ effectKey: widened.calculateKey(params),
6241
+ memoized: false
6242
+ };
6243
+ };
6244
+ return factory;
6245
+ };
6195
6246
  var validateArtifactFilename = (filename) => {
6196
6247
  if (typeof filename !== "string") {
6197
6248
  throw new TypeError(`The "filename" must be a string, but you passed a value of type ${typeof filename}`);
@@ -9137,9 +9188,7 @@ var resolveSolidPixelDensity = (pixelDensity) => {
9137
9188
  return pixelDensity;
9138
9189
  };
9139
9190
  var solidSchema = {
9140
- durationInFrames: durationInFramesField,
9141
- from: fromField,
9142
- freeze: freezeField,
9191
+ ...baseSchema,
9143
9192
  color: {
9144
9193
  type: "color",
9145
9194
  default: "transparent",
@@ -9161,8 +9210,7 @@ var solidSchema = {
9161
9210
  description: "Height",
9162
9211
  hiddenFromList: false
9163
9212
  },
9164
- ...sequenceVisualStyleSchema,
9165
- hidden: hiddenField
9213
+ ...transformSchema
9166
9214
  };
9167
9215
  var SolidInner = ({
9168
9216
  color,
@@ -9269,7 +9317,7 @@ var SolidInner = ({
9269
9317
  };
9270
9318
  var SolidOuter = forwardRef8(({
9271
9319
  effects = [],
9272
- _experimentalControls: controls,
9320
+ controls,
9273
9321
  color,
9274
9322
  height,
9275
9323
  width,
@@ -9295,11 +9343,11 @@ var SolidOuter = forwardRef8(({
9295
9343
  freeze,
9296
9344
  hidden,
9297
9345
  showInTimeline,
9298
- _experimentalControls: controls,
9346
+ controls,
9299
9347
  _remotionInternalEffects: memoizedEffectDefinitions,
9300
9348
  durationInFrames,
9301
9349
  name: name ?? "<Solid>",
9302
- _remotionInternalRefForOutline: actualRef,
9350
+ outlineRef: actualRef,
9303
9351
  _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/solid",
9304
9352
  ...props2,
9305
9353
  children: /* @__PURE__ */ jsx24(SolidInner, {
@@ -9315,7 +9363,7 @@ var SolidOuter = forwardRef8(({
9315
9363
  })
9316
9364
  });
9317
9365
  });
9318
- var Solid = wrapInSchema({
9366
+ var Solid = withInteractivitySchema({
9319
9367
  Component: SolidOuter,
9320
9368
  componentIdentity: "dev.remotion.remotion.Solid",
9321
9369
  schema: solidSchema,
@@ -9592,7 +9640,7 @@ var HtmlInCanvasInner = forwardRef9(({
9592
9640
  onPaint,
9593
9641
  onInit,
9594
9642
  pixelDensity,
9595
- _experimentalControls: controls,
9643
+ controls,
9596
9644
  style,
9597
9645
  durationInFrames,
9598
9646
  name,
@@ -9614,9 +9662,9 @@ var HtmlInCanvasInner = forwardRef9(({
9614
9662
  durationInFrames: resolvedDuration,
9615
9663
  name: name ?? "<HtmlInCanvas>",
9616
9664
  _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/remotion/html-in-canvas",
9617
- _experimentalControls: controls,
9665
+ controls,
9618
9666
  _remotionInternalEffects: memoizedEffectDefinitions,
9619
- _remotionInternalRefForOutline: actualRef,
9667
+ outlineRef: actualRef,
9620
9668
  layout: "none",
9621
9669
  ...sequenceProps,
9622
9670
  children: /* @__PURE__ */ jsx25(HtmlInCanvasContent, {
@@ -9635,13 +9683,10 @@ var HtmlInCanvasInner = forwardRef9(({
9635
9683
  });
9636
9684
  HtmlInCanvasInner.displayName = "HtmlInCanvas";
9637
9685
  var htmlInCanvasSchema = {
9638
- durationInFrames: durationInFramesField,
9639
- from: fromField,
9640
- freeze: freezeField,
9641
- ...sequenceVisualStyleSchema,
9642
- hidden: hiddenField
9686
+ ...baseSchema,
9687
+ ...transformSchema
9643
9688
  };
9644
- var HtmlInCanvasWrapped = wrapInSchema({
9689
+ var HtmlInCanvasWrapped = withInteractivitySchema({
9645
9690
  Component: HtmlInCanvasInner,
9646
9691
  componentIdentity: "dev.remotion.remotion.HtmlInCanvas",
9647
9692
  schema: htmlInCanvasSchema,
@@ -9659,9 +9704,7 @@ function truncateSrcForLabel(src) {
9659
9704
  return src;
9660
9705
  }
9661
9706
  var canvasImageSchema = {
9662
- durationInFrames: durationInFramesField,
9663
- from: fromField,
9664
- freeze: freezeField,
9707
+ ...baseSchema,
9665
9708
  fit: {
9666
9709
  type: "enum",
9667
9710
  default: "fill",
@@ -9672,8 +9715,7 @@ var canvasImageSchema = {
9672
9715
  cover: {}
9673
9716
  }
9674
9717
  },
9675
- ...sequenceVisualStyleSchema,
9676
- hidden: hiddenField
9718
+ ...transformSchema
9677
9719
  };
9678
9720
  var makeAbortError = () => {
9679
9721
  if (typeof DOMException !== "undefined") {
@@ -9754,6 +9796,7 @@ var CanvasImageContent = forwardRef10(({
9754
9796
  const { delayRender: delayRender2, continueRender: continueRender2, cancelRender: cancelRender2 } = useDelayRender();
9755
9797
  const { delayPlayback } = useBufferState();
9756
9798
  const [outputCanvas, setOutputCanvas] = useState16(null);
9799
+ const [loadedImage, setLoadedImage] = useState16(null);
9757
9800
  const actualSrc = usePreload(src);
9758
9801
  const chainState = useEffectChainState();
9759
9802
  const memoizedEffects = useMemoizedEffects({
@@ -9779,9 +9822,6 @@ var CanvasImageContent = forwardRef10(({
9779
9822
  }
9780
9823
  }, [ref, refForOutline]);
9781
9824
  useEffect17(() => {
9782
- if (!outputCanvas || !sourceCanvas) {
9783
- return;
9784
- }
9785
9825
  const isPremounting = Boolean(sequenceContext?.premounting);
9786
9826
  const isPostmounting = Boolean(sequenceContext?.postmounting);
9787
9827
  const handle = delayRender2(`Rendering <CanvasImage> with src="${truncateSrcForLabel(actualSrc)}"`, {
@@ -9796,6 +9836,7 @@ var CanvasImageContent = forwardRef10(({
9796
9836
  let continued = false;
9797
9837
  let errorCount = 0;
9798
9838
  let timeoutId = null;
9839
+ setLoadedImage(null);
9799
9840
  const continueRenderOnce = () => {
9800
9841
  if (continued) {
9801
9842
  return;
@@ -9809,30 +9850,9 @@ var CanvasImageContent = forwardRef10(({
9809
9850
  if (cancelled) {
9810
9851
  return;
9811
9852
  }
9812
- const canvasWidth = width ?? image.width;
9813
- const canvasHeight = height ?? image.height;
9814
- const sourceContext = sourceCanvas.getContext("2d", {
9815
- colorSpace: "srgb"
9816
- });
9817
- if (!sourceContext) {
9818
- throw new Error("Could not get 2D context for <CanvasImage> source canvas");
9819
- }
9820
- sourceCanvas.width = canvasWidth;
9821
- sourceCanvas.height = canvasHeight;
9822
- outputCanvas.width = canvasWidth;
9823
- outputCanvas.height = canvasHeight;
9824
- sourceContext.clearRect(0, 0, canvasWidth, canvasHeight);
9825
- sourceContext.drawImage(image.element, ...calculateImageFit(fit, { width: image.width, height: image.height }, { width: canvasWidth, height: canvasHeight }));
9826
- return runEffectChain({
9827
- state: chainState.get(canvasWidth, canvasHeight),
9828
- source: sourceCanvas,
9829
- effects: memoizedEffects,
9830
- output: outputCanvas,
9831
- width: canvasWidth,
9832
- height: canvasHeight
9833
- });
9834
- }).then((completed) => {
9835
- if (completed && !cancelled) {
9853
+ setLoadedImage(image);
9854
+ }).then(() => {
9855
+ if (!cancelled) {
9836
9856
  continueRenderOnce();
9837
9857
  }
9838
9858
  }).catch((err) => {
@@ -9869,21 +9889,87 @@ var CanvasImageContent = forwardRef10(({
9869
9889
  }, [
9870
9890
  actualSrc,
9871
9891
  cancelRender2,
9872
- chainState,
9873
9892
  continueRender2,
9874
9893
  delayPlayback,
9875
9894
  delayRender2,
9876
9895
  delayRenderRetries,
9877
9896
  delayRenderTimeoutInMilliseconds,
9897
+ maxRetries,
9898
+ onError,
9899
+ pauseWhenLoading,
9900
+ sequenceContext?.postmounting,
9901
+ sequenceContext?.premounting
9902
+ ]);
9903
+ useEffect17(() => {
9904
+ if (!loadedImage || !outputCanvas || !sourceCanvas) {
9905
+ return;
9906
+ }
9907
+ const handle = delayRender2(`Applying effects to <CanvasImage> with src="${truncateSrcForLabel(actualSrc)}"`);
9908
+ let cancelled = false;
9909
+ let continued = false;
9910
+ const continueRenderOnce = () => {
9911
+ if (continued) {
9912
+ return;
9913
+ }
9914
+ continued = true;
9915
+ continueRender2(handle);
9916
+ };
9917
+ const canvasWidth = width ?? loadedImage.width;
9918
+ const canvasHeight = height ?? loadedImage.height;
9919
+ const sourceContext = sourceCanvas.getContext("2d", {
9920
+ colorSpace: "srgb"
9921
+ });
9922
+ if (!sourceContext) {
9923
+ cancelRender2(new Error("Could not get 2D context for <CanvasImage> source canvas"));
9924
+ continueRenderOnce();
9925
+ return () => {
9926
+ continueRenderOnce();
9927
+ };
9928
+ }
9929
+ sourceCanvas.width = canvasWidth;
9930
+ sourceCanvas.height = canvasHeight;
9931
+ outputCanvas.width = canvasWidth;
9932
+ outputCanvas.height = canvasHeight;
9933
+ sourceContext.clearRect(0, 0, canvasWidth, canvasHeight);
9934
+ sourceContext.drawImage(loadedImage.element, ...calculateImageFit(fit, { width: loadedImage.width, height: loadedImage.height }, { width: canvasWidth, height: canvasHeight }));
9935
+ runEffectChain({
9936
+ state: chainState.get(canvasWidth, canvasHeight),
9937
+ source: sourceCanvas,
9938
+ effects: memoizedEffects,
9939
+ output: outputCanvas,
9940
+ width: canvasWidth,
9941
+ height: canvasHeight
9942
+ }).then((completed) => {
9943
+ if (completed && !cancelled) {
9944
+ continueRenderOnce();
9945
+ }
9946
+ }).catch((err) => {
9947
+ if (cancelled) {
9948
+ return;
9949
+ }
9950
+ if (onError) {
9951
+ onError(err);
9952
+ continueRenderOnce();
9953
+ } else {
9954
+ cancelRender2(err);
9955
+ }
9956
+ });
9957
+ return () => {
9958
+ cancelled = true;
9959
+ continueRenderOnce();
9960
+ };
9961
+ }, [
9962
+ actualSrc,
9963
+ cancelRender2,
9964
+ chainState,
9965
+ continueRender2,
9966
+ delayRender2,
9878
9967
  fit,
9879
9968
  height,
9880
- maxRetries,
9969
+ loadedImage,
9881
9970
  memoizedEffects,
9882
9971
  onError,
9883
9972
  outputCanvas,
9884
- pauseWhenLoading,
9885
- sequenceContext?.postmounting,
9886
- sequenceContext?.premounting,
9887
9973
  sourceCanvas,
9888
9974
  width
9889
9975
  ]);
@@ -9919,9 +10005,9 @@ var CanvasImageInner = forwardRef10(({
9919
10005
  name,
9920
10006
  showInTimeline,
9921
10007
  stack,
9922
- _experimentalControls: controls,
10008
+ controls,
9923
10009
  _remotionInternalDocumentationLink,
9924
- _remotionInternalRefForOutline,
10010
+ outlineRef,
9925
10011
  ...canvasProps
9926
10012
  }, ref) => {
9927
10013
  if (!src) {
@@ -9941,11 +10027,11 @@ var CanvasImageInner = forwardRef10(({
9941
10027
  showInTimeline: showInTimeline ?? true,
9942
10028
  name: name ?? "<CanvasImage>",
9943
10029
  _remotionInternalDocumentationLink: _remotionInternalDocumentationLink ?? "https://www.remotion.dev/docs/canvasimage",
9944
- _experimentalControls: controls,
10030
+ controls,
9945
10031
  _remotionInternalEffects: memoizedEffectDefinitions,
9946
10032
  _remotionInternalIsMedia: { type: "image", src },
9947
10033
  _remotionInternalStack: stack,
9948
- _remotionInternalRefForOutline: _remotionInternalRefForOutline ?? actualRef,
10034
+ outlineRef: outlineRef ?? actualRef,
9949
10035
  children: /* @__PURE__ */ jsx26(CanvasImageContent, {
9950
10036
  ref: actualRef,
9951
10037
  src,
@@ -9962,12 +10048,12 @@ var CanvasImageInner = forwardRef10(({
9962
10048
  maxRetries,
9963
10049
  delayRenderRetries,
9964
10050
  delayRenderTimeoutInMilliseconds,
9965
- refForOutline: _remotionInternalRefForOutline ?? null,
10051
+ refForOutline: outlineRef ?? null,
9966
10052
  ...canvasProps
9967
10053
  })
9968
10054
  });
9969
10055
  });
9970
- var CanvasImage = wrapInSchema({
10056
+ var CanvasImage = withInteractivitySchema({
9971
10057
  Component: CanvasImageInner,
9972
10058
  componentIdentity: "dev.remotion.remotion.CanvasImage",
9973
10059
  schema: canvasImageSchema,
@@ -10172,8 +10258,8 @@ var NativeImgInner = ({
10172
10258
  from,
10173
10259
  durationInFrames,
10174
10260
  freeze,
10175
- _experimentalControls: controls,
10176
- _remotionInternalRefForOutline: refForOutline,
10261
+ controls,
10262
+ outlineRef: refForOutline,
10177
10263
  ...props2
10178
10264
  }) => {
10179
10265
  if (!src) {
@@ -10188,10 +10274,10 @@ var NativeImgInner = ({
10188
10274
  _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/img",
10189
10275
  _remotionInternalIsMedia: { type: "image", src },
10190
10276
  name: name ?? "<Img>",
10191
- _experimentalControls: controls,
10277
+ controls,
10192
10278
  showInTimeline: showInTimeline ?? true,
10193
10279
  hidden,
10194
- _remotionInternalRefForOutline: refForOutline,
10280
+ outlineRef: refForOutline,
10195
10281
  children: /* @__PURE__ */ jsx28(ImgContent, {
10196
10282
  src,
10197
10283
  refForOutline,
@@ -10201,11 +10287,8 @@ var NativeImgInner = ({
10201
10287
  };
10202
10288
  var CanvasImageWithPrivateProps = CanvasImage;
10203
10289
  var imgSchema = {
10204
- durationInFrames: durationInFramesField,
10205
- from: fromField,
10206
- freeze: freezeField,
10207
- ...sequenceVisualStyleSchema,
10208
- hidden: hiddenField
10290
+ ...baseSchema,
10291
+ ...transformSchema
10209
10292
  };
10210
10293
  var imgCanvasFallbackIncompatibleProps = new Set([
10211
10294
  "alt",
@@ -10260,7 +10343,7 @@ var ImgInner = ({
10260
10343
  from,
10261
10344
  durationInFrames,
10262
10345
  freeze,
10263
- _experimentalControls: controls,
10346
+ controls,
10264
10347
  width,
10265
10348
  height,
10266
10349
  className,
@@ -10285,7 +10368,7 @@ var ImgInner = ({
10285
10368
  from,
10286
10369
  durationInFrames,
10287
10370
  freeze,
10288
- _experimentalControls: controls,
10371
+ controls,
10289
10372
  width,
10290
10373
  height,
10291
10374
  className,
@@ -10295,7 +10378,7 @@ var ImgInner = ({
10295
10378
  maxRetries,
10296
10379
  delayRenderRetries,
10297
10380
  delayRenderTimeoutInMilliseconds,
10298
- _remotionInternalRefForOutline: refForOutline
10381
+ outlineRef: refForOutline
10299
10382
  });
10300
10383
  }
10301
10384
  if (!src) {
@@ -10332,12 +10415,12 @@ var ImgInner = ({
10332
10415
  showInTimeline,
10333
10416
  stack,
10334
10417
  _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/img",
10335
- _experimentalControls: controls,
10336
- _remotionInternalRefForOutline: refForOutline,
10418
+ controls,
10419
+ outlineRef: refForOutline,
10337
10420
  ...canvasProps
10338
10421
  });
10339
10422
  };
10340
- var Img = wrapInSchema({
10423
+ var Img = withInteractivitySchema({
10341
10424
  Component: ImgInner,
10342
10425
  componentIdentity: "dev.remotion.remotion.Img",
10343
10426
  schema: imgSchema,
@@ -10345,11 +10428,8 @@ var Img = wrapInSchema({
10345
10428
  });
10346
10429
  addSequenceStackTraces(Img);
10347
10430
  var interactiveElementSchema = {
10348
- durationInFrames: durationInFramesField,
10349
- from: fromField,
10350
- freeze: freezeField,
10351
- ...sequenceVisualStyleSchema,
10352
- hidden: hiddenField
10431
+ ...baseSchema,
10432
+ ...transformSchema
10353
10433
  };
10354
10434
  var setRef = (ref, value) => {
10355
10435
  if (typeof ref === "function") {
@@ -10368,7 +10448,7 @@ var makeInteractiveElement = (tag, displayName) => {
10368
10448
  name,
10369
10449
  showInTimeline,
10370
10450
  stack,
10371
- _experimentalControls,
10451
+ controls,
10372
10452
  ...props2
10373
10453
  } = propsWithControls;
10374
10454
  const refForOutline = useRef25(null);
@@ -10384,10 +10464,10 @@ var makeInteractiveElement = (tag, displayName) => {
10384
10464
  hidden,
10385
10465
  name: name ?? displayName,
10386
10466
  showInTimeline: showInTimeline ?? true,
10387
- _experimentalControls,
10467
+ controls,
10388
10468
  _remotionInternalStack: stack,
10389
10469
  _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/interactive",
10390
- _remotionInternalRefForOutline: refForOutline,
10470
+ outlineRef: refForOutline,
10391
10471
  children: React29.createElement(tag, {
10392
10472
  ...props2,
10393
10473
  ref: callbackRef
@@ -10395,7 +10475,7 @@ var makeInteractiveElement = (tag, displayName) => {
10395
10475
  });
10396
10476
  });
10397
10477
  Inner.displayName = displayName;
10398
- const Wrapped = wrapInSchema({
10478
+ const Wrapped = withInteractivitySchema({
10399
10479
  Component: Inner,
10400
10480
  componentIdentity: `dev.remotion.remotion.${displayName.slice(1, -1)}`,
10401
10481
  schema: interactiveElementSchema,
@@ -10406,6 +10486,11 @@ var makeInteractiveElement = (tag, displayName) => {
10406
10486
  return Wrapped;
10407
10487
  };
10408
10488
  var Interactive = {
10489
+ baseSchema,
10490
+ transformSchema,
10491
+ premountSchema,
10492
+ sequenceSchema,
10493
+ withSchema: withInteractivitySchema,
10409
10494
  A: makeInteractiveElement("a", "<Interactive.A>"),
10410
10495
  Article: makeInteractiveElement("article", "<Interactive.Article>"),
10411
10496
  Aside: makeInteractiveElement("aside", "<Interactive.Aside>"),
@@ -10587,36 +10672,6 @@ var makeDefaultPreviewCSS = (scope, backgroundColor) => {
10587
10672
  }
10588
10673
  `;
10589
10674
  };
10590
- var disabledEffectField = {
10591
- type: "boolean",
10592
- default: false,
10593
- description: "Disabled"
10594
- };
10595
- var createEffect = (definition) => {
10596
- const { calculateKey: userCalculateKey, validateParams } = definition;
10597
- const widened = {
10598
- ...definition,
10599
- documentationLink: definition.documentationLink ?? null,
10600
- calculateKey: (params) => {
10601
- const disabled = params.disabled ?? false;
10602
- return `${userCalculateKey(params)}-disabled-${disabled}`;
10603
- },
10604
- schema: {
10605
- disabled: disabledEffectField,
10606
- ...definition.schema
10607
- }
10608
- };
10609
- const factory = (params = {}) => {
10610
- validateParams(params);
10611
- return {
10612
- definition: widened,
10613
- params,
10614
- effectKey: widened.calculateKey(params),
10615
- memoized: false
10616
- };
10617
- };
10618
- return factory;
10619
- };
10620
10675
  var REMOTION_STUDIO_CONTAINER_ELEMENT = "__remotion-studio-container";
10621
10676
  var getPreviewDomElement = () => {
10622
10677
  return document.getElementById(REMOTION_STUDIO_CONTAINER_ELEMENT);
@@ -11703,12 +11758,14 @@ var Internals = {
11703
11758
  SequenceManager,
11704
11759
  SequenceManagerRefContext,
11705
11760
  SequenceStackTracesUpdateContext,
11706
- wrapInSchema,
11761
+ baseSchema,
11707
11762
  sequenceSchema,
11708
11763
  SequenceWithoutSchema,
11709
11764
  sequenceStyleSchema,
11710
11765
  sequenceVisualStyleSchema,
11711
11766
  sequencePremountSchema,
11767
+ transformSchema,
11768
+ premountSchema,
11712
11769
  flattenActiveSchema,
11713
11770
  getFlatSchemaWithAllKeys,
11714
11771
  RemotionRootContexts,
@@ -11908,7 +11965,7 @@ var SeriesInner = (props2) => {
11908
11965
  })
11909
11966
  });
11910
11967
  };
11911
- var Series = Object.assign(wrapInSchema({
11968
+ var Series = Object.assign(withInteractivitySchema({
11912
11969
  Component: SeriesInner,
11913
11970
  componentIdentity: "dev.remotion.remotion.Series",
11914
11971
  schema: sequenceSchemaDefaultLayoutNone,