@remotion/promo-pages 4.0.485 → 4.0.487
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Homepage.css +1 -1
- package/dist/Homepage.js +1215 -2314
- package/dist/components/homepage/CommunityStatsItems.js +2 -2
- package/dist/components/homepage/GetStartedStrip.js +1 -1
- package/dist/components/homepage/GitHubButton.js +1 -1
- package/dist/components/homepage/Pricing.d.ts +3 -1
- package/dist/components/homepage/Pricing.js +6 -2
- package/dist/components/prompts/PromptsGallery.js +1 -1
- package/dist/components/prompts/PromptsSubmit.js +3 -169
- package/dist/design.js +318 -206
- package/dist/experts.js +225 -113
- package/dist/homepage/Pricing.js +349 -215
- package/dist/prompts/PromptsGallery.js +322 -210
- package/dist/prompts/PromptsShow.js +320 -208
- package/dist/prompts/PromptsSubmit.js +318 -206
- package/dist/tailwind.css +21 -3
- package/dist/team.js +318 -206
- package/dist/template-modal-content.css +1 -1
- package/dist/template-modal-content.js +327 -215
- package/dist/templates.js +318 -206
- package/package.json +17 -17
- package/public/img/editing-safari.mp4 +0 -0
- package/public/img/editing-vp9-chrome.webm +0 -0
- package/public/img/homepage-assets-master.mp4 +0 -0
- package/public/img/homepage-assets-master.webm +0 -0
- package/public/img/what-is-remotion.mp4 +0 -0
- package/public/img/what-is-remotion.webm +0 -0
package/dist/homepage/Pricing.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
4360
|
-
useLayoutEffect as
|
|
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
|
|
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
|
|
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
|
|
4395
|
+
useEffect as useEffect20,
|
|
4393
4396
|
useImperativeHandle as useImperativeHandle10,
|
|
4394
|
-
useLayoutEffect as
|
|
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.
|
|
5571
|
+
var VERSION = "4.0.487";
|
|
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,
|
|
@@ -11429,7 +11438,8 @@ var useBufferManager = (logLevel, mountTime) => {
|
|
|
11429
11438
|
if (rendering) {
|
|
11430
11439
|
return;
|
|
11431
11440
|
}
|
|
11432
|
-
if (blocks.length > 0) {
|
|
11441
|
+
if (blocks.length > 0 && !buffering.current) {
|
|
11442
|
+
buffering.current = true;
|
|
11433
11443
|
onBufferingCallbacks.forEach((c2) => c2());
|
|
11434
11444
|
playbackLogging({
|
|
11435
11445
|
logLevel,
|
|
@@ -11444,7 +11454,8 @@ var useBufferManager = (logLevel, mountTime) => {
|
|
|
11444
11454
|
if (rendering) {
|
|
11445
11455
|
return;
|
|
11446
11456
|
}
|
|
11447
|
-
if (blocks.length === 0) {
|
|
11457
|
+
if (blocks.length === 0 && buffering.current) {
|
|
11458
|
+
buffering.current = false;
|
|
11448
11459
|
onResumeCallbacks.forEach((c2) => c2());
|
|
11449
11460
|
playbackLogging({
|
|
11450
11461
|
logLevel,
|
|
@@ -11477,15 +11488,11 @@ var useIsPlayerBuffering = (bufferManager) => {
|
|
|
11477
11488
|
const onResume = () => {
|
|
11478
11489
|
setIsBuffering(false);
|
|
11479
11490
|
};
|
|
11480
|
-
bufferManager.listenForBuffering(onBuffer);
|
|
11481
|
-
bufferManager.listenForResume(onResume);
|
|
11491
|
+
const buffer = bufferManager.listenForBuffering(onBuffer);
|
|
11492
|
+
const resume = bufferManager.listenForResume(onResume);
|
|
11482
11493
|
return () => {
|
|
11483
|
-
|
|
11484
|
-
|
|
11485
|
-
});
|
|
11486
|
-
bufferManager.listenForResume(() => {
|
|
11487
|
-
return;
|
|
11488
|
-
});
|
|
11494
|
+
buffer.remove();
|
|
11495
|
+
resume.remove();
|
|
11489
11496
|
};
|
|
11490
11497
|
}, [bufferManager]);
|
|
11491
11498
|
return isBuffering;
|
|
@@ -11609,6 +11616,72 @@ var useBufferUntilFirstFrame = ({
|
|
|
11609
11616
|
};
|
|
11610
11617
|
}, [bufferUntilFirstFrame]);
|
|
11611
11618
|
};
|
|
11619
|
+
var getMediaSyncAction = (input) => {
|
|
11620
|
+
const {
|
|
11621
|
+
duration,
|
|
11622
|
+
currentTime,
|
|
11623
|
+
paused,
|
|
11624
|
+
ended,
|
|
11625
|
+
desiredUnclampedTime,
|
|
11626
|
+
mediaTagTime,
|
|
11627
|
+
mediaTagLastUpdate,
|
|
11628
|
+
rvcTime,
|
|
11629
|
+
rvcLastUpdate,
|
|
11630
|
+
isVariableFpsVideo,
|
|
11631
|
+
acceptableTimeShift,
|
|
11632
|
+
lastSeekDueToShift,
|
|
11633
|
+
playing,
|
|
11634
|
+
playbackRate,
|
|
11635
|
+
mediaTagBufferingOrStalled,
|
|
11636
|
+
playerBuffering,
|
|
11637
|
+
absoluteFrame,
|
|
11638
|
+
onlyWarnForMediaSeekingError,
|
|
11639
|
+
isPremounting,
|
|
11640
|
+
isPostmounting,
|
|
11641
|
+
pauseWhenBuffering
|
|
11642
|
+
} = input;
|
|
11643
|
+
const shouldBeTime = !Number.isNaN(duration) && Number.isFinite(duration) ? Math.min(duration, desiredUnclampedTime) : desiredUnclampedTime;
|
|
11644
|
+
const timeShiftMediaTag = Math.abs(shouldBeTime - mediaTagTime);
|
|
11645
|
+
const timeShiftRvcTag = rvcTime ? Math.abs(shouldBeTime - rvcTime) : null;
|
|
11646
|
+
const mostRecentTimeshift = rvcLastUpdate && rvcTime > mediaTagLastUpdate ? timeShiftRvcTag : timeShiftMediaTag;
|
|
11647
|
+
const timeShift = timeShiftRvcTag && !isVariableFpsVideo ? mostRecentTimeshift : timeShiftMediaTag;
|
|
11648
|
+
if (timeShift > acceptableTimeShift && lastSeekDueToShift !== shouldBeTime) {
|
|
11649
|
+
return {
|
|
11650
|
+
type: "seek-due-to-shift",
|
|
11651
|
+
shouldBeTime,
|
|
11652
|
+
why: `because time shift is too big. shouldBeTime = ${shouldBeTime}, isTime = ${mediaTagTime}, requestVideoCallbackTime = ${rvcTime}, timeShift = ${timeShift}${isVariableFpsVideo ? ", isVariableFpsVideo = true" : ""}, isPremounting = ${isPremounting}, isPostmounting = ${isPostmounting}, pauseWhenBuffering = ${pauseWhenBuffering}`,
|
|
11653
|
+
bufferUntilFirstFrame: playing && playbackRate > 0,
|
|
11654
|
+
playReason: playing && paused ? "player is playing but media tag is paused, and just seeked" : null,
|
|
11655
|
+
warnAboutNonSeekable: !onlyWarnForMediaSeekingError
|
|
11656
|
+
};
|
|
11657
|
+
}
|
|
11658
|
+
const seekThreshold = playing ? 0.15 : 0.01;
|
|
11659
|
+
const makesSenseToSeek = Math.abs(currentTime - shouldBeTime) > seekThreshold;
|
|
11660
|
+
const isSomethingElseBuffering = playerBuffering && !mediaTagBufferingOrStalled;
|
|
11661
|
+
if (!playing || isSomethingElseBuffering) {
|
|
11662
|
+
return {
|
|
11663
|
+
type: "seek-if-not-playing",
|
|
11664
|
+
shouldBeTime,
|
|
11665
|
+
why: makesSenseToSeek ? `not playing or something else is buffering. time offset is over seek threshold (${seekThreshold})` : null
|
|
11666
|
+
};
|
|
11667
|
+
}
|
|
11668
|
+
if (!playing || playerBuffering) {
|
|
11669
|
+
return { type: "none" };
|
|
11670
|
+
}
|
|
11671
|
+
const pausedCondition = paused && !ended;
|
|
11672
|
+
const firstFrameCondition = absoluteFrame === 0;
|
|
11673
|
+
if (pausedCondition || firstFrameCondition) {
|
|
11674
|
+
const reason = pausedCondition ? "media tag is paused" : "absolute frame is 0";
|
|
11675
|
+
return {
|
|
11676
|
+
type: "play-and-seek",
|
|
11677
|
+
shouldBeTime,
|
|
11678
|
+
why: makesSenseToSeek ? `is over timeshift threshold (threshold = ${seekThreshold}) and ${reason}` : null,
|
|
11679
|
+
playReason: `player is playing and ${reason}`,
|
|
11680
|
+
bufferUntilFirstFrame: !isVariableFpsVideo && playbackRate > 0
|
|
11681
|
+
};
|
|
11682
|
+
}
|
|
11683
|
+
return { type: "none" };
|
|
11684
|
+
};
|
|
11612
11685
|
var useCurrentTimeOfMediaTagWithUpdateTimeStamp = (mediaRef) => {
|
|
11613
11686
|
const lastUpdate = React21.useRef({
|
|
11614
11687
|
time: mediaRef.current?.currentTime ?? 0,
|
|
@@ -12028,89 +12101,93 @@ var useMediaPlayback = ({
|
|
|
12028
12101
|
if (!src) {
|
|
12029
12102
|
throw new Error(`No 'src' attribute was passed to the ${tagName} element.`);
|
|
12030
12103
|
}
|
|
12031
|
-
const {
|
|
12032
|
-
const
|
|
12033
|
-
|
|
12034
|
-
|
|
12035
|
-
|
|
12036
|
-
|
|
12037
|
-
|
|
12038
|
-
|
|
12039
|
-
|
|
12040
|
-
|
|
12104
|
+
const { current } = mediaRef;
|
|
12105
|
+
const action = getMediaSyncAction({
|
|
12106
|
+
duration: current.duration,
|
|
12107
|
+
currentTime: current.currentTime,
|
|
12108
|
+
paused: current.paused,
|
|
12109
|
+
ended: current.ended,
|
|
12110
|
+
desiredUnclampedTime,
|
|
12111
|
+
mediaTagTime: mediaTagCurrentTime.current.time,
|
|
12112
|
+
mediaTagLastUpdate: mediaTagCurrentTime.current.lastUpdate,
|
|
12113
|
+
rvcTime: rvcCurrentTime.current?.time ?? null,
|
|
12114
|
+
rvcLastUpdate: rvcCurrentTime.current?.lastUpdate ?? null,
|
|
12115
|
+
isVariableFpsVideo: Boolean(isVariableFpsVideoMap.current[src]),
|
|
12116
|
+
acceptableTimeShift: acceptableTimeShiftButLessThanDuration,
|
|
12117
|
+
lastSeekDueToShift: lastSeekDueToShift.current,
|
|
12118
|
+
playing,
|
|
12119
|
+
playbackRate,
|
|
12120
|
+
mediaTagBufferingOrStalled: isMediaTagBuffering || isBuffering(),
|
|
12121
|
+
playerBuffering: buffering.buffering.current,
|
|
12122
|
+
absoluteFrame,
|
|
12123
|
+
onlyWarnForMediaSeekingError,
|
|
12124
|
+
isPremounting,
|
|
12125
|
+
isPostmounting,
|
|
12126
|
+
pauseWhenBuffering
|
|
12127
|
+
});
|
|
12128
|
+
if (action.type === "none") {
|
|
12129
|
+
return;
|
|
12130
|
+
}
|
|
12131
|
+
if (action.type === "seek-due-to-shift") {
|
|
12041
12132
|
lastSeek.current = seek({
|
|
12042
|
-
mediaRef:
|
|
12043
|
-
time: shouldBeTime,
|
|
12133
|
+
mediaRef: current,
|
|
12134
|
+
time: action.shouldBeTime,
|
|
12044
12135
|
logLevel,
|
|
12045
|
-
why:
|
|
12136
|
+
why: action.why,
|
|
12046
12137
|
mountTime
|
|
12047
12138
|
});
|
|
12048
12139
|
lastSeekDueToShift.current = lastSeek.current;
|
|
12049
|
-
if (
|
|
12050
|
-
|
|
12051
|
-
bufferUntilFirstFrame(shouldBeTime);
|
|
12052
|
-
}
|
|
12053
|
-
if (mediaRef.current.paused) {
|
|
12054
|
-
playAndHandleNotAllowedError({
|
|
12055
|
-
mediaRef,
|
|
12056
|
-
mediaType,
|
|
12057
|
-
onAutoPlayError,
|
|
12058
|
-
logLevel,
|
|
12059
|
-
mountTime,
|
|
12060
|
-
reason: "player is playing but media tag is paused, and just seeked",
|
|
12061
|
-
isPlayer: env.isPlayer
|
|
12062
|
-
});
|
|
12063
|
-
}
|
|
12064
|
-
}
|
|
12065
|
-
if (!onlyWarnForMediaSeekingError) {
|
|
12066
|
-
warnAboutNonSeekableMedia(mediaRef.current, onlyWarnForMediaSeekingError ? "console-warning" : "console-error");
|
|
12140
|
+
if (action.bufferUntilFirstFrame) {
|
|
12141
|
+
bufferUntilFirstFrame(action.shouldBeTime);
|
|
12067
12142
|
}
|
|
12068
|
-
|
|
12069
|
-
|
|
12070
|
-
|
|
12071
|
-
|
|
12072
|
-
|
|
12073
|
-
const isSomethingElseBuffering = buffering.buffering.current && !isMediaTagBufferingOrStalled;
|
|
12074
|
-
if (!playing || isSomethingElseBuffering) {
|
|
12075
|
-
if (makesSenseToSeek) {
|
|
12076
|
-
lastSeek.current = seek({
|
|
12077
|
-
mediaRef: mediaRef.current,
|
|
12078
|
-
time: shouldBeTime,
|
|
12143
|
+
if (action.playReason !== null) {
|
|
12144
|
+
playAndHandleNotAllowedError({
|
|
12145
|
+
mediaRef,
|
|
12146
|
+
mediaType,
|
|
12147
|
+
onAutoPlayError,
|
|
12079
12148
|
logLevel,
|
|
12080
|
-
|
|
12081
|
-
|
|
12149
|
+
mountTime,
|
|
12150
|
+
reason: action.playReason,
|
|
12151
|
+
isPlayer: env.isPlayer
|
|
12082
12152
|
});
|
|
12083
12153
|
}
|
|
12154
|
+
if (action.warnAboutNonSeekable) {
|
|
12155
|
+
warnAboutNonSeekableMedia(current, "console-error");
|
|
12156
|
+
}
|
|
12084
12157
|
return;
|
|
12085
12158
|
}
|
|
12086
|
-
if (
|
|
12087
|
-
|
|
12088
|
-
}
|
|
12089
|
-
const pausedCondition = mediaRef.current.paused && !mediaRef.current.ended;
|
|
12090
|
-
const firstFrameCondition = absoluteFrame === 0;
|
|
12091
|
-
if (pausedCondition || firstFrameCondition) {
|
|
12092
|
-
const reason = pausedCondition ? "media tag is paused" : "absolute frame is 0";
|
|
12093
|
-
if (makesSenseToSeek) {
|
|
12159
|
+
if (action.type === "seek-if-not-playing") {
|
|
12160
|
+
if (action.why !== null) {
|
|
12094
12161
|
lastSeek.current = seek({
|
|
12095
|
-
mediaRef:
|
|
12096
|
-
time: shouldBeTime,
|
|
12162
|
+
mediaRef: current,
|
|
12163
|
+
time: action.shouldBeTime,
|
|
12097
12164
|
logLevel,
|
|
12098
|
-
why:
|
|
12165
|
+
why: action.why,
|
|
12099
12166
|
mountTime
|
|
12100
12167
|
});
|
|
12101
12168
|
}
|
|
12102
|
-
|
|
12103
|
-
|
|
12104
|
-
|
|
12105
|
-
|
|
12169
|
+
return;
|
|
12170
|
+
}
|
|
12171
|
+
if (action.why !== null) {
|
|
12172
|
+
lastSeek.current = seek({
|
|
12173
|
+
mediaRef: current,
|
|
12174
|
+
time: action.shouldBeTime,
|
|
12106
12175
|
logLevel,
|
|
12107
|
-
|
|
12108
|
-
|
|
12109
|
-
isPlayer: env.isPlayer
|
|
12176
|
+
why: action.why,
|
|
12177
|
+
mountTime
|
|
12110
12178
|
});
|
|
12111
|
-
|
|
12112
|
-
|
|
12113
|
-
|
|
12179
|
+
}
|
|
12180
|
+
playAndHandleNotAllowedError({
|
|
12181
|
+
mediaRef,
|
|
12182
|
+
mediaType,
|
|
12183
|
+
onAutoPlayError,
|
|
12184
|
+
logLevel,
|
|
12185
|
+
mountTime,
|
|
12186
|
+
reason: action.playReason,
|
|
12187
|
+
isPlayer: env.isPlayer
|
|
12188
|
+
});
|
|
12189
|
+
if (action.bufferUntilFirstFrame) {
|
|
12190
|
+
bufferUntilFirstFrame(action.shouldBeTime);
|
|
12114
12191
|
}
|
|
12115
12192
|
}, [
|
|
12116
12193
|
absoluteFrame,
|
|
@@ -13301,6 +13378,18 @@ var loadImage = ({
|
|
|
13301
13378
|
function exponentialBackoff(errorCount) {
|
|
13302
13379
|
return 1000 * 2 ** (errorCount - 1);
|
|
13303
13380
|
}
|
|
13381
|
+
var waitForNextFrame = ({
|
|
13382
|
+
onFrame
|
|
13383
|
+
}) => {
|
|
13384
|
+
if (typeof requestAnimationFrame === "undefined") {
|
|
13385
|
+
onFrame();
|
|
13386
|
+
return () => {
|
|
13387
|
+
return;
|
|
13388
|
+
};
|
|
13389
|
+
}
|
|
13390
|
+
const frame = requestAnimationFrame(onFrame);
|
|
13391
|
+
return () => cancelAnimationFrame(frame);
|
|
13392
|
+
};
|
|
13304
13393
|
var CanvasImageContent = forwardRef10(({
|
|
13305
13394
|
src,
|
|
13306
13395
|
width,
|
|
@@ -13330,6 +13419,17 @@ var CanvasImageContent = forwardRef10(({
|
|
|
13330
13419
|
overrideId: controls?.overrideId ?? null
|
|
13331
13420
|
});
|
|
13332
13421
|
const sequenceContext = useContext32(SequenceContext);
|
|
13422
|
+
const pendingLoadDelayRef = useRef23(null);
|
|
13423
|
+
const continuePendingLoadDelay = useCallback17(() => {
|
|
13424
|
+
const pending = pendingLoadDelayRef.current;
|
|
13425
|
+
if (!pending || pending.continued) {
|
|
13426
|
+
return;
|
|
13427
|
+
}
|
|
13428
|
+
pending.continued = true;
|
|
13429
|
+
pending.unblock();
|
|
13430
|
+
continueRender2(pending.handle);
|
|
13431
|
+
pendingLoadDelayRef.current = null;
|
|
13432
|
+
}, [continueRender2]);
|
|
13333
13433
|
const sourceCanvas = useMemo31(() => {
|
|
13334
13434
|
if (typeof document === "undefined") {
|
|
13335
13435
|
return null;
|
|
@@ -13347,7 +13447,7 @@ var CanvasImageContent = forwardRef10(({
|
|
|
13347
13447
|
ref.current = canvas;
|
|
13348
13448
|
}
|
|
13349
13449
|
}, [ref, refForOutline]);
|
|
13350
|
-
|
|
13450
|
+
useLayoutEffect10(() => {
|
|
13351
13451
|
const isPremounting = Boolean(sequenceContext?.premounting);
|
|
13352
13452
|
const isPostmounting = Boolean(sequenceContext?.postmounting);
|
|
13353
13453
|
const handle = delayRender2(`Rendering <CanvasImage> with src="${truncateSrcForLabel(actualSrc)}"`, {
|
|
@@ -13359,17 +13459,13 @@ var CanvasImageContent = forwardRef10(({
|
|
|
13359
13459
|
};
|
|
13360
13460
|
const controller = new AbortController;
|
|
13361
13461
|
let cancelled = false;
|
|
13362
|
-
let continued = false;
|
|
13363
13462
|
let errorCount = 0;
|
|
13364
13463
|
let timeoutId = null;
|
|
13365
13464
|
setLoadedImage(null);
|
|
13366
|
-
|
|
13367
|
-
|
|
13368
|
-
|
|
13369
|
-
|
|
13370
|
-
continued = true;
|
|
13371
|
-
unblock();
|
|
13372
|
-
continueRender2(handle);
|
|
13465
|
+
pendingLoadDelayRef.current = {
|
|
13466
|
+
handle,
|
|
13467
|
+
unblock,
|
|
13468
|
+
continued: false
|
|
13373
13469
|
};
|
|
13374
13470
|
const attemptLoad = () => {
|
|
13375
13471
|
loadImage({ src: actualSrc, signal: controller.signal }).then((image) => {
|
|
@@ -13377,13 +13473,9 @@ var CanvasImageContent = forwardRef10(({
|
|
|
13377
13473
|
return;
|
|
13378
13474
|
}
|
|
13379
13475
|
setLoadedImage(image);
|
|
13380
|
-
}).then(() => {
|
|
13381
|
-
if (!cancelled) {
|
|
13382
|
-
continueRenderOnce();
|
|
13383
|
-
}
|
|
13384
13476
|
}).catch((err) => {
|
|
13385
13477
|
if (err.name === "AbortError") {
|
|
13386
|
-
|
|
13478
|
+
continuePendingLoadDelay();
|
|
13387
13479
|
return;
|
|
13388
13480
|
}
|
|
13389
13481
|
errorCount++;
|
|
@@ -13397,7 +13489,7 @@ var CanvasImageContent = forwardRef10(({
|
|
|
13397
13489
|
}, backoff);
|
|
13398
13490
|
} else if (onError) {
|
|
13399
13491
|
onError(err);
|
|
13400
|
-
|
|
13492
|
+
continuePendingLoadDelay();
|
|
13401
13493
|
} else {
|
|
13402
13494
|
cancelRender2(err);
|
|
13403
13495
|
}
|
|
@@ -13410,12 +13502,12 @@ var CanvasImageContent = forwardRef10(({
|
|
|
13410
13502
|
clearTimeout(timeoutId);
|
|
13411
13503
|
}
|
|
13412
13504
|
controller.abort();
|
|
13413
|
-
|
|
13505
|
+
continuePendingLoadDelay();
|
|
13414
13506
|
};
|
|
13415
13507
|
}, [
|
|
13416
13508
|
actualSrc,
|
|
13417
13509
|
cancelRender2,
|
|
13418
|
-
|
|
13510
|
+
continuePendingLoadDelay,
|
|
13419
13511
|
delayPlayback,
|
|
13420
13512
|
delayRender2,
|
|
13421
13513
|
delayRenderRetries,
|
|
@@ -13426,13 +13518,16 @@ var CanvasImageContent = forwardRef10(({
|
|
|
13426
13518
|
sequenceContext?.postmounting,
|
|
13427
13519
|
sequenceContext?.premounting
|
|
13428
13520
|
]);
|
|
13429
|
-
|
|
13521
|
+
useLayoutEffect10(() => {
|
|
13430
13522
|
if (!loadedImage || !outputCanvas || !sourceCanvas) {
|
|
13431
13523
|
return;
|
|
13432
13524
|
}
|
|
13433
13525
|
const handle = delayRender2(`Applying effects to <CanvasImage> with src="${truncateSrcForLabel(actualSrc)}"`);
|
|
13434
13526
|
let cancelled = false;
|
|
13435
13527
|
let continued = false;
|
|
13528
|
+
let cancelWaitForNextFrame = () => {
|
|
13529
|
+
return;
|
|
13530
|
+
};
|
|
13436
13531
|
const continueRenderOnce = () => {
|
|
13437
13532
|
if (continued) {
|
|
13438
13533
|
return;
|
|
@@ -13467,7 +13562,15 @@ var CanvasImageContent = forwardRef10(({
|
|
|
13467
13562
|
height: canvasHeight
|
|
13468
13563
|
}).then((completed) => {
|
|
13469
13564
|
if (completed && !cancelled) {
|
|
13470
|
-
|
|
13565
|
+
cancelWaitForNextFrame = waitForNextFrame({
|
|
13566
|
+
onFrame: () => {
|
|
13567
|
+
if (cancelled) {
|
|
13568
|
+
return;
|
|
13569
|
+
}
|
|
13570
|
+
continueRenderOnce();
|
|
13571
|
+
continuePendingLoadDelay();
|
|
13572
|
+
}
|
|
13573
|
+
});
|
|
13471
13574
|
}
|
|
13472
13575
|
}).catch((err) => {
|
|
13473
13576
|
if (cancelled) {
|
|
@@ -13476,12 +13579,14 @@ var CanvasImageContent = forwardRef10(({
|
|
|
13476
13579
|
if (onError) {
|
|
13477
13580
|
onError(err);
|
|
13478
13581
|
continueRenderOnce();
|
|
13582
|
+
continuePendingLoadDelay();
|
|
13479
13583
|
} else {
|
|
13480
13584
|
cancelRender2(err);
|
|
13481
13585
|
}
|
|
13482
13586
|
});
|
|
13483
13587
|
return () => {
|
|
13484
13588
|
cancelled = true;
|
|
13589
|
+
cancelWaitForNextFrame();
|
|
13485
13590
|
continueRenderOnce();
|
|
13486
13591
|
};
|
|
13487
13592
|
}, [
|
|
@@ -13489,6 +13594,7 @@ var CanvasImageContent = forwardRef10(({
|
|
|
13489
13594
|
cancelRender2,
|
|
13490
13595
|
chainState,
|
|
13491
13596
|
continueRender2,
|
|
13597
|
+
continuePendingLoadDelay,
|
|
13492
13598
|
delayRender2,
|
|
13493
13599
|
fit,
|
|
13494
13600
|
height,
|
|
@@ -13698,7 +13804,7 @@ var ImgContent = ({
|
|
|
13698
13804
|
if (typeof window !== "undefined") {
|
|
13699
13805
|
const isPremounting = Boolean(sequenceContext?.premounting);
|
|
13700
13806
|
const isPostmounting = Boolean(sequenceContext?.postmounting);
|
|
13701
|
-
|
|
13807
|
+
useLayoutEffect11(() => {
|
|
13702
13808
|
if (window.process?.env?.NODE_ENV === "test") {
|
|
13703
13809
|
if (imageRef.current) {
|
|
13704
13810
|
imageRef.current.src = actualSrc;
|
|
@@ -14594,7 +14700,7 @@ var OffthreadVideoForRendering = ({
|
|
|
14594
14700
|
mediaVolume: 1
|
|
14595
14701
|
});
|
|
14596
14702
|
warnAboutTooHighVolume(volume);
|
|
14597
|
-
|
|
14703
|
+
useEffect17(() => {
|
|
14598
14704
|
if (!src) {
|
|
14599
14705
|
throw new Error("No src passed");
|
|
14600
14706
|
}
|
|
@@ -14651,7 +14757,7 @@ var OffthreadVideoForRendering = ({
|
|
|
14651
14757
|
}, [toneMapped, currentTime, src, transparent]);
|
|
14652
14758
|
const [imageSrc, setImageSrc] = useState19(null);
|
|
14653
14759
|
const { delayRender: delayRender2, continueRender: continueRender2 } = useDelayRender();
|
|
14654
|
-
|
|
14760
|
+
useLayoutEffect12(() => {
|
|
14655
14761
|
if (!window.remotion_videoEnabled) {
|
|
14656
14762
|
return;
|
|
14657
14763
|
}
|
|
@@ -14755,7 +14861,7 @@ var useEmitVideoFrame = ({
|
|
|
14755
14861
|
ref,
|
|
14756
14862
|
onVideoFrame
|
|
14757
14863
|
}) => {
|
|
14758
|
-
|
|
14864
|
+
useEffect18(() => {
|
|
14759
14865
|
const { current } = ref;
|
|
14760
14866
|
if (!current) {
|
|
14761
14867
|
return;
|
|
@@ -14930,7 +15036,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
|
|
|
14930
15036
|
tag: "video",
|
|
14931
15037
|
mountTime
|
|
14932
15038
|
}));
|
|
14933
|
-
|
|
15039
|
+
useEffect19(() => {
|
|
14934
15040
|
const { current } = videoRef;
|
|
14935
15041
|
if (!current) {
|
|
14936
15042
|
return;
|
|
@@ -14973,7 +15079,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
|
|
|
14973
15079
|
const currentOnDurationCallback = useRef27(onDuration);
|
|
14974
15080
|
currentOnDurationCallback.current = onDuration;
|
|
14975
15081
|
useEmitVideoFrame({ ref: videoRef, onVideoFrame });
|
|
14976
|
-
|
|
15082
|
+
useEffect19(() => {
|
|
14977
15083
|
const { current } = videoRef;
|
|
14978
15084
|
if (!current) {
|
|
14979
15085
|
return;
|
|
@@ -14990,7 +15096,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
|
|
|
14990
15096
|
current.removeEventListener("loadedmetadata", onLoadedMetadata);
|
|
14991
15097
|
};
|
|
14992
15098
|
}, [src]);
|
|
14993
|
-
|
|
15099
|
+
useEffect19(() => {
|
|
14994
15100
|
const { current } = videoRef;
|
|
14995
15101
|
if (!current) {
|
|
14996
15102
|
return;
|
|
@@ -15605,6 +15711,15 @@ var staticFile = (path) => {
|
|
|
15605
15711
|
}
|
|
15606
15712
|
return preparsed;
|
|
15607
15713
|
};
|
|
15714
|
+
var Still = (props2) => {
|
|
15715
|
+
const newProps = {
|
|
15716
|
+
...props2,
|
|
15717
|
+
durationInFrames: 1,
|
|
15718
|
+
fps: 1
|
|
15719
|
+
};
|
|
15720
|
+
return React42.createElement(Composition, newProps);
|
|
15721
|
+
};
|
|
15722
|
+
addSequenceStackTraces(Still);
|
|
15608
15723
|
var roundTo6Commas = (num) => {
|
|
15609
15724
|
return Math.round(num * 1e5) / 1e5;
|
|
15610
15725
|
};
|
|
@@ -15771,7 +15886,7 @@ var VideoForRenderingForwardFunction = ({
|
|
|
15771
15886
|
mediaVolume: 1
|
|
15772
15887
|
});
|
|
15773
15888
|
warnAboutTooHighVolume(volume);
|
|
15774
|
-
|
|
15889
|
+
useEffect20(() => {
|
|
15775
15890
|
if (!props2.src) {
|
|
15776
15891
|
throw new Error("No src passed");
|
|
15777
15892
|
}
|
|
@@ -15815,7 +15930,7 @@ var VideoForRenderingForwardFunction = ({
|
|
|
15815
15930
|
return videoRef.current;
|
|
15816
15931
|
}, []);
|
|
15817
15932
|
useEmitVideoFrame({ ref: videoRef, onVideoFrame });
|
|
15818
|
-
|
|
15933
|
+
useEffect20(() => {
|
|
15819
15934
|
if (!window.remotion_videoEnabled) {
|
|
15820
15935
|
return;
|
|
15821
15936
|
}
|
|
@@ -15905,7 +16020,7 @@ var VideoForRenderingForwardFunction = ({
|
|
|
15905
16020
|
]);
|
|
15906
16021
|
const { src } = props2;
|
|
15907
16022
|
if (environment.isRendering) {
|
|
15908
|
-
|
|
16023
|
+
useLayoutEffect13(() => {
|
|
15909
16024
|
if (window.process?.env?.NODE_ENV === "test") {
|
|
15910
16025
|
return;
|
|
15911
16026
|
}
|
|
@@ -19009,7 +19124,7 @@ var extrudeAndTransformElement = (options) => {
|
|
|
19009
19124
|
// ../design/dist/esm/index.mjs
|
|
19010
19125
|
import { jsx as jsx212, Fragment as Fragment3 } from "react/jsx-runtime";
|
|
19011
19126
|
import { jsx as jsx312, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
19012
|
-
import { useEffect as
|
|
19127
|
+
import { useEffect as useEffect22, useMemo as useMemo210, useRef as useRef31 } from "react";
|
|
19013
19128
|
import { jsx as jsx44 } from "react/jsx-runtime";
|
|
19014
19129
|
import { jsx as jsx53, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
19015
19130
|
import React62 from "react";
|
|
@@ -19264,7 +19379,7 @@ var useHoverTransforms = (ref, disabled) => {
|
|
|
19264
19379
|
isActive: false
|
|
19265
19380
|
});
|
|
19266
19381
|
const eventTarget = useMemo42(() => new EventTarget, []);
|
|
19267
|
-
|
|
19382
|
+
useEffect21(() => {
|
|
19268
19383
|
if (disabled) {
|
|
19269
19384
|
eventTarget.dispatchEvent(new Event("disabled"));
|
|
19270
19385
|
} else {
|
|
@@ -19411,7 +19526,7 @@ var getAngle = (ref, coordinates) => {
|
|
|
19411
19526
|
var lastCoordinates = null;
|
|
19412
19527
|
var useMousePosition = (ref) => {
|
|
19413
19528
|
const [angle, setAngle] = useState21(getAngle(ref.current, lastCoordinates));
|
|
19414
|
-
|
|
19529
|
+
useEffect21(() => {
|
|
19415
19530
|
const element = ref.current;
|
|
19416
19531
|
if (!element) {
|
|
19417
19532
|
return;
|
|
@@ -19532,7 +19647,7 @@ var Spinner = ({ size, duration }) => {
|
|
|
19532
19647
|
};
|
|
19533
19648
|
}, [size]);
|
|
19534
19649
|
const pathsRef = useRef31([]);
|
|
19535
|
-
|
|
19650
|
+
useEffect22(() => {
|
|
19536
19651
|
const animate = () => {
|
|
19537
19652
|
const now = performance.now();
|
|
19538
19653
|
for (let index = 0;index < lines; index++) {
|
|
@@ -27598,7 +27713,21 @@ var CompanyPricing = () => {
|
|
|
27598
27713
|
|
|
27599
27714
|
// src/components/homepage/Pricing.tsx
|
|
27600
27715
|
import { jsx as jsx47, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
27601
|
-
var Pricing = (
|
|
27716
|
+
var Pricing = ({
|
|
27717
|
+
faqHref = "/docs/license/faq",
|
|
27718
|
+
faqLabel = "License FAQ",
|
|
27719
|
+
licenseHref = "https://github.com/remotion-dev/remotion/blob/main/LICENSE.md",
|
|
27720
|
+
termsHref = "https://www.remotion.pro/terms"
|
|
27721
|
+
}) => {
|
|
27722
|
+
const faqLinkTarget = useMemo52(() => {
|
|
27723
|
+
return faqHref.startsWith("http") ? "_blank" : undefined;
|
|
27724
|
+
}, [faqHref]);
|
|
27725
|
+
const licenseLinkTarget = useMemo52(() => {
|
|
27726
|
+
return licenseHref.startsWith("http") ? "_blank" : undefined;
|
|
27727
|
+
}, [licenseHref]);
|
|
27728
|
+
const termsLinkTarget = useMemo52(() => {
|
|
27729
|
+
return termsHref.startsWith("http") ? "_blank" : undefined;
|
|
27730
|
+
}, [termsHref]);
|
|
27602
27731
|
return /* @__PURE__ */ jsxs8("div", {
|
|
27603
27732
|
style: {
|
|
27604
27733
|
display: "flex",
|
|
@@ -27623,18 +27752,23 @@ var Pricing = () => {
|
|
|
27623
27752
|
"See our",
|
|
27624
27753
|
" ",
|
|
27625
27754
|
/* @__PURE__ */ jsx47("a", {
|
|
27626
|
-
target:
|
|
27755
|
+
target: licenseLinkTarget,
|
|
27627
27756
|
className: "bluelink",
|
|
27628
|
-
href:
|
|
27629
|
-
children: "
|
|
27757
|
+
href: licenseHref,
|
|
27758
|
+
children: "LICENSE.md"
|
|
27630
27759
|
}),
|
|
27631
|
-
" ",
|
|
27632
|
-
"
|
|
27633
|
-
|
|
27760
|
+
", ",
|
|
27761
|
+
/* @__PURE__ */ jsx47("a", {
|
|
27762
|
+
target: faqLinkTarget,
|
|
27763
|
+
className: "bluelink",
|
|
27764
|
+
href: faqHref,
|
|
27765
|
+
children: faqLabel
|
|
27766
|
+
}),
|
|
27767
|
+
", and ",
|
|
27634
27768
|
/* @__PURE__ */ jsx47("a", {
|
|
27635
|
-
target:
|
|
27769
|
+
target: termsLinkTarget,
|
|
27636
27770
|
className: "bluelink",
|
|
27637
|
-
href:
|
|
27771
|
+
href: termsHref,
|
|
27638
27772
|
children: "Terms and Conditions"
|
|
27639
27773
|
}),
|
|
27640
27774
|
" ",
|