@remotion/promo-pages 4.0.476 → 4.0.477

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/team.js CHANGED
@@ -217,7 +217,7 @@ var TitleTeamCards = () => {
217
217
  import * as React23 from "react";
218
218
  import * as React3 from "react";
219
219
  import { Fragment as Fragment2, jsx as jsx44 } from "react/jsx-runtime";
220
- import React52, { useCallback as useCallback26, useRef as useRef210, useState as useState22 } from "react";
220
+ import React52, { useCallback as useCallback27, useRef as useRef210, useState as useState22 } from "react";
221
221
 
222
222
  // ../../node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
223
223
  function r(e) {
@@ -4354,6 +4354,7 @@ import { useContext as useContext8, useMemo as useMemo7 } from "react";
4354
4354
  import { jsx as jsx7 } from "react/jsx-runtime";
4355
4355
  import {
4356
4356
  forwardRef as forwardRef3,
4357
+ useCallback as useCallback6,
4357
4358
  useContext as useContext17,
4358
4359
  useEffect as useEffect3,
4359
4360
  useMemo as useMemo14,
@@ -4392,14 +4393,14 @@ import {
4392
4393
  useRef as useRef9,
4393
4394
  useState as useState6
4394
4395
  } from "react";
4395
- import React15, { useCallback as useCallback6, useImperativeHandle, useMemo as useMemo16, useRef as useRef8 } from "react";
4396
+ import React15, { useCallback as useCallback7, useImperativeHandle, useMemo as useMemo16, useRef as useRef8 } from "react";
4396
4397
  import { useEffect as useEffect4, useMemo as useMemo15, useRef as useRef7 } from "react";
4397
4398
  import { jsx as jsx13 } from "react/jsx-runtime";
4398
4399
  import { jsx as jsx14 } from "react/jsx-runtime";
4399
4400
  import { useContext as useContext18, useLayoutEffect as useLayoutEffect4, useState as useState8 } from "react";
4400
4401
  import {
4401
4402
  createContext as createContext17,
4402
- useCallback as useCallback7,
4403
+ useCallback as useCallback8,
4403
4404
  useImperativeHandle as useImperativeHandle3,
4404
4405
  useLayoutEffect as useLayoutEffect3,
4405
4406
  useMemo as useMemo17,
@@ -4407,7 +4408,7 @@ import {
4407
4408
  useState as useState7
4408
4409
  } from "react";
4409
4410
  import { jsx as jsx15 } from "react/jsx-runtime";
4410
- import { forwardRef as forwardRef7, useCallback as useCallback13, useContext as useContext30 } from "react";
4411
+ import { forwardRef as forwardRef7, useCallback as useCallback14, useContext as useContext30 } from "react";
4411
4412
  import React16, { createContext as createContext18, useMemo as useMemo18 } from "react";
4412
4413
  import { jsx as jsx16 } from "react/jsx-runtime";
4413
4414
  import { useContext as useContext19 } from "react";
@@ -4415,7 +4416,7 @@ import { createContext as createContext19, useEffect as useEffect6, useState as
4415
4416
  import { jsx as jsx17 } from "react/jsx-runtime";
4416
4417
  import { createContext as createContext20, useMemo as useMemo19, useReducer } from "react";
4417
4418
  import { jsx as jsx18 } from "react/jsx-runtime";
4418
- import { useCallback as useCallback12 } from "react";
4419
+ import { useCallback as useCallback13 } from "react";
4419
4420
  import React22, {
4420
4421
  forwardRef as forwardRef5,
4421
4422
  useContext as useContext28,
@@ -4429,7 +4430,7 @@ import { useContext as useContext21, useLayoutEffect as useLayoutEffect5, useRef
4429
4430
  import React19, {
4430
4431
  createContext as createContext21,
4431
4432
  createRef as createRef2,
4432
- useCallback as useCallback8,
4433
+ useCallback as useCallback9,
4433
4434
  useContext as useContext20,
4434
4435
  useEffect as useEffect7,
4435
4436
  useMemo as useMemo21,
@@ -4442,16 +4443,16 @@ import { useRef as useRef13 } from "react";
4442
4443
  import { useContext as useContext23, useEffect as useEffect8, useMemo as useMemo22, useState as useState11 } from "react";
4443
4444
  import { useContext as useContext22 } from "react";
4444
4445
  import {
4445
- useCallback as useCallback11,
4446
+ useCallback as useCallback12,
4446
4447
  useContext as useContext26,
4447
4448
  useEffect as useEffect12,
4448
4449
  useLayoutEffect as useLayoutEffect7,
4449
4450
  useRef as useRef18
4450
4451
  } from "react";
4451
- import { useCallback as useCallback10, useMemo as useMemo25, useRef as useRef16 } from "react";
4452
+ import { useCallback as useCallback11, useMemo as useMemo25, useRef as useRef16 } from "react";
4452
4453
  import { useContext as useContext25, useMemo as useMemo24 } from "react";
4453
4454
  import React20, {
4454
- useCallback as useCallback9,
4455
+ useCallback as useCallback10,
4455
4456
  useContext as useContext24,
4456
4457
  useEffect as useEffect9,
4457
4458
  useLayoutEffect as useLayoutEffect6,
@@ -4479,7 +4480,7 @@ import { jsx as jsx222 } from "react/jsx-runtime";
4479
4480
  import { jsx as jsx23 } from "react/jsx-runtime";
4480
4481
  import {
4481
4482
  forwardRef as forwardRef8,
4482
- useCallback as useCallback14,
4483
+ useCallback as useCallback15,
4483
4484
  useEffect as useEffect16,
4484
4485
  useImperativeHandle as useImperativeHandle6,
4485
4486
  useMemo as useMemo29,
@@ -4490,7 +4491,7 @@ import { jsx as jsx24 } from "react/jsx-runtime";
4490
4491
  import {
4491
4492
  createContext as createContext23,
4492
4493
  forwardRef as forwardRef9,
4493
- useCallback as useCallback15,
4494
+ useCallback as useCallback16,
4494
4495
  useContext as useContext31,
4495
4496
  useLayoutEffect as useLayoutEffect9,
4496
4497
  useMemo as useMemo30,
@@ -4499,7 +4500,7 @@ import {
4499
4500
  import { jsx as jsx25 } from "react/jsx-runtime";
4500
4501
  import {
4501
4502
  forwardRef as forwardRef10,
4502
- useCallback as useCallback16,
4503
+ useCallback as useCallback17,
4503
4504
  useContext as useContext32,
4504
4505
  useEffect as useEffect17,
4505
4506
  useImperativeHandle as useImperativeHandle7,
@@ -4508,16 +4509,16 @@ import {
4508
4509
  useState as useState16
4509
4510
  } from "react";
4510
4511
  import { jsx as jsx26 } from "react/jsx-runtime";
4511
- import { forwardRef as forwardRef11, useCallback as useCallback17, useState as useState17 } from "react";
4512
+ import { forwardRef as forwardRef11, useCallback as useCallback18, useState as useState17 } from "react";
4512
4513
  import { jsx as jsx27 } from "react/jsx-runtime";
4513
- import { useCallback as useCallback18, useContext as useContext33, useLayoutEffect as useLayoutEffect10, useRef as useRef24 } from "react";
4514
+ import { useCallback as useCallback19, useContext as useContext33, useLayoutEffect as useLayoutEffect10, useRef as useRef24 } from "react";
4514
4515
  import { jsx as jsx28 } from "react/jsx-runtime";
4515
- import React29, { forwardRef as forwardRef12, useCallback as useCallback19, useRef as useRef25 } from "react";
4516
+ import React29, { forwardRef as forwardRef12, useCallback as useCallback20, useRef as useRef25 } from "react";
4516
4517
  import { jsx as jsx29 } from "react/jsx-runtime";
4517
4518
  import { createRef as createRef3 } from "react";
4518
4519
  import React30 from "react";
4519
4520
  import {
4520
- useCallback as useCallback20,
4521
+ useCallback as useCallback21,
4521
4522
  useImperativeHandle as useImperativeHandle8,
4522
4523
  useMemo as useMemo32,
4523
4524
  useRef as useRef26,
@@ -4532,9 +4533,9 @@ import { jsx as jsx322 } from "react/jsx-runtime";
4532
4533
  import React33 from "react";
4533
4534
  import React34, { createContext as createContext25 } from "react";
4534
4535
  import React35, { useContext as useContext35 } from "react";
4535
- import { useCallback as useCallback23 } from "react";
4536
+ import { useCallback as useCallback24 } from "react";
4536
4537
  import {
4537
- useCallback as useCallback21,
4538
+ useCallback as useCallback22,
4538
4539
  useContext as useContext36,
4539
4540
  useEffect as useEffect18,
4540
4541
  useLayoutEffect as useLayoutEffect11,
@@ -4544,7 +4545,7 @@ import {
4544
4545
  import { jsx as jsx33 } from "react/jsx-runtime";
4545
4546
  import React37, {
4546
4547
  forwardRef as forwardRef13,
4547
- useCallback as useCallback22,
4548
+ useCallback as useCallback23,
4548
4549
  useContext as useContext37,
4549
4550
  useEffect as useEffect20,
4550
4551
  useImperativeHandle as useImperativeHandle9,
@@ -4565,7 +4566,7 @@ import {
4565
4566
  import React40 from "react";
4566
4567
  import { jsx as jsx37 } from "react/jsx-runtime";
4567
4568
  import React42 from "react";
4568
- import { forwardRef as forwardRef16, useCallback as useCallback24, useContext as useContext39 } from "react";
4569
+ import { forwardRef as forwardRef16, useCallback as useCallback25, useContext as useContext39 } from "react";
4569
4570
  import {
4570
4571
  forwardRef as forwardRef15,
4571
4572
  useContext as useContext38,
@@ -5745,7 +5746,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
5745
5746
  var addSequenceStackTraces = (component) => {
5746
5747
  componentsToAddStacksTo.push(component);
5747
5748
  };
5748
- var VERSION = "4.0.476";
5749
+ var VERSION = "4.0.477";
5749
5750
  var checkMultipleRemotionVersions = () => {
5750
5751
  if (typeof globalThis === "undefined") {
5751
5752
  return;
@@ -6204,10 +6205,17 @@ var fromField = {
6204
6205
  step: 1,
6205
6206
  hiddenFromList: true
6206
6207
  };
6208
+ var freezeField = {
6209
+ type: "number",
6210
+ default: null,
6211
+ step: 1,
6212
+ hiddenFromList: true
6213
+ };
6207
6214
  var sequenceSchema = extendSchemaWithSequenceName({
6208
6215
  hidden: hiddenField,
6209
6216
  showInTimeline: showInTimelineField,
6210
6217
  from: fromField,
6218
+ freeze: freezeField,
6211
6219
  durationInFrames: durationInFramesField,
6212
6220
  layout: {
6213
6221
  type: "enum",
@@ -6222,6 +6230,7 @@ var sequenceSchema = extendSchemaWithSequenceName({
6222
6230
  var sequenceSchemaWithoutFrom = extendSchemaWithSequenceName({
6223
6231
  hidden: hiddenField,
6224
6232
  showInTimeline: showInTimelineField,
6233
+ freeze: freezeField,
6225
6234
  durationInFrames: durationInFramesField,
6226
6235
  layout: sequenceSchema.layout
6227
6236
  });
@@ -8413,6 +8422,7 @@ var mergeValues = ({
8413
8422
  var stackToOverrideMap = {};
8414
8423
  var wrapInSchema = ({
8415
8424
  Component,
8425
+ componentIdentity,
8416
8426
  schema,
8417
8427
  supportsEffects
8418
8428
  }) => {
@@ -8459,7 +8469,8 @@ var wrapInSchema = ({
8459
8469
  schema: schemaWithSequenceName,
8460
8470
  currentRuntimeValueDotNotation,
8461
8471
  overrideId,
8462
- supportsEffects
8472
+ supportsEffects,
8473
+ componentIdentity
8463
8474
  };
8464
8475
  }, [currentRuntimeValueDotNotation, overrideId]);
8465
8476
  const { merged: valuesDotNotation, propsToDelete } = useMemo13(() => {
@@ -8496,6 +8507,7 @@ var wrapInSchema = ({
8496
8507
  var EMPTY_EFFECTS = [];
8497
8508
  var RegularSequenceRefForwardingFunction = ({
8498
8509
  from = 0,
8510
+ freeze,
8499
8511
  durationInFrames = Infinity,
8500
8512
  children,
8501
8513
  name,
@@ -8511,7 +8523,7 @@ var RegularSequenceRefForwardingFunction = ({
8511
8523
  _remotionInternalPremountDisplay: premountDisplay,
8512
8524
  _remotionInternalPostmountDisplay: postmountDisplay,
8513
8525
  _remotionInternalIsMedia: isMedia,
8514
- _remotionInternalRefForOutline: refForOutline,
8526
+ _remotionInternalRefForOutline: passedRefForOutline,
8515
8527
  ...other
8516
8528
  }, ref) => {
8517
8529
  const { layout = "absolute-fill" } = other;
@@ -8539,11 +8551,24 @@ var RegularSequenceRefForwardingFunction = ({
8539
8551
  if (!Number.isFinite(from)) {
8540
8552
  throw new TypeError(`The "from" prop of a sequence must be finite, but got ${from}.`);
8541
8553
  }
8554
+ if (typeof freeze !== "undefined" && freeze !== null) {
8555
+ if (typeof freeze !== "number") {
8556
+ throw new TypeError(`The "freeze" prop of <Sequence /> must be a number, but is of type ${typeof freeze}.`);
8557
+ }
8558
+ if (Number.isNaN(freeze)) {
8559
+ throw new TypeError(`The "freeze" prop of <Sequence /> must be a real number, but it is NaN.`);
8560
+ }
8561
+ if (!Number.isFinite(freeze)) {
8562
+ throw new TypeError(`The "freeze" prop of <Sequence /> must be finite, but it is ${freeze}.`);
8563
+ }
8564
+ }
8542
8565
  const absoluteFrame = useTimelinePosition();
8543
8566
  const videoConfig = useVideoConfig();
8544
8567
  const parentSequenceDuration = parentSequence ? Math.min(parentSequence.durationInFrames - from, durationInFrames) : durationInFrames;
8545
8568
  const actualDurationInFrames = Math.max(0, Math.min(videoConfig.durationInFrames - from, parentSequenceDuration));
8546
8569
  const { registerSequence, unregisterSequence } = useContext17(SequenceManager);
8570
+ const wrapperRefForOutline = useRef6(null);
8571
+ const refForOutline = other.layout === "none" ? passedRefForOutline ?? null : passedRefForOutline ?? wrapperRefForOutline;
8547
8572
  const premounting = useMemo14(() => {
8548
8573
  return parentSequence?.premounting || Boolean(other._remotionInternalIsPremounting);
8549
8574
  }, [other._remotionInternalIsPremounting, parentSequence?.premounting]);
@@ -8702,7 +8727,19 @@ var RegularSequenceRefForwardingFunction = ({
8702
8727
  ]);
8703
8728
  const endThreshold = Math.ceil(cumulatedFrom + from + durationInFrames - 1);
8704
8729
  const content = absoluteFrame < cumulatedFrom + from ? null : absoluteFrame > endThreshold ? null : children;
8730
+ const frozenContent = content === null || typeof freeze === "undefined" || freeze === null ? content : /* @__PURE__ */ jsx12(Freeze, {
8731
+ frame: freeze,
8732
+ children: content
8733
+ });
8705
8734
  const styleIfThere = other.layout === "none" ? undefined : other.style;
8735
+ const sequenceRef = useCallback6((node) => {
8736
+ wrapperRefForOutline.current = node;
8737
+ if (typeof ref === "function") {
8738
+ ref(node);
8739
+ } else if (ref) {
8740
+ ref.current = node;
8741
+ }
8742
+ }, [ref]);
8706
8743
  const defaultStyle = useMemo14(() => {
8707
8744
  return {
8708
8745
  flexDirection: undefined,
@@ -8719,11 +8756,11 @@ var RegularSequenceRefForwardingFunction = ({
8719
8756
  }
8720
8757
  return /* @__PURE__ */ jsx12(SequenceContext.Provider, {
8721
8758
  value: contextValue,
8722
- children: content === null ? null : other.layout === "none" ? content : /* @__PURE__ */ jsx12(AbsoluteFill, {
8723
- ref,
8759
+ children: frozenContent === null ? null : other.layout === "none" ? frozenContent : /* @__PURE__ */ jsx12(AbsoluteFill, {
8760
+ ref: sequenceRef,
8724
8761
  style: defaultStyle,
8725
8762
  className: other.className,
8726
- children: content
8763
+ children: frozenContent
8727
8764
  })
8728
8765
  });
8729
8766
  };
@@ -8803,11 +8840,13 @@ var SequenceInner = forwardRef3(SequenceRefForwardingFunction);
8803
8840
  var SequenceWithoutSchema = SequenceInner;
8804
8841
  var Sequence = wrapInSchema({
8805
8842
  Component: SequenceInner,
8843
+ componentIdentity: "dev.remotion.remotion.Sequence",
8806
8844
  schema: sequenceSchema,
8807
8845
  supportsEffects: false
8808
8846
  });
8809
8847
  var SequenceWithoutFrom = wrapInSchema({
8810
8848
  Component: SequenceInner,
8849
+ componentIdentity: null,
8811
8850
  schema: sequenceSchemaWithoutFrom,
8812
8851
  supportsEffects: false
8813
8852
  });
@@ -9125,7 +9164,7 @@ var CanvasRefForwardingFunction = ({ width, height, fit, className, style, effec
9125
9164
  }
9126
9165
  return document.createElement("canvas");
9127
9166
  }, []);
9128
- const draw = useCallback6((imageData) => {
9167
+ const draw = useCallback7((imageData) => {
9129
9168
  const canvas = canvasRef.current;
9130
9169
  const canvasWidth = width ?? imageData.displayWidth;
9131
9170
  const canvasHeight = height ?? imageData.displayHeight;
@@ -9346,6 +9385,7 @@ var resolveAnimatedImageSource = (src) => {
9346
9385
  var animatedImageSchema = {
9347
9386
  durationInFrames: durationInFramesField,
9348
9387
  from: fromField,
9388
+ freeze: freezeField,
9349
9389
  playbackRate: {
9350
9390
  type: "number",
9351
9391
  min: 0,
@@ -9545,6 +9585,7 @@ var AnimatedImageInner = ({
9545
9585
  };
9546
9586
  var AnimatedImage = wrapInSchema({
9547
9587
  Component: AnimatedImageInner,
9588
+ componentIdentity: "dev.remotion.remotion.AnimatedImage",
9548
9589
  schema: animatedImageSchema,
9549
9590
  supportsEffects: true
9550
9591
  });
@@ -9591,7 +9632,7 @@ var RenderAssetManager = createContext17({
9591
9632
  var RenderAssetManagerProvider = ({ children, collectAssets }) => {
9592
9633
  const [renderAssets, setRenderAssets] = useState7([]);
9593
9634
  const renderAssetsRef = useRef10([]);
9594
- const registerRenderAsset = useCallback7((renderAsset) => {
9635
+ const registerRenderAsset = useCallback8((renderAsset) => {
9595
9636
  validateRenderAsset(renderAsset);
9596
9637
  renderAssetsRef.current = [...renderAssetsRef.current, renderAsset];
9597
9638
  setRenderAssets(renderAssetsRef.current);
@@ -9608,7 +9649,7 @@ var RenderAssetManagerProvider = ({ children, collectAssets }) => {
9608
9649
  };
9609
9650
  }, []);
9610
9651
  }
9611
- const unregisterRenderAsset = useCallback7((id) => {
9652
+ const unregisterRenderAsset = useCallback8((id) => {
9612
9653
  renderAssetsRef.current = renderAssetsRef.current.filter((a2) => a2.id !== id);
9613
9654
  setRenderAssets(renderAssetsRef.current);
9614
9655
  }, []);
@@ -10413,7 +10454,7 @@ var SharedAudioContextProvider = ({ children, audioLatencyHint, audioEnabled, pr
10413
10454
  }, []);
10414
10455
  const prevEndTimes = useRef12({ scheduledEndTime: null, mediaEndTime: null });
10415
10456
  const nodesToResume = useRef12(new Map);
10416
- const unscheduleAudioNode = useCallback8((node) => {
10457
+ const unscheduleAudioNode = useCallback9((node) => {
10417
10458
  nodesToResume.current.delete(node);
10418
10459
  }, []);
10419
10460
  const scheduleAudioNode = useMemo21(() => {
@@ -10467,7 +10508,7 @@ var SharedAudioContextProvider = ({ children, audioLatencyHint, audioEnabled, pr
10467
10508
  };
10468
10509
  };
10469
10510
  }, [ctxAndGain, logLevel]);
10470
- const resume = useCallback8(() => {
10511
+ const resume = useCallback9(() => {
10471
10512
  if (!ctxAndGain) {
10472
10513
  return Promise.resolve();
10473
10514
  }
@@ -10494,10 +10535,10 @@ var SharedAudioContextProvider = ({ children, audioLatencyHint, audioEnabled, pr
10494
10535
  });
10495
10536
  return resumePromise.catch(() => {});
10496
10537
  }, [ctxAndGain, logLevel]);
10497
- const getIsResumingAudioContext = useCallback8(() => {
10538
+ const getIsResumingAudioContext = useCallback9(() => {
10498
10539
  return isResuming.current;
10499
10540
  }, []);
10500
- const suspend = useCallback8(() => {
10541
+ const suspend = useCallback9(() => {
10501
10542
  if (!ctxAndGain) {
10502
10543
  return Promise.resolve();
10503
10544
  }
@@ -10571,7 +10612,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
10571
10612
  };
10572
10613
  }, [refs]);
10573
10614
  const takenAudios = useRef12(new Array(numberOfAudioTags).fill(false));
10574
- const rerenderAudios = useCallback8(() => {
10615
+ const rerenderAudios = useCallback9(() => {
10575
10616
  refs.forEach(({ ref, id }) => {
10576
10617
  const data = audios.current?.find((a2) => a2.id === id);
10577
10618
  const { current } = ref;
@@ -10592,7 +10633,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
10592
10633
  });
10593
10634
  });
10594
10635
  }, [refs]);
10595
- const registerAudio = useCallback8((options) => {
10636
+ const registerAudio = useCallback9((options) => {
10596
10637
  const { aud, audioId, premounting, postmounting } = options;
10597
10638
  const found = audios.current?.find((a2) => a2.audioId === audioId);
10598
10639
  if (found) {
@@ -10621,7 +10662,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
10621
10662
  rerenderAudios();
10622
10663
  return newElem;
10623
10664
  }, [numberOfAudioTags, refs, rerenderAudios]);
10624
- const unregisterAudio = useCallback8((id) => {
10665
+ const unregisterAudio = useCallback9((id) => {
10625
10666
  const cloned = [...takenAudios.current];
10626
10667
  const index = refs.findIndex((r2) => r2.id === id);
10627
10668
  if (index === -1) {
@@ -10632,7 +10673,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
10632
10673
  audios.current = audios.current?.filter((a2) => a2.id !== id);
10633
10674
  rerenderAudios();
10634
10675
  }, [refs, rerenderAudios]);
10635
- const updateAudio = useCallback8(({
10676
+ const updateAudio = useCallback9(({
10636
10677
  aud,
10637
10678
  audioId,
10638
10679
  id,
@@ -10666,7 +10707,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
10666
10707
  rerenderAudios();
10667
10708
  }
10668
10709
  }, [rerenderAudios]);
10669
- const playAllAudios = useCallback8(() => {
10710
+ const playAllAudios = useCallback9(() => {
10670
10711
  refs.forEach((ref) => {
10671
10712
  const audio = audios.current.find((a2) => a2.el === ref.ref);
10672
10713
  if (audio?.premounting) {
@@ -11214,7 +11255,7 @@ var useBufferManager = (logLevel, mountTime) => {
11214
11255
  const env = useRemotionEnvironment();
11215
11256
  const rendering = env.isRendering;
11216
11257
  const buffering = useRef15(false);
11217
- const addBlock = useCallback9((block) => {
11258
+ const addBlock = useCallback10((block) => {
11218
11259
  if (rendering) {
11219
11260
  return {
11220
11261
  unblock: () => {
@@ -11240,7 +11281,7 @@ var useBufferManager = (logLevel, mountTime) => {
11240
11281
  }
11241
11282
  };
11242
11283
  }, [rendering]);
11243
- const listenForBuffering = useCallback9((callback) => {
11284
+ const listenForBuffering = useCallback10((callback) => {
11244
11285
  setOnBufferingCallbacks((c2) => [...c2, callback]);
11245
11286
  return {
11246
11287
  remove: () => {
@@ -11248,7 +11289,7 @@ var useBufferManager = (logLevel, mountTime) => {
11248
11289
  }
11249
11290
  };
11250
11291
  }, []);
11251
- const listenForResume = useCallback9((callback) => {
11292
+ const listenForResume = useCallback10((callback) => {
11252
11293
  setOnResumeCallbacks((c2) => [...c2, callback]);
11253
11294
  return {
11254
11295
  remove: () => {
@@ -11362,7 +11403,7 @@ var useBufferUntilFirstFrame = ({
11362
11403
  }) => {
11363
11404
  const bufferingRef = useRef16(false);
11364
11405
  const { delayPlayback } = useBufferState();
11365
- const bufferUntilFirstFrame = useCallback10((requestedTime) => {
11406
+ const bufferUntilFirstFrame = useCallback11((requestedTime) => {
11366
11407
  if (mediaType !== "video") {
11367
11408
  return;
11368
11409
  }
@@ -11752,7 +11793,7 @@ var useMediaPlayback = ({
11752
11793
  throw new Error("useMediaPlayback must be used inside a <BufferingContext>");
11753
11794
  }
11754
11795
  const isVariableFpsVideoMap = useRef18({});
11755
- const onVariableFpsVideoDetected = useCallback11(() => {
11796
+ const onVariableFpsVideoDetected = useCallback12(() => {
11756
11797
  if (!src) {
11757
11798
  return;
11758
11799
  }
@@ -12143,7 +12184,7 @@ var AudioForDevelopmentForwardRefFunction = (props, ref) => {
12143
12184
  premounting: Boolean(sequenceContext?.premounting),
12144
12185
  postmounting: Boolean(sequenceContext?.postmounting)
12145
12186
  });
12146
- const getStack = useCallback12(() => {
12187
+ const getStack = useCallback13(() => {
12147
12188
  return _remotionInternalStack ?? null;
12148
12189
  }, [_remotionInternalStack]);
12149
12190
  useMediaInTimeline({
@@ -12389,7 +12430,7 @@ var AudioRefForwardingFunction = (props, ref) => {
12389
12430
  throw new TypeError(`The \`<Html5Audio>\` tag requires a string for \`src\`, but got ${JSON.stringify(props.src)} instead.`);
12390
12431
  }
12391
12432
  const preloadedSrc = usePreload(props.src);
12392
- const onError = useCallback13((e) => {
12433
+ const onError = useCallback14((e) => {
12393
12434
  console.log(e.currentTarget.error);
12394
12435
  const errMessage = `Could not play audio with src ${preloadedSrc}: ${e.currentTarget.error}. See https://remotion.dev/docs/media-playback-error for help.`;
12395
12436
  if (loop) {
@@ -12403,7 +12444,7 @@ var AudioRefForwardingFunction = (props, ref) => {
12403
12444
  console.warn(errMessage);
12404
12445
  }
12405
12446
  }, [loop, onRemotionError, preloadedSrc]);
12406
- const onDuration = useCallback13((src, durationInSeconds) => {
12447
+ const onDuration = useCallback14((src, durationInSeconds) => {
12407
12448
  setDurations({ type: "got-duration", durationInSeconds, src });
12408
12449
  }, [setDurations]);
12409
12450
  const durationFetched = durations[getAbsoluteSrc(preloadedSrc)] ?? durations[getAbsoluteSrc(props.src)];
@@ -12495,6 +12536,7 @@ var resolveSolidPixelDensity = (pixelDensity) => {
12495
12536
  var solidSchema = {
12496
12537
  durationInFrames: durationInFramesField,
12497
12538
  from: fromField,
12539
+ freeze: freezeField,
12498
12540
  color: {
12499
12541
  type: "color",
12500
12542
  default: "transparent",
@@ -12549,7 +12591,7 @@ var SolidInner = ({
12549
12591
  return canvas;
12550
12592
  }, []);
12551
12593
  const chainState = useEffectChainState();
12552
- const canvasRef = useCallback14((canvas) => {
12594
+ const canvasRef = useCallback15((canvas) => {
12553
12595
  setOutputCanvas(canvas);
12554
12596
  if (typeof reference === "function") {
12555
12597
  reference(canvas);
@@ -12633,6 +12675,7 @@ var SolidOuter = forwardRef8(({
12633
12675
  style,
12634
12676
  name,
12635
12677
  from,
12678
+ freeze,
12636
12679
  hidden,
12637
12680
  showInTimeline,
12638
12681
  pixelDensity,
@@ -12646,6 +12689,7 @@ var SolidOuter = forwardRef8(({
12646
12689
  return /* @__PURE__ */ jsx24(Sequence, {
12647
12690
  layout: "none",
12648
12691
  from,
12692
+ freeze,
12649
12693
  hidden,
12650
12694
  showInTimeline,
12651
12695
  _experimentalControls: controls,
@@ -12670,6 +12714,7 @@ var SolidOuter = forwardRef8(({
12670
12714
  });
12671
12715
  var Solid = wrapInSchema({
12672
12716
  Component: SolidOuter,
12717
+ componentIdentity: "dev.remotion.remotion.Solid",
12673
12718
  schema: solidSchema,
12674
12719
  supportsEffects: true
12675
12720
  });
@@ -12759,7 +12804,7 @@ var HtmlInCanvasContent = forwardRef9(({
12759
12804
  const offscreenRef = useRef22(null);
12760
12805
  const divRef = useRef22(null);
12761
12806
  const canvasSizeKey = `${width}x${height}@${resolvedPixelDensity}`;
12762
- const setLayoutCanvasRef = useCallback15((node) => {
12807
+ const setLayoutCanvasRef = useCallback16((node) => {
12763
12808
  canvas2dRef.current = node;
12764
12809
  if (typeof ref === "function") {
12765
12810
  ref(node);
@@ -12781,7 +12826,7 @@ var HtmlInCanvasContent = forwardRef9(({
12781
12826
  const initializedRef = useRef22(false);
12782
12827
  const onInitCleanupRef = useRef22(null);
12783
12828
  const unmountedRef = useRef22(false);
12784
- const onPaintCb = useCallback15(async () => {
12829
+ const onPaintCb = useCallback16(async () => {
12785
12830
  const element = divRef.current;
12786
12831
  if (!element) {
12787
12832
  throw new Error("Canvas or scene element not found");
@@ -12954,7 +12999,7 @@ var HtmlInCanvasInner = forwardRef9(({
12954
12999
  const resolvedDuration = durationInFrames ?? videoDuration;
12955
13000
  const memoizedEffectDefinitions = useMemoizedEffectDefinitions(effects);
12956
13001
  const actualRef = useRef22(null);
12957
- const setCanvasRef = useCallback15((node) => {
13002
+ const setCanvasRef = useCallback16((node) => {
12958
13003
  actualRef.current = node;
12959
13004
  if (typeof ref === "function") {
12960
13005
  ref(node);
@@ -12989,11 +13034,13 @@ HtmlInCanvasInner.displayName = "HtmlInCanvas";
12989
13034
  var htmlInCanvasSchema = {
12990
13035
  durationInFrames: durationInFramesField,
12991
13036
  from: fromField,
13037
+ freeze: freezeField,
12992
13038
  ...sequenceVisualStyleSchema,
12993
13039
  hidden: hiddenField
12994
13040
  };
12995
13041
  var HtmlInCanvasWrapped = wrapInSchema({
12996
13042
  Component: HtmlInCanvasInner,
13043
+ componentIdentity: "dev.remotion.remotion.HtmlInCanvas",
12997
13044
  schema: htmlInCanvasSchema,
12998
13045
  supportsEffects: true
12999
13046
  });
@@ -13011,6 +13058,7 @@ function truncateSrcForLabel(src) {
13011
13058
  var canvasImageSchema = {
13012
13059
  durationInFrames: durationInFramesField,
13013
13060
  from: fromField,
13061
+ freeze: freezeField,
13014
13062
  fit: {
13015
13063
  type: "enum",
13016
13064
  default: "fill",
@@ -13116,7 +13164,7 @@ var CanvasImageContent = forwardRef10(({
13116
13164
  }
13117
13165
  return document.createElement("canvas");
13118
13166
  }, []);
13119
- const canvasRef = useCallback16((canvas) => {
13167
+ const canvasRef = useCallback17((canvas) => {
13120
13168
  setOutputCanvas(canvas);
13121
13169
  if (refForOutline) {
13122
13170
  refForOutline.current = canvas;
@@ -13263,6 +13311,7 @@ var CanvasImageInner = forwardRef10(({
13263
13311
  delayRenderTimeoutInMilliseconds,
13264
13312
  durationInFrames,
13265
13313
  from,
13314
+ freeze,
13266
13315
  hidden,
13267
13316
  name,
13268
13317
  showInTimeline,
@@ -13284,6 +13333,7 @@ var CanvasImageInner = forwardRef10(({
13284
13333
  layout: "none",
13285
13334
  from: from ?? 0,
13286
13335
  durationInFrames: durationInFrames ?? Infinity,
13336
+ freeze,
13287
13337
  hidden,
13288
13338
  showInTimeline: showInTimeline ?? true,
13289
13339
  name: name ?? "<CanvasImage>",
@@ -13316,6 +13366,7 @@ var CanvasImageInner = forwardRef10(({
13316
13366
  });
13317
13367
  var CanvasImage = wrapInSchema({
13318
13368
  Component: CanvasImageInner,
13369
+ componentIdentity: "dev.remotion.remotion.CanvasImage",
13319
13370
  schema: canvasImageSchema,
13320
13371
  supportsEffects: true
13321
13372
  });
@@ -13333,11 +13384,11 @@ var IFrameRefForwarding = ({
13333
13384
  retries: delayRenderRetries ?? undefined,
13334
13385
  timeoutInMilliseconds: delayRenderTimeoutInMilliseconds ?? undefined
13335
13386
  }));
13336
- const didLoad = useCallback17((e) => {
13387
+ const didLoad = useCallback18((e) => {
13337
13388
  continueRender2(handle);
13338
13389
  onLoad?.(e);
13339
13390
  }, [handle, onLoad, continueRender2]);
13340
- const didGetError = useCallback17((e) => {
13391
+ const didGetError = useCallback18((e) => {
13341
13392
  continueRender2(handle);
13342
13393
  if (onError) {
13343
13394
  onError(e);
@@ -13379,7 +13430,7 @@ var ImgContent = ({
13379
13430
  if (!_propsValid) {
13380
13431
  throw new Error("typecheck error");
13381
13432
  }
13382
- const imageCallbackRef = useCallback18((img) => {
13433
+ const imageCallbackRef = useCallback19((img) => {
13383
13434
  imageRef.current = img;
13384
13435
  refForOutline.current = img;
13385
13436
  if (typeof ref === "function") {
@@ -13389,7 +13440,7 @@ var ImgContent = ({
13389
13440
  }
13390
13441
  }, [ref, refForOutline]);
13391
13442
  const actualSrc = usePreload(src);
13392
- const retryIn = useCallback18((timeout) => {
13443
+ const retryIn = useCallback19((timeout) => {
13393
13444
  if (!imageRef.current) {
13394
13445
  return;
13395
13446
  }
@@ -13407,7 +13458,7 @@ var ImgContent = ({
13407
13458
  }, timeout);
13408
13459
  }, []);
13409
13460
  const { delayRender: delayRender2, continueRender: continueRender2, cancelRender: cancelRender2 } = useDelayRender();
13410
- const didGetError = useCallback18((e) => {
13461
+ const didGetError = useCallback19((e) => {
13411
13462
  if (!errors.current) {
13412
13463
  return;
13413
13464
  }
@@ -13517,6 +13568,7 @@ var NativeImgInner = ({
13517
13568
  src,
13518
13569
  from,
13519
13570
  durationInFrames,
13571
+ freeze,
13520
13572
  _experimentalControls: controls,
13521
13573
  _remotionInternalRefForOutline: refForOutline,
13522
13574
  ...props2
@@ -13528,6 +13580,7 @@ var NativeImgInner = ({
13528
13580
  layout: "none",
13529
13581
  from: from ?? 0,
13530
13582
  durationInFrames: durationInFrames ?? Infinity,
13583
+ freeze,
13531
13584
  _remotionInternalStack: stack,
13532
13585
  _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/img",
13533
13586
  _remotionInternalIsMedia: { type: "image", src },
@@ -13547,6 +13600,7 @@ var CanvasImageWithPrivateProps = CanvasImage;
13547
13600
  var imgSchema = {
13548
13601
  durationInFrames: durationInFramesField,
13549
13602
  from: fromField,
13603
+ freeze: freezeField,
13550
13604
  ...sequenceVisualStyleSchema,
13551
13605
  hidden: hiddenField
13552
13606
  };
@@ -13602,6 +13656,7 @@ var ImgInner = ({
13602
13656
  src,
13603
13657
  from,
13604
13658
  durationInFrames,
13659
+ freeze,
13605
13660
  _experimentalControls: controls,
13606
13661
  width,
13607
13662
  height,
@@ -13626,6 +13681,7 @@ var ImgInner = ({
13626
13681
  src,
13627
13682
  from,
13628
13683
  durationInFrames,
13684
+ freeze,
13629
13685
  _experimentalControls: controls,
13630
13686
  width,
13631
13687
  height,
@@ -13667,6 +13723,7 @@ var ImgInner = ({
13667
13723
  delayRenderTimeoutInMilliseconds,
13668
13724
  from,
13669
13725
  durationInFrames,
13726
+ freeze,
13670
13727
  hidden,
13671
13728
  name: name ?? "<Img>",
13672
13729
  showInTimeline,
@@ -13679,6 +13736,7 @@ var ImgInner = ({
13679
13736
  };
13680
13737
  var Img = wrapInSchema({
13681
13738
  Component: ImgInner,
13739
+ componentIdentity: "dev.remotion.remotion.Img",
13682
13740
  schema: imgSchema,
13683
13741
  supportsEffects: true
13684
13742
  });
@@ -13686,6 +13744,7 @@ addSequenceStackTraces(Img);
13686
13744
  var interactiveElementSchema = {
13687
13745
  durationInFrames: durationInFramesField,
13688
13746
  from: fromField,
13747
+ freeze: freezeField,
13689
13748
  ...sequenceVisualStyleSchema,
13690
13749
  hidden: hiddenField
13691
13750
  };
@@ -13701,6 +13760,7 @@ var makeInteractiveElement = (tag, displayName) => {
13701
13760
  const {
13702
13761
  durationInFrames,
13703
13762
  from,
13763
+ freeze,
13704
13764
  hidden,
13705
13765
  name,
13706
13766
  showInTimeline,
@@ -13709,7 +13769,7 @@ var makeInteractiveElement = (tag, displayName) => {
13709
13769
  ...props2
13710
13770
  } = propsWithControls;
13711
13771
  const refForOutline = useRef25(null);
13712
- const callbackRef = useCallback19((element) => {
13772
+ const callbackRef = useCallback20((element) => {
13713
13773
  refForOutline.current = element;
13714
13774
  setRef(ref, element);
13715
13775
  }, [ref]);
@@ -13717,6 +13777,7 @@ var makeInteractiveElement = (tag, displayName) => {
13717
13777
  layout: "none",
13718
13778
  from: from ?? 0,
13719
13779
  durationInFrames: durationInFrames ?? Infinity,
13780
+ freeze,
13720
13781
  hidden,
13721
13782
  name: name ?? displayName,
13722
13783
  showInTimeline: showInTimeline ?? true,
@@ -13733,6 +13794,7 @@ var makeInteractiveElement = (tag, displayName) => {
13733
13794
  Inner.displayName = displayName;
13734
13795
  const Wrapped = wrapInSchema({
13735
13796
  Component: Inner,
13797
+ componentIdentity: `dev.remotion.remotion.${displayName.slice(1, -1)}`,
13736
13798
  schema: interactiveElementSchema,
13737
13799
  supportsEffects: false
13738
13800
  });
@@ -13789,14 +13851,14 @@ var CompositionManagerProvider = ({
13789
13851
  const [canvasContent, setCanvasContent] = useState18(initialCanvasContent);
13790
13852
  const [compositions, setCompositions] = useState18(initialCompositions);
13791
13853
  const currentcompositionsRef = useRef26(compositions);
13792
- const updateCompositions = useCallback20((updateComps) => {
13854
+ const updateCompositions = useCallback21((updateComps) => {
13793
13855
  setCompositions((comps) => {
13794
13856
  const updated = updateComps(comps);
13795
13857
  currentcompositionsRef.current = updated;
13796
13858
  return updated;
13797
13859
  });
13798
13860
  }, []);
13799
- const registerComposition = useCallback20((comp) => {
13861
+ const registerComposition = useCallback21((comp) => {
13800
13862
  updateCompositions((comps) => {
13801
13863
  if (comps.find((c2) => c2.id === comp.id)) {
13802
13864
  throw new Error(`Multiple composition with id ${comp.id} are registered.`);
@@ -13804,12 +13866,12 @@ var CompositionManagerProvider = ({
13804
13866
  return [...comps, comp];
13805
13867
  });
13806
13868
  }, [updateCompositions]);
13807
- const unregisterComposition = useCallback20((id) => {
13869
+ const unregisterComposition = useCallback21((id) => {
13808
13870
  setCompositions((comps) => {
13809
13871
  return comps.filter((c2) => c2.id !== id);
13810
13872
  });
13811
13873
  }, []);
13812
- const registerFolder = useCallback20((name, parent, nonce, stack) => {
13874
+ const registerFolder = useCallback21((name, parent, nonce, stack) => {
13813
13875
  setFolders((prevFolders) => {
13814
13876
  return [
13815
13877
  ...prevFolders,
@@ -13822,7 +13884,7 @@ var CompositionManagerProvider = ({
13822
13884
  ];
13823
13885
  });
13824
13886
  }, []);
13825
- const unregisterFolder = useCallback20((name, parent) => {
13887
+ const unregisterFolder = useCallback21((name, parent) => {
13826
13888
  setFolders((prevFolders) => {
13827
13889
  return prevFolders.filter((p) => !(p.name === name && p.parent === parent));
13828
13890
  });
@@ -14461,7 +14523,7 @@ var OffthreadVideoForRendering = ({
14461
14523
  continueRender2,
14462
14524
  delayRender2
14463
14525
  ]);
14464
- const onErr = useCallback21(() => {
14526
+ const onErr = useCallback22(() => {
14465
14527
  if (onError) {
14466
14528
  onError?.(new Error("Failed to load image with src " + imageSrc));
14467
14529
  } else {
@@ -14471,7 +14533,7 @@ var OffthreadVideoForRendering = ({
14471
14533
  const className = useMemo35(() => {
14472
14534
  return [OBJECTFIT_CONTAIN_CLASS_NAME, props2.className].filter(truthy).join(" ");
14473
14535
  }, [props2.className]);
14474
- const onImageFrame = useCallback21((img) => {
14536
+ const onImageFrame = useCallback22((img) => {
14475
14537
  if (onVideoFrame) {
14476
14538
  onVideoFrame(img);
14477
14539
  }
@@ -14604,7 +14666,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
14604
14666
  mediaVolume
14605
14667
  });
14606
14668
  warnAboutTooHighVolume(userPreferredVolume);
14607
- const getStack = useCallback22(() => {
14669
+ const getStack = useCallback23(() => {
14608
14670
  return _remotionInternalStack ?? null;
14609
14671
  }, [_remotionInternalStack]);
14610
14672
  useMediaInTimeline({
@@ -14780,7 +14842,7 @@ var InnerOffthreadVideo = (props2) => {
14780
14842
  if (environment.isClientSideRendering) {
14781
14843
  throw new Error("<OffthreadVideo> is not supported in @remotion/web-renderer. Use <Video> from @remotion/media instead. See https://remotion.dev/docs/client-side-rendering/limitations");
14782
14844
  }
14783
- const onDuration = useCallback23(() => {
14845
+ const onDuration = useCallback24(() => {
14784
14846
  return;
14785
14847
  }, []);
14786
14848
  if (typeof props2.src !== "string") {
@@ -15159,6 +15221,7 @@ var Internals = {
15159
15221
  getEffectPropStatusesCtx,
15160
15222
  hiddenField,
15161
15223
  durationInFramesField,
15224
+ freezeField,
15162
15225
  fromField
15163
15226
  };
15164
15227
  var flattenChildren = (children) => {
@@ -15244,6 +15307,7 @@ var SeriesInner = (props2) => {
15244
15307
  };
15245
15308
  var Series = Object.assign(wrapInSchema({
15246
15309
  Component: SeriesInner,
15310
+ componentIdentity: "dev.remotion.remotion.Series",
15247
15311
  schema: sequenceSchemaDefaultLayoutNone,
15248
15312
  supportsEffects: false
15249
15313
  }), {
@@ -15708,7 +15772,7 @@ var VideoForwardingFunction = (props2, ref) => {
15708
15772
  throw new TypeError(`The \`<Html5Video>\` tag requires a string for \`src\`, but got ${JSON.stringify(props2.src)} instead.`);
15709
15773
  }
15710
15774
  const preloadedSrc = usePreload(props2.src);
15711
- const onDuration = useCallback24((src, durationInSeconds) => {
15775
+ const onDuration = useCallback25((src, durationInSeconds) => {
15712
15776
  setDurations({ type: "got-duration", durationInSeconds, src });
15713
15777
  }, [setDurations]);
15714
15778
  const durationFetched = durations[getAbsoluteSrc(preloadedSrc)] ?? durations[getAbsoluteSrc(props2.src)];
@@ -15818,7 +15882,7 @@ addSequenceStackTraces(Composition);
15818
15882
  addSequenceStackTraces(Folder);
15819
15883
 
15820
15884
  // ../shapes/dist/esm/index.mjs
15821
- import React, { useCallback as useCallback25, useMemo as useMemo40, useRef as useRef29 } from "react";
15885
+ import React, { useCallback as useCallback26, useMemo as useMemo40, useRef as useRef29 } from "react";
15822
15886
  import { version } from "react-dom";
15823
15887
  import { jsx as jsx40, jsxs as jsxs4 } from "react/jsx-runtime";
15824
15888
  import { jsx as jsx210 } from "react/jsx-runtime";
@@ -15830,6 +15894,7 @@ import { jsx as jsx72 } from "react/jsx-runtime";
15830
15894
  import { jsx as jsx82 } from "react/jsx-runtime";
15831
15895
  import { jsx as jsx92 } from "react/jsx-runtime";
15832
15896
  import { jsx as jsx102 } from "react/jsx-runtime";
15897
+ import { jsx as jsx112 } from "react/jsx-runtime";
15833
15898
  var unitDir = (from, to) => {
15834
15899
  const dx = to[0] - from[0];
15835
15900
  const dy = to[1] - from[1];
@@ -15988,6 +16053,7 @@ var RenderSvg = ({
15988
16053
  pixelDensity,
15989
16054
  durationInFrames,
15990
16055
  from,
16056
+ freeze,
15991
16057
  hidden,
15992
16058
  name,
15993
16059
  showInTimeline,
@@ -16008,10 +16074,10 @@ var RenderSvg = ({
16008
16074
  };
16009
16075
  }, [pathStyle]);
16010
16076
  const outlineRef = useRef29(null);
16011
- const setSvgRef = useCallback25((node) => {
16077
+ const setSvgRef = useCallback26((node) => {
16012
16078
  outlineRef.current = node;
16013
16079
  }, []);
16014
- const setCanvasRef = useCallback25((canvas) => {
16080
+ const setCanvasRef = useCallback26((canvas) => {
16015
16081
  outlineRef.current = canvas;
16016
16082
  }, []);
16017
16083
  const memoizedEffectDefinitions = Internals.useMemoizedEffectDefinitions(effects);
@@ -16096,6 +16162,7 @@ var RenderSvg = ({
16096
16162
  return /* @__PURE__ */ jsx40(Sequence, {
16097
16163
  layout: "none",
16098
16164
  from,
16165
+ freeze,
16099
16166
  hidden,
16100
16167
  showInTimeline,
16101
16168
  _experimentalControls: controls,
@@ -16161,6 +16228,7 @@ var enumField = ({
16161
16228
  var makeShapeSchema = (shapeFields) => {
16162
16229
  return {
16163
16230
  from: Internals.sequenceSchema.from,
16231
+ freeze: Internals.sequenceSchema.freeze,
16164
16232
  durationInFrames: Internals.sequenceSchema.durationInFrames,
16165
16233
  ...shapeFields,
16166
16234
  fill: colorField({
@@ -16228,10 +16296,435 @@ var ArrowInner = ({
16228
16296
  };
16229
16297
  var Arrow = Internals.wrapInSchema({
16230
16298
  Component: ArrowInner,
16299
+ componentIdentity: "dev.remotion.shapes.Arrow",
16231
16300
  schema: arrowSchema,
16232
16301
  supportsEffects: true
16233
16302
  });
16234
16303
  Internals.addSequenceStackTraces(Arrow);
16304
+ var shortenVector = (vector, radius) => {
16305
+ const [x, y] = vector;
16306
+ const currentLength = Math.sqrt(x * x + y * y);
16307
+ const scalingFactor = (currentLength - radius) / currentLength;
16308
+ return [x * scalingFactor, y * scalingFactor];
16309
+ };
16310
+ var scaleVectorToLength = (vector, length2) => {
16311
+ const [x, y] = vector;
16312
+ const currentLength = Math.sqrt(x * x + y * y);
16313
+ const scalingFactor = length2 / currentLength;
16314
+ return [x * scalingFactor, y * scalingFactor];
16315
+ };
16316
+ var joinPoints = (points, {
16317
+ edgeRoundness,
16318
+ cornerRadius,
16319
+ roundCornerStrategy
16320
+ }) => {
16321
+ return points.map(([x, y], i) => {
16322
+ const prevPointIndex = i === 0 ? points.length - 2 : i - 1;
16323
+ const prevPoint = points[prevPointIndex];
16324
+ const nextPointIndex = i === points.length - 1 ? 1 : i + 1;
16325
+ const nextPoint = points[nextPointIndex];
16326
+ const middleOfLine = [(x + nextPoint[0]) / 2, (y + nextPoint[1]) / 2];
16327
+ const prevPointMiddleOfLine = [
16328
+ (x + prevPoint[0]) / 2,
16329
+ (y + prevPoint[1]) / 2
16330
+ ];
16331
+ const prevVector = [x - prevPoint[0], y - prevPoint[1]];
16332
+ const nextVector = [nextPoint[0] - x, nextPoint[1] - y];
16333
+ if (i === 0) {
16334
+ if (edgeRoundness !== null) {
16335
+ return [
16336
+ {
16337
+ type: "M",
16338
+ x: middleOfLine[0],
16339
+ y: middleOfLine[1]
16340
+ }
16341
+ ];
16342
+ }
16343
+ if (cornerRadius !== 0) {
16344
+ const computeRadius = shortenVector(nextVector, cornerRadius);
16345
+ return [
16346
+ {
16347
+ type: "M",
16348
+ x: computeRadius[0] + x,
16349
+ y: computeRadius[1] + y
16350
+ }
16351
+ ];
16352
+ }
16353
+ return [
16354
+ {
16355
+ type: "M",
16356
+ x,
16357
+ y
16358
+ }
16359
+ ];
16360
+ }
16361
+ if (cornerRadius && edgeRoundness !== null) {
16362
+ throw new Error(`"cornerRadius" and "edgeRoundness" cannot be specified at the same time.`);
16363
+ }
16364
+ if (edgeRoundness === null) {
16365
+ if (cornerRadius === 0) {
16366
+ return [
16367
+ {
16368
+ type: "L",
16369
+ x,
16370
+ y
16371
+ }
16372
+ ];
16373
+ }
16374
+ const prevVectorMinusRadius = shortenVector(prevVector, cornerRadius);
16375
+ const prevVectorLength = scaleVectorToLength(prevVector, cornerRadius);
16376
+ const nextVectorMinusRadius = scaleVectorToLength(nextVector, cornerRadius);
16377
+ const firstDraw = [
16378
+ prevPoint[0] + prevVectorMinusRadius[0],
16379
+ prevPoint[1] + prevVectorMinusRadius[1]
16380
+ ];
16381
+ return [
16382
+ {
16383
+ type: "L",
16384
+ x: firstDraw[0],
16385
+ y: firstDraw[1]
16386
+ },
16387
+ roundCornerStrategy === "arc" ? {
16388
+ type: "a",
16389
+ rx: cornerRadius,
16390
+ ry: cornerRadius,
16391
+ xAxisRotation: 0,
16392
+ dx: prevVectorLength[0] + nextVectorMinusRadius[0],
16393
+ dy: prevVectorLength[1] + nextVectorMinusRadius[1],
16394
+ largeArcFlag: false,
16395
+ sweepFlag: true
16396
+ } : {
16397
+ type: "C",
16398
+ x: firstDraw[0] + prevVectorLength[0] + nextVectorMinusRadius[0],
16399
+ y: firstDraw[1] + prevVectorLength[1] + nextVectorMinusRadius[1],
16400
+ cp1x: x,
16401
+ cp1y: y,
16402
+ cp2x: x,
16403
+ cp2y: y
16404
+ }
16405
+ ];
16406
+ }
16407
+ const controlPoint1 = [
16408
+ prevPointMiddleOfLine[0] + prevVector[0] * edgeRoundness * 0.5,
16409
+ prevPointMiddleOfLine[1] + prevVector[1] * edgeRoundness * 0.5
16410
+ ];
16411
+ const controlPoint2 = [
16412
+ middleOfLine[0] - nextVector[0] * edgeRoundness * 0.5,
16413
+ middleOfLine[1] - nextVector[1] * edgeRoundness * 0.5
16414
+ ];
16415
+ return [
16416
+ {
16417
+ type: "C",
16418
+ cp1x: controlPoint1[0],
16419
+ cp1y: controlPoint1[1],
16420
+ cp2x: controlPoint2[0],
16421
+ cp2y: controlPoint2[1],
16422
+ x: middleOfLine[0],
16423
+ y: middleOfLine[1]
16424
+ }
16425
+ ];
16426
+ }).flat(1);
16427
+ };
16428
+ var ensurePositive = (name, value) => {
16429
+ if (typeof value !== "number" || value <= 0) {
16430
+ throw new Error(`"${name}" must be a positive number, got ${value}`);
16431
+ }
16432
+ };
16433
+ var pointerInterval = ({
16434
+ availableLength,
16435
+ pointerBaseWidth,
16436
+ pointerPosition
16437
+ }) => {
16438
+ const center = availableLength * pointerPosition;
16439
+ const half = pointerBaseWidth / 2;
16440
+ return {
16441
+ center,
16442
+ start: Math.max(0, center - half),
16443
+ end: Math.min(availableLength, center + half)
16444
+ };
16445
+ };
16446
+ var areSamePoint = (a2, b2) => {
16447
+ return a2[0] === b2[0] && a2[1] === b2[1];
16448
+ };
16449
+ var normalizeClosedPoints = (points) => {
16450
+ const deduplicated = points.reduce((acc, entry) => {
16451
+ const previous = acc[acc.length - 1];
16452
+ if (previous && areSamePoint(previous.point, entry.point)) {
16453
+ acc[acc.length - 1] = {
16454
+ point: previous.point,
16455
+ round: previous.round && entry.round
16456
+ };
16457
+ return acc;
16458
+ }
16459
+ return [...acc, entry];
16460
+ }, []);
16461
+ if (deduplicated.length === 0) {
16462
+ return deduplicated;
16463
+ }
16464
+ const first = deduplicated[0];
16465
+ const last = deduplicated[deduplicated.length - 1];
16466
+ if (areSamePoint(first.point, last.point)) {
16467
+ const [firstEntry, ...rest] = deduplicated;
16468
+ const withoutLast = rest.slice(0, -1);
16469
+ const mergedFirst = {
16470
+ point: firstEntry.point,
16471
+ round: firstEntry.round && last.round
16472
+ };
16473
+ return [mergedFirst, ...withoutLast, mergedFirst];
16474
+ }
16475
+ return [...deduplicated, first];
16476
+ };
16477
+ var unitDir2 = (from, to) => {
16478
+ const dx = to[0] - from[0];
16479
+ const dy = to[1] - from[1];
16480
+ const len = Math.sqrt(dx * dx + dy * dy);
16481
+ if (len === 0) {
16482
+ return [0, 0];
16483
+ }
16484
+ return [dx / len, dy / len];
16485
+ };
16486
+ var makeInstructions2 = ({
16487
+ points,
16488
+ edgeRoundness,
16489
+ cornerRadius
16490
+ }) => {
16491
+ const rawPoints = points.map((p) => p.point);
16492
+ if (edgeRoundness !== null || cornerRadius === 0) {
16493
+ return [
16494
+ ...joinPoints(rawPoints, {
16495
+ edgeRoundness,
16496
+ cornerRadius,
16497
+ roundCornerStrategy: "arc"
16498
+ }),
16499
+ {
16500
+ type: "Z"
16501
+ }
16502
+ ];
16503
+ }
16504
+ const uniquePoints = areSamePoint(points[0].point, points[points.length - 1].point) ? points.slice(0, -1) : points;
16505
+ const firstPoint = uniquePoints[0];
16506
+ const startDir = firstPoint.round ? unitDir2(uniquePoints[0].point, uniquePoints[1].point) : null;
16507
+ const startPoint = startDir ? [
16508
+ firstPoint.point[0] + startDir[0] * cornerRadius,
16509
+ firstPoint.point[1] + startDir[1] * cornerRadius
16510
+ ] : firstPoint.point;
16511
+ const instructions = [
16512
+ { type: "M", x: startPoint[0], y: startPoint[1] }
16513
+ ];
16514
+ for (let i = 1;i < uniquePoints.length; i++) {
16515
+ const current = uniquePoints[i];
16516
+ if (!current.round) {
16517
+ instructions.push({
16518
+ type: "L",
16519
+ x: current.point[0],
16520
+ y: current.point[1]
16521
+ });
16522
+ continue;
16523
+ }
16524
+ const previous = uniquePoints[i - 1].point;
16525
+ const next = uniquePoints[(i + 1) % uniquePoints.length].point;
16526
+ const incoming = unitDir2(previous, current.point);
16527
+ const outgoing = unitDir2(current.point, next);
16528
+ const arcStart = [
16529
+ current.point[0] - incoming[0] * cornerRadius,
16530
+ current.point[1] - incoming[1] * cornerRadius
16531
+ ];
16532
+ instructions.push({
16533
+ type: "L",
16534
+ x: arcStart[0],
16535
+ y: arcStart[1]
16536
+ }, {
16537
+ type: "a",
16538
+ rx: cornerRadius,
16539
+ ry: cornerRadius,
16540
+ xAxisRotation: 0,
16541
+ dx: incoming[0] * cornerRadius + outgoing[0] * cornerRadius,
16542
+ dy: incoming[1] * cornerRadius + outgoing[1] * cornerRadius,
16543
+ largeArcFlag: false,
16544
+ sweepFlag: true
16545
+ });
16546
+ }
16547
+ if (firstPoint.round) {
16548
+ const previous = uniquePoints[uniquePoints.length - 1].point;
16549
+ const incoming = unitDir2(previous, firstPoint.point);
16550
+ instructions.push({
16551
+ type: "L",
16552
+ x: firstPoint.point[0] - incoming[0] * cornerRadius,
16553
+ y: firstPoint.point[1] - incoming[1] * cornerRadius
16554
+ }, {
16555
+ type: "a",
16556
+ rx: cornerRadius,
16557
+ ry: cornerRadius,
16558
+ xAxisRotation: 0,
16559
+ dx: incoming[0] * cornerRadius + startDir[0] * cornerRadius,
16560
+ dy: incoming[1] * cornerRadius + startDir[1] * cornerRadius,
16561
+ largeArcFlag: false,
16562
+ sweepFlag: true
16563
+ });
16564
+ }
16565
+ instructions.push({ type: "Z" });
16566
+ return instructions;
16567
+ };
16568
+ var makeCallout = ({
16569
+ width = 500,
16570
+ height = 200,
16571
+ pointerLength = 40,
16572
+ pointerBaseWidth = 60,
16573
+ pointerPosition = 0.5,
16574
+ pointerDirection = "down",
16575
+ edgeRoundness = null,
16576
+ cornerRadius = 0
16577
+ }) => {
16578
+ ensurePositive("width", width);
16579
+ ensurePositive("height", height);
16580
+ ensurePositive("pointerLength", pointerLength);
16581
+ ensurePositive("pointerBaseWidth", pointerBaseWidth);
16582
+ if (typeof pointerPosition !== "number" || pointerPosition < 0 || pointerPosition > 1) {
16583
+ throw new Error(`"pointerPosition" must be a number between 0 and 1, got ${pointerPosition}`);
16584
+ }
16585
+ const horizontalInterval = pointerInterval({
16586
+ availableLength: width,
16587
+ pointerBaseWidth,
16588
+ pointerPosition
16589
+ });
16590
+ const verticalInterval = pointerInterval({
16591
+ availableLength: height,
16592
+ pointerBaseWidth,
16593
+ pointerPosition
16594
+ });
16595
+ const pointsByDirection = {
16596
+ up: [
16597
+ { point: [0, pointerLength], round: true },
16598
+ { point: [horizontalInterval.start, pointerLength], round: false },
16599
+ { point: [horizontalInterval.center, 0], round: false },
16600
+ { point: [horizontalInterval.end, pointerLength], round: false },
16601
+ { point: [width, pointerLength], round: true },
16602
+ { point: [width, height + pointerLength], round: true },
16603
+ { point: [0, height + pointerLength], round: true },
16604
+ { point: [0, pointerLength], round: true }
16605
+ ],
16606
+ down: [
16607
+ { point: [0, 0], round: true },
16608
+ { point: [width, 0], round: true },
16609
+ { point: [width, height], round: true },
16610
+ { point: [horizontalInterval.end, height], round: false },
16611
+ {
16612
+ point: [horizontalInterval.center, height + pointerLength],
16613
+ round: false
16614
+ },
16615
+ { point: [horizontalInterval.start, height], round: false },
16616
+ { point: [0, height], round: true },
16617
+ { point: [0, 0], round: true }
16618
+ ],
16619
+ left: [
16620
+ { point: [pointerLength, 0], round: true },
16621
+ { point: [width + pointerLength, 0], round: true },
16622
+ { point: [width + pointerLength, height], round: true },
16623
+ { point: [pointerLength, height], round: true },
16624
+ { point: [pointerLength, verticalInterval.end], round: false },
16625
+ { point: [0, verticalInterval.center], round: false },
16626
+ { point: [pointerLength, verticalInterval.start], round: false },
16627
+ { point: [pointerLength, 0], round: true }
16628
+ ],
16629
+ right: [
16630
+ { point: [0, 0], round: true },
16631
+ { point: [width, 0], round: true },
16632
+ { point: [width, verticalInterval.start], round: false },
16633
+ { point: [width + pointerLength, verticalInterval.center], round: false },
16634
+ { point: [width, verticalInterval.end], round: false },
16635
+ { point: [width, height], round: true },
16636
+ { point: [0, height], round: true },
16637
+ { point: [0, 0], round: true }
16638
+ ]
16639
+ };
16640
+ const points = normalizeClosedPoints(pointsByDirection[pointerDirection]);
16641
+ const instructions = makeInstructions2({ points, edgeRoundness, cornerRadius });
16642
+ const path = serializeInstructions(instructions);
16643
+ const shapeWidth = pointerDirection === "left" || pointerDirection === "right" ? width + pointerLength : width;
16644
+ const shapeHeight = pointerDirection === "up" || pointerDirection === "down" ? height + pointerLength : height;
16645
+ const bodyX = pointerDirection === "left" ? pointerLength : 0;
16646
+ const bodyY = pointerDirection === "up" ? pointerLength : 0;
16647
+ return {
16648
+ width: shapeWidth,
16649
+ height: shapeHeight,
16650
+ instructions,
16651
+ path,
16652
+ transformOrigin: `${bodyX + width / 2} ${bodyY + height / 2}`
16653
+ };
16654
+ };
16655
+ var calloutSchema = makeShapeSchema({
16656
+ width: numberField({
16657
+ defaultValue: 500,
16658
+ description: "Width",
16659
+ min: 1
16660
+ }),
16661
+ height: numberField({
16662
+ defaultValue: 200,
16663
+ description: "Height",
16664
+ min: 1
16665
+ }),
16666
+ pointerLength: numberField({
16667
+ defaultValue: 40,
16668
+ description: "Pointer Length",
16669
+ min: 1
16670
+ }),
16671
+ pointerBaseWidth: numberField({
16672
+ defaultValue: 60,
16673
+ description: "Pointer Base Width",
16674
+ min: 1
16675
+ }),
16676
+ pointerPosition: numberField({
16677
+ defaultValue: 0.5,
16678
+ description: "Pointer Position",
16679
+ min: 0,
16680
+ max: 1,
16681
+ step: 0.01
16682
+ }),
16683
+ pointerDirection: enumField({
16684
+ defaultValue: "down",
16685
+ description: "Pointer Direction",
16686
+ variants: ["up", "down", "left", "right"]
16687
+ }),
16688
+ cornerRadius: numberField({
16689
+ defaultValue: 0,
16690
+ description: "Corner Radius",
16691
+ min: 0
16692
+ })
16693
+ });
16694
+ var CalloutInner = ({
16695
+ width,
16696
+ height,
16697
+ pointerLength,
16698
+ pointerBaseWidth,
16699
+ pointerPosition,
16700
+ pointerDirection,
16701
+ edgeRoundness,
16702
+ cornerRadius,
16703
+ ...props
16704
+ }) => {
16705
+ return /* @__PURE__ */ jsx310(RenderSvg, {
16706
+ defaultName: "<Callout>",
16707
+ documentationLink: "https://www.remotion.dev/docs/shapes/callout",
16708
+ ...makeCallout({
16709
+ width,
16710
+ height,
16711
+ pointerLength,
16712
+ pointerBaseWidth,
16713
+ pointerPosition,
16714
+ pointerDirection,
16715
+ edgeRoundness,
16716
+ cornerRadius
16717
+ }),
16718
+ ...props
16719
+ });
16720
+ };
16721
+ var Callout = Internals.wrapInSchema({
16722
+ Component: CalloutInner,
16723
+ componentIdentity: "dev.remotion.shapes.Callout",
16724
+ schema: calloutSchema,
16725
+ supportsEffects: true
16726
+ });
16727
+ Internals.addSequenceStackTraces(Callout);
16235
16728
  var makeCircle = ({ radius }) => {
16236
16729
  const instructions = [
16237
16730
  {
@@ -16280,7 +16773,7 @@ var circleSchema = makeShapeSchema({
16280
16773
  })
16281
16774
  });
16282
16775
  var CircleInner = ({ radius, ...props }) => {
16283
- return /* @__PURE__ */ jsx310(RenderSvg, {
16776
+ return /* @__PURE__ */ jsx43(RenderSvg, {
16284
16777
  defaultName: "<Circle>",
16285
16778
  documentationLink: "https://www.remotion.dev/docs/shapes/circle",
16286
16779
  ...makeCircle({ radius }),
@@ -16289,6 +16782,7 @@ var CircleInner = ({ radius, ...props }) => {
16289
16782
  };
16290
16783
  var Circle = Internals.wrapInSchema({
16291
16784
  Component: CircleInner,
16785
+ componentIdentity: "dev.remotion.shapes.Circle",
16292
16786
  schema: circleSchema,
16293
16787
  supportsEffects: true
16294
16788
  });
@@ -16336,7 +16830,7 @@ var ellipseSchema = makeShapeSchema({
16336
16830
  })
16337
16831
  });
16338
16832
  var EllipseInner = ({ rx, ry, ...props }) => {
16339
- return /* @__PURE__ */ jsx43(RenderSvg, {
16833
+ return /* @__PURE__ */ jsx52(RenderSvg, {
16340
16834
  defaultName: "<Ellipse>",
16341
16835
  documentationLink: "https://www.remotion.dev/docs/shapes/ellipse",
16342
16836
  ...makeEllipse({ rx, ry }),
@@ -16345,6 +16839,7 @@ var EllipseInner = ({ rx, ry, ...props }) => {
16345
16839
  };
16346
16840
  var Ellipse = Internals.wrapInSchema({
16347
16841
  Component: EllipseInner,
16842
+ componentIdentity: "dev.remotion.shapes.Ellipse",
16348
16843
  schema: ellipseSchema,
16349
16844
  supportsEffects: true
16350
16845
  });
@@ -16468,7 +16963,7 @@ var HeartInner = ({
16468
16963
  depthAdjustment = 0,
16469
16964
  ...props
16470
16965
  }) => {
16471
- return /* @__PURE__ */ jsx52(RenderSvg, {
16966
+ return /* @__PURE__ */ jsx62(RenderSvg, {
16472
16967
  defaultName: "<Heart>",
16473
16968
  documentationLink: "https://www.remotion.dev/docs/shapes/heart",
16474
16969
  ...makeHeart({
@@ -16482,6 +16977,7 @@ var HeartInner = ({
16482
16977
  };
16483
16978
  var Heart = Internals.wrapInSchema({
16484
16979
  Component: HeartInner,
16980
+ componentIdentity: "dev.remotion.shapes.Heart",
16485
16981
  schema: heartSchema,
16486
16982
  supportsEffects: true
16487
16983
  });
@@ -16626,7 +17122,7 @@ var PieInner = ({
16626
17122
  rotation,
16627
17123
  ...props
16628
17124
  }) => {
16629
- return /* @__PURE__ */ jsx62(RenderSvg, {
17125
+ return /* @__PURE__ */ jsx72(RenderSvg, {
16630
17126
  defaultName: "<Pie>",
16631
17127
  documentationLink: "https://www.remotion.dev/docs/shapes/pie",
16632
17128
  ...makePie({ radius, progress, closePath, counterClockwise, rotation }),
@@ -16635,134 +17131,11 @@ var PieInner = ({
16635
17131
  };
16636
17132
  var Pie = Internals.wrapInSchema({
16637
17133
  Component: PieInner,
17134
+ componentIdentity: "dev.remotion.shapes.Pie",
16638
17135
  schema: pieSchema,
16639
17136
  supportsEffects: true
16640
17137
  });
16641
17138
  Internals.addSequenceStackTraces(Pie);
16642
- var shortenVector = (vector, radius) => {
16643
- const [x, y] = vector;
16644
- const currentLength = Math.sqrt(x * x + y * y);
16645
- const scalingFactor = (currentLength - radius) / currentLength;
16646
- return [x * scalingFactor, y * scalingFactor];
16647
- };
16648
- var scaleVectorToLength = (vector, length2) => {
16649
- const [x, y] = vector;
16650
- const currentLength = Math.sqrt(x * x + y * y);
16651
- const scalingFactor = length2 / currentLength;
16652
- return [x * scalingFactor, y * scalingFactor];
16653
- };
16654
- var joinPoints = (points, {
16655
- edgeRoundness,
16656
- cornerRadius,
16657
- roundCornerStrategy
16658
- }) => {
16659
- return points.map(([x, y], i) => {
16660
- const prevPointIndex = i === 0 ? points.length - 2 : i - 1;
16661
- const prevPoint = points[prevPointIndex];
16662
- const nextPointIndex = i === points.length - 1 ? 1 : i + 1;
16663
- const nextPoint = points[nextPointIndex];
16664
- const middleOfLine = [(x + nextPoint[0]) / 2, (y + nextPoint[1]) / 2];
16665
- const prevPointMiddleOfLine = [
16666
- (x + prevPoint[0]) / 2,
16667
- (y + prevPoint[1]) / 2
16668
- ];
16669
- const prevVector = [x - prevPoint[0], y - prevPoint[1]];
16670
- const nextVector = [nextPoint[0] - x, nextPoint[1] - y];
16671
- if (i === 0) {
16672
- if (edgeRoundness !== null) {
16673
- return [
16674
- {
16675
- type: "M",
16676
- x: middleOfLine[0],
16677
- y: middleOfLine[1]
16678
- }
16679
- ];
16680
- }
16681
- if (cornerRadius !== 0) {
16682
- const computeRadius = shortenVector(nextVector, cornerRadius);
16683
- return [
16684
- {
16685
- type: "M",
16686
- x: computeRadius[0] + x,
16687
- y: computeRadius[1] + y
16688
- }
16689
- ];
16690
- }
16691
- return [
16692
- {
16693
- type: "M",
16694
- x,
16695
- y
16696
- }
16697
- ];
16698
- }
16699
- if (cornerRadius && edgeRoundness !== null) {
16700
- throw new Error(`"cornerRadius" and "edgeRoundness" cannot be specified at the same time.`);
16701
- }
16702
- if (edgeRoundness === null) {
16703
- if (cornerRadius === 0) {
16704
- return [
16705
- {
16706
- type: "L",
16707
- x,
16708
- y
16709
- }
16710
- ];
16711
- }
16712
- const prevVectorMinusRadius = shortenVector(prevVector, cornerRadius);
16713
- const prevVectorLength = scaleVectorToLength(prevVector, cornerRadius);
16714
- const nextVectorMinusRadius = scaleVectorToLength(nextVector, cornerRadius);
16715
- const firstDraw = [
16716
- prevPoint[0] + prevVectorMinusRadius[0],
16717
- prevPoint[1] + prevVectorMinusRadius[1]
16718
- ];
16719
- return [
16720
- {
16721
- type: "L",
16722
- x: firstDraw[0],
16723
- y: firstDraw[1]
16724
- },
16725
- roundCornerStrategy === "arc" ? {
16726
- type: "a",
16727
- rx: cornerRadius,
16728
- ry: cornerRadius,
16729
- xAxisRotation: 0,
16730
- dx: prevVectorLength[0] + nextVectorMinusRadius[0],
16731
- dy: prevVectorLength[1] + nextVectorMinusRadius[1],
16732
- largeArcFlag: false,
16733
- sweepFlag: true
16734
- } : {
16735
- type: "C",
16736
- x: firstDraw[0] + prevVectorLength[0] + nextVectorMinusRadius[0],
16737
- y: firstDraw[1] + prevVectorLength[1] + nextVectorMinusRadius[1],
16738
- cp1x: x,
16739
- cp1y: y,
16740
- cp2x: x,
16741
- cp2y: y
16742
- }
16743
- ];
16744
- }
16745
- const controlPoint1 = [
16746
- prevPointMiddleOfLine[0] + prevVector[0] * edgeRoundness * 0.5,
16747
- prevPointMiddleOfLine[1] + prevVector[1] * edgeRoundness * 0.5
16748
- ];
16749
- const controlPoint2 = [
16750
- middleOfLine[0] - nextVector[0] * edgeRoundness * 0.5,
16751
- middleOfLine[1] - nextVector[1] * edgeRoundness * 0.5
16752
- ];
16753
- return [
16754
- {
16755
- type: "C",
16756
- cp1x: controlPoint1[0],
16757
- cp1y: controlPoint1[1],
16758
- cp2x: controlPoint2[0],
16759
- cp2y: controlPoint2[1],
16760
- x: middleOfLine[0],
16761
- y: middleOfLine[1]
16762
- }
16763
- ];
16764
- }).flat(1);
16765
- };
16766
17139
  function polygon({
16767
17140
  points,
16768
17141
  radius,
@@ -16843,7 +17216,7 @@ var PolygonInner = ({
16843
17216
  edgeRoundness,
16844
17217
  ...props
16845
17218
  }) => {
16846
- return /* @__PURE__ */ jsx72(RenderSvg, {
17219
+ return /* @__PURE__ */ jsx82(RenderSvg, {
16847
17220
  defaultName: "<Polygon>",
16848
17221
  documentationLink: "https://www.remotion.dev/docs/shapes/polygon",
16849
17222
  ...makePolygon({
@@ -16857,6 +17230,7 @@ var PolygonInner = ({
16857
17230
  };
16858
17231
  var Polygon = Internals.wrapInSchema({
16859
17232
  Component: PolygonInner,
17233
+ componentIdentity: "dev.remotion.shapes.Polygon",
16860
17234
  schema: polygonSchema,
16861
17235
  supportsEffects: true
16862
17236
  });
@@ -16913,7 +17287,7 @@ var RectInner = ({
16913
17287
  cornerRadius,
16914
17288
  ...props
16915
17289
  }) => {
16916
- return /* @__PURE__ */ jsx82(RenderSvg, {
17290
+ return /* @__PURE__ */ jsx92(RenderSvg, {
16917
17291
  defaultName: "<Rect>",
16918
17292
  documentationLink: "https://www.remotion.dev/docs/shapes/rect",
16919
17293
  ...makeRect({ height, width, edgeRoundness, cornerRadius }),
@@ -16922,6 +17296,7 @@ var RectInner = ({
16922
17296
  };
16923
17297
  var Rect = Internals.wrapInSchema({
16924
17298
  Component: RectInner,
17299
+ componentIdentity: "dev.remotion.shapes.Rect",
16925
17300
  schema: rectSchema,
16926
17301
  supportsEffects: true
16927
17302
  });
@@ -17016,7 +17391,7 @@ var StarInner = ({
17016
17391
  edgeRoundness,
17017
17392
  ...props
17018
17393
  }) => {
17019
- return /* @__PURE__ */ jsx92(RenderSvg, {
17394
+ return /* @__PURE__ */ jsx102(RenderSvg, {
17020
17395
  defaultName: "<Star>",
17021
17396
  documentationLink: "https://www.remotion.dev/docs/shapes/star",
17022
17397
  ...makeStar({
@@ -17031,6 +17406,7 @@ var StarInner = ({
17031
17406
  };
17032
17407
  var Star = Internals.wrapInSchema({
17033
17408
  Component: StarInner,
17409
+ componentIdentity: "dev.remotion.shapes.Star",
17034
17410
  schema: starSchema,
17035
17411
  supportsEffects: true
17036
17412
  });
@@ -17127,7 +17503,7 @@ var TriangleInner = ({
17127
17503
  cornerRadius,
17128
17504
  ...props
17129
17505
  }) => {
17130
- return /* @__PURE__ */ jsx102(RenderSvg, {
17506
+ return /* @__PURE__ */ jsx112(RenderSvg, {
17131
17507
  defaultName: "<Triangle>",
17132
17508
  documentationLink: "https://www.remotion.dev/docs/shapes/triangle",
17133
17509
  ...makeTriangle({ length: length2, direction, edgeRoundness, cornerRadius }),
@@ -17136,6 +17512,7 @@ var TriangleInner = ({
17136
17512
  };
17137
17513
  var Triangle = Internals.wrapInSchema({
17138
17514
  Component: TriangleInner,
17515
+ componentIdentity: "dev.remotion.shapes.Triangle",
17139
17516
  schema: triangleSchema,
17140
17517
  supportsEffects: true
17141
17518
  });
@@ -18216,7 +18593,7 @@ import { jsx as jsx83, jsxs as jsxs32 } from "react/jsx-runtime";
18216
18593
  import { jsx as jsx93 } from "react/jsx-runtime";
18217
18594
  import React72 from "react";
18218
18595
  import { jsx as jsx103 } from "react/jsx-runtime";
18219
- import { jsx as jsx112 } from "react/jsx-runtime";
18596
+ import { jsx as jsx113 } from "react/jsx-runtime";
18220
18597
  import { jsx as jsx122 } from "react/jsx-runtime";
18221
18598
  import * as React36 from "react";
18222
18599
  import * as ReactDOM4 from "react-dom";
@@ -18776,7 +19153,7 @@ var Button = ({
18776
19153
  const [dimensions, setDimensions] = useState22(null);
18777
19154
  const ref = useRef210(null);
18778
19155
  const { isActive, progress } = useHoverTransforms(ref, Boolean(disabled || loading));
18779
- const onPointerEnter = useCallback26((e) => {
19156
+ const onPointerEnter = useCallback27((e) => {
18780
19157
  if (e.pointerType !== "mouse") {
18781
19158
  return;
18782
19159
  }
@@ -18813,7 +19190,7 @@ var Button = ({
18813
19190
  const isDisabled = disabled || loading;
18814
19191
  const isAnchor = !asChild && "href" in rest && rest.href !== undefined;
18815
19192
  const sharedClasses = cn("text-text", "inline-flex", "justify-center", "bg-button-bg", "items-center", "font-brand", "border-solid", "text-[1em]", "rounded-lg", "border-black", "border-2", "border-b-4", "cursor-pointer", "px-4", "h-12", "flex-row", "items-center", "relative", "overflow-hidden", isDisabled && "cursor-default opacity-50", className);
18816
- const preventInteraction = useCallback26((e) => {
19193
+ const preventInteraction = useCallback27((e) => {
18817
19194
  e.preventDefault();
18818
19195
  e.stopPropagation();
18819
19196
  }, []);
@@ -19024,7 +19401,7 @@ var Link = ({
19024
19401
  className,
19025
19402
  ...props
19026
19403
  }) => {
19027
- return /* @__PURE__ */ jsx112("a", {
19404
+ return /* @__PURE__ */ jsx113("a", {
19028
19405
  ...props,
19029
19406
  className: cn(className, "text-brand underline underline-offset-4"),
19030
19407
  children: props.children