@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.
@@ -22899,7 +22899,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
22899
22899
  var addSequenceStackTraces = (component) => {
22900
22900
  componentsToAddStacksTo.push(component);
22901
22901
  };
22902
- var VERSION = "4.0.478";
22902
+ var VERSION = "4.0.479";
22903
22903
  var checkMultipleRemotionVersions = () => {
22904
22904
  if (typeof globalThis === "undefined") {
22905
22905
  return;
@@ -23262,10 +23262,7 @@ var Freeze = ({
23262
23262
  })
23263
23263
  });
23264
23264
  };
23265
- var PremountContext = createContext14({
23266
- premountFramesRemaining: 0
23267
- });
23268
- var sequenceVisualStyleSchema = {
23265
+ var transformSchema = {
23269
23266
  "style.transformOrigin": {
23270
23267
  type: "transform-origin",
23271
23268
  step: 1,
@@ -23301,7 +23298,8 @@ var sequenceVisualStyleSchema = {
23301
23298
  hiddenFromList: false
23302
23299
  }
23303
23300
  };
23304
- var sequencePremountSchema = {
23301
+ var sequenceVisualStyleSchema = transformSchema;
23302
+ var premountSchema = {
23305
23303
  premountFor: {
23306
23304
  type: "number",
23307
23305
  default: 0,
@@ -23324,9 +23322,10 @@ var sequencePremountSchema = {
23324
23322
  type: "hidden"
23325
23323
  }
23326
23324
  };
23325
+ var sequencePremountSchema = premountSchema;
23327
23326
  var sequenceStyleSchema = {
23328
- ...sequenceVisualStyleSchema,
23329
- ...sequencePremountSchema
23327
+ ...transformSchema,
23328
+ ...premountSchema
23330
23329
  };
23331
23330
  var hiddenField = {
23332
23331
  type: "boolean",
@@ -23364,12 +23363,16 @@ var freezeField = {
23364
23363
  step: 1,
23365
23364
  hiddenFromList: true
23366
23365
  };
23367
- var sequenceSchema = extendSchemaWithSequenceName({
23368
- hidden: hiddenField,
23369
- showInTimeline: showInTimelineField,
23366
+ var baseSchema = {
23367
+ durationInFrames: durationInFramesField,
23370
23368
  from: fromField,
23371
23369
  freeze: freezeField,
23372
- durationInFrames: durationInFramesField,
23370
+ hidden: hiddenField,
23371
+ name: sequenceNameField,
23372
+ showInTimeline: showInTimelineField
23373
+ };
23374
+ var sequenceSchema = {
23375
+ ...baseSchema,
23373
23376
  layout: {
23374
23377
  type: "enum",
23375
23378
  default: "absolute-fill",
@@ -23379,14 +23382,18 @@ var sequenceSchema = extendSchemaWithSequenceName({
23379
23382
  none: {}
23380
23383
  }
23381
23384
  }
23382
- });
23383
- var sequenceSchemaWithoutFrom = extendSchemaWithSequenceName({
23384
- hidden: hiddenField,
23385
- showInTimeline: showInTimelineField,
23386
- freeze: freezeField,
23385
+ };
23386
+ var baseSchemaWithoutFrom = {
23387
23387
  durationInFrames: durationInFramesField,
23388
+ freeze: freezeField,
23389
+ hidden: hiddenField,
23390
+ name: sequenceNameField,
23391
+ showInTimeline: showInTimelineField
23392
+ };
23393
+ var sequenceSchemaWithoutFrom = {
23394
+ ...baseSchemaWithoutFrom,
23388
23395
  layout: sequenceSchema.layout
23389
- });
23396
+ };
23390
23397
  var sequenceSchemaDefaultLayoutNone = {
23391
23398
  ...sequenceSchema,
23392
23399
  layout: {
@@ -23394,6 +23401,9 @@ var sequenceSchemaDefaultLayoutNone = {
23394
23401
  default: "none"
23395
23402
  }
23396
23403
  };
23404
+ var PremountContext = createContext14({
23405
+ premountFramesRemaining: 0
23406
+ });
23397
23407
  var SequenceManager = React11.createContext({
23398
23408
  registerSequence: () => {
23399
23409
  throw new Error("SequenceManagerContext not initialized");
@@ -25078,10 +25088,21 @@ var interpolateColors = (input, inputRange, outputRange, options) => {
25078
25088
  return interpolateColorsRGB(input, inputRange, processedOutputRange, options);
25079
25089
  };
25080
25090
  var easingToFn = (e) => {
25081
- if (e === "linear") {
25082
- return Easing.linear;
25091
+ switch (e.type) {
25092
+ case "linear":
25093
+ return Easing.linear;
25094
+ case "spring":
25095
+ return Easing.spring({
25096
+ damping: e.damping,
25097
+ mass: e.mass,
25098
+ overshootClamping: e.overshootClamping,
25099
+ stiffness: e.stiffness
25100
+ });
25101
+ case "bezier":
25102
+ return bezier(e.x1, e.y1, e.x2, e.y2);
25103
+ default:
25104
+ throw new TypeError(`Unsupported easing: ${JSON.stringify(e)}`);
25083
25105
  }
25084
- return bezier(e[0], e[1], e[2], e[3]);
25085
25106
  };
25086
25107
  var interpolateKeyframedStatus = ({
25087
25108
  frame,
@@ -25403,6 +25424,9 @@ var findPropsToDelete = ({
25403
25424
  }
25404
25425
  return [...otherKeys];
25405
25426
  };
25427
+ var DEFAULT_LINEAR_EASING = {
25428
+ type: "linear"
25429
+ };
25406
25430
  var makeStaticDragOverride = (value) => {
25407
25431
  return { type: "static", value };
25408
25432
  };
@@ -25415,7 +25439,7 @@ var makeKeyframedDragOverride = ({
25415
25439
  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);
25416
25440
  const easing = [...status.easing];
25417
25441
  while (easing.length < keyframes.length - 1) {
25418
- easing.push("linear");
25442
+ easing.push(DEFAULT_LINEAR_EASING);
25419
25443
  }
25420
25444
  if (easing.length > keyframes.length - 1) {
25421
25445
  easing.length = keyframes.length - 1;
@@ -25573,7 +25597,7 @@ var mergeValues = ({
25573
25597
  return merged;
25574
25598
  };
25575
25599
  var stackToOverrideMap = {};
25576
- var wrapInSchema = ({
25600
+ var withInteractivitySchema = ({
25577
25601
  Component,
25578
25602
  componentIdentity,
25579
25603
  schema,
@@ -25587,7 +25611,7 @@ var wrapInSchema = ({
25587
25611
  if (!env.isStudio || env.isReadOnlyStudio || env.isRendering) {
25588
25612
  return React13.createElement(Component, {
25589
25613
  ...props,
25590
- _experimentalControls: null,
25614
+ controls: null,
25591
25615
  ref
25592
25616
  });
25593
25617
  }
@@ -25595,7 +25619,7 @@ var wrapInSchema = ({
25595
25619
  const { getDragOverrides } = useContext16(VisualModeDragOverridesContext);
25596
25620
  const nodePathMapping = useContext16(OverrideIdsToNodePathsGettersContext);
25597
25621
  const frame = useCurrentFrame();
25598
- if (props._experimentalControls) {
25622
+ if (props.controls) {
25599
25623
  return React13.createElement(Component, {
25600
25624
  ...props,
25601
25625
  ref
@@ -25650,11 +25674,11 @@ var wrapInSchema = ({
25650
25674
  });
25651
25675
  return React13.createElement(Component, {
25652
25676
  ...mergedProps,
25653
- _experimentalControls: controls,
25677
+ controls,
25654
25678
  ref
25655
25679
  });
25656
25680
  });
25657
- Wrapped.displayName = `wrapInSchema(${Component.displayName || Component.name || "Component"})`;
25681
+ Wrapped.displayName = `withInteractivitySchema(${Component.displayName || Component.name || "Component"})`;
25658
25682
  return Wrapped;
25659
25683
  };
25660
25684
  var EMPTY_EFFECTS = [];
@@ -25668,7 +25692,7 @@ var RegularSequenceRefForwardingFunction = ({
25668
25692
  width,
25669
25693
  showInTimeline = true,
25670
25694
  hidden = false,
25671
- _experimentalControls: controls,
25695
+ controls,
25672
25696
  _remotionInternalEffects,
25673
25697
  _remotionInternalLoopDisplay: loopDisplay,
25674
25698
  _remotionInternalStack: stack,
@@ -25676,7 +25700,7 @@ var RegularSequenceRefForwardingFunction = ({
25676
25700
  _remotionInternalPremountDisplay: premountDisplay,
25677
25701
  _remotionInternalPostmountDisplay: postmountDisplay,
25678
25702
  _remotionInternalIsMedia: isMedia,
25679
- _remotionInternalRefForOutline: passedRefForOutline,
25703
+ outlineRef: passedRefForOutline,
25680
25704
  ...other
25681
25705
  }, ref) => {
25682
25706
  const { layout = "absolute-fill" } = other;
@@ -26003,13 +26027,13 @@ var SequenceRefForwardingFunction = (props, ref) => {
26003
26027
  };
26004
26028
  var SequenceInner = forwardRef3(SequenceRefForwardingFunction);
26005
26029
  var SequenceWithoutSchema = SequenceInner;
26006
- var Sequence = wrapInSchema({
26030
+ var Sequence = withInteractivitySchema({
26007
26031
  Component: SequenceInner,
26008
26032
  componentIdentity: "dev.remotion.remotion.Sequence",
26009
26033
  schema: sequenceSchema,
26010
26034
  supportsEffects: false
26011
26035
  });
26012
- var SequenceWithoutFrom = wrapInSchema({
26036
+ var SequenceWithoutFrom = withInteractivitySchema({
26013
26037
  Component: SequenceInner,
26014
26038
  componentIdentity: null,
26015
26039
  schema: sequenceSchemaWithoutFrom,
@@ -26548,9 +26572,7 @@ var resolveAnimatedImageSource = (src) => {
26548
26572
  return new URL(src, window.origin).href;
26549
26573
  };
26550
26574
  var animatedImageSchema = {
26551
- durationInFrames: durationInFramesField,
26552
- from: fromField,
26553
- freeze: freezeField,
26575
+ ...baseSchema,
26554
26576
  playbackRate: {
26555
26577
  type: "number",
26556
26578
  min: 0,
@@ -26561,8 +26583,7 @@ var animatedImageSchema = {
26561
26583
  hiddenFromList: false,
26562
26584
  keyframable: false
26563
26585
  },
26564
- ...sequenceVisualStyleSchema,
26565
- hidden: hiddenField
26586
+ ...transformSchema
26566
26587
  };
26567
26588
  var AnimatedImageContent = forwardRef4(({
26568
26589
  src,
@@ -26707,7 +26728,7 @@ var AnimatedImageInner = ({
26707
26728
  durationInFrames,
26708
26729
  requestInit,
26709
26730
  effects = [],
26710
- _experimentalControls: controls,
26731
+ controls,
26711
26732
  ref,
26712
26733
  ...sequenceProps
26713
26734
  }) => {
@@ -26736,10 +26757,10 @@ var AnimatedImageInner = ({
26736
26757
  durationInFrames: resolvedDuration,
26737
26758
  name: "<AnimatedImage>",
26738
26759
  _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/animatedimage",
26739
- _experimentalControls: controls,
26760
+ controls,
26740
26761
  _remotionInternalEffects: memoizedEffectDefinitions,
26741
26762
  ...sequenceProps,
26742
- _remotionInternalRefForOutline: actualRef,
26763
+ outlineRef: actualRef,
26743
26764
  children: /* @__PURE__ */ jsx14(AnimatedImageContent, {
26744
26765
  ...animatedImageProps,
26745
26766
  ref: actualRef,
@@ -26748,7 +26769,7 @@ var AnimatedImageInner = ({
26748
26769
  })
26749
26770
  });
26750
26771
  };
26751
- var AnimatedImage = wrapInSchema({
26772
+ var AnimatedImage = withInteractivitySchema({
26752
26773
  Component: AnimatedImageInner,
26753
26774
  componentIdentity: "dev.remotion.remotion.AnimatedImage",
26754
26775
  schema: animatedImageSchema,
@@ -26756,6 +26777,36 @@ var AnimatedImage = wrapInSchema({
26756
26777
  });
26757
26778
  AnimatedImage.displayName = "AnimatedImage";
26758
26779
  addSequenceStackTraces(AnimatedImage);
26780
+ var disabledEffectField = {
26781
+ type: "boolean",
26782
+ default: false,
26783
+ description: "Disabled"
26784
+ };
26785
+ var createEffect = (definition) => {
26786
+ const { calculateKey: userCalculateKey, validateParams } = definition;
26787
+ const widened = {
26788
+ ...definition,
26789
+ documentationLink: definition.documentationLink ?? null,
26790
+ calculateKey: (params) => {
26791
+ const disabled = params.disabled ?? false;
26792
+ return `${userCalculateKey(params)}-disabled-${disabled}`;
26793
+ },
26794
+ schema: {
26795
+ disabled: disabledEffectField,
26796
+ ...definition.schema
26797
+ }
26798
+ };
26799
+ const factory = (params = {}) => {
26800
+ validateParams(params);
26801
+ return {
26802
+ definition: widened,
26803
+ params,
26804
+ effectKey: widened.calculateKey(params),
26805
+ memoized: false
26806
+ };
26807
+ };
26808
+ return factory;
26809
+ };
26759
26810
  var validateArtifactFilename = (filename) => {
26760
26811
  if (typeof filename !== "string") {
26761
26812
  throw new TypeError(`The "filename" must be a string, but you passed a value of type ${typeof filename}`);
@@ -29701,9 +29752,7 @@ var resolveSolidPixelDensity = (pixelDensity) => {
29701
29752
  return pixelDensity;
29702
29753
  };
29703
29754
  var solidSchema = {
29704
- durationInFrames: durationInFramesField,
29705
- from: fromField,
29706
- freeze: freezeField,
29755
+ ...baseSchema,
29707
29756
  color: {
29708
29757
  type: "color",
29709
29758
  default: "transparent",
@@ -29725,8 +29774,7 @@ var solidSchema = {
29725
29774
  description: "Height",
29726
29775
  hiddenFromList: false
29727
29776
  },
29728
- ...sequenceVisualStyleSchema,
29729
- hidden: hiddenField
29777
+ ...transformSchema
29730
29778
  };
29731
29779
  var SolidInner = ({
29732
29780
  color,
@@ -29833,7 +29881,7 @@ var SolidInner = ({
29833
29881
  };
29834
29882
  var SolidOuter = forwardRef8(({
29835
29883
  effects = [],
29836
- _experimentalControls: controls,
29884
+ controls,
29837
29885
  color,
29838
29886
  height,
29839
29887
  width,
@@ -29859,11 +29907,11 @@ var SolidOuter = forwardRef8(({
29859
29907
  freeze,
29860
29908
  hidden,
29861
29909
  showInTimeline,
29862
- _experimentalControls: controls,
29910
+ controls,
29863
29911
  _remotionInternalEffects: memoizedEffectDefinitions,
29864
29912
  durationInFrames,
29865
29913
  name: name ?? "<Solid>",
29866
- _remotionInternalRefForOutline: actualRef,
29914
+ outlineRef: actualRef,
29867
29915
  _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/solid",
29868
29916
  ...props2,
29869
29917
  children: /* @__PURE__ */ jsx24(SolidInner, {
@@ -29879,7 +29927,7 @@ var SolidOuter = forwardRef8(({
29879
29927
  })
29880
29928
  });
29881
29929
  });
29882
- var Solid = wrapInSchema({
29930
+ var Solid = withInteractivitySchema({
29883
29931
  Component: SolidOuter,
29884
29932
  componentIdentity: "dev.remotion.remotion.Solid",
29885
29933
  schema: solidSchema,
@@ -30156,7 +30204,7 @@ var HtmlInCanvasInner = forwardRef9(({
30156
30204
  onPaint,
30157
30205
  onInit,
30158
30206
  pixelDensity,
30159
- _experimentalControls: controls,
30207
+ controls,
30160
30208
  style,
30161
30209
  durationInFrames,
30162
30210
  name,
@@ -30178,9 +30226,9 @@ var HtmlInCanvasInner = forwardRef9(({
30178
30226
  durationInFrames: resolvedDuration,
30179
30227
  name: name ?? "<HtmlInCanvas>",
30180
30228
  _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/remotion/html-in-canvas",
30181
- _experimentalControls: controls,
30229
+ controls,
30182
30230
  _remotionInternalEffects: memoizedEffectDefinitions,
30183
- _remotionInternalRefForOutline: actualRef,
30231
+ outlineRef: actualRef,
30184
30232
  layout: "none",
30185
30233
  ...sequenceProps,
30186
30234
  children: /* @__PURE__ */ jsx25(HtmlInCanvasContent, {
@@ -30199,13 +30247,10 @@ var HtmlInCanvasInner = forwardRef9(({
30199
30247
  });
30200
30248
  HtmlInCanvasInner.displayName = "HtmlInCanvas";
30201
30249
  var htmlInCanvasSchema = {
30202
- durationInFrames: durationInFramesField,
30203
- from: fromField,
30204
- freeze: freezeField,
30205
- ...sequenceVisualStyleSchema,
30206
- hidden: hiddenField
30250
+ ...baseSchema,
30251
+ ...transformSchema
30207
30252
  };
30208
- var HtmlInCanvasWrapped = wrapInSchema({
30253
+ var HtmlInCanvasWrapped = withInteractivitySchema({
30209
30254
  Component: HtmlInCanvasInner,
30210
30255
  componentIdentity: "dev.remotion.remotion.HtmlInCanvas",
30211
30256
  schema: htmlInCanvasSchema,
@@ -30223,9 +30268,7 @@ function truncateSrcForLabel(src) {
30223
30268
  return src;
30224
30269
  }
30225
30270
  var canvasImageSchema = {
30226
- durationInFrames: durationInFramesField,
30227
- from: fromField,
30228
- freeze: freezeField,
30271
+ ...baseSchema,
30229
30272
  fit: {
30230
30273
  type: "enum",
30231
30274
  default: "fill",
@@ -30236,8 +30279,7 @@ var canvasImageSchema = {
30236
30279
  cover: {}
30237
30280
  }
30238
30281
  },
30239
- ...sequenceVisualStyleSchema,
30240
- hidden: hiddenField
30282
+ ...transformSchema
30241
30283
  };
30242
30284
  var makeAbortError = () => {
30243
30285
  if (typeof DOMException !== "undefined") {
@@ -30318,6 +30360,7 @@ var CanvasImageContent = forwardRef10(({
30318
30360
  const { delayRender: delayRender2, continueRender: continueRender2, cancelRender: cancelRender2 } = useDelayRender();
30319
30361
  const { delayPlayback } = useBufferState();
30320
30362
  const [outputCanvas, setOutputCanvas] = useState16(null);
30363
+ const [loadedImage, setLoadedImage] = useState16(null);
30321
30364
  const actualSrc = usePreload(src);
30322
30365
  const chainState = useEffectChainState();
30323
30366
  const memoizedEffects = useMemoizedEffects({
@@ -30343,9 +30386,6 @@ var CanvasImageContent = forwardRef10(({
30343
30386
  }
30344
30387
  }, [ref, refForOutline]);
30345
30388
  useEffect17(() => {
30346
- if (!outputCanvas || !sourceCanvas) {
30347
- return;
30348
- }
30349
30389
  const isPremounting = Boolean(sequenceContext?.premounting);
30350
30390
  const isPostmounting = Boolean(sequenceContext?.postmounting);
30351
30391
  const handle = delayRender2(`Rendering <CanvasImage> with src="${truncateSrcForLabel(actualSrc)}"`, {
@@ -30360,6 +30400,7 @@ var CanvasImageContent = forwardRef10(({
30360
30400
  let continued = false;
30361
30401
  let errorCount = 0;
30362
30402
  let timeoutId = null;
30403
+ setLoadedImage(null);
30363
30404
  const continueRenderOnce = () => {
30364
30405
  if (continued) {
30365
30406
  return;
@@ -30373,30 +30414,9 @@ var CanvasImageContent = forwardRef10(({
30373
30414
  if (cancelled) {
30374
30415
  return;
30375
30416
  }
30376
- const canvasWidth = width ?? image.width;
30377
- const canvasHeight = height ?? image.height;
30378
- const sourceContext = sourceCanvas.getContext("2d", {
30379
- colorSpace: "srgb"
30380
- });
30381
- if (!sourceContext) {
30382
- throw new Error("Could not get 2D context for <CanvasImage> source canvas");
30383
- }
30384
- sourceCanvas.width = canvasWidth;
30385
- sourceCanvas.height = canvasHeight;
30386
- outputCanvas.width = canvasWidth;
30387
- outputCanvas.height = canvasHeight;
30388
- sourceContext.clearRect(0, 0, canvasWidth, canvasHeight);
30389
- sourceContext.drawImage(image.element, ...calculateImageFit(fit, { width: image.width, height: image.height }, { width: canvasWidth, height: canvasHeight }));
30390
- return runEffectChain({
30391
- state: chainState.get(canvasWidth, canvasHeight),
30392
- source: sourceCanvas,
30393
- effects: memoizedEffects,
30394
- output: outputCanvas,
30395
- width: canvasWidth,
30396
- height: canvasHeight
30397
- });
30398
- }).then((completed) => {
30399
- if (completed && !cancelled) {
30417
+ setLoadedImage(image);
30418
+ }).then(() => {
30419
+ if (!cancelled) {
30400
30420
  continueRenderOnce();
30401
30421
  }
30402
30422
  }).catch((err) => {
@@ -30433,21 +30453,87 @@ var CanvasImageContent = forwardRef10(({
30433
30453
  }, [
30434
30454
  actualSrc,
30435
30455
  cancelRender2,
30436
- chainState,
30437
30456
  continueRender2,
30438
30457
  delayPlayback,
30439
30458
  delayRender2,
30440
30459
  delayRenderRetries,
30441
30460
  delayRenderTimeoutInMilliseconds,
30461
+ maxRetries,
30462
+ onError,
30463
+ pauseWhenLoading,
30464
+ sequenceContext?.postmounting,
30465
+ sequenceContext?.premounting
30466
+ ]);
30467
+ useEffect17(() => {
30468
+ if (!loadedImage || !outputCanvas || !sourceCanvas) {
30469
+ return;
30470
+ }
30471
+ const handle = delayRender2(`Applying effects to <CanvasImage> with src="${truncateSrcForLabel(actualSrc)}"`);
30472
+ let cancelled = false;
30473
+ let continued = false;
30474
+ const continueRenderOnce = () => {
30475
+ if (continued) {
30476
+ return;
30477
+ }
30478
+ continued = true;
30479
+ continueRender2(handle);
30480
+ };
30481
+ const canvasWidth = width ?? loadedImage.width;
30482
+ const canvasHeight = height ?? loadedImage.height;
30483
+ const sourceContext = sourceCanvas.getContext("2d", {
30484
+ colorSpace: "srgb"
30485
+ });
30486
+ if (!sourceContext) {
30487
+ cancelRender2(new Error("Could not get 2D context for <CanvasImage> source canvas"));
30488
+ continueRenderOnce();
30489
+ return () => {
30490
+ continueRenderOnce();
30491
+ };
30492
+ }
30493
+ sourceCanvas.width = canvasWidth;
30494
+ sourceCanvas.height = canvasHeight;
30495
+ outputCanvas.width = canvasWidth;
30496
+ outputCanvas.height = canvasHeight;
30497
+ sourceContext.clearRect(0, 0, canvasWidth, canvasHeight);
30498
+ sourceContext.drawImage(loadedImage.element, ...calculateImageFit(fit, { width: loadedImage.width, height: loadedImage.height }, { width: canvasWidth, height: canvasHeight }));
30499
+ runEffectChain({
30500
+ state: chainState.get(canvasWidth, canvasHeight),
30501
+ source: sourceCanvas,
30502
+ effects: memoizedEffects,
30503
+ output: outputCanvas,
30504
+ width: canvasWidth,
30505
+ height: canvasHeight
30506
+ }).then((completed) => {
30507
+ if (completed && !cancelled) {
30508
+ continueRenderOnce();
30509
+ }
30510
+ }).catch((err) => {
30511
+ if (cancelled) {
30512
+ return;
30513
+ }
30514
+ if (onError) {
30515
+ onError(err);
30516
+ continueRenderOnce();
30517
+ } else {
30518
+ cancelRender2(err);
30519
+ }
30520
+ });
30521
+ return () => {
30522
+ cancelled = true;
30523
+ continueRenderOnce();
30524
+ };
30525
+ }, [
30526
+ actualSrc,
30527
+ cancelRender2,
30528
+ chainState,
30529
+ continueRender2,
30530
+ delayRender2,
30442
30531
  fit,
30443
30532
  height,
30444
- maxRetries,
30533
+ loadedImage,
30445
30534
  memoizedEffects,
30446
30535
  onError,
30447
30536
  outputCanvas,
30448
- pauseWhenLoading,
30449
- sequenceContext?.postmounting,
30450
- sequenceContext?.premounting,
30451
30537
  sourceCanvas,
30452
30538
  width
30453
30539
  ]);
@@ -30483,9 +30569,9 @@ var CanvasImageInner = forwardRef10(({
30483
30569
  name,
30484
30570
  showInTimeline,
30485
30571
  stack,
30486
- _experimentalControls: controls,
30572
+ controls,
30487
30573
  _remotionInternalDocumentationLink,
30488
- _remotionInternalRefForOutline,
30574
+ outlineRef,
30489
30575
  ...canvasProps
30490
30576
  }, ref) => {
30491
30577
  if (!src) {
@@ -30505,11 +30591,11 @@ var CanvasImageInner = forwardRef10(({
30505
30591
  showInTimeline: showInTimeline ?? true,
30506
30592
  name: name ?? "<CanvasImage>",
30507
30593
  _remotionInternalDocumentationLink: _remotionInternalDocumentationLink ?? "https://www.remotion.dev/docs/canvasimage",
30508
- _experimentalControls: controls,
30594
+ controls,
30509
30595
  _remotionInternalEffects: memoizedEffectDefinitions,
30510
30596
  _remotionInternalIsMedia: { type: "image", src },
30511
30597
  _remotionInternalStack: stack,
30512
- _remotionInternalRefForOutline: _remotionInternalRefForOutline ?? actualRef,
30598
+ outlineRef: outlineRef ?? actualRef,
30513
30599
  children: /* @__PURE__ */ jsx26(CanvasImageContent, {
30514
30600
  ref: actualRef,
30515
30601
  src,
@@ -30526,12 +30612,12 @@ var CanvasImageInner = forwardRef10(({
30526
30612
  maxRetries,
30527
30613
  delayRenderRetries,
30528
30614
  delayRenderTimeoutInMilliseconds,
30529
- refForOutline: _remotionInternalRefForOutline ?? null,
30615
+ refForOutline: outlineRef ?? null,
30530
30616
  ...canvasProps
30531
30617
  })
30532
30618
  });
30533
30619
  });
30534
- var CanvasImage = wrapInSchema({
30620
+ var CanvasImage = withInteractivitySchema({
30535
30621
  Component: CanvasImageInner,
30536
30622
  componentIdentity: "dev.remotion.remotion.CanvasImage",
30537
30623
  schema: canvasImageSchema,
@@ -30736,8 +30822,8 @@ var NativeImgInner = ({
30736
30822
  from,
30737
30823
  durationInFrames,
30738
30824
  freeze,
30739
- _experimentalControls: controls,
30740
- _remotionInternalRefForOutline: refForOutline,
30825
+ controls,
30826
+ outlineRef: refForOutline,
30741
30827
  ...props2
30742
30828
  }) => {
30743
30829
  if (!src) {
@@ -30752,10 +30838,10 @@ var NativeImgInner = ({
30752
30838
  _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/img",
30753
30839
  _remotionInternalIsMedia: { type: "image", src },
30754
30840
  name: name ?? "<Img>",
30755
- _experimentalControls: controls,
30841
+ controls,
30756
30842
  showInTimeline: showInTimeline ?? true,
30757
30843
  hidden,
30758
- _remotionInternalRefForOutline: refForOutline,
30844
+ outlineRef: refForOutline,
30759
30845
  children: /* @__PURE__ */ jsx28(ImgContent, {
30760
30846
  src,
30761
30847
  refForOutline,
@@ -30765,11 +30851,8 @@ var NativeImgInner = ({
30765
30851
  };
30766
30852
  var CanvasImageWithPrivateProps = CanvasImage;
30767
30853
  var imgSchema = {
30768
- durationInFrames: durationInFramesField,
30769
- from: fromField,
30770
- freeze: freezeField,
30771
- ...sequenceVisualStyleSchema,
30772
- hidden: hiddenField
30854
+ ...baseSchema,
30855
+ ...transformSchema
30773
30856
  };
30774
30857
  var imgCanvasFallbackIncompatibleProps = new Set([
30775
30858
  "alt",
@@ -30824,7 +30907,7 @@ var ImgInner = ({
30824
30907
  from,
30825
30908
  durationInFrames,
30826
30909
  freeze,
30827
- _experimentalControls: controls,
30910
+ controls,
30828
30911
  width,
30829
30912
  height,
30830
30913
  className,
@@ -30849,7 +30932,7 @@ var ImgInner = ({
30849
30932
  from,
30850
30933
  durationInFrames,
30851
30934
  freeze,
30852
- _experimentalControls: controls,
30935
+ controls,
30853
30936
  width,
30854
30937
  height,
30855
30938
  className,
@@ -30859,7 +30942,7 @@ var ImgInner = ({
30859
30942
  maxRetries,
30860
30943
  delayRenderRetries,
30861
30944
  delayRenderTimeoutInMilliseconds,
30862
- _remotionInternalRefForOutline: refForOutline
30945
+ outlineRef: refForOutline
30863
30946
  });
30864
30947
  }
30865
30948
  if (!src) {
@@ -30896,12 +30979,12 @@ var ImgInner = ({
30896
30979
  showInTimeline,
30897
30980
  stack,
30898
30981
  _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/img",
30899
- _experimentalControls: controls,
30900
- _remotionInternalRefForOutline: refForOutline,
30982
+ controls,
30983
+ outlineRef: refForOutline,
30901
30984
  ...canvasProps
30902
30985
  });
30903
30986
  };
30904
- var Img = wrapInSchema({
30987
+ var Img = withInteractivitySchema({
30905
30988
  Component: ImgInner,
30906
30989
  componentIdentity: "dev.remotion.remotion.Img",
30907
30990
  schema: imgSchema,
@@ -30909,11 +30992,8 @@ var Img = wrapInSchema({
30909
30992
  });
30910
30993
  addSequenceStackTraces(Img);
30911
30994
  var interactiveElementSchema = {
30912
- durationInFrames: durationInFramesField,
30913
- from: fromField,
30914
- freeze: freezeField,
30915
- ...sequenceVisualStyleSchema,
30916
- hidden: hiddenField
30995
+ ...baseSchema,
30996
+ ...transformSchema
30917
30997
  };
30918
30998
  var setRef = (ref, value) => {
30919
30999
  if (typeof ref === "function") {
@@ -30932,7 +31012,7 @@ var makeInteractiveElement = (tag, displayName) => {
30932
31012
  name,
30933
31013
  showInTimeline,
30934
31014
  stack,
30935
- _experimentalControls,
31015
+ controls,
30936
31016
  ...props2
30937
31017
  } = propsWithControls;
30938
31018
  const refForOutline = useRef25(null);
@@ -30948,10 +31028,10 @@ var makeInteractiveElement = (tag, displayName) => {
30948
31028
  hidden,
30949
31029
  name: name ?? displayName,
30950
31030
  showInTimeline: showInTimeline ?? true,
30951
- _experimentalControls,
31031
+ controls,
30952
31032
  _remotionInternalStack: stack,
30953
31033
  _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/interactive",
30954
- _remotionInternalRefForOutline: refForOutline,
31034
+ outlineRef: refForOutline,
30955
31035
  children: React29.createElement(tag, {
30956
31036
  ...props2,
30957
31037
  ref: callbackRef
@@ -30959,7 +31039,7 @@ var makeInteractiveElement = (tag, displayName) => {
30959
31039
  });
30960
31040
  });
30961
31041
  Inner.displayName = displayName;
30962
- const Wrapped = wrapInSchema({
31042
+ const Wrapped = withInteractivitySchema({
30963
31043
  Component: Inner,
30964
31044
  componentIdentity: `dev.remotion.remotion.${displayName.slice(1, -1)}`,
30965
31045
  schema: interactiveElementSchema,
@@ -30970,6 +31050,11 @@ var makeInteractiveElement = (tag, displayName) => {
30970
31050
  return Wrapped;
30971
31051
  };
30972
31052
  var Interactive = {
31053
+ baseSchema,
31054
+ transformSchema,
31055
+ premountSchema,
31056
+ sequenceSchema,
31057
+ withSchema: withInteractivitySchema,
30973
31058
  A: makeInteractiveElement("a", "<Interactive.A>"),
30974
31059
  Article: makeInteractiveElement("article", "<Interactive.Article>"),
30975
31060
  Aside: makeInteractiveElement("aside", "<Interactive.Aside>"),
@@ -31151,36 +31236,6 @@ var makeDefaultPreviewCSS = (scope, backgroundColor) => {
31151
31236
  }
31152
31237
  `;
31153
31238
  };
31154
- var disabledEffectField = {
31155
- type: "boolean",
31156
- default: false,
31157
- description: "Disabled"
31158
- };
31159
- var createEffect = (definition) => {
31160
- const { calculateKey: userCalculateKey, validateParams } = definition;
31161
- const widened = {
31162
- ...definition,
31163
- documentationLink: definition.documentationLink ?? null,
31164
- calculateKey: (params) => {
31165
- const disabled = params.disabled ?? false;
31166
- return `${userCalculateKey(params)}-disabled-${disabled}`;
31167
- },
31168
- schema: {
31169
- disabled: disabledEffectField,
31170
- ...definition.schema
31171
- }
31172
- };
31173
- const factory = (params = {}) => {
31174
- validateParams(params);
31175
- return {
31176
- definition: widened,
31177
- params,
31178
- effectKey: widened.calculateKey(params),
31179
- memoized: false
31180
- };
31181
- };
31182
- return factory;
31183
- };
31184
31239
  var REMOTION_STUDIO_CONTAINER_ELEMENT = "__remotion-studio-container";
31185
31240
  var getPreviewDomElement = () => {
31186
31241
  return document.getElementById(REMOTION_STUDIO_CONTAINER_ELEMENT);
@@ -32267,12 +32322,14 @@ var Internals = {
32267
32322
  SequenceManager,
32268
32323
  SequenceManagerRefContext,
32269
32324
  SequenceStackTracesUpdateContext,
32270
- wrapInSchema,
32325
+ baseSchema,
32271
32326
  sequenceSchema,
32272
32327
  SequenceWithoutSchema,
32273
32328
  sequenceStyleSchema,
32274
32329
  sequenceVisualStyleSchema,
32275
32330
  sequencePremountSchema,
32331
+ transformSchema,
32332
+ premountSchema,
32276
32333
  flattenActiveSchema,
32277
32334
  getFlatSchemaWithAllKeys,
32278
32335
  RemotionRootContexts,
@@ -32472,7 +32529,7 @@ var SeriesInner = (props2) => {
32472
32529
  })
32473
32530
  });
32474
32531
  };
32475
- var Series = Object.assign(wrapInSchema({
32532
+ var Series = Object.assign(withInteractivitySchema({
32476
32533
  Component: SeriesInner,
32477
32534
  componentIdentity: "dev.remotion.remotion.Series",
32478
32535
  schema: sequenceSchemaDefaultLayoutNone,
@@ -33062,6 +33119,7 @@ import { jsx as jsx82 } from "react/jsx-runtime";
33062
33119
  import { jsx as jsx92 } from "react/jsx-runtime";
33063
33120
  import { jsx as jsx102 } from "react/jsx-runtime";
33064
33121
  import { jsx as jsx112 } from "react/jsx-runtime";
33122
+ import { jsx as jsx122 } from "react/jsx-runtime";
33065
33123
  var unitDir = (from, to) => {
33066
33124
  const dx = to[0] - from[0];
33067
33125
  const dy = to[1] - from[1];
@@ -33205,6 +33263,7 @@ var doesReactSupportTransformOriginProperty = (version2) => {
33205
33263
  const [major] = version2.split(".").map(Number);
33206
33264
  return major > 18;
33207
33265
  };
33266
+ var HtmlInCanvasWithPrivateProps = HtmlInCanvas;
33208
33267
  var RenderSvg = ({
33209
33268
  defaultName,
33210
33269
  documentationLink,
@@ -33224,7 +33283,7 @@ var RenderSvg = ({
33224
33283
  hidden,
33225
33284
  name,
33226
33285
  showInTimeline,
33227
- _experimentalControls: controls,
33286
+ controls,
33228
33287
  stack,
33229
33288
  ...props
33230
33289
  }) => {
@@ -33311,7 +33370,7 @@ var RenderSvg = ({
33311
33370
  }) : null
33312
33371
  ]
33313
33372
  });
33314
- const content = effects.length === 0 ? svg : /* @__PURE__ */ jsx40(HtmlInCanvas, {
33373
+ const content = effects.length === 0 ? svg : /* @__PURE__ */ jsx40(HtmlInCanvasWithPrivateProps, {
33315
33374
  ref: setCanvasRef,
33316
33375
  width: Math.ceil(width),
33317
33376
  height: Math.ceil(height),
@@ -33319,7 +33378,7 @@ var RenderSvg = ({
33319
33378
  pixelDensity,
33320
33379
  showInTimeline: false,
33321
33380
  style: actualStyle,
33322
- _experimentalControls: controls,
33381
+ controls,
33323
33382
  children: svg
33324
33383
  });
33325
33384
  const stackProps = stack === undefined ? null : { stack };
@@ -33332,11 +33391,11 @@ var RenderSvg = ({
33332
33391
  freeze,
33333
33392
  hidden,
33334
33393
  showInTimeline,
33335
- _experimentalControls: controls,
33394
+ controls,
33336
33395
  _remotionInternalEffects: memoizedEffectDefinitions,
33337
33396
  durationInFrames,
33338
33397
  name: name ?? defaultName,
33339
- _remotionInternalRefForOutline: outlineRef,
33398
+ outlineRef,
33340
33399
  _remotionInternalDocumentationLink: name === undefined ? documentationLink : undefined,
33341
33400
  ...stackProps,
33342
33401
  children: content
@@ -33394,16 +33453,13 @@ var enumField = ({
33394
33453
  };
33395
33454
  var makeShapeSchema = (shapeFields) => {
33396
33455
  return {
33397
- from: Internals.sequenceSchema.from,
33398
- freeze: Internals.sequenceSchema.freeze,
33399
- durationInFrames: Internals.sequenceSchema.durationInFrames,
33456
+ ...Internals.baseSchema,
33400
33457
  ...shapeFields,
33401
33458
  fill: colorField({
33402
33459
  defaultValue: "#0b84ff",
33403
33460
  description: "Fill"
33404
33461
  }),
33405
- ...Internals.sequenceVisualStyleSchema,
33406
- hidden: Internals.sequenceSchema.hidden
33462
+ ...Internals.transformSchema
33407
33463
  };
33408
33464
  };
33409
33465
  var arrowSchema = makeShapeSchema({
@@ -33461,7 +33517,7 @@ var ArrowInner = ({
33461
33517
  ...props
33462
33518
  });
33463
33519
  };
33464
- var Arrow = Internals.wrapInSchema({
33520
+ var Arrow = Interactive.withSchema({
33465
33521
  Component: ArrowInner,
33466
33522
  componentIdentity: "dev.remotion.shapes.Arrow",
33467
33523
  schema: arrowSchema,
@@ -33885,7 +33941,7 @@ var CalloutInner = ({
33885
33941
  ...props
33886
33942
  });
33887
33943
  };
33888
- var Callout = Internals.wrapInSchema({
33944
+ var Callout = Interactive.withSchema({
33889
33945
  Component: CalloutInner,
33890
33946
  componentIdentity: "dev.remotion.shapes.Callout",
33891
33947
  schema: calloutSchema,
@@ -33947,7 +34003,7 @@ var CircleInner = ({ radius, ...props }) => {
33947
34003
  ...props
33948
34004
  });
33949
34005
  };
33950
- var Circle = Internals.wrapInSchema({
34006
+ var Circle = Interactive.withSchema({
33951
34007
  Component: CircleInner,
33952
34008
  componentIdentity: "dev.remotion.shapes.Circle",
33953
34009
  schema: circleSchema,
@@ -34004,7 +34060,7 @@ var EllipseInner = ({ rx, ry, ...props }) => {
34004
34060
  ...props
34005
34061
  });
34006
34062
  };
34007
- var Ellipse = Internals.wrapInSchema({
34063
+ var Ellipse = Interactive.withSchema({
34008
34064
  Component: EllipseInner,
34009
34065
  componentIdentity: "dev.remotion.shapes.Ellipse",
34010
34066
  schema: ellipseSchema,
@@ -34142,7 +34198,7 @@ var HeartInner = ({
34142
34198
  ...props
34143
34199
  });
34144
34200
  };
34145
- var Heart = Internals.wrapInSchema({
34201
+ var Heart = Interactive.withSchema({
34146
34202
  Component: HeartInner,
34147
34203
  componentIdentity: "dev.remotion.shapes.Heart",
34148
34204
  schema: heartSchema,
@@ -34296,7 +34352,7 @@ var PieInner = ({
34296
34352
  ...props
34297
34353
  });
34298
34354
  };
34299
- var Pie = Internals.wrapInSchema({
34355
+ var Pie = Interactive.withSchema({
34300
34356
  Component: PieInner,
34301
34357
  componentIdentity: "dev.remotion.shapes.Pie",
34302
34358
  schema: pieSchema,
@@ -34395,7 +34451,7 @@ var PolygonInner = ({
34395
34451
  ...props
34396
34452
  });
34397
34453
  };
34398
- var Polygon = Internals.wrapInSchema({
34454
+ var Polygon = Interactive.withSchema({
34399
34455
  Component: PolygonInner,
34400
34456
  componentIdentity: "dev.remotion.shapes.Polygon",
34401
34457
  schema: polygonSchema,
@@ -34461,13 +34517,224 @@ var RectInner = ({
34461
34517
  ...props
34462
34518
  });
34463
34519
  };
34464
- var Rect = Internals.wrapInSchema({
34520
+ var Rect = Interactive.withSchema({
34465
34521
  Component: RectInner,
34466
34522
  componentIdentity: "dev.remotion.shapes.Rect",
34467
34523
  schema: rectSchema,
34468
34524
  supportsEffects: true
34469
34525
  });
34470
34526
  Internals.addSequenceStackTraces(Rect);
34527
+ var KAPPA = 0.5522847498307936;
34528
+ var CAP_HANDLE = 4 / 3;
34529
+ var curve = ({
34530
+ to,
34531
+ cp1,
34532
+ cp2
34533
+ }) => {
34534
+ return {
34535
+ type: "C",
34536
+ cp1x: cp1[0],
34537
+ cp1y: cp1[1],
34538
+ cp2x: cp2[0],
34539
+ cp2y: cp2[1],
34540
+ x: to[0],
34541
+ y: to[1]
34542
+ };
34543
+ };
34544
+ var cap = ({
34545
+ from,
34546
+ to,
34547
+ radius,
34548
+ direction
34549
+ }) => {
34550
+ if (direction === "top") {
34551
+ return curve({
34552
+ to,
34553
+ cp1: [from[0], from[1] - radius * CAP_HANDLE],
34554
+ cp2: [to[0], to[1] - radius * CAP_HANDLE]
34555
+ });
34556
+ }
34557
+ if (direction === "right") {
34558
+ return curve({
34559
+ to,
34560
+ cp1: [from[0] + radius * CAP_HANDLE, from[1]],
34561
+ cp2: [to[0] + radius * CAP_HANDLE, to[1]]
34562
+ });
34563
+ }
34564
+ if (direction === "bottom") {
34565
+ return curve({
34566
+ to,
34567
+ cp1: [from[0], from[1] + radius * CAP_HANDLE],
34568
+ cp2: [to[0], to[1] + radius * CAP_HANDLE]
34569
+ });
34570
+ }
34571
+ return curve({
34572
+ to,
34573
+ cp1: [from[0] - radius * CAP_HANDLE, from[1]],
34574
+ cp2: [to[0] - radius * CAP_HANDLE, to[1]]
34575
+ });
34576
+ };
34577
+ var edge = ({
34578
+ from,
34579
+ to,
34580
+ edgeRoundness,
34581
+ direction
34582
+ }) => {
34583
+ const dx = to[0] - from[0];
34584
+ const dy = to[1] - from[1];
34585
+ const handleX = Math.abs(dx) * KAPPA * edgeRoundness;
34586
+ const handleY = Math.abs(dy) * KAPPA * edgeRoundness;
34587
+ if (direction === "top-right") {
34588
+ return curve({
34589
+ to,
34590
+ cp1: [from[0], from[1] + handleY],
34591
+ cp2: [to[0] - handleX, to[1]]
34592
+ });
34593
+ }
34594
+ if (direction === "right-bottom") {
34595
+ return curve({
34596
+ to,
34597
+ cp1: [from[0] - handleX, from[1]],
34598
+ cp2: [to[0], to[1] - handleY]
34599
+ });
34600
+ }
34601
+ if (direction === "bottom-left") {
34602
+ return curve({
34603
+ to,
34604
+ cp1: [from[0], from[1] - handleY],
34605
+ cp2: [to[0] + handleX, to[1]]
34606
+ });
34607
+ }
34608
+ return curve({
34609
+ to,
34610
+ cp1: [from[0] + handleX, from[1]],
34611
+ cp2: [to[0], to[1] + handleY]
34612
+ });
34613
+ };
34614
+ var clampCornerRadius = ({
34615
+ cornerRadius,
34616
+ width,
34617
+ height
34618
+ }) => {
34619
+ return Math.min(Math.max(cornerRadius, 0), width / 2, height / 2);
34620
+ };
34621
+ var makeSpark = ({
34622
+ width,
34623
+ height,
34624
+ edgeRoundness = 1,
34625
+ cornerRadius = 0
34626
+ }) => {
34627
+ const centerX = width / 2;
34628
+ const centerY = height / 2;
34629
+ const radius = clampCornerRadius({ cornerRadius, width, height });
34630
+ const top = [centerX, 0];
34631
+ const right = [width, centerY];
34632
+ const bottom = [centerX, height];
34633
+ const left = [0, centerY];
34634
+ const topRight = radius === 0 ? top : [centerX + radius, radius];
34635
+ const rightTop = radius === 0 ? right : [width - radius, centerY - radius];
34636
+ const rightBottom = radius === 0 ? right : [width - radius, centerY + radius];
34637
+ const bottomRight = radius === 0 ? bottom : [centerX + radius, height - radius];
34638
+ const bottomLeft = radius === 0 ? bottom : [centerX - radius, height - radius];
34639
+ const leftBottom = radius === 0 ? left : [radius, centerY + radius];
34640
+ const leftTop = radius === 0 ? left : [radius, centerY - radius];
34641
+ const topLeft = radius === 0 ? top : [centerX - radius, radius];
34642
+ const instructions = [
34643
+ {
34644
+ type: "M",
34645
+ x: topRight[0],
34646
+ y: topRight[1]
34647
+ },
34648
+ edge({
34649
+ from: topRight,
34650
+ to: rightTop,
34651
+ edgeRoundness,
34652
+ direction: "top-right"
34653
+ })
34654
+ ];
34655
+ if (radius > 0) {
34656
+ instructions.push(cap({ from: rightTop, to: rightBottom, radius, direction: "right" }));
34657
+ }
34658
+ instructions.push(edge({
34659
+ from: rightBottom,
34660
+ to: bottomRight,
34661
+ edgeRoundness,
34662
+ direction: "right-bottom"
34663
+ }));
34664
+ if (radius > 0) {
34665
+ instructions.push(cap({ from: bottomRight, to: bottomLeft, radius, direction: "bottom" }));
34666
+ }
34667
+ instructions.push(edge({
34668
+ from: bottomLeft,
34669
+ to: leftBottom,
34670
+ edgeRoundness,
34671
+ direction: "bottom-left"
34672
+ }));
34673
+ if (radius > 0) {
34674
+ instructions.push(cap({ from: leftBottom, to: leftTop, radius, direction: "left" }));
34675
+ }
34676
+ instructions.push(edge({
34677
+ from: leftTop,
34678
+ to: topLeft,
34679
+ edgeRoundness,
34680
+ direction: "left-top"
34681
+ }));
34682
+ if (radius > 0) {
34683
+ instructions.push(cap({ from: topLeft, to: topRight, radius, direction: "top" }));
34684
+ }
34685
+ instructions.push({ type: "Z" });
34686
+ return {
34687
+ path: serializeInstructions(instructions),
34688
+ width,
34689
+ height,
34690
+ transformOrigin: `${centerX} ${centerY}`,
34691
+ instructions
34692
+ };
34693
+ };
34694
+ var sparkSchema = makeShapeSchema({
34695
+ width: numberField({
34696
+ defaultValue: 100,
34697
+ description: "Width",
34698
+ min: 0
34699
+ }),
34700
+ height: numberField({
34701
+ defaultValue: 140,
34702
+ description: "Height",
34703
+ min: 0
34704
+ }),
34705
+ edgeRoundness: numberField({
34706
+ defaultValue: 1,
34707
+ description: "Edge Roundness",
34708
+ min: 0,
34709
+ step: 0.01
34710
+ }),
34711
+ cornerRadius: numberField({
34712
+ defaultValue: 0,
34713
+ description: "Corner Radius",
34714
+ min: 0
34715
+ })
34716
+ });
34717
+ var SparkInner = ({
34718
+ width,
34719
+ height,
34720
+ edgeRoundness,
34721
+ cornerRadius,
34722
+ ...props
34723
+ }) => {
34724
+ return /* @__PURE__ */ jsx102(RenderSvg, {
34725
+ defaultName: "<Spark>",
34726
+ documentationLink: "https://www.remotion.dev/docs/shapes/spark",
34727
+ ...makeSpark({ width, height, edgeRoundness, cornerRadius }),
34728
+ ...props
34729
+ });
34730
+ };
34731
+ var Spark = Interactive.withSchema({
34732
+ Component: SparkInner,
34733
+ componentIdentity: "dev.remotion.shapes.Spark",
34734
+ schema: sparkSchema,
34735
+ supportsEffects: true
34736
+ });
34737
+ Internals.addSequenceStackTraces(Spark);
34471
34738
  var star = ({
34472
34739
  centerX,
34473
34740
  centerY,
@@ -34558,7 +34825,7 @@ var StarInner = ({
34558
34825
  edgeRoundness,
34559
34826
  ...props
34560
34827
  }) => {
34561
- return /* @__PURE__ */ jsx102(RenderSvg, {
34828
+ return /* @__PURE__ */ jsx112(RenderSvg, {
34562
34829
  defaultName: "<Star>",
34563
34830
  documentationLink: "https://www.remotion.dev/docs/shapes/star",
34564
34831
  ...makeStar({
@@ -34571,7 +34838,7 @@ var StarInner = ({
34571
34838
  ...props
34572
34839
  });
34573
34840
  };
34574
- var Star = Internals.wrapInSchema({
34841
+ var Star = Interactive.withSchema({
34575
34842
  Component: StarInner,
34576
34843
  componentIdentity: "dev.remotion.shapes.Star",
34577
34844
  schema: starSchema,
@@ -34670,14 +34937,14 @@ var TriangleInner = ({
34670
34937
  cornerRadius,
34671
34938
  ...props
34672
34939
  }) => {
34673
- return /* @__PURE__ */ jsx112(RenderSvg, {
34940
+ return /* @__PURE__ */ jsx122(RenderSvg, {
34674
34941
  defaultName: "<Triangle>",
34675
34942
  documentationLink: "https://www.remotion.dev/docs/shapes/triangle",
34676
34943
  ...makeTriangle({ length: length2, direction, edgeRoundness, cornerRadius }),
34677
34944
  ...props
34678
34945
  });
34679
34946
  };
34680
- var Triangle = Internals.wrapInSchema({
34947
+ var Triangle = Interactive.withSchema({
34681
34948
  Component: TriangleInner,
34682
34949
  componentIdentity: "dev.remotion.shapes.Triangle",
34683
34950
  schema: triangleSchema,
@@ -35143,18 +35410,18 @@ function arcToCircle2({
35143
35410
  result.push(approximate_unit_arc2(theta1, delta_theta));
35144
35411
  theta1 += delta_theta;
35145
35412
  }
35146
- return result.map((curve) => {
35147
- for (let i = 0;i < curve.length; i += 2) {
35148
- let x = curve[i + 0];
35149
- let y = curve[i + 1];
35413
+ return result.map((curve2) => {
35414
+ for (let i = 0;i < curve2.length; i += 2) {
35415
+ let x = curve2[i + 0];
35416
+ let y = curve2[i + 1];
35150
35417
  x *= rx;
35151
35418
  y *= ry;
35152
35419
  const xp = cos_phi * x - sin_phi * y;
35153
35420
  const yp = sin_phi * x + cos_phi * y;
35154
- curve[i + 0] = xp + cc[0];
35155
- curve[i + 1] = yp + cc[1];
35421
+ curve2[i + 0] = xp + cc[0];
35422
+ curve2[i + 1] = yp + cc[1];
35156
35423
  }
35157
- return curve;
35424
+ return curve2;
35158
35425
  });
35159
35426
  }
35160
35427
  var removeATSHVQInstructions2 = (segments) => {
@@ -35761,7 +36028,7 @@ import { jsx as jsx93 } from "react/jsx-runtime";
35761
36028
  import React72 from "react";
35762
36029
  import { jsx as jsx103 } from "react/jsx-runtime";
35763
36030
  import { jsx as jsx113 } from "react/jsx-runtime";
35764
- import { jsx as jsx122 } from "react/jsx-runtime";
36031
+ import { jsx as jsx123 } from "react/jsx-runtime";
35765
36032
  import * as React36 from "react";
35766
36033
  import * as ReactDOM4 from "react-dom";
35767
36034
  import React112 from "react";
@@ -36575,11 +36842,11 @@ var Link = ({
36575
36842
  });
36576
36843
  };
36577
36844
  var PlanePaperIcon = (props) => {
36578
- return /* @__PURE__ */ jsx122("svg", {
36845
+ return /* @__PURE__ */ jsx123("svg", {
36579
36846
  xmlns: "http://www.w3.org/2000/svg",
36580
36847
  ...props,
36581
36848
  viewBox: "0 0 576 512",
36582
- children: /* @__PURE__ */ jsx122("path", {
36849
+ children: /* @__PURE__ */ jsx123("path", {
36583
36850
  fill: "currentcolor",
36584
36851
  d: "M169.9 280L94.9 448.6 461.2 280 169.9 280zm291.3-48L94.9 63.4 169.9 232 461.2 232zM34.8 465.6L128 256 34.8 46.4C33 42.2 32 37.6 32 33 32 14.8 46.7 0 64.8 0 69.5 0 74.2 1 78.5 3L554.2 222c13.3 6.1 21.8 19.4 21.8 34s-8.5 27.9-21.8 34L78.5 509c-4.3 2-9 3-13.7 3-18.1 0-32.8-14.8-32.8-33 0-4.6 1-9.2 2.8-13.4z"
36585
36852
  })