@remotion/promo-pages 4.0.485 → 4.0.486

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.
@@ -32,6 +32,9 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
32
32
  throw Error('Dynamic require of "' + x + '" is not supported');
33
33
  });
34
34
 
35
+ // src/components/homepage/Pricing.tsx
36
+ import { useMemo as useMemo52 } from "react";
37
+
35
38
  // ../design/dist/esm/index.mjs
36
39
  import * as React23 from "react";
37
40
  import * as React3 from "react";
@@ -1378,7 +1381,7 @@ var getDefaultConfig = () => {
1378
1381
  var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
1379
1382
 
1380
1383
  // ../design/dist/esm/index.mjs
1381
- import React32, { useEffect as useEffect22, useMemo as useMemo42, useState as useState21 } from "react";
1384
+ import React32, { useEffect as useEffect21, useMemo as useMemo42, useState as useState21 } from "react";
1382
1385
 
1383
1386
  // ../paths/dist/esm/index.mjs
1384
1387
  var cutLInstruction = ({
@@ -3484,6 +3487,94 @@ var getBoundingBox = (d) => {
3484
3487
  const unarced = removeATSHVQInstructions(normalizeInstructions(parsed));
3485
3488
  return getBoundingBoxFromInstructions(unarced);
3486
3489
  };
3490
+ var translateSegments = (segments, x, y) => {
3491
+ return segments.map((segment) => {
3492
+ if (segment.type === "a" || segment.type === "c" || segment.type === "v" || segment.type === "s" || segment.type === "h" || segment.type === "l" || segment.type === "m" || segment.type === "q" || segment.type === "t") {
3493
+ return segment;
3494
+ }
3495
+ if (segment.type === "V") {
3496
+ return {
3497
+ type: "V",
3498
+ y: segment.y + y
3499
+ };
3500
+ }
3501
+ if (segment.type === "H") {
3502
+ return {
3503
+ type: "H",
3504
+ x: segment.x + x
3505
+ };
3506
+ }
3507
+ if (segment.type === "A") {
3508
+ return {
3509
+ type: "A",
3510
+ rx: segment.rx,
3511
+ ry: segment.ry,
3512
+ largeArcFlag: segment.largeArcFlag,
3513
+ sweepFlag: segment.sweepFlag,
3514
+ xAxisRotation: segment.xAxisRotation,
3515
+ x: segment.x + x,
3516
+ y: segment.y + y
3517
+ };
3518
+ }
3519
+ if (segment.type === "Z") {
3520
+ return segment;
3521
+ }
3522
+ if (segment.type === "C") {
3523
+ return {
3524
+ type: "C",
3525
+ cp1x: segment.cp1x + x,
3526
+ cp1y: segment.cp1y + y,
3527
+ cp2x: segment.cp2x + x,
3528
+ cp2y: segment.cp2y + y,
3529
+ x: segment.x + x,
3530
+ y: segment.y + y
3531
+ };
3532
+ }
3533
+ if (segment.type === "Q") {
3534
+ return {
3535
+ type: "Q",
3536
+ cpx: segment.cpx + x,
3537
+ cpy: segment.cpy + y,
3538
+ x: segment.x + x,
3539
+ y: segment.y + y
3540
+ };
3541
+ }
3542
+ if (segment.type === "S") {
3543
+ return {
3544
+ type: "S",
3545
+ cpx: segment.cpx + x,
3546
+ cpy: segment.cpy + y,
3547
+ x: segment.x + x,
3548
+ y: segment.y + y
3549
+ };
3550
+ }
3551
+ if (segment.type === "T") {
3552
+ return {
3553
+ type: "T",
3554
+ x: segment.x + x,
3555
+ y: segment.y + y
3556
+ };
3557
+ }
3558
+ if (segment.type === "L") {
3559
+ return {
3560
+ type: "L",
3561
+ x: segment.x + x,
3562
+ y: segment.y + y
3563
+ };
3564
+ }
3565
+ if (segment.type === "M") {
3566
+ return {
3567
+ type: "M",
3568
+ x: segment.x + x,
3569
+ y: segment.y + y
3570
+ };
3571
+ }
3572
+ throw new Error(`Unknown segment type: ${segment.type}`);
3573
+ });
3574
+ };
3575
+ var translatePath = (path, x, y) => {
3576
+ return serializeInstructions(translateSegments(parsePath(path), x, y));
3577
+ };
3487
3578
  var mod = (x, m) => {
3488
3579
  return (x % m + m) % m;
3489
3580
  };
@@ -4045,94 +4136,6 @@ var getLength = (path) => {
4045
4136
  const constructucted = construct(path);
4046
4137
  return constructucted.totalLength;
4047
4138
  };
4048
- var translateSegments = (segments, x, y) => {
4049
- return segments.map((segment) => {
4050
- if (segment.type === "a" || segment.type === "c" || segment.type === "v" || segment.type === "s" || segment.type === "h" || segment.type === "l" || segment.type === "m" || segment.type === "q" || segment.type === "t") {
4051
- return segment;
4052
- }
4053
- if (segment.type === "V") {
4054
- return {
4055
- type: "V",
4056
- y: segment.y + y
4057
- };
4058
- }
4059
- if (segment.type === "H") {
4060
- return {
4061
- type: "H",
4062
- x: segment.x + x
4063
- };
4064
- }
4065
- if (segment.type === "A") {
4066
- return {
4067
- type: "A",
4068
- rx: segment.rx,
4069
- ry: segment.ry,
4070
- largeArcFlag: segment.largeArcFlag,
4071
- sweepFlag: segment.sweepFlag,
4072
- xAxisRotation: segment.xAxisRotation,
4073
- x: segment.x + x,
4074
- y: segment.y + y
4075
- };
4076
- }
4077
- if (segment.type === "Z") {
4078
- return segment;
4079
- }
4080
- if (segment.type === "C") {
4081
- return {
4082
- type: "C",
4083
- cp1x: segment.cp1x + x,
4084
- cp1y: segment.cp1y + y,
4085
- cp2x: segment.cp2x + x,
4086
- cp2y: segment.cp2y + y,
4087
- x: segment.x + x,
4088
- y: segment.y + y
4089
- };
4090
- }
4091
- if (segment.type === "Q") {
4092
- return {
4093
- type: "Q",
4094
- cpx: segment.cpx + x,
4095
- cpy: segment.cpy + y,
4096
- x: segment.x + x,
4097
- y: segment.y + y
4098
- };
4099
- }
4100
- if (segment.type === "S") {
4101
- return {
4102
- type: "S",
4103
- cpx: segment.cpx + x,
4104
- cpy: segment.cpy + y,
4105
- x: segment.x + x,
4106
- y: segment.y + y
4107
- };
4108
- }
4109
- if (segment.type === "T") {
4110
- return {
4111
- type: "T",
4112
- x: segment.x + x,
4113
- y: segment.y + y
4114
- };
4115
- }
4116
- if (segment.type === "L") {
4117
- return {
4118
- type: "L",
4119
- x: segment.x + x,
4120
- y: segment.y + y
4121
- };
4122
- }
4123
- if (segment.type === "M") {
4124
- return {
4125
- type: "M",
4126
- x: segment.x + x,
4127
- y: segment.y + y
4128
- };
4129
- }
4130
- throw new Error(`Unknown segment type: ${segment.type}`);
4131
- });
4132
- };
4133
- var translatePath = (path, x, y) => {
4134
- return serializeInstructions(translateSegments(parsePath(path), x, y));
4135
- };
4136
4139
  var resetPath = (d) => {
4137
4140
  const box = getBoundingBox(d);
4138
4141
  return translatePath(d, -box.x1, -box.y1);
@@ -4321,8 +4324,8 @@ import {
4321
4324
  forwardRef as forwardRef10,
4322
4325
  useCallback as useCallback17,
4323
4326
  useContext as useContext32,
4324
- useEffect as useEffect17,
4325
4327
  useImperativeHandle as useImperativeHandle7,
4328
+ useLayoutEffect as useLayoutEffect10,
4326
4329
  useMemo as useMemo31,
4327
4330
  useRef as useRef23,
4328
4331
  useState as useState16
@@ -4330,7 +4333,7 @@ import {
4330
4333
  import { jsx as jsx26 } from "react/jsx-runtime";
4331
4334
  import { forwardRef as forwardRef11, useCallback as useCallback18, useState as useState17 } from "react";
4332
4335
  import { jsx as jsx27 } from "react/jsx-runtime";
4333
- import { useCallback as useCallback19, useContext as useContext33, useLayoutEffect as useLayoutEffect10, useRef as useRef24 } from "react";
4336
+ import { useCallback as useCallback19, useContext as useContext33, useLayoutEffect as useLayoutEffect11, useRef as useRef24 } from "react";
4334
4337
  import { jsx as jsx28 } from "react/jsx-runtime";
4335
4338
  import React29, { forwardRef as forwardRef12, useCallback as useCallback20, useRef as useRef25 } from "react";
4336
4339
  import { jsx as jsx29 } from "react/jsx-runtime";
@@ -4356,8 +4359,8 @@ import { useCallback as useCallback24 } from "react";
4356
4359
  import {
4357
4360
  useCallback as useCallback22,
4358
4361
  useContext as useContext36,
4359
- useEffect as useEffect18,
4360
- useLayoutEffect as useLayoutEffect11,
4362
+ useEffect as useEffect17,
4363
+ useLayoutEffect as useLayoutEffect12,
4361
4364
  useMemo as useMemo35,
4362
4365
  useState as useState19
4363
4366
  } from "react";
@@ -4366,13 +4369,13 @@ import React37, {
4366
4369
  forwardRef as forwardRef13,
4367
4370
  useCallback as useCallback23,
4368
4371
  useContext as useContext37,
4369
- useEffect as useEffect20,
4372
+ useEffect as useEffect19,
4370
4373
  useImperativeHandle as useImperativeHandle9,
4371
4374
  useMemo as useMemo36,
4372
4375
  useRef as useRef27,
4373
4376
  useState as useState20
4374
4377
  } from "react";
4375
- import { useEffect as useEffect19 } from "react";
4378
+ import { useEffect as useEffect18 } from "react";
4376
4379
  import { jsx as jsx34 } from "react/jsx-runtime";
4377
4380
  import { jsx as jsx35 } from "react/jsx-runtime";
4378
4381
  import React39, { useMemo as useMemo37 } from "react";
@@ -4389,9 +4392,9 @@ import { forwardRef as forwardRef16, useCallback as useCallback25, useContext as
4389
4392
  import {
4390
4393
  forwardRef as forwardRef15,
4391
4394
  useContext as useContext38,
4392
- useEffect as useEffect21,
4395
+ useEffect as useEffect20,
4393
4396
  useImperativeHandle as useImperativeHandle10,
4394
- useLayoutEffect as useLayoutEffect12,
4397
+ useLayoutEffect as useLayoutEffect13,
4395
4398
  useMemo as useMemo39,
4396
4399
  useRef as useRef28
4397
4400
  } from "react";
@@ -5565,7 +5568,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
5565
5568
  var addSequenceStackTraces = (component) => {
5566
5569
  componentsToAddStacksTo.push(component);
5567
5570
  };
5568
- var VERSION = "4.0.485";
5571
+ var VERSION = "4.0.486";
5569
5572
  var checkMultipleRemotionVersions = () => {
5570
5573
  if (typeof globalThis === "undefined") {
5571
5574
  return;
@@ -5971,6 +5974,12 @@ var textSchema = {
5971
5974
  default: undefined,
5972
5975
  description: "Color"
5973
5976
  },
5977
+ "style.fontFamily": {
5978
+ type: "font-family",
5979
+ default: undefined,
5980
+ description: "Font family",
5981
+ keyframable: false
5982
+ },
5974
5983
  "style.fontSize": {
5975
5984
  type: "number",
5976
5985
  default: undefined,
@@ -13301,6 +13310,18 @@ var loadImage = ({
13301
13310
  function exponentialBackoff(errorCount) {
13302
13311
  return 1000 * 2 ** (errorCount - 1);
13303
13312
  }
13313
+ var waitForNextFrame = ({
13314
+ onFrame
13315
+ }) => {
13316
+ if (typeof requestAnimationFrame === "undefined") {
13317
+ onFrame();
13318
+ return () => {
13319
+ return;
13320
+ };
13321
+ }
13322
+ const frame = requestAnimationFrame(onFrame);
13323
+ return () => cancelAnimationFrame(frame);
13324
+ };
13304
13325
  var CanvasImageContent = forwardRef10(({
13305
13326
  src,
13306
13327
  width,
@@ -13330,6 +13351,17 @@ var CanvasImageContent = forwardRef10(({
13330
13351
  overrideId: controls?.overrideId ?? null
13331
13352
  });
13332
13353
  const sequenceContext = useContext32(SequenceContext);
13354
+ const pendingLoadDelayRef = useRef23(null);
13355
+ const continuePendingLoadDelay = useCallback17(() => {
13356
+ const pending = pendingLoadDelayRef.current;
13357
+ if (!pending || pending.continued) {
13358
+ return;
13359
+ }
13360
+ pending.continued = true;
13361
+ pending.unblock();
13362
+ continueRender2(pending.handle);
13363
+ pendingLoadDelayRef.current = null;
13364
+ }, [continueRender2]);
13333
13365
  const sourceCanvas = useMemo31(() => {
13334
13366
  if (typeof document === "undefined") {
13335
13367
  return null;
@@ -13347,7 +13379,7 @@ var CanvasImageContent = forwardRef10(({
13347
13379
  ref.current = canvas;
13348
13380
  }
13349
13381
  }, [ref, refForOutline]);
13350
- useEffect17(() => {
13382
+ useLayoutEffect10(() => {
13351
13383
  const isPremounting = Boolean(sequenceContext?.premounting);
13352
13384
  const isPostmounting = Boolean(sequenceContext?.postmounting);
13353
13385
  const handle = delayRender2(`Rendering <CanvasImage> with src="${truncateSrcForLabel(actualSrc)}"`, {
@@ -13359,17 +13391,13 @@ var CanvasImageContent = forwardRef10(({
13359
13391
  };
13360
13392
  const controller = new AbortController;
13361
13393
  let cancelled = false;
13362
- let continued = false;
13363
13394
  let errorCount = 0;
13364
13395
  let timeoutId = null;
13365
13396
  setLoadedImage(null);
13366
- const continueRenderOnce = () => {
13367
- if (continued) {
13368
- return;
13369
- }
13370
- continued = true;
13371
- unblock();
13372
- continueRender2(handle);
13397
+ pendingLoadDelayRef.current = {
13398
+ handle,
13399
+ unblock,
13400
+ continued: false
13373
13401
  };
13374
13402
  const attemptLoad = () => {
13375
13403
  loadImage({ src: actualSrc, signal: controller.signal }).then((image) => {
@@ -13377,13 +13405,9 @@ var CanvasImageContent = forwardRef10(({
13377
13405
  return;
13378
13406
  }
13379
13407
  setLoadedImage(image);
13380
- }).then(() => {
13381
- if (!cancelled) {
13382
- continueRenderOnce();
13383
- }
13384
13408
  }).catch((err) => {
13385
13409
  if (err.name === "AbortError") {
13386
- continueRenderOnce();
13410
+ continuePendingLoadDelay();
13387
13411
  return;
13388
13412
  }
13389
13413
  errorCount++;
@@ -13397,7 +13421,7 @@ var CanvasImageContent = forwardRef10(({
13397
13421
  }, backoff);
13398
13422
  } else if (onError) {
13399
13423
  onError(err);
13400
- continueRenderOnce();
13424
+ continuePendingLoadDelay();
13401
13425
  } else {
13402
13426
  cancelRender2(err);
13403
13427
  }
@@ -13410,12 +13434,12 @@ var CanvasImageContent = forwardRef10(({
13410
13434
  clearTimeout(timeoutId);
13411
13435
  }
13412
13436
  controller.abort();
13413
- continueRenderOnce();
13437
+ continuePendingLoadDelay();
13414
13438
  };
13415
13439
  }, [
13416
13440
  actualSrc,
13417
13441
  cancelRender2,
13418
- continueRender2,
13442
+ continuePendingLoadDelay,
13419
13443
  delayPlayback,
13420
13444
  delayRender2,
13421
13445
  delayRenderRetries,
@@ -13426,13 +13450,16 @@ var CanvasImageContent = forwardRef10(({
13426
13450
  sequenceContext?.postmounting,
13427
13451
  sequenceContext?.premounting
13428
13452
  ]);
13429
- useEffect17(() => {
13453
+ useLayoutEffect10(() => {
13430
13454
  if (!loadedImage || !outputCanvas || !sourceCanvas) {
13431
13455
  return;
13432
13456
  }
13433
13457
  const handle = delayRender2(`Applying effects to <CanvasImage> with src="${truncateSrcForLabel(actualSrc)}"`);
13434
13458
  let cancelled = false;
13435
13459
  let continued = false;
13460
+ let cancelWaitForNextFrame = () => {
13461
+ return;
13462
+ };
13436
13463
  const continueRenderOnce = () => {
13437
13464
  if (continued) {
13438
13465
  return;
@@ -13467,7 +13494,15 @@ var CanvasImageContent = forwardRef10(({
13467
13494
  height: canvasHeight
13468
13495
  }).then((completed) => {
13469
13496
  if (completed && !cancelled) {
13470
- continueRenderOnce();
13497
+ cancelWaitForNextFrame = waitForNextFrame({
13498
+ onFrame: () => {
13499
+ if (cancelled) {
13500
+ return;
13501
+ }
13502
+ continueRenderOnce();
13503
+ continuePendingLoadDelay();
13504
+ }
13505
+ });
13471
13506
  }
13472
13507
  }).catch((err) => {
13473
13508
  if (cancelled) {
@@ -13476,12 +13511,14 @@ var CanvasImageContent = forwardRef10(({
13476
13511
  if (onError) {
13477
13512
  onError(err);
13478
13513
  continueRenderOnce();
13514
+ continuePendingLoadDelay();
13479
13515
  } else {
13480
13516
  cancelRender2(err);
13481
13517
  }
13482
13518
  });
13483
13519
  return () => {
13484
13520
  cancelled = true;
13521
+ cancelWaitForNextFrame();
13485
13522
  continueRenderOnce();
13486
13523
  };
13487
13524
  }, [
@@ -13489,6 +13526,7 @@ var CanvasImageContent = forwardRef10(({
13489
13526
  cancelRender2,
13490
13527
  chainState,
13491
13528
  continueRender2,
13529
+ continuePendingLoadDelay,
13492
13530
  delayRender2,
13493
13531
  fit,
13494
13532
  height,
@@ -13698,7 +13736,7 @@ var ImgContent = ({
13698
13736
  if (typeof window !== "undefined") {
13699
13737
  const isPremounting = Boolean(sequenceContext?.premounting);
13700
13738
  const isPostmounting = Boolean(sequenceContext?.postmounting);
13701
- useLayoutEffect10(() => {
13739
+ useLayoutEffect11(() => {
13702
13740
  if (window.process?.env?.NODE_ENV === "test") {
13703
13741
  if (imageRef.current) {
13704
13742
  imageRef.current.src = actualSrc;
@@ -14594,7 +14632,7 @@ var OffthreadVideoForRendering = ({
14594
14632
  mediaVolume: 1
14595
14633
  });
14596
14634
  warnAboutTooHighVolume(volume);
14597
- useEffect18(() => {
14635
+ useEffect17(() => {
14598
14636
  if (!src) {
14599
14637
  throw new Error("No src passed");
14600
14638
  }
@@ -14651,7 +14689,7 @@ var OffthreadVideoForRendering = ({
14651
14689
  }, [toneMapped, currentTime, src, transparent]);
14652
14690
  const [imageSrc, setImageSrc] = useState19(null);
14653
14691
  const { delayRender: delayRender2, continueRender: continueRender2 } = useDelayRender();
14654
- useLayoutEffect11(() => {
14692
+ useLayoutEffect12(() => {
14655
14693
  if (!window.remotion_videoEnabled) {
14656
14694
  return;
14657
14695
  }
@@ -14755,7 +14793,7 @@ var useEmitVideoFrame = ({
14755
14793
  ref,
14756
14794
  onVideoFrame
14757
14795
  }) => {
14758
- useEffect19(() => {
14796
+ useEffect18(() => {
14759
14797
  const { current } = ref;
14760
14798
  if (!current) {
14761
14799
  return;
@@ -14930,7 +14968,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
14930
14968
  tag: "video",
14931
14969
  mountTime
14932
14970
  }));
14933
- useEffect20(() => {
14971
+ useEffect19(() => {
14934
14972
  const { current } = videoRef;
14935
14973
  if (!current) {
14936
14974
  return;
@@ -14973,7 +15011,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
14973
15011
  const currentOnDurationCallback = useRef27(onDuration);
14974
15012
  currentOnDurationCallback.current = onDuration;
14975
15013
  useEmitVideoFrame({ ref: videoRef, onVideoFrame });
14976
- useEffect20(() => {
15014
+ useEffect19(() => {
14977
15015
  const { current } = videoRef;
14978
15016
  if (!current) {
14979
15017
  return;
@@ -14990,7 +15028,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
14990
15028
  current.removeEventListener("loadedmetadata", onLoadedMetadata);
14991
15029
  };
14992
15030
  }, [src]);
14993
- useEffect20(() => {
15031
+ useEffect19(() => {
14994
15032
  const { current } = videoRef;
14995
15033
  if (!current) {
14996
15034
  return;
@@ -15771,7 +15809,7 @@ var VideoForRenderingForwardFunction = ({
15771
15809
  mediaVolume: 1
15772
15810
  });
15773
15811
  warnAboutTooHighVolume(volume);
15774
- useEffect21(() => {
15812
+ useEffect20(() => {
15775
15813
  if (!props2.src) {
15776
15814
  throw new Error("No src passed");
15777
15815
  }
@@ -15815,7 +15853,7 @@ var VideoForRenderingForwardFunction = ({
15815
15853
  return videoRef.current;
15816
15854
  }, []);
15817
15855
  useEmitVideoFrame({ ref: videoRef, onVideoFrame });
15818
- useEffect21(() => {
15856
+ useEffect20(() => {
15819
15857
  if (!window.remotion_videoEnabled) {
15820
15858
  return;
15821
15859
  }
@@ -15905,7 +15943,7 @@ var VideoForRenderingForwardFunction = ({
15905
15943
  ]);
15906
15944
  const { src } = props2;
15907
15945
  if (environment.isRendering) {
15908
- useLayoutEffect12(() => {
15946
+ useLayoutEffect13(() => {
15909
15947
  if (window.process?.env?.NODE_ENV === "test") {
15910
15948
  return;
15911
15949
  }
@@ -19009,7 +19047,7 @@ var extrudeAndTransformElement = (options) => {
19009
19047
  // ../design/dist/esm/index.mjs
19010
19048
  import { jsx as jsx212, Fragment as Fragment3 } from "react/jsx-runtime";
19011
19049
  import { jsx as jsx312, jsxs as jsxs5 } from "react/jsx-runtime";
19012
- import { useEffect as useEffect23, useMemo as useMemo210, useRef as useRef31 } from "react";
19050
+ import { useEffect as useEffect22, useMemo as useMemo210, useRef as useRef31 } from "react";
19013
19051
  import { jsx as jsx44 } from "react/jsx-runtime";
19014
19052
  import { jsx as jsx53, jsxs as jsxs22 } from "react/jsx-runtime";
19015
19053
  import React62 from "react";
@@ -19264,7 +19302,7 @@ var useHoverTransforms = (ref, disabled) => {
19264
19302
  isActive: false
19265
19303
  });
19266
19304
  const eventTarget = useMemo42(() => new EventTarget, []);
19267
- useEffect22(() => {
19305
+ useEffect21(() => {
19268
19306
  if (disabled) {
19269
19307
  eventTarget.dispatchEvent(new Event("disabled"));
19270
19308
  } else {
@@ -19411,7 +19449,7 @@ var getAngle = (ref, coordinates) => {
19411
19449
  var lastCoordinates = null;
19412
19450
  var useMousePosition = (ref) => {
19413
19451
  const [angle, setAngle] = useState21(getAngle(ref.current, lastCoordinates));
19414
- useEffect22(() => {
19452
+ useEffect21(() => {
19415
19453
  const element = ref.current;
19416
19454
  if (!element) {
19417
19455
  return;
@@ -19532,7 +19570,7 @@ var Spinner = ({ size, duration }) => {
19532
19570
  };
19533
19571
  }, [size]);
19534
19572
  const pathsRef = useRef31([]);
19535
- useEffect23(() => {
19573
+ useEffect22(() => {
19536
19574
  const animate = () => {
19537
19575
  const now = performance.now();
19538
19576
  for (let index = 0;index < lines; index++) {
@@ -27598,7 +27636,10 @@ var CompanyPricing = () => {
27598
27636
 
27599
27637
  // src/components/homepage/Pricing.tsx
27600
27638
  import { jsx as jsx47, jsxs as jsxs8 } from "react/jsx-runtime";
27601
- var Pricing = () => {
27639
+ var Pricing = ({ faqHref = "/docs/pricing#faq" }) => {
27640
+ const faqLinkTarget = useMemo52(() => {
27641
+ return faqHref.startsWith("http") ? "_blank" : undefined;
27642
+ }, [faqHref]);
27602
27643
  return /* @__PURE__ */ jsxs8("div", {
27603
27644
  style: {
27604
27645
  display: "flex",
@@ -27623,9 +27664,9 @@ var Pricing = () => {
27623
27664
  "See our",
27624
27665
  " ",
27625
27666
  /* @__PURE__ */ jsx47("a", {
27626
- target: "_blank",
27667
+ target: faqLinkTarget,
27627
27668
  className: "bluelink",
27628
- href: "https://remotion.pro/faq",
27669
+ href: faqHref,
27629
27670
  children: "FAQ"
27630
27671
  }),
27631
27672
  " ",