@remotion/promo-pages 4.0.487 → 4.0.489
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.js +246 -196
- 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 +89 -55
- package/dist/experts.js +78 -44
- package/dist/homepage/Pricing.js +80 -46
- package/dist/prompts/PromptsGallery.js +89 -55
- package/dist/prompts/PromptsShow.js +95 -61
- package/dist/prompts/PromptsSubmit.js +80 -46
- package/dist/team.js +80 -46
- package/dist/template-modal-content.js +86 -52
- package/dist/templates.js +80 -46
- package/package.json +17 -17
package/dist/Homepage.js
CHANGED
|
@@ -1100,7 +1100,13 @@ import {
|
|
|
1100
1100
|
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
1101
1101
|
import { forwardRef as forwardRef11, useCallback as useCallback18, useState as useState17 } from "react";
|
|
1102
1102
|
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
1103
|
-
import {
|
|
1103
|
+
import {
|
|
1104
|
+
useCallback as useCallback19,
|
|
1105
|
+
useContext as useContext33,
|
|
1106
|
+
useLayoutEffect as useLayoutEffect11,
|
|
1107
|
+
useRef as useRef24,
|
|
1108
|
+
useState as useState18
|
|
1109
|
+
} from "react";
|
|
1104
1110
|
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
1105
1111
|
import React29, { forwardRef as forwardRef12, useCallback as useCallback20, useRef as useRef25 } from "react";
|
|
1106
1112
|
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
@@ -1111,7 +1117,7 @@ import {
|
|
|
1111
1117
|
useImperativeHandle as useImperativeHandle8,
|
|
1112
1118
|
useMemo as useMemo32,
|
|
1113
1119
|
useRef as useRef26,
|
|
1114
|
-
useState as
|
|
1120
|
+
useState as useState19
|
|
1115
1121
|
} from "react";
|
|
1116
1122
|
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
1117
1123
|
import React31 from "react";
|
|
@@ -1129,7 +1135,7 @@ import {
|
|
|
1129
1135
|
useEffect as useEffect17,
|
|
1130
1136
|
useLayoutEffect as useLayoutEffect12,
|
|
1131
1137
|
useMemo as useMemo35,
|
|
1132
|
-
useState as
|
|
1138
|
+
useState as useState20
|
|
1133
1139
|
} from "react";
|
|
1134
1140
|
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
1135
1141
|
import React37, {
|
|
@@ -1140,7 +1146,7 @@ import React37, {
|
|
|
1140
1146
|
useImperativeHandle as useImperativeHandle9,
|
|
1141
1147
|
useMemo as useMemo36,
|
|
1142
1148
|
useRef as useRef27,
|
|
1143
|
-
useState as
|
|
1149
|
+
useState as useState21
|
|
1144
1150
|
} from "react";
|
|
1145
1151
|
import { useEffect as useEffect18 } from "react";
|
|
1146
1152
|
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
@@ -2335,7 +2341,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
|
|
|
2335
2341
|
var addSequenceStackTraces = (component) => {
|
|
2336
2342
|
componentsToAddStacksTo.push(component);
|
|
2337
2343
|
};
|
|
2338
|
-
var VERSION = "4.0.
|
|
2344
|
+
var VERSION = "4.0.489";
|
|
2339
2345
|
var checkMultipleRemotionVersions = () => {
|
|
2340
2346
|
if (typeof globalThis === "undefined") {
|
|
2341
2347
|
return;
|
|
@@ -6019,7 +6025,7 @@ var useEffectChainState = () => {
|
|
|
6019
6025
|
}
|
|
6020
6026
|
}), []);
|
|
6021
6027
|
};
|
|
6022
|
-
var CanvasRefForwardingFunction = ({ width, height, fit, className, style, effects }, ref) => {
|
|
6028
|
+
var CanvasRefForwardingFunction = ({ width, height, fit, className, style, effects, ...props }, ref) => {
|
|
6023
6029
|
const canvasRef = useRef8(null);
|
|
6024
6030
|
const chainState = useEffectChainState();
|
|
6025
6031
|
const sourceCanvas = useMemo16(() => {
|
|
@@ -6083,7 +6089,8 @@ var CanvasRefForwardingFunction = ({ width, height, fit, className, style, effec
|
|
|
6083
6089
|
return /* @__PURE__ */ jsx13("canvas", {
|
|
6084
6090
|
ref: canvasRef,
|
|
6085
6091
|
className,
|
|
6086
|
-
style
|
|
6092
|
+
style,
|
|
6093
|
+
...props
|
|
6087
6094
|
});
|
|
6088
6095
|
};
|
|
6089
6096
|
var Canvas = React15.forwardRef(CanvasRefForwardingFunction);
|
|
@@ -6260,6 +6267,16 @@ var animatedImageSchema = {
|
|
|
6260
6267
|
},
|
|
6261
6268
|
...transformSchema
|
|
6262
6269
|
};
|
|
6270
|
+
var getCanvasPropsFromSequenceProps = (props) => {
|
|
6271
|
+
const canvasProps = {};
|
|
6272
|
+
const mutableCanvasProps = canvasProps;
|
|
6273
|
+
for (const key in props) {
|
|
6274
|
+
if (Object.prototype.hasOwnProperty.call(props, key) && (key.startsWith("data-") || key.startsWith("aria-"))) {
|
|
6275
|
+
mutableCanvasProps[key] = props[key];
|
|
6276
|
+
}
|
|
6277
|
+
}
|
|
6278
|
+
return canvasProps;
|
|
6279
|
+
};
|
|
6263
6280
|
var AnimatedImageContent = forwardRef4(({
|
|
6264
6281
|
src,
|
|
6265
6282
|
width,
|
|
@@ -6414,6 +6431,7 @@ var AnimatedImageInner = ({
|
|
|
6414
6431
|
useImperativeHandle2(ref, () => {
|
|
6415
6432
|
return actualRef.current;
|
|
6416
6433
|
}, []);
|
|
6434
|
+
const canvasProps = getCanvasPropsFromSequenceProps(sequenceProps);
|
|
6417
6435
|
const animatedImageProps = {
|
|
6418
6436
|
src,
|
|
6419
6437
|
width,
|
|
@@ -6425,7 +6443,8 @@ var AnimatedImageInner = ({
|
|
|
6425
6443
|
id,
|
|
6426
6444
|
className,
|
|
6427
6445
|
style,
|
|
6428
|
-
requestInit
|
|
6446
|
+
requestInit,
|
|
6447
|
+
...canvasProps
|
|
6429
6448
|
};
|
|
6430
6449
|
return /* @__PURE__ */ jsx14(Sequence, {
|
|
6431
6450
|
layout: "none",
|
|
@@ -7362,6 +7381,7 @@ var SharedAudioContextProvider = ({ children, audioLatencyHint, audioEnabled, pr
|
|
|
7362
7381
|
return ({
|
|
7363
7382
|
node,
|
|
7364
7383
|
mediaTimestamp,
|
|
7384
|
+
sourceOffset,
|
|
7365
7385
|
scheduledTime,
|
|
7366
7386
|
duration,
|
|
7367
7387
|
offset,
|
|
@@ -7390,7 +7410,7 @@ var SharedAudioContextProvider = ({ children, audioLatencyHint, audioEnabled, pr
|
|
|
7390
7410
|
}
|
|
7391
7411
|
}
|
|
7392
7412
|
const scheduledEndTime = scheduledTime + duration / node.playbackRate.value;
|
|
7393
|
-
const mediaTime = mediaTimestamp + offset;
|
|
7413
|
+
const mediaTime = mediaTimestamp + offset - sourceOffset;
|
|
7394
7414
|
const mediaEndTime = mediaTime + duration;
|
|
7395
7415
|
const latency = ctxAndGain.audioContext.baseLatency + ctxAndGain.audioContext.outputLatency;
|
|
7396
7416
|
const timeDiff = scheduledTime - ctxAndGain.audioContext.currentTime;
|
|
@@ -10187,13 +10207,18 @@ var CanvasImageContent = forwardRef10(({
|
|
|
10187
10207
|
});
|
|
10188
10208
|
const sequenceContext = useContext32(SequenceContext);
|
|
10189
10209
|
const pendingLoadDelayRef = useRef23(null);
|
|
10190
|
-
const
|
|
10210
|
+
const [isLoadPending, setIsLoadPending] = useState16(false);
|
|
10211
|
+
const isPremounting = Boolean(sequenceContext?.premounting);
|
|
10212
|
+
const isPostmounting = Boolean(sequenceContext?.postmounting);
|
|
10213
|
+
const continuePendingLoadDelay = useCallback17(({ markAsReady }) => {
|
|
10191
10214
|
const pending = pendingLoadDelayRef.current;
|
|
10192
10215
|
if (!pending || pending.continued) {
|
|
10193
10216
|
return;
|
|
10194
10217
|
}
|
|
10195
10218
|
pending.continued = true;
|
|
10196
|
-
|
|
10219
|
+
if (markAsReady) {
|
|
10220
|
+
setIsLoadPending(false);
|
|
10221
|
+
}
|
|
10197
10222
|
continueRender2(pending.handle);
|
|
10198
10223
|
pendingLoadDelayRef.current = null;
|
|
10199
10224
|
}, [continueRender2]);
|
|
@@ -10215,23 +10240,30 @@ var CanvasImageContent = forwardRef10(({
|
|
|
10215
10240
|
}
|
|
10216
10241
|
}, [ref, refForOutline]);
|
|
10217
10242
|
useLayoutEffect10(() => {
|
|
10218
|
-
|
|
10219
|
-
|
|
10243
|
+
if (!pauseWhenLoading || !isLoadPending || isPremounting || isPostmounting) {
|
|
10244
|
+
return;
|
|
10245
|
+
}
|
|
10246
|
+
return delayPlayback().unblock;
|
|
10247
|
+
}, [
|
|
10248
|
+
delayPlayback,
|
|
10249
|
+
isLoadPending,
|
|
10250
|
+
isPostmounting,
|
|
10251
|
+
isPremounting,
|
|
10252
|
+
pauseWhenLoading
|
|
10253
|
+
]);
|
|
10254
|
+
useLayoutEffect10(() => {
|
|
10220
10255
|
const handle = delayRender2(`Rendering <CanvasImage> with src="${truncateSrcForLabel(actualSrc)}"`, {
|
|
10221
10256
|
retries: delayRenderRetries ?? undefined,
|
|
10222
10257
|
timeoutInMilliseconds: delayRenderTimeoutInMilliseconds ?? undefined
|
|
10223
10258
|
});
|
|
10224
|
-
const unblock = pauseWhenLoading && !isPremounting && !isPostmounting ? delayPlayback().unblock : () => {
|
|
10225
|
-
return;
|
|
10226
|
-
};
|
|
10227
10259
|
const controller = new AbortController;
|
|
10228
10260
|
let cancelled = false;
|
|
10229
10261
|
let errorCount = 0;
|
|
10230
10262
|
let timeoutId = null;
|
|
10231
10263
|
setLoadedImage(null);
|
|
10264
|
+
setIsLoadPending(true);
|
|
10232
10265
|
pendingLoadDelayRef.current = {
|
|
10233
10266
|
handle,
|
|
10234
|
-
unblock,
|
|
10235
10267
|
continued: false
|
|
10236
10268
|
};
|
|
10237
10269
|
const attemptLoad = () => {
|
|
@@ -10242,7 +10274,7 @@ var CanvasImageContent = forwardRef10(({
|
|
|
10242
10274
|
setLoadedImage(image);
|
|
10243
10275
|
}).catch((err) => {
|
|
10244
10276
|
if (err.name === "AbortError") {
|
|
10245
|
-
continuePendingLoadDelay();
|
|
10277
|
+
continuePendingLoadDelay({ markAsReady: false });
|
|
10246
10278
|
return;
|
|
10247
10279
|
}
|
|
10248
10280
|
errorCount++;
|
|
@@ -10256,7 +10288,7 @@ var CanvasImageContent = forwardRef10(({
|
|
|
10256
10288
|
}, backoff);
|
|
10257
10289
|
} else if (onError) {
|
|
10258
10290
|
onError(err);
|
|
10259
|
-
continuePendingLoadDelay();
|
|
10291
|
+
continuePendingLoadDelay({ markAsReady: true });
|
|
10260
10292
|
} else {
|
|
10261
10293
|
cancelRender2(err);
|
|
10262
10294
|
}
|
|
@@ -10269,21 +10301,17 @@ var CanvasImageContent = forwardRef10(({
|
|
|
10269
10301
|
clearTimeout(timeoutId);
|
|
10270
10302
|
}
|
|
10271
10303
|
controller.abort();
|
|
10272
|
-
continuePendingLoadDelay();
|
|
10304
|
+
continuePendingLoadDelay({ markAsReady: false });
|
|
10273
10305
|
};
|
|
10274
10306
|
}, [
|
|
10275
10307
|
actualSrc,
|
|
10276
10308
|
cancelRender2,
|
|
10277
10309
|
continuePendingLoadDelay,
|
|
10278
|
-
delayPlayback,
|
|
10279
10310
|
delayRender2,
|
|
10280
10311
|
delayRenderRetries,
|
|
10281
10312
|
delayRenderTimeoutInMilliseconds,
|
|
10282
10313
|
maxRetries,
|
|
10283
|
-
onError
|
|
10284
|
-
pauseWhenLoading,
|
|
10285
|
-
sequenceContext?.postmounting,
|
|
10286
|
-
sequenceContext?.premounting
|
|
10314
|
+
onError
|
|
10287
10315
|
]);
|
|
10288
10316
|
useLayoutEffect10(() => {
|
|
10289
10317
|
if (!loadedImage || !outputCanvas || !sourceCanvas) {
|
|
@@ -10335,7 +10363,7 @@ var CanvasImageContent = forwardRef10(({
|
|
|
10335
10363
|
return;
|
|
10336
10364
|
}
|
|
10337
10365
|
continueRenderOnce();
|
|
10338
|
-
continuePendingLoadDelay();
|
|
10366
|
+
continuePendingLoadDelay({ markAsReady: true });
|
|
10339
10367
|
}
|
|
10340
10368
|
});
|
|
10341
10369
|
}
|
|
@@ -10346,7 +10374,7 @@ var CanvasImageContent = forwardRef10(({
|
|
|
10346
10374
|
if (onError) {
|
|
10347
10375
|
onError(err);
|
|
10348
10376
|
continueRenderOnce();
|
|
10349
|
-
continuePendingLoadDelay();
|
|
10377
|
+
continuePendingLoadDelay({ markAsReady: true });
|
|
10350
10378
|
} else {
|
|
10351
10379
|
cancelRender2(err);
|
|
10352
10380
|
}
|
|
@@ -10517,6 +10545,7 @@ var ImgContent = ({
|
|
|
10517
10545
|
const errors = useRef24({});
|
|
10518
10546
|
const { delayPlayback } = useBufferState();
|
|
10519
10547
|
const sequenceContext = useContext33(SequenceContext);
|
|
10548
|
+
const [isLoading, setIsLoading] = useState18(false);
|
|
10520
10549
|
const _propsValid = true;
|
|
10521
10550
|
if (!_propsValid) {
|
|
10522
10551
|
throw new Error("typecheck error");
|
|
@@ -10549,6 +10578,8 @@ var ImgContent = ({
|
|
|
10549
10578
|
}, timeout);
|
|
10550
10579
|
}, []);
|
|
10551
10580
|
const { delayRender: delayRender2, continueRender: continueRender2, cancelRender: cancelRender2 } = useDelayRender();
|
|
10581
|
+
const isPremounting = Boolean(sequenceContext?.premounting);
|
|
10582
|
+
const isPostmounting = Boolean(sequenceContext?.postmounting);
|
|
10552
10583
|
const didGetError = useCallback19((e) => {
|
|
10553
10584
|
if (!errors.current) {
|
|
10554
10585
|
return;
|
|
@@ -10569,8 +10600,18 @@ var ImgContent = ({
|
|
|
10569
10600
|
} catch {}
|
|
10570
10601
|
}, [cancelRender2, maxRetries, onError, retryIn]);
|
|
10571
10602
|
if (typeof window !== "undefined") {
|
|
10572
|
-
|
|
10573
|
-
|
|
10603
|
+
useLayoutEffect11(() => {
|
|
10604
|
+
if (!pauseWhenLoading || !isLoading || isPremounting || isPostmounting) {
|
|
10605
|
+
return;
|
|
10606
|
+
}
|
|
10607
|
+
return delayPlayback().unblock;
|
|
10608
|
+
}, [
|
|
10609
|
+
delayPlayback,
|
|
10610
|
+
isLoading,
|
|
10611
|
+
isPostmounting,
|
|
10612
|
+
isPremounting,
|
|
10613
|
+
pauseWhenLoading
|
|
10614
|
+
]);
|
|
10574
10615
|
useLayoutEffect11(() => {
|
|
10575
10616
|
if (window.process?.env?.NODE_ENV === "test") {
|
|
10576
10617
|
if (imageRef.current) {
|
|
@@ -10582,13 +10623,11 @@ var ImgContent = ({
|
|
|
10582
10623
|
if (!current) {
|
|
10583
10624
|
return;
|
|
10584
10625
|
}
|
|
10626
|
+
setIsLoading(true);
|
|
10585
10627
|
const newHandle = delayRender2("Loading <Img> with src=" + truncateSrcForLabel(actualSrc), {
|
|
10586
10628
|
retries: delayRenderRetries ?? undefined,
|
|
10587
10629
|
timeoutInMilliseconds: delayRenderTimeoutInMilliseconds ?? undefined
|
|
10588
10630
|
});
|
|
10589
|
-
const unblock = pauseWhenLoading && !isPremounting && !isPostmounting ? delayPlayback().unblock : () => {
|
|
10590
|
-
return;
|
|
10591
|
-
};
|
|
10592
10631
|
let unmounted = false;
|
|
10593
10632
|
const onComplete = () => {
|
|
10594
10633
|
if (unmounted) {
|
|
@@ -10602,7 +10641,7 @@ var ImgContent = ({
|
|
|
10602
10641
|
if (current) {
|
|
10603
10642
|
onImageFrame?.(current);
|
|
10604
10643
|
}
|
|
10605
|
-
|
|
10644
|
+
setIsLoading(false);
|
|
10606
10645
|
continueRender2(newHandle);
|
|
10607
10646
|
};
|
|
10608
10647
|
if (!imageRef.current) {
|
|
@@ -10621,17 +10660,12 @@ var ImgContent = ({
|
|
|
10621
10660
|
return () => {
|
|
10622
10661
|
unmounted = true;
|
|
10623
10662
|
current.removeEventListener("load", onComplete);
|
|
10624
|
-
unblock();
|
|
10625
10663
|
continueRender2(newHandle);
|
|
10626
10664
|
};
|
|
10627
10665
|
}, [
|
|
10628
10666
|
actualSrc,
|
|
10629
|
-
delayPlayback,
|
|
10630
10667
|
delayRenderRetries,
|
|
10631
10668
|
delayRenderTimeoutInMilliseconds,
|
|
10632
|
-
pauseWhenLoading,
|
|
10633
|
-
isPremounting,
|
|
10634
|
-
isPostmounting,
|
|
10635
10669
|
onImageFrame,
|
|
10636
10670
|
continueRender2,
|
|
10637
10671
|
delayRender2
|
|
@@ -10949,9 +10983,9 @@ var CompositionManagerProvider = ({
|
|
|
10949
10983
|
initialCompositions,
|
|
10950
10984
|
initialCanvasContent
|
|
10951
10985
|
}) => {
|
|
10952
|
-
const [folders, setFolders] =
|
|
10953
|
-
const [canvasContent, setCanvasContent] =
|
|
10954
|
-
const [compositions, setCompositions] =
|
|
10986
|
+
const [folders, setFolders] = useState19([]);
|
|
10987
|
+
const [canvasContent, setCanvasContent] = useState19(initialCanvasContent);
|
|
10988
|
+
const [compositions, setCompositions] = useState19(initialCompositions);
|
|
10955
10989
|
const currentcompositionsRef = useRef26(compositions);
|
|
10956
10990
|
const updateCompositions = useCallback21((updateComps) => {
|
|
10957
10991
|
setCompositions((comps) => {
|
|
@@ -11522,7 +11556,7 @@ var OffthreadVideoForRendering = ({
|
|
|
11522
11556
|
toneMapped
|
|
11523
11557
|
});
|
|
11524
11558
|
}, [toneMapped, currentTime, src, transparent]);
|
|
11525
|
-
const [imageSrc, setImageSrc] =
|
|
11559
|
+
const [imageSrc, setImageSrc] = useState20(null);
|
|
11526
11560
|
const { delayRender: delayRender2, continueRender: continueRender2 } = useDelayRender();
|
|
11527
11561
|
useLayoutEffect12(() => {
|
|
11528
11562
|
if (!window.remotion_videoEnabled) {
|
|
@@ -11726,7 +11760,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
|
|
|
11726
11760
|
const parentSequence = useContext37(SequenceContext);
|
|
11727
11761
|
const logLevel = useLogLevel();
|
|
11728
11762
|
const mountTime = useMountTime();
|
|
11729
|
-
const [timelineId] =
|
|
11763
|
+
const [timelineId] = useState21(() => String(Math.random()));
|
|
11730
11764
|
if (typeof acceptableTimeShift !== "undefined") {
|
|
11731
11765
|
throw new Error("acceptableTimeShift has been removed. Use acceptableTimeShiftInSeconds instead.");
|
|
11732
11766
|
}
|
|
@@ -11797,7 +11831,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
|
|
|
11797
11831
|
useImperativeHandle9(ref, () => {
|
|
11798
11832
|
return videoRef.current;
|
|
11799
11833
|
}, []);
|
|
11800
|
-
|
|
11834
|
+
useState21(() => playbackLogging({
|
|
11801
11835
|
logLevel,
|
|
11802
11836
|
message: `Mounting video with source = ${actualSrc}, v=${VERSION}, user agent=${typeof navigator === "undefined" ? "server" : navigator.userAgent}`,
|
|
11803
11837
|
tag: "video",
|
|
@@ -14750,7 +14784,7 @@ var getDefaultConfig = () => {
|
|
|
14750
14784
|
var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
|
|
14751
14785
|
|
|
14752
14786
|
// ../design/dist/esm/index.mjs
|
|
14753
|
-
import React32, { useEffect as useEffect21, useMemo as useMemo43, useState as
|
|
14787
|
+
import React32, { useEffect as useEffect21, useMemo as useMemo43, useState as useState23 } from "react";
|
|
14754
14788
|
|
|
14755
14789
|
// ../paths/dist/esm/index.mjs
|
|
14756
14790
|
var cutLInstruction = ({
|
|
@@ -20841,7 +20875,7 @@ var getAngle = (ref, coordinates) => {
|
|
|
20841
20875
|
};
|
|
20842
20876
|
var lastCoordinates = null;
|
|
20843
20877
|
var useMousePosition = (ref) => {
|
|
20844
|
-
const [angle, setAngle] =
|
|
20878
|
+
const [angle, setAngle] = useState23(getAngle(ref.current, lastCoordinates));
|
|
20845
20879
|
useEffect21(() => {
|
|
20846
20880
|
const element = ref.current;
|
|
20847
20881
|
if (!element) {
|
|
@@ -29864,14 +29898,14 @@ import { createContext as createContext32 } from "react";
|
|
|
29864
29898
|
import { jsx as jsx59, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
29865
29899
|
import { jsx as jsx214, jsxs as jsxs24, Fragment as Fragment12 } from "react/jsx-runtime";
|
|
29866
29900
|
import React57 from "react";
|
|
29867
|
-
import { useContext as useContext210, useEffect as useEffect41, useState as
|
|
29901
|
+
import { useContext as useContext210, useEffect as useEffect41, useState as useState40 } from "react";
|
|
29868
29902
|
import { useContext as useContext46, useLayoutEffect as useLayoutEffect18 } from "react";
|
|
29869
29903
|
import { jsx as jsx314 } from "react/jsx-runtime";
|
|
29870
|
-
import { useEffect as useEffect210, useState as
|
|
29904
|
+
import { useEffect as useEffect210, useState as useState24 } from "react";
|
|
29871
29905
|
import { useLayoutEffect as useLayoutEffect23 } from "react";
|
|
29872
29906
|
import { useContext as useContext47, useEffect as useEffect52, useRef as useRef47 } from "react";
|
|
29873
29907
|
import { useEffect as useEffect310, useRef as useRef212 } from "react";
|
|
29874
|
-
import { useCallback as useCallback39, useContext as useContext310, useMemo as useMemo54, useRef as useRef48, useState as
|
|
29908
|
+
import { useCallback as useCallback39, useContext as useContext310, useMemo as useMemo54, useRef as useRef48, useState as useState310 } from "react";
|
|
29875
29909
|
import { useEffect as useEffect42, useRef as useRef310 } from "react";
|
|
29876
29910
|
import { useCallback as useCallback210, useEffect as useEffect62, useMemo as useMemo212, useState as useState42 } from "react";
|
|
29877
29911
|
import {
|
|
@@ -31858,7 +31892,7 @@ var useBufferStateEmitter = (emitter) => {
|
|
|
31858
31892
|
}, [bufferManager, emitter]);
|
|
31859
31893
|
};
|
|
31860
31894
|
var PlayerEmitterProvider = ({ children, currentPlaybackRate }) => {
|
|
31861
|
-
const [emitter] =
|
|
31895
|
+
const [emitter] = useState40(() => new PlayerEmitter);
|
|
31862
31896
|
const bufferManager = useContext210(Internals.BufferingContextReact);
|
|
31863
31897
|
if (!bufferManager) {
|
|
31864
31898
|
throw new Error("BufferingContextReact not found");
|
|
@@ -31875,7 +31909,7 @@ var PlayerEmitterProvider = ({ children, currentPlaybackRate }) => {
|
|
|
31875
31909
|
});
|
|
31876
31910
|
};
|
|
31877
31911
|
var useHoverState = (ref, hideControlsWhenPointerDoesntMove) => {
|
|
31878
|
-
const [hovered, setHovered] =
|
|
31912
|
+
const [hovered, setHovered] = useState24(false);
|
|
31879
31913
|
useEffect210(() => {
|
|
31880
31914
|
const { current } = ref;
|
|
31881
31915
|
if (!current) {
|
|
@@ -31916,7 +31950,7 @@ var useHoverState = (ref, hideControlsWhenPointerDoesntMove) => {
|
|
|
31916
31950
|
};
|
|
31917
31951
|
var usePlayer = () => {
|
|
31918
31952
|
const [playing, setPlaying, imperativePlaying] = Internals.Timeline.usePlayingState();
|
|
31919
|
-
const [hasPlayed, setHasPlayed] =
|
|
31953
|
+
const [hasPlayed, setHasPlayed] = useState310(false);
|
|
31920
31954
|
const frame = Internals.Timeline.useTimelinePosition();
|
|
31921
31955
|
const playStart = useRef48(frame);
|
|
31922
31956
|
const setFrame = Internals.Timeline.useTimelineSetFrame();
|
|
@@ -35767,8 +35801,8 @@ function useColorMode() {
|
|
|
35767
35801
|
}
|
|
35768
35802
|
|
|
35769
35803
|
// ../media/dist/esm/index.mjs
|
|
35770
|
-
import { useMemo as useMemo312, useState as
|
|
35771
|
-
import { useContext as useContext212, useEffect as useEffect43, useMemo as useMemo58, useRef as useRef50, useState as
|
|
35804
|
+
import { useMemo as useMemo312, useState as useState312 } from "react";
|
|
35805
|
+
import { useContext as useContext212, useEffect as useEffect43, useMemo as useMemo58, useRef as useRef50, useState as useState41 } from "react";
|
|
35772
35806
|
import { ALL_FORMATS, Input as Input2, UrlSource } from "mediabunny";
|
|
35773
35807
|
import {
|
|
35774
35808
|
AudioBufferSink,
|
|
@@ -35777,7 +35811,7 @@ import {
|
|
|
35777
35811
|
import { CanvasSink } from "mediabunny";
|
|
35778
35812
|
import { useContext as useContext50, useLayoutEffect as useLayoutEffect19 } from "react";
|
|
35779
35813
|
import { jsx as jsx61 } from "react/jsx-runtime";
|
|
35780
|
-
import { useContext as useContext312, useLayoutEffect as useLayoutEffect24, useMemo as useMemo213, useState as
|
|
35814
|
+
import { useContext as useContext312, useLayoutEffect as useLayoutEffect24, useMemo as useMemo213, useState as useState210 } from "react";
|
|
35781
35815
|
import React211 from "react";
|
|
35782
35816
|
import {
|
|
35783
35817
|
ALL_FORMATS as ALL_FORMATS2,
|
|
@@ -35921,94 +35955,20 @@ var calculateEndTime = ({
|
|
|
35921
35955
|
}) / fps;
|
|
35922
35956
|
return mediaDuration + (trimBefore ?? 0) / fps;
|
|
35923
35957
|
};
|
|
35924
|
-
var AUDIO_PRIMING_SECONDS = 0.5;
|
|
35925
|
-
async function* makeIteratorWithPrimingInner(audioSink, timeToSeek, maximumTimestamp) {
|
|
35926
|
-
const primingStart = Math.max(0, timeToSeek - AUDIO_PRIMING_SECONDS);
|
|
35927
|
-
const iterator = audioSink.buffers(primingStart, maximumTimestamp);
|
|
35928
|
-
for await (const buffer of iterator) {
|
|
35929
|
-
if (buffer.timestamp + buffer.duration <= timeToSeek) {
|
|
35930
|
-
continue;
|
|
35931
|
-
}
|
|
35932
|
-
yield {
|
|
35933
|
-
buffer,
|
|
35934
|
-
timestamp: buffer.timestamp
|
|
35935
|
-
};
|
|
35936
|
-
}
|
|
35937
|
-
}
|
|
35938
|
-
async function* makeLoopingIterator({
|
|
35939
|
-
audioSink,
|
|
35940
|
-
segmentStartInSeconds,
|
|
35941
|
-
segmentEndInSeconds,
|
|
35942
|
-
playbackRate,
|
|
35943
|
-
sequenceDurationInSeconds
|
|
35944
|
-
}) {
|
|
35945
|
-
const duration = segmentEndInSeconds - segmentStartInSeconds;
|
|
35946
|
-
let iteration = 0;
|
|
35947
|
-
let broken = false;
|
|
35948
|
-
while (true) {
|
|
35949
|
-
for await (const item of makeIteratorWithPrimingInner(audioSink, segmentStartInSeconds, segmentEndInSeconds)) {
|
|
35950
|
-
const timestamp = item.timestamp + iteration * duration;
|
|
35951
|
-
const endTimestamp = duration * iteration + (item.timestamp - segmentStartInSeconds + item.buffer.duration);
|
|
35952
|
-
if (endTimestamp > sequenceDurationInSeconds * playbackRate) {
|
|
35953
|
-
broken = true;
|
|
35954
|
-
break;
|
|
35955
|
-
}
|
|
35956
|
-
yield {
|
|
35957
|
-
buffer: item.buffer,
|
|
35958
|
-
timestamp
|
|
35959
|
-
};
|
|
35960
|
-
}
|
|
35961
|
-
if (broken) {
|
|
35962
|
-
break;
|
|
35963
|
-
}
|
|
35964
|
-
iteration++;
|
|
35965
|
-
}
|
|
35966
|
-
}
|
|
35967
|
-
var makeIteratorWithPriming = ({
|
|
35968
|
-
audioSink,
|
|
35969
|
-
timeToSeek,
|
|
35970
|
-
maximumTimestamp,
|
|
35971
|
-
loop,
|
|
35972
|
-
playbackRate,
|
|
35973
|
-
sequenceDurationInSeconds
|
|
35974
|
-
}) => {
|
|
35975
|
-
if (loop) {
|
|
35976
|
-
return makeLoopingIterator({
|
|
35977
|
-
audioSink,
|
|
35978
|
-
segmentStartInSeconds: timeToSeek,
|
|
35979
|
-
segmentEndInSeconds: maximumTimestamp,
|
|
35980
|
-
playbackRate,
|
|
35981
|
-
sequenceDurationInSeconds
|
|
35982
|
-
});
|
|
35983
|
-
}
|
|
35984
|
-
return makeIteratorWithPrimingInner(audioSink, timeToSeek, maximumTimestamp);
|
|
35985
|
-
};
|
|
35986
35958
|
var ALLOWED_GLOBAL_TIME_ANCHOR_SHIFT2 = 0.1;
|
|
35987
35959
|
var makeAudioIterator = ({
|
|
35988
35960
|
startFromSecond,
|
|
35989
|
-
|
|
35990
|
-
audioSink,
|
|
35991
|
-
loop,
|
|
35992
|
-
playbackRate,
|
|
35993
|
-
sequenceDurationInSeconds,
|
|
35961
|
+
iterator,
|
|
35994
35962
|
unscheduleAudioNode
|
|
35995
35963
|
}) => {
|
|
35996
35964
|
let destroyed = false;
|
|
35997
|
-
const iterator = makeIteratorWithPriming({
|
|
35998
|
-
audioSink,
|
|
35999
|
-
timeToSeek: startFromSecond,
|
|
36000
|
-
maximumTimestamp,
|
|
36001
|
-
loop,
|
|
36002
|
-
playbackRate,
|
|
36003
|
-
sequenceDurationInSeconds
|
|
36004
|
-
});
|
|
36005
35965
|
const queuedAudioNodes = [];
|
|
36006
35966
|
let mostRecentTimestamp = -Infinity;
|
|
36007
35967
|
const cleanupAudioQueue = () => {
|
|
36008
|
-
for (const node of queuedAudioNodes) {
|
|
36009
|
-
unscheduleAudioNode(node
|
|
35968
|
+
for (const { node } of queuedAudioNodes) {
|
|
35969
|
+
unscheduleAudioNode(node);
|
|
36010
35970
|
try {
|
|
36011
|
-
node.
|
|
35971
|
+
node.stop();
|
|
36012
35972
|
} catch {}
|
|
36013
35973
|
}
|
|
36014
35974
|
queuedAudioNodes.length = 0;
|
|
@@ -36016,7 +35976,7 @@ var makeAudioIterator = ({
|
|
|
36016
35976
|
const getNextFn = async () => {
|
|
36017
35977
|
const next = await iterator.next();
|
|
36018
35978
|
if (next.value) {
|
|
36019
|
-
mostRecentTimestamp = Math.max(mostRecentTimestamp, next.value.
|
|
35979
|
+
mostRecentTimestamp = Math.max(mostRecentTimestamp, next.value.timelineTimestamp + next.value.sourceDurationInSeconds);
|
|
36020
35980
|
}
|
|
36021
35981
|
return next;
|
|
36022
35982
|
};
|
|
@@ -36032,21 +35992,8 @@ var makeAudioIterator = ({
|
|
|
36032
35992
|
isDestroyed: () => {
|
|
36033
35993
|
return destroyed;
|
|
36034
35994
|
},
|
|
36035
|
-
addQueuedAudioNode: ({
|
|
36036
|
-
|
|
36037
|
-
timestamp,
|
|
36038
|
-
buffer,
|
|
36039
|
-
scheduledTime,
|
|
36040
|
-
scheduledAtAnchor
|
|
36041
|
-
}) => {
|
|
36042
|
-
queuedAudioNodes.push({
|
|
36043
|
-
node,
|
|
36044
|
-
timestamp,
|
|
36045
|
-
buffer,
|
|
36046
|
-
scheduledTime,
|
|
36047
|
-
playbackRate,
|
|
36048
|
-
scheduledAtAnchor
|
|
36049
|
-
});
|
|
35995
|
+
addQueuedAudioNode: (queuedNode) => {
|
|
35996
|
+
queuedAudioNodes.push(queuedNode);
|
|
36050
35997
|
},
|
|
36051
35998
|
guessNextTimestamp: () => {
|
|
36052
35999
|
return !Number.isFinite(mostRecentTimestamp) ? startFromSecond : mostRecentTimestamp;
|
|
@@ -36055,7 +36002,7 @@ var makeAudioIterator = ({
|
|
|
36055
36002
|
let until = -Infinity;
|
|
36056
36003
|
let from = Infinity;
|
|
36057
36004
|
for (const node of queuedAudioNodes) {
|
|
36058
|
-
until = Math.max(until, node.timestamp + node.
|
|
36005
|
+
until = Math.max(until, node.timestamp + node.sourceDurationInSeconds);
|
|
36059
36006
|
from = Math.min(from, node.timestamp);
|
|
36060
36007
|
}
|
|
36061
36008
|
if (!Number.isFinite(from) || !Number.isFinite(until)) {
|
|
@@ -36088,27 +36035,23 @@ var getScheduledTime = ({
|
|
|
36088
36035
|
return scheduledTime;
|
|
36089
36036
|
};
|
|
36090
36037
|
var getDurationOfNode = ({
|
|
36091
|
-
|
|
36092
|
-
|
|
36093
|
-
offset: offset4
|
|
36094
|
-
originalUnloopedMediaTimestamp
|
|
36038
|
+
sourceDurationInSeconds,
|
|
36039
|
+
sourceOffsetInSeconds,
|
|
36040
|
+
offset: offset4
|
|
36095
36041
|
}) => {
|
|
36096
|
-
|
|
36097
|
-
const needsTrimEnd = originalUnloopedMediaEndTime > loopSegmentMediaEndTimestamp;
|
|
36098
|
-
const durationMinusOffset = bufferDuration - offset4;
|
|
36099
|
-
const duration = needsTrimEnd ? durationMinusOffset - Math.max(0, originalUnloopedMediaEndTime - loopSegmentMediaEndTimestamp) : durationMinusOffset;
|
|
36100
|
-
return duration;
|
|
36042
|
+
return Math.max(0, sourceDurationInSeconds - (offset4 - sourceOffsetInSeconds));
|
|
36101
36043
|
};
|
|
36102
36044
|
var getTrimStartForAudioNode = ({
|
|
36103
36045
|
mediaTimestamp,
|
|
36104
36046
|
targetTime,
|
|
36105
36047
|
sequenceStartTime,
|
|
36106
|
-
combinedPlaybackRate
|
|
36048
|
+
combinedPlaybackRate,
|
|
36049
|
+
sourceStartOffsetInSeconds
|
|
36107
36050
|
}) => {
|
|
36108
36051
|
const needsTrimStart = mediaTimestamp < sequenceStartTime;
|
|
36109
36052
|
const offsetBecauseOfTrim = needsTrimStart ? sequenceStartTime - mediaTimestamp : 0;
|
|
36110
36053
|
const offsetBecauseOfTooLate = targetTime < 0 ? -targetTime * combinedPlaybackRate : 0;
|
|
36111
|
-
return offsetBecauseOfTrim + offsetBecauseOfTooLate;
|
|
36054
|
+
return sourceStartOffsetInSeconds + offsetBecauseOfTrim + offsetBecauseOfTooLate;
|
|
36112
36055
|
};
|
|
36113
36056
|
|
|
36114
36057
|
class StaleWaiterError extends Error {
|
|
@@ -36210,6 +36153,76 @@ var waitForTurn = ({
|
|
|
36210
36153
|
});
|
|
36211
36154
|
processNext();
|
|
36212
36155
|
};
|
|
36156
|
+
var AUDIO_PRIMING_SECONDS = 0.5;
|
|
36157
|
+
async function* makeIteratorWithPriming({
|
|
36158
|
+
audioSink,
|
|
36159
|
+
timeToSeek,
|
|
36160
|
+
maximumTimestamp
|
|
36161
|
+
}) {
|
|
36162
|
+
const primingStart = Math.max(0, timeToSeek - AUDIO_PRIMING_SECONDS);
|
|
36163
|
+
const iterator = audioSink.buffers(primingStart, maximumTimestamp);
|
|
36164
|
+
for await (const buffer of iterator) {
|
|
36165
|
+
const sourceStart = Math.max(buffer.timestamp, timeToSeek);
|
|
36166
|
+
const sourceEnd = Math.min(buffer.timestamp + buffer.duration, maximumTimestamp);
|
|
36167
|
+
if (sourceEnd <= sourceStart) {
|
|
36168
|
+
continue;
|
|
36169
|
+
}
|
|
36170
|
+
yield {
|
|
36171
|
+
buffer,
|
|
36172
|
+
timelineTimestamp: sourceStart,
|
|
36173
|
+
sourceOffsetInSeconds: sourceStart - buffer.timestamp,
|
|
36174
|
+
sourceDurationInSeconds: sourceEnd - sourceStart
|
|
36175
|
+
};
|
|
36176
|
+
}
|
|
36177
|
+
}
|
|
36178
|
+
async function* makeLoopingIterator({
|
|
36179
|
+
audioSink,
|
|
36180
|
+
seekTimeInSeconds,
|
|
36181
|
+
loopStartInSeconds,
|
|
36182
|
+
segmentEndInSeconds,
|
|
36183
|
+
maximumContinuousTimestamp
|
|
36184
|
+
}) {
|
|
36185
|
+
if (segmentEndInSeconds <= loopStartInSeconds) {
|
|
36186
|
+
throw new Error(`Cannot loop audio over an empty range (${loopStartInSeconds} to ${segmentEndInSeconds})`);
|
|
36187
|
+
}
|
|
36188
|
+
let passStartInSeconds = seekTimeInSeconds;
|
|
36189
|
+
let passBaseTimestamp = seekTimeInSeconds;
|
|
36190
|
+
while (true) {
|
|
36191
|
+
let yieldedInPass = false;
|
|
36192
|
+
for await (const item of makeIteratorWithPriming({
|
|
36193
|
+
audioSink,
|
|
36194
|
+
timeToSeek: passStartInSeconds,
|
|
36195
|
+
maximumTimestamp: segmentEndInSeconds
|
|
36196
|
+
})) {
|
|
36197
|
+
yieldedInPass = true;
|
|
36198
|
+
const timelineTimestamp = passBaseTimestamp + (item.timelineTimestamp - passStartInSeconds);
|
|
36199
|
+
const sourceDurationInSeconds = Math.min(item.sourceDurationInSeconds, maximumContinuousTimestamp - timelineTimestamp);
|
|
36200
|
+
if (sourceDurationInSeconds <= 0) {
|
|
36201
|
+
return;
|
|
36202
|
+
}
|
|
36203
|
+
yield {
|
|
36204
|
+
...item,
|
|
36205
|
+
timelineTimestamp,
|
|
36206
|
+
sourceDurationInSeconds
|
|
36207
|
+
};
|
|
36208
|
+
if (timelineTimestamp + sourceDurationInSeconds >= maximumContinuousTimestamp) {
|
|
36209
|
+
return;
|
|
36210
|
+
}
|
|
36211
|
+
}
|
|
36212
|
+
if (!yieldedInPass) {
|
|
36213
|
+
throw new Error(`Audio loop pass from ${passStartInSeconds} to ${segmentEndInSeconds} yielded no buffers`);
|
|
36214
|
+
}
|
|
36215
|
+
passBaseTimestamp += segmentEndInSeconds - passStartInSeconds;
|
|
36216
|
+
passStartInSeconds = loopStartInSeconds;
|
|
36217
|
+
}
|
|
36218
|
+
}
|
|
36219
|
+
var anchorToContinuousTime = ({
|
|
36220
|
+
anchor,
|
|
36221
|
+
unloopedTimeInSeconds,
|
|
36222
|
+
playbackRate
|
|
36223
|
+
}) => {
|
|
36224
|
+
return anchor.mediaStartInSeconds + (unloopedTimeInSeconds - anchor.unloopedStartInSeconds) * playbackRate;
|
|
36225
|
+
};
|
|
36213
36226
|
var audioIteratorManager = ({
|
|
36214
36227
|
audioTrack,
|
|
36215
36228
|
delayPlaybackHandleIfNotPremounting,
|
|
@@ -36244,6 +36257,7 @@ var audioIteratorManager = ({
|
|
|
36244
36257
|
gainNode.connect(sharedAudioContext.gainNode);
|
|
36245
36258
|
const audioSink = new AudioBufferSink(audioTrack);
|
|
36246
36259
|
let audioBufferIterator = null;
|
|
36260
|
+
let currentAnchor = null;
|
|
36247
36261
|
let audioIteratorsCreated = 0;
|
|
36248
36262
|
let totalAudioScheduledInSeconds = 0;
|
|
36249
36263
|
let currentDelayHandle = null;
|
|
@@ -36276,6 +36290,8 @@ var audioIteratorManager = ({
|
|
|
36276
36290
|
buffer,
|
|
36277
36291
|
mediaTimestamp,
|
|
36278
36292
|
originalUnloopedMediaTimestamp,
|
|
36293
|
+
sourceOffsetInSeconds,
|
|
36294
|
+
sourceDurationInSeconds,
|
|
36279
36295
|
playbackRate,
|
|
36280
36296
|
scheduleAudioNode,
|
|
36281
36297
|
logLevel
|
|
@@ -36290,7 +36306,7 @@ var audioIteratorManager = ({
|
|
|
36290
36306
|
node.buffer = buffer;
|
|
36291
36307
|
node.playbackRate.value = playbackRate;
|
|
36292
36308
|
node.connect(gainNode);
|
|
36293
|
-
const started = scheduleAudioNode(node, mediaTimestamp, originalUnloopedMediaTimestamp);
|
|
36309
|
+
const started = scheduleAudioNode(node, mediaTimestamp, originalUnloopedMediaTimestamp, sourceOffsetInSeconds, sourceDurationInSeconds);
|
|
36294
36310
|
if (started.type === "not-started") {
|
|
36295
36311
|
Internals.Log.verbose({ logLevel, tag: "audio-scheduling" }, "not started, disconnected: %s %s", mediaTimestamp.toFixed(3), buffer.duration.toFixed(3));
|
|
36296
36312
|
node.disconnect();
|
|
@@ -36300,7 +36316,9 @@ var audioIteratorManager = ({
|
|
|
36300
36316
|
node,
|
|
36301
36317
|
timestamp: mediaTimestamp,
|
|
36302
36318
|
buffer,
|
|
36319
|
+
sourceDurationInSeconds,
|
|
36303
36320
|
scheduledTime: started.scheduledTime,
|
|
36321
|
+
playbackRate,
|
|
36304
36322
|
scheduledAtAnchor: sharedAudioContext.audioSyncAnchor.value
|
|
36305
36323
|
});
|
|
36306
36324
|
};
|
|
@@ -36315,22 +36333,24 @@ var audioIteratorManager = ({
|
|
|
36315
36333
|
}
|
|
36316
36334
|
const startTime = getStartTime();
|
|
36317
36335
|
const sequenceEndTime = getSequenceEndTimestamp();
|
|
36318
|
-
if (buffer.
|
|
36336
|
+
if (buffer.timelineTimestamp + buffer.sourceDurationInSeconds <= startTime) {
|
|
36319
36337
|
return;
|
|
36320
36338
|
}
|
|
36321
|
-
if (buffer.
|
|
36339
|
+
if (buffer.timelineTimestamp >= sequenceEndTime) {
|
|
36322
36340
|
return;
|
|
36323
36341
|
}
|
|
36324
|
-
const scheduledStart = Math.max(buffer.
|
|
36325
|
-
const scheduledEnd = Math.min(buffer.
|
|
36342
|
+
const scheduledStart = Math.max(buffer.timelineTimestamp, startTime);
|
|
36343
|
+
const scheduledEnd = Math.min(buffer.timelineTimestamp + buffer.sourceDurationInSeconds, sequenceEndTime);
|
|
36326
36344
|
totalAudioScheduledInSeconds += Math.max(0, scheduledEnd - scheduledStart);
|
|
36327
36345
|
scheduleAudioChunk({
|
|
36328
36346
|
buffer: buffer.buffer.buffer,
|
|
36329
|
-
mediaTimestamp: buffer.
|
|
36347
|
+
mediaTimestamp: buffer.timelineTimestamp,
|
|
36330
36348
|
playbackRate,
|
|
36331
36349
|
scheduleAudioNode,
|
|
36332
36350
|
logLevel,
|
|
36333
|
-
originalUnloopedMediaTimestamp: buffer.buffer.timestamp
|
|
36351
|
+
originalUnloopedMediaTimestamp: buffer.buffer.timestamp,
|
|
36352
|
+
sourceOffsetInSeconds: buffer.sourceOffsetInSeconds,
|
|
36353
|
+
sourceDurationInSeconds: buffer.sourceDurationInSeconds
|
|
36334
36354
|
});
|
|
36335
36355
|
drawDebugOverlay();
|
|
36336
36356
|
};
|
|
@@ -36378,7 +36398,7 @@ var audioIteratorManager = ({
|
|
|
36378
36398
|
onDone();
|
|
36379
36399
|
return;
|
|
36380
36400
|
}
|
|
36381
|
-
onScheduled(result.value.
|
|
36401
|
+
onScheduled(result.value.timelineTimestamp);
|
|
36382
36402
|
notifyNodeScheduled();
|
|
36383
36403
|
onAudioChunk({
|
|
36384
36404
|
buffer: result.value,
|
|
@@ -36418,6 +36438,7 @@ var audioIteratorManager = ({
|
|
|
36418
36438
|
nonce,
|
|
36419
36439
|
playbackRate,
|
|
36420
36440
|
startFromSecond,
|
|
36441
|
+
unloopedStartFromSecond,
|
|
36421
36442
|
scheduleAudioNode,
|
|
36422
36443
|
getTargetTime,
|
|
36423
36444
|
logLevel,
|
|
@@ -36436,14 +36457,25 @@ var audioIteratorManager = ({
|
|
|
36436
36457
|
unblockCurrentDelayHandle();
|
|
36437
36458
|
const delayHandle = delayPlaybackHandleIfNotPremounting();
|
|
36438
36459
|
currentDelayHandle = delayHandle;
|
|
36460
|
+
currentAnchor = {
|
|
36461
|
+
unloopedStartInSeconds: unloopedStartFromSecond,
|
|
36462
|
+
mediaStartInSeconds: startFromSecond
|
|
36463
|
+
};
|
|
36464
|
+
const maximumContinuousTimestamp = startFromSecond + getSequenceDurationInSeconds() * playbackRate;
|
|
36465
|
+
const source = loop ? makeLoopingIterator({
|
|
36466
|
+
audioSink,
|
|
36467
|
+
seekTimeInSeconds: startFromSecond,
|
|
36468
|
+
loopStartInSeconds: getStartTime(),
|
|
36469
|
+
segmentEndInSeconds: maximumTimestamp,
|
|
36470
|
+
maximumContinuousTimestamp
|
|
36471
|
+
}) : makeIteratorWithPriming({
|
|
36472
|
+
audioSink,
|
|
36473
|
+
timeToSeek: startFromSecond,
|
|
36474
|
+
maximumTimestamp
|
|
36475
|
+
});
|
|
36439
36476
|
const iterator = makeAudioIterator({
|
|
36440
36477
|
startFromSecond,
|
|
36441
|
-
|
|
36442
|
-
audioSink,
|
|
36443
|
-
logLevel,
|
|
36444
|
-
loop,
|
|
36445
|
-
playbackRate,
|
|
36446
|
-
sequenceDurationInSeconds: getSequenceDurationInSeconds(),
|
|
36478
|
+
iterator: source,
|
|
36447
36479
|
unscheduleAudioNode
|
|
36448
36480
|
});
|
|
36449
36481
|
audioIteratorsCreated++;
|
|
@@ -36474,8 +36506,10 @@ var audioIteratorManager = ({
|
|
|
36474
36506
|
};
|
|
36475
36507
|
const seek2 = ({
|
|
36476
36508
|
newTime,
|
|
36509
|
+
unloopedNewTime,
|
|
36477
36510
|
nonce,
|
|
36478
36511
|
playbackRate,
|
|
36512
|
+
localPlaybackRate,
|
|
36479
36513
|
scheduleAudioNode,
|
|
36480
36514
|
getTargetTime,
|
|
36481
36515
|
logLevel,
|
|
@@ -36507,18 +36541,23 @@ var audioIteratorManager = ({
|
|
|
36507
36541
|
return;
|
|
36508
36542
|
}
|
|
36509
36543
|
if (audioBufferIterator && !audioBufferIterator.isDestroyed()) {
|
|
36544
|
+
const timeToCheck = loop && currentAnchor ? anchorToContinuousTime({
|
|
36545
|
+
anchor: currentAnchor,
|
|
36546
|
+
unloopedTimeInSeconds: unloopedNewTime,
|
|
36547
|
+
playbackRate: localPlaybackRate
|
|
36548
|
+
}) : newTime;
|
|
36510
36549
|
const queuedPeriod = audioBufferIterator.getQueuedPeriod();
|
|
36511
36550
|
const queuedPeriodMinusLatency = queuedPeriod ? {
|
|
36512
36551
|
from: queuedPeriod.from - ALLOWED_GLOBAL_TIME_ANCHOR_SHIFT2 - sharedAudioContext.audioContext.baseLatency - sharedAudioContext.audioContext.outputLatency,
|
|
36513
36552
|
until: queuedPeriod.until
|
|
36514
36553
|
} : null;
|
|
36515
|
-
const currentTimeIsAlreadyQueued = isAlreadyQueued(
|
|
36554
|
+
const currentTimeIsAlreadyQueued = isAlreadyQueued(timeToCheck, queuedPeriodMinusLatency);
|
|
36516
36555
|
if (currentTimeIsAlreadyQueued) {
|
|
36517
36556
|
processNext();
|
|
36518
36557
|
return;
|
|
36519
36558
|
}
|
|
36520
36559
|
const currentIteratorTimestamp = audioBufferIterator.guessNextTimestamp();
|
|
36521
|
-
if (currentIteratorTimestamp <
|
|
36560
|
+
if (currentIteratorTimestamp < timeToCheck && Math.abs(currentIteratorTimestamp - timeToCheck) < 1) {
|
|
36522
36561
|
processNext();
|
|
36523
36562
|
return;
|
|
36524
36563
|
}
|
|
@@ -36527,6 +36566,7 @@ var audioIteratorManager = ({
|
|
|
36527
36566
|
nonce,
|
|
36528
36567
|
playbackRate,
|
|
36529
36568
|
startFromSecond: newTime,
|
|
36569
|
+
unloopedStartFromSecond: unloopedNewTime,
|
|
36530
36570
|
scheduleAudioNode,
|
|
36531
36571
|
getTargetTime,
|
|
36532
36572
|
logLevel,
|
|
@@ -36538,9 +36578,11 @@ var audioIteratorManager = ({
|
|
|
36538
36578
|
return {
|
|
36539
36579
|
startAudioIterator,
|
|
36540
36580
|
getAudioBufferIterator: () => audioBufferIterator,
|
|
36581
|
+
getCurrentAnchor: () => currentAnchor,
|
|
36541
36582
|
destroyIterator: () => {
|
|
36542
36583
|
audioBufferIterator?.destroy();
|
|
36543
36584
|
audioBufferIterator = null;
|
|
36585
|
+
currentAnchor = null;
|
|
36544
36586
|
unblockCurrentDelayHandle();
|
|
36545
36587
|
},
|
|
36546
36588
|
seek: seek2,
|
|
@@ -37556,6 +37598,7 @@ class MediaPlayer {
|
|
|
37556
37598
|
nonce,
|
|
37557
37599
|
playbackRate: this.playbackRate * this.globalPlaybackRate,
|
|
37558
37600
|
startFromSecond: startTime,
|
|
37601
|
+
unloopedStartFromSecond: startTimeUnresolved,
|
|
37559
37602
|
scheduleAudioNode: this.scheduleAudioNode,
|
|
37560
37603
|
getTargetTime: this.getTargetTime,
|
|
37561
37604
|
logLevel: this.logLevel,
|
|
@@ -37587,10 +37630,10 @@ class MediaPlayer {
|
|
|
37587
37630
|
__callDispose(__stack, _err, _hasErr);
|
|
37588
37631
|
}
|
|
37589
37632
|
}
|
|
37590
|
-
seekToWithQueue = async (newTime) => {
|
|
37633
|
+
seekToWithQueue = async (newTime, unloopedNewTime) => {
|
|
37591
37634
|
const nonce = this.nonceManager.createAsyncOperation();
|
|
37592
37635
|
await this.seekPromiseChain;
|
|
37593
|
-
this.seekPromiseChain = this.seekToDoNotCallDirectly(newTime, nonce);
|
|
37636
|
+
this.seekPromiseChain = this.seekToDoNotCallDirectly(newTime, unloopedNewTime, nonce);
|
|
37594
37637
|
await this.seekPromiseChain;
|
|
37595
37638
|
};
|
|
37596
37639
|
async seekTo(time) {
|
|
@@ -37598,9 +37641,9 @@ class MediaPlayer {
|
|
|
37598
37641
|
if (newTime === null) {
|
|
37599
37642
|
throw new Error(`should have asserted that the time is not null`);
|
|
37600
37643
|
}
|
|
37601
|
-
await this.seekToWithQueue(newTime);
|
|
37644
|
+
await this.seekToWithQueue(newTime, time);
|
|
37602
37645
|
}
|
|
37603
|
-
async seekToDoNotCallDirectly(newTime, nonce) {
|
|
37646
|
+
async seekToDoNotCallDirectly(newTime, unloopedNewTime, nonce) {
|
|
37604
37647
|
if (nonce.isStale()) {
|
|
37605
37648
|
return;
|
|
37606
37649
|
}
|
|
@@ -37612,8 +37655,10 @@ class MediaPlayer {
|
|
|
37612
37655
|
}),
|
|
37613
37656
|
this.audioIteratorManager?.seek({
|
|
37614
37657
|
newTime,
|
|
37658
|
+
unloopedNewTime,
|
|
37615
37659
|
nonce,
|
|
37616
37660
|
playbackRate: this.playbackRate * this.globalPlaybackRate,
|
|
37661
|
+
localPlaybackRate: this.playbackRate,
|
|
37617
37662
|
getTargetTime: this.getTargetTime,
|
|
37618
37663
|
logLevel: this.logLevel,
|
|
37619
37664
|
loop: this.loop,
|
|
@@ -37759,14 +37804,19 @@ class MediaPlayer {
|
|
|
37759
37804
|
}
|
|
37760
37805
|
const globalTime = (currentTime - this.sharedAudioContext.audioSyncAnchor.value) * this.globalPlaybackRate;
|
|
37761
37806
|
const timeInSeconds = globalTime - this.sequenceOffset;
|
|
37762
|
-
const
|
|
37807
|
+
const anchor = this.loop ? this.audioIteratorManager?.getCurrentAnchor() ?? null : null;
|
|
37808
|
+
const localTime = anchor ? anchorToContinuousTime({
|
|
37809
|
+
anchor,
|
|
37810
|
+
unloopedTimeInSeconds: timeInSeconds,
|
|
37811
|
+
playbackRate: this.playbackRate
|
|
37812
|
+
}) : this.getTrimmedTime(timeInSeconds);
|
|
37763
37813
|
if (localTime === null) {
|
|
37764
37814
|
return null;
|
|
37765
37815
|
}
|
|
37766
37816
|
const targetTime = (mediaTimestamp - localTime) / (this.playbackRate * this.globalPlaybackRate);
|
|
37767
37817
|
return targetTime;
|
|
37768
37818
|
};
|
|
37769
|
-
scheduleAudioNode = (node, mediaTimestamp, originalUnloopedMediaTimestamp) => {
|
|
37819
|
+
scheduleAudioNode = (node, mediaTimestamp, originalUnloopedMediaTimestamp, sourceOffsetInSeconds, sourceDurationInSeconds) => {
|
|
37770
37820
|
if (!this.sharedAudioContext) {
|
|
37771
37821
|
throw new Error("Shared audio context not found");
|
|
37772
37822
|
}
|
|
@@ -37779,18 +37829,17 @@ class MediaPlayer {
|
|
|
37779
37829
|
};
|
|
37780
37830
|
}
|
|
37781
37831
|
const sequenceStartTime = this.getStartTime();
|
|
37782
|
-
const loopSegmentMediaEndTimestamp = this.getLoopSegmentMediaEndTimestamp();
|
|
37783
37832
|
const offset4 = getTrimStartForAudioNode({
|
|
37784
37833
|
mediaTimestamp,
|
|
37785
37834
|
targetTime,
|
|
37786
37835
|
sequenceStartTime,
|
|
37787
|
-
combinedPlaybackRate
|
|
37836
|
+
combinedPlaybackRate,
|
|
37837
|
+
sourceStartOffsetInSeconds: sourceOffsetInSeconds
|
|
37788
37838
|
});
|
|
37789
37839
|
const duration = getDurationOfNode({
|
|
37790
|
-
|
|
37791
|
-
|
|
37792
|
-
offset: offset4
|
|
37793
|
-
originalUnloopedMediaTimestamp
|
|
37840
|
+
sourceDurationInSeconds,
|
|
37841
|
+
sourceOffsetInSeconds,
|
|
37842
|
+
offset: offset4
|
|
37794
37843
|
});
|
|
37795
37844
|
const scheduledTime = getScheduledTime({
|
|
37796
37845
|
mediaTimestamp,
|
|
@@ -37801,6 +37850,7 @@ class MediaPlayer {
|
|
|
37801
37850
|
return this.sharedAudioContext.scheduleAudioNode({
|
|
37802
37851
|
node,
|
|
37803
37852
|
mediaTimestamp,
|
|
37853
|
+
sourceOffset: sourceOffsetInSeconds,
|
|
37804
37854
|
scheduledTime,
|
|
37805
37855
|
duration,
|
|
37806
37856
|
offset: offset4,
|
|
@@ -38038,9 +38088,9 @@ var AudioForPreviewAssertedShowing = ({
|
|
|
38038
38088
|
const mediaPlayerRef = useRef50(null);
|
|
38039
38089
|
const initialTrimBeforeRef = useRef50(trimBefore);
|
|
38040
38090
|
const initialTrimAfterRef = useRef50(trimAfter);
|
|
38041
|
-
const [initialRequestInit] =
|
|
38042
|
-
const [mediaPlayerReady, setMediaPlayerReady] =
|
|
38043
|
-
const [shouldFallbackToNativeAudio, setShouldFallbackToNativeAudio] =
|
|
38091
|
+
const [initialRequestInit] = useState41(requestInit);
|
|
38092
|
+
const [mediaPlayerReady, setMediaPlayerReady] = useState41(false);
|
|
38093
|
+
const [shouldFallbackToNativeAudio, setShouldFallbackToNativeAudio] = useState41(false);
|
|
38044
38094
|
const [playing] = Timeline.usePlayingState();
|
|
38045
38095
|
const { playbackRate: globalPlaybackRate } = Internals.usePlaybackRate();
|
|
38046
38096
|
const sharedAudioContext = useContext212(SharedAudioContext2);
|
|
@@ -40221,8 +40271,8 @@ var AudioForRendering2 = ({
|
|
|
40221
40271
|
}
|
|
40222
40272
|
const { fps } = videoConfig;
|
|
40223
40273
|
const { delayRender: delayRender2, continueRender } = useDelayRender();
|
|
40224
|
-
const [replaceWithHtml5Audio, setReplaceWithHtml5Audio] =
|
|
40225
|
-
const [initialRequestInit] =
|
|
40274
|
+
const [replaceWithHtml5Audio, setReplaceWithHtml5Audio] = useState210(false);
|
|
40275
|
+
const [initialRequestInit] = useState210(requestInit);
|
|
40226
40276
|
const sequenceContext = useContext312(Internals.SequenceContext);
|
|
40227
40277
|
const id = useMemo213(() => `media-audio-${random(src)}-${sequenceContext?.cumulatedFrom}-${sequenceContext?.relativeFrom}-${sequenceContext?.durationInFrames}`, [
|
|
40228
40278
|
src,
|
|
@@ -40444,7 +40494,7 @@ var AudioInner = (props) => {
|
|
|
40444
40494
|
mediaStartsAt,
|
|
40445
40495
|
loop: props.loop ?? false
|
|
40446
40496
|
});
|
|
40447
|
-
const [mediaDurationInSeconds, setMediaDurationInSeconds] =
|
|
40497
|
+
const [mediaDurationInSeconds, setMediaDurationInSeconds] = useState312(null);
|
|
40448
40498
|
const loopDisplay = useMemo312(() => getLoopDisplay({
|
|
40449
40499
|
loop: props.loop ?? false,
|
|
40450
40500
|
mediaDurationInSeconds,
|
|
@@ -42841,7 +42891,7 @@ import {
|
|
|
42841
42891
|
import { BufferTarget, StreamTarget } from "mediabunny";
|
|
42842
42892
|
|
|
42843
42893
|
// ../core/dist/esm/version.mjs
|
|
42844
|
-
var VERSION2 = "4.0.
|
|
42894
|
+
var VERSION2 = "4.0.489";
|
|
42845
42895
|
|
|
42846
42896
|
// ../web-renderer/dist/esm/index.mjs
|
|
42847
42897
|
import { AudioSample, VideoSample } from "mediabunny";
|