@remotion/promo-pages 4.0.486 → 4.0.488
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 +1147 -2270
- package/dist/components/Homepage.js +21 -5
- package/dist/components/homepage/CanvasSectionTitle.d.ts +4 -0
- package/dist/components/homepage/CanvasSectionTitle.js +14 -0
- package/dist/components/homepage/CommunityStatsItems.js +2 -2
- package/dist/components/homepage/Demo/DemoRender.d.ts +1 -1
- package/dist/components/homepage/Demo/DisplayedEmoji.js +3 -5
- package/dist/components/homepage/Demo/math.d.ts +1 -1
- package/dist/components/homepage/EditorStarterSection.d.ts +3 -0
- package/dist/components/homepage/EditorStarterSection.js +8 -0
- package/dist/components/homepage/GitHubButton.js +1 -1
- package/dist/components/homepage/MakeVideosAgentically.d.ts +10 -0
- package/dist/components/homepage/MakeVideosAgentically.js +37 -0
- package/dist/components/homepage/MakeVideosInteractively.d.ts +9 -0
- package/dist/components/homepage/MakeVideosInteractively.js +16 -0
- package/dist/components/homepage/MakeVideosLinks.d.ts +9 -0
- package/dist/components/homepage/MakeVideosLinks.js +17 -0
- package/dist/components/homepage/MakeVideosProgrammatically.d.ts +9 -0
- package/dist/components/homepage/MakeVideosProgrammatically.js +8 -0
- package/dist/components/homepage/Pricing.d.ts +1 -3
- package/dist/components/homepage/Pricing.js +2 -6
- package/dist/components/homepage/WriteInReact.js +1 -2
- package/dist/components/team/TrustSection.js +1 -1
- package/dist/design.js +241 -130
- package/dist/experts.js +230 -119
- package/dist/homepage/Pricing.js +255 -128
- package/dist/prompts/PromptsGallery.js +241 -130
- package/dist/prompts/PromptsShow.js +247 -136
- package/dist/prompts/PromptsSubmit.js +232 -121
- package/dist/tailwind.css +21 -3
- package/dist/team.js +232 -121
- package/dist/template-modal-content.css +1 -1
- package/dist/template-modal-content.js +238 -127
- package/dist/templates.js +232 -121
- 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
|
@@ -1381,7 +1381,7 @@ var getDefaultConfig = () => {
|
|
|
1381
1381
|
var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
|
|
1382
1382
|
|
|
1383
1383
|
// ../design/dist/esm/index.mjs
|
|
1384
|
-
import React32, { useEffect as useEffect21, useMemo as useMemo42, useState as
|
|
1384
|
+
import React32, { useEffect as useEffect21, useMemo as useMemo42, useState as useState23 } from "react";
|
|
1385
1385
|
|
|
1386
1386
|
// ../paths/dist/esm/index.mjs
|
|
1387
1387
|
var cutLInstruction = ({
|
|
@@ -4333,7 +4333,13 @@ import {
|
|
|
4333
4333
|
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
4334
4334
|
import { forwardRef as forwardRef11, useCallback as useCallback18, useState as useState17 } from "react";
|
|
4335
4335
|
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
4336
|
-
import {
|
|
4336
|
+
import {
|
|
4337
|
+
useCallback as useCallback19,
|
|
4338
|
+
useContext as useContext33,
|
|
4339
|
+
useLayoutEffect as useLayoutEffect11,
|
|
4340
|
+
useRef as useRef24,
|
|
4341
|
+
useState as useState18
|
|
4342
|
+
} from "react";
|
|
4337
4343
|
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
4338
4344
|
import React29, { forwardRef as forwardRef12, useCallback as useCallback20, useRef as useRef25 } from "react";
|
|
4339
4345
|
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
@@ -4344,7 +4350,7 @@ import {
|
|
|
4344
4350
|
useImperativeHandle as useImperativeHandle8,
|
|
4345
4351
|
useMemo as useMemo32,
|
|
4346
4352
|
useRef as useRef26,
|
|
4347
|
-
useState as
|
|
4353
|
+
useState as useState19
|
|
4348
4354
|
} from "react";
|
|
4349
4355
|
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
4350
4356
|
import React31 from "react";
|
|
@@ -4362,7 +4368,7 @@ import {
|
|
|
4362
4368
|
useEffect as useEffect17,
|
|
4363
4369
|
useLayoutEffect as useLayoutEffect12,
|
|
4364
4370
|
useMemo as useMemo35,
|
|
4365
|
-
useState as
|
|
4371
|
+
useState as useState20
|
|
4366
4372
|
} from "react";
|
|
4367
4373
|
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
4368
4374
|
import React37, {
|
|
@@ -4373,7 +4379,7 @@ import React37, {
|
|
|
4373
4379
|
useImperativeHandle as useImperativeHandle9,
|
|
4374
4380
|
useMemo as useMemo36,
|
|
4375
4381
|
useRef as useRef27,
|
|
4376
|
-
useState as
|
|
4382
|
+
useState as useState21
|
|
4377
4383
|
} from "react";
|
|
4378
4384
|
import { useEffect as useEffect18 } from "react";
|
|
4379
4385
|
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
@@ -5568,7 +5574,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
|
|
|
5568
5574
|
var addSequenceStackTraces = (component) => {
|
|
5569
5575
|
componentsToAddStacksTo.push(component);
|
|
5570
5576
|
};
|
|
5571
|
-
var VERSION = "4.0.
|
|
5577
|
+
var VERSION = "4.0.488";
|
|
5572
5578
|
var checkMultipleRemotionVersions = () => {
|
|
5573
5579
|
if (typeof globalThis === "undefined") {
|
|
5574
5580
|
return;
|
|
@@ -9252,7 +9258,7 @@ var useEffectChainState = () => {
|
|
|
9252
9258
|
}
|
|
9253
9259
|
}), []);
|
|
9254
9260
|
};
|
|
9255
|
-
var CanvasRefForwardingFunction = ({ width, height, fit, className, style, effects }, ref) => {
|
|
9261
|
+
var CanvasRefForwardingFunction = ({ width, height, fit, className, style, effects, ...props }, ref) => {
|
|
9256
9262
|
const canvasRef = useRef8(null);
|
|
9257
9263
|
const chainState = useEffectChainState();
|
|
9258
9264
|
const sourceCanvas = useMemo16(() => {
|
|
@@ -9316,7 +9322,8 @@ var CanvasRefForwardingFunction = ({ width, height, fit, className, style, effec
|
|
|
9316
9322
|
return /* @__PURE__ */ jsx13("canvas", {
|
|
9317
9323
|
ref: canvasRef,
|
|
9318
9324
|
className,
|
|
9319
|
-
style
|
|
9325
|
+
style,
|
|
9326
|
+
...props
|
|
9320
9327
|
});
|
|
9321
9328
|
};
|
|
9322
9329
|
var Canvas = React15.forwardRef(CanvasRefForwardingFunction);
|
|
@@ -9493,6 +9500,16 @@ var animatedImageSchema = {
|
|
|
9493
9500
|
},
|
|
9494
9501
|
...transformSchema
|
|
9495
9502
|
};
|
|
9503
|
+
var getCanvasPropsFromSequenceProps = (props) => {
|
|
9504
|
+
const canvasProps = {};
|
|
9505
|
+
const mutableCanvasProps = canvasProps;
|
|
9506
|
+
for (const key in props) {
|
|
9507
|
+
if (Object.prototype.hasOwnProperty.call(props, key) && (key.startsWith("data-") || key.startsWith("aria-"))) {
|
|
9508
|
+
mutableCanvasProps[key] = props[key];
|
|
9509
|
+
}
|
|
9510
|
+
}
|
|
9511
|
+
return canvasProps;
|
|
9512
|
+
};
|
|
9496
9513
|
var AnimatedImageContent = forwardRef4(({
|
|
9497
9514
|
src,
|
|
9498
9515
|
width,
|
|
@@ -9647,6 +9664,7 @@ var AnimatedImageInner = ({
|
|
|
9647
9664
|
useImperativeHandle2(ref, () => {
|
|
9648
9665
|
return actualRef.current;
|
|
9649
9666
|
}, []);
|
|
9667
|
+
const canvasProps = getCanvasPropsFromSequenceProps(sequenceProps);
|
|
9650
9668
|
const animatedImageProps = {
|
|
9651
9669
|
src,
|
|
9652
9670
|
width,
|
|
@@ -9658,7 +9676,8 @@ var AnimatedImageInner = ({
|
|
|
9658
9676
|
id,
|
|
9659
9677
|
className,
|
|
9660
9678
|
style,
|
|
9661
|
-
requestInit
|
|
9679
|
+
requestInit,
|
|
9680
|
+
...canvasProps
|
|
9662
9681
|
};
|
|
9663
9682
|
return /* @__PURE__ */ jsx14(Sequence, {
|
|
9664
9683
|
layout: "none",
|
|
@@ -10595,6 +10614,7 @@ var SharedAudioContextProvider = ({ children, audioLatencyHint, audioEnabled, pr
|
|
|
10595
10614
|
return ({
|
|
10596
10615
|
node,
|
|
10597
10616
|
mediaTimestamp,
|
|
10617
|
+
sourceOffset,
|
|
10598
10618
|
scheduledTime,
|
|
10599
10619
|
duration,
|
|
10600
10620
|
offset,
|
|
@@ -10623,7 +10643,7 @@ var SharedAudioContextProvider = ({ children, audioLatencyHint, audioEnabled, pr
|
|
|
10623
10643
|
}
|
|
10624
10644
|
}
|
|
10625
10645
|
const scheduledEndTime = scheduledTime + duration / node.playbackRate.value;
|
|
10626
|
-
const mediaTime = mediaTimestamp + offset;
|
|
10646
|
+
const mediaTime = mediaTimestamp + offset - sourceOffset;
|
|
10627
10647
|
const mediaEndTime = mediaTime + duration;
|
|
10628
10648
|
const latency = ctxAndGain.audioContext.baseLatency + ctxAndGain.audioContext.outputLatency;
|
|
10629
10649
|
const timeDiff = scheduledTime - ctxAndGain.audioContext.currentTime;
|
|
@@ -11438,7 +11458,8 @@ var useBufferManager = (logLevel, mountTime) => {
|
|
|
11438
11458
|
if (rendering) {
|
|
11439
11459
|
return;
|
|
11440
11460
|
}
|
|
11441
|
-
if (blocks.length > 0) {
|
|
11461
|
+
if (blocks.length > 0 && !buffering.current) {
|
|
11462
|
+
buffering.current = true;
|
|
11442
11463
|
onBufferingCallbacks.forEach((c2) => c2());
|
|
11443
11464
|
playbackLogging({
|
|
11444
11465
|
logLevel,
|
|
@@ -11453,7 +11474,8 @@ var useBufferManager = (logLevel, mountTime) => {
|
|
|
11453
11474
|
if (rendering) {
|
|
11454
11475
|
return;
|
|
11455
11476
|
}
|
|
11456
|
-
if (blocks.length === 0) {
|
|
11477
|
+
if (blocks.length === 0 && buffering.current) {
|
|
11478
|
+
buffering.current = false;
|
|
11457
11479
|
onResumeCallbacks.forEach((c2) => c2());
|
|
11458
11480
|
playbackLogging({
|
|
11459
11481
|
logLevel,
|
|
@@ -11486,15 +11508,11 @@ var useIsPlayerBuffering = (bufferManager) => {
|
|
|
11486
11508
|
const onResume = () => {
|
|
11487
11509
|
setIsBuffering(false);
|
|
11488
11510
|
};
|
|
11489
|
-
bufferManager.listenForBuffering(onBuffer);
|
|
11490
|
-
bufferManager.listenForResume(onResume);
|
|
11511
|
+
const buffer = bufferManager.listenForBuffering(onBuffer);
|
|
11512
|
+
const resume = bufferManager.listenForResume(onResume);
|
|
11491
11513
|
return () => {
|
|
11492
|
-
|
|
11493
|
-
|
|
11494
|
-
});
|
|
11495
|
-
bufferManager.listenForResume(() => {
|
|
11496
|
-
return;
|
|
11497
|
-
});
|
|
11514
|
+
buffer.remove();
|
|
11515
|
+
resume.remove();
|
|
11498
11516
|
};
|
|
11499
11517
|
}, [bufferManager]);
|
|
11500
11518
|
return isBuffering;
|
|
@@ -11618,6 +11636,72 @@ var useBufferUntilFirstFrame = ({
|
|
|
11618
11636
|
};
|
|
11619
11637
|
}, [bufferUntilFirstFrame]);
|
|
11620
11638
|
};
|
|
11639
|
+
var getMediaSyncAction = (input) => {
|
|
11640
|
+
const {
|
|
11641
|
+
duration,
|
|
11642
|
+
currentTime,
|
|
11643
|
+
paused,
|
|
11644
|
+
ended,
|
|
11645
|
+
desiredUnclampedTime,
|
|
11646
|
+
mediaTagTime,
|
|
11647
|
+
mediaTagLastUpdate,
|
|
11648
|
+
rvcTime,
|
|
11649
|
+
rvcLastUpdate,
|
|
11650
|
+
isVariableFpsVideo,
|
|
11651
|
+
acceptableTimeShift,
|
|
11652
|
+
lastSeekDueToShift,
|
|
11653
|
+
playing,
|
|
11654
|
+
playbackRate,
|
|
11655
|
+
mediaTagBufferingOrStalled,
|
|
11656
|
+
playerBuffering,
|
|
11657
|
+
absoluteFrame,
|
|
11658
|
+
onlyWarnForMediaSeekingError,
|
|
11659
|
+
isPremounting,
|
|
11660
|
+
isPostmounting,
|
|
11661
|
+
pauseWhenBuffering
|
|
11662
|
+
} = input;
|
|
11663
|
+
const shouldBeTime = !Number.isNaN(duration) && Number.isFinite(duration) ? Math.min(duration, desiredUnclampedTime) : desiredUnclampedTime;
|
|
11664
|
+
const timeShiftMediaTag = Math.abs(shouldBeTime - mediaTagTime);
|
|
11665
|
+
const timeShiftRvcTag = rvcTime ? Math.abs(shouldBeTime - rvcTime) : null;
|
|
11666
|
+
const mostRecentTimeshift = rvcLastUpdate && rvcTime > mediaTagLastUpdate ? timeShiftRvcTag : timeShiftMediaTag;
|
|
11667
|
+
const timeShift = timeShiftRvcTag && !isVariableFpsVideo ? mostRecentTimeshift : timeShiftMediaTag;
|
|
11668
|
+
if (timeShift > acceptableTimeShift && lastSeekDueToShift !== shouldBeTime) {
|
|
11669
|
+
return {
|
|
11670
|
+
type: "seek-due-to-shift",
|
|
11671
|
+
shouldBeTime,
|
|
11672
|
+
why: `because time shift is too big. shouldBeTime = ${shouldBeTime}, isTime = ${mediaTagTime}, requestVideoCallbackTime = ${rvcTime}, timeShift = ${timeShift}${isVariableFpsVideo ? ", isVariableFpsVideo = true" : ""}, isPremounting = ${isPremounting}, isPostmounting = ${isPostmounting}, pauseWhenBuffering = ${pauseWhenBuffering}`,
|
|
11673
|
+
bufferUntilFirstFrame: playing && playbackRate > 0,
|
|
11674
|
+
playReason: playing && paused ? "player is playing but media tag is paused, and just seeked" : null,
|
|
11675
|
+
warnAboutNonSeekable: !onlyWarnForMediaSeekingError
|
|
11676
|
+
};
|
|
11677
|
+
}
|
|
11678
|
+
const seekThreshold = playing ? 0.15 : 0.01;
|
|
11679
|
+
const makesSenseToSeek = Math.abs(currentTime - shouldBeTime) > seekThreshold;
|
|
11680
|
+
const isSomethingElseBuffering = playerBuffering && !mediaTagBufferingOrStalled;
|
|
11681
|
+
if (!playing || isSomethingElseBuffering) {
|
|
11682
|
+
return {
|
|
11683
|
+
type: "seek-if-not-playing",
|
|
11684
|
+
shouldBeTime,
|
|
11685
|
+
why: makesSenseToSeek ? `not playing or something else is buffering. time offset is over seek threshold (${seekThreshold})` : null
|
|
11686
|
+
};
|
|
11687
|
+
}
|
|
11688
|
+
if (!playing || playerBuffering) {
|
|
11689
|
+
return { type: "none" };
|
|
11690
|
+
}
|
|
11691
|
+
const pausedCondition = paused && !ended;
|
|
11692
|
+
const firstFrameCondition = absoluteFrame === 0;
|
|
11693
|
+
if (pausedCondition || firstFrameCondition) {
|
|
11694
|
+
const reason = pausedCondition ? "media tag is paused" : "absolute frame is 0";
|
|
11695
|
+
return {
|
|
11696
|
+
type: "play-and-seek",
|
|
11697
|
+
shouldBeTime,
|
|
11698
|
+
why: makesSenseToSeek ? `is over timeshift threshold (threshold = ${seekThreshold}) and ${reason}` : null,
|
|
11699
|
+
playReason: `player is playing and ${reason}`,
|
|
11700
|
+
bufferUntilFirstFrame: !isVariableFpsVideo && playbackRate > 0
|
|
11701
|
+
};
|
|
11702
|
+
}
|
|
11703
|
+
return { type: "none" };
|
|
11704
|
+
};
|
|
11621
11705
|
var useCurrentTimeOfMediaTagWithUpdateTimeStamp = (mediaRef) => {
|
|
11622
11706
|
const lastUpdate = React21.useRef({
|
|
11623
11707
|
time: mediaRef.current?.currentTime ?? 0,
|
|
@@ -12037,89 +12121,93 @@ var useMediaPlayback = ({
|
|
|
12037
12121
|
if (!src) {
|
|
12038
12122
|
throw new Error(`No 'src' attribute was passed to the ${tagName} element.`);
|
|
12039
12123
|
}
|
|
12040
|
-
const {
|
|
12041
|
-
const
|
|
12042
|
-
|
|
12043
|
-
|
|
12044
|
-
|
|
12045
|
-
|
|
12046
|
-
|
|
12047
|
-
|
|
12048
|
-
|
|
12049
|
-
|
|
12124
|
+
const { current } = mediaRef;
|
|
12125
|
+
const action = getMediaSyncAction({
|
|
12126
|
+
duration: current.duration,
|
|
12127
|
+
currentTime: current.currentTime,
|
|
12128
|
+
paused: current.paused,
|
|
12129
|
+
ended: current.ended,
|
|
12130
|
+
desiredUnclampedTime,
|
|
12131
|
+
mediaTagTime: mediaTagCurrentTime.current.time,
|
|
12132
|
+
mediaTagLastUpdate: mediaTagCurrentTime.current.lastUpdate,
|
|
12133
|
+
rvcTime: rvcCurrentTime.current?.time ?? null,
|
|
12134
|
+
rvcLastUpdate: rvcCurrentTime.current?.lastUpdate ?? null,
|
|
12135
|
+
isVariableFpsVideo: Boolean(isVariableFpsVideoMap.current[src]),
|
|
12136
|
+
acceptableTimeShift: acceptableTimeShiftButLessThanDuration,
|
|
12137
|
+
lastSeekDueToShift: lastSeekDueToShift.current,
|
|
12138
|
+
playing,
|
|
12139
|
+
playbackRate,
|
|
12140
|
+
mediaTagBufferingOrStalled: isMediaTagBuffering || isBuffering(),
|
|
12141
|
+
playerBuffering: buffering.buffering.current,
|
|
12142
|
+
absoluteFrame,
|
|
12143
|
+
onlyWarnForMediaSeekingError,
|
|
12144
|
+
isPremounting,
|
|
12145
|
+
isPostmounting,
|
|
12146
|
+
pauseWhenBuffering
|
|
12147
|
+
});
|
|
12148
|
+
if (action.type === "none") {
|
|
12149
|
+
return;
|
|
12150
|
+
}
|
|
12151
|
+
if (action.type === "seek-due-to-shift") {
|
|
12050
12152
|
lastSeek.current = seek({
|
|
12051
|
-
mediaRef:
|
|
12052
|
-
time: shouldBeTime,
|
|
12153
|
+
mediaRef: current,
|
|
12154
|
+
time: action.shouldBeTime,
|
|
12053
12155
|
logLevel,
|
|
12054
|
-
why:
|
|
12156
|
+
why: action.why,
|
|
12055
12157
|
mountTime
|
|
12056
12158
|
});
|
|
12057
12159
|
lastSeekDueToShift.current = lastSeek.current;
|
|
12058
|
-
if (
|
|
12059
|
-
|
|
12060
|
-
bufferUntilFirstFrame(shouldBeTime);
|
|
12061
|
-
}
|
|
12062
|
-
if (mediaRef.current.paused) {
|
|
12063
|
-
playAndHandleNotAllowedError({
|
|
12064
|
-
mediaRef,
|
|
12065
|
-
mediaType,
|
|
12066
|
-
onAutoPlayError,
|
|
12067
|
-
logLevel,
|
|
12068
|
-
mountTime,
|
|
12069
|
-
reason: "player is playing but media tag is paused, and just seeked",
|
|
12070
|
-
isPlayer: env.isPlayer
|
|
12071
|
-
});
|
|
12072
|
-
}
|
|
12073
|
-
}
|
|
12074
|
-
if (!onlyWarnForMediaSeekingError) {
|
|
12075
|
-
warnAboutNonSeekableMedia(mediaRef.current, onlyWarnForMediaSeekingError ? "console-warning" : "console-error");
|
|
12160
|
+
if (action.bufferUntilFirstFrame) {
|
|
12161
|
+
bufferUntilFirstFrame(action.shouldBeTime);
|
|
12076
12162
|
}
|
|
12077
|
-
|
|
12078
|
-
|
|
12079
|
-
|
|
12080
|
-
|
|
12081
|
-
|
|
12082
|
-
const isSomethingElseBuffering = buffering.buffering.current && !isMediaTagBufferingOrStalled;
|
|
12083
|
-
if (!playing || isSomethingElseBuffering) {
|
|
12084
|
-
if (makesSenseToSeek) {
|
|
12085
|
-
lastSeek.current = seek({
|
|
12086
|
-
mediaRef: mediaRef.current,
|
|
12087
|
-
time: shouldBeTime,
|
|
12163
|
+
if (action.playReason !== null) {
|
|
12164
|
+
playAndHandleNotAllowedError({
|
|
12165
|
+
mediaRef,
|
|
12166
|
+
mediaType,
|
|
12167
|
+
onAutoPlayError,
|
|
12088
12168
|
logLevel,
|
|
12089
|
-
|
|
12090
|
-
|
|
12169
|
+
mountTime,
|
|
12170
|
+
reason: action.playReason,
|
|
12171
|
+
isPlayer: env.isPlayer
|
|
12091
12172
|
});
|
|
12092
12173
|
}
|
|
12174
|
+
if (action.warnAboutNonSeekable) {
|
|
12175
|
+
warnAboutNonSeekableMedia(current, "console-error");
|
|
12176
|
+
}
|
|
12093
12177
|
return;
|
|
12094
12178
|
}
|
|
12095
|
-
if (
|
|
12096
|
-
|
|
12097
|
-
}
|
|
12098
|
-
const pausedCondition = mediaRef.current.paused && !mediaRef.current.ended;
|
|
12099
|
-
const firstFrameCondition = absoluteFrame === 0;
|
|
12100
|
-
if (pausedCondition || firstFrameCondition) {
|
|
12101
|
-
const reason = pausedCondition ? "media tag is paused" : "absolute frame is 0";
|
|
12102
|
-
if (makesSenseToSeek) {
|
|
12179
|
+
if (action.type === "seek-if-not-playing") {
|
|
12180
|
+
if (action.why !== null) {
|
|
12103
12181
|
lastSeek.current = seek({
|
|
12104
|
-
mediaRef:
|
|
12105
|
-
time: shouldBeTime,
|
|
12182
|
+
mediaRef: current,
|
|
12183
|
+
time: action.shouldBeTime,
|
|
12106
12184
|
logLevel,
|
|
12107
|
-
why:
|
|
12185
|
+
why: action.why,
|
|
12108
12186
|
mountTime
|
|
12109
12187
|
});
|
|
12110
12188
|
}
|
|
12111
|
-
|
|
12112
|
-
|
|
12113
|
-
|
|
12114
|
-
|
|
12189
|
+
return;
|
|
12190
|
+
}
|
|
12191
|
+
if (action.why !== null) {
|
|
12192
|
+
lastSeek.current = seek({
|
|
12193
|
+
mediaRef: current,
|
|
12194
|
+
time: action.shouldBeTime,
|
|
12115
12195
|
logLevel,
|
|
12116
|
-
|
|
12117
|
-
|
|
12118
|
-
isPlayer: env.isPlayer
|
|
12196
|
+
why: action.why,
|
|
12197
|
+
mountTime
|
|
12119
12198
|
});
|
|
12120
|
-
|
|
12121
|
-
|
|
12122
|
-
|
|
12199
|
+
}
|
|
12200
|
+
playAndHandleNotAllowedError({
|
|
12201
|
+
mediaRef,
|
|
12202
|
+
mediaType,
|
|
12203
|
+
onAutoPlayError,
|
|
12204
|
+
logLevel,
|
|
12205
|
+
mountTime,
|
|
12206
|
+
reason: action.playReason,
|
|
12207
|
+
isPlayer: env.isPlayer
|
|
12208
|
+
});
|
|
12209
|
+
if (action.bufferUntilFirstFrame) {
|
|
12210
|
+
bufferUntilFirstFrame(action.shouldBeTime);
|
|
12123
12211
|
}
|
|
12124
12212
|
}, [
|
|
12125
12213
|
absoluteFrame,
|
|
@@ -13352,13 +13440,18 @@ var CanvasImageContent = forwardRef10(({
|
|
|
13352
13440
|
});
|
|
13353
13441
|
const sequenceContext = useContext32(SequenceContext);
|
|
13354
13442
|
const pendingLoadDelayRef = useRef23(null);
|
|
13355
|
-
const
|
|
13443
|
+
const [isLoadPending, setIsLoadPending] = useState16(false);
|
|
13444
|
+
const isPremounting = Boolean(sequenceContext?.premounting);
|
|
13445
|
+
const isPostmounting = Boolean(sequenceContext?.postmounting);
|
|
13446
|
+
const continuePendingLoadDelay = useCallback17(({ markAsReady }) => {
|
|
13356
13447
|
const pending = pendingLoadDelayRef.current;
|
|
13357
13448
|
if (!pending || pending.continued) {
|
|
13358
13449
|
return;
|
|
13359
13450
|
}
|
|
13360
13451
|
pending.continued = true;
|
|
13361
|
-
|
|
13452
|
+
if (markAsReady) {
|
|
13453
|
+
setIsLoadPending(false);
|
|
13454
|
+
}
|
|
13362
13455
|
continueRender2(pending.handle);
|
|
13363
13456
|
pendingLoadDelayRef.current = null;
|
|
13364
13457
|
}, [continueRender2]);
|
|
@@ -13380,23 +13473,30 @@ var CanvasImageContent = forwardRef10(({
|
|
|
13380
13473
|
}
|
|
13381
13474
|
}, [ref, refForOutline]);
|
|
13382
13475
|
useLayoutEffect10(() => {
|
|
13383
|
-
|
|
13384
|
-
|
|
13476
|
+
if (!pauseWhenLoading || !isLoadPending || isPremounting || isPostmounting) {
|
|
13477
|
+
return;
|
|
13478
|
+
}
|
|
13479
|
+
return delayPlayback().unblock;
|
|
13480
|
+
}, [
|
|
13481
|
+
delayPlayback,
|
|
13482
|
+
isLoadPending,
|
|
13483
|
+
isPostmounting,
|
|
13484
|
+
isPremounting,
|
|
13485
|
+
pauseWhenLoading
|
|
13486
|
+
]);
|
|
13487
|
+
useLayoutEffect10(() => {
|
|
13385
13488
|
const handle = delayRender2(`Rendering <CanvasImage> with src="${truncateSrcForLabel(actualSrc)}"`, {
|
|
13386
13489
|
retries: delayRenderRetries ?? undefined,
|
|
13387
13490
|
timeoutInMilliseconds: delayRenderTimeoutInMilliseconds ?? undefined
|
|
13388
13491
|
});
|
|
13389
|
-
const unblock = pauseWhenLoading && !isPremounting && !isPostmounting ? delayPlayback().unblock : () => {
|
|
13390
|
-
return;
|
|
13391
|
-
};
|
|
13392
13492
|
const controller = new AbortController;
|
|
13393
13493
|
let cancelled = false;
|
|
13394
13494
|
let errorCount = 0;
|
|
13395
13495
|
let timeoutId = null;
|
|
13396
13496
|
setLoadedImage(null);
|
|
13497
|
+
setIsLoadPending(true);
|
|
13397
13498
|
pendingLoadDelayRef.current = {
|
|
13398
13499
|
handle,
|
|
13399
|
-
unblock,
|
|
13400
13500
|
continued: false
|
|
13401
13501
|
};
|
|
13402
13502
|
const attemptLoad = () => {
|
|
@@ -13407,7 +13507,7 @@ var CanvasImageContent = forwardRef10(({
|
|
|
13407
13507
|
setLoadedImage(image);
|
|
13408
13508
|
}).catch((err) => {
|
|
13409
13509
|
if (err.name === "AbortError") {
|
|
13410
|
-
continuePendingLoadDelay();
|
|
13510
|
+
continuePendingLoadDelay({ markAsReady: false });
|
|
13411
13511
|
return;
|
|
13412
13512
|
}
|
|
13413
13513
|
errorCount++;
|
|
@@ -13421,7 +13521,7 @@ var CanvasImageContent = forwardRef10(({
|
|
|
13421
13521
|
}, backoff);
|
|
13422
13522
|
} else if (onError) {
|
|
13423
13523
|
onError(err);
|
|
13424
|
-
continuePendingLoadDelay();
|
|
13524
|
+
continuePendingLoadDelay({ markAsReady: true });
|
|
13425
13525
|
} else {
|
|
13426
13526
|
cancelRender2(err);
|
|
13427
13527
|
}
|
|
@@ -13434,21 +13534,17 @@ var CanvasImageContent = forwardRef10(({
|
|
|
13434
13534
|
clearTimeout(timeoutId);
|
|
13435
13535
|
}
|
|
13436
13536
|
controller.abort();
|
|
13437
|
-
continuePendingLoadDelay();
|
|
13537
|
+
continuePendingLoadDelay({ markAsReady: false });
|
|
13438
13538
|
};
|
|
13439
13539
|
}, [
|
|
13440
13540
|
actualSrc,
|
|
13441
13541
|
cancelRender2,
|
|
13442
13542
|
continuePendingLoadDelay,
|
|
13443
|
-
delayPlayback,
|
|
13444
13543
|
delayRender2,
|
|
13445
13544
|
delayRenderRetries,
|
|
13446
13545
|
delayRenderTimeoutInMilliseconds,
|
|
13447
13546
|
maxRetries,
|
|
13448
|
-
onError
|
|
13449
|
-
pauseWhenLoading,
|
|
13450
|
-
sequenceContext?.postmounting,
|
|
13451
|
-
sequenceContext?.premounting
|
|
13547
|
+
onError
|
|
13452
13548
|
]);
|
|
13453
13549
|
useLayoutEffect10(() => {
|
|
13454
13550
|
if (!loadedImage || !outputCanvas || !sourceCanvas) {
|
|
@@ -13500,7 +13596,7 @@ var CanvasImageContent = forwardRef10(({
|
|
|
13500
13596
|
return;
|
|
13501
13597
|
}
|
|
13502
13598
|
continueRenderOnce();
|
|
13503
|
-
continuePendingLoadDelay();
|
|
13599
|
+
continuePendingLoadDelay({ markAsReady: true });
|
|
13504
13600
|
}
|
|
13505
13601
|
});
|
|
13506
13602
|
}
|
|
@@ -13511,7 +13607,7 @@ var CanvasImageContent = forwardRef10(({
|
|
|
13511
13607
|
if (onError) {
|
|
13512
13608
|
onError(err);
|
|
13513
13609
|
continueRenderOnce();
|
|
13514
|
-
continuePendingLoadDelay();
|
|
13610
|
+
continuePendingLoadDelay({ markAsReady: true });
|
|
13515
13611
|
} else {
|
|
13516
13612
|
cancelRender2(err);
|
|
13517
13613
|
}
|
|
@@ -13682,6 +13778,7 @@ var ImgContent = ({
|
|
|
13682
13778
|
const errors = useRef24({});
|
|
13683
13779
|
const { delayPlayback } = useBufferState();
|
|
13684
13780
|
const sequenceContext = useContext33(SequenceContext);
|
|
13781
|
+
const [isLoading, setIsLoading] = useState18(false);
|
|
13685
13782
|
const _propsValid = true;
|
|
13686
13783
|
if (!_propsValid) {
|
|
13687
13784
|
throw new Error("typecheck error");
|
|
@@ -13714,6 +13811,8 @@ var ImgContent = ({
|
|
|
13714
13811
|
}, timeout);
|
|
13715
13812
|
}, []);
|
|
13716
13813
|
const { delayRender: delayRender2, continueRender: continueRender2, cancelRender: cancelRender2 } = useDelayRender();
|
|
13814
|
+
const isPremounting = Boolean(sequenceContext?.premounting);
|
|
13815
|
+
const isPostmounting = Boolean(sequenceContext?.postmounting);
|
|
13717
13816
|
const didGetError = useCallback19((e) => {
|
|
13718
13817
|
if (!errors.current) {
|
|
13719
13818
|
return;
|
|
@@ -13734,8 +13833,18 @@ var ImgContent = ({
|
|
|
13734
13833
|
} catch {}
|
|
13735
13834
|
}, [cancelRender2, maxRetries, onError, retryIn]);
|
|
13736
13835
|
if (typeof window !== "undefined") {
|
|
13737
|
-
|
|
13738
|
-
|
|
13836
|
+
useLayoutEffect11(() => {
|
|
13837
|
+
if (!pauseWhenLoading || !isLoading || isPremounting || isPostmounting) {
|
|
13838
|
+
return;
|
|
13839
|
+
}
|
|
13840
|
+
return delayPlayback().unblock;
|
|
13841
|
+
}, [
|
|
13842
|
+
delayPlayback,
|
|
13843
|
+
isLoading,
|
|
13844
|
+
isPostmounting,
|
|
13845
|
+
isPremounting,
|
|
13846
|
+
pauseWhenLoading
|
|
13847
|
+
]);
|
|
13739
13848
|
useLayoutEffect11(() => {
|
|
13740
13849
|
if (window.process?.env?.NODE_ENV === "test") {
|
|
13741
13850
|
if (imageRef.current) {
|
|
@@ -13747,13 +13856,11 @@ var ImgContent = ({
|
|
|
13747
13856
|
if (!current) {
|
|
13748
13857
|
return;
|
|
13749
13858
|
}
|
|
13859
|
+
setIsLoading(true);
|
|
13750
13860
|
const newHandle = delayRender2("Loading <Img> with src=" + truncateSrcForLabel(actualSrc), {
|
|
13751
13861
|
retries: delayRenderRetries ?? undefined,
|
|
13752
13862
|
timeoutInMilliseconds: delayRenderTimeoutInMilliseconds ?? undefined
|
|
13753
13863
|
});
|
|
13754
|
-
const unblock = pauseWhenLoading && !isPremounting && !isPostmounting ? delayPlayback().unblock : () => {
|
|
13755
|
-
return;
|
|
13756
|
-
};
|
|
13757
13864
|
let unmounted = false;
|
|
13758
13865
|
const onComplete = () => {
|
|
13759
13866
|
if (unmounted) {
|
|
@@ -13767,7 +13874,7 @@ var ImgContent = ({
|
|
|
13767
13874
|
if (current) {
|
|
13768
13875
|
onImageFrame?.(current);
|
|
13769
13876
|
}
|
|
13770
|
-
|
|
13877
|
+
setIsLoading(false);
|
|
13771
13878
|
continueRender2(newHandle);
|
|
13772
13879
|
};
|
|
13773
13880
|
if (!imageRef.current) {
|
|
@@ -13786,17 +13893,12 @@ var ImgContent = ({
|
|
|
13786
13893
|
return () => {
|
|
13787
13894
|
unmounted = true;
|
|
13788
13895
|
current.removeEventListener("load", onComplete);
|
|
13789
|
-
unblock();
|
|
13790
13896
|
continueRender2(newHandle);
|
|
13791
13897
|
};
|
|
13792
13898
|
}, [
|
|
13793
13899
|
actualSrc,
|
|
13794
|
-
delayPlayback,
|
|
13795
13900
|
delayRenderRetries,
|
|
13796
13901
|
delayRenderTimeoutInMilliseconds,
|
|
13797
|
-
pauseWhenLoading,
|
|
13798
|
-
isPremounting,
|
|
13799
|
-
isPostmounting,
|
|
13800
13902
|
onImageFrame,
|
|
13801
13903
|
continueRender2,
|
|
13802
13904
|
delayRender2
|
|
@@ -14114,9 +14216,9 @@ var CompositionManagerProvider = ({
|
|
|
14114
14216
|
initialCompositions,
|
|
14115
14217
|
initialCanvasContent
|
|
14116
14218
|
}) => {
|
|
14117
|
-
const [folders, setFolders] =
|
|
14118
|
-
const [canvasContent, setCanvasContent] =
|
|
14119
|
-
const [compositions, setCompositions] =
|
|
14219
|
+
const [folders, setFolders] = useState19([]);
|
|
14220
|
+
const [canvasContent, setCanvasContent] = useState19(initialCanvasContent);
|
|
14221
|
+
const [compositions, setCompositions] = useState19(initialCompositions);
|
|
14120
14222
|
const currentcompositionsRef = useRef26(compositions);
|
|
14121
14223
|
const updateCompositions = useCallback21((updateComps) => {
|
|
14122
14224
|
setCompositions((comps) => {
|
|
@@ -14687,7 +14789,7 @@ var OffthreadVideoForRendering = ({
|
|
|
14687
14789
|
toneMapped
|
|
14688
14790
|
});
|
|
14689
14791
|
}, [toneMapped, currentTime, src, transparent]);
|
|
14690
|
-
const [imageSrc, setImageSrc] =
|
|
14792
|
+
const [imageSrc, setImageSrc] = useState20(null);
|
|
14691
14793
|
const { delayRender: delayRender2, continueRender: continueRender2 } = useDelayRender();
|
|
14692
14794
|
useLayoutEffect12(() => {
|
|
14693
14795
|
if (!window.remotion_videoEnabled) {
|
|
@@ -14891,7 +14993,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
|
|
|
14891
14993
|
const parentSequence = useContext37(SequenceContext);
|
|
14892
14994
|
const logLevel = useLogLevel();
|
|
14893
14995
|
const mountTime = useMountTime();
|
|
14894
|
-
const [timelineId] =
|
|
14996
|
+
const [timelineId] = useState21(() => String(Math.random()));
|
|
14895
14997
|
if (typeof acceptableTimeShift !== "undefined") {
|
|
14896
14998
|
throw new Error("acceptableTimeShift has been removed. Use acceptableTimeShiftInSeconds instead.");
|
|
14897
14999
|
}
|
|
@@ -14962,7 +15064,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
|
|
|
14962
15064
|
useImperativeHandle9(ref, () => {
|
|
14963
15065
|
return videoRef.current;
|
|
14964
15066
|
}, []);
|
|
14965
|
-
|
|
15067
|
+
useState21(() => playbackLogging({
|
|
14966
15068
|
logLevel,
|
|
14967
15069
|
message: `Mounting video with source = ${actualSrc}, v=${VERSION}, user agent=${typeof navigator === "undefined" ? "server" : navigator.userAgent}`,
|
|
14968
15070
|
tag: "video",
|
|
@@ -15643,6 +15745,15 @@ var staticFile = (path) => {
|
|
|
15643
15745
|
}
|
|
15644
15746
|
return preparsed;
|
|
15645
15747
|
};
|
|
15748
|
+
var Still = (props2) => {
|
|
15749
|
+
const newProps = {
|
|
15750
|
+
...props2,
|
|
15751
|
+
durationInFrames: 1,
|
|
15752
|
+
fps: 1
|
|
15753
|
+
};
|
|
15754
|
+
return React42.createElement(Composition, newProps);
|
|
15755
|
+
};
|
|
15756
|
+
addSequenceStackTraces(Still);
|
|
15646
15757
|
var roundTo6Commas = (num) => {
|
|
15647
15758
|
return Math.round(num * 1e5) / 1e5;
|
|
15648
15759
|
};
|
|
@@ -19448,7 +19559,7 @@ var getAngle = (ref, coordinates) => {
|
|
|
19448
19559
|
};
|
|
19449
19560
|
var lastCoordinates = null;
|
|
19450
19561
|
var useMousePosition = (ref) => {
|
|
19451
|
-
const [angle, setAngle] =
|
|
19562
|
+
const [angle, setAngle] = useState23(getAngle(ref.current, lastCoordinates));
|
|
19452
19563
|
useEffect21(() => {
|
|
19453
19564
|
const element = ref.current;
|
|
19454
19565
|
if (!element) {
|
|
@@ -27636,10 +27747,21 @@ var CompanyPricing = () => {
|
|
|
27636
27747
|
|
|
27637
27748
|
// src/components/homepage/Pricing.tsx
|
|
27638
27749
|
import { jsx as jsx47, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
27639
|
-
var Pricing = ({
|
|
27750
|
+
var Pricing = ({
|
|
27751
|
+
faqHref = "/docs/license/faq",
|
|
27752
|
+
faqLabel = "License FAQ",
|
|
27753
|
+
licenseHref = "https://github.com/remotion-dev/remotion/blob/main/LICENSE.md",
|
|
27754
|
+
termsHref = "https://www.remotion.pro/terms"
|
|
27755
|
+
}) => {
|
|
27640
27756
|
const faqLinkTarget = useMemo52(() => {
|
|
27641
27757
|
return faqHref.startsWith("http") ? "_blank" : undefined;
|
|
27642
27758
|
}, [faqHref]);
|
|
27759
|
+
const licenseLinkTarget = useMemo52(() => {
|
|
27760
|
+
return licenseHref.startsWith("http") ? "_blank" : undefined;
|
|
27761
|
+
}, [licenseHref]);
|
|
27762
|
+
const termsLinkTarget = useMemo52(() => {
|
|
27763
|
+
return termsHref.startsWith("http") ? "_blank" : undefined;
|
|
27764
|
+
}, [termsHref]);
|
|
27643
27765
|
return /* @__PURE__ */ jsxs8("div", {
|
|
27644
27766
|
style: {
|
|
27645
27767
|
display: "flex",
|
|
@@ -27663,19 +27785,24 @@ var Pricing = ({ faqHref = "/docs/pricing#faq" }) => {
|
|
|
27663
27785
|
children: [
|
|
27664
27786
|
"See our",
|
|
27665
27787
|
" ",
|
|
27788
|
+
/* @__PURE__ */ jsx47("a", {
|
|
27789
|
+
target: licenseLinkTarget,
|
|
27790
|
+
className: "bluelink",
|
|
27791
|
+
href: licenseHref,
|
|
27792
|
+
children: "LICENSE.md"
|
|
27793
|
+
}),
|
|
27794
|
+
", ",
|
|
27666
27795
|
/* @__PURE__ */ jsx47("a", {
|
|
27667
27796
|
target: faqLinkTarget,
|
|
27668
27797
|
className: "bluelink",
|
|
27669
27798
|
href: faqHref,
|
|
27670
|
-
children:
|
|
27799
|
+
children: faqLabel
|
|
27671
27800
|
}),
|
|
27672
|
-
" ",
|
|
27673
|
-
"and",
|
|
27674
|
-
" ",
|
|
27801
|
+
", and ",
|
|
27675
27802
|
/* @__PURE__ */ jsx47("a", {
|
|
27676
|
-
target:
|
|
27803
|
+
target: termsLinkTarget,
|
|
27677
27804
|
className: "bluelink",
|
|
27678
|
-
href:
|
|
27805
|
+
href: termsHref,
|
|
27679
27806
|
children: "Terms and Conditions"
|
|
27680
27807
|
}),
|
|
27681
27808
|
" ",
|