@remotion/promo-pages 4.0.490 → 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 +729 -405
- package/dist/components/Homepage.js +8 -4
- package/dist/components/homepage/CanvasSectionTitle.d.ts +4 -0
- package/dist/components/homepage/CanvasSectionTitle.js +14 -0
- package/dist/components/homepage/CommunityStatsItems.js +1 -1
- package/dist/components/homepage/Demo/Card.d.ts +3 -3
- package/dist/components/homepage/Demo/DisplayedEmoji.js +9 -3
- package/dist/components/homepage/EditorStarterSection.d.ts +3 -0
- package/dist/components/homepage/EditorStarterSection.js +8 -0
- package/dist/components/homepage/Pricing.d.ts +3 -0
- package/dist/components/homepage/Pricing.js +8 -2
- package/dist/components/homepage/WriteInReact.js +1 -2
- package/dist/design.js +262 -147
- package/dist/experts.js +247 -132
- package/dist/homepage/Pricing.js +279 -164
- package/dist/prompts/PromptsGallery.js +259 -144
- package/dist/prompts/PromptsShow.js +265 -150
- package/dist/prompts/PromptsSubmit.js +251 -136
- package/dist/team.js +236 -121
- package/dist/template-modal-content.js +279 -164
- package/dist/templates.js +279 -162
- package/package.json +13 -13
package/dist/homepage/Pricing.js
CHANGED
|
@@ -38,7 +38,7 @@ import { useMemo as useMemo52 } from "react";
|
|
|
38
38
|
// ../design/dist/esm/index.mjs
|
|
39
39
|
import * as React23 from "react";
|
|
40
40
|
import * as React3 from "react";
|
|
41
|
-
import { Fragment as
|
|
41
|
+
import { Fragment as Fragment22, jsx as jsx43 } from "react/jsx-runtime";
|
|
42
42
|
import React52, { useCallback as useCallback27, useRef as useRef210, useState as useState22 } from "react";
|
|
43
43
|
|
|
44
44
|
// ../../node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
|
|
@@ -4386,13 +4386,12 @@ import { jsx as jsx34 } from "react/jsx-runtime";
|
|
|
4386
4386
|
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
4387
4387
|
import React39, { useMemo as useMemo37 } from "react";
|
|
4388
4388
|
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
4389
|
-
import {
|
|
4390
|
-
Children,
|
|
4389
|
+
import React41, {
|
|
4391
4390
|
forwardRef as forwardRef14,
|
|
4392
4391
|
useMemo as useMemo38
|
|
4393
4392
|
} from "react";
|
|
4394
4393
|
import React40 from "react";
|
|
4395
|
-
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
4394
|
+
import { jsx as jsx37, jsxs as jsxs3, Fragment } from "react/jsx-runtime";
|
|
4396
4395
|
import React42 from "react";
|
|
4397
4396
|
import { forwardRef as forwardRef16, useCallback as useCallback25, useContext as useContext39 } from "react";
|
|
4398
4397
|
import {
|
|
@@ -5568,7 +5567,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
|
|
|
5568
5567
|
var addSequenceStackTraces = (component) => {
|
|
5569
5568
|
componentsToAddStacksTo.push(component);
|
|
5570
5569
|
};
|
|
5571
|
-
var VERSION = "4.0.
|
|
5570
|
+
var VERSION = "4.0.491";
|
|
5572
5571
|
var checkMultipleRemotionVersions = () => {
|
|
5573
5572
|
if (typeof globalThis === "undefined") {
|
|
5574
5573
|
return;
|
|
@@ -6181,7 +6180,7 @@ var SequenceManagerRefContext = React11.createContext({
|
|
|
6181
6180
|
current: []
|
|
6182
6181
|
});
|
|
6183
6182
|
var makeSequencePropsSubscriptionKey = (key) => {
|
|
6184
|
-
return `${key.nodePath.join(".")}
|
|
6183
|
+
return `${key.absolutePath}\x00${key.nodePath.join(".")}\x00${key.sequenceKeys.join(".")}\x00${key.effectKeys.map((keys) => keys.join(".")).join(".")}`;
|
|
6185
6184
|
};
|
|
6186
6185
|
var VisualModePropStatusesContext = React11.createContext({
|
|
6187
6186
|
propStatuses: {}
|
|
@@ -8794,6 +8793,7 @@ var RegularSequenceRefForwardingFunction = ({
|
|
|
8794
8793
|
src: isMedia.data.src,
|
|
8795
8794
|
getStack: () => stackRef.current,
|
|
8796
8795
|
startMediaFrom: startMediaFrom ?? isMedia.data.startMediaFrom,
|
|
8796
|
+
mediaFrameAtSequenceZero,
|
|
8797
8797
|
volume: isMedia.data.volumes,
|
|
8798
8798
|
refForOutline: refForOutline ?? null,
|
|
8799
8799
|
isInsideSeries,
|
|
@@ -8857,6 +8857,7 @@ var RegularSequenceRefForwardingFunction = ({
|
|
|
8857
8857
|
isInsideSeries,
|
|
8858
8858
|
registeredFrozenFrame,
|
|
8859
8859
|
startMediaFrom,
|
|
8860
|
+
mediaFrameAtSequenceZero,
|
|
8860
8861
|
frozenMediaFrame
|
|
8861
8862
|
]);
|
|
8862
8863
|
const endThreshold = Math.ceil(cumulatedFrom + from + durationInFrames - 1);
|
|
@@ -10807,7 +10808,9 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
|
|
|
10807
10808
|
return;
|
|
10808
10809
|
}
|
|
10809
10810
|
if (data === undefined) {
|
|
10810
|
-
current.src
|
|
10811
|
+
if (current.src !== EMPTY_AUDIO) {
|
|
10812
|
+
current.src = EMPTY_AUDIO;
|
|
10813
|
+
}
|
|
10811
10814
|
return;
|
|
10812
10815
|
}
|
|
10813
10816
|
if (!data) {
|
|
@@ -10876,7 +10879,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
|
|
|
10876
10879
|
if (prevA.id === id) {
|
|
10877
10880
|
const isTheSame = compareProps(aud, prevA.props) && prevA.premounting === premounting && prevA.postmounting === postmounting;
|
|
10878
10881
|
if (isTheSame) {
|
|
10879
|
-
return prevA;
|
|
10882
|
+
return prevA.audioMounted === audioMounted ? prevA : { ...prevA, audioMounted };
|
|
10880
10883
|
}
|
|
10881
10884
|
changed = true;
|
|
10882
10885
|
return {
|
|
@@ -10888,7 +10891,7 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
|
|
|
10888
10891
|
audioMounted
|
|
10889
10892
|
};
|
|
10890
10893
|
}
|
|
10891
|
-
return prevA;
|
|
10894
|
+
return prevA.audioMounted === audioMounted ? prevA : { ...prevA, audioMounted };
|
|
10892
10895
|
});
|
|
10893
10896
|
if (changed) {
|
|
10894
10897
|
rerenderAudios();
|
|
@@ -10927,16 +10930,19 @@ var SharedAudioTagsContextProvider = ({ children, numberOfAudioTags }) => {
|
|
|
10927
10930
|
unregisterAudio,
|
|
10928
10931
|
updateAudio
|
|
10929
10932
|
]);
|
|
10933
|
+
const sharedAudioTagElements = useMemo21(() => {
|
|
10934
|
+
return refs.map(({ id, ref }) => {
|
|
10935
|
+
return /* @__PURE__ */ jsx19("audio", {
|
|
10936
|
+
ref,
|
|
10937
|
+
preload: "metadata",
|
|
10938
|
+
src: EMPTY_AUDIO
|
|
10939
|
+
}, id);
|
|
10940
|
+
});
|
|
10941
|
+
}, [refs]);
|
|
10930
10942
|
return /* @__PURE__ */ jsxs2(SharedAudioTagsContext.Provider, {
|
|
10931
10943
|
value: audioTagsValue,
|
|
10932
10944
|
children: [
|
|
10933
|
-
|
|
10934
|
-
return /* @__PURE__ */ jsx19("audio", {
|
|
10935
|
-
ref,
|
|
10936
|
-
preload: "metadata",
|
|
10937
|
-
src: EMPTY_AUDIO
|
|
10938
|
-
}, id);
|
|
10939
|
-
}),
|
|
10945
|
+
sharedAudioTagElements,
|
|
10940
10946
|
children
|
|
10941
10947
|
]
|
|
10942
10948
|
});
|
|
@@ -11397,6 +11403,7 @@ var useMediaInTimeline = ({
|
|
|
11397
11403
|
showInTimeline: true,
|
|
11398
11404
|
nonce: nonce.get(),
|
|
11399
11405
|
startMediaFrom: 0 - startsAt,
|
|
11406
|
+
mediaFrameAtSequenceZero: null,
|
|
11400
11407
|
doesVolumeChange,
|
|
11401
11408
|
loopDisplay,
|
|
11402
11409
|
playbackRate,
|
|
@@ -13030,16 +13037,16 @@ var isMissingPaintRecordError = (error2) => {
|
|
|
13030
13037
|
return error2 instanceof DOMException && error2.name === "InvalidStateError";
|
|
13031
13038
|
};
|
|
13032
13039
|
var missingPaintRecordMessage = "HtmlInCanvas: Expected the element to be inside the viewport during rendering, but Chrome had no cached paint record for it.";
|
|
13033
|
-
var
|
|
13034
|
-
|
|
13040
|
+
var resizePaintTarget = ({
|
|
13041
|
+
target,
|
|
13035
13042
|
width,
|
|
13036
13043
|
height
|
|
13037
13044
|
}) => {
|
|
13038
|
-
if (
|
|
13039
|
-
|
|
13045
|
+
if (target.width !== width) {
|
|
13046
|
+
target.width = width;
|
|
13040
13047
|
}
|
|
13041
|
-
if (
|
|
13042
|
-
|
|
13048
|
+
if (target.height !== height) {
|
|
13049
|
+
target.height = height;
|
|
13043
13050
|
}
|
|
13044
13051
|
};
|
|
13045
13052
|
var defaultOnPaint = ({
|
|
@@ -13055,7 +13062,7 @@ var defaultOnPaint = ({
|
|
|
13055
13062
|
const transform = ctx.drawElementImage(elementImage, 0, 0);
|
|
13056
13063
|
element.style.transform = transform.toString();
|
|
13057
13064
|
};
|
|
13058
|
-
var HtmlInCanvasAncestorContext = createContext23(
|
|
13065
|
+
var HtmlInCanvasAncestorContext = createContext23(null);
|
|
13059
13066
|
var HtmlInCanvasContent = forwardRef9(({
|
|
13060
13067
|
width,
|
|
13061
13068
|
height,
|
|
@@ -13067,20 +13074,22 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
13067
13074
|
controls,
|
|
13068
13075
|
style
|
|
13069
13076
|
}, ref) => {
|
|
13070
|
-
const
|
|
13077
|
+
const ancestor = useContext31(HtmlInCanvasAncestorContext);
|
|
13071
13078
|
assertHtmlInCanvasDimensions(width, height);
|
|
13072
13079
|
const resolvedPixelDensity = resolveHtmlInCanvasPixelDensity(pixelDensity);
|
|
13073
13080
|
const canvasWidth = Math.ceil(width * resolvedPixelDensity);
|
|
13074
13081
|
const canvasHeight = Math.ceil(height * resolvedPixelDensity);
|
|
13075
13082
|
const { continueRender: continueRender2, cancelRender: cancelRender2 } = useDelayRender();
|
|
13076
|
-
const { isRendering } = useRemotionEnvironment();
|
|
13083
|
+
const { isClientSideRendering, isRendering } = useRemotionEnvironment();
|
|
13084
|
+
const canRetryMissingPaintRecord = !isRendering || isClientSideRendering;
|
|
13085
|
+
const usesDirectLayoutCanvas = onPaint === undefined && onInit === undefined;
|
|
13077
13086
|
if (!isHtmlInCanvasSupported()) {
|
|
13078
13087
|
cancelRender2(new Error(HTML_IN_CANVAS_UNSUPPORTED_MESSAGE));
|
|
13079
13088
|
}
|
|
13080
13089
|
const canvas2dRef = useRef22(null);
|
|
13081
|
-
const
|
|
13090
|
+
const paintTargetRef = useRef22(null);
|
|
13082
13091
|
const divRef = useRef22(null);
|
|
13083
|
-
const canvasSizeKey = `${width}x${height}@${resolvedPixelDensity}`;
|
|
13092
|
+
const canvasSizeKey = `${width}x${height}@${resolvedPixelDensity}-${usesDirectLayoutCanvas ? "direct" : "offscreen"}`;
|
|
13084
13093
|
const setLayoutCanvasRef = useCallback16((node) => {
|
|
13085
13094
|
canvas2dRef.current = node;
|
|
13086
13095
|
if (typeof ref === "function") {
|
|
@@ -13103,17 +13112,19 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
13103
13112
|
const initializedRef = useRef22(false);
|
|
13104
13113
|
const onInitCleanupRef = useRef22(null);
|
|
13105
13114
|
const unmountedRef = useRef22(false);
|
|
13115
|
+
const ancestorRef = useRef22(ancestor);
|
|
13116
|
+
ancestorRef.current = ancestor;
|
|
13106
13117
|
const onPaintCb = useCallback16(async () => {
|
|
13107
13118
|
const element = divRef.current;
|
|
13108
13119
|
if (!element) {
|
|
13109
13120
|
throw new Error("Canvas or scene element not found");
|
|
13110
13121
|
}
|
|
13111
|
-
const
|
|
13112
|
-
if (!
|
|
13113
|
-
throw new Error("HtmlInCanvas:
|
|
13122
|
+
const paintTarget = paintTargetRef.current;
|
|
13123
|
+
if (!paintTarget) {
|
|
13124
|
+
throw new Error("HtmlInCanvas: paint target is not ready because the canvas is remounting");
|
|
13114
13125
|
}
|
|
13115
|
-
|
|
13116
|
-
|
|
13126
|
+
resizePaintTarget({
|
|
13127
|
+
target: paintTarget,
|
|
13117
13128
|
width: canvasWidth,
|
|
13118
13129
|
height: canvasHeight
|
|
13119
13130
|
});
|
|
@@ -13124,22 +13135,30 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
13124
13135
|
}
|
|
13125
13136
|
const handle = delayRender("onPaint");
|
|
13126
13137
|
if (!initializedRef.current) {
|
|
13127
|
-
|
|
13128
|
-
|
|
13129
|
-
|
|
13130
|
-
}
|
|
13131
|
-
|
|
13132
|
-
|
|
13133
|
-
|
|
13138
|
+
const currentOnInit = onInitRef.current;
|
|
13139
|
+
if (!currentOnInit) {
|
|
13140
|
+
initializedRef.current = true;
|
|
13141
|
+
} else {
|
|
13142
|
+
let initImage;
|
|
13143
|
+
try {
|
|
13144
|
+
initImage = placeholderCanvas.captureElementImage(element);
|
|
13145
|
+
} catch (error2) {
|
|
13146
|
+
if (isMissingPaintRecordError(error2) && canRetryMissingPaintRecord) {
|
|
13147
|
+
continueRender2(handle);
|
|
13148
|
+
return;
|
|
13149
|
+
}
|
|
13150
|
+
if (isMissingPaintRecordError(error2)) {
|
|
13151
|
+
throw new Error(missingPaintRecordMessage);
|
|
13152
|
+
}
|
|
13134
13153
|
throw error2;
|
|
13135
13154
|
}
|
|
13136
|
-
}
|
|
13137
|
-
if (initImage) {
|
|
13138
13155
|
initializedRef.current = true;
|
|
13139
|
-
|
|
13140
|
-
|
|
13156
|
+
try {
|
|
13157
|
+
if (paintTarget instanceof HTMLCanvasElement) {
|
|
13158
|
+
throw new Error("HtmlInCanvas: onInit requires an OffscreenCanvas paint target");
|
|
13159
|
+
}
|
|
13141
13160
|
const cleanup = await currentOnInit({
|
|
13142
|
-
canvas:
|
|
13161
|
+
canvas: paintTarget,
|
|
13143
13162
|
element,
|
|
13144
13163
|
elementImage: initImage,
|
|
13145
13164
|
pixelDensity: resolvedPixelDensity
|
|
@@ -13152,15 +13171,16 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
13152
13171
|
} else {
|
|
13153
13172
|
onInitCleanupRef.current = cleanup;
|
|
13154
13173
|
}
|
|
13174
|
+
} finally {
|
|
13175
|
+
initImage.close();
|
|
13155
13176
|
}
|
|
13156
13177
|
}
|
|
13157
13178
|
}
|
|
13158
|
-
const handler = onPaintRef.current ?? defaultOnPaint;
|
|
13159
13179
|
let elImage;
|
|
13160
13180
|
try {
|
|
13161
13181
|
elImage = placeholderCanvas.captureElementImage(element);
|
|
13162
13182
|
} catch (error2) {
|
|
13163
|
-
if (isMissingPaintRecordError(error2) &&
|
|
13183
|
+
if (isMissingPaintRecordError(error2) && canRetryMissingPaintRecord) {
|
|
13164
13184
|
continueRender2(handle);
|
|
13165
13185
|
return;
|
|
13166
13186
|
}
|
|
@@ -13169,20 +13189,41 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
13169
13189
|
}
|
|
13170
13190
|
throw error2;
|
|
13171
13191
|
}
|
|
13172
|
-
|
|
13173
|
-
|
|
13174
|
-
|
|
13175
|
-
|
|
13176
|
-
|
|
13177
|
-
|
|
13178
|
-
|
|
13179
|
-
|
|
13180
|
-
|
|
13181
|
-
|
|
13182
|
-
|
|
13183
|
-
|
|
13184
|
-
|
|
13185
|
-
|
|
13192
|
+
try {
|
|
13193
|
+
const currentOnPaint = onPaintRef.current;
|
|
13194
|
+
if (currentOnPaint) {
|
|
13195
|
+
if (paintTarget instanceof HTMLCanvasElement) {
|
|
13196
|
+
throw new Error("HtmlInCanvas: onPaint requires an OffscreenCanvas paint target");
|
|
13197
|
+
}
|
|
13198
|
+
const paintResult = currentOnPaint({
|
|
13199
|
+
canvas: paintTarget,
|
|
13200
|
+
element,
|
|
13201
|
+
elementImage: elImage,
|
|
13202
|
+
pixelDensity: resolvedPixelDensity
|
|
13203
|
+
});
|
|
13204
|
+
if (paintResult) {
|
|
13205
|
+
await paintResult;
|
|
13206
|
+
}
|
|
13207
|
+
} else {
|
|
13208
|
+
defaultOnPaint({
|
|
13209
|
+
canvas: paintTarget,
|
|
13210
|
+
element,
|
|
13211
|
+
elementImage: elImage,
|
|
13212
|
+
pixelDensity: resolvedPixelDensity
|
|
13213
|
+
});
|
|
13214
|
+
}
|
|
13215
|
+
await runEffectChain({
|
|
13216
|
+
state: chainState.get(canvasWidth, canvasHeight),
|
|
13217
|
+
source: paintTarget,
|
|
13218
|
+
effects: effectsRef.current,
|
|
13219
|
+
output: paintTarget,
|
|
13220
|
+
width: canvasWidth,
|
|
13221
|
+
height: canvasHeight
|
|
13222
|
+
});
|
|
13223
|
+
} finally {
|
|
13224
|
+
elImage.close();
|
|
13225
|
+
}
|
|
13226
|
+
ancestorRef.current?.requestParentPaint();
|
|
13186
13227
|
continueRender2(handle);
|
|
13187
13228
|
} catch (error2) {
|
|
13188
13229
|
cancelRender2(error2);
|
|
@@ -13194,7 +13235,7 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
13194
13235
|
continueRender2,
|
|
13195
13236
|
cancelRender2,
|
|
13196
13237
|
resolvedPixelDensity,
|
|
13197
|
-
|
|
13238
|
+
canRetryMissingPaintRecord
|
|
13198
13239
|
]);
|
|
13199
13240
|
useLayoutEffect9(() => {
|
|
13200
13241
|
const placeholder = canvas2dRef.current;
|
|
@@ -13202,10 +13243,10 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
13202
13243
|
throw new Error("Canvas not found");
|
|
13203
13244
|
}
|
|
13204
13245
|
placeholder.layoutSubtree = true;
|
|
13205
|
-
const
|
|
13206
|
-
|
|
13207
|
-
|
|
13208
|
-
|
|
13246
|
+
const paintTarget = usesDirectLayoutCanvas ? placeholder : placeholder.transferControlToOffscreen();
|
|
13247
|
+
paintTargetRef.current = paintTarget;
|
|
13248
|
+
resizePaintTarget({
|
|
13249
|
+
target: paintTarget,
|
|
13209
13250
|
width: canvasWidth,
|
|
13210
13251
|
height: canvasHeight
|
|
13211
13252
|
});
|
|
@@ -13214,13 +13255,19 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
13214
13255
|
placeholder.addEventListener("paint", onPaintCb);
|
|
13215
13256
|
return () => {
|
|
13216
13257
|
placeholder.removeEventListener("paint", onPaintCb);
|
|
13217
|
-
|
|
13258
|
+
paintTargetRef.current = null;
|
|
13218
13259
|
initializedRef.current = false;
|
|
13219
13260
|
unmountedRef.current = true;
|
|
13220
13261
|
onInitCleanupRef.current?.();
|
|
13221
13262
|
onInitCleanupRef.current = null;
|
|
13222
13263
|
};
|
|
13223
|
-
}, [
|
|
13264
|
+
}, [
|
|
13265
|
+
onPaintCb,
|
|
13266
|
+
cancelRender2,
|
|
13267
|
+
canvasWidth,
|
|
13268
|
+
canvasHeight,
|
|
13269
|
+
usesDirectLayoutCanvas
|
|
13270
|
+
]);
|
|
13224
13271
|
const onPaintChangedRef = useRef22(false);
|
|
13225
13272
|
useLayoutEffect9(() => {
|
|
13226
13273
|
if (!onPaintChangedRef.current) {
|
|
@@ -13259,11 +13306,15 @@ var HtmlInCanvasContent = forwardRef9(({
|
|
|
13259
13306
|
...style ?? {}
|
|
13260
13307
|
};
|
|
13261
13308
|
}, [height, style, width]);
|
|
13262
|
-
|
|
13263
|
-
|
|
13264
|
-
|
|
13309
|
+
const ancestorValue = useMemo30(() => {
|
|
13310
|
+
return {
|
|
13311
|
+
requestParentPaint: () => {
|
|
13312
|
+
canvas2dRef.current?.requestPaint?.();
|
|
13313
|
+
}
|
|
13314
|
+
};
|
|
13315
|
+
}, []);
|
|
13265
13316
|
return /* @__PURE__ */ jsx25(HtmlInCanvasAncestorContext.Provider, {
|
|
13266
|
-
value:
|
|
13317
|
+
value: ancestorValue,
|
|
13267
13318
|
children: /* @__PURE__ */ jsx25("canvas", {
|
|
13268
13319
|
ref: setLayoutCanvasRef,
|
|
13269
13320
|
width: canvasWidth,
|
|
@@ -15633,66 +15684,130 @@ var flattenChildren = (children) => {
|
|
|
15633
15684
|
return flatChildren;
|
|
15634
15685
|
}, []);
|
|
15635
15686
|
};
|
|
15636
|
-
var
|
|
15687
|
+
var seriesSequenceSchema = {
|
|
15688
|
+
durationInFrames: Interactive.baseSchema.durationInFrames,
|
|
15689
|
+
name: Interactive.sequenceSchema.name,
|
|
15690
|
+
hidden: Interactive.sequenceSchema.hidden,
|
|
15691
|
+
showInTimeline: Interactive.sequenceSchema.showInTimeline,
|
|
15692
|
+
freeze: Interactive.baseSchema.freeze,
|
|
15693
|
+
layout: Interactive.sequenceSchema.layout
|
|
15694
|
+
};
|
|
15695
|
+
var SeriesSequenceInner = forwardRef14(({
|
|
15696
|
+
offset = 0,
|
|
15697
|
+
className = "",
|
|
15698
|
+
stack = null,
|
|
15699
|
+
_remotionInternalRender = null,
|
|
15700
|
+
...props2
|
|
15701
|
+
}, ref) => {
|
|
15637
15702
|
useRequireToBeInsideSeries();
|
|
15703
|
+
if (_remotionInternalRender) {
|
|
15704
|
+
return _remotionInternalRender({ ...props2, offset, className: className || undefined, stack }, ref);
|
|
15705
|
+
}
|
|
15638
15706
|
return /* @__PURE__ */ jsx37(IsNotInsideSeriesProvider, {
|
|
15639
|
-
children
|
|
15707
|
+
children: props2.children
|
|
15640
15708
|
});
|
|
15641
|
-
};
|
|
15642
|
-
var SeriesSequence =
|
|
15709
|
+
});
|
|
15710
|
+
var SeriesSequence = Interactive.withSchema({
|
|
15711
|
+
Component: SeriesSequenceInner,
|
|
15712
|
+
componentName: "<Series.Sequence>",
|
|
15713
|
+
componentIdentity: "dev.remotion.remotion.Series.Sequence",
|
|
15714
|
+
schema: seriesSequenceSchema,
|
|
15715
|
+
supportsEffects: false
|
|
15716
|
+
});
|
|
15643
15717
|
var SequenceWithoutSchemaWithRef = SequenceWithoutSchema;
|
|
15718
|
+
var validateSeriesSequenceProps = ({
|
|
15719
|
+
durationInFrames,
|
|
15720
|
+
offset: offsetProp,
|
|
15721
|
+
index,
|
|
15722
|
+
childrenLength
|
|
15723
|
+
}) => {
|
|
15724
|
+
const debugInfo = `index = ${index}, duration = ${durationInFrames}`;
|
|
15725
|
+
if (index !== childrenLength - 1 || durationInFrames !== Infinity) {
|
|
15726
|
+
validateDurationInFrames(durationInFrames, {
|
|
15727
|
+
component: `of a <Series.Sequence /> component`,
|
|
15728
|
+
allowFloats: true
|
|
15729
|
+
});
|
|
15730
|
+
}
|
|
15731
|
+
const offset = offsetProp ?? 0;
|
|
15732
|
+
if (Number.isNaN(offset)) {
|
|
15733
|
+
throw new TypeError(`The "offset" property of a <Series.Sequence /> must not be NaN, but got NaN (${debugInfo}).`);
|
|
15734
|
+
}
|
|
15735
|
+
if (!Number.isFinite(offset)) {
|
|
15736
|
+
throw new TypeError(`The "offset" property of a <Series.Sequence /> must be finite, but got ${offset} (${debugInfo}).`);
|
|
15737
|
+
}
|
|
15738
|
+
if (offset % 1 !== 0) {
|
|
15739
|
+
throw new TypeError(`The "offset" property of a <Series.Sequence /> must be finite, but got ${offset} (${debugInfo}).`);
|
|
15740
|
+
}
|
|
15741
|
+
return offset;
|
|
15742
|
+
};
|
|
15644
15743
|
var SeriesInner = (props2) => {
|
|
15645
15744
|
const childrenValue = useMemo38(() => {
|
|
15646
|
-
let startFrame = 0;
|
|
15647
15745
|
const flattenedChildren = flattenChildren(props2.children);
|
|
15648
|
-
|
|
15746
|
+
const renderChildren = (i, startFrame) => {
|
|
15747
|
+
if (i === flattenedChildren.length) {
|
|
15748
|
+
return null;
|
|
15749
|
+
}
|
|
15750
|
+
const child = flattenedChildren[i];
|
|
15649
15751
|
const castedChild = child;
|
|
15650
15752
|
if (typeof castedChild === "string") {
|
|
15651
15753
|
if (castedChild.trim() === "") {
|
|
15652
|
-
return
|
|
15754
|
+
return renderChildren(i + 1, startFrame);
|
|
15653
15755
|
}
|
|
15654
15756
|
throw new TypeError(`The <Series /> component only accepts a list of <Series.Sequence /> components as its children, but you passed a string "${castedChild}"`);
|
|
15655
15757
|
}
|
|
15656
15758
|
if (castedChild.type !== SeriesSequence) {
|
|
15657
15759
|
throw new TypeError(`The <Series /> component only accepts a list of <Series.Sequence /> components as its children, but got ${castedChild} instead`);
|
|
15658
15760
|
}
|
|
15659
|
-
const
|
|
15660
|
-
|
|
15661
|
-
|
|
15662
|
-
|
|
15663
|
-
|
|
15664
|
-
|
|
15665
|
-
name,
|
|
15666
|
-
...passedProps
|
|
15667
|
-
} = castedChild.props;
|
|
15668
|
-
if (i !== flattenedChildren.length - 1 || durationInFramesProp !== Infinity) {
|
|
15669
|
-
validateDurationInFrames(durationInFramesProp, {
|
|
15670
|
-
component: `of a <Series.Sequence /> component`,
|
|
15671
|
-
allowFloats: true
|
|
15672
|
-
});
|
|
15673
|
-
}
|
|
15674
|
-
const offset = castedChild.props.offset ?? 0;
|
|
15675
|
-
if (Number.isNaN(offset)) {
|
|
15676
|
-
throw new TypeError(`The "offset" property of a <Series.Sequence /> must not be NaN, but got NaN (${debugInfo}).`);
|
|
15677
|
-
}
|
|
15678
|
-
if (!Number.isFinite(offset)) {
|
|
15679
|
-
throw new TypeError(`The "offset" property of a <Series.Sequence /> must be finite, but got ${offset} (${debugInfo}).`);
|
|
15680
|
-
}
|
|
15681
|
-
if (offset % 1 !== 0) {
|
|
15682
|
-
throw new TypeError(`The "offset" property of a <Series.Sequence /> must be finite, but got ${offset} (${debugInfo}).`);
|
|
15683
|
-
}
|
|
15684
|
-
const currentStartFrame = startFrame + offset;
|
|
15685
|
-
startFrame += durationInFramesProp + offset;
|
|
15686
|
-
return /* @__PURE__ */ jsx37(SequenceWithoutSchemaWithRef, {
|
|
15687
|
-
ref: castedChild.ref,
|
|
15688
|
-
name: name || "<Series.Sequence>",
|
|
15689
|
-
_remotionInternalDocumentationLink: name ? undefined : "https://www.remotion.dev/docs/series",
|
|
15690
|
-
from: currentStartFrame,
|
|
15691
|
-
durationInFrames: durationInFramesProp,
|
|
15692
|
-
...passedProps,
|
|
15693
|
-
children: child
|
|
15761
|
+
const castedElement = castedChild;
|
|
15762
|
+
validateSeriesSequenceProps({
|
|
15763
|
+
durationInFrames: castedElement.props.durationInFrames,
|
|
15764
|
+
offset: castedElement.props.offset,
|
|
15765
|
+
index: i,
|
|
15766
|
+
childrenLength: flattenedChildren.length
|
|
15694
15767
|
});
|
|
15695
|
-
|
|
15768
|
+
return React41.cloneElement(castedElement, {
|
|
15769
|
+
_remotionInternalRender: (resolvedProps, ref) => {
|
|
15770
|
+
const durationInFramesProp = resolvedProps.durationInFrames;
|
|
15771
|
+
const {
|
|
15772
|
+
durationInFrames: _durationInFrames,
|
|
15773
|
+
children: sequenceChildren,
|
|
15774
|
+
offset: offsetProp,
|
|
15775
|
+
controls,
|
|
15776
|
+
stack,
|
|
15777
|
+
from: _from,
|
|
15778
|
+
name,
|
|
15779
|
+
...passedProps
|
|
15780
|
+
} = resolvedProps;
|
|
15781
|
+
const offset = validateSeriesSequenceProps({
|
|
15782
|
+
durationInFrames: durationInFramesProp,
|
|
15783
|
+
offset: offsetProp,
|
|
15784
|
+
index: i,
|
|
15785
|
+
childrenLength: flattenedChildren.length
|
|
15786
|
+
});
|
|
15787
|
+
const currentStartFrame = startFrame + offset;
|
|
15788
|
+
const nextStartFrame = startFrame + durationInFramesProp + offset;
|
|
15789
|
+
return /* @__PURE__ */ jsxs3(Fragment, {
|
|
15790
|
+
children: [
|
|
15791
|
+
/* @__PURE__ */ jsx37(SequenceWithoutSchemaWithRef, {
|
|
15792
|
+
ref,
|
|
15793
|
+
name: name || "<Series.Sequence>",
|
|
15794
|
+
_remotionInternalDocumentationLink: name ? undefined : "https://www.remotion.dev/docs/series",
|
|
15795
|
+
_remotionInternalStack: stack ?? undefined,
|
|
15796
|
+
controls: controls ?? undefined,
|
|
15797
|
+
from: currentStartFrame,
|
|
15798
|
+
durationInFrames: durationInFramesProp,
|
|
15799
|
+
...passedProps,
|
|
15800
|
+
children: /* @__PURE__ */ jsx37(IsNotInsideSeriesProvider, {
|
|
15801
|
+
children: sequenceChildren
|
|
15802
|
+
})
|
|
15803
|
+
}),
|
|
15804
|
+
renderChildren(i + 1, nextStartFrame)
|
|
15805
|
+
]
|
|
15806
|
+
});
|
|
15807
|
+
}
|
|
15808
|
+
});
|
|
15809
|
+
};
|
|
15810
|
+
return renderChildren(0, 0);
|
|
15696
15811
|
}, [props2.children]);
|
|
15697
15812
|
return /* @__PURE__ */ jsx37(IsInsideSeriesContainer, {
|
|
15698
15813
|
children: /* @__PURE__ */ jsx37(Sequence, {
|
|
@@ -16293,7 +16408,7 @@ addSequenceStackTraces(Folder);
|
|
|
16293
16408
|
// ../shapes/dist/esm/index.mjs
|
|
16294
16409
|
import React, { useCallback as useCallback26, useMemo as useMemo40, useRef as useRef29 } from "react";
|
|
16295
16410
|
import { version } from "react-dom";
|
|
16296
|
-
import { jsx as jsx40, jsxs as
|
|
16411
|
+
import { jsx as jsx40, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
16297
16412
|
import { jsx as jsx210 } from "react/jsx-runtime";
|
|
16298
16413
|
import { jsx as jsx310 } from "react/jsx-runtime";
|
|
16299
16414
|
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
@@ -16495,7 +16610,7 @@ var RenderSvg = ({
|
|
|
16495
16610
|
const memoizedEffectDefinitions = Internals.useMemoizedEffectDefinitions(effects);
|
|
16496
16611
|
const videoConfig = Internals.useUnsafeVideoConfig();
|
|
16497
16612
|
const reactSupportsTransformOrigin = doesReactSupportTransformOriginProperty(version);
|
|
16498
|
-
const svg = /* @__PURE__ */
|
|
16613
|
+
const svg = /* @__PURE__ */ jsxs4("svg", {
|
|
16499
16614
|
ref: effects.length === 0 || !videoConfig ? setSvgRef : undefined,
|
|
16500
16615
|
width,
|
|
16501
16616
|
height,
|
|
@@ -16521,7 +16636,7 @@ var RenderSvg = ({
|
|
|
16521
16636
|
}
|
|
16522
16637
|
const prevX = prevInstruction.x;
|
|
16523
16638
|
const prevY = prevInstruction.y;
|
|
16524
|
-
return /* @__PURE__ */
|
|
16639
|
+
return /* @__PURE__ */ jsxs4(React.Fragment, {
|
|
16525
16640
|
children: [
|
|
16526
16641
|
/* @__PURE__ */ jsx40("path", {
|
|
16527
16642
|
d: `M ${prevX} ${prevY} ${i.cp1x} ${i.cp1y}`,
|
|
@@ -19203,7 +19318,7 @@ var extrudeAndTransformElement = (options) => {
|
|
|
19203
19318
|
|
|
19204
19319
|
// ../design/dist/esm/index.mjs
|
|
19205
19320
|
import { jsx as jsx212, Fragment as Fragment3 } from "react/jsx-runtime";
|
|
19206
|
-
import { jsx as jsx312, jsxs as
|
|
19321
|
+
import { jsx as jsx312, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
19207
19322
|
import { useEffect as useEffect22, useMemo as useMemo210, useRef as useRef31 } from "react";
|
|
19208
19323
|
import { jsx as jsx44 } from "react/jsx-runtime";
|
|
19209
19324
|
import { jsx as jsx53, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
@@ -19262,11 +19377,11 @@ import * as React302 from "react";
|
|
|
19262
19377
|
import * as React342 from "react";
|
|
19263
19378
|
import * as React332 from "react";
|
|
19264
19379
|
import * as React322 from "react";
|
|
19265
|
-
import { Fragment as Fragment8, jsx as jsx242, jsxs as
|
|
19380
|
+
import { Fragment as Fragment8, jsx as jsx242, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
19266
19381
|
import { forwardRef as forwardRef142, createElement as createElement7 } from "react";
|
|
19267
19382
|
import { forwardRef as forwardRef132, createElement as createElement6 } from "react";
|
|
19268
19383
|
import * as React372 from "react";
|
|
19269
|
-
import { jsx as jsx252, jsxs as
|
|
19384
|
+
import { jsx as jsx252, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
19270
19385
|
import { jsx as jsx262 } from "react/jsx-runtime";
|
|
19271
19386
|
import * as React49 from "react";
|
|
19272
19387
|
import * as React38 from "react";
|
|
@@ -19274,12 +19389,12 @@ import { jsx as jsx272 } from "react/jsx-runtime";
|
|
|
19274
19389
|
import * as React47 from "react";
|
|
19275
19390
|
import React402 from "react";
|
|
19276
19391
|
import * as React392 from "react";
|
|
19277
|
-
import { Fragment as
|
|
19392
|
+
import { Fragment as Fragment222, jsx as jsx282 } from "react/jsx-runtime";
|
|
19278
19393
|
import { jsx as jsx292 } from "react/jsx-runtime";
|
|
19279
19394
|
import React210 from "react";
|
|
19280
19395
|
import { jsx as jsx2102 } from "react/jsx-runtime";
|
|
19281
19396
|
import * as React422 from "react";
|
|
19282
|
-
import * as
|
|
19397
|
+
import * as React412 from "react";
|
|
19283
19398
|
import * as React43 from "react";
|
|
19284
19399
|
import * as ReactDOM5 from "react-dom";
|
|
19285
19400
|
import { jsx as jsx302 } from "react/jsx-runtime";
|
|
@@ -19389,7 +19504,7 @@ function createSlotClone(ownerName) {
|
|
|
19389
19504
|
var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable");
|
|
19390
19505
|
function createSlottable(ownerName) {
|
|
19391
19506
|
const Slottable2 = ({ children }) => {
|
|
19392
|
-
return /* @__PURE__ */ jsx43(
|
|
19507
|
+
return /* @__PURE__ */ jsx43(Fragment22, { children });
|
|
19393
19508
|
};
|
|
19394
19509
|
Slottable2.displayName = `${ownerName}.Slottable`;
|
|
19395
19510
|
Slottable2.__radixId = SLOTTABLE_IDENTIFIER;
|
|
@@ -19686,7 +19801,7 @@ var Outer = ({
|
|
|
19686
19801
|
description: "rect",
|
|
19687
19802
|
transformations: centerOriented
|
|
19688
19803
|
});
|
|
19689
|
-
return /* @__PURE__ */
|
|
19804
|
+
return /* @__PURE__ */ jsxs6("div", {
|
|
19690
19805
|
className: "relative",
|
|
19691
19806
|
style: { width, height },
|
|
19692
19807
|
children: [
|
|
@@ -23734,7 +23849,7 @@ var Select = (props) => {
|
|
|
23734
23849
|
const isFormControl = trigger ? Boolean(trigger.closest("form")) : true;
|
|
23735
23850
|
const [nativeOptionsSet, setNativeOptionsSet] = React36.useState(/* @__PURE__ */ new Set);
|
|
23736
23851
|
const nativeSelectKey = Array.from(nativeOptionsSet).map((option) => option.props.value).join(";");
|
|
23737
|
-
return /* @__PURE__ */ jsx242(Root22, { ...popperScope, children: /* @__PURE__ */
|
|
23852
|
+
return /* @__PURE__ */ jsx242(Root22, { ...popperScope, children: /* @__PURE__ */ jsxs42(SelectProvider, {
|
|
23738
23853
|
required,
|
|
23739
23854
|
scope: __scopeSelect,
|
|
23740
23855
|
trigger,
|
|
@@ -23766,7 +23881,7 @@ var Select = (props) => {
|
|
|
23766
23881
|
}, []),
|
|
23767
23882
|
children
|
|
23768
23883
|
}) }),
|
|
23769
|
-
isFormControl ? /* @__PURE__ */
|
|
23884
|
+
isFormControl ? /* @__PURE__ */ jsxs42(BubbleSelect, {
|
|
23770
23885
|
"aria-hidden": true,
|
|
23771
23886
|
required,
|
|
23772
23887
|
tabIndex: -1,
|
|
@@ -24274,7 +24389,7 @@ var SelectViewport = React36.forwardRef((props, forwardedRef) => {
|
|
|
24274
24389
|
const viewportContext = useSelectViewportContext(VIEWPORT_NAME, __scopeSelect);
|
|
24275
24390
|
const composedRefs = useComposedRefs2(forwardedRef, contentContext.onViewportChange);
|
|
24276
24391
|
const prevScrollTopRef = React36.useRef(0);
|
|
24277
|
-
return /* @__PURE__ */
|
|
24392
|
+
return /* @__PURE__ */ jsxs42(Fragment8, { children: [
|
|
24278
24393
|
/* @__PURE__ */ jsx242("style", {
|
|
24279
24394
|
dangerouslySetInnerHTML: {
|
|
24280
24395
|
__html: `[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`
|
|
@@ -24431,7 +24546,7 @@ var SelectItemText = React36.forwardRef((props, forwardedRef) => {
|
|
|
24431
24546
|
onNativeOptionAdd(nativeOption);
|
|
24432
24547
|
return () => onNativeOptionRemove(nativeOption);
|
|
24433
24548
|
}, [onNativeOptionAdd, onNativeOptionRemove, nativeOption]);
|
|
24434
|
-
return /* @__PURE__ */
|
|
24549
|
+
return /* @__PURE__ */ jsxs42(Fragment8, { children: [
|
|
24435
24550
|
/* @__PURE__ */ jsx242(Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),
|
|
24436
24551
|
itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren ? ReactDOM4.createPortal(itemTextProps.children, context.valueNode) : null
|
|
24437
24552
|
] });
|
|
@@ -24690,7 +24805,7 @@ var ChevronDown = createLucideIcon("ChevronDown", [
|
|
|
24690
24805
|
var ChevronUp = createLucideIcon("ChevronUp", [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]]);
|
|
24691
24806
|
var Select2 = Root222;
|
|
24692
24807
|
var SelectValue2 = Value;
|
|
24693
|
-
var SelectTrigger2 = React372.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */
|
|
24808
|
+
var SelectTrigger2 = React372.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs5(Trigger, {
|
|
24694
24809
|
ref,
|
|
24695
24810
|
className: cn("flex h-10 w-full items-center justify-between rounded-md border-black border-2 border-b-4 bg-card-bg px-3 py-5 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1 font-brand", className),
|
|
24696
24811
|
...props,
|
|
@@ -24724,7 +24839,7 @@ var SelectScrollDownButton2 = React372.forwardRef(({ className, ...props }, ref)
|
|
|
24724
24839
|
}));
|
|
24725
24840
|
SelectScrollDownButton2.displayName = ScrollDownButton.displayName;
|
|
24726
24841
|
var SelectContent2 = React372.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx252(Portal2, {
|
|
24727
|
-
children: /* @__PURE__ */
|
|
24842
|
+
children: /* @__PURE__ */ jsxs5(Content2, {
|
|
24728
24843
|
ref,
|
|
24729
24844
|
className: cn(" border-2 border-black relative z-50 max-h-96 min-w-32 overflow-hidden rounded-md font-brand bg-card-bg text-text shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className),
|
|
24730
24845
|
position,
|
|
@@ -24746,7 +24861,7 @@ var SelectLabel2 = React372.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
24746
24861
|
...props
|
|
24747
24862
|
}));
|
|
24748
24863
|
SelectLabel2.displayName = Label.displayName;
|
|
24749
|
-
var SelectItem2 = React372.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */
|
|
24864
|
+
var SelectItem2 = React372.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs5(Item, {
|
|
24750
24865
|
ref,
|
|
24751
24866
|
className: cn("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden focus:bg-slate-200 dark:focus:bg-white/10 data-disabled:pointer-events-none data-disabled:opacity-50 font-brand", className),
|
|
24752
24867
|
...props,
|
|
@@ -25288,7 +25403,7 @@ function toSafeIndex(array, index2) {
|
|
|
25288
25403
|
function toSafeInteger(number) {
|
|
25289
25404
|
return number !== number || number === 0 ? 0 : Math.trunc(number);
|
|
25290
25405
|
}
|
|
25291
|
-
var useLayoutEffect222 = globalThis?.document ?
|
|
25406
|
+
var useLayoutEffect222 = globalThis?.document ? React412.useLayoutEffect : () => {};
|
|
25292
25407
|
var useReactId2 = React422[" useId ".trim().toString()] || (() => {
|
|
25293
25408
|
return;
|
|
25294
25409
|
});
|
|
@@ -27224,7 +27339,7 @@ function cn2(...inputs) {
|
|
|
27224
27339
|
}
|
|
27225
27340
|
|
|
27226
27341
|
// src/components/homepage/PricingBulletPoint.tsx
|
|
27227
|
-
import { jsx as jsx45, jsxs as
|
|
27342
|
+
import { jsx as jsx45, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
27228
27343
|
var container3 = {
|
|
27229
27344
|
display: "flex",
|
|
27230
27345
|
flexDirection: "row",
|
|
@@ -27238,7 +27353,7 @@ var greyCircle = {
|
|
|
27238
27353
|
backgroundColor: "var(--footer-border)"
|
|
27239
27354
|
};
|
|
27240
27355
|
var PricingBulletPoint = ({ text, checked, children }) => {
|
|
27241
|
-
const checkmarkSVG = /* @__PURE__ */
|
|
27356
|
+
const checkmarkSVG = /* @__PURE__ */ jsxs7("svg", {
|
|
27242
27357
|
width: "20",
|
|
27243
27358
|
height: "20",
|
|
27244
27359
|
viewBox: "0 0 20 20",
|
|
@@ -27260,13 +27375,13 @@ var PricingBulletPoint = ({ text, checked, children }) => {
|
|
|
27260
27375
|
})
|
|
27261
27376
|
]
|
|
27262
27377
|
});
|
|
27263
|
-
return /* @__PURE__ */
|
|
27378
|
+
return /* @__PURE__ */ jsxs7("div", {
|
|
27264
27379
|
style: container3,
|
|
27265
27380
|
children: [
|
|
27266
27381
|
checked ? checkmarkSVG : /* @__PURE__ */ jsx45("div", {
|
|
27267
27382
|
style: greyCircle
|
|
27268
27383
|
}),
|
|
27269
|
-
/* @__PURE__ */
|
|
27384
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
27270
27385
|
className: "fontbrand text-lg\t",
|
|
27271
27386
|
children: [
|
|
27272
27387
|
text,
|
|
@@ -27278,7 +27393,7 @@ var PricingBulletPoint = ({ text, checked, children }) => {
|
|
|
27278
27393
|
};
|
|
27279
27394
|
|
|
27280
27395
|
// src/components/homepage/FreePricing.tsx
|
|
27281
|
-
import { jsx as jsx46, jsxs as
|
|
27396
|
+
import { jsx as jsx46, jsxs as jsxs8, Fragment as Fragment9 } from "react/jsx-runtime";
|
|
27282
27397
|
var Container = ({
|
|
27283
27398
|
children
|
|
27284
27399
|
}) => {
|
|
@@ -27322,7 +27437,7 @@ var icon = {
|
|
|
27322
27437
|
};
|
|
27323
27438
|
var PricingSlider = ({ value, onChange, min: min2, max: max2, step = 1, "aria-label": ariaLabel }) => {
|
|
27324
27439
|
const percentage = (value - min2) / (max2 - min2) * 100;
|
|
27325
|
-
return /* @__PURE__ */
|
|
27440
|
+
return /* @__PURE__ */ jsxs8(Fragment9, {
|
|
27326
27441
|
children: [
|
|
27327
27442
|
/* @__PURE__ */ jsx46("style", {
|
|
27328
27443
|
children: `
|
|
@@ -27379,7 +27494,7 @@ var textUnitWrapper = {
|
|
|
27379
27494
|
flexDirection: "column"
|
|
27380
27495
|
};
|
|
27381
27496
|
var FreePricing = () => {
|
|
27382
|
-
return /* @__PURE__ */
|
|
27497
|
+
return /* @__PURE__ */ jsxs8(Container, {
|
|
27383
27498
|
children: [
|
|
27384
27499
|
/* @__PURE__ */ jsx46(Audience, {
|
|
27385
27500
|
children: "For individuals and companies of up to 3 people"
|
|
@@ -27410,7 +27525,7 @@ var FreePricing = () => {
|
|
|
27410
27525
|
...textUnitWrapper,
|
|
27411
27526
|
alignItems: "flex-end"
|
|
27412
27527
|
},
|
|
27413
|
-
children: /* @__PURE__ */
|
|
27528
|
+
children: /* @__PURE__ */ jsxs8("a", {
|
|
27414
27529
|
target: "_blank",
|
|
27415
27530
|
href: "https://www.remotion.dev/docs",
|
|
27416
27531
|
className: "font-brand text-brand flex flex-row items-center gap-1 no-underline",
|
|
@@ -27434,7 +27549,7 @@ var FreePricing = () => {
|
|
|
27434
27549
|
});
|
|
27435
27550
|
};
|
|
27436
27551
|
var EnterpriseLicense = () => {
|
|
27437
|
-
return /* @__PURE__ */
|
|
27552
|
+
return /* @__PURE__ */ jsxs8(Container, {
|
|
27438
27553
|
children: [
|
|
27439
27554
|
/* @__PURE__ */ jsx46(Audience, {
|
|
27440
27555
|
children: "For advanced needs"
|
|
@@ -27467,7 +27582,7 @@ var EnterpriseLicense = () => {
|
|
|
27467
27582
|
checked: true
|
|
27468
27583
|
}),
|
|
27469
27584
|
/* @__PURE__ */ jsx46(PricingBulletPoint, {
|
|
27470
|
-
text: /* @__PURE__ */
|
|
27585
|
+
text: /* @__PURE__ */ jsxs8("span", {
|
|
27471
27586
|
children: [
|
|
27472
27587
|
/* @__PURE__ */ jsx46("a", {
|
|
27473
27588
|
href: "https://www.remotion.dev/editor-starter",
|
|
@@ -27485,7 +27600,7 @@ var EnterpriseLicense = () => {
|
|
|
27485
27600
|
}),
|
|
27486
27601
|
/* @__PURE__ */ jsx46("div", {
|
|
27487
27602
|
className: "flex flex-row justify-end",
|
|
27488
|
-
children: /* @__PURE__ */
|
|
27603
|
+
children: /* @__PURE__ */ jsxs8("div", {
|
|
27489
27604
|
style: {
|
|
27490
27605
|
...textUnitWrapper,
|
|
27491
27606
|
alignItems: "flex-end"
|
|
@@ -27512,7 +27627,7 @@ var EnterpriseLicense = () => {
|
|
|
27512
27627
|
var SEAT_PRICE = 25;
|
|
27513
27628
|
var RENDER_UNIT_PRICE = 10;
|
|
27514
27629
|
var SectionCheckbox = ({ checked, onChange, title, subtitle, children }) => {
|
|
27515
|
-
return /* @__PURE__ */
|
|
27630
|
+
return /* @__PURE__ */ jsxs8("div", {
|
|
27516
27631
|
className: "flex flex-row gap-3 cursor-pointer select-none items-center",
|
|
27517
27632
|
onClick: () => onChange(!checked),
|
|
27518
27633
|
children: [
|
|
@@ -27521,10 +27636,10 @@ var SectionCheckbox = ({ checked, onChange, title, subtitle, children }) => {
|
|
|
27521
27636
|
onToggle: () => onChange(!checked),
|
|
27522
27637
|
"aria-label": title
|
|
27523
27638
|
}),
|
|
27524
|
-
/* @__PURE__ */
|
|
27639
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
27525
27640
|
className: "flex flex-col",
|
|
27526
27641
|
children: [
|
|
27527
|
-
/* @__PURE__ */
|
|
27642
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
27528
27643
|
className: "fontbrand font-bold text-lg flex flex-row items-center gap-1",
|
|
27529
27644
|
children: [
|
|
27530
27645
|
title,
|
|
@@ -27574,7 +27689,7 @@ var CompanyPricing = () => {
|
|
|
27574
27689
|
}, [formatPrice, totalPrice]);
|
|
27575
27690
|
const showMinimumMessage = automatorsSelected && creatorsPrice + automatorsPrice < 100;
|
|
27576
27691
|
const showEnterpriseMessage = totalPrice >= 500;
|
|
27577
|
-
return /* @__PURE__ */
|
|
27692
|
+
return /* @__PURE__ */ jsxs8(Container, {
|
|
27578
27693
|
children: [
|
|
27579
27694
|
/* @__PURE__ */ jsx46(Audience, {
|
|
27580
27695
|
children: "For collaborations and companies of 4+ people"
|
|
@@ -27617,14 +27732,14 @@ var CompanyPricing = () => {
|
|
|
27617
27732
|
transition: automatorsSelected ? "grid-template-rows 150ms ease-out, opacity 150ms ease-out 75ms" : "opacity 150ms ease-out, grid-template-rows 150ms ease-out 75ms"
|
|
27618
27733
|
},
|
|
27619
27734
|
inert: !automatorsSelected,
|
|
27620
|
-
children: /* @__PURE__ */
|
|
27735
|
+
children: /* @__PURE__ */ jsxs8("div", {
|
|
27621
27736
|
className: "overflow-hidden",
|
|
27622
27737
|
children: [
|
|
27623
27738
|
/* @__PURE__ */ jsx46("p", {
|
|
27624
27739
|
className: "text-sm text-muted fontbrand pt-3 pb-1",
|
|
27625
27740
|
children: "Intended for companies launching applications and systems; such as video editors, prompt-to-video apps, embedding the Remotion Player, or any other automated video creation. A $100/mo Minimum Spend applies. Developers working on automation projects do not require a Seat."
|
|
27626
27741
|
}),
|
|
27627
|
-
/* @__PURE__ */
|
|
27742
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
27628
27743
|
className: "flex flex-row items-center gap-3 sm:gap-4 w-full pt-3 pb-1",
|
|
27629
27744
|
children: [
|
|
27630
27745
|
/* @__PURE__ */ jsx46("div", {
|
|
@@ -27638,14 +27753,14 @@ var CompanyPricing = () => {
|
|
|
27638
27753
|
"aria-label": "Number of renders"
|
|
27639
27754
|
})
|
|
27640
27755
|
}),
|
|
27641
|
-
/* @__PURE__ */
|
|
27756
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
27642
27757
|
className: "fontbrand shrink-0 whitespace-nowrap w-[135px] sm:w-[150px] text-right tabular-nums",
|
|
27643
27758
|
children: [
|
|
27644
27759
|
new Intl.NumberFormat("en-US").format(cloudRenders),
|
|
27645
27760
|
" Renders"
|
|
27646
27761
|
]
|
|
27647
27762
|
}),
|
|
27648
|
-
/* @__PURE__ */
|
|
27763
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
27649
27764
|
className: "fontbrand font-bold min-w-[60px] text-right shrink-0 whitespace-nowrap tabular-nums",
|
|
27650
27765
|
children: [
|
|
27651
27766
|
"$",
|
|
@@ -27674,14 +27789,14 @@ var CompanyPricing = () => {
|
|
|
27674
27789
|
transition: creatorsSelected ? "grid-template-rows 150ms ease-out, opacity 150ms ease-out 75ms" : "opacity 150ms ease-out, grid-template-rows 150ms ease-out 75ms"
|
|
27675
27790
|
},
|
|
27676
27791
|
inert: !creatorsSelected,
|
|
27677
|
-
children: /* @__PURE__ */
|
|
27792
|
+
children: /* @__PURE__ */ jsxs8("div", {
|
|
27678
27793
|
className: "overflow-hidden",
|
|
27679
27794
|
children: [
|
|
27680
27795
|
/* @__PURE__ */ jsx46("p", {
|
|
27681
27796
|
className: "text-sm text-muted fontbrand pt-3 pb-1",
|
|
27682
27797
|
children: "Intended for low volume video creations through coding and prompting, and building motion design systems in a local environment. Get 1 Seat per user."
|
|
27683
27798
|
}),
|
|
27684
|
-
/* @__PURE__ */
|
|
27799
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
27685
27800
|
className: "flex flex-row items-center gap-3 sm:gap-4 w-full pt-3 pb-1",
|
|
27686
27801
|
children: [
|
|
27687
27802
|
/* @__PURE__ */ jsx46("div", {
|
|
@@ -27694,7 +27809,7 @@ var CompanyPricing = () => {
|
|
|
27694
27809
|
"aria-label": "Number of seats"
|
|
27695
27810
|
})
|
|
27696
27811
|
}),
|
|
27697
|
-
/* @__PURE__ */
|
|
27812
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
27698
27813
|
className: "fontbrand shrink-0 whitespace-nowrap w-[135px] sm:w-[150px] text-center tabular-nums",
|
|
27699
27814
|
children: [
|
|
27700
27815
|
devSeatCount,
|
|
@@ -27702,7 +27817,7 @@ var CompanyPricing = () => {
|
|
|
27702
27817
|
devSeatCount === 1 ? "Seat" : "Seats"
|
|
27703
27818
|
]
|
|
27704
27819
|
}),
|
|
27705
|
-
/* @__PURE__ */
|
|
27820
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
27706
27821
|
className: "fontbrand font-bold min-w-[60px] text-right shrink-0 whitespace-nowrap tabular-nums",
|
|
27707
27822
|
children: [
|
|
27708
27823
|
"$",
|
|
@@ -27719,14 +27834,14 @@ var CompanyPricing = () => {
|
|
|
27719
27834
|
/* @__PURE__ */ jsx46("div", {
|
|
27720
27835
|
style: { height: 14 }
|
|
27721
27836
|
}),
|
|
27722
|
-
/* @__PURE__ */
|
|
27837
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
27723
27838
|
className: "flex flex-row items-baseline justify-end gap-2",
|
|
27724
27839
|
children: [
|
|
27725
27840
|
/* @__PURE__ */ jsx46("div", {
|
|
27726
27841
|
className: "fontbrand text-muted text-sm",
|
|
27727
27842
|
children: "Total"
|
|
27728
27843
|
}),
|
|
27729
|
-
/* @__PURE__ */
|
|
27844
|
+
/* @__PURE__ */ jsxs8(PriceTag, {
|
|
27730
27845
|
children: [
|
|
27731
27846
|
totalPriceString,
|
|
27732
27847
|
"/month"
|
|
@@ -27734,7 +27849,7 @@ var CompanyPricing = () => {
|
|
|
27734
27849
|
})
|
|
27735
27850
|
]
|
|
27736
27851
|
}),
|
|
27737
|
-
/* @__PURE__ */
|
|
27852
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
27738
27853
|
className: "flex flex-col items-end",
|
|
27739
27854
|
children: [
|
|
27740
27855
|
/* @__PURE__ */ jsx46(BottomInfo, {
|
|
@@ -27742,7 +27857,7 @@ var CompanyPricing = () => {
|
|
|
27742
27857
|
className: "opacity-0 data-[visible=true]:opacity-100 transition-opacity mt-1",
|
|
27743
27858
|
children: "The minimum is $100 per month for Remotion for Automators"
|
|
27744
27859
|
}),
|
|
27745
|
-
/* @__PURE__ */
|
|
27860
|
+
/* @__PURE__ */ jsxs8(BottomInfo, {
|
|
27746
27861
|
"data-visible": showEnterpriseMessage,
|
|
27747
27862
|
className: "opacity-0 data-[visible=true]:opacity-100 transition-opacity mt-1",
|
|
27748
27863
|
children: [
|
|
@@ -27768,7 +27883,7 @@ var CompanyPricing = () => {
|
|
|
27768
27883
|
...textUnitWrapper,
|
|
27769
27884
|
alignItems: "flex-end"
|
|
27770
27885
|
},
|
|
27771
|
-
children: /* @__PURE__ */
|
|
27886
|
+
children: /* @__PURE__ */ jsxs8("a", {
|
|
27772
27887
|
href: "https://remotion.pro/dashboard",
|
|
27773
27888
|
className: "font-brand text-brand flex flex-row items-center gap-1 no-underline",
|
|
27774
27889
|
children: [
|
|
@@ -27792,12 +27907,12 @@ var CompanyPricing = () => {
|
|
|
27792
27907
|
};
|
|
27793
27908
|
|
|
27794
27909
|
// src/components/homepage/Pricing.tsx
|
|
27795
|
-
import { jsx as jsx47, jsxs as
|
|
27910
|
+
import { jsx as jsx47, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
27796
27911
|
var Pricing = ({
|
|
27797
27912
|
faqHref = "/docs/license/faq",
|
|
27798
27913
|
faqLabel = "License FAQ",
|
|
27799
27914
|
licenseHref = "https://github.com/remotion-dev/remotion/blob/main/LICENSE.md",
|
|
27800
|
-
termsHref = "
|
|
27915
|
+
termsHref = "/docs/license/terms"
|
|
27801
27916
|
}) => {
|
|
27802
27917
|
const faqLinkTarget = useMemo52(() => {
|
|
27803
27918
|
return faqHref.startsWith("http") ? "_blank" : undefined;
|
|
@@ -27808,7 +27923,7 @@ var Pricing = ({
|
|
|
27808
27923
|
const termsLinkTarget = useMemo52(() => {
|
|
27809
27924
|
return termsHref.startsWith("http") ? "_blank" : undefined;
|
|
27810
27925
|
}, [termsHref]);
|
|
27811
|
-
return /* @__PURE__ */
|
|
27926
|
+
return /* @__PURE__ */ jsxs9("div", {
|
|
27812
27927
|
style: {
|
|
27813
27928
|
display: "flex",
|
|
27814
27929
|
flexDirection: "column",
|
|
@@ -27824,7 +27939,7 @@ var Pricing = ({
|
|
|
27824
27939
|
justifyContent: "center",
|
|
27825
27940
|
display: "flex"
|
|
27826
27941
|
},
|
|
27827
|
-
children: /* @__PURE__ */
|
|
27942
|
+
children: /* @__PURE__ */ jsxs9("div", {
|
|
27828
27943
|
style: {
|
|
27829
27944
|
fontFamily: "GTPlanar"
|
|
27830
27945
|
},
|