@remotion/promo-pages 4.0.489 → 4.0.491
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 +1018 -556
- package/dist/components/Homepage.js +5 -17
- package/dist/components/homepage/CommunityStatsItems.js +1 -1
- package/dist/components/homepage/Demo/Card.d.ts +3 -3
- package/dist/components/homepage/Demo/DemoRender.d.ts +1 -1
- package/dist/components/homepage/Demo/DisplayedEmoji.js +12 -4
- package/dist/components/homepage/Demo/math.d.ts +1 -1
- package/dist/components/homepage/GitHubButton.js +1 -1
- package/dist/components/homepage/MakeVideosAgentically.d.ts +1 -0
- package/dist/components/homepage/MakeVideosAgentically.js +4 -6
- package/dist/components/homepage/MakeVideosInteractively.d.ts +2 -0
- package/dist/components/homepage/MakeVideosInteractively.js +3 -6
- package/dist/components/homepage/MakeVideosLinks.js +1 -1
- package/dist/components/homepage/MakeVideosProgrammatically.d.ts +2 -0
- package/dist/components/homepage/MakeVideosProgrammatically.js +2 -5
- package/dist/components/homepage/Pricing.d.ts +6 -1
- package/dist/components/homepage/Pricing.js +12 -2
- package/dist/components/homepage/WriteInReact.js +1 -1
- package/dist/components/team/TrustSection.js +1 -1
- package/dist/design.js +355 -194
- package/dist/experts.js +340 -168
- package/dist/homepage/Pricing.js +372 -211
- package/dist/prompts/PromptsGallery.js +352 -191
- package/dist/prompts/PromptsShow.js +358 -197
- package/dist/prompts/PromptsSubmit.js +344 -183
- package/dist/team.js +329 -168
- package/dist/template-modal-content.js +372 -211
- package/dist/templates.js +373 -209
- package/package.json +13 -13
package/dist/experts.js
CHANGED
|
@@ -1153,13 +1153,12 @@ import { jsx as jsx34 } from "react/jsx-runtime";
|
|
|
1153
1153
|
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
1154
1154
|
import React39, { useMemo as useMemo37 } from "react";
|
|
1155
1155
|
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
1156
|
-
import {
|
|
1157
|
-
Children,
|
|
1156
|
+
import React41, {
|
|
1158
1157
|
forwardRef as forwardRef14,
|
|
1159
1158
|
useMemo as useMemo38
|
|
1160
1159
|
} from "react";
|
|
1161
1160
|
import React40 from "react";
|
|
1162
|
-
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
1161
|
+
import { jsx as jsx37, jsxs as jsxs3, Fragment } from "react/jsx-runtime";
|
|
1163
1162
|
import React42 from "react";
|
|
1164
1163
|
import { forwardRef as forwardRef16, useCallback as useCallback25, useContext as useContext39 } from "react";
|
|
1165
1164
|
import {
|
|
@@ -2049,26 +2048,20 @@ var continueRenderInternal = ({
|
|
|
2049
2048
|
if (typeof handle !== "number") {
|
|
2050
2049
|
throw new TypeError("The parameter passed into continueRender() must be the return value of delayRender() which is a number. Got: " + JSON.stringify(handle));
|
|
2051
2050
|
}
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
delete scope.remotion_delayRenderTimeouts[handle];
|
|
2067
|
-
}
|
|
2068
|
-
return false;
|
|
2069
|
-
}
|
|
2070
|
-
return true;
|
|
2071
|
-
});
|
|
2051
|
+
const handleExists = scope.remotion_delayRenderHandles.includes(handle);
|
|
2052
|
+
const timeoutEntry = scope.remotion_delayRenderTimeouts[handle];
|
|
2053
|
+
if (handleExists && environment.isRendering && timeoutEntry) {
|
|
2054
|
+
const { label: label2, startTime, timeout } = timeoutEntry;
|
|
2055
|
+
clearTimeout(timeout);
|
|
2056
|
+
const message = [
|
|
2057
|
+
label2 ? `"${label2}"` : "A handle",
|
|
2058
|
+
DELAY_RENDER_CLEAR_TOKEN,
|
|
2059
|
+
`${Date.now() - startTime}ms`
|
|
2060
|
+
].filter(truthy).join(" ");
|
|
2061
|
+
Log.verbose({ logLevel, tag: "delayRender()" }, message);
|
|
2062
|
+
delete scope.remotion_delayRenderTimeouts[handle];
|
|
2063
|
+
}
|
|
2064
|
+
scope.remotion_delayRenderHandles = scope.remotion_delayRenderHandles.filter((h) => h !== handle);
|
|
2072
2065
|
if (scope.remotion_delayRenderHandles.length === 0) {
|
|
2073
2066
|
scope.remotion_renderReady = true;
|
|
2074
2067
|
}
|
|
@@ -2341,7 +2334,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
|
|
|
2341
2334
|
var addSequenceStackTraces = (component) => {
|
|
2342
2335
|
componentsToAddStacksTo.push(component);
|
|
2343
2336
|
};
|
|
2344
|
-
var VERSION = "4.0.
|
|
2337
|
+
var VERSION = "4.0.491";
|
|
2345
2338
|
var checkMultipleRemotionVersions = () => {
|
|
2346
2339
|
if (typeof globalThis === "undefined") {
|
|
2347
2340
|
return;
|
|
@@ -2722,7 +2715,8 @@ var transformSchema = {
|
|
|
2722
2715
|
max: 100,
|
|
2723
2716
|
step: 0.01,
|
|
2724
2717
|
default: 1,
|
|
2725
|
-
description: "Scale"
|
|
2718
|
+
description: "Scale",
|
|
2719
|
+
defaultKeyframeOutput: "perceptual-scale"
|
|
2726
2720
|
},
|
|
2727
2721
|
"style.rotate": {
|
|
2728
2722
|
type: "rotation-css",
|
|
@@ -2953,7 +2947,7 @@ var SequenceManagerRefContext = React11.createContext({
|
|
|
2953
2947
|
current: []
|
|
2954
2948
|
});
|
|
2955
2949
|
var makeSequencePropsSubscriptionKey = (key) => {
|
|
2956
|
-
return `${key.nodePath.join(".")}
|
|
2950
|
+
return `${key.absolutePath}\x00${key.nodePath.join(".")}\x00${key.sequenceKeys.join(".")}\x00${key.effectKeys.map((keys) => keys.join(".")).join(".")}`;
|
|
2957
2951
|
};
|
|
2958
2952
|
var VisualModePropStatusesContext = React11.createContext({
|
|
2959
2953
|
propStatuses: {}
|
|
@@ -3526,8 +3520,20 @@ var serializeStringInterpolationValue = ({
|
|
|
3526
3520
|
}
|
|
3527
3521
|
return values.slice(0, dimensions).map((value, index) => `${stringifyNumber(value)}${units[index]}`).join(" ");
|
|
3528
3522
|
};
|
|
3523
|
+
var toSignedArea = (scale) => {
|
|
3524
|
+
if (scale === 0) {
|
|
3525
|
+
return 0;
|
|
3526
|
+
}
|
|
3527
|
+
return Math.sign(scale) * scale * scale;
|
|
3528
|
+
};
|
|
3529
|
+
var fromSignedArea = (area) => {
|
|
3530
|
+
if (area === 0) {
|
|
3531
|
+
return 0;
|
|
3532
|
+
}
|
|
3533
|
+
return Math.sign(area) * Math.sqrt(Math.abs(area));
|
|
3534
|
+
};
|
|
3529
3535
|
function interpolateFunction(input, inputRange, outputRange, options) {
|
|
3530
|
-
const { extrapolateLeft, extrapolateRight, easing } = options;
|
|
3536
|
+
const { extrapolateLeft, extrapolateRight, easing, output } = options;
|
|
3531
3537
|
let result = input;
|
|
3532
3538
|
const [inputMin, inputMax] = inputRange;
|
|
3533
3539
|
const [outputMin, outputMax] = outputRange;
|
|
@@ -3558,7 +3564,13 @@ function interpolateFunction(input, inputRange, outputRange, options) {
|
|
|
3558
3564
|
}
|
|
3559
3565
|
result = (result - inputMin) / (inputMax - inputMin);
|
|
3560
3566
|
result = easing(result);
|
|
3561
|
-
|
|
3567
|
+
if (output === "perceptual-scale") {
|
|
3568
|
+
const signedAreaMin = toSignedArea(outputMin);
|
|
3569
|
+
const signedAreaMax = toSignedArea(outputMax);
|
|
3570
|
+
result = fromSignedArea(result * (signedAreaMax - signedAreaMin) + signedAreaMin);
|
|
3571
|
+
} else {
|
|
3572
|
+
result = result * (outputMax - outputMin) + outputMin;
|
|
3573
|
+
}
|
|
3562
3574
|
return result;
|
|
3563
3575
|
}
|
|
3564
3576
|
function findRange(input, inputRange) {
|
|
@@ -3571,6 +3583,9 @@ function findRange(input, inputRange) {
|
|
|
3571
3583
|
return i - 1;
|
|
3572
3584
|
}
|
|
3573
3585
|
var defaultEasing = (num) => num;
|
|
3586
|
+
var resolveOutputOption = (output) => {
|
|
3587
|
+
return output ?? "linear";
|
|
3588
|
+
};
|
|
3574
3589
|
var shouldExtendRightForEasing = (easing) => {
|
|
3575
3590
|
return easing.remotionShouldExtendRight === true;
|
|
3576
3591
|
};
|
|
@@ -3592,12 +3607,14 @@ var interpolateSegment = ({
|
|
|
3592
3607
|
outputRange,
|
|
3593
3608
|
easing,
|
|
3594
3609
|
extrapolateLeft,
|
|
3595
|
-
extrapolateRight
|
|
3610
|
+
extrapolateRight,
|
|
3611
|
+
output
|
|
3596
3612
|
}) => {
|
|
3597
3613
|
return interpolateFunction(input, inputRange, outputRange, {
|
|
3598
3614
|
easing,
|
|
3599
3615
|
extrapolateLeft,
|
|
3600
|
-
extrapolateRight: input > inputRange[1] && extrapolateRight === "clamp" && shouldExtendRightForEasing(easing) ? "extend" : extrapolateRight
|
|
3616
|
+
extrapolateRight: input > inputRange[1] && extrapolateRight === "clamp" && shouldExtendRightForEasing(easing) ? "extend" : extrapolateRight,
|
|
3617
|
+
output
|
|
3601
3618
|
});
|
|
3602
3619
|
};
|
|
3603
3620
|
var interpolateNumber = ({
|
|
@@ -3606,6 +3623,7 @@ var interpolateNumber = ({
|
|
|
3606
3623
|
outputRange,
|
|
3607
3624
|
options
|
|
3608
3625
|
}) => {
|
|
3626
|
+
const output = resolveOutputOption(options?.output);
|
|
3609
3627
|
if (inputRange.length === 1) {
|
|
3610
3628
|
return outputRange[0];
|
|
3611
3629
|
}
|
|
@@ -3630,7 +3648,8 @@ var interpolateNumber = ({
|
|
|
3630
3648
|
outputRange: [outputRange[range], outputRange[range + 1]],
|
|
3631
3649
|
easing,
|
|
3632
3650
|
extrapolateLeft,
|
|
3633
|
-
extrapolateRight
|
|
3651
|
+
extrapolateRight,
|
|
3652
|
+
output
|
|
3634
3653
|
});
|
|
3635
3654
|
for (let segmentIndex = 0;segmentIndex < range; segmentIndex++) {
|
|
3636
3655
|
const previousEasing = resolveEasingForSegment({
|
|
@@ -3650,7 +3669,8 @@ var interpolateNumber = ({
|
|
|
3650
3669
|
outputRange: [outputRange[segmentIndex], outputRange[segmentIndex + 1]],
|
|
3651
3670
|
easing: previousEasing,
|
|
3652
3671
|
extrapolateLeft,
|
|
3653
|
-
extrapolateRight: "extend"
|
|
3672
|
+
extrapolateRight: "extend",
|
|
3673
|
+
output
|
|
3654
3674
|
});
|
|
3655
3675
|
result += continuedSegmentValue - outputRange[segmentIndex + 1];
|
|
3656
3676
|
}
|
|
@@ -3698,14 +3718,18 @@ var interpolateString = ({
|
|
|
3698
3718
|
}
|
|
3699
3719
|
}
|
|
3700
3720
|
}
|
|
3701
|
-
|
|
3702
|
-
|
|
3703
|
-
values
|
|
3721
|
+
const values = [0, 0, 0];
|
|
3722
|
+
for (let axis = 0;axis < dimensions; axis++) {
|
|
3723
|
+
values[axis] = interpolateNumber({
|
|
3704
3724
|
input,
|
|
3705
3725
|
inputRange,
|
|
3706
3726
|
outputRange: parsedOutputRange.map((parsed) => parsed.values[axis]),
|
|
3707
3727
|
options
|
|
3708
|
-
})
|
|
3728
|
+
});
|
|
3729
|
+
}
|
|
3730
|
+
return serializeStringInterpolationValue({
|
|
3731
|
+
kind,
|
|
3732
|
+
values,
|
|
3709
3733
|
units,
|
|
3710
3734
|
dimensions
|
|
3711
3735
|
});
|
|
@@ -3789,6 +3813,12 @@ function assertValidInterpolatePosterizeOption(posterize) {
|
|
|
3789
3813
|
throw new Error(`posterize must be a positive finite number, but got ${posterize}`);
|
|
3790
3814
|
}
|
|
3791
3815
|
}
|
|
3816
|
+
function assertValidInterpolateOutputOption(output) {
|
|
3817
|
+
if (output === undefined || output === "linear" || output === "perceptual-scale") {
|
|
3818
|
+
return;
|
|
3819
|
+
}
|
|
3820
|
+
throw new Error(`output must be "linear" or "perceptual-scale", but got ${String(output)}`);
|
|
3821
|
+
}
|
|
3792
3822
|
function interpolate(input, inputRange, outputRange, options) {
|
|
3793
3823
|
if (typeof input === "undefined") {
|
|
3794
3824
|
throw new Error("input can not be undefined");
|
|
@@ -3806,6 +3836,7 @@ function interpolate(input, inputRange, outputRange, options) {
|
|
|
3806
3836
|
checkValidInputRange(inputRange);
|
|
3807
3837
|
assertValidInterpolateEasingOption(options?.easing, inputRange.length);
|
|
3808
3838
|
assertValidInterpolatePosterizeOption(options?.posterize);
|
|
3839
|
+
assertValidInterpolateOutputOption(options?.output);
|
|
3809
3840
|
if (typeof input !== "number") {
|
|
3810
3841
|
throw new TypeError("Cannot interpolate an input which is not a number");
|
|
3811
3842
|
}
|
|
@@ -4750,6 +4781,7 @@ var interpolateKeyframedStatus = ({
|
|
|
4750
4781
|
easing: easing.map((e) => easingToFn({ easing: e, forceSpringAllowTail })),
|
|
4751
4782
|
extrapolateLeft: clamping.left,
|
|
4752
4783
|
extrapolateRight: clamping.right,
|
|
4784
|
+
output: status.output,
|
|
4753
4785
|
posterize: status.posterize
|
|
4754
4786
|
});
|
|
4755
4787
|
} catch {
|
|
@@ -4990,7 +5022,7 @@ var getFlatSchemaWithAllKeys = (schema) => {
|
|
|
4990
5022
|
const out = {};
|
|
4991
5023
|
const addKey = (key, field) => {
|
|
4992
5024
|
if (key in out) {
|
|
4993
|
-
|
|
5025
|
+
return;
|
|
4994
5026
|
}
|
|
4995
5027
|
out[key] = field;
|
|
4996
5028
|
};
|
|
@@ -5528,6 +5560,7 @@ var RegularSequenceRefForwardingFunction = ({
|
|
|
5528
5560
|
src: isMedia.data.src,
|
|
5529
5561
|
getStack: () => stackRef.current,
|
|
5530
5562
|
startMediaFrom: startMediaFrom ?? isMedia.data.startMediaFrom,
|
|
5563
|
+
mediaFrameAtSequenceZero,
|
|
5531
5564
|
volume: isMedia.data.volumes,
|
|
5532
5565
|
refForOutline: refForOutline ?? null,
|
|
5533
5566
|
isInsideSeries,
|
|
@@ -5591,6 +5624,7 @@ var RegularSequenceRefForwardingFunction = ({
|
|
|
5591
5624
|
isInsideSeries,
|
|
5592
5625
|
registeredFrozenFrame,
|
|
5593
5626
|
startMediaFrom,
|
|
5627
|
+
mediaFrameAtSequenceZero,
|
|
5594
5628
|
frozenMediaFrame
|
|
5595
5629
|
]);
|
|
5596
5630
|
const endThreshold = Math.ceil(cumulatedFrom + from + durationInFrames - 1);
|
|
@@ -7541,7 +7575,9 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
|
|
|
7541
7575
|
return;
|
|
7542
7576
|
}
|
|
7543
7577
|
if (data === undefined) {
|
|
7544
|
-
current.src
|
|
7578
|
+
if (current.src !== EMPTY_AUDIO) {
|
|
7579
|
+
current.src = EMPTY_AUDIO;
|
|
7580
|
+
}
|
|
7545
7581
|
return;
|
|
7546
7582
|
}
|
|
7547
7583
|
if (!data) {
|
|
@@ -7610,7 +7646,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
|
|
|
7610
7646
|
if (prevA.id === id) {
|
|
7611
7647
|
const isTheSame = compareProps(aud, prevA.props) && prevA.premounting === premounting && prevA.postmounting === postmounting;
|
|
7612
7648
|
if (isTheSame) {
|
|
7613
|
-
return prevA;
|
|
7649
|
+
return prevA.audioMounted === audioMounted ? prevA : { ...prevA, audioMounted };
|
|
7614
7650
|
}
|
|
7615
7651
|
changed = true;
|
|
7616
7652
|
return {
|
|
@@ -7622,7 +7658,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
|
|
|
7622
7658
|
audioMounted
|
|
7623
7659
|
};
|
|
7624
7660
|
}
|
|
7625
|
-
return prevA;
|
|
7661
|
+
return prevA.audioMounted === audioMounted ? prevA : { ...prevA, audioMounted };
|
|
7626
7662
|
});
|
|
7627
7663
|
if (changed) {
|
|
7628
7664
|
rerenderAudios();
|
|
@@ -7661,16 +7697,19 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
|
|
|
7661
7697
|
unregisterAudio,
|
|
7662
7698
|
updateAudio
|
|
7663
7699
|
]);
|
|
7700
|
+
const sharedAudioTagElements = useMemo21(() => {
|
|
7701
|
+
return refs.map(({ id, ref }) => {
|
|
7702
|
+
return /* @__PURE__ */ jsx19("audio", {
|
|
7703
|
+
ref,
|
|
7704
|
+
preload: "metadata",
|
|
7705
|
+
src: EMPTY_AUDIO
|
|
7706
|
+
}, id);
|
|
7707
|
+
});
|
|
7708
|
+
}, [refs]);
|
|
7664
7709
|
return /* @__PURE__ */ jsxs22(SharedAudioTagsContext.Provider, {
|
|
7665
7710
|
value: audioTagsValue,
|
|
7666
7711
|
children: [
|
|
7667
|
-
|
|
7668
|
-
return /* @__PURE__ */ jsx19("audio", {
|
|
7669
|
-
ref,
|
|
7670
|
-
preload: "metadata",
|
|
7671
|
-
src: EMPTY_AUDIO
|
|
7672
|
-
}, id);
|
|
7673
|
-
}),
|
|
7712
|
+
sharedAudioTagElements,
|
|
7674
7713
|
children
|
|
7675
7714
|
]
|
|
7676
7715
|
});
|
|
@@ -8131,6 +8170,7 @@ var useMediaInTimeline = ({
|
|
|
8131
8170
|
showInTimeline: true,
|
|
8132
8171
|
nonce: nonce.get(),
|
|
8133
8172
|
startMediaFrom: 0 - startsAt,
|
|
8173
|
+
mediaFrameAtSequenceZero: null,
|
|
8134
8174
|
doesVolumeChange,
|
|
8135
8175
|
loopDisplay,
|
|
8136
8176
|
playbackRate,
|
|
@@ -9764,16 +9804,16 @@ var isMissingPaintRecordError = (error2) => {
|
|
|
9764
9804
|
return error2 instanceof DOMException && error2.name === "InvalidStateError";
|
|
9765
9805
|
};
|
|
9766
9806
|
var missingPaintRecordMessage = "HtmlInCanvas: Expected the element to be inside the viewport during rendering, but Chrome had no cached paint record for it.";
|
|
9767
|
-
var
|
|
9768
|
-
|
|
9807
|
+
var resizePaintTarget = ({
|
|
9808
|
+
target,
|
|
9769
9809
|
width,
|
|
9770
9810
|
height
|
|
9771
9811
|
}) => {
|
|
9772
|
-
if (
|
|
9773
|
-
|
|
9812
|
+
if (target.width !== width) {
|
|
9813
|
+
target.width = width;
|
|
9774
9814
|
}
|
|
9775
|
-
if (
|
|
9776
|
-
|
|
9815
|
+
if (target.height !== height) {
|
|
9816
|
+
target.height = height;
|
|
9777
9817
|
}
|
|
9778
9818
|
};
|
|
9779
9819
|
var defaultOnPaint = ({
|
|
@@ -9789,7 +9829,7 @@ var defaultOnPaint = ({
|
|
|
9789
9829
|
const transform = ctx.drawElementImage(elementImage, 0, 0);
|
|
9790
9830
|
element.style.transform = transform.toString();
|
|
9791
9831
|
};
|
|
9792
|
-
var HtmlInCanvasAncestorContext = createContext23(
|
|
9832
|
+
var HtmlInCanvasAncestorContext = createContext23(null);
|
|
9793
9833
|
var HtmlInCanvasContent = forwardRef9(({
|
|
9794
9834
|
width,
|
|
9795
9835
|
height,
|
|
@@ -9801,20 +9841,22 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
9801
9841
|
controls,
|
|
9802
9842
|
style
|
|
9803
9843
|
}, ref) => {
|
|
9804
|
-
const
|
|
9844
|
+
const ancestor = useContext31(HtmlInCanvasAncestorContext);
|
|
9805
9845
|
assertHtmlInCanvasDimensions(width, height);
|
|
9806
9846
|
const resolvedPixelDensity = resolveHtmlInCanvasPixelDensity(pixelDensity);
|
|
9807
9847
|
const canvasWidth = Math.ceil(width * resolvedPixelDensity);
|
|
9808
9848
|
const canvasHeight = Math.ceil(height * resolvedPixelDensity);
|
|
9809
9849
|
const { continueRender: continueRender2, cancelRender: cancelRender2 } = useDelayRender();
|
|
9810
|
-
const { isRendering } = useRemotionEnvironment();
|
|
9850
|
+
const { isClientSideRendering, isRendering } = useRemotionEnvironment();
|
|
9851
|
+
const canRetryMissingPaintRecord = !isRendering || isClientSideRendering;
|
|
9852
|
+
const usesDirectLayoutCanvas = onPaint === undefined && onInit === undefined;
|
|
9811
9853
|
if (!isHtmlInCanvasSupported()) {
|
|
9812
9854
|
cancelRender2(new Error(HTML_IN_CANVAS_UNSUPPORTED_MESSAGE));
|
|
9813
9855
|
}
|
|
9814
9856
|
const canvas2dRef = useRef22(null);
|
|
9815
|
-
const
|
|
9857
|
+
const paintTargetRef = useRef22(null);
|
|
9816
9858
|
const divRef = useRef22(null);
|
|
9817
|
-
const canvasSizeKey = `${width}x${height}@${resolvedPixelDensity}`;
|
|
9859
|
+
const canvasSizeKey = `${width}x${height}@${resolvedPixelDensity}-${usesDirectLayoutCanvas ? "direct" : "offscreen"}`;
|
|
9818
9860
|
const setLayoutCanvasRef = useCallback16((node) => {
|
|
9819
9861
|
canvas2dRef.current = node;
|
|
9820
9862
|
if (typeof ref === "function") {
|
|
@@ -9837,17 +9879,19 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
9837
9879
|
const initializedRef = useRef22(false);
|
|
9838
9880
|
const onInitCleanupRef = useRef22(null);
|
|
9839
9881
|
const unmountedRef = useRef22(false);
|
|
9882
|
+
const ancestorRef = useRef22(ancestor);
|
|
9883
|
+
ancestorRef.current = ancestor;
|
|
9840
9884
|
const onPaintCb = useCallback16(async () => {
|
|
9841
9885
|
const element = divRef.current;
|
|
9842
9886
|
if (!element) {
|
|
9843
9887
|
throw new Error("Canvas or scene element not found");
|
|
9844
9888
|
}
|
|
9845
|
-
const
|
|
9846
|
-
if (!
|
|
9847
|
-
throw new Error("HtmlInCanvas:
|
|
9889
|
+
const paintTarget = paintTargetRef.current;
|
|
9890
|
+
if (!paintTarget) {
|
|
9891
|
+
throw new Error("HtmlInCanvas: paint target is not ready because the canvas is remounting");
|
|
9848
9892
|
}
|
|
9849
|
-
|
|
9850
|
-
|
|
9893
|
+
resizePaintTarget({
|
|
9894
|
+
target: paintTarget,
|
|
9851
9895
|
width: canvasWidth,
|
|
9852
9896
|
height: canvasHeight
|
|
9853
9897
|
});
|
|
@@ -9858,22 +9902,30 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
9858
9902
|
}
|
|
9859
9903
|
const handle = delayRender("onPaint");
|
|
9860
9904
|
if (!initializedRef.current) {
|
|
9861
|
-
|
|
9862
|
-
|
|
9863
|
-
|
|
9864
|
-
}
|
|
9865
|
-
|
|
9866
|
-
|
|
9867
|
-
|
|
9905
|
+
const currentOnInit = onInitRef.current;
|
|
9906
|
+
if (!currentOnInit) {
|
|
9907
|
+
initializedRef.current = true;
|
|
9908
|
+
} else {
|
|
9909
|
+
let initImage;
|
|
9910
|
+
try {
|
|
9911
|
+
initImage = placeholderCanvas.captureElementImage(element);
|
|
9912
|
+
} catch (error2) {
|
|
9913
|
+
if (isMissingPaintRecordError(error2) && canRetryMissingPaintRecord) {
|
|
9914
|
+
continueRender2(handle);
|
|
9915
|
+
return;
|
|
9916
|
+
}
|
|
9917
|
+
if (isMissingPaintRecordError(error2)) {
|
|
9918
|
+
throw new Error(missingPaintRecordMessage);
|
|
9919
|
+
}
|
|
9868
9920
|
throw error2;
|
|
9869
9921
|
}
|
|
9870
|
-
}
|
|
9871
|
-
if (initImage) {
|
|
9872
9922
|
initializedRef.current = true;
|
|
9873
|
-
|
|
9874
|
-
|
|
9923
|
+
try {
|
|
9924
|
+
if (paintTarget instanceof HTMLCanvasElement) {
|
|
9925
|
+
throw new Error("HtmlInCanvas: onInit requires an OffscreenCanvas paint target");
|
|
9926
|
+
}
|
|
9875
9927
|
const cleanup = await currentOnInit({
|
|
9876
|
-
canvas:
|
|
9928
|
+
canvas: paintTarget,
|
|
9877
9929
|
element,
|
|
9878
9930
|
elementImage: initImage,
|
|
9879
9931
|
pixelDensity: resolvedPixelDensity
|
|
@@ -9886,15 +9938,16 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
9886
9938
|
} else {
|
|
9887
9939
|
onInitCleanupRef.current = cleanup;
|
|
9888
9940
|
}
|
|
9941
|
+
} finally {
|
|
9942
|
+
initImage.close();
|
|
9889
9943
|
}
|
|
9890
9944
|
}
|
|
9891
9945
|
}
|
|
9892
|
-
const handler = onPaintRef.current ?? defaultOnPaint;
|
|
9893
9946
|
let elImage;
|
|
9894
9947
|
try {
|
|
9895
9948
|
elImage = placeholderCanvas.captureElementImage(element);
|
|
9896
9949
|
} catch (error2) {
|
|
9897
|
-
if (isMissingPaintRecordError(error2) &&
|
|
9950
|
+
if (isMissingPaintRecordError(error2) && canRetryMissingPaintRecord) {
|
|
9898
9951
|
continueRender2(handle);
|
|
9899
9952
|
return;
|
|
9900
9953
|
}
|
|
@@ -9903,20 +9956,41 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
9903
9956
|
}
|
|
9904
9957
|
throw error2;
|
|
9905
9958
|
}
|
|
9906
|
-
|
|
9907
|
-
|
|
9908
|
-
|
|
9909
|
-
|
|
9910
|
-
|
|
9911
|
-
|
|
9912
|
-
|
|
9913
|
-
|
|
9914
|
-
|
|
9915
|
-
|
|
9916
|
-
|
|
9917
|
-
|
|
9918
|
-
|
|
9919
|
-
|
|
9959
|
+
try {
|
|
9960
|
+
const currentOnPaint = onPaintRef.current;
|
|
9961
|
+
if (currentOnPaint) {
|
|
9962
|
+
if (paintTarget instanceof HTMLCanvasElement) {
|
|
9963
|
+
throw new Error("HtmlInCanvas: onPaint requires an OffscreenCanvas paint target");
|
|
9964
|
+
}
|
|
9965
|
+
const paintResult = currentOnPaint({
|
|
9966
|
+
canvas: paintTarget,
|
|
9967
|
+
element,
|
|
9968
|
+
elementImage: elImage,
|
|
9969
|
+
pixelDensity: resolvedPixelDensity
|
|
9970
|
+
});
|
|
9971
|
+
if (paintResult) {
|
|
9972
|
+
await paintResult;
|
|
9973
|
+
}
|
|
9974
|
+
} else {
|
|
9975
|
+
defaultOnPaint({
|
|
9976
|
+
canvas: paintTarget,
|
|
9977
|
+
element,
|
|
9978
|
+
elementImage: elImage,
|
|
9979
|
+
pixelDensity: resolvedPixelDensity
|
|
9980
|
+
});
|
|
9981
|
+
}
|
|
9982
|
+
await runEffectChain({
|
|
9983
|
+
state: chainState.get(canvasWidth, canvasHeight),
|
|
9984
|
+
source: paintTarget,
|
|
9985
|
+
effects: effectsRef.current,
|
|
9986
|
+
output: paintTarget,
|
|
9987
|
+
width: canvasWidth,
|
|
9988
|
+
height: canvasHeight
|
|
9989
|
+
});
|
|
9990
|
+
} finally {
|
|
9991
|
+
elImage.close();
|
|
9992
|
+
}
|
|
9993
|
+
ancestorRef.current?.requestParentPaint();
|
|
9920
9994
|
continueRender2(handle);
|
|
9921
9995
|
} catch (error2) {
|
|
9922
9996
|
cancelRender2(error2);
|
|
@@ -9928,7 +10002,7 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
9928
10002
|
continueRender2,
|
|
9929
10003
|
cancelRender2,
|
|
9930
10004
|
resolvedPixelDensity,
|
|
9931
|
-
|
|
10005
|
+
canRetryMissingPaintRecord
|
|
9932
10006
|
]);
|
|
9933
10007
|
useLayoutEffect9(() => {
|
|
9934
10008
|
const placeholder = canvas2dRef.current;
|
|
@@ -9936,10 +10010,10 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
9936
10010
|
throw new Error("Canvas not found");
|
|
9937
10011
|
}
|
|
9938
10012
|
placeholder.layoutSubtree = true;
|
|
9939
|
-
const
|
|
9940
|
-
|
|
9941
|
-
|
|
9942
|
-
|
|
10013
|
+
const paintTarget = usesDirectLayoutCanvas ? placeholder : placeholder.transferControlToOffscreen();
|
|
10014
|
+
paintTargetRef.current = paintTarget;
|
|
10015
|
+
resizePaintTarget({
|
|
10016
|
+
target: paintTarget,
|
|
9943
10017
|
width: canvasWidth,
|
|
9944
10018
|
height: canvasHeight
|
|
9945
10019
|
});
|
|
@@ -9948,13 +10022,19 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
9948
10022
|
placeholder.addEventListener("paint", onPaintCb);
|
|
9949
10023
|
return () => {
|
|
9950
10024
|
placeholder.removeEventListener("paint", onPaintCb);
|
|
9951
|
-
|
|
10025
|
+
paintTargetRef.current = null;
|
|
9952
10026
|
initializedRef.current = false;
|
|
9953
10027
|
unmountedRef.current = true;
|
|
9954
10028
|
onInitCleanupRef.current?.();
|
|
9955
10029
|
onInitCleanupRef.current = null;
|
|
9956
10030
|
};
|
|
9957
|
-
}, [
|
|
10031
|
+
}, [
|
|
10032
|
+
onPaintCb,
|
|
10033
|
+
cancelRender2,
|
|
10034
|
+
canvasWidth,
|
|
10035
|
+
canvasHeight,
|
|
10036
|
+
usesDirectLayoutCanvas
|
|
10037
|
+
]);
|
|
9958
10038
|
const onPaintChangedRef = useRef22(false);
|
|
9959
10039
|
useLayoutEffect9(() => {
|
|
9960
10040
|
if (!onPaintChangedRef.current) {
|
|
@@ -9993,11 +10073,15 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
9993
10073
|
...style ?? {}
|
|
9994
10074
|
};
|
|
9995
10075
|
}, [height, style, width]);
|
|
9996
|
-
|
|
9997
|
-
|
|
9998
|
-
|
|
10076
|
+
const ancestorValue = useMemo30(() => {
|
|
10077
|
+
return {
|
|
10078
|
+
requestParentPaint: () => {
|
|
10079
|
+
canvas2dRef.current?.requestPaint?.();
|
|
10080
|
+
}
|
|
10081
|
+
};
|
|
10082
|
+
}, []);
|
|
9999
10083
|
return /* @__PURE__ */ jsx25(HtmlInCanvasAncestorContext.Provider, {
|
|
10000
|
-
value:
|
|
10084
|
+
value: ancestorValue,
|
|
10001
10085
|
children: /* @__PURE__ */ jsx25("canvas", {
|
|
10002
10086
|
ref: setLayoutCanvasRef,
|
|
10003
10087
|
width: canvasWidth,
|
|
@@ -10869,6 +10953,22 @@ var Img = withInteractivitySchema({
|
|
|
10869
10953
|
supportsEffects: true
|
|
10870
10954
|
});
|
|
10871
10955
|
addSequenceStackTraces(Img);
|
|
10956
|
+
var sourcePathToIdentityPrefix = (packageName) => {
|
|
10957
|
+
if (packageName === "remotion") {
|
|
10958
|
+
return "dev.remotion.remotion";
|
|
10959
|
+
}
|
|
10960
|
+
if (packageName.startsWith("@remotion/")) {
|
|
10961
|
+
const normalizedPackageName = packageName.slice("@remotion/".length).replace(/-([a-z])/g, (_, char) => char.toUpperCase());
|
|
10962
|
+
return `dev.remotion.${normalizedPackageName}`;
|
|
10963
|
+
}
|
|
10964
|
+
throw new Error(`Unsupported Remotion package name: ${packageName}`);
|
|
10965
|
+
};
|
|
10966
|
+
var makeRemotionComponentIdentity = ({
|
|
10967
|
+
packageName,
|
|
10968
|
+
componentName
|
|
10969
|
+
}) => {
|
|
10970
|
+
return `${sourcePathToIdentityPrefix(packageName)}.${componentName}`;
|
|
10971
|
+
};
|
|
10872
10972
|
var interactiveElementSchema = {
|
|
10873
10973
|
...baseSchema,
|
|
10874
10974
|
...transformSchema,
|
|
@@ -10882,6 +10982,11 @@ var setRef = (ref, value) => {
|
|
|
10882
10982
|
ref.current = value;
|
|
10883
10983
|
}
|
|
10884
10984
|
};
|
|
10985
|
+
var withSchema = (options) => {
|
|
10986
|
+
const Wrapped = withInteractivitySchema(options);
|
|
10987
|
+
addSequenceStackTraces(Wrapped);
|
|
10988
|
+
return Wrapped;
|
|
10989
|
+
};
|
|
10885
10990
|
var makeInteractiveElement = (tag, displayName) => {
|
|
10886
10991
|
const Inner = forwardRef12((propsWithControls, ref) => {
|
|
10887
10992
|
const {
|
|
@@ -10921,15 +11026,17 @@ var makeInteractiveElement = (tag, displayName) => {
|
|
|
10921
11026
|
});
|
|
10922
11027
|
});
|
|
10923
11028
|
Inner.displayName = displayName;
|
|
10924
|
-
const Wrapped =
|
|
11029
|
+
const Wrapped = withSchema({
|
|
10925
11030
|
Component: Inner,
|
|
10926
11031
|
componentName: displayName,
|
|
10927
|
-
componentIdentity:
|
|
11032
|
+
componentIdentity: makeRemotionComponentIdentity({
|
|
11033
|
+
packageName: "remotion",
|
|
11034
|
+
componentName: displayName.slice(1, -1)
|
|
11035
|
+
}),
|
|
10928
11036
|
schema: interactiveElementSchema,
|
|
10929
11037
|
supportsEffects: false
|
|
10930
11038
|
});
|
|
10931
11039
|
Wrapped.displayName = displayName;
|
|
10932
|
-
addSequenceStackTraces(Wrapped);
|
|
10933
11040
|
return Wrapped;
|
|
10934
11041
|
};
|
|
10935
11042
|
var Interactive = {
|
|
@@ -10938,7 +11045,8 @@ var Interactive = {
|
|
|
10938
11045
|
textSchema,
|
|
10939
11046
|
premountSchema,
|
|
10940
11047
|
sequenceSchema,
|
|
10941
|
-
withSchema
|
|
11048
|
+
withSchema,
|
|
11049
|
+
_internalMakeRemotionComponentIdentity: makeRemotionComponentIdentity,
|
|
10942
11050
|
A: makeInteractiveElement("a", "<Interactive.A>"),
|
|
10943
11051
|
Article: makeInteractiveElement("article", "<Interactive.Article>"),
|
|
10944
11052
|
Aside: makeInteractiveElement("aside", "<Interactive.Aside>"),
|
|
@@ -12343,66 +12451,130 @@ var flattenChildren = (children) => {
|
|
|
12343
12451
|
return flatChildren;
|
|
12344
12452
|
}, []);
|
|
12345
12453
|
};
|
|
12346
|
-
var
|
|
12454
|
+
var seriesSequenceSchema = {
|
|
12455
|
+
durationInFrames: Interactive.baseSchema.durationInFrames,
|
|
12456
|
+
name: Interactive.sequenceSchema.name,
|
|
12457
|
+
hidden: Interactive.sequenceSchema.hidden,
|
|
12458
|
+
showInTimeline: Interactive.sequenceSchema.showInTimeline,
|
|
12459
|
+
freeze: Interactive.baseSchema.freeze,
|
|
12460
|
+
layout: Interactive.sequenceSchema.layout
|
|
12461
|
+
};
|
|
12462
|
+
var SeriesSequenceInner = forwardRef14(({
|
|
12463
|
+
offset = 0,
|
|
12464
|
+
className = "",
|
|
12465
|
+
stack = null,
|
|
12466
|
+
_remotionInternalRender = null,
|
|
12467
|
+
...props2
|
|
12468
|
+
}, ref) => {
|
|
12347
12469
|
useRequireToBeInsideSeries();
|
|
12470
|
+
if (_remotionInternalRender) {
|
|
12471
|
+
return _remotionInternalRender({ ...props2, offset, className: className || undefined, stack }, ref);
|
|
12472
|
+
}
|
|
12348
12473
|
return /* @__PURE__ */ jsx37(IsNotInsideSeriesProvider, {
|
|
12349
|
-
children
|
|
12474
|
+
children: props2.children
|
|
12350
12475
|
});
|
|
12351
|
-
};
|
|
12352
|
-
var SeriesSequence =
|
|
12476
|
+
});
|
|
12477
|
+
var SeriesSequence = Interactive.withSchema({
|
|
12478
|
+
Component: SeriesSequenceInner,
|
|
12479
|
+
componentName: "<Series.Sequence>",
|
|
12480
|
+
componentIdentity: "dev.remotion.remotion.Series.Sequence",
|
|
12481
|
+
schema: seriesSequenceSchema,
|
|
12482
|
+
supportsEffects: false
|
|
12483
|
+
});
|
|
12353
12484
|
var SequenceWithoutSchemaWithRef = SequenceWithoutSchema;
|
|
12485
|
+
var validateSeriesSequenceProps = ({
|
|
12486
|
+
durationInFrames,
|
|
12487
|
+
offset: offsetProp,
|
|
12488
|
+
index,
|
|
12489
|
+
childrenLength
|
|
12490
|
+
}) => {
|
|
12491
|
+
const debugInfo = `index = ${index}, duration = ${durationInFrames}`;
|
|
12492
|
+
if (index !== childrenLength - 1 || durationInFrames !== Infinity) {
|
|
12493
|
+
validateDurationInFrames(durationInFrames, {
|
|
12494
|
+
component: `of a <Series.Sequence /> component`,
|
|
12495
|
+
allowFloats: true
|
|
12496
|
+
});
|
|
12497
|
+
}
|
|
12498
|
+
const offset = offsetProp ?? 0;
|
|
12499
|
+
if (Number.isNaN(offset)) {
|
|
12500
|
+
throw new TypeError(`The "offset" property of a <Series.Sequence /> must not be NaN, but got NaN (${debugInfo}).`);
|
|
12501
|
+
}
|
|
12502
|
+
if (!Number.isFinite(offset)) {
|
|
12503
|
+
throw new TypeError(`The "offset" property of a <Series.Sequence /> must be finite, but got ${offset} (${debugInfo}).`);
|
|
12504
|
+
}
|
|
12505
|
+
if (offset % 1 !== 0) {
|
|
12506
|
+
throw new TypeError(`The "offset" property of a <Series.Sequence /> must be finite, but got ${offset} (${debugInfo}).`);
|
|
12507
|
+
}
|
|
12508
|
+
return offset;
|
|
12509
|
+
};
|
|
12354
12510
|
var SeriesInner = (props2) => {
|
|
12355
12511
|
const childrenValue = useMemo38(() => {
|
|
12356
|
-
let startFrame = 0;
|
|
12357
12512
|
const flattenedChildren = flattenChildren(props2.children);
|
|
12358
|
-
|
|
12513
|
+
const renderChildren = (i, startFrame) => {
|
|
12514
|
+
if (i === flattenedChildren.length) {
|
|
12515
|
+
return null;
|
|
12516
|
+
}
|
|
12517
|
+
const child = flattenedChildren[i];
|
|
12359
12518
|
const castedChild = child;
|
|
12360
12519
|
if (typeof castedChild === "string") {
|
|
12361
12520
|
if (castedChild.trim() === "") {
|
|
12362
|
-
return
|
|
12521
|
+
return renderChildren(i + 1, startFrame);
|
|
12363
12522
|
}
|
|
12364
12523
|
throw new TypeError(`The <Series /> component only accepts a list of <Series.Sequence /> components as its children, but you passed a string "${castedChild}"`);
|
|
12365
12524
|
}
|
|
12366
12525
|
if (castedChild.type !== SeriesSequence) {
|
|
12367
12526
|
throw new TypeError(`The <Series /> component only accepts a list of <Series.Sequence /> components as its children, but got ${castedChild} instead`);
|
|
12368
12527
|
}
|
|
12369
|
-
const
|
|
12370
|
-
|
|
12371
|
-
|
|
12372
|
-
|
|
12373
|
-
|
|
12374
|
-
|
|
12375
|
-
name,
|
|
12376
|
-
...passedProps
|
|
12377
|
-
} = castedChild.props;
|
|
12378
|
-
if (i !== flattenedChildren.length - 1 || durationInFramesProp !== Infinity) {
|
|
12379
|
-
validateDurationInFrames(durationInFramesProp, {
|
|
12380
|
-
component: `of a <Series.Sequence /> component`,
|
|
12381
|
-
allowFloats: true
|
|
12382
|
-
});
|
|
12383
|
-
}
|
|
12384
|
-
const offset = castedChild.props.offset ?? 0;
|
|
12385
|
-
if (Number.isNaN(offset)) {
|
|
12386
|
-
throw new TypeError(`The "offset" property of a <Series.Sequence /> must not be NaN, but got NaN (${debugInfo}).`);
|
|
12387
|
-
}
|
|
12388
|
-
if (!Number.isFinite(offset)) {
|
|
12389
|
-
throw new TypeError(`The "offset" property of a <Series.Sequence /> must be finite, but got ${offset} (${debugInfo}).`);
|
|
12390
|
-
}
|
|
12391
|
-
if (offset % 1 !== 0) {
|
|
12392
|
-
throw new TypeError(`The "offset" property of a <Series.Sequence /> must be finite, but got ${offset} (${debugInfo}).`);
|
|
12393
|
-
}
|
|
12394
|
-
const currentStartFrame = startFrame + offset;
|
|
12395
|
-
startFrame += durationInFramesProp + offset;
|
|
12396
|
-
return /* @__PURE__ */ jsx37(SequenceWithoutSchemaWithRef, {
|
|
12397
|
-
ref: castedChild.ref,
|
|
12398
|
-
name: name || "<Series.Sequence>",
|
|
12399
|
-
_remotionInternalDocumentationLink: name ? undefined : "https://www.remotion.dev/docs/series",
|
|
12400
|
-
from: currentStartFrame,
|
|
12401
|
-
durationInFrames: durationInFramesProp,
|
|
12402
|
-
...passedProps,
|
|
12403
|
-
children: child
|
|
12528
|
+
const castedElement = castedChild;
|
|
12529
|
+
validateSeriesSequenceProps({
|
|
12530
|
+
durationInFrames: castedElement.props.durationInFrames,
|
|
12531
|
+
offset: castedElement.props.offset,
|
|
12532
|
+
index: i,
|
|
12533
|
+
childrenLength: flattenedChildren.length
|
|
12404
12534
|
});
|
|
12405
|
-
|
|
12535
|
+
return React41.cloneElement(castedElement, {
|
|
12536
|
+
_remotionInternalRender: (resolvedProps, ref) => {
|
|
12537
|
+
const durationInFramesProp = resolvedProps.durationInFrames;
|
|
12538
|
+
const {
|
|
12539
|
+
durationInFrames: _durationInFrames,
|
|
12540
|
+
children: sequenceChildren,
|
|
12541
|
+
offset: offsetProp,
|
|
12542
|
+
controls,
|
|
12543
|
+
stack,
|
|
12544
|
+
from: _from,
|
|
12545
|
+
name,
|
|
12546
|
+
...passedProps
|
|
12547
|
+
} = resolvedProps;
|
|
12548
|
+
const offset = validateSeriesSequenceProps({
|
|
12549
|
+
durationInFrames: durationInFramesProp,
|
|
12550
|
+
offset: offsetProp,
|
|
12551
|
+
index: i,
|
|
12552
|
+
childrenLength: flattenedChildren.length
|
|
12553
|
+
});
|
|
12554
|
+
const currentStartFrame = startFrame + offset;
|
|
12555
|
+
const nextStartFrame = startFrame + durationInFramesProp + offset;
|
|
12556
|
+
return /* @__PURE__ */ jsxs3(Fragment, {
|
|
12557
|
+
children: [
|
|
12558
|
+
/* @__PURE__ */ jsx37(SequenceWithoutSchemaWithRef, {
|
|
12559
|
+
ref,
|
|
12560
|
+
name: name || "<Series.Sequence>",
|
|
12561
|
+
_remotionInternalDocumentationLink: name ? undefined : "https://www.remotion.dev/docs/series",
|
|
12562
|
+
_remotionInternalStack: stack ?? undefined,
|
|
12563
|
+
controls: controls ?? undefined,
|
|
12564
|
+
from: currentStartFrame,
|
|
12565
|
+
durationInFrames: durationInFramesProp,
|
|
12566
|
+
...passedProps,
|
|
12567
|
+
children: /* @__PURE__ */ jsx37(IsNotInsideSeriesProvider, {
|
|
12568
|
+
children: sequenceChildren
|
|
12569
|
+
})
|
|
12570
|
+
}),
|
|
12571
|
+
renderChildren(i + 1, nextStartFrame)
|
|
12572
|
+
]
|
|
12573
|
+
});
|
|
12574
|
+
}
|
|
12575
|
+
});
|
|
12576
|
+
};
|
|
12577
|
+
return renderChildren(0, 0);
|
|
12406
12578
|
}, [props2.children]);
|
|
12407
12579
|
return /* @__PURE__ */ jsx37(IsInsideSeriesContainer, {
|
|
12408
12580
|
children: /* @__PURE__ */ jsx37(Sequence, {
|
|
@@ -13001,7 +13173,7 @@ addSequenceStackTraces(Composition);
|
|
|
13001
13173
|
addSequenceStackTraces(Folder);
|
|
13002
13174
|
|
|
13003
13175
|
// src/components/team/TeamCards.tsx
|
|
13004
|
-
import { jsx as jsx40, jsxs as
|
|
13176
|
+
import { jsx as jsx40, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
13005
13177
|
var LinkedInLogo = () => {
|
|
13006
13178
|
return /* @__PURE__ */ jsx40("svg", {
|
|
13007
13179
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -13056,14 +13228,14 @@ var TeamMemberCard = ({
|
|
|
13056
13228
|
github,
|
|
13057
13229
|
email
|
|
13058
13230
|
}) => {
|
|
13059
|
-
return /* @__PURE__ */
|
|
13231
|
+
return /* @__PURE__ */ jsxs4("div", {
|
|
13060
13232
|
className: "flex-1 rounded-[15px] flex flex-col md:flex-row gap-2 md:gap-4",
|
|
13061
13233
|
children: [
|
|
13062
13234
|
/* @__PURE__ */ jsx40("img", {
|
|
13063
13235
|
src: image,
|
|
13064
13236
|
className: "w-[250px] h-[250px] rounded-xl border-effect"
|
|
13065
13237
|
}),
|
|
13066
|
-
/* @__PURE__ */
|
|
13238
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
13067
13239
|
className: "flex flex-col border-effect px-4 py-3 bg-pane",
|
|
13068
13240
|
children: [
|
|
13069
13241
|
/* @__PURE__ */ jsx40("h2", {
|
|
@@ -13081,7 +13253,7 @@ var TeamMemberCard = ({
|
|
|
13081
13253
|
/* @__PURE__ */ jsx40("div", {
|
|
13082
13254
|
className: "flex-1"
|
|
13083
13255
|
}),
|
|
13084
|
-
/* @__PURE__ */
|
|
13256
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
13085
13257
|
className: "gap-3 flex flex-row",
|
|
13086
13258
|
children: [
|
|
13087
13259
|
/* @__PURE__ */ jsx40("a", {
|
|
@@ -13116,7 +13288,7 @@ var TeamMemberCard = ({
|
|
|
13116
13288
|
});
|
|
13117
13289
|
};
|
|
13118
13290
|
var TeamCardsLayout = () => {
|
|
13119
|
-
return /* @__PURE__ */
|
|
13291
|
+
return /* @__PURE__ */ jsxs4("div", {
|
|
13120
13292
|
className: "flex flex-col gap-12 md:gap-4",
|
|
13121
13293
|
children: [
|
|
13122
13294
|
/* @__PURE__ */ jsx40(TeamMemberCard, {
|
|
@@ -13184,7 +13356,7 @@ var PersonalWebsite = () => {
|
|
|
13184
13356
|
};
|
|
13185
13357
|
|
|
13186
13358
|
// src/components/experts/ExpertsPage.tsx
|
|
13187
|
-
import { jsx as jsx43, jsxs as
|
|
13359
|
+
import { jsx as jsx43, jsxs as jsxs6, Fragment as Fragment2 } from "react/jsx-runtime";
|
|
13188
13360
|
var arrowIcon = {
|
|
13189
13361
|
height: 16,
|
|
13190
13362
|
marginLeft: 10
|
|
@@ -13215,7 +13387,7 @@ var wrapperStyle = {
|
|
|
13215
13387
|
paddingBottom: 100
|
|
13216
13388
|
};
|
|
13217
13389
|
var ExpertCard = ({ expert, Link }) => {
|
|
13218
|
-
return /* @__PURE__ */
|
|
13390
|
+
return /* @__PURE__ */ jsxs6("div", {
|
|
13219
13391
|
className: "flex-1 rounded-[15px] flex flex-col md:flex-row gap-2 md:gap-4",
|
|
13220
13392
|
children: [
|
|
13221
13393
|
/* @__PURE__ */ jsx43(Link, {
|
|
@@ -13227,7 +13399,7 @@ var ExpertCard = ({ expert, Link }) => {
|
|
|
13227
13399
|
className: "w-[250px] h-[250px] rounded-xl border-effect object-cover"
|
|
13228
13400
|
})
|
|
13229
13401
|
}),
|
|
13230
|
-
/* @__PURE__ */
|
|
13402
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
13231
13403
|
className: "flex flex-col border-effect px-4 py-3 bg-pane flex-1",
|
|
13232
13404
|
children: [
|
|
13233
13405
|
/* @__PURE__ */ jsx43(Link, {
|
|
@@ -13242,10 +13414,10 @@ var ExpertCard = ({ expert, Link }) => {
|
|
|
13242
13414
|
className: "mt-2 mb-3 leading-normal font-brand",
|
|
13243
13415
|
children: expert.description
|
|
13244
13416
|
}),
|
|
13245
|
-
/* @__PURE__ */
|
|
13417
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
13246
13418
|
className: "leading-6 mb-4",
|
|
13247
13419
|
children: [
|
|
13248
|
-
/* @__PURE__ */
|
|
13420
|
+
/* @__PURE__ */ jsxs6(Link, {
|
|
13249
13421
|
className: "no-underline text-brand font-brand font-bold inline-flex flex-row items-center",
|
|
13250
13422
|
href: `/experts/${expert.slug}`,
|
|
13251
13423
|
children: [
|
|
@@ -13262,10 +13434,10 @@ var ExpertCard = ({ expert, Link }) => {
|
|
|
13262
13434
|
})
|
|
13263
13435
|
]
|
|
13264
13436
|
}),
|
|
13265
|
-
expert.videocall ? /* @__PURE__ */
|
|
13437
|
+
expert.videocall ? /* @__PURE__ */ jsxs6(Fragment2, {
|
|
13266
13438
|
children: [
|
|
13267
13439
|
/* @__PURE__ */ jsx43("br", {}),
|
|
13268
|
-
/* @__PURE__ */
|
|
13440
|
+
/* @__PURE__ */ jsxs6("a", {
|
|
13269
13441
|
className: "no-underline text-brand font-brand font-bold inline-flex flex-row items-center",
|
|
13270
13442
|
target: "_blank",
|
|
13271
13443
|
href: expert.videocall,
|
|
@@ -13290,7 +13462,7 @@ var ExpertCard = ({ expert, Link }) => {
|
|
|
13290
13462
|
/* @__PURE__ */ jsx43("div", {
|
|
13291
13463
|
className: "flex-1"
|
|
13292
13464
|
}),
|
|
13293
|
-
/* @__PURE__ */
|
|
13465
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
13294
13466
|
className: "gap-3 flex flex-row flex-wrap",
|
|
13295
13467
|
children: [
|
|
13296
13468
|
expert.website ? /* @__PURE__ */ jsx43("a", {
|
|
@@ -13346,14 +13518,14 @@ var ExpertsPageContent = ({ Link }) => {
|
|
|
13346
13518
|
}, []);
|
|
13347
13519
|
return /* @__PURE__ */ jsx43("div", {
|
|
13348
13520
|
className: "relative bg-[var(--background)]",
|
|
13349
|
-
children: /* @__PURE__ */
|
|
13521
|
+
children: /* @__PURE__ */ jsxs6("div", {
|
|
13350
13522
|
style: wrapperStyle,
|
|
13351
13523
|
children: [
|
|
13352
13524
|
/* @__PURE__ */ jsx43("h1", {
|
|
13353
13525
|
className: "experts-pagetitle",
|
|
13354
13526
|
children: "Find a Remotion Expert"
|
|
13355
13527
|
}),
|
|
13356
|
-
/* @__PURE__ */
|
|
13528
|
+
/* @__PURE__ */ jsxs6("p", {
|
|
13357
13529
|
className: "experts-tagline",
|
|
13358
13530
|
children: [
|
|
13359
13531
|
"Get help by booking a call or hiring these freelancers to work on your Remotion project.",
|
|
@@ -13371,16 +13543,16 @@ var ExpertsPageContent = ({ Link }) => {
|
|
|
13371
13543
|
})
|
|
13372
13544
|
})
|
|
13373
13545
|
}),
|
|
13374
|
-
/* @__PURE__ */
|
|
13546
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
13375
13547
|
style: infoCard,
|
|
13376
13548
|
children: [
|
|
13377
|
-
/* @__PURE__ */
|
|
13549
|
+
/* @__PURE__ */ jsxs6("svg", {
|
|
13378
13550
|
viewBox: "0 0 661 512",
|
|
13379
13551
|
fill: "none",
|
|
13380
13552
|
xmlns: "http://www.w3.org/2000/svg",
|
|
13381
13553
|
style: cardIcon,
|
|
13382
13554
|
children: [
|
|
13383
|
-
/* @__PURE__ */
|
|
13555
|
+
/* @__PURE__ */ jsxs6("g", {
|
|
13384
13556
|
clipPath: "url(#clip0_1_2)",
|
|
13385
13557
|
children: [
|
|
13386
13558
|
/* @__PURE__ */ jsx43("path", {
|
|
@@ -13405,7 +13577,7 @@ var ExpertsPageContent = ({ Link }) => {
|
|
|
13405
13577
|
})
|
|
13406
13578
|
]
|
|
13407
13579
|
}),
|
|
13408
|
-
/* @__PURE__ */
|
|
13580
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
13409
13581
|
style: { flex: 1 },
|
|
13410
13582
|
children: [
|
|
13411
13583
|
"Remotion Experts are independent freelancers with proven Remotion expertise and portfolios. However,",
|