@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.
@@ -36,7 +36,7 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
36
36
  import * as React23 from "react";
37
37
  import * as React3 from "react";
38
38
  import { Fragment as Fragment2, jsx as jsx43 } from "react/jsx-runtime";
39
- import React52, { useCallback as useCallback26, useRef as useRef210, useState as useState22 } from "react";
39
+ import React52, { useCallback as useCallback27, useRef as useRef210, useState as useState22 } from "react";
40
40
 
41
41
  // ../../node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
42
42
  function r(e) {
@@ -4173,6 +4173,7 @@ import { useContext as useContext8, useMemo as useMemo7 } from "react";
4173
4173
  import { jsx as jsx7 } from "react/jsx-runtime";
4174
4174
  import {
4175
4175
  forwardRef as forwardRef3,
4176
+ useCallback as useCallback6,
4176
4177
  useContext as useContext17,
4177
4178
  useEffect as useEffect3,
4178
4179
  useMemo as useMemo14,
@@ -4211,14 +4212,14 @@ import {
4211
4212
  useRef as useRef9,
4212
4213
  useState as useState6
4213
4214
  } from "react";
4214
- import React15, { useCallback as useCallback6, useImperativeHandle, useMemo as useMemo16, useRef as useRef8 } from "react";
4215
+ import React15, { useCallback as useCallback7, useImperativeHandle, useMemo as useMemo16, useRef as useRef8 } from "react";
4215
4216
  import { useEffect as useEffect4, useMemo as useMemo15, useRef as useRef7 } from "react";
4216
4217
  import { jsx as jsx13 } from "react/jsx-runtime";
4217
4218
  import { jsx as jsx14 } from "react/jsx-runtime";
4218
4219
  import { useContext as useContext18, useLayoutEffect as useLayoutEffect4, useState as useState8 } from "react";
4219
4220
  import {
4220
4221
  createContext as createContext17,
4221
- useCallback as useCallback7,
4222
+ useCallback as useCallback8,
4222
4223
  useImperativeHandle as useImperativeHandle3,
4223
4224
  useLayoutEffect as useLayoutEffect3,
4224
4225
  useMemo as useMemo17,
@@ -4226,7 +4227,7 @@ import {
4226
4227
  useState as useState7
4227
4228
  } from "react";
4228
4229
  import { jsx as jsx15 } from "react/jsx-runtime";
4229
- import { forwardRef as forwardRef7, useCallback as useCallback13, useContext as useContext30 } from "react";
4230
+ import { forwardRef as forwardRef7, useCallback as useCallback14, useContext as useContext30 } from "react";
4230
4231
  import React16, { createContext as createContext18, useMemo as useMemo18 } from "react";
4231
4232
  import { jsx as jsx16 } from "react/jsx-runtime";
4232
4233
  import { useContext as useContext19 } from "react";
@@ -4234,7 +4235,7 @@ import { createContext as createContext19, useEffect as useEffect6, useState as
4234
4235
  import { jsx as jsx17 } from "react/jsx-runtime";
4235
4236
  import { createContext as createContext20, useMemo as useMemo19, useReducer } from "react";
4236
4237
  import { jsx as jsx18 } from "react/jsx-runtime";
4237
- import { useCallback as useCallback12 } from "react";
4238
+ import { useCallback as useCallback13 } from "react";
4238
4239
  import React22, {
4239
4240
  forwardRef as forwardRef5,
4240
4241
  useContext as useContext28,
@@ -4248,7 +4249,7 @@ import { useContext as useContext21, useLayoutEffect as useLayoutEffect5, useRef
4248
4249
  import React19, {
4249
4250
  createContext as createContext21,
4250
4251
  createRef as createRef2,
4251
- useCallback as useCallback8,
4252
+ useCallback as useCallback9,
4252
4253
  useContext as useContext20,
4253
4254
  useEffect as useEffect7,
4254
4255
  useMemo as useMemo21,
@@ -4261,16 +4262,16 @@ import { useRef as useRef13 } from "react";
4261
4262
  import { useContext as useContext23, useEffect as useEffect8, useMemo as useMemo22, useState as useState11 } from "react";
4262
4263
  import { useContext as useContext22 } from "react";
4263
4264
  import {
4264
- useCallback as useCallback11,
4265
+ useCallback as useCallback12,
4265
4266
  useContext as useContext26,
4266
4267
  useEffect as useEffect12,
4267
4268
  useLayoutEffect as useLayoutEffect7,
4268
4269
  useRef as useRef18
4269
4270
  } from "react";
4270
- import { useCallback as useCallback10, useMemo as useMemo25, useRef as useRef16 } from "react";
4271
+ import { useCallback as useCallback11, useMemo as useMemo25, useRef as useRef16 } from "react";
4271
4272
  import { useContext as useContext25, useMemo as useMemo24 } from "react";
4272
4273
  import React20, {
4273
- useCallback as useCallback9,
4274
+ useCallback as useCallback10,
4274
4275
  useContext as useContext24,
4275
4276
  useEffect as useEffect9,
4276
4277
  useLayoutEffect as useLayoutEffect6,
@@ -4298,7 +4299,7 @@ import { jsx as jsx22 } from "react/jsx-runtime";
4298
4299
  import { jsx as jsx23 } from "react/jsx-runtime";
4299
4300
  import {
4300
4301
  forwardRef as forwardRef8,
4301
- useCallback as useCallback14,
4302
+ useCallback as useCallback15,
4302
4303
  useEffect as useEffect16,
4303
4304
  useImperativeHandle as useImperativeHandle6,
4304
4305
  useMemo as useMemo29,
@@ -4309,7 +4310,7 @@ import { jsx as jsx24 } from "react/jsx-runtime";
4309
4310
  import {
4310
4311
  createContext as createContext23,
4311
4312
  forwardRef as forwardRef9,
4312
- useCallback as useCallback15,
4313
+ useCallback as useCallback16,
4313
4314
  useContext as useContext31,
4314
4315
  useLayoutEffect as useLayoutEffect9,
4315
4316
  useMemo as useMemo30,
@@ -4318,7 +4319,7 @@ import {
4318
4319
  import { jsx as jsx25 } from "react/jsx-runtime";
4319
4320
  import {
4320
4321
  forwardRef as forwardRef10,
4321
- useCallback as useCallback16,
4322
+ useCallback as useCallback17,
4322
4323
  useContext as useContext32,
4323
4324
  useEffect as useEffect17,
4324
4325
  useImperativeHandle as useImperativeHandle7,
@@ -4327,16 +4328,16 @@ import {
4327
4328
  useState as useState16
4328
4329
  } from "react";
4329
4330
  import { jsx as jsx26 } from "react/jsx-runtime";
4330
- import { forwardRef as forwardRef11, useCallback as useCallback17, useState as useState17 } from "react";
4331
+ import { forwardRef as forwardRef11, useCallback as useCallback18, useState as useState17 } from "react";
4331
4332
  import { jsx as jsx27 } from "react/jsx-runtime";
4332
- import { useCallback as useCallback18, useContext as useContext33, useLayoutEffect as useLayoutEffect10, useRef as useRef24 } from "react";
4333
+ import { useCallback as useCallback19, useContext as useContext33, useLayoutEffect as useLayoutEffect10, useRef as useRef24 } from "react";
4333
4334
  import { jsx as jsx28 } from "react/jsx-runtime";
4334
- import React29, { forwardRef as forwardRef12, useCallback as useCallback19, useRef as useRef25 } from "react";
4335
+ import React29, { forwardRef as forwardRef12, useCallback as useCallback20, useRef as useRef25 } from "react";
4335
4336
  import { jsx as jsx29 } from "react/jsx-runtime";
4336
4337
  import { createRef as createRef3 } from "react";
4337
4338
  import React30 from "react";
4338
4339
  import {
4339
- useCallback as useCallback20,
4340
+ useCallback as useCallback21,
4340
4341
  useImperativeHandle as useImperativeHandle8,
4341
4342
  useMemo as useMemo32,
4342
4343
  useRef as useRef26,
@@ -4351,9 +4352,9 @@ import { jsx as jsx32 } from "react/jsx-runtime";
4351
4352
  import React33 from "react";
4352
4353
  import React34, { createContext as createContext25 } from "react";
4353
4354
  import React35, { useContext as useContext35 } from "react";
4354
- import { useCallback as useCallback23 } from "react";
4355
+ import { useCallback as useCallback24 } from "react";
4355
4356
  import {
4356
- useCallback as useCallback21,
4357
+ useCallback as useCallback22,
4357
4358
  useContext as useContext36,
4358
4359
  useEffect as useEffect18,
4359
4360
  useLayoutEffect as useLayoutEffect11,
@@ -4363,7 +4364,7 @@ import {
4363
4364
  import { jsx as jsx33 } from "react/jsx-runtime";
4364
4365
  import React37, {
4365
4366
  forwardRef as forwardRef13,
4366
- useCallback as useCallback22,
4367
+ useCallback as useCallback23,
4367
4368
  useContext as useContext37,
4368
4369
  useEffect as useEffect20,
4369
4370
  useImperativeHandle as useImperativeHandle9,
@@ -4384,7 +4385,7 @@ import {
4384
4385
  import React40 from "react";
4385
4386
  import { jsx as jsx37 } from "react/jsx-runtime";
4386
4387
  import React42 from "react";
4387
- import { forwardRef as forwardRef16, useCallback as useCallback24, useContext as useContext39 } from "react";
4388
+ import { forwardRef as forwardRef16, useCallback as useCallback25, useContext as useContext39 } from "react";
4388
4389
  import {
4389
4390
  forwardRef as forwardRef15,
4390
4391
  useContext as useContext38,
@@ -5564,7 +5565,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
5564
5565
  var addSequenceStackTraces = (component) => {
5565
5566
  componentsToAddStacksTo.push(component);
5566
5567
  };
5567
- var VERSION = "4.0.476";
5568
+ var VERSION = "4.0.477";
5568
5569
  var checkMultipleRemotionVersions = () => {
5569
5570
  if (typeof globalThis === "undefined") {
5570
5571
  return;
@@ -6023,10 +6024,17 @@ var fromField = {
6023
6024
  step: 1,
6024
6025
  hiddenFromList: true
6025
6026
  };
6027
+ var freezeField = {
6028
+ type: "number",
6029
+ default: null,
6030
+ step: 1,
6031
+ hiddenFromList: true
6032
+ };
6026
6033
  var sequenceSchema = extendSchemaWithSequenceName({
6027
6034
  hidden: hiddenField,
6028
6035
  showInTimeline: showInTimelineField,
6029
6036
  from: fromField,
6037
+ freeze: freezeField,
6030
6038
  durationInFrames: durationInFramesField,
6031
6039
  layout: {
6032
6040
  type: "enum",
@@ -6041,6 +6049,7 @@ var sequenceSchema = extendSchemaWithSequenceName({
6041
6049
  var sequenceSchemaWithoutFrom = extendSchemaWithSequenceName({
6042
6050
  hidden: hiddenField,
6043
6051
  showInTimeline: showInTimelineField,
6052
+ freeze: freezeField,
6044
6053
  durationInFrames: durationInFramesField,
6045
6054
  layout: sequenceSchema.layout
6046
6055
  });
@@ -8232,6 +8241,7 @@ var mergeValues = ({
8232
8241
  var stackToOverrideMap = {};
8233
8242
  var wrapInSchema = ({
8234
8243
  Component,
8244
+ componentIdentity,
8235
8245
  schema,
8236
8246
  supportsEffects
8237
8247
  }) => {
@@ -8278,7 +8288,8 @@ var wrapInSchema = ({
8278
8288
  schema: schemaWithSequenceName,
8279
8289
  currentRuntimeValueDotNotation,
8280
8290
  overrideId,
8281
- supportsEffects
8291
+ supportsEffects,
8292
+ componentIdentity
8282
8293
  };
8283
8294
  }, [currentRuntimeValueDotNotation, overrideId]);
8284
8295
  const { merged: valuesDotNotation, propsToDelete } = useMemo13(() => {
@@ -8315,6 +8326,7 @@ var wrapInSchema = ({
8315
8326
  var EMPTY_EFFECTS = [];
8316
8327
  var RegularSequenceRefForwardingFunction = ({
8317
8328
  from = 0,
8329
+ freeze,
8318
8330
  durationInFrames = Infinity,
8319
8331
  children,
8320
8332
  name,
@@ -8330,7 +8342,7 @@ var RegularSequenceRefForwardingFunction = ({
8330
8342
  _remotionInternalPremountDisplay: premountDisplay,
8331
8343
  _remotionInternalPostmountDisplay: postmountDisplay,
8332
8344
  _remotionInternalIsMedia: isMedia,
8333
- _remotionInternalRefForOutline: refForOutline,
8345
+ _remotionInternalRefForOutline: passedRefForOutline,
8334
8346
  ...other
8335
8347
  }, ref) => {
8336
8348
  const { layout = "absolute-fill" } = other;
@@ -8358,11 +8370,24 @@ var RegularSequenceRefForwardingFunction = ({
8358
8370
  if (!Number.isFinite(from)) {
8359
8371
  throw new TypeError(`The "from" prop of a sequence must be finite, but got ${from}.`);
8360
8372
  }
8373
+ if (typeof freeze !== "undefined" && freeze !== null) {
8374
+ if (typeof freeze !== "number") {
8375
+ throw new TypeError(`The "freeze" prop of <Sequence /> must be a number, but is of type ${typeof freeze}.`);
8376
+ }
8377
+ if (Number.isNaN(freeze)) {
8378
+ throw new TypeError(`The "freeze" prop of <Sequence /> must be a real number, but it is NaN.`);
8379
+ }
8380
+ if (!Number.isFinite(freeze)) {
8381
+ throw new TypeError(`The "freeze" prop of <Sequence /> must be finite, but it is ${freeze}.`);
8382
+ }
8383
+ }
8361
8384
  const absoluteFrame = useTimelinePosition();
8362
8385
  const videoConfig = useVideoConfig();
8363
8386
  const parentSequenceDuration = parentSequence ? Math.min(parentSequence.durationInFrames - from, durationInFrames) : durationInFrames;
8364
8387
  const actualDurationInFrames = Math.max(0, Math.min(videoConfig.durationInFrames - from, parentSequenceDuration));
8365
8388
  const { registerSequence, unregisterSequence } = useContext17(SequenceManager);
8389
+ const wrapperRefForOutline = useRef6(null);
8390
+ const refForOutline = other.layout === "none" ? passedRefForOutline ?? null : passedRefForOutline ?? wrapperRefForOutline;
8366
8391
  const premounting = useMemo14(() => {
8367
8392
  return parentSequence?.premounting || Boolean(other._remotionInternalIsPremounting);
8368
8393
  }, [other._remotionInternalIsPremounting, parentSequence?.premounting]);
@@ -8521,7 +8546,19 @@ var RegularSequenceRefForwardingFunction = ({
8521
8546
  ]);
8522
8547
  const endThreshold = Math.ceil(cumulatedFrom + from + durationInFrames - 1);
8523
8548
  const content = absoluteFrame < cumulatedFrom + from ? null : absoluteFrame > endThreshold ? null : children;
8549
+ const frozenContent = content === null || typeof freeze === "undefined" || freeze === null ? content : /* @__PURE__ */ jsx12(Freeze, {
8550
+ frame: freeze,
8551
+ children: content
8552
+ });
8524
8553
  const styleIfThere = other.layout === "none" ? undefined : other.style;
8554
+ const sequenceRef = useCallback6((node) => {
8555
+ wrapperRefForOutline.current = node;
8556
+ if (typeof ref === "function") {
8557
+ ref(node);
8558
+ } else if (ref) {
8559
+ ref.current = node;
8560
+ }
8561
+ }, [ref]);
8525
8562
  const defaultStyle = useMemo14(() => {
8526
8563
  return {
8527
8564
  flexDirection: undefined,
@@ -8538,11 +8575,11 @@ var RegularSequenceRefForwardingFunction = ({
8538
8575
  }
8539
8576
  return /* @__PURE__ */ jsx12(SequenceContext.Provider, {
8540
8577
  value: contextValue,
8541
- children: content === null ? null : other.layout === "none" ? content : /* @__PURE__ */ jsx12(AbsoluteFill, {
8542
- ref,
8578
+ children: frozenContent === null ? null : other.layout === "none" ? frozenContent : /* @__PURE__ */ jsx12(AbsoluteFill, {
8579
+ ref: sequenceRef,
8543
8580
  style: defaultStyle,
8544
8581
  className: other.className,
8545
- children: content
8582
+ children: frozenContent
8546
8583
  })
8547
8584
  });
8548
8585
  };
@@ -8622,11 +8659,13 @@ var SequenceInner = forwardRef3(SequenceRefForwardingFunction);
8622
8659
  var SequenceWithoutSchema = SequenceInner;
8623
8660
  var Sequence = wrapInSchema({
8624
8661
  Component: SequenceInner,
8662
+ componentIdentity: "dev.remotion.remotion.Sequence",
8625
8663
  schema: sequenceSchema,
8626
8664
  supportsEffects: false
8627
8665
  });
8628
8666
  var SequenceWithoutFrom = wrapInSchema({
8629
8667
  Component: SequenceInner,
8668
+ componentIdentity: null,
8630
8669
  schema: sequenceSchemaWithoutFrom,
8631
8670
  supportsEffects: false
8632
8671
  });
@@ -8944,7 +8983,7 @@ var CanvasRefForwardingFunction = ({ width, height, fit, className, style, effec
8944
8983
  }
8945
8984
  return document.createElement("canvas");
8946
8985
  }, []);
8947
- const draw = useCallback6((imageData) => {
8986
+ const draw = useCallback7((imageData) => {
8948
8987
  const canvas = canvasRef.current;
8949
8988
  const canvasWidth = width ?? imageData.displayWidth;
8950
8989
  const canvasHeight = height ?? imageData.displayHeight;
@@ -9165,6 +9204,7 @@ var resolveAnimatedImageSource = (src) => {
9165
9204
  var animatedImageSchema = {
9166
9205
  durationInFrames: durationInFramesField,
9167
9206
  from: fromField,
9207
+ freeze: freezeField,
9168
9208
  playbackRate: {
9169
9209
  type: "number",
9170
9210
  min: 0,
@@ -9364,6 +9404,7 @@ var AnimatedImageInner = ({
9364
9404
  };
9365
9405
  var AnimatedImage = wrapInSchema({
9366
9406
  Component: AnimatedImageInner,
9407
+ componentIdentity: "dev.remotion.remotion.AnimatedImage",
9367
9408
  schema: animatedImageSchema,
9368
9409
  supportsEffects: true
9369
9410
  });
@@ -9410,7 +9451,7 @@ var RenderAssetManager = createContext17({
9410
9451
  var RenderAssetManagerProvider = ({ children, collectAssets }) => {
9411
9452
  const [renderAssets, setRenderAssets] = useState7([]);
9412
9453
  const renderAssetsRef = useRef10([]);
9413
- const registerRenderAsset = useCallback7((renderAsset) => {
9454
+ const registerRenderAsset = useCallback8((renderAsset) => {
9414
9455
  validateRenderAsset(renderAsset);
9415
9456
  renderAssetsRef.current = [...renderAssetsRef.current, renderAsset];
9416
9457
  setRenderAssets(renderAssetsRef.current);
@@ -9427,7 +9468,7 @@ var RenderAssetManagerProvider = ({ children, collectAssets }) => {
9427
9468
  };
9428
9469
  }, []);
9429
9470
  }
9430
- const unregisterRenderAsset = useCallback7((id) => {
9471
+ const unregisterRenderAsset = useCallback8((id) => {
9431
9472
  renderAssetsRef.current = renderAssetsRef.current.filter((a2) => a2.id !== id);
9432
9473
  setRenderAssets(renderAssetsRef.current);
9433
9474
  }, []);
@@ -10232,7 +10273,7 @@ var SharedAudioContextProvider = ({ children, audioLatencyHint, audioEnabled, pr
10232
10273
  }, []);
10233
10274
  const prevEndTimes = useRef12({ scheduledEndTime: null, mediaEndTime: null });
10234
10275
  const nodesToResume = useRef12(new Map);
10235
- const unscheduleAudioNode = useCallback8((node) => {
10276
+ const unscheduleAudioNode = useCallback9((node) => {
10236
10277
  nodesToResume.current.delete(node);
10237
10278
  }, []);
10238
10279
  const scheduleAudioNode = useMemo21(() => {
@@ -10286,7 +10327,7 @@ var SharedAudioContextProvider = ({ children, audioLatencyHint, audioEnabled, pr
10286
10327
  };
10287
10328
  };
10288
10329
  }, [ctxAndGain, logLevel]);
10289
- const resume = useCallback8(() => {
10330
+ const resume = useCallback9(() => {
10290
10331
  if (!ctxAndGain) {
10291
10332
  return Promise.resolve();
10292
10333
  }
@@ -10313,10 +10354,10 @@ var SharedAudioContextProvider = ({ children, audioLatencyHint, audioEnabled, pr
10313
10354
  });
10314
10355
  return resumePromise.catch(() => {});
10315
10356
  }, [ctxAndGain, logLevel]);
10316
- const getIsResumingAudioContext = useCallback8(() => {
10357
+ const getIsResumingAudioContext = useCallback9(() => {
10317
10358
  return isResuming.current;
10318
10359
  }, []);
10319
- const suspend = useCallback8(() => {
10360
+ const suspend = useCallback9(() => {
10320
10361
  if (!ctxAndGain) {
10321
10362
  return Promise.resolve();
10322
10363
  }
@@ -10390,7 +10431,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
10390
10431
  };
10391
10432
  }, [refs]);
10392
10433
  const takenAudios = useRef12(new Array(numberOfAudioTags).fill(false));
10393
- const rerenderAudios = useCallback8(() => {
10434
+ const rerenderAudios = useCallback9(() => {
10394
10435
  refs.forEach(({ ref, id }) => {
10395
10436
  const data = audios.current?.find((a2) => a2.id === id);
10396
10437
  const { current } = ref;
@@ -10411,7 +10452,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
10411
10452
  });
10412
10453
  });
10413
10454
  }, [refs]);
10414
- const registerAudio = useCallback8((options) => {
10455
+ const registerAudio = useCallback9((options) => {
10415
10456
  const { aud, audioId, premounting, postmounting } = options;
10416
10457
  const found = audios.current?.find((a2) => a2.audioId === audioId);
10417
10458
  if (found) {
@@ -10440,7 +10481,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
10440
10481
  rerenderAudios();
10441
10482
  return newElem;
10442
10483
  }, [numberOfAudioTags, refs, rerenderAudios]);
10443
- const unregisterAudio = useCallback8((id) => {
10484
+ const unregisterAudio = useCallback9((id) => {
10444
10485
  const cloned = [...takenAudios.current];
10445
10486
  const index = refs.findIndex((r2) => r2.id === id);
10446
10487
  if (index === -1) {
@@ -10451,7 +10492,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
10451
10492
  audios.current = audios.current?.filter((a2) => a2.id !== id);
10452
10493
  rerenderAudios();
10453
10494
  }, [refs, rerenderAudios]);
10454
- const updateAudio = useCallback8(({
10495
+ const updateAudio = useCallback9(({
10455
10496
  aud,
10456
10497
  audioId,
10457
10498
  id,
@@ -10485,7 +10526,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
10485
10526
  rerenderAudios();
10486
10527
  }
10487
10528
  }, [rerenderAudios]);
10488
- const playAllAudios = useCallback8(() => {
10529
+ const playAllAudios = useCallback9(() => {
10489
10530
  refs.forEach((ref) => {
10490
10531
  const audio = audios.current.find((a2) => a2.el === ref.ref);
10491
10532
  if (audio?.premounting) {
@@ -11033,7 +11074,7 @@ var useBufferManager = (logLevel, mountTime) => {
11033
11074
  const env = useRemotionEnvironment();
11034
11075
  const rendering = env.isRendering;
11035
11076
  const buffering = useRef15(false);
11036
- const addBlock = useCallback9((block) => {
11077
+ const addBlock = useCallback10((block) => {
11037
11078
  if (rendering) {
11038
11079
  return {
11039
11080
  unblock: () => {
@@ -11059,7 +11100,7 @@ var useBufferManager = (logLevel, mountTime) => {
11059
11100
  }
11060
11101
  };
11061
11102
  }, [rendering]);
11062
- const listenForBuffering = useCallback9((callback) => {
11103
+ const listenForBuffering = useCallback10((callback) => {
11063
11104
  setOnBufferingCallbacks((c2) => [...c2, callback]);
11064
11105
  return {
11065
11106
  remove: () => {
@@ -11067,7 +11108,7 @@ var useBufferManager = (logLevel, mountTime) => {
11067
11108
  }
11068
11109
  };
11069
11110
  }, []);
11070
- const listenForResume = useCallback9((callback) => {
11111
+ const listenForResume = useCallback10((callback) => {
11071
11112
  setOnResumeCallbacks((c2) => [...c2, callback]);
11072
11113
  return {
11073
11114
  remove: () => {
@@ -11181,7 +11222,7 @@ var useBufferUntilFirstFrame = ({
11181
11222
  }) => {
11182
11223
  const bufferingRef = useRef16(false);
11183
11224
  const { delayPlayback } = useBufferState();
11184
- const bufferUntilFirstFrame = useCallback10((requestedTime) => {
11225
+ const bufferUntilFirstFrame = useCallback11((requestedTime) => {
11185
11226
  if (mediaType !== "video") {
11186
11227
  return;
11187
11228
  }
@@ -11571,7 +11612,7 @@ var useMediaPlayback = ({
11571
11612
  throw new Error("useMediaPlayback must be used inside a <BufferingContext>");
11572
11613
  }
11573
11614
  const isVariableFpsVideoMap = useRef18({});
11574
- const onVariableFpsVideoDetected = useCallback11(() => {
11615
+ const onVariableFpsVideoDetected = useCallback12(() => {
11575
11616
  if (!src) {
11576
11617
  return;
11577
11618
  }
@@ -11962,7 +12003,7 @@ var AudioForDevelopmentForwardRefFunction = (props, ref) => {
11962
12003
  premounting: Boolean(sequenceContext?.premounting),
11963
12004
  postmounting: Boolean(sequenceContext?.postmounting)
11964
12005
  });
11965
- const getStack = useCallback12(() => {
12006
+ const getStack = useCallback13(() => {
11966
12007
  return _remotionInternalStack ?? null;
11967
12008
  }, [_remotionInternalStack]);
11968
12009
  useMediaInTimeline({
@@ -12208,7 +12249,7 @@ var AudioRefForwardingFunction = (props, ref) => {
12208
12249
  throw new TypeError(`The \`<Html5Audio>\` tag requires a string for \`src\`, but got ${JSON.stringify(props.src)} instead.`);
12209
12250
  }
12210
12251
  const preloadedSrc = usePreload(props.src);
12211
- const onError = useCallback13((e) => {
12252
+ const onError = useCallback14((e) => {
12212
12253
  console.log(e.currentTarget.error);
12213
12254
  const errMessage = `Could not play audio with src ${preloadedSrc}: ${e.currentTarget.error}. See https://remotion.dev/docs/media-playback-error for help.`;
12214
12255
  if (loop) {
@@ -12222,7 +12263,7 @@ var AudioRefForwardingFunction = (props, ref) => {
12222
12263
  console.warn(errMessage);
12223
12264
  }
12224
12265
  }, [loop, onRemotionError, preloadedSrc]);
12225
- const onDuration = useCallback13((src, durationInSeconds) => {
12266
+ const onDuration = useCallback14((src, durationInSeconds) => {
12226
12267
  setDurations({ type: "got-duration", durationInSeconds, src });
12227
12268
  }, [setDurations]);
12228
12269
  const durationFetched = durations[getAbsoluteSrc(preloadedSrc)] ?? durations[getAbsoluteSrc(props.src)];
@@ -12314,6 +12355,7 @@ var resolveSolidPixelDensity = (pixelDensity) => {
12314
12355
  var solidSchema = {
12315
12356
  durationInFrames: durationInFramesField,
12316
12357
  from: fromField,
12358
+ freeze: freezeField,
12317
12359
  color: {
12318
12360
  type: "color",
12319
12361
  default: "transparent",
@@ -12368,7 +12410,7 @@ var SolidInner = ({
12368
12410
  return canvas;
12369
12411
  }, []);
12370
12412
  const chainState = useEffectChainState();
12371
- const canvasRef = useCallback14((canvas) => {
12413
+ const canvasRef = useCallback15((canvas) => {
12372
12414
  setOutputCanvas(canvas);
12373
12415
  if (typeof reference === "function") {
12374
12416
  reference(canvas);
@@ -12452,6 +12494,7 @@ var SolidOuter = forwardRef8(({
12452
12494
  style,
12453
12495
  name,
12454
12496
  from,
12497
+ freeze,
12455
12498
  hidden,
12456
12499
  showInTimeline,
12457
12500
  pixelDensity,
@@ -12465,6 +12508,7 @@ var SolidOuter = forwardRef8(({
12465
12508
  return /* @__PURE__ */ jsx24(Sequence, {
12466
12509
  layout: "none",
12467
12510
  from,
12511
+ freeze,
12468
12512
  hidden,
12469
12513
  showInTimeline,
12470
12514
  _experimentalControls: controls,
@@ -12489,6 +12533,7 @@ var SolidOuter = forwardRef8(({
12489
12533
  });
12490
12534
  var Solid = wrapInSchema({
12491
12535
  Component: SolidOuter,
12536
+ componentIdentity: "dev.remotion.remotion.Solid",
12492
12537
  schema: solidSchema,
12493
12538
  supportsEffects: true
12494
12539
  });
@@ -12578,7 +12623,7 @@ var HtmlInCanvasContent = forwardRef9(({
12578
12623
  const offscreenRef = useRef22(null);
12579
12624
  const divRef = useRef22(null);
12580
12625
  const canvasSizeKey = `${width}x${height}@${resolvedPixelDensity}`;
12581
- const setLayoutCanvasRef = useCallback15((node) => {
12626
+ const setLayoutCanvasRef = useCallback16((node) => {
12582
12627
  canvas2dRef.current = node;
12583
12628
  if (typeof ref === "function") {
12584
12629
  ref(node);
@@ -12600,7 +12645,7 @@ var HtmlInCanvasContent = forwardRef9(({
12600
12645
  const initializedRef = useRef22(false);
12601
12646
  const onInitCleanupRef = useRef22(null);
12602
12647
  const unmountedRef = useRef22(false);
12603
- const onPaintCb = useCallback15(async () => {
12648
+ const onPaintCb = useCallback16(async () => {
12604
12649
  const element = divRef.current;
12605
12650
  if (!element) {
12606
12651
  throw new Error("Canvas or scene element not found");
@@ -12773,7 +12818,7 @@ var HtmlInCanvasInner = forwardRef9(({
12773
12818
  const resolvedDuration = durationInFrames ?? videoDuration;
12774
12819
  const memoizedEffectDefinitions = useMemoizedEffectDefinitions(effects);
12775
12820
  const actualRef = useRef22(null);
12776
- const setCanvasRef = useCallback15((node) => {
12821
+ const setCanvasRef = useCallback16((node) => {
12777
12822
  actualRef.current = node;
12778
12823
  if (typeof ref === "function") {
12779
12824
  ref(node);
@@ -12808,11 +12853,13 @@ HtmlInCanvasInner.displayName = "HtmlInCanvas";
12808
12853
  var htmlInCanvasSchema = {
12809
12854
  durationInFrames: durationInFramesField,
12810
12855
  from: fromField,
12856
+ freeze: freezeField,
12811
12857
  ...sequenceVisualStyleSchema,
12812
12858
  hidden: hiddenField
12813
12859
  };
12814
12860
  var HtmlInCanvasWrapped = wrapInSchema({
12815
12861
  Component: HtmlInCanvasInner,
12862
+ componentIdentity: "dev.remotion.remotion.HtmlInCanvas",
12816
12863
  schema: htmlInCanvasSchema,
12817
12864
  supportsEffects: true
12818
12865
  });
@@ -12830,6 +12877,7 @@ function truncateSrcForLabel(src) {
12830
12877
  var canvasImageSchema = {
12831
12878
  durationInFrames: durationInFramesField,
12832
12879
  from: fromField,
12880
+ freeze: freezeField,
12833
12881
  fit: {
12834
12882
  type: "enum",
12835
12883
  default: "fill",
@@ -12935,7 +12983,7 @@ var CanvasImageContent = forwardRef10(({
12935
12983
  }
12936
12984
  return document.createElement("canvas");
12937
12985
  }, []);
12938
- const canvasRef = useCallback16((canvas) => {
12986
+ const canvasRef = useCallback17((canvas) => {
12939
12987
  setOutputCanvas(canvas);
12940
12988
  if (refForOutline) {
12941
12989
  refForOutline.current = canvas;
@@ -13082,6 +13130,7 @@ var CanvasImageInner = forwardRef10(({
13082
13130
  delayRenderTimeoutInMilliseconds,
13083
13131
  durationInFrames,
13084
13132
  from,
13133
+ freeze,
13085
13134
  hidden,
13086
13135
  name,
13087
13136
  showInTimeline,
@@ -13103,6 +13152,7 @@ var CanvasImageInner = forwardRef10(({
13103
13152
  layout: "none",
13104
13153
  from: from ?? 0,
13105
13154
  durationInFrames: durationInFrames ?? Infinity,
13155
+ freeze,
13106
13156
  hidden,
13107
13157
  showInTimeline: showInTimeline ?? true,
13108
13158
  name: name ?? "<CanvasImage>",
@@ -13135,6 +13185,7 @@ var CanvasImageInner = forwardRef10(({
13135
13185
  });
13136
13186
  var CanvasImage = wrapInSchema({
13137
13187
  Component: CanvasImageInner,
13188
+ componentIdentity: "dev.remotion.remotion.CanvasImage",
13138
13189
  schema: canvasImageSchema,
13139
13190
  supportsEffects: true
13140
13191
  });
@@ -13152,11 +13203,11 @@ var IFrameRefForwarding = ({
13152
13203
  retries: delayRenderRetries ?? undefined,
13153
13204
  timeoutInMilliseconds: delayRenderTimeoutInMilliseconds ?? undefined
13154
13205
  }));
13155
- const didLoad = useCallback17((e) => {
13206
+ const didLoad = useCallback18((e) => {
13156
13207
  continueRender2(handle);
13157
13208
  onLoad?.(e);
13158
13209
  }, [handle, onLoad, continueRender2]);
13159
- const didGetError = useCallback17((e) => {
13210
+ const didGetError = useCallback18((e) => {
13160
13211
  continueRender2(handle);
13161
13212
  if (onError) {
13162
13213
  onError(e);
@@ -13198,7 +13249,7 @@ var ImgContent = ({
13198
13249
  if (!_propsValid) {
13199
13250
  throw new Error("typecheck error");
13200
13251
  }
13201
- const imageCallbackRef = useCallback18((img) => {
13252
+ const imageCallbackRef = useCallback19((img) => {
13202
13253
  imageRef.current = img;
13203
13254
  refForOutline.current = img;
13204
13255
  if (typeof ref === "function") {
@@ -13208,7 +13259,7 @@ var ImgContent = ({
13208
13259
  }
13209
13260
  }, [ref, refForOutline]);
13210
13261
  const actualSrc = usePreload(src);
13211
- const retryIn = useCallback18((timeout) => {
13262
+ const retryIn = useCallback19((timeout) => {
13212
13263
  if (!imageRef.current) {
13213
13264
  return;
13214
13265
  }
@@ -13226,7 +13277,7 @@ var ImgContent = ({
13226
13277
  }, timeout);
13227
13278
  }, []);
13228
13279
  const { delayRender: delayRender2, continueRender: continueRender2, cancelRender: cancelRender2 } = useDelayRender();
13229
- const didGetError = useCallback18((e) => {
13280
+ const didGetError = useCallback19((e) => {
13230
13281
  if (!errors.current) {
13231
13282
  return;
13232
13283
  }
@@ -13336,6 +13387,7 @@ var NativeImgInner = ({
13336
13387
  src,
13337
13388
  from,
13338
13389
  durationInFrames,
13390
+ freeze,
13339
13391
  _experimentalControls: controls,
13340
13392
  _remotionInternalRefForOutline: refForOutline,
13341
13393
  ...props2
@@ -13347,6 +13399,7 @@ var NativeImgInner = ({
13347
13399
  layout: "none",
13348
13400
  from: from ?? 0,
13349
13401
  durationInFrames: durationInFrames ?? Infinity,
13402
+ freeze,
13350
13403
  _remotionInternalStack: stack,
13351
13404
  _remotionInternalDocumentationLink: "https://www.remotion.dev/docs/img",
13352
13405
  _remotionInternalIsMedia: { type: "image", src },
@@ -13366,6 +13419,7 @@ var CanvasImageWithPrivateProps = CanvasImage;
13366
13419
  var imgSchema = {
13367
13420
  durationInFrames: durationInFramesField,
13368
13421
  from: fromField,
13422
+ freeze: freezeField,
13369
13423
  ...sequenceVisualStyleSchema,
13370
13424
  hidden: hiddenField
13371
13425
  };
@@ -13421,6 +13475,7 @@ var ImgInner = ({
13421
13475
  src,
13422
13476
  from,
13423
13477
  durationInFrames,
13478
+ freeze,
13424
13479
  _experimentalControls: controls,
13425
13480
  width,
13426
13481
  height,
@@ -13445,6 +13500,7 @@ var ImgInner = ({
13445
13500
  src,
13446
13501
  from,
13447
13502
  durationInFrames,
13503
+ freeze,
13448
13504
  _experimentalControls: controls,
13449
13505
  width,
13450
13506
  height,
@@ -13486,6 +13542,7 @@ var ImgInner = ({
13486
13542
  delayRenderTimeoutInMilliseconds,
13487
13543
  from,
13488
13544
  durationInFrames,
13545
+ freeze,
13489
13546
  hidden,
13490
13547
  name: name ?? "<Img>",
13491
13548
  showInTimeline,
@@ -13498,6 +13555,7 @@ var ImgInner = ({
13498
13555
  };
13499
13556
  var Img = wrapInSchema({
13500
13557
  Component: ImgInner,
13558
+ componentIdentity: "dev.remotion.remotion.Img",
13501
13559
  schema: imgSchema,
13502
13560
  supportsEffects: true
13503
13561
  });
@@ -13505,6 +13563,7 @@ addSequenceStackTraces(Img);
13505
13563
  var interactiveElementSchema = {
13506
13564
  durationInFrames: durationInFramesField,
13507
13565
  from: fromField,
13566
+ freeze: freezeField,
13508
13567
  ...sequenceVisualStyleSchema,
13509
13568
  hidden: hiddenField
13510
13569
  };
@@ -13520,6 +13579,7 @@ var makeInteractiveElement = (tag, displayName) => {
13520
13579
  const {
13521
13580
  durationInFrames,
13522
13581
  from,
13582
+ freeze,
13523
13583
  hidden,
13524
13584
  name,
13525
13585
  showInTimeline,
@@ -13528,7 +13588,7 @@ var makeInteractiveElement = (tag, displayName) => {
13528
13588
  ...props2
13529
13589
  } = propsWithControls;
13530
13590
  const refForOutline = useRef25(null);
13531
- const callbackRef = useCallback19((element) => {
13591
+ const callbackRef = useCallback20((element) => {
13532
13592
  refForOutline.current = element;
13533
13593
  setRef(ref, element);
13534
13594
  }, [ref]);
@@ -13536,6 +13596,7 @@ var makeInteractiveElement = (tag, displayName) => {
13536
13596
  layout: "none",
13537
13597
  from: from ?? 0,
13538
13598
  durationInFrames: durationInFrames ?? Infinity,
13599
+ freeze,
13539
13600
  hidden,
13540
13601
  name: name ?? displayName,
13541
13602
  showInTimeline: showInTimeline ?? true,
@@ -13552,6 +13613,7 @@ var makeInteractiveElement = (tag, displayName) => {
13552
13613
  Inner.displayName = displayName;
13553
13614
  const Wrapped = wrapInSchema({
13554
13615
  Component: Inner,
13616
+ componentIdentity: `dev.remotion.remotion.${displayName.slice(1, -1)}`,
13555
13617
  schema: interactiveElementSchema,
13556
13618
  supportsEffects: false
13557
13619
  });
@@ -13608,14 +13670,14 @@ var CompositionManagerProvider = ({
13608
13670
  const [canvasContent, setCanvasContent] = useState18(initialCanvasContent);
13609
13671
  const [compositions, setCompositions] = useState18(initialCompositions);
13610
13672
  const currentcompositionsRef = useRef26(compositions);
13611
- const updateCompositions = useCallback20((updateComps) => {
13673
+ const updateCompositions = useCallback21((updateComps) => {
13612
13674
  setCompositions((comps) => {
13613
13675
  const updated = updateComps(comps);
13614
13676
  currentcompositionsRef.current = updated;
13615
13677
  return updated;
13616
13678
  });
13617
13679
  }, []);
13618
- const registerComposition = useCallback20((comp) => {
13680
+ const registerComposition = useCallback21((comp) => {
13619
13681
  updateCompositions((comps) => {
13620
13682
  if (comps.find((c2) => c2.id === comp.id)) {
13621
13683
  throw new Error(`Multiple composition with id ${comp.id} are registered.`);
@@ -13623,12 +13685,12 @@ var CompositionManagerProvider = ({
13623
13685
  return [...comps, comp];
13624
13686
  });
13625
13687
  }, [updateCompositions]);
13626
- const unregisterComposition = useCallback20((id) => {
13688
+ const unregisterComposition = useCallback21((id) => {
13627
13689
  setCompositions((comps) => {
13628
13690
  return comps.filter((c2) => c2.id !== id);
13629
13691
  });
13630
13692
  }, []);
13631
- const registerFolder = useCallback20((name, parent, nonce, stack) => {
13693
+ const registerFolder = useCallback21((name, parent, nonce, stack) => {
13632
13694
  setFolders((prevFolders) => {
13633
13695
  return [
13634
13696
  ...prevFolders,
@@ -13641,7 +13703,7 @@ var CompositionManagerProvider = ({
13641
13703
  ];
13642
13704
  });
13643
13705
  }, []);
13644
- const unregisterFolder = useCallback20((name, parent) => {
13706
+ const unregisterFolder = useCallback21((name, parent) => {
13645
13707
  setFolders((prevFolders) => {
13646
13708
  return prevFolders.filter((p) => !(p.name === name && p.parent === parent));
13647
13709
  });
@@ -14280,7 +14342,7 @@ var OffthreadVideoForRendering = ({
14280
14342
  continueRender2,
14281
14343
  delayRender2
14282
14344
  ]);
14283
- const onErr = useCallback21(() => {
14345
+ const onErr = useCallback22(() => {
14284
14346
  if (onError) {
14285
14347
  onError?.(new Error("Failed to load image with src " + imageSrc));
14286
14348
  } else {
@@ -14290,7 +14352,7 @@ var OffthreadVideoForRendering = ({
14290
14352
  const className = useMemo35(() => {
14291
14353
  return [OBJECTFIT_CONTAIN_CLASS_NAME, props2.className].filter(truthy).join(" ");
14292
14354
  }, [props2.className]);
14293
- const onImageFrame = useCallback21((img) => {
14355
+ const onImageFrame = useCallback22((img) => {
14294
14356
  if (onVideoFrame) {
14295
14357
  onVideoFrame(img);
14296
14358
  }
@@ -14423,7 +14485,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
14423
14485
  mediaVolume
14424
14486
  });
14425
14487
  warnAboutTooHighVolume(userPreferredVolume);
14426
- const getStack = useCallback22(() => {
14488
+ const getStack = useCallback23(() => {
14427
14489
  return _remotionInternalStack ?? null;
14428
14490
  }, [_remotionInternalStack]);
14429
14491
  useMediaInTimeline({
@@ -14599,7 +14661,7 @@ var InnerOffthreadVideo = (props2) => {
14599
14661
  if (environment.isClientSideRendering) {
14600
14662
  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");
14601
14663
  }
14602
- const onDuration = useCallback23(() => {
14664
+ const onDuration = useCallback24(() => {
14603
14665
  return;
14604
14666
  }, []);
14605
14667
  if (typeof props2.src !== "string") {
@@ -14978,6 +15040,7 @@ var Internals = {
14978
15040
  getEffectPropStatusesCtx,
14979
15041
  hiddenField,
14980
15042
  durationInFramesField,
15043
+ freezeField,
14981
15044
  fromField
14982
15045
  };
14983
15046
  var flattenChildren = (children) => {
@@ -15063,6 +15126,7 @@ var SeriesInner = (props2) => {
15063
15126
  };
15064
15127
  var Series = Object.assign(wrapInSchema({
15065
15128
  Component: SeriesInner,
15129
+ componentIdentity: "dev.remotion.remotion.Series",
15066
15130
  schema: sequenceSchemaDefaultLayoutNone,
15067
15131
  supportsEffects: false
15068
15132
  }), {
@@ -15527,7 +15591,7 @@ var VideoForwardingFunction = (props2, ref) => {
15527
15591
  throw new TypeError(`The \`<Html5Video>\` tag requires a string for \`src\`, but got ${JSON.stringify(props2.src)} instead.`);
15528
15592
  }
15529
15593
  const preloadedSrc = usePreload(props2.src);
15530
- const onDuration = useCallback24((src, durationInSeconds) => {
15594
+ const onDuration = useCallback25((src, durationInSeconds) => {
15531
15595
  setDurations({ type: "got-duration", durationInSeconds, src });
15532
15596
  }, [setDurations]);
15533
15597
  const durationFetched = durations[getAbsoluteSrc(preloadedSrc)] ?? durations[getAbsoluteSrc(props2.src)];
@@ -15637,7 +15701,7 @@ addSequenceStackTraces(Composition);
15637
15701
  addSequenceStackTraces(Folder);
15638
15702
 
15639
15703
  // ../shapes/dist/esm/index.mjs
15640
- import React, { useCallback as useCallback25, useMemo as useMemo40, useRef as useRef29 } from "react";
15704
+ import React, { useCallback as useCallback26, useMemo as useMemo40, useRef as useRef29 } from "react";
15641
15705
  import { version } from "react-dom";
15642
15706
  import { jsx as jsx40, jsxs as jsxs3 } from "react/jsx-runtime";
15643
15707
  import { jsx as jsx210 } from "react/jsx-runtime";
@@ -15649,6 +15713,7 @@ import { jsx as jsx72 } from "react/jsx-runtime";
15649
15713
  import { jsx as jsx82 } from "react/jsx-runtime";
15650
15714
  import { jsx as jsx92 } from "react/jsx-runtime";
15651
15715
  import { jsx as jsx102 } from "react/jsx-runtime";
15716
+ import { jsx as jsx112 } from "react/jsx-runtime";
15652
15717
  var unitDir = (from, to) => {
15653
15718
  const dx = to[0] - from[0];
15654
15719
  const dy = to[1] - from[1];
@@ -15807,6 +15872,7 @@ var RenderSvg = ({
15807
15872
  pixelDensity,
15808
15873
  durationInFrames,
15809
15874
  from,
15875
+ freeze,
15810
15876
  hidden,
15811
15877
  name,
15812
15878
  showInTimeline,
@@ -15827,10 +15893,10 @@ var RenderSvg = ({
15827
15893
  };
15828
15894
  }, [pathStyle]);
15829
15895
  const outlineRef = useRef29(null);
15830
- const setSvgRef = useCallback25((node) => {
15896
+ const setSvgRef = useCallback26((node) => {
15831
15897
  outlineRef.current = node;
15832
15898
  }, []);
15833
- const setCanvasRef = useCallback25((canvas) => {
15899
+ const setCanvasRef = useCallback26((canvas) => {
15834
15900
  outlineRef.current = canvas;
15835
15901
  }, []);
15836
15902
  const memoizedEffectDefinitions = Internals.useMemoizedEffectDefinitions(effects);
@@ -15915,6 +15981,7 @@ var RenderSvg = ({
15915
15981
  return /* @__PURE__ */ jsx40(Sequence, {
15916
15982
  layout: "none",
15917
15983
  from,
15984
+ freeze,
15918
15985
  hidden,
15919
15986
  showInTimeline,
15920
15987
  _experimentalControls: controls,
@@ -15980,6 +16047,7 @@ var enumField = ({
15980
16047
  var makeShapeSchema = (shapeFields) => {
15981
16048
  return {
15982
16049
  from: Internals.sequenceSchema.from,
16050
+ freeze: Internals.sequenceSchema.freeze,
15983
16051
  durationInFrames: Internals.sequenceSchema.durationInFrames,
15984
16052
  ...shapeFields,
15985
16053
  fill: colorField({
@@ -16047,10 +16115,435 @@ var ArrowInner = ({
16047
16115
  };
16048
16116
  var Arrow = Internals.wrapInSchema({
16049
16117
  Component: ArrowInner,
16118
+ componentIdentity: "dev.remotion.shapes.Arrow",
16050
16119
  schema: arrowSchema,
16051
16120
  supportsEffects: true
16052
16121
  });
16053
16122
  Internals.addSequenceStackTraces(Arrow);
16123
+ var shortenVector = (vector, radius) => {
16124
+ const [x, y] = vector;
16125
+ const currentLength = Math.sqrt(x * x + y * y);
16126
+ const scalingFactor = (currentLength - radius) / currentLength;
16127
+ return [x * scalingFactor, y * scalingFactor];
16128
+ };
16129
+ var scaleVectorToLength = (vector, length2) => {
16130
+ const [x, y] = vector;
16131
+ const currentLength = Math.sqrt(x * x + y * y);
16132
+ const scalingFactor = length2 / currentLength;
16133
+ return [x * scalingFactor, y * scalingFactor];
16134
+ };
16135
+ var joinPoints = (points, {
16136
+ edgeRoundness,
16137
+ cornerRadius,
16138
+ roundCornerStrategy
16139
+ }) => {
16140
+ return points.map(([x, y], i) => {
16141
+ const prevPointIndex = i === 0 ? points.length - 2 : i - 1;
16142
+ const prevPoint = points[prevPointIndex];
16143
+ const nextPointIndex = i === points.length - 1 ? 1 : i + 1;
16144
+ const nextPoint = points[nextPointIndex];
16145
+ const middleOfLine = [(x + nextPoint[0]) / 2, (y + nextPoint[1]) / 2];
16146
+ const prevPointMiddleOfLine = [
16147
+ (x + prevPoint[0]) / 2,
16148
+ (y + prevPoint[1]) / 2
16149
+ ];
16150
+ const prevVector = [x - prevPoint[0], y - prevPoint[1]];
16151
+ const nextVector = [nextPoint[0] - x, nextPoint[1] - y];
16152
+ if (i === 0) {
16153
+ if (edgeRoundness !== null) {
16154
+ return [
16155
+ {
16156
+ type: "M",
16157
+ x: middleOfLine[0],
16158
+ y: middleOfLine[1]
16159
+ }
16160
+ ];
16161
+ }
16162
+ if (cornerRadius !== 0) {
16163
+ const computeRadius = shortenVector(nextVector, cornerRadius);
16164
+ return [
16165
+ {
16166
+ type: "M",
16167
+ x: computeRadius[0] + x,
16168
+ y: computeRadius[1] + y
16169
+ }
16170
+ ];
16171
+ }
16172
+ return [
16173
+ {
16174
+ type: "M",
16175
+ x,
16176
+ y
16177
+ }
16178
+ ];
16179
+ }
16180
+ if (cornerRadius && edgeRoundness !== null) {
16181
+ throw new Error(`"cornerRadius" and "edgeRoundness" cannot be specified at the same time.`);
16182
+ }
16183
+ if (edgeRoundness === null) {
16184
+ if (cornerRadius === 0) {
16185
+ return [
16186
+ {
16187
+ type: "L",
16188
+ x,
16189
+ y
16190
+ }
16191
+ ];
16192
+ }
16193
+ const prevVectorMinusRadius = shortenVector(prevVector, cornerRadius);
16194
+ const prevVectorLength = scaleVectorToLength(prevVector, cornerRadius);
16195
+ const nextVectorMinusRadius = scaleVectorToLength(nextVector, cornerRadius);
16196
+ const firstDraw = [
16197
+ prevPoint[0] + prevVectorMinusRadius[0],
16198
+ prevPoint[1] + prevVectorMinusRadius[1]
16199
+ ];
16200
+ return [
16201
+ {
16202
+ type: "L",
16203
+ x: firstDraw[0],
16204
+ y: firstDraw[1]
16205
+ },
16206
+ roundCornerStrategy === "arc" ? {
16207
+ type: "a",
16208
+ rx: cornerRadius,
16209
+ ry: cornerRadius,
16210
+ xAxisRotation: 0,
16211
+ dx: prevVectorLength[0] + nextVectorMinusRadius[0],
16212
+ dy: prevVectorLength[1] + nextVectorMinusRadius[1],
16213
+ largeArcFlag: false,
16214
+ sweepFlag: true
16215
+ } : {
16216
+ type: "C",
16217
+ x: firstDraw[0] + prevVectorLength[0] + nextVectorMinusRadius[0],
16218
+ y: firstDraw[1] + prevVectorLength[1] + nextVectorMinusRadius[1],
16219
+ cp1x: x,
16220
+ cp1y: y,
16221
+ cp2x: x,
16222
+ cp2y: y
16223
+ }
16224
+ ];
16225
+ }
16226
+ const controlPoint1 = [
16227
+ prevPointMiddleOfLine[0] + prevVector[0] * edgeRoundness * 0.5,
16228
+ prevPointMiddleOfLine[1] + prevVector[1] * edgeRoundness * 0.5
16229
+ ];
16230
+ const controlPoint2 = [
16231
+ middleOfLine[0] - nextVector[0] * edgeRoundness * 0.5,
16232
+ middleOfLine[1] - nextVector[1] * edgeRoundness * 0.5
16233
+ ];
16234
+ return [
16235
+ {
16236
+ type: "C",
16237
+ cp1x: controlPoint1[0],
16238
+ cp1y: controlPoint1[1],
16239
+ cp2x: controlPoint2[0],
16240
+ cp2y: controlPoint2[1],
16241
+ x: middleOfLine[0],
16242
+ y: middleOfLine[1]
16243
+ }
16244
+ ];
16245
+ }).flat(1);
16246
+ };
16247
+ var ensurePositive = (name, value) => {
16248
+ if (typeof value !== "number" || value <= 0) {
16249
+ throw new Error(`"${name}" must be a positive number, got ${value}`);
16250
+ }
16251
+ };
16252
+ var pointerInterval = ({
16253
+ availableLength,
16254
+ pointerBaseWidth,
16255
+ pointerPosition
16256
+ }) => {
16257
+ const center = availableLength * pointerPosition;
16258
+ const half = pointerBaseWidth / 2;
16259
+ return {
16260
+ center,
16261
+ start: Math.max(0, center - half),
16262
+ end: Math.min(availableLength, center + half)
16263
+ };
16264
+ };
16265
+ var areSamePoint = (a2, b2) => {
16266
+ return a2[0] === b2[0] && a2[1] === b2[1];
16267
+ };
16268
+ var normalizeClosedPoints = (points) => {
16269
+ const deduplicated = points.reduce((acc, entry) => {
16270
+ const previous = acc[acc.length - 1];
16271
+ if (previous && areSamePoint(previous.point, entry.point)) {
16272
+ acc[acc.length - 1] = {
16273
+ point: previous.point,
16274
+ round: previous.round && entry.round
16275
+ };
16276
+ return acc;
16277
+ }
16278
+ return [...acc, entry];
16279
+ }, []);
16280
+ if (deduplicated.length === 0) {
16281
+ return deduplicated;
16282
+ }
16283
+ const first = deduplicated[0];
16284
+ const last = deduplicated[deduplicated.length - 1];
16285
+ if (areSamePoint(first.point, last.point)) {
16286
+ const [firstEntry, ...rest] = deduplicated;
16287
+ const withoutLast = rest.slice(0, -1);
16288
+ const mergedFirst = {
16289
+ point: firstEntry.point,
16290
+ round: firstEntry.round && last.round
16291
+ };
16292
+ return [mergedFirst, ...withoutLast, mergedFirst];
16293
+ }
16294
+ return [...deduplicated, first];
16295
+ };
16296
+ var unitDir2 = (from, to) => {
16297
+ const dx = to[0] - from[0];
16298
+ const dy = to[1] - from[1];
16299
+ const len = Math.sqrt(dx * dx + dy * dy);
16300
+ if (len === 0) {
16301
+ return [0, 0];
16302
+ }
16303
+ return [dx / len, dy / len];
16304
+ };
16305
+ var makeInstructions2 = ({
16306
+ points,
16307
+ edgeRoundness,
16308
+ cornerRadius
16309
+ }) => {
16310
+ const rawPoints = points.map((p) => p.point);
16311
+ if (edgeRoundness !== null || cornerRadius === 0) {
16312
+ return [
16313
+ ...joinPoints(rawPoints, {
16314
+ edgeRoundness,
16315
+ cornerRadius,
16316
+ roundCornerStrategy: "arc"
16317
+ }),
16318
+ {
16319
+ type: "Z"
16320
+ }
16321
+ ];
16322
+ }
16323
+ const uniquePoints = areSamePoint(points[0].point, points[points.length - 1].point) ? points.slice(0, -1) : points;
16324
+ const firstPoint = uniquePoints[0];
16325
+ const startDir = firstPoint.round ? unitDir2(uniquePoints[0].point, uniquePoints[1].point) : null;
16326
+ const startPoint = startDir ? [
16327
+ firstPoint.point[0] + startDir[0] * cornerRadius,
16328
+ firstPoint.point[1] + startDir[1] * cornerRadius
16329
+ ] : firstPoint.point;
16330
+ const instructions = [
16331
+ { type: "M", x: startPoint[0], y: startPoint[1] }
16332
+ ];
16333
+ for (let i = 1;i < uniquePoints.length; i++) {
16334
+ const current = uniquePoints[i];
16335
+ if (!current.round) {
16336
+ instructions.push({
16337
+ type: "L",
16338
+ x: current.point[0],
16339
+ y: current.point[1]
16340
+ });
16341
+ continue;
16342
+ }
16343
+ const previous = uniquePoints[i - 1].point;
16344
+ const next = uniquePoints[(i + 1) % uniquePoints.length].point;
16345
+ const incoming = unitDir2(previous, current.point);
16346
+ const outgoing = unitDir2(current.point, next);
16347
+ const arcStart = [
16348
+ current.point[0] - incoming[0] * cornerRadius,
16349
+ current.point[1] - incoming[1] * cornerRadius
16350
+ ];
16351
+ instructions.push({
16352
+ type: "L",
16353
+ x: arcStart[0],
16354
+ y: arcStart[1]
16355
+ }, {
16356
+ type: "a",
16357
+ rx: cornerRadius,
16358
+ ry: cornerRadius,
16359
+ xAxisRotation: 0,
16360
+ dx: incoming[0] * cornerRadius + outgoing[0] * cornerRadius,
16361
+ dy: incoming[1] * cornerRadius + outgoing[1] * cornerRadius,
16362
+ largeArcFlag: false,
16363
+ sweepFlag: true
16364
+ });
16365
+ }
16366
+ if (firstPoint.round) {
16367
+ const previous = uniquePoints[uniquePoints.length - 1].point;
16368
+ const incoming = unitDir2(previous, firstPoint.point);
16369
+ instructions.push({
16370
+ type: "L",
16371
+ x: firstPoint.point[0] - incoming[0] * cornerRadius,
16372
+ y: firstPoint.point[1] - incoming[1] * cornerRadius
16373
+ }, {
16374
+ type: "a",
16375
+ rx: cornerRadius,
16376
+ ry: cornerRadius,
16377
+ xAxisRotation: 0,
16378
+ dx: incoming[0] * cornerRadius + startDir[0] * cornerRadius,
16379
+ dy: incoming[1] * cornerRadius + startDir[1] * cornerRadius,
16380
+ largeArcFlag: false,
16381
+ sweepFlag: true
16382
+ });
16383
+ }
16384
+ instructions.push({ type: "Z" });
16385
+ return instructions;
16386
+ };
16387
+ var makeCallout = ({
16388
+ width = 500,
16389
+ height = 200,
16390
+ pointerLength = 40,
16391
+ pointerBaseWidth = 60,
16392
+ pointerPosition = 0.5,
16393
+ pointerDirection = "down",
16394
+ edgeRoundness = null,
16395
+ cornerRadius = 0
16396
+ }) => {
16397
+ ensurePositive("width", width);
16398
+ ensurePositive("height", height);
16399
+ ensurePositive("pointerLength", pointerLength);
16400
+ ensurePositive("pointerBaseWidth", pointerBaseWidth);
16401
+ if (typeof pointerPosition !== "number" || pointerPosition < 0 || pointerPosition > 1) {
16402
+ throw new Error(`"pointerPosition" must be a number between 0 and 1, got ${pointerPosition}`);
16403
+ }
16404
+ const horizontalInterval = pointerInterval({
16405
+ availableLength: width,
16406
+ pointerBaseWidth,
16407
+ pointerPosition
16408
+ });
16409
+ const verticalInterval = pointerInterval({
16410
+ availableLength: height,
16411
+ pointerBaseWidth,
16412
+ pointerPosition
16413
+ });
16414
+ const pointsByDirection = {
16415
+ up: [
16416
+ { point: [0, pointerLength], round: true },
16417
+ { point: [horizontalInterval.start, pointerLength], round: false },
16418
+ { point: [horizontalInterval.center, 0], round: false },
16419
+ { point: [horizontalInterval.end, pointerLength], round: false },
16420
+ { point: [width, pointerLength], round: true },
16421
+ { point: [width, height + pointerLength], round: true },
16422
+ { point: [0, height + pointerLength], round: true },
16423
+ { point: [0, pointerLength], round: true }
16424
+ ],
16425
+ down: [
16426
+ { point: [0, 0], round: true },
16427
+ { point: [width, 0], round: true },
16428
+ { point: [width, height], round: true },
16429
+ { point: [horizontalInterval.end, height], round: false },
16430
+ {
16431
+ point: [horizontalInterval.center, height + pointerLength],
16432
+ round: false
16433
+ },
16434
+ { point: [horizontalInterval.start, height], round: false },
16435
+ { point: [0, height], round: true },
16436
+ { point: [0, 0], round: true }
16437
+ ],
16438
+ left: [
16439
+ { point: [pointerLength, 0], round: true },
16440
+ { point: [width + pointerLength, 0], round: true },
16441
+ { point: [width + pointerLength, height], round: true },
16442
+ { point: [pointerLength, height], round: true },
16443
+ { point: [pointerLength, verticalInterval.end], round: false },
16444
+ { point: [0, verticalInterval.center], round: false },
16445
+ { point: [pointerLength, verticalInterval.start], round: false },
16446
+ { point: [pointerLength, 0], round: true }
16447
+ ],
16448
+ right: [
16449
+ { point: [0, 0], round: true },
16450
+ { point: [width, 0], round: true },
16451
+ { point: [width, verticalInterval.start], round: false },
16452
+ { point: [width + pointerLength, verticalInterval.center], round: false },
16453
+ { point: [width, verticalInterval.end], round: false },
16454
+ { point: [width, height], round: true },
16455
+ { point: [0, height], round: true },
16456
+ { point: [0, 0], round: true }
16457
+ ]
16458
+ };
16459
+ const points = normalizeClosedPoints(pointsByDirection[pointerDirection]);
16460
+ const instructions = makeInstructions2({ points, edgeRoundness, cornerRadius });
16461
+ const path = serializeInstructions(instructions);
16462
+ const shapeWidth = pointerDirection === "left" || pointerDirection === "right" ? width + pointerLength : width;
16463
+ const shapeHeight = pointerDirection === "up" || pointerDirection === "down" ? height + pointerLength : height;
16464
+ const bodyX = pointerDirection === "left" ? pointerLength : 0;
16465
+ const bodyY = pointerDirection === "up" ? pointerLength : 0;
16466
+ return {
16467
+ width: shapeWidth,
16468
+ height: shapeHeight,
16469
+ instructions,
16470
+ path,
16471
+ transformOrigin: `${bodyX + width / 2} ${bodyY + height / 2}`
16472
+ };
16473
+ };
16474
+ var calloutSchema = makeShapeSchema({
16475
+ width: numberField({
16476
+ defaultValue: 500,
16477
+ description: "Width",
16478
+ min: 1
16479
+ }),
16480
+ height: numberField({
16481
+ defaultValue: 200,
16482
+ description: "Height",
16483
+ min: 1
16484
+ }),
16485
+ pointerLength: numberField({
16486
+ defaultValue: 40,
16487
+ description: "Pointer Length",
16488
+ min: 1
16489
+ }),
16490
+ pointerBaseWidth: numberField({
16491
+ defaultValue: 60,
16492
+ description: "Pointer Base Width",
16493
+ min: 1
16494
+ }),
16495
+ pointerPosition: numberField({
16496
+ defaultValue: 0.5,
16497
+ description: "Pointer Position",
16498
+ min: 0,
16499
+ max: 1,
16500
+ step: 0.01
16501
+ }),
16502
+ pointerDirection: enumField({
16503
+ defaultValue: "down",
16504
+ description: "Pointer Direction",
16505
+ variants: ["up", "down", "left", "right"]
16506
+ }),
16507
+ cornerRadius: numberField({
16508
+ defaultValue: 0,
16509
+ description: "Corner Radius",
16510
+ min: 0
16511
+ })
16512
+ });
16513
+ var CalloutInner = ({
16514
+ width,
16515
+ height,
16516
+ pointerLength,
16517
+ pointerBaseWidth,
16518
+ pointerPosition,
16519
+ pointerDirection,
16520
+ edgeRoundness,
16521
+ cornerRadius,
16522
+ ...props
16523
+ }) => {
16524
+ return /* @__PURE__ */ jsx310(RenderSvg, {
16525
+ defaultName: "<Callout>",
16526
+ documentationLink: "https://www.remotion.dev/docs/shapes/callout",
16527
+ ...makeCallout({
16528
+ width,
16529
+ height,
16530
+ pointerLength,
16531
+ pointerBaseWidth,
16532
+ pointerPosition,
16533
+ pointerDirection,
16534
+ edgeRoundness,
16535
+ cornerRadius
16536
+ }),
16537
+ ...props
16538
+ });
16539
+ };
16540
+ var Callout = Internals.wrapInSchema({
16541
+ Component: CalloutInner,
16542
+ componentIdentity: "dev.remotion.shapes.Callout",
16543
+ schema: calloutSchema,
16544
+ supportsEffects: true
16545
+ });
16546
+ Internals.addSequenceStackTraces(Callout);
16054
16547
  var makeCircle = ({ radius }) => {
16055
16548
  const instructions = [
16056
16549
  {
@@ -16099,7 +16592,7 @@ var circleSchema = makeShapeSchema({
16099
16592
  })
16100
16593
  });
16101
16594
  var CircleInner = ({ radius, ...props }) => {
16102
- return /* @__PURE__ */ jsx310(RenderSvg, {
16595
+ return /* @__PURE__ */ jsx42(RenderSvg, {
16103
16596
  defaultName: "<Circle>",
16104
16597
  documentationLink: "https://www.remotion.dev/docs/shapes/circle",
16105
16598
  ...makeCircle({ radius }),
@@ -16108,6 +16601,7 @@ var CircleInner = ({ radius, ...props }) => {
16108
16601
  };
16109
16602
  var Circle = Internals.wrapInSchema({
16110
16603
  Component: CircleInner,
16604
+ componentIdentity: "dev.remotion.shapes.Circle",
16111
16605
  schema: circleSchema,
16112
16606
  supportsEffects: true
16113
16607
  });
@@ -16155,7 +16649,7 @@ var ellipseSchema = makeShapeSchema({
16155
16649
  })
16156
16650
  });
16157
16651
  var EllipseInner = ({ rx, ry, ...props }) => {
16158
- return /* @__PURE__ */ jsx42(RenderSvg, {
16652
+ return /* @__PURE__ */ jsx52(RenderSvg, {
16159
16653
  defaultName: "<Ellipse>",
16160
16654
  documentationLink: "https://www.remotion.dev/docs/shapes/ellipse",
16161
16655
  ...makeEllipse({ rx, ry }),
@@ -16164,6 +16658,7 @@ var EllipseInner = ({ rx, ry, ...props }) => {
16164
16658
  };
16165
16659
  var Ellipse = Internals.wrapInSchema({
16166
16660
  Component: EllipseInner,
16661
+ componentIdentity: "dev.remotion.shapes.Ellipse",
16167
16662
  schema: ellipseSchema,
16168
16663
  supportsEffects: true
16169
16664
  });
@@ -16287,7 +16782,7 @@ var HeartInner = ({
16287
16782
  depthAdjustment = 0,
16288
16783
  ...props
16289
16784
  }) => {
16290
- return /* @__PURE__ */ jsx52(RenderSvg, {
16785
+ return /* @__PURE__ */ jsx62(RenderSvg, {
16291
16786
  defaultName: "<Heart>",
16292
16787
  documentationLink: "https://www.remotion.dev/docs/shapes/heart",
16293
16788
  ...makeHeart({
@@ -16301,6 +16796,7 @@ var HeartInner = ({
16301
16796
  };
16302
16797
  var Heart = Internals.wrapInSchema({
16303
16798
  Component: HeartInner,
16799
+ componentIdentity: "dev.remotion.shapes.Heart",
16304
16800
  schema: heartSchema,
16305
16801
  supportsEffects: true
16306
16802
  });
@@ -16445,7 +16941,7 @@ var PieInner = ({
16445
16941
  rotation,
16446
16942
  ...props
16447
16943
  }) => {
16448
- return /* @__PURE__ */ jsx62(RenderSvg, {
16944
+ return /* @__PURE__ */ jsx72(RenderSvg, {
16449
16945
  defaultName: "<Pie>",
16450
16946
  documentationLink: "https://www.remotion.dev/docs/shapes/pie",
16451
16947
  ...makePie({ radius, progress, closePath, counterClockwise, rotation }),
@@ -16454,134 +16950,11 @@ var PieInner = ({
16454
16950
  };
16455
16951
  var Pie = Internals.wrapInSchema({
16456
16952
  Component: PieInner,
16953
+ componentIdentity: "dev.remotion.shapes.Pie",
16457
16954
  schema: pieSchema,
16458
16955
  supportsEffects: true
16459
16956
  });
16460
16957
  Internals.addSequenceStackTraces(Pie);
16461
- var shortenVector = (vector, radius) => {
16462
- const [x, y] = vector;
16463
- const currentLength = Math.sqrt(x * x + y * y);
16464
- const scalingFactor = (currentLength - radius) / currentLength;
16465
- return [x * scalingFactor, y * scalingFactor];
16466
- };
16467
- var scaleVectorToLength = (vector, length2) => {
16468
- const [x, y] = vector;
16469
- const currentLength = Math.sqrt(x * x + y * y);
16470
- const scalingFactor = length2 / currentLength;
16471
- return [x * scalingFactor, y * scalingFactor];
16472
- };
16473
- var joinPoints = (points, {
16474
- edgeRoundness,
16475
- cornerRadius,
16476
- roundCornerStrategy
16477
- }) => {
16478
- return points.map(([x, y], i) => {
16479
- const prevPointIndex = i === 0 ? points.length - 2 : i - 1;
16480
- const prevPoint = points[prevPointIndex];
16481
- const nextPointIndex = i === points.length - 1 ? 1 : i + 1;
16482
- const nextPoint = points[nextPointIndex];
16483
- const middleOfLine = [(x + nextPoint[0]) / 2, (y + nextPoint[1]) / 2];
16484
- const prevPointMiddleOfLine = [
16485
- (x + prevPoint[0]) / 2,
16486
- (y + prevPoint[1]) / 2
16487
- ];
16488
- const prevVector = [x - prevPoint[0], y - prevPoint[1]];
16489
- const nextVector = [nextPoint[0] - x, nextPoint[1] - y];
16490
- if (i === 0) {
16491
- if (edgeRoundness !== null) {
16492
- return [
16493
- {
16494
- type: "M",
16495
- x: middleOfLine[0],
16496
- y: middleOfLine[1]
16497
- }
16498
- ];
16499
- }
16500
- if (cornerRadius !== 0) {
16501
- const computeRadius = shortenVector(nextVector, cornerRadius);
16502
- return [
16503
- {
16504
- type: "M",
16505
- x: computeRadius[0] + x,
16506
- y: computeRadius[1] + y
16507
- }
16508
- ];
16509
- }
16510
- return [
16511
- {
16512
- type: "M",
16513
- x,
16514
- y
16515
- }
16516
- ];
16517
- }
16518
- if (cornerRadius && edgeRoundness !== null) {
16519
- throw new Error(`"cornerRadius" and "edgeRoundness" cannot be specified at the same time.`);
16520
- }
16521
- if (edgeRoundness === null) {
16522
- if (cornerRadius === 0) {
16523
- return [
16524
- {
16525
- type: "L",
16526
- x,
16527
- y
16528
- }
16529
- ];
16530
- }
16531
- const prevVectorMinusRadius = shortenVector(prevVector, cornerRadius);
16532
- const prevVectorLength = scaleVectorToLength(prevVector, cornerRadius);
16533
- const nextVectorMinusRadius = scaleVectorToLength(nextVector, cornerRadius);
16534
- const firstDraw = [
16535
- prevPoint[0] + prevVectorMinusRadius[0],
16536
- prevPoint[1] + prevVectorMinusRadius[1]
16537
- ];
16538
- return [
16539
- {
16540
- type: "L",
16541
- x: firstDraw[0],
16542
- y: firstDraw[1]
16543
- },
16544
- roundCornerStrategy === "arc" ? {
16545
- type: "a",
16546
- rx: cornerRadius,
16547
- ry: cornerRadius,
16548
- xAxisRotation: 0,
16549
- dx: prevVectorLength[0] + nextVectorMinusRadius[0],
16550
- dy: prevVectorLength[1] + nextVectorMinusRadius[1],
16551
- largeArcFlag: false,
16552
- sweepFlag: true
16553
- } : {
16554
- type: "C",
16555
- x: firstDraw[0] + prevVectorLength[0] + nextVectorMinusRadius[0],
16556
- y: firstDraw[1] + prevVectorLength[1] + nextVectorMinusRadius[1],
16557
- cp1x: x,
16558
- cp1y: y,
16559
- cp2x: x,
16560
- cp2y: y
16561
- }
16562
- ];
16563
- }
16564
- const controlPoint1 = [
16565
- prevPointMiddleOfLine[0] + prevVector[0] * edgeRoundness * 0.5,
16566
- prevPointMiddleOfLine[1] + prevVector[1] * edgeRoundness * 0.5
16567
- ];
16568
- const controlPoint2 = [
16569
- middleOfLine[0] - nextVector[0] * edgeRoundness * 0.5,
16570
- middleOfLine[1] - nextVector[1] * edgeRoundness * 0.5
16571
- ];
16572
- return [
16573
- {
16574
- type: "C",
16575
- cp1x: controlPoint1[0],
16576
- cp1y: controlPoint1[1],
16577
- cp2x: controlPoint2[0],
16578
- cp2y: controlPoint2[1],
16579
- x: middleOfLine[0],
16580
- y: middleOfLine[1]
16581
- }
16582
- ];
16583
- }).flat(1);
16584
- };
16585
16958
  function polygon({
16586
16959
  points,
16587
16960
  radius,
@@ -16662,7 +17035,7 @@ var PolygonInner = ({
16662
17035
  edgeRoundness,
16663
17036
  ...props
16664
17037
  }) => {
16665
- return /* @__PURE__ */ jsx72(RenderSvg, {
17038
+ return /* @__PURE__ */ jsx82(RenderSvg, {
16666
17039
  defaultName: "<Polygon>",
16667
17040
  documentationLink: "https://www.remotion.dev/docs/shapes/polygon",
16668
17041
  ...makePolygon({
@@ -16676,6 +17049,7 @@ var PolygonInner = ({
16676
17049
  };
16677
17050
  var Polygon = Internals.wrapInSchema({
16678
17051
  Component: PolygonInner,
17052
+ componentIdentity: "dev.remotion.shapes.Polygon",
16679
17053
  schema: polygonSchema,
16680
17054
  supportsEffects: true
16681
17055
  });
@@ -16732,7 +17106,7 @@ var RectInner = ({
16732
17106
  cornerRadius,
16733
17107
  ...props
16734
17108
  }) => {
16735
- return /* @__PURE__ */ jsx82(RenderSvg, {
17109
+ return /* @__PURE__ */ jsx92(RenderSvg, {
16736
17110
  defaultName: "<Rect>",
16737
17111
  documentationLink: "https://www.remotion.dev/docs/shapes/rect",
16738
17112
  ...makeRect({ height, width, edgeRoundness, cornerRadius }),
@@ -16741,6 +17115,7 @@ var RectInner = ({
16741
17115
  };
16742
17116
  var Rect = Internals.wrapInSchema({
16743
17117
  Component: RectInner,
17118
+ componentIdentity: "dev.remotion.shapes.Rect",
16744
17119
  schema: rectSchema,
16745
17120
  supportsEffects: true
16746
17121
  });
@@ -16835,7 +17210,7 @@ var StarInner = ({
16835
17210
  edgeRoundness,
16836
17211
  ...props
16837
17212
  }) => {
16838
- return /* @__PURE__ */ jsx92(RenderSvg, {
17213
+ return /* @__PURE__ */ jsx102(RenderSvg, {
16839
17214
  defaultName: "<Star>",
16840
17215
  documentationLink: "https://www.remotion.dev/docs/shapes/star",
16841
17216
  ...makeStar({
@@ -16850,6 +17225,7 @@ var StarInner = ({
16850
17225
  };
16851
17226
  var Star = Internals.wrapInSchema({
16852
17227
  Component: StarInner,
17228
+ componentIdentity: "dev.remotion.shapes.Star",
16853
17229
  schema: starSchema,
16854
17230
  supportsEffects: true
16855
17231
  });
@@ -16946,7 +17322,7 @@ var TriangleInner = ({
16946
17322
  cornerRadius,
16947
17323
  ...props
16948
17324
  }) => {
16949
- return /* @__PURE__ */ jsx102(RenderSvg, {
17325
+ return /* @__PURE__ */ jsx112(RenderSvg, {
16950
17326
  defaultName: "<Triangle>",
16951
17327
  documentationLink: "https://www.remotion.dev/docs/shapes/triangle",
16952
17328
  ...makeTriangle({ length: length2, direction, edgeRoundness, cornerRadius }),
@@ -16955,6 +17331,7 @@ var TriangleInner = ({
16955
17331
  };
16956
17332
  var Triangle = Internals.wrapInSchema({
16957
17333
  Component: TriangleInner,
17334
+ componentIdentity: "dev.remotion.shapes.Triangle",
16958
17335
  schema: triangleSchema,
16959
17336
  supportsEffects: true
16960
17337
  });
@@ -18035,7 +18412,7 @@ import { jsx as jsx83, jsxs as jsxs32 } from "react/jsx-runtime";
18035
18412
  import { jsx as jsx93 } from "react/jsx-runtime";
18036
18413
  import React72 from "react";
18037
18414
  import { jsx as jsx103 } from "react/jsx-runtime";
18038
- import { jsx as jsx112 } from "react/jsx-runtime";
18415
+ import { jsx as jsx113 } from "react/jsx-runtime";
18039
18416
  import { jsx as jsx122 } from "react/jsx-runtime";
18040
18417
  import * as React36 from "react";
18041
18418
  import * as ReactDOM4 from "react-dom";
@@ -18595,7 +18972,7 @@ var Button = ({
18595
18972
  const [dimensions, setDimensions] = useState22(null);
18596
18973
  const ref = useRef210(null);
18597
18974
  const { isActive, progress } = useHoverTransforms(ref, Boolean(disabled || loading));
18598
- const onPointerEnter = useCallback26((e) => {
18975
+ const onPointerEnter = useCallback27((e) => {
18599
18976
  if (e.pointerType !== "mouse") {
18600
18977
  return;
18601
18978
  }
@@ -18632,7 +19009,7 @@ var Button = ({
18632
19009
  const isDisabled = disabled || loading;
18633
19010
  const isAnchor = !asChild && "href" in rest && rest.href !== undefined;
18634
19011
  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);
18635
- const preventInteraction = useCallback26((e) => {
19012
+ const preventInteraction = useCallback27((e) => {
18636
19013
  e.preventDefault();
18637
19014
  e.stopPropagation();
18638
19015
  }, []);
@@ -18843,7 +19220,7 @@ var Link = ({
18843
19220
  className,
18844
19221
  ...props
18845
19222
  }) => {
18846
- return /* @__PURE__ */ jsx112("a", {
19223
+ return /* @__PURE__ */ jsx113("a", {
18847
19224
  ...props,
18848
19225
  className: cn(className, "text-brand underline underline-offset-4"),
18849
19226
  children: props.children
@@ -24726,7 +25103,7 @@ var Triangle22 = (props) => {
24726
25103
  };
24727
25104
 
24728
25105
  // src/components/homepage/FreePricing.tsx
24729
- import React53, { useCallback as useCallback37, useMemo as useMemo51 } from "react";
25106
+ import React53, { useCallback as useCallback38, useMemo as useMemo51 } from "react";
24730
25107
 
24731
25108
  // ../../node_modules/.bun/tailwind-merge@2.5.2/node_modules/tailwind-merge/dist/bundle-mjs.mjs
24732
25109
  var CLASS_PART_SEPARATOR2 = "-";
@@ -26373,7 +26750,7 @@ var CompanyPricing = () => {
26373
26750
  const [automatorsSelected, setAutomatorsSelected] = React53.useState(true);
26374
26751
  const [devSeatCount, setDevSeatCount] = React53.useState(3);
26375
26752
  const [cloudRenders, setCloudRenders] = React53.useState(1e4);
26376
- const formatPrice = useCallback37((price) => {
26753
+ const formatPrice = useCallback38((price) => {
26377
26754
  const formatter = new Intl.NumberFormat("en-US", {
26378
26755
  style: "currency",
26379
26756
  currency: "USD",