@depths/waves 0.2.0 → 0.3.0
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/README.md +118 -19
- package/dist/{chunk-7QPNRHMW.mjs → chunk-QP54QRAP.mjs} +73 -5
- package/dist/{chunk-PKLHVWMD.mjs → chunk-YYS6AVTN.mjs} +792 -604
- package/dist/cli.js +1098 -756
- package/dist/cli.mjs +90 -3
- package/dist/index.d.mts +13 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +1010 -755
- package/dist/index.mjs +2 -2
- package/dist/remotion/index.d.mts +5 -0
- package/dist/remotion/index.d.ts +5 -0
- package/dist/remotion/index.js +1032 -807
- package/dist/remotion/index.mjs +49 -8
- package/package.json +1 -1
package/dist/remotion/index.js
CHANGED
|
@@ -57,15 +57,70 @@ var WavesRenderError = class _WavesRenderError extends WavesError {
|
|
|
57
57
|
}
|
|
58
58
|
};
|
|
59
59
|
|
|
60
|
-
// src/remotion/
|
|
60
|
+
// src/remotion/Fill.tsx
|
|
61
61
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
62
|
-
var
|
|
63
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
62
|
+
var Fill = ({ style, children }) => {
|
|
63
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
64
|
+
"div",
|
|
65
|
+
{
|
|
66
|
+
style: {
|
|
67
|
+
width: "100%",
|
|
68
|
+
height: "100%",
|
|
69
|
+
position: "relative",
|
|
70
|
+
boxSizing: "border-box",
|
|
71
|
+
...style ?? {}
|
|
72
|
+
},
|
|
73
|
+
children
|
|
74
|
+
}
|
|
75
|
+
);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
// src/remotion/WavesComposition.tsx
|
|
79
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
80
|
+
var WavesComposition = ({ ir, registry, debug }) => {
|
|
81
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment, { children: ir.timeline.map((node) => renderComponent(node, registry, debug, "absolute-fill")) });
|
|
64
82
|
};
|
|
65
83
|
var getProps = (component) => {
|
|
66
84
|
return component.props ?? {};
|
|
67
85
|
};
|
|
68
|
-
function
|
|
86
|
+
function debugColor(key) {
|
|
87
|
+
let hash = 0;
|
|
88
|
+
for (let i = 0; i < key.length; i++) hash = hash * 31 + key.charCodeAt(i) | 0;
|
|
89
|
+
const hue = Math.abs(hash) % 360;
|
|
90
|
+
return `hsl(${hue} 90% 55%)`;
|
|
91
|
+
}
|
|
92
|
+
function DebugWrap(props) {
|
|
93
|
+
const { enabled, showLabel, id, type, children } = props;
|
|
94
|
+
if (!enabled) return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment, { children });
|
|
95
|
+
const color = debugColor(`${type}:${id}`);
|
|
96
|
+
const label = `${type} (${id})`;
|
|
97
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Fill, { style: { outline: `2px solid ${color}`, outlineOffset: -2 }, children: [
|
|
98
|
+
children,
|
|
99
|
+
showLabel ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
100
|
+
"div",
|
|
101
|
+
{
|
|
102
|
+
style: {
|
|
103
|
+
position: "absolute",
|
|
104
|
+
left: 0,
|
|
105
|
+
top: 0,
|
|
106
|
+
padding: "2px 6px",
|
|
107
|
+
fontSize: 12,
|
|
108
|
+
fontWeight: 800,
|
|
109
|
+
color: "#000",
|
|
110
|
+
backgroundColor: color,
|
|
111
|
+
borderBottomRightRadius: 6,
|
|
112
|
+
pointerEvents: "none",
|
|
113
|
+
maxWidth: "100%",
|
|
114
|
+
overflow: "hidden",
|
|
115
|
+
textOverflow: "ellipsis",
|
|
116
|
+
whiteSpace: "nowrap"
|
|
117
|
+
},
|
|
118
|
+
children: label
|
|
119
|
+
}
|
|
120
|
+
) : null
|
|
121
|
+
] });
|
|
122
|
+
}
|
|
123
|
+
function renderComponent(component, registry, debug, sequenceLayout) {
|
|
69
124
|
const registration = registry.get(component.type);
|
|
70
125
|
if (!registration) {
|
|
71
126
|
throw new WavesRenderError("Unknown component type", { type: component.type });
|
|
@@ -81,20 +136,23 @@ function renderComponent(component, registry) {
|
|
|
81
136
|
if (!parsedProps || typeof parsedProps !== "object") {
|
|
82
137
|
throw new WavesRenderError("Component props must be an object", { type: component.type });
|
|
83
138
|
}
|
|
84
|
-
const children = component.children?.length ? component.children.map((c) => renderComponent(c, registry)) : null;
|
|
85
|
-
|
|
139
|
+
const children = component.children?.length ? component.children.map((c) => renderComponent(c, registry, debug, "none")) : null;
|
|
140
|
+
const debugEnabled = Boolean(debug?.bounds);
|
|
141
|
+
const showLabel = Boolean(debug?.labels);
|
|
142
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
86
143
|
import_remotion.Sequence,
|
|
87
144
|
{
|
|
88
145
|
from: component.timing.from,
|
|
89
146
|
durationInFrames: component.timing.durationInFrames,
|
|
90
|
-
|
|
147
|
+
layout: sequenceLayout,
|
|
148
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(DebugWrap, { enabled: debugEnabled, showLabel, id: component.id, type: component.type, children: import_react.default.createElement(
|
|
91
149
|
registration.component,
|
|
92
150
|
{
|
|
93
151
|
...parsedProps,
|
|
94
152
|
__wavesDurationInFrames: component.timing.durationInFrames
|
|
95
153
|
},
|
|
96
154
|
children
|
|
97
|
-
)
|
|
155
|
+
) })
|
|
98
156
|
},
|
|
99
157
|
component.id
|
|
100
158
|
);
|
|
@@ -175,7 +233,7 @@ function staticFileInputFromAssetPath(assetPath) {
|
|
|
175
233
|
}
|
|
176
234
|
|
|
177
235
|
// src/components/primitives/Audio.tsx
|
|
178
|
-
var
|
|
236
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
179
237
|
var AudioPropsSchema = import_zod2.z.object({
|
|
180
238
|
src: import_zod2.z.string(),
|
|
181
239
|
volume: import_zod2.z.number().min(0).max(1).default(1),
|
|
@@ -203,7 +261,7 @@ var Audio = ({
|
|
|
203
261
|
extrapolateRight: "clamp"
|
|
204
262
|
}) : 1;
|
|
205
263
|
const resolvedSrc = isRemoteAssetPath(src) ? src : (0, import_remotion2.staticFile)(staticFileInputFromAssetPath(src));
|
|
206
|
-
return /* @__PURE__ */ (0,
|
|
264
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
207
265
|
import_remotion2.Audio,
|
|
208
266
|
{
|
|
209
267
|
src: resolvedSrc,
|
|
@@ -220,19 +278,57 @@ var AudioComponentMetadata = {
|
|
|
220
278
|
};
|
|
221
279
|
|
|
222
280
|
// src/components/primitives/Box.tsx
|
|
281
|
+
var import_react2 = __toESM(require("react"));
|
|
223
282
|
var import_zod3 = require("zod");
|
|
224
|
-
var
|
|
283
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
225
284
|
var BoxPropsSchema = import_zod3.z.object({
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
width: import_zod3.z.number().positive().optional().describe("Width in pixels (omit for auto)"),
|
|
229
|
-
height: import_zod3.z.number().positive().optional().describe("Height in pixels (omit for auto)"),
|
|
285
|
+
width: import_zod3.z.number().positive().optional().describe("Width in pixels (optional)"),
|
|
286
|
+
height: import_zod3.z.number().positive().optional().describe("Height in pixels (optional)"),
|
|
230
287
|
padding: import_zod3.z.number().min(0).default(0).describe("Padding in pixels"),
|
|
231
|
-
backgroundColor: import_zod3.z.string().optional().describe("CSS color (e.g. #RRGGBB)"),
|
|
288
|
+
backgroundColor: import_zod3.z.string().optional().describe("CSS color (e.g. #RRGGBB, rgba())"),
|
|
232
289
|
borderRadius: import_zod3.z.number().min(0).default(0).describe("Border radius in pixels"),
|
|
233
290
|
opacity: import_zod3.z.number().min(0).max(1).default(1).describe("Opacity 0..1")
|
|
234
291
|
});
|
|
235
|
-
var Box = ({
|
|
292
|
+
var Box = ({ width, height, padding, backgroundColor, borderRadius, opacity, children }) => {
|
|
293
|
+
const layers = import_react2.default.Children.toArray(children);
|
|
294
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
295
|
+
Fill,
|
|
296
|
+
{
|
|
297
|
+
style: {
|
|
298
|
+
width,
|
|
299
|
+
height,
|
|
300
|
+
padding,
|
|
301
|
+
backgroundColor,
|
|
302
|
+
borderRadius,
|
|
303
|
+
opacity
|
|
304
|
+
},
|
|
305
|
+
children: layers.map((child, i) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { style: { position: "absolute", inset: 0 }, children: child }, i))
|
|
306
|
+
}
|
|
307
|
+
);
|
|
308
|
+
};
|
|
309
|
+
var BoxComponentMetadata = {
|
|
310
|
+
kind: "primitive",
|
|
311
|
+
category: "layout",
|
|
312
|
+
acceptsChildren: true,
|
|
313
|
+
description: "Flow container for layout and backgrounds (layout-safe)",
|
|
314
|
+
llmGuidance: "Use Box as a container inside Grid/Stack. Box participates in layout flow. For x/y positioning, use Frame."
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
// src/components/primitives/Frame.tsx
|
|
318
|
+
var import_react3 = __toESM(require("react"));
|
|
319
|
+
var import_zod4 = require("zod");
|
|
320
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
321
|
+
var FramePropsSchema = import_zod4.z.object({
|
|
322
|
+
x: import_zod4.z.number().default(0).describe("Left offset in pixels"),
|
|
323
|
+
y: import_zod4.z.number().default(0).describe("Top offset in pixels"),
|
|
324
|
+
width: import_zod4.z.number().positive().optional().describe("Width in pixels (optional)"),
|
|
325
|
+
height: import_zod4.z.number().positive().optional().describe("Height in pixels (optional)"),
|
|
326
|
+
padding: import_zod4.z.number().min(0).default(0).describe("Padding in pixels"),
|
|
327
|
+
backgroundColor: import_zod4.z.string().optional().describe("CSS color (e.g. #RRGGBB, rgba())"),
|
|
328
|
+
borderRadius: import_zod4.z.number().min(0).default(0).describe("Border radius in pixels"),
|
|
329
|
+
opacity: import_zod4.z.number().min(0).max(1).default(1).describe("Opacity 0..1")
|
|
330
|
+
});
|
|
331
|
+
var Frame = ({
|
|
236
332
|
x,
|
|
237
333
|
y,
|
|
238
334
|
width,
|
|
@@ -243,7 +339,8 @@ var Box = ({
|
|
|
243
339
|
opacity,
|
|
244
340
|
children
|
|
245
341
|
}) => {
|
|
246
|
-
|
|
342
|
+
const layers = import_react3.default.Children.toArray(children);
|
|
343
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
247
344
|
"div",
|
|
248
345
|
{
|
|
249
346
|
style: {
|
|
@@ -258,29 +355,28 @@ var Box = ({
|
|
|
258
355
|
opacity,
|
|
259
356
|
boxSizing: "border-box"
|
|
260
357
|
},
|
|
261
|
-
children
|
|
358
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Fill, { children: layers.map((child, i) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { style: { position: "absolute", inset: 0 }, children: child }, i)) })
|
|
262
359
|
}
|
|
263
360
|
);
|
|
264
361
|
};
|
|
265
|
-
var
|
|
362
|
+
var FrameComponentMetadata = {
|
|
266
363
|
kind: "primitive",
|
|
267
364
|
category: "layout",
|
|
268
365
|
acceptsChildren: true,
|
|
269
|
-
description: "
|
|
270
|
-
llmGuidance: "Use
|
|
366
|
+
description: "Absolute-positioned container (x/y placement)",
|
|
367
|
+
llmGuidance: "Use Frame for precise pixel placement (x/y). Use Box for normal layout flow inside Grid/Stack."
|
|
271
368
|
};
|
|
272
369
|
|
|
273
370
|
// src/components/primitives/Grid.tsx
|
|
274
|
-
var
|
|
275
|
-
var
|
|
276
|
-
var
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
justify: import_zod4.z.enum(["start", "center", "end", "stretch"]).default("stretch")
|
|
371
|
+
var import_zod5 = require("zod");
|
|
372
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
373
|
+
var GridPropsSchema = import_zod5.z.object({
|
|
374
|
+
columns: import_zod5.z.number().int().min(1).max(12).default(2),
|
|
375
|
+
rows: import_zod5.z.number().int().min(1).max(12).default(1),
|
|
376
|
+
gap: import_zod5.z.number().min(0).default(24),
|
|
377
|
+
padding: import_zod5.z.number().min(0).default(0),
|
|
378
|
+
align: import_zod5.z.enum(["start", "center", "end", "stretch"]).default("stretch"),
|
|
379
|
+
justify: import_zod5.z.enum(["start", "center", "end", "stretch"]).default("stretch")
|
|
284
380
|
});
|
|
285
381
|
var mapAlign = (a) => {
|
|
286
382
|
if (a === "start") return "start";
|
|
@@ -295,8 +391,8 @@ var mapJustify = (j) => {
|
|
|
295
391
|
return "stretch";
|
|
296
392
|
};
|
|
297
393
|
var Grid = ({ columns, rows, gap, padding, align, justify, children }) => {
|
|
298
|
-
return /* @__PURE__ */ (0,
|
|
299
|
-
|
|
394
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
395
|
+
Fill,
|
|
300
396
|
{
|
|
301
397
|
style: {
|
|
302
398
|
display: "grid",
|
|
@@ -321,19 +417,19 @@ var GridComponentMetadata = {
|
|
|
321
417
|
};
|
|
322
418
|
|
|
323
419
|
// src/components/primitives/Image.tsx
|
|
324
|
-
var
|
|
325
|
-
var
|
|
326
|
-
var
|
|
327
|
-
var ImagePropsSchema =
|
|
328
|
-
src:
|
|
329
|
-
fit:
|
|
330
|
-
borderRadius:
|
|
331
|
-
opacity:
|
|
420
|
+
var import_remotion3 = require("remotion");
|
|
421
|
+
var import_zod6 = require("zod");
|
|
422
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
423
|
+
var ImagePropsSchema = import_zod6.z.object({
|
|
424
|
+
src: import_zod6.z.string().min(1),
|
|
425
|
+
fit: import_zod6.z.enum(["cover", "contain"]).default("cover"),
|
|
426
|
+
borderRadius: import_zod6.z.number().min(0).default(0),
|
|
427
|
+
opacity: import_zod6.z.number().min(0).max(1).default(1)
|
|
332
428
|
});
|
|
333
|
-
var resolveAsset = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
429
|
+
var resolveAsset = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion3.staticFile)(staticFileInputFromAssetPath(value));
|
|
334
430
|
var Image = ({ src, fit, borderRadius, opacity }) => {
|
|
335
|
-
return /* @__PURE__ */ (0,
|
|
336
|
-
|
|
431
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Fill, { style: { opacity }, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
432
|
+
import_remotion3.Img,
|
|
337
433
|
{
|
|
338
434
|
src: resolveAsset(src),
|
|
339
435
|
style: { width: "100%", height: "100%", objectFit: fit, borderRadius }
|
|
@@ -347,115 +443,174 @@ var ImageComponentMetadata = {
|
|
|
347
443
|
llmGuidance: 'Use Image for pictures and backgrounds. Use fit="cover" for full-bleed, fit="contain" to avoid cropping.'
|
|
348
444
|
};
|
|
349
445
|
|
|
350
|
-
// src/components/primitives/
|
|
351
|
-
var
|
|
446
|
+
// src/components/primitives/Layer.tsx
|
|
447
|
+
var import_react4 = __toESM(require("react"));
|
|
352
448
|
var import_zod7 = require("zod");
|
|
449
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
450
|
+
var LayerPropsSchema = import_zod7.z.object({
|
|
451
|
+
zIndex: import_zod7.z.number().int().default(0).describe("Higher zIndex renders on top"),
|
|
452
|
+
inset: import_zod7.z.number().min(0).default(0).describe("Inset from all sides in pixels"),
|
|
453
|
+
opacity: import_zod7.z.number().min(0).max(1).default(1),
|
|
454
|
+
pointerEvents: import_zod7.z.enum(["none", "auto"]).default("none")
|
|
455
|
+
});
|
|
456
|
+
var Layer = ({ zIndex, inset, opacity, pointerEvents, children }) => {
|
|
457
|
+
const layers = import_react4.default.Children.toArray(children);
|
|
458
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
459
|
+
"div",
|
|
460
|
+
{
|
|
461
|
+
style: {
|
|
462
|
+
position: "absolute",
|
|
463
|
+
left: inset,
|
|
464
|
+
right: inset,
|
|
465
|
+
top: inset,
|
|
466
|
+
bottom: inset,
|
|
467
|
+
zIndex,
|
|
468
|
+
opacity,
|
|
469
|
+
pointerEvents,
|
|
470
|
+
boxSizing: "border-box"
|
|
471
|
+
},
|
|
472
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Fill, { children: layers.map((child, i) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: { position: "absolute", inset: 0 }, children: child }, i)) })
|
|
473
|
+
}
|
|
474
|
+
);
|
|
475
|
+
};
|
|
476
|
+
var LayerComponentMetadata = {
|
|
477
|
+
kind: "primitive",
|
|
478
|
+
category: "layout",
|
|
479
|
+
acceptsChildren: true,
|
|
480
|
+
minChildren: 1,
|
|
481
|
+
description: "One overlay layer with explicit zIndex inside Layers",
|
|
482
|
+
llmGuidance: "Use Layer inside Layers to control stacking. Put exactly one child in a Layer (recommended)."
|
|
483
|
+
};
|
|
484
|
+
|
|
485
|
+
// src/components/primitives/Layers.tsx
|
|
486
|
+
var import_zod8 = require("zod");
|
|
487
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
488
|
+
var LayersPropsSchema = import_zod8.z.object({
|
|
489
|
+
overflow: import_zod8.z.enum(["visible", "hidden"]).default("visible").describe("Clip layers to bounds")
|
|
490
|
+
});
|
|
491
|
+
var Layers = ({ overflow, children }) => {
|
|
492
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Fill, { style: { overflow }, children });
|
|
493
|
+
};
|
|
494
|
+
var LayersComponentMetadata = {
|
|
495
|
+
kind: "primitive",
|
|
496
|
+
category: "layout",
|
|
497
|
+
acceptsChildren: true,
|
|
498
|
+
minChildren: 1,
|
|
499
|
+
description: "Overlay container for stacking children (use Layer for zIndex)",
|
|
500
|
+
llmGuidance: "Use Layers to stack background/content/overlays. Prefer Layer children with explicit zIndex."
|
|
501
|
+
};
|
|
502
|
+
|
|
503
|
+
// src/components/primitives/Scene.tsx
|
|
504
|
+
var import_react5 = __toESM(require("react"));
|
|
505
|
+
var import_remotion4 = require("remotion");
|
|
506
|
+
var import_zod10 = require("zod");
|
|
353
507
|
|
|
354
508
|
// src/ir/schema.ts
|
|
355
|
-
var
|
|
356
|
-
var TimingSpecSchema =
|
|
357
|
-
from:
|
|
358
|
-
durationInFrames:
|
|
509
|
+
var import_zod9 = require("zod");
|
|
510
|
+
var TimingSpecSchema = import_zod9.z.object({
|
|
511
|
+
from: import_zod9.z.number().int().min(0).describe("Start frame (0-indexed)"),
|
|
512
|
+
durationInFrames: import_zod9.z.number().int().positive().describe("Duration in frames")
|
|
359
513
|
});
|
|
360
|
-
var AssetPathSchema =
|
|
514
|
+
var AssetPathSchema = import_zod9.z.string().refine(
|
|
361
515
|
(path) => path.startsWith("/") || path.startsWith("http://") || path.startsWith("https://"),
|
|
362
516
|
"Asset path must be absolute (starting with /) or a full URL"
|
|
363
517
|
).describe("Path to asset file, either absolute path or URL");
|
|
364
|
-
var BackgroundSpecSchema =
|
|
365
|
-
|
|
366
|
-
type:
|
|
367
|
-
value:
|
|
518
|
+
var BackgroundSpecSchema = import_zod9.z.discriminatedUnion("type", [
|
|
519
|
+
import_zod9.z.object({
|
|
520
|
+
type: import_zod9.z.literal("color"),
|
|
521
|
+
value: import_zod9.z.string().regex(/^#[0-9A-Fa-f]{6}$/, "Must be valid hex color")
|
|
368
522
|
}),
|
|
369
|
-
|
|
370
|
-
type:
|
|
523
|
+
import_zod9.z.object({
|
|
524
|
+
type: import_zod9.z.literal("image"),
|
|
371
525
|
value: AssetPathSchema
|
|
372
526
|
}),
|
|
373
|
-
|
|
374
|
-
type:
|
|
527
|
+
import_zod9.z.object({
|
|
528
|
+
type: import_zod9.z.literal("video"),
|
|
375
529
|
value: AssetPathSchema
|
|
376
530
|
})
|
|
377
531
|
]);
|
|
378
|
-
var VideoConfigSchema =
|
|
379
|
-
id:
|
|
380
|
-
width:
|
|
381
|
-
height:
|
|
382
|
-
fps:
|
|
383
|
-
durationInFrames:
|
|
532
|
+
var VideoConfigSchema = import_zod9.z.object({
|
|
533
|
+
id: import_zod9.z.string().default("main"),
|
|
534
|
+
width: import_zod9.z.number().int().min(360).max(7680),
|
|
535
|
+
height: import_zod9.z.number().int().min(360).max(4320),
|
|
536
|
+
fps: import_zod9.z.number().int().min(1).max(120).default(30),
|
|
537
|
+
durationInFrames: import_zod9.z.number().int().positive()
|
|
384
538
|
});
|
|
385
|
-
var AudioSpecSchema =
|
|
539
|
+
var AudioSpecSchema = import_zod9.z.object({
|
|
386
540
|
background: AssetPathSchema.optional(),
|
|
387
|
-
volume:
|
|
541
|
+
volume: import_zod9.z.number().min(0).max(1).default(0.5)
|
|
388
542
|
}).optional();
|
|
389
|
-
var TransitionSpecSchema =
|
|
390
|
-
type:
|
|
391
|
-
durationInFrames:
|
|
392
|
-
props:
|
|
543
|
+
var TransitionSpecSchema = import_zod9.z.object({
|
|
544
|
+
type: import_zod9.z.string().min(1),
|
|
545
|
+
durationInFrames: import_zod9.z.number().int().positive(),
|
|
546
|
+
props: import_zod9.z.record(import_zod9.z.string(), import_zod9.z.unknown()).optional()
|
|
393
547
|
});
|
|
394
|
-
var ComponentNodeSchema =
|
|
395
|
-
() =>
|
|
396
|
-
id:
|
|
397
|
-
type:
|
|
548
|
+
var ComponentNodeSchema = import_zod9.z.lazy(
|
|
549
|
+
() => import_zod9.z.object({
|
|
550
|
+
id: import_zod9.z.string().min(1).max(100).describe("Unique component instance ID"),
|
|
551
|
+
type: import_zod9.z.string().min(1).describe("Registered component type identifier"),
|
|
398
552
|
timing: TimingSpecSchema.optional().describe("Optional timing (frames)"),
|
|
399
|
-
props:
|
|
400
|
-
metadata:
|
|
401
|
-
children:
|
|
553
|
+
props: import_zod9.z.record(import_zod9.z.string(), import_zod9.z.unknown()).optional().describe("Component props object"),
|
|
554
|
+
metadata: import_zod9.z.record(import_zod9.z.string(), import_zod9.z.unknown()).optional().describe("Optional metadata"),
|
|
555
|
+
children: import_zod9.z.array(ComponentNodeSchema).optional().describe("Nested children nodes")
|
|
402
556
|
})
|
|
403
557
|
);
|
|
404
|
-
var SegmentSchema =
|
|
405
|
-
id:
|
|
406
|
-
durationInFrames:
|
|
558
|
+
var SegmentSchema = import_zod9.z.object({
|
|
559
|
+
id: import_zod9.z.string().min(1).max(100),
|
|
560
|
+
durationInFrames: import_zod9.z.number().int().positive(),
|
|
407
561
|
root: ComponentNodeSchema,
|
|
408
562
|
transitionToNext: TransitionSpecSchema.optional()
|
|
409
563
|
});
|
|
410
|
-
var VideoIRv2Schema =
|
|
411
|
-
version:
|
|
564
|
+
var VideoIRv2Schema = import_zod9.z.object({
|
|
565
|
+
version: import_zod9.z.literal("2.0").describe("IR schema version"),
|
|
412
566
|
video: VideoConfigSchema,
|
|
413
567
|
audio: AudioSpecSchema,
|
|
414
|
-
segments:
|
|
415
|
-
timeline:
|
|
568
|
+
segments: import_zod9.z.array(SegmentSchema).min(1).optional(),
|
|
569
|
+
timeline: import_zod9.z.array(ComponentNodeSchema).min(1).optional()
|
|
416
570
|
}).superRefine((v, ctx) => {
|
|
417
571
|
const hasSegments = Array.isArray(v.segments);
|
|
418
572
|
const hasTimeline = Array.isArray(v.timeline);
|
|
419
573
|
if (hasSegments === hasTimeline) {
|
|
420
574
|
ctx.addIssue({
|
|
421
|
-
code:
|
|
575
|
+
code: import_zod9.z.ZodIssueCode.custom,
|
|
422
576
|
message: 'Exactly one of "segments" or "timeline" must be provided',
|
|
423
577
|
path: []
|
|
424
578
|
});
|
|
425
579
|
}
|
|
426
580
|
});
|
|
427
|
-
var VideoIRv2AuthoringSchema =
|
|
428
|
-
version:
|
|
581
|
+
var VideoIRv2AuthoringSchema = import_zod9.z.object({
|
|
582
|
+
version: import_zod9.z.literal("2.0").describe("IR schema version"),
|
|
429
583
|
video: VideoConfigSchema,
|
|
430
584
|
audio: AudioSpecSchema,
|
|
431
|
-
segments:
|
|
432
|
-
timeline:
|
|
585
|
+
segments: import_zod9.z.array(SegmentSchema).min(1),
|
|
586
|
+
timeline: import_zod9.z.never().optional()
|
|
433
587
|
}).describe("Preferred authoring format: sequential segments with optional transitions");
|
|
434
588
|
|
|
435
589
|
// src/components/primitives/Scene.tsx
|
|
436
|
-
var
|
|
437
|
-
var ScenePropsSchema =
|
|
590
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
591
|
+
var ScenePropsSchema = import_zod10.z.object({
|
|
438
592
|
background: BackgroundSpecSchema
|
|
439
593
|
});
|
|
440
594
|
var resolveAsset2 = (value) => {
|
|
441
|
-
return isRemoteAssetPath(value) ? value : (0,
|
|
595
|
+
return isRemoteAssetPath(value) ? value : (0, import_remotion4.staticFile)(staticFileInputFromAssetPath(value));
|
|
442
596
|
};
|
|
443
597
|
var Scene = ({ background, children }) => {
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
598
|
+
const layers = import_react5.default.Children.toArray(children);
|
|
599
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_remotion4.AbsoluteFill, { children: [
|
|
600
|
+
background.type === "color" ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_remotion4.AbsoluteFill, { style: { backgroundColor: background.value } }) : background.type === "image" ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
601
|
+
import_remotion4.Img,
|
|
447
602
|
{
|
|
448
603
|
src: resolveAsset2(background.value),
|
|
449
604
|
style: { width: "100%", height: "100%", objectFit: "cover" }
|
|
450
605
|
}
|
|
451
|
-
) : /* @__PURE__ */ (0,
|
|
452
|
-
|
|
606
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
607
|
+
import_remotion4.Video,
|
|
453
608
|
{
|
|
454
609
|
src: resolveAsset2(background.value),
|
|
455
610
|
style: { width: "100%", height: "100%", objectFit: "cover" }
|
|
456
611
|
}
|
|
457
612
|
),
|
|
458
|
-
/* @__PURE__ */ (0,
|
|
613
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_remotion4.AbsoluteFill, { children: layers.map((child, i) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_remotion4.AbsoluteFill, { children: child }, i)) })
|
|
459
614
|
] });
|
|
460
615
|
};
|
|
461
616
|
var SceneComponentMetadata = {
|
|
@@ -467,37 +622,37 @@ var SceneComponentMetadata = {
|
|
|
467
622
|
};
|
|
468
623
|
|
|
469
624
|
// src/components/primitives/Segment.tsx
|
|
470
|
-
var
|
|
471
|
-
var
|
|
472
|
-
var
|
|
473
|
-
var TransitionPropsSchema =
|
|
474
|
-
type:
|
|
475
|
-
durationInFrames:
|
|
476
|
-
props:
|
|
625
|
+
var import_remotion5 = require("remotion");
|
|
626
|
+
var import_zod11 = require("zod");
|
|
627
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
628
|
+
var TransitionPropsSchema = import_zod11.z.object({
|
|
629
|
+
type: import_zod11.z.string().min(1),
|
|
630
|
+
durationInFrames: import_zod11.z.number().int().positive(),
|
|
631
|
+
props: import_zod11.z.record(import_zod11.z.string(), import_zod11.z.unknown()).optional()
|
|
477
632
|
});
|
|
478
|
-
var SegmentPropsSchema =
|
|
633
|
+
var SegmentPropsSchema = import_zod11.z.object({
|
|
479
634
|
enterTransition: TransitionPropsSchema.optional(),
|
|
480
635
|
exitTransition: TransitionPropsSchema.optional()
|
|
481
636
|
});
|
|
482
637
|
function getSlideOptions(raw) {
|
|
483
|
-
const parsed =
|
|
484
|
-
direction:
|
|
485
|
-
distance:
|
|
638
|
+
const parsed = import_zod11.z.object({
|
|
639
|
+
direction: import_zod11.z.enum(["left", "right", "up", "down"]).default("left"),
|
|
640
|
+
distance: import_zod11.z.number().int().min(1).max(2e3).default(80)
|
|
486
641
|
}).safeParse(raw ?? {});
|
|
487
642
|
if (parsed.success) return parsed.data;
|
|
488
643
|
return { direction: "left", distance: 80 };
|
|
489
644
|
}
|
|
490
645
|
function getZoomOptions(raw) {
|
|
491
|
-
const parsed =
|
|
492
|
-
type:
|
|
646
|
+
const parsed = import_zod11.z.object({
|
|
647
|
+
type: import_zod11.z.enum(["zoomIn", "zoomOut"]).default("zoomIn")
|
|
493
648
|
}).safeParse(raw ?? {});
|
|
494
649
|
if (parsed.success) return parsed.data;
|
|
495
650
|
return { type: "zoomIn" };
|
|
496
651
|
}
|
|
497
652
|
function getWipeOptions(raw) {
|
|
498
|
-
const parsed =
|
|
499
|
-
direction:
|
|
500
|
-
softEdge:
|
|
653
|
+
const parsed = import_zod11.z.object({
|
|
654
|
+
direction: import_zod11.z.enum(["left", "right", "up", "down", "diagonal"]).default("right"),
|
|
655
|
+
softEdge: import_zod11.z.boolean().default(false)
|
|
501
656
|
}).safeParse(raw ?? {});
|
|
502
657
|
if (parsed.success) return parsed.data;
|
|
503
658
|
return { direction: "right", softEdge: false };
|
|
@@ -510,18 +665,18 @@ function clipFor(direction, p) {
|
|
|
510
665
|
return `polygon(0 0, ${100 * p}% 0, 0 ${100 * p}%)`;
|
|
511
666
|
}
|
|
512
667
|
function getCircularOptions(raw) {
|
|
513
|
-
const parsed =
|
|
514
|
-
direction:
|
|
515
|
-
center:
|
|
516
|
-
x:
|
|
517
|
-
y:
|
|
668
|
+
const parsed = import_zod11.z.object({
|
|
669
|
+
direction: import_zod11.z.enum(["open", "close"]).default("open"),
|
|
670
|
+
center: import_zod11.z.object({
|
|
671
|
+
x: import_zod11.z.number().min(0).max(1).default(0.5),
|
|
672
|
+
y: import_zod11.z.number().min(0).max(1).default(0.5)
|
|
518
673
|
}).default({ x: 0.5, y: 0.5 })
|
|
519
674
|
}).safeParse(raw ?? {});
|
|
520
675
|
if (parsed.success) return parsed.data;
|
|
521
676
|
return { direction: "open", center: { x: 0.5, y: 0.5 } };
|
|
522
677
|
}
|
|
523
678
|
var Segment = ({ enterTransition, exitTransition, children, __wavesDurationInFrames }) => {
|
|
524
|
-
const frame = (0,
|
|
679
|
+
const frame = (0, import_remotion5.useCurrentFrame)();
|
|
525
680
|
const durationInFrames = __wavesDurationInFrames ?? 0;
|
|
526
681
|
let opacity = 1;
|
|
527
682
|
let translateX = 0;
|
|
@@ -532,35 +687,35 @@ var Segment = ({ enterTransition, exitTransition, children, __wavesDurationInFra
|
|
|
532
687
|
if (enterTransition) {
|
|
533
688
|
const d = enterTransition.durationInFrames;
|
|
534
689
|
if (enterTransition.type === "FadeTransition") {
|
|
535
|
-
opacity *= (0,
|
|
690
|
+
opacity *= (0, import_remotion5.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
536
691
|
}
|
|
537
692
|
if (enterTransition.type === "SlideTransition") {
|
|
538
693
|
const opts = getSlideOptions(enterTransition.props);
|
|
539
|
-
const t = (0,
|
|
694
|
+
const t = (0, import_remotion5.interpolate)(frame, [0, d], [1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
540
695
|
const delta = opts.distance * t;
|
|
541
696
|
if (opts.direction === "left") translateX += -delta;
|
|
542
697
|
if (opts.direction === "right") translateX += delta;
|
|
543
698
|
if (opts.direction === "up") translateY += -delta;
|
|
544
699
|
if (opts.direction === "down") translateY += delta;
|
|
545
|
-
opacity *= (0,
|
|
700
|
+
opacity *= (0, import_remotion5.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
546
701
|
}
|
|
547
702
|
if (enterTransition.type === "ZoomTransition") {
|
|
548
703
|
const opts = getZoomOptions(enterTransition.props);
|
|
549
704
|
const fromScale = opts.type === "zoomIn" ? 1.2 : 0.85;
|
|
550
|
-
const t = (0,
|
|
705
|
+
const t = (0, import_remotion5.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
551
706
|
scale *= fromScale + (1 - fromScale) * t;
|
|
552
707
|
opacity *= t;
|
|
553
708
|
}
|
|
554
709
|
if (enterTransition.type === "WipeTransition") {
|
|
555
710
|
const opts = getWipeOptions(enterTransition.props);
|
|
556
|
-
const t = (0,
|
|
711
|
+
const t = (0, import_remotion5.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
557
712
|
clipPath = clipFor(opts.direction, t);
|
|
558
713
|
filter = opts.softEdge ? "blur(0.4px)" : void 0;
|
|
559
714
|
}
|
|
560
715
|
if (enterTransition.type === "CircularReveal") {
|
|
561
716
|
const opts = getCircularOptions(enterTransition.props);
|
|
562
717
|
const open = opts.direction === "open";
|
|
563
|
-
const t = (0,
|
|
718
|
+
const t = (0, import_remotion5.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
564
719
|
const radiusPct = open ? 150 * t : 150 * (1 - t);
|
|
565
720
|
clipPath = `circle(${radiusPct}% at ${Math.round(opts.center.x * 100)}% ${Math.round(opts.center.y * 100)}%)`;
|
|
566
721
|
}
|
|
@@ -569,41 +724,41 @@ var Segment = ({ enterTransition, exitTransition, children, __wavesDurationInFra
|
|
|
569
724
|
const d = exitTransition.durationInFrames;
|
|
570
725
|
const start = Math.max(0, durationInFrames - d);
|
|
571
726
|
if (exitTransition.type === "FadeTransition") {
|
|
572
|
-
opacity *= (0,
|
|
727
|
+
opacity *= (0, import_remotion5.interpolate)(frame, [start, durationInFrames], [1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
573
728
|
}
|
|
574
729
|
if (exitTransition.type === "SlideTransition") {
|
|
575
730
|
const opts = getSlideOptions(exitTransition.props);
|
|
576
|
-
const t = (0,
|
|
731
|
+
const t = (0, import_remotion5.interpolate)(frame, [start, durationInFrames], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
577
732
|
const delta = opts.distance * t;
|
|
578
733
|
if (opts.direction === "left") translateX += delta;
|
|
579
734
|
if (opts.direction === "right") translateX += -delta;
|
|
580
735
|
if (opts.direction === "up") translateY += delta;
|
|
581
736
|
if (opts.direction === "down") translateY += -delta;
|
|
582
|
-
opacity *= (0,
|
|
737
|
+
opacity *= (0, import_remotion5.interpolate)(frame, [start, durationInFrames], [1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
583
738
|
}
|
|
584
739
|
if (exitTransition.type === "ZoomTransition") {
|
|
585
740
|
const opts = getZoomOptions(exitTransition.props);
|
|
586
741
|
const toScale = opts.type === "zoomIn" ? 1.25 : 0.75;
|
|
587
|
-
const t = (0,
|
|
742
|
+
const t = (0, import_remotion5.interpolate)(frame, [start, durationInFrames], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
588
743
|
scale *= 1 + (toScale - 1) * t;
|
|
589
744
|
opacity *= 1 - t;
|
|
590
745
|
}
|
|
591
746
|
if (exitTransition.type === "WipeTransition") {
|
|
592
747
|
const opts = getWipeOptions(exitTransition.props);
|
|
593
|
-
const t = (0,
|
|
748
|
+
const t = (0, import_remotion5.interpolate)(frame, [start, durationInFrames], [1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
594
749
|
clipPath = clipFor(opts.direction, t);
|
|
595
750
|
filter = opts.softEdge ? "blur(0.4px)" : void 0;
|
|
596
751
|
}
|
|
597
752
|
if (exitTransition.type === "CircularReveal") {
|
|
598
753
|
const opts = getCircularOptions(exitTransition.props);
|
|
599
754
|
const open = opts.direction === "open";
|
|
600
|
-
const t = (0,
|
|
755
|
+
const t = (0, import_remotion5.interpolate)(frame, [start, durationInFrames], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
601
756
|
const radiusPct = open ? 150 * (1 - t) : 150 * t;
|
|
602
757
|
clipPath = `circle(${radiusPct}% at ${Math.round(opts.center.x * 100)}% ${Math.round(opts.center.y * 100)}%)`;
|
|
603
758
|
}
|
|
604
759
|
}
|
|
605
760
|
const transform = `translate(${translateX}px, ${translateY}px) scale(${scale})`;
|
|
606
|
-
return /* @__PURE__ */ (0,
|
|
761
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_remotion5.AbsoluteFill, { style: { opacity, transform, clipPath, filter }, children });
|
|
607
762
|
};
|
|
608
763
|
var SegmentComponentMetadata = {
|
|
609
764
|
kind: "primitive",
|
|
@@ -616,18 +771,18 @@ var SegmentComponentMetadata = {
|
|
|
616
771
|
};
|
|
617
772
|
|
|
618
773
|
// src/components/primitives/Shape.tsx
|
|
619
|
-
var
|
|
620
|
-
var
|
|
621
|
-
var ShapePropsSchema =
|
|
622
|
-
shape:
|
|
623
|
-
x:
|
|
624
|
-
y:
|
|
625
|
-
width:
|
|
626
|
-
height:
|
|
627
|
-
fill:
|
|
628
|
-
strokeColor:
|
|
629
|
-
strokeWidth:
|
|
630
|
-
opacity:
|
|
774
|
+
var import_zod12 = require("zod");
|
|
775
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
776
|
+
var ShapePropsSchema = import_zod12.z.object({
|
|
777
|
+
shape: import_zod12.z.enum(["rect", "circle"]).default("rect"),
|
|
778
|
+
x: import_zod12.z.number().default(0),
|
|
779
|
+
y: import_zod12.z.number().default(0),
|
|
780
|
+
width: import_zod12.z.number().positive().default(100),
|
|
781
|
+
height: import_zod12.z.number().positive().default(100),
|
|
782
|
+
fill: import_zod12.z.string().default("#FFFFFF"),
|
|
783
|
+
strokeColor: import_zod12.z.string().optional(),
|
|
784
|
+
strokeWidth: import_zod12.z.number().min(0).default(0),
|
|
785
|
+
opacity: import_zod12.z.number().min(0).max(1).default(1)
|
|
631
786
|
});
|
|
632
787
|
var Shape = ({
|
|
633
788
|
shape,
|
|
@@ -640,7 +795,7 @@ var Shape = ({
|
|
|
640
795
|
strokeWidth,
|
|
641
796
|
opacity
|
|
642
797
|
}) => {
|
|
643
|
-
return /* @__PURE__ */ (0,
|
|
798
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
644
799
|
"div",
|
|
645
800
|
{
|
|
646
801
|
style: {
|
|
@@ -665,15 +820,14 @@ var ShapeComponentMetadata = {
|
|
|
665
820
|
};
|
|
666
821
|
|
|
667
822
|
// src/components/primitives/Stack.tsx
|
|
668
|
-
var
|
|
669
|
-
var
|
|
670
|
-
var
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
justify: import_zod10.z.enum(["start", "center", "end", "between"]).default("center")
|
|
823
|
+
var import_zod13 = require("zod");
|
|
824
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
825
|
+
var StackPropsSchema = import_zod13.z.object({
|
|
826
|
+
direction: import_zod13.z.enum(["row", "column"]).default("column"),
|
|
827
|
+
gap: import_zod13.z.number().min(0).default(24),
|
|
828
|
+
padding: import_zod13.z.number().min(0).default(0),
|
|
829
|
+
align: import_zod13.z.enum(["start", "center", "end", "stretch"]).default("center"),
|
|
830
|
+
justify: import_zod13.z.enum(["start", "center", "end", "between"]).default("center")
|
|
677
831
|
});
|
|
678
832
|
var mapAlign2 = (a) => {
|
|
679
833
|
if (a === "start") return "flex-start";
|
|
@@ -688,8 +842,8 @@ var mapJustify2 = (j) => {
|
|
|
688
842
|
return "center";
|
|
689
843
|
};
|
|
690
844
|
var Stack = ({ direction, gap, padding, align, justify, children }) => {
|
|
691
|
-
return /* @__PURE__ */ (0,
|
|
692
|
-
|
|
845
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
846
|
+
Fill,
|
|
693
847
|
{
|
|
694
848
|
style: {
|
|
695
849
|
display: "flex",
|
|
@@ -713,17 +867,22 @@ var StackComponentMetadata = {
|
|
|
713
867
|
};
|
|
714
868
|
|
|
715
869
|
// src/components/primitives/Text.tsx
|
|
716
|
-
var
|
|
717
|
-
var
|
|
718
|
-
var
|
|
719
|
-
var TextPropsSchema =
|
|
720
|
-
content:
|
|
721
|
-
fontSize:
|
|
722
|
-
color:
|
|
723
|
-
|
|
724
|
-
|
|
870
|
+
var import_remotion6 = require("remotion");
|
|
871
|
+
var import_zod14 = require("zod");
|
|
872
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
873
|
+
var TextPropsSchema = import_zod14.z.object({
|
|
874
|
+
content: import_zod14.z.string(),
|
|
875
|
+
fontSize: import_zod14.z.number().default(48),
|
|
876
|
+
color: import_zod14.z.string().default("#FFFFFF"),
|
|
877
|
+
fontFamily: import_zod14.z.string().default("Inter"),
|
|
878
|
+
position: import_zod14.z.enum(["top", "center", "bottom", "left", "right"]).default("center"),
|
|
879
|
+
animation: import_zod14.z.enum(["none", "fade", "slide", "zoom"]).default("fade"),
|
|
880
|
+
maxWidthPct: import_zod14.z.number().min(0.1).max(1).default(0.9),
|
|
881
|
+
safeInsetPct: import_zod14.z.number().min(0).max(0.25).default(0.06),
|
|
882
|
+
textAlign: import_zod14.z.enum(["left", "center", "right"]).default("center")
|
|
725
883
|
});
|
|
726
|
-
var getPositionStyles = (position) => {
|
|
884
|
+
var getPositionStyles = (position, safeInsetPct) => {
|
|
885
|
+
const inset = `${(safeInsetPct * 100).toFixed(2)}%`;
|
|
727
886
|
const base = {
|
|
728
887
|
display: "flex",
|
|
729
888
|
justifyContent: "center",
|
|
@@ -731,13 +890,13 @@ var getPositionStyles = (position) => {
|
|
|
731
890
|
};
|
|
732
891
|
switch (position) {
|
|
733
892
|
case "top":
|
|
734
|
-
return { ...base, alignItems: "flex-start", paddingTop:
|
|
893
|
+
return { ...base, alignItems: "flex-start", paddingTop: inset };
|
|
735
894
|
case "bottom":
|
|
736
|
-
return { ...base, alignItems: "flex-end", paddingBottom:
|
|
895
|
+
return { ...base, alignItems: "flex-end", paddingBottom: inset };
|
|
737
896
|
case "left":
|
|
738
|
-
return { ...base, justifyContent: "flex-start", paddingLeft:
|
|
897
|
+
return { ...base, justifyContent: "flex-start", paddingLeft: inset };
|
|
739
898
|
case "right":
|
|
740
|
-
return { ...base, justifyContent: "flex-end", paddingRight:
|
|
899
|
+
return { ...base, justifyContent: "flex-end", paddingRight: inset };
|
|
741
900
|
default:
|
|
742
901
|
return base;
|
|
743
902
|
}
|
|
@@ -746,29 +905,29 @@ var getAnimationStyle = (frame, animation) => {
|
|
|
746
905
|
const animDuration = 30;
|
|
747
906
|
switch (animation) {
|
|
748
907
|
case "fade": {
|
|
749
|
-
const opacity = (0,
|
|
908
|
+
const opacity = (0, import_remotion6.interpolate)(frame, [0, animDuration], [0, 1], {
|
|
750
909
|
extrapolateLeft: "clamp",
|
|
751
910
|
extrapolateRight: "clamp"
|
|
752
911
|
});
|
|
753
912
|
return { opacity };
|
|
754
913
|
}
|
|
755
914
|
case "slide": {
|
|
756
|
-
const translateY = (0,
|
|
915
|
+
const translateY = (0, import_remotion6.interpolate)(frame, [0, animDuration], [50, 0], {
|
|
757
916
|
extrapolateLeft: "clamp",
|
|
758
917
|
extrapolateRight: "clamp"
|
|
759
918
|
});
|
|
760
|
-
const opacity = (0,
|
|
919
|
+
const opacity = (0, import_remotion6.interpolate)(frame, [0, animDuration], [0, 1], {
|
|
761
920
|
extrapolateLeft: "clamp",
|
|
762
921
|
extrapolateRight: "clamp"
|
|
763
922
|
});
|
|
764
923
|
return { transform: `translateY(${translateY}px)`, opacity };
|
|
765
924
|
}
|
|
766
925
|
case "zoom": {
|
|
767
|
-
const scale = (0,
|
|
926
|
+
const scale = (0, import_remotion6.interpolate)(frame, [0, animDuration], [0.8, 1], {
|
|
768
927
|
extrapolateLeft: "clamp",
|
|
769
928
|
extrapolateRight: "clamp"
|
|
770
929
|
});
|
|
771
|
-
const opacity = (0,
|
|
930
|
+
const opacity = (0, import_remotion6.interpolate)(frame, [0, animDuration], [0, 1], {
|
|
772
931
|
extrapolateLeft: "clamp",
|
|
773
932
|
extrapolateRight: "clamp"
|
|
774
933
|
});
|
|
@@ -778,18 +937,32 @@ var getAnimationStyle = (frame, animation) => {
|
|
|
778
937
|
return {};
|
|
779
938
|
}
|
|
780
939
|
};
|
|
781
|
-
var Text = ({
|
|
782
|
-
|
|
783
|
-
|
|
940
|
+
var Text = ({
|
|
941
|
+
content,
|
|
942
|
+
fontSize,
|
|
943
|
+
color,
|
|
944
|
+
fontFamily,
|
|
945
|
+
position,
|
|
946
|
+
animation,
|
|
947
|
+
maxWidthPct,
|
|
948
|
+
safeInsetPct,
|
|
949
|
+
textAlign
|
|
950
|
+
}) => {
|
|
951
|
+
const frame = (0, import_remotion6.useCurrentFrame)();
|
|
952
|
+
const positionStyles6 = getPositionStyles(position, safeInsetPct);
|
|
784
953
|
const animationStyles = getAnimationStyle(frame, animation);
|
|
785
|
-
return /* @__PURE__ */ (0,
|
|
954
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Fill, { style: positionStyles6, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
786
955
|
"div",
|
|
787
956
|
{
|
|
788
957
|
style: {
|
|
789
958
|
fontSize,
|
|
790
959
|
color,
|
|
960
|
+
fontFamily,
|
|
791
961
|
fontWeight: 600,
|
|
792
|
-
textAlign
|
|
962
|
+
textAlign,
|
|
963
|
+
maxWidth: `${Math.round(maxWidthPct * 100)}%`,
|
|
964
|
+
overflowWrap: "anywhere",
|
|
965
|
+
wordBreak: "break-word",
|
|
793
966
|
...animationStyles
|
|
794
967
|
},
|
|
795
968
|
children: content
|
|
@@ -820,20 +993,20 @@ var TextComponentMetadata = {
|
|
|
820
993
|
};
|
|
821
994
|
|
|
822
995
|
// src/components/primitives/Video.tsx
|
|
823
|
-
var
|
|
824
|
-
var
|
|
825
|
-
var
|
|
826
|
-
var VideoPropsSchema =
|
|
827
|
-
src:
|
|
828
|
-
fit:
|
|
829
|
-
borderRadius:
|
|
830
|
-
opacity:
|
|
831
|
-
muted:
|
|
996
|
+
var import_remotion7 = require("remotion");
|
|
997
|
+
var import_zod15 = require("zod");
|
|
998
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
999
|
+
var VideoPropsSchema = import_zod15.z.object({
|
|
1000
|
+
src: import_zod15.z.string().min(1),
|
|
1001
|
+
fit: import_zod15.z.enum(["cover", "contain"]).default("cover"),
|
|
1002
|
+
borderRadius: import_zod15.z.number().min(0).default(0),
|
|
1003
|
+
opacity: import_zod15.z.number().min(0).max(1).default(1),
|
|
1004
|
+
muted: import_zod15.z.boolean().default(true)
|
|
832
1005
|
});
|
|
833
|
-
var resolveAsset3 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
1006
|
+
var resolveAsset3 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion7.staticFile)(staticFileInputFromAssetPath(value));
|
|
834
1007
|
var Video2 = ({ src, fit, borderRadius, opacity, muted }) => {
|
|
835
|
-
return /* @__PURE__ */ (0,
|
|
836
|
-
|
|
1008
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Fill, { style: { opacity }, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1009
|
+
import_remotion7.Video,
|
|
837
1010
|
{
|
|
838
1011
|
src: resolveAsset3(src),
|
|
839
1012
|
muted,
|
|
@@ -849,19 +1022,19 @@ var VideoComponentMetadata = {
|
|
|
849
1022
|
};
|
|
850
1023
|
|
|
851
1024
|
// src/components/composites/AnimatedCounter.tsx
|
|
852
|
-
var
|
|
853
|
-
var
|
|
854
|
-
var
|
|
855
|
-
var AnimatedCounterPropsSchema =
|
|
856
|
-
from:
|
|
857
|
-
to:
|
|
858
|
-
fontSize:
|
|
859
|
-
color:
|
|
860
|
-
fontFamily:
|
|
861
|
-
fontWeight:
|
|
862
|
-
icon:
|
|
863
|
-
suffix:
|
|
864
|
-
animationType:
|
|
1025
|
+
var import_remotion8 = require("remotion");
|
|
1026
|
+
var import_zod16 = require("zod");
|
|
1027
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1028
|
+
var AnimatedCounterPropsSchema = import_zod16.z.object({
|
|
1029
|
+
from: import_zod16.z.number().default(0),
|
|
1030
|
+
to: import_zod16.z.number().default(100),
|
|
1031
|
+
fontSize: import_zod16.z.number().min(8).max(300).default(96),
|
|
1032
|
+
color: import_zod16.z.string().default("#FFFFFF"),
|
|
1033
|
+
fontFamily: import_zod16.z.string().default("Inter"),
|
|
1034
|
+
fontWeight: import_zod16.z.number().int().min(100).max(900).default(700),
|
|
1035
|
+
icon: import_zod16.z.string().optional(),
|
|
1036
|
+
suffix: import_zod16.z.string().optional(),
|
|
1037
|
+
animationType: import_zod16.z.enum(["spring", "linear"]).default("spring")
|
|
865
1038
|
});
|
|
866
1039
|
var AnimatedCounter = ({
|
|
867
1040
|
from,
|
|
@@ -875,16 +1048,16 @@ var AnimatedCounter = ({
|
|
|
875
1048
|
animationType,
|
|
876
1049
|
__wavesDurationInFrames
|
|
877
1050
|
}) => {
|
|
878
|
-
const frame = (0,
|
|
879
|
-
const { fps } = (0,
|
|
1051
|
+
const frame = (0, import_remotion8.useCurrentFrame)();
|
|
1052
|
+
const { fps } = (0, import_remotion8.useVideoConfig)();
|
|
880
1053
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
881
|
-
const progress = animationType === "spring" ? (0,
|
|
1054
|
+
const progress = animationType === "spring" ? (0, import_remotion8.spring)({ frame, fps, config: { damping: 14, stiffness: 110, mass: 0.9 } }) : (0, import_remotion8.interpolate)(frame, [0, total], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
882
1055
|
const value = from + (to - from) * Math.max(0, Math.min(1, progress));
|
|
883
1056
|
const rounded = Math.round(value);
|
|
884
1057
|
const label = `${rounded.toLocaleString()}${suffix ?? ""}`;
|
|
885
|
-
return /* @__PURE__ */ (0,
|
|
886
|
-
icon ? /* @__PURE__ */ (0,
|
|
887
|
-
/* @__PURE__ */ (0,
|
|
1058
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Fill, { style: { display: "flex", alignItems: "center", justifyContent: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { textAlign: "center" }, children: [
|
|
1059
|
+
icon ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: { fontSize: Math.round(fontSize * 0.5), marginBottom: 18 }, children: icon }) : null,
|
|
1060
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: { fontSize, color, fontFamily, fontWeight, lineHeight: 1 }, children: label })
|
|
888
1061
|
] }) });
|
|
889
1062
|
};
|
|
890
1063
|
var AnimatedCounterComponentMetadata = {
|
|
@@ -899,27 +1072,27 @@ var AnimatedCounterComponentMetadata = {
|
|
|
899
1072
|
};
|
|
900
1073
|
|
|
901
1074
|
// src/components/composites/BarChart.tsx
|
|
902
|
-
var
|
|
903
|
-
var
|
|
904
|
-
var
|
|
905
|
-
var BarChartPropsSchema =
|
|
906
|
-
data:
|
|
907
|
-
label:
|
|
908
|
-
value:
|
|
909
|
-
color:
|
|
1075
|
+
var import_remotion9 = require("remotion");
|
|
1076
|
+
var import_zod17 = require("zod");
|
|
1077
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1078
|
+
var BarChartPropsSchema = import_zod17.z.object({
|
|
1079
|
+
data: import_zod17.z.array(import_zod17.z.object({
|
|
1080
|
+
label: import_zod17.z.string().min(1),
|
|
1081
|
+
value: import_zod17.z.number(),
|
|
1082
|
+
color: import_zod17.z.string().optional()
|
|
910
1083
|
})).min(2).max(8),
|
|
911
|
-
orientation:
|
|
912
|
-
showValues:
|
|
913
|
-
showGrid:
|
|
914
|
-
maxValue:
|
|
1084
|
+
orientation: import_zod17.z.enum(["horizontal", "vertical"]).default("vertical"),
|
|
1085
|
+
showValues: import_zod17.z.boolean().default(true),
|
|
1086
|
+
showGrid: import_zod17.z.boolean().default(false),
|
|
1087
|
+
maxValue: import_zod17.z.number().optional()
|
|
915
1088
|
});
|
|
916
1089
|
var BarChart = ({ data, orientation, showValues, showGrid, maxValue }) => {
|
|
917
|
-
const frame = (0,
|
|
918
|
-
const { fps } = (0,
|
|
1090
|
+
const frame = (0, import_remotion9.useCurrentFrame)();
|
|
1091
|
+
const { fps } = (0, import_remotion9.useVideoConfig)();
|
|
919
1092
|
const max = maxValue ?? Math.max(...data.map((d) => d.value));
|
|
920
|
-
return /* @__PURE__ */ (0,
|
|
921
|
-
showGrid ? /* @__PURE__ */ (0,
|
|
922
|
-
/* @__PURE__ */ (0,
|
|
1093
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(Fill, { style: { padding: 90, boxSizing: "border-box" }, children: [
|
|
1094
|
+
showGrid ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { position: "absolute", left: 90, right: 90, top: 90, bottom: 90, opacity: 0.15, backgroundImage: "linear-gradient(#fff 1px, transparent 1px)", backgroundSize: "100% 60px" } }) : null,
|
|
1095
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
923
1096
|
"div",
|
|
924
1097
|
{
|
|
925
1098
|
style: {
|
|
@@ -932,13 +1105,13 @@ var BarChart = ({ data, orientation, showValues, showGrid, maxValue }) => {
|
|
|
932
1105
|
justifyContent: "space-between"
|
|
933
1106
|
},
|
|
934
1107
|
children: data.map((d, i) => {
|
|
935
|
-
const p = (0,
|
|
1108
|
+
const p = (0, import_remotion9.spring)({ frame: frame - i * 4, fps, config: { damping: 14, stiffness: 120, mass: 0.9 } });
|
|
936
1109
|
const ratio = max === 0 ? 0 : d.value / max * p;
|
|
937
1110
|
const color = d.color ?? "#0A84FF";
|
|
938
|
-
return /* @__PURE__ */ (0,
|
|
939
|
-
orientation === "vertical" ? /* @__PURE__ */ (0,
|
|
940
|
-
/* @__PURE__ */ (0,
|
|
941
|
-
showValues ? /* @__PURE__ */ (0,
|
|
1111
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { flex: 1, display: "flex", flexDirection: "column", alignItems: "center", gap: 10 }, children: [
|
|
1112
|
+
orientation === "vertical" ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { width: "100%", flex: 1, display: "flex", alignItems: "flex-end" }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { width: "100%", height: `${Math.round(ratio * 100)}%`, backgroundColor: color, borderRadius: 12 } }) }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { width: "100%", display: "flex", alignItems: "center", gap: 12 }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { flex: 1, height: 18, backgroundColor: "rgba(255,255,255,0.15)", borderRadius: 9999, overflow: "hidden" }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { width: `${Math.round(ratio * 100)}%`, height: "100%", backgroundColor: color } }) }) }),
|
|
1113
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { color: "#FFFFFF", fontWeight: 700, fontSize: 22, opacity: 0.9 }, children: d.label }),
|
|
1114
|
+
showValues ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { color: "#FFFFFF", fontWeight: 800, fontSize: 26 }, children: Math.round(d.value).toLocaleString() }) : null
|
|
942
1115
|
] }, d.label);
|
|
943
1116
|
})
|
|
944
1117
|
}
|
|
@@ -953,31 +1126,31 @@ var BarChartComponentMetadata = {
|
|
|
953
1126
|
};
|
|
954
1127
|
|
|
955
1128
|
// src/components/composites/CardStack.tsx
|
|
956
|
-
var
|
|
957
|
-
var
|
|
958
|
-
var
|
|
959
|
-
var CardSchema =
|
|
960
|
-
title:
|
|
961
|
-
content:
|
|
962
|
-
backgroundColor:
|
|
1129
|
+
var import_remotion10 = require("remotion");
|
|
1130
|
+
var import_zod18 = require("zod");
|
|
1131
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1132
|
+
var CardSchema = import_zod18.z.object({
|
|
1133
|
+
title: import_zod18.z.string().min(1),
|
|
1134
|
+
content: import_zod18.z.string().min(1),
|
|
1135
|
+
backgroundColor: import_zod18.z.string().optional()
|
|
963
1136
|
});
|
|
964
|
-
var CardStackPropsSchema =
|
|
965
|
-
cards:
|
|
966
|
-
transition:
|
|
967
|
-
displayDuration:
|
|
1137
|
+
var CardStackPropsSchema = import_zod18.z.object({
|
|
1138
|
+
cards: import_zod18.z.array(CardSchema).min(2).max(5),
|
|
1139
|
+
transition: import_zod18.z.enum(["flip", "slide", "fade"]).default("flip"),
|
|
1140
|
+
displayDuration: import_zod18.z.number().int().min(30).max(150).default(90)
|
|
968
1141
|
});
|
|
969
1142
|
var CardStack = ({ cards, transition, displayDuration }) => {
|
|
970
|
-
const frame = (0,
|
|
971
|
-
const { fps } = (0,
|
|
1143
|
+
const frame = (0, import_remotion10.useCurrentFrame)();
|
|
1144
|
+
const { fps } = (0, import_remotion10.useVideoConfig)();
|
|
972
1145
|
const index = Math.min(cards.length - 1, Math.floor(frame / displayDuration));
|
|
973
1146
|
const local = frame - index * displayDuration;
|
|
974
|
-
const p = (0,
|
|
1147
|
+
const p = (0, import_remotion10.spring)({ frame: local, fps, config: { damping: 14, stiffness: 120, mass: 0.9 } });
|
|
975
1148
|
const card = cards[index];
|
|
976
1149
|
const bg = card.backgroundColor ?? "rgba(255,255,255,0.1)";
|
|
977
1150
|
const opacity = transition === "fade" ? p : 1;
|
|
978
|
-
const slideX = transition === "slide" ? (0,
|
|
979
|
-
const rotateY = transition === "flip" ? (0,
|
|
980
|
-
return /* @__PURE__ */ (0,
|
|
1151
|
+
const slideX = transition === "slide" ? (0, import_remotion10.interpolate)(p, [0, 1], [80, 0]) : 0;
|
|
1152
|
+
const rotateY = transition === "flip" ? (0, import_remotion10.interpolate)(p, [0, 1], [70, 0]) : 0;
|
|
1153
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Fill, { style: { display: "flex", justifyContent: "center", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
981
1154
|
"div",
|
|
982
1155
|
{
|
|
983
1156
|
style: {
|
|
@@ -994,8 +1167,8 @@ var CardStack = ({ cards, transition, displayDuration }) => {
|
|
|
994
1167
|
opacity
|
|
995
1168
|
},
|
|
996
1169
|
children: [
|
|
997
|
-
/* @__PURE__ */ (0,
|
|
998
|
-
/* @__PURE__ */ (0,
|
|
1170
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { style: { fontSize: 56, fontWeight: 900, marginBottom: 22 }, children: card.title }),
|
|
1171
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { style: { fontSize: 30, fontWeight: 700, opacity: 0.9, lineHeight: 1.3 }, children: card.content })
|
|
999
1172
|
]
|
|
1000
1173
|
}
|
|
1001
1174
|
) });
|
|
@@ -1008,18 +1181,19 @@ var CardStackComponentMetadata = {
|
|
|
1008
1181
|
};
|
|
1009
1182
|
|
|
1010
1183
|
// src/components/composites/CircularReveal.tsx
|
|
1011
|
-
var
|
|
1012
|
-
var
|
|
1013
|
-
var
|
|
1014
|
-
var
|
|
1015
|
-
|
|
1016
|
-
|
|
1184
|
+
var import_react6 = __toESM(require("react"));
|
|
1185
|
+
var import_remotion11 = require("remotion");
|
|
1186
|
+
var import_zod19 = require("zod");
|
|
1187
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1188
|
+
var CenterSchema = import_zod19.z.object({
|
|
1189
|
+
x: import_zod19.z.number().min(0).max(1).default(0.5),
|
|
1190
|
+
y: import_zod19.z.number().min(0).max(1).default(0.5)
|
|
1017
1191
|
});
|
|
1018
|
-
var CircularRevealPropsSchema =
|
|
1019
|
-
durationInFrames:
|
|
1020
|
-
direction:
|
|
1192
|
+
var CircularRevealPropsSchema = import_zod19.z.object({
|
|
1193
|
+
durationInFrames: import_zod19.z.number().int().min(10).max(60).default(30),
|
|
1194
|
+
direction: import_zod19.z.enum(["open", "close"]).default("open"),
|
|
1021
1195
|
center: CenterSchema.optional(),
|
|
1022
|
-
phase:
|
|
1196
|
+
phase: import_zod19.z.enum(["in", "out", "inOut"]).default("inOut")
|
|
1023
1197
|
});
|
|
1024
1198
|
var CircularReveal = ({
|
|
1025
1199
|
durationInFrames,
|
|
@@ -1029,22 +1203,23 @@ var CircularReveal = ({
|
|
|
1029
1203
|
children,
|
|
1030
1204
|
__wavesDurationInFrames
|
|
1031
1205
|
}) => {
|
|
1032
|
-
const
|
|
1206
|
+
const layers = import_react6.default.Children.toArray(children);
|
|
1207
|
+
const frame = (0, import_remotion11.useCurrentFrame)();
|
|
1033
1208
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
1034
1209
|
const d = Math.min(durationInFrames, total);
|
|
1035
1210
|
const c = center ?? { x: 0.5, y: 0.5 };
|
|
1036
1211
|
const open = direction === "open";
|
|
1037
1212
|
let radiusPct = open ? 0 : 150;
|
|
1038
1213
|
if (phase === "in" || phase === "inOut") {
|
|
1039
|
-
const t = (0,
|
|
1214
|
+
const t = (0, import_remotion11.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1040
1215
|
radiusPct = open ? 150 * t : 150 * (1 - t);
|
|
1041
1216
|
}
|
|
1042
1217
|
if (phase === "out" || phase === "inOut") {
|
|
1043
1218
|
const start = Math.max(0, total - d);
|
|
1044
|
-
const t = (0,
|
|
1219
|
+
const t = (0, import_remotion11.interpolate)(frame, [start, total], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1045
1220
|
radiusPct = open ? 150 * (1 - t) : 150 * t;
|
|
1046
1221
|
}
|
|
1047
|
-
return /* @__PURE__ */ (0,
|
|
1222
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Fill, { style: { clipPath: `circle(${radiusPct}% at ${Math.round(c.x * 100)}% ${Math.round(c.y * 100)}%)` }, children: layers.map((child, i) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { style: { position: "absolute", inset: 0 }, children: child }, i)) });
|
|
1048
1223
|
};
|
|
1049
1224
|
var CircularRevealComponentMetadata = {
|
|
1050
1225
|
kind: "composite",
|
|
@@ -1056,21 +1231,21 @@ var CircularRevealComponentMetadata = {
|
|
|
1056
1231
|
};
|
|
1057
1232
|
|
|
1058
1233
|
// src/components/composites/CountUpText.tsx
|
|
1059
|
-
var
|
|
1060
|
-
var
|
|
1061
|
-
var
|
|
1062
|
-
var CountUpTextPropsSchema =
|
|
1063
|
-
from:
|
|
1064
|
-
to:
|
|
1065
|
-
fontSize:
|
|
1066
|
-
color:
|
|
1067
|
-
fontFamily:
|
|
1068
|
-
fontWeight:
|
|
1069
|
-
position:
|
|
1070
|
-
format:
|
|
1071
|
-
decimals:
|
|
1072
|
-
prefix:
|
|
1073
|
-
suffix:
|
|
1234
|
+
var import_remotion12 = require("remotion");
|
|
1235
|
+
var import_zod20 = require("zod");
|
|
1236
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1237
|
+
var CountUpTextPropsSchema = import_zod20.z.object({
|
|
1238
|
+
from: import_zod20.z.number().default(0),
|
|
1239
|
+
to: import_zod20.z.number().default(100),
|
|
1240
|
+
fontSize: import_zod20.z.number().min(8).max(240).default(72),
|
|
1241
|
+
color: import_zod20.z.string().default("#FFFFFF"),
|
|
1242
|
+
fontFamily: import_zod20.z.string().default("Inter"),
|
|
1243
|
+
fontWeight: import_zod20.z.number().int().min(100).max(900).default(700),
|
|
1244
|
+
position: import_zod20.z.enum(["top", "center", "bottom"]).default("center"),
|
|
1245
|
+
format: import_zod20.z.enum(["integer", "decimal", "currency", "percentage"]).default("integer"),
|
|
1246
|
+
decimals: import_zod20.z.number().int().min(0).max(4).default(0),
|
|
1247
|
+
prefix: import_zod20.z.string().optional(),
|
|
1248
|
+
suffix: import_zod20.z.string().optional()
|
|
1074
1249
|
});
|
|
1075
1250
|
var positionStyles = (position) => {
|
|
1076
1251
|
if (position === "top") return { justifyContent: "center", alignItems: "flex-start", paddingTop: 90 };
|
|
@@ -1097,15 +1272,15 @@ var CountUpText = ({
|
|
|
1097
1272
|
suffix,
|
|
1098
1273
|
__wavesDurationInFrames
|
|
1099
1274
|
}) => {
|
|
1100
|
-
const frame = (0,
|
|
1101
|
-
const { fps } = (0,
|
|
1275
|
+
const frame = (0, import_remotion12.useCurrentFrame)();
|
|
1276
|
+
const { fps } = (0, import_remotion12.useVideoConfig)();
|
|
1102
1277
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
1103
|
-
const p = (0,
|
|
1278
|
+
const p = (0, import_remotion12.spring)({ frame, fps, config: { damping: 14, stiffness: 110, mass: 0.9 } });
|
|
1104
1279
|
const progress = Math.max(0, Math.min(1, p));
|
|
1105
1280
|
const value = from + (to - from) * progress;
|
|
1106
|
-
const fade = (0,
|
|
1281
|
+
const fade = (0, import_remotion12.interpolate)(frame, [0, Math.min(12, total)], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1107
1282
|
const label = `${prefix ?? ""}${formatValue(value, format, decimals)}${suffix ?? ""}`;
|
|
1108
|
-
return /* @__PURE__ */ (0,
|
|
1283
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Fill, { style: { display: "flex", ...positionStyles(position) }, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { style: { fontSize, color, fontFamily, fontWeight, opacity: fade, lineHeight: 1 }, children: label }) });
|
|
1109
1284
|
};
|
|
1110
1285
|
var CountUpTextComponentMetadata = {
|
|
1111
1286
|
kind: "composite",
|
|
@@ -1115,10 +1290,11 @@ var CountUpTextComponentMetadata = {
|
|
|
1115
1290
|
};
|
|
1116
1291
|
|
|
1117
1292
|
// src/components/composites/FadeTransition.tsx
|
|
1118
|
-
var
|
|
1119
|
-
var
|
|
1120
|
-
var
|
|
1121
|
-
var
|
|
1293
|
+
var import_react7 = __toESM(require("react"));
|
|
1294
|
+
var import_remotion13 = require("remotion");
|
|
1295
|
+
var import_zod21 = require("zod");
|
|
1296
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1297
|
+
var EasingSchema = import_zod21.z.enum(["linear", "easeIn", "easeOut", "easeInOut"]);
|
|
1122
1298
|
function ease(t, easing) {
|
|
1123
1299
|
const x = Math.max(0, Math.min(1, t));
|
|
1124
1300
|
if (easing === "linear") return x;
|
|
@@ -1126,10 +1302,10 @@ function ease(t, easing) {
|
|
|
1126
1302
|
if (easing === "easeOut") return 1 - (1 - x) * (1 - x);
|
|
1127
1303
|
return x < 0.5 ? 2 * x * x : 1 - 2 * (1 - x) * (1 - x);
|
|
1128
1304
|
}
|
|
1129
|
-
var FadeTransitionPropsSchema =
|
|
1130
|
-
durationInFrames:
|
|
1305
|
+
var FadeTransitionPropsSchema = import_zod21.z.object({
|
|
1306
|
+
durationInFrames: import_zod21.z.number().int().min(10).max(60).default(30),
|
|
1131
1307
|
easing: EasingSchema.default("easeInOut"),
|
|
1132
|
-
phase:
|
|
1308
|
+
phase: import_zod21.z.enum(["in", "out", "inOut"]).default("inOut")
|
|
1133
1309
|
});
|
|
1134
1310
|
var FadeTransition = ({
|
|
1135
1311
|
durationInFrames,
|
|
@@ -1138,20 +1314,21 @@ var FadeTransition = ({
|
|
|
1138
1314
|
children,
|
|
1139
1315
|
__wavesDurationInFrames
|
|
1140
1316
|
}) => {
|
|
1141
|
-
const
|
|
1317
|
+
const layers = import_react7.default.Children.toArray(children);
|
|
1318
|
+
const frame = (0, import_remotion13.useCurrentFrame)();
|
|
1142
1319
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
1143
1320
|
const d = Math.min(durationInFrames, total);
|
|
1144
1321
|
let opacity = 1;
|
|
1145
1322
|
if (phase === "in" || phase === "inOut") {
|
|
1146
|
-
const t = (0,
|
|
1323
|
+
const t = (0, import_remotion13.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1147
1324
|
opacity *= ease(t, easing);
|
|
1148
1325
|
}
|
|
1149
1326
|
if (phase === "out" || phase === "inOut") {
|
|
1150
1327
|
const start = Math.max(0, total - d);
|
|
1151
|
-
const t = (0,
|
|
1328
|
+
const t = (0, import_remotion13.interpolate)(frame, [start, total], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1152
1329
|
opacity *= 1 - ease(t, easing);
|
|
1153
1330
|
}
|
|
1154
|
-
return /* @__PURE__ */ (0,
|
|
1331
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Fill, { style: { opacity }, children: layers.map((child, i) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { style: { position: "absolute", inset: 0 }, children: child }, i)) });
|
|
1155
1332
|
};
|
|
1156
1333
|
var FadeTransitionComponentMetadata = {
|
|
1157
1334
|
kind: "composite",
|
|
@@ -1163,17 +1340,17 @@ var FadeTransitionComponentMetadata = {
|
|
|
1163
1340
|
};
|
|
1164
1341
|
|
|
1165
1342
|
// src/components/composites/GlitchText.tsx
|
|
1166
|
-
var
|
|
1167
|
-
var
|
|
1168
|
-
var
|
|
1169
|
-
var GlitchTextPropsSchema =
|
|
1170
|
-
content:
|
|
1171
|
-
fontSize:
|
|
1172
|
-
color:
|
|
1173
|
-
fontFamily:
|
|
1174
|
-
position:
|
|
1175
|
-
intensity:
|
|
1176
|
-
glitchDuration:
|
|
1343
|
+
var import_remotion14 = require("remotion");
|
|
1344
|
+
var import_zod22 = require("zod");
|
|
1345
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1346
|
+
var GlitchTextPropsSchema = import_zod22.z.object({
|
|
1347
|
+
content: import_zod22.z.string().max(100),
|
|
1348
|
+
fontSize: import_zod22.z.number().min(8).max(240).default(72),
|
|
1349
|
+
color: import_zod22.z.string().default("#FFFFFF"),
|
|
1350
|
+
fontFamily: import_zod22.z.string().default("monospace"),
|
|
1351
|
+
position: import_zod22.z.enum(["top", "center", "bottom"]).default("center"),
|
|
1352
|
+
intensity: import_zod22.z.number().int().min(1).max(10).default(5),
|
|
1353
|
+
glitchDuration: import_zod22.z.number().int().min(5).max(30).default(10)
|
|
1177
1354
|
});
|
|
1178
1355
|
var positionStyles2 = (position) => {
|
|
1179
1356
|
if (position === "top") return { justifyContent: "center", alignItems: "flex-start", paddingTop: 90 };
|
|
@@ -1193,7 +1370,7 @@ var GlitchText = ({
|
|
|
1193
1370
|
intensity,
|
|
1194
1371
|
glitchDuration
|
|
1195
1372
|
}) => {
|
|
1196
|
-
const frame = (0,
|
|
1373
|
+
const frame = (0, import_remotion14.useCurrentFrame)();
|
|
1197
1374
|
const active = frame < glitchDuration;
|
|
1198
1375
|
const seed = frame + 1;
|
|
1199
1376
|
const jitter = active ? (pseudoRandom(seed) - 0.5) * intensity * 6 : 0;
|
|
@@ -1207,10 +1384,10 @@ var GlitchText = ({
|
|
|
1207
1384
|
textTransform: "uppercase",
|
|
1208
1385
|
textAlign: "center"
|
|
1209
1386
|
};
|
|
1210
|
-
return /* @__PURE__ */ (0,
|
|
1211
|
-
/* @__PURE__ */ (0,
|
|
1212
|
-
/* @__PURE__ */ (0,
|
|
1213
|
-
/* @__PURE__ */ (0,
|
|
1387
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Fill, { style: { display: "flex", ...positionStyles2(position) }, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { style: { position: "relative" }, children: [
|
|
1388
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { style: { ...baseStyle, color, transform: `translate(${jitter}px, ${jitterY}px)` }, children: content }),
|
|
1389
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { style: { ...baseStyle, color: "#FF3B30", transform: `translate(${jitter + 4}px, ${jitterY}px)`, mixBlendMode: "screen", opacity: active ? 0.9 : 0 }, children: content }),
|
|
1390
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { style: { ...baseStyle, color: "#0A84FF", transform: `translate(${jitter - 4}px, ${jitterY}px)`, mixBlendMode: "screen", opacity: active ? 0.9 : 0 }, children: content })
|
|
1214
1391
|
] }) });
|
|
1215
1392
|
};
|
|
1216
1393
|
var GlitchTextComponentMetadata = {
|
|
@@ -1221,17 +1398,16 @@ var GlitchTextComponentMetadata = {
|
|
|
1221
1398
|
};
|
|
1222
1399
|
|
|
1223
1400
|
// src/components/composites/GridLayout.tsx
|
|
1224
|
-
var
|
|
1225
|
-
var
|
|
1226
|
-
var
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
padding: import_zod20.z.number().min(0).max(100).default(40)
|
|
1401
|
+
var import_zod23 = require("zod");
|
|
1402
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1403
|
+
var GridLayoutPropsSchema = import_zod23.z.object({
|
|
1404
|
+
columns: import_zod23.z.number().int().min(1).max(4).default(2),
|
|
1405
|
+
rows: import_zod23.z.number().int().min(1).max(4).default(2),
|
|
1406
|
+
gap: import_zod23.z.number().min(0).max(50).default(20),
|
|
1407
|
+
padding: import_zod23.z.number().min(0).max(100).default(40)
|
|
1232
1408
|
});
|
|
1233
1409
|
var GridLayout = ({ columns, rows, gap, padding, children }) => {
|
|
1234
|
-
return /* @__PURE__ */ (0,
|
|
1410
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Fill, { style: { padding, boxSizing: "border-box" }, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1235
1411
|
"div",
|
|
1236
1412
|
{
|
|
1237
1413
|
style: {
|
|
@@ -1256,23 +1432,23 @@ var GridLayoutComponentMetadata = {
|
|
|
1256
1432
|
};
|
|
1257
1433
|
|
|
1258
1434
|
// src/components/composites/ImageCollage.tsx
|
|
1259
|
-
var
|
|
1260
|
-
var
|
|
1261
|
-
var
|
|
1262
|
-
var ImageCollagePropsSchema =
|
|
1263
|
-
images:
|
|
1264
|
-
layout:
|
|
1265
|
-
stagger:
|
|
1435
|
+
var import_remotion15 = require("remotion");
|
|
1436
|
+
var import_zod24 = require("zod");
|
|
1437
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
1438
|
+
var ImageCollagePropsSchema = import_zod24.z.object({
|
|
1439
|
+
images: import_zod24.z.array(import_zod24.z.object({ src: import_zod24.z.string().min(1), caption: import_zod24.z.string().optional() })).min(2).max(9),
|
|
1440
|
+
layout: import_zod24.z.enum(["grid", "stack", "scatter"]).default("grid"),
|
|
1441
|
+
stagger: import_zod24.z.number().int().min(2).max(10).default(5)
|
|
1266
1442
|
});
|
|
1267
|
-
var resolveAsset4 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
1443
|
+
var resolveAsset4 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion15.staticFile)(staticFileInputFromAssetPath(value));
|
|
1268
1444
|
var ImageCollage = ({ images, layout, stagger }) => {
|
|
1269
|
-
const frame = (0,
|
|
1270
|
-
const { fps } = (0,
|
|
1445
|
+
const frame = (0, import_remotion15.useCurrentFrame)();
|
|
1446
|
+
const { fps } = (0, import_remotion15.useVideoConfig)();
|
|
1271
1447
|
const n = images.length;
|
|
1272
1448
|
const cols = Math.ceil(Math.sqrt(n));
|
|
1273
1449
|
const rows = Math.ceil(n / cols);
|
|
1274
1450
|
if (layout === "grid") {
|
|
1275
|
-
return /* @__PURE__ */ (0,
|
|
1451
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Fill, { style: { padding: 80, boxSizing: "border-box" }, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1276
1452
|
"div",
|
|
1277
1453
|
{
|
|
1278
1454
|
style: {
|
|
@@ -1284,21 +1460,21 @@ var ImageCollage = ({ images, layout, stagger }) => {
|
|
|
1284
1460
|
height: "100%"
|
|
1285
1461
|
},
|
|
1286
1462
|
children: images.map((img, i) => {
|
|
1287
|
-
const p = (0,
|
|
1288
|
-
return /* @__PURE__ */ (0,
|
|
1289
|
-
/* @__PURE__ */ (0,
|
|
1290
|
-
img.caption ? /* @__PURE__ */ (0,
|
|
1463
|
+
const p = (0, import_remotion15.spring)({ frame: frame - i * stagger, fps, config: { damping: 14, stiffness: 120, mass: 0.9 } });
|
|
1464
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { style: { position: "relative", overflow: "hidden", borderRadius: 18, opacity: p, transform: `scale(${0.92 + 0.08 * p})` }, children: [
|
|
1465
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_remotion15.Img, { src: resolveAsset4(img.src), style: { width: "100%", height: "100%", objectFit: "cover" } }),
|
|
1466
|
+
img.caption ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { style: { position: "absolute", left: 0, right: 0, bottom: 0, padding: 12, background: "linear-gradient(transparent, rgba(0,0,0,0.7))", color: "#fff", fontWeight: 700 }, children: img.caption }) : null
|
|
1291
1467
|
] }, i);
|
|
1292
1468
|
})
|
|
1293
1469
|
}
|
|
1294
1470
|
) });
|
|
1295
1471
|
}
|
|
1296
|
-
return /* @__PURE__ */ (0,
|
|
1297
|
-
const p = (0,
|
|
1472
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Fill, { children: images.map((img, i) => {
|
|
1473
|
+
const p = (0, import_remotion15.spring)({ frame: frame - i * stagger, fps, config: { damping: 14, stiffness: 120, mass: 0.9 } });
|
|
1298
1474
|
const baseRotate = layout === "stack" ? (i - (n - 1) / 2) * 4 : i * 17 % 20 - 10;
|
|
1299
1475
|
const baseX = layout === "scatter" ? i * 137 % 300 - 150 : 0;
|
|
1300
1476
|
const baseY = layout === "scatter" ? (i + 3) * 89 % 200 - 100 : 0;
|
|
1301
|
-
return /* @__PURE__ */ (0,
|
|
1477
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1302
1478
|
"div",
|
|
1303
1479
|
{
|
|
1304
1480
|
style: {
|
|
@@ -1313,7 +1489,7 @@ var ImageCollage = ({ images, layout, stagger }) => {
|
|
|
1313
1489
|
overflow: "hidden",
|
|
1314
1490
|
boxShadow: "0 20px 60px rgba(0,0,0,0.35)"
|
|
1315
1491
|
},
|
|
1316
|
-
children: /* @__PURE__ */ (0,
|
|
1492
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_remotion15.Img, { src: resolveAsset4(img.src), style: { width: "100%", height: "100%", objectFit: "cover" } })
|
|
1317
1493
|
},
|
|
1318
1494
|
i
|
|
1319
1495
|
);
|
|
@@ -1327,20 +1503,20 @@ var ImageCollageComponentMetadata = {
|
|
|
1327
1503
|
};
|
|
1328
1504
|
|
|
1329
1505
|
// src/components/composites/ImageReveal.tsx
|
|
1330
|
-
var
|
|
1331
|
-
var
|
|
1332
|
-
var
|
|
1333
|
-
var ImageRevealPropsSchema =
|
|
1334
|
-
src:
|
|
1335
|
-
direction:
|
|
1336
|
-
revealType:
|
|
1506
|
+
var import_remotion16 = require("remotion");
|
|
1507
|
+
var import_zod25 = require("zod");
|
|
1508
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
1509
|
+
var ImageRevealPropsSchema = import_zod25.z.object({
|
|
1510
|
+
src: import_zod25.z.string().min(1),
|
|
1511
|
+
direction: import_zod25.z.enum(["left", "right", "top", "bottom", "center"]).default("left"),
|
|
1512
|
+
revealType: import_zod25.z.enum(["wipe", "expand", "iris"]).default("wipe")
|
|
1337
1513
|
});
|
|
1338
|
-
var resolveAsset5 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
1514
|
+
var resolveAsset5 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion16.staticFile)(staticFileInputFromAssetPath(value));
|
|
1339
1515
|
var ImageReveal = ({ src, direction, revealType, __wavesDurationInFrames }) => {
|
|
1340
|
-
const frame = (0,
|
|
1516
|
+
const frame = (0, import_remotion16.useCurrentFrame)();
|
|
1341
1517
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
1342
1518
|
const d = Math.min(30, total);
|
|
1343
|
-
const p = (0,
|
|
1519
|
+
const p = (0, import_remotion16.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1344
1520
|
let clipPath;
|
|
1345
1521
|
let transform = "none";
|
|
1346
1522
|
let transformOrigin = "center center";
|
|
@@ -1363,8 +1539,8 @@ var ImageReveal = ({ src, direction, revealType, __wavesDurationInFrames }) => {
|
|
|
1363
1539
|
clipPath = `circle(${Math.round(150 * p)}% at 50% 50%)`;
|
|
1364
1540
|
}
|
|
1365
1541
|
const opacity = revealType === "expand" ? p : 1;
|
|
1366
|
-
return /* @__PURE__ */ (0,
|
|
1367
|
-
|
|
1542
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Fill, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1543
|
+
import_remotion16.Img,
|
|
1368
1544
|
{
|
|
1369
1545
|
src: resolveAsset5(src),
|
|
1370
1546
|
style: {
|
|
@@ -1387,27 +1563,27 @@ var ImageRevealComponentMetadata = {
|
|
|
1387
1563
|
};
|
|
1388
1564
|
|
|
1389
1565
|
// src/components/composites/ImageSequence.tsx
|
|
1390
|
-
var
|
|
1391
|
-
var
|
|
1392
|
-
var
|
|
1393
|
-
var ImageSequencePropsSchema =
|
|
1394
|
-
basePath:
|
|
1395
|
-
frameCount:
|
|
1396
|
-
filePattern:
|
|
1397
|
-
fps:
|
|
1566
|
+
var import_remotion17 = require("remotion");
|
|
1567
|
+
var import_zod26 = require("zod");
|
|
1568
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
1569
|
+
var ImageSequencePropsSchema = import_zod26.z.object({
|
|
1570
|
+
basePath: import_zod26.z.string().min(1),
|
|
1571
|
+
frameCount: import_zod26.z.number().int().positive(),
|
|
1572
|
+
filePattern: import_zod26.z.string().default("frame_{frame}.png"),
|
|
1573
|
+
fps: import_zod26.z.number().int().min(1).max(120).default(30)
|
|
1398
1574
|
});
|
|
1399
1575
|
function joinPath(base, file) {
|
|
1400
1576
|
if (base.endsWith("/")) return `${base}${file}`;
|
|
1401
1577
|
return `${base}/${file}`;
|
|
1402
1578
|
}
|
|
1403
|
-
var resolveAsset6 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
1579
|
+
var resolveAsset6 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion17.staticFile)(staticFileInputFromAssetPath(value));
|
|
1404
1580
|
var ImageSequence = ({ basePath, frameCount, filePattern, fps }) => {
|
|
1405
|
-
const frame = (0,
|
|
1406
|
-
const { fps: compFps } = (0,
|
|
1581
|
+
const frame = (0, import_remotion17.useCurrentFrame)();
|
|
1582
|
+
const { fps: compFps } = (0, import_remotion17.useVideoConfig)();
|
|
1407
1583
|
const index = Math.min(frameCount - 1, Math.max(0, Math.floor(frame * fps / compFps)));
|
|
1408
1584
|
const file = filePattern.replace("{frame}", String(index));
|
|
1409
1585
|
const src = joinPath(basePath, file);
|
|
1410
|
-
return /* @__PURE__ */ (0,
|
|
1586
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Fill, { children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_remotion17.Img, { src: resolveAsset6(src), style: { width: "100%", height: "100%", objectFit: "cover" } }) });
|
|
1411
1587
|
};
|
|
1412
1588
|
var ImageSequenceComponentMetadata = {
|
|
1413
1589
|
kind: "composite",
|
|
@@ -1417,26 +1593,26 @@ var ImageSequenceComponentMetadata = {
|
|
|
1417
1593
|
};
|
|
1418
1594
|
|
|
1419
1595
|
// src/components/composites/ImageWithCaption.tsx
|
|
1420
|
-
var
|
|
1421
|
-
var
|
|
1422
|
-
var
|
|
1423
|
-
var CaptionStyleSchema =
|
|
1424
|
-
fontSize:
|
|
1425
|
-
color:
|
|
1426
|
-
backgroundColor:
|
|
1596
|
+
var import_remotion18 = require("remotion");
|
|
1597
|
+
var import_zod27 = require("zod");
|
|
1598
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
1599
|
+
var CaptionStyleSchema = import_zod27.z.object({
|
|
1600
|
+
fontSize: import_zod27.z.number().min(12).max(80).default(32),
|
|
1601
|
+
color: import_zod27.z.string().default("#FFFFFF"),
|
|
1602
|
+
backgroundColor: import_zod27.z.string().default("rgba(0,0,0,0.7)")
|
|
1427
1603
|
});
|
|
1428
|
-
var ImageWithCaptionPropsSchema =
|
|
1429
|
-
src:
|
|
1430
|
-
caption:
|
|
1431
|
-
captionPosition:
|
|
1604
|
+
var ImageWithCaptionPropsSchema = import_zod27.z.object({
|
|
1605
|
+
src: import_zod27.z.string().min(1),
|
|
1606
|
+
caption: import_zod27.z.string().max(200),
|
|
1607
|
+
captionPosition: import_zod27.z.enum(["top", "bottom", "overlay"]).default("bottom"),
|
|
1432
1608
|
captionStyle: CaptionStyleSchema.optional()
|
|
1433
1609
|
});
|
|
1434
|
-
var resolveAsset7 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
1610
|
+
var resolveAsset7 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion18.staticFile)(staticFileInputFromAssetPath(value));
|
|
1435
1611
|
var ImageWithCaption = ({ src, caption, captionPosition, captionStyle }) => {
|
|
1436
|
-
const frame = (0,
|
|
1437
|
-
const p = (0,
|
|
1612
|
+
const frame = (0, import_remotion18.useCurrentFrame)();
|
|
1613
|
+
const p = (0, import_remotion18.interpolate)(frame, [8, 24], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1438
1614
|
const style = captionStyle ?? { fontSize: 32, color: "#FFFFFF", backgroundColor: "rgba(0,0,0,0.7)" };
|
|
1439
|
-
const captionBox = /* @__PURE__ */ (0,
|
|
1615
|
+
const captionBox = /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1440
1616
|
"div",
|
|
1441
1617
|
{
|
|
1442
1618
|
style: {
|
|
@@ -1453,15 +1629,15 @@ var ImageWithCaption = ({ src, caption, captionPosition, captionStyle }) => {
|
|
|
1453
1629
|
}
|
|
1454
1630
|
);
|
|
1455
1631
|
if (captionPosition === "top" || captionPosition === "bottom") {
|
|
1456
|
-
return /* @__PURE__ */ (0,
|
|
1632
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Fill, { style: { display: "flex", flexDirection: "column" }, children: [
|
|
1457
1633
|
captionPosition === "top" ? captionBox : null,
|
|
1458
|
-
/* @__PURE__ */ (0,
|
|
1634
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { style: { flex: 1, position: "relative" }, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_remotion18.Img, { src: resolveAsset7(src), style: { width: "100%", height: "100%", objectFit: "cover" } }) }),
|
|
1459
1635
|
captionPosition === "bottom" ? captionBox : null
|
|
1460
1636
|
] });
|
|
1461
1637
|
}
|
|
1462
|
-
return /* @__PURE__ */ (0,
|
|
1463
|
-
/* @__PURE__ */ (0,
|
|
1464
|
-
/* @__PURE__ */ (0,
|
|
1638
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Fill, { children: [
|
|
1639
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_remotion18.Img, { src: resolveAsset7(src), style: { width: "100%", height: "100%", objectFit: "cover" } }),
|
|
1640
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { style: { position: "absolute", left: 0, right: 0, bottom: 0 }, children: captionBox })
|
|
1465
1641
|
] });
|
|
1466
1642
|
};
|
|
1467
1643
|
var ImageWithCaptionComponentMetadata = {
|
|
@@ -1472,19 +1648,19 @@ var ImageWithCaptionComponentMetadata = {
|
|
|
1472
1648
|
};
|
|
1473
1649
|
|
|
1474
1650
|
// src/components/composites/InstagramStory.tsx
|
|
1475
|
-
var
|
|
1476
|
-
var
|
|
1477
|
-
var
|
|
1478
|
-
var InstagramStoryPropsSchema =
|
|
1479
|
-
backgroundImage:
|
|
1480
|
-
backgroundColor:
|
|
1481
|
-
profilePic:
|
|
1482
|
-
username:
|
|
1483
|
-
text:
|
|
1484
|
-
sticker:
|
|
1485
|
-
musicTrack:
|
|
1651
|
+
var import_remotion19 = require("remotion");
|
|
1652
|
+
var import_zod28 = require("zod");
|
|
1653
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
1654
|
+
var InstagramStoryPropsSchema = import_zod28.z.object({
|
|
1655
|
+
backgroundImage: import_zod28.z.string().optional(),
|
|
1656
|
+
backgroundColor: import_zod28.z.string().default("#000000"),
|
|
1657
|
+
profilePic: import_zod28.z.string().optional(),
|
|
1658
|
+
username: import_zod28.z.string().optional(),
|
|
1659
|
+
text: import_zod28.z.string().max(100).optional(),
|
|
1660
|
+
sticker: import_zod28.z.enum(["none", "poll", "question", "countdown"]).default("none"),
|
|
1661
|
+
musicTrack: import_zod28.z.string().optional()
|
|
1486
1662
|
});
|
|
1487
|
-
var resolveAsset8 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
1663
|
+
var resolveAsset8 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion19.staticFile)(staticFileInputFromAssetPath(value));
|
|
1488
1664
|
var InstagramStory = ({
|
|
1489
1665
|
backgroundImage,
|
|
1490
1666
|
backgroundColor,
|
|
@@ -1494,17 +1670,17 @@ var InstagramStory = ({
|
|
|
1494
1670
|
sticker,
|
|
1495
1671
|
musicTrack
|
|
1496
1672
|
}) => {
|
|
1497
|
-
const frame = (0,
|
|
1498
|
-
const fade = (0,
|
|
1499
|
-
return /* @__PURE__ */ (0,
|
|
1500
|
-
musicTrack ? /* @__PURE__ */ (0,
|
|
1501
|
-
backgroundImage ? /* @__PURE__ */ (0,
|
|
1502
|
-
/* @__PURE__ */ (0,
|
|
1503
|
-
profilePic || username ? /* @__PURE__ */ (0,
|
|
1504
|
-
profilePic ? /* @__PURE__ */ (0,
|
|
1505
|
-
/* @__PURE__ */ (0,
|
|
1673
|
+
const frame = (0, import_remotion19.useCurrentFrame)();
|
|
1674
|
+
const fade = (0, import_remotion19.interpolate)(frame, [0, 20], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1675
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Fill, { style: { backgroundColor }, children: [
|
|
1676
|
+
musicTrack ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_remotion19.Audio, { src: resolveAsset8(musicTrack), volume: 0.6 }) : null,
|
|
1677
|
+
backgroundImage ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_remotion19.Img, { src: resolveAsset8(backgroundImage), style: { width: "100%", height: "100%", objectFit: "cover", opacity: fade } }) : null,
|
|
1678
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Fill, { style: { padding: 60, boxSizing: "border-box" }, children: [
|
|
1679
|
+
profilePic || username ? /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 18 }, children: [
|
|
1680
|
+
profilePic ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_remotion19.Img, { src: resolveAsset8(profilePic), style: { width: 78, height: 78, borderRadius: 9999, objectFit: "cover" } }) : /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { style: { width: 78, height: 78, borderRadius: 9999, backgroundColor: "rgba(255,255,255,0.2)" } }),
|
|
1681
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { style: { color: "#FFFFFF", fontWeight: 800, fontSize: 34 }, children: username ?? "username" })
|
|
1506
1682
|
] }) : null,
|
|
1507
|
-
text ? /* @__PURE__ */ (0,
|
|
1683
|
+
text ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
1508
1684
|
"div",
|
|
1509
1685
|
{
|
|
1510
1686
|
style: {
|
|
@@ -1518,7 +1694,7 @@ var InstagramStory = ({
|
|
|
1518
1694
|
children: text
|
|
1519
1695
|
}
|
|
1520
1696
|
) : null,
|
|
1521
|
-
sticker !== "none" ? /* @__PURE__ */ (0,
|
|
1697
|
+
sticker !== "none" ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
1522
1698
|
"div",
|
|
1523
1699
|
{
|
|
1524
1700
|
style: {
|
|
@@ -1547,18 +1723,18 @@ var InstagramStoryComponentMetadata = {
|
|
|
1547
1723
|
};
|
|
1548
1724
|
|
|
1549
1725
|
// src/components/composites/IntroScene.tsx
|
|
1550
|
-
var
|
|
1551
|
-
var
|
|
1552
|
-
var
|
|
1553
|
-
var IntroScenePropsSchema =
|
|
1554
|
-
logoSrc:
|
|
1555
|
-
companyName:
|
|
1556
|
-
tagline:
|
|
1557
|
-
backgroundColor:
|
|
1558
|
-
primaryColor:
|
|
1559
|
-
musicTrack:
|
|
1726
|
+
var import_remotion20 = require("remotion");
|
|
1727
|
+
var import_zod29 = require("zod");
|
|
1728
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
1729
|
+
var IntroScenePropsSchema = import_zod29.z.object({
|
|
1730
|
+
logoSrc: import_zod29.z.string().min(1),
|
|
1731
|
+
companyName: import_zod29.z.string().min(1),
|
|
1732
|
+
tagline: import_zod29.z.string().optional(),
|
|
1733
|
+
backgroundColor: import_zod29.z.string().default("#000000"),
|
|
1734
|
+
primaryColor: import_zod29.z.string().default("#FFFFFF"),
|
|
1735
|
+
musicTrack: import_zod29.z.string().optional()
|
|
1560
1736
|
});
|
|
1561
|
-
var resolveAsset9 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
1737
|
+
var resolveAsset9 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion20.staticFile)(staticFileInputFromAssetPath(value));
|
|
1562
1738
|
var IntroScene = ({
|
|
1563
1739
|
logoSrc,
|
|
1564
1740
|
companyName,
|
|
@@ -1568,25 +1744,25 @@ var IntroScene = ({
|
|
|
1568
1744
|
musicTrack,
|
|
1569
1745
|
__wavesDurationInFrames
|
|
1570
1746
|
}) => {
|
|
1571
|
-
const frame = (0,
|
|
1572
|
-
const { fps } = (0,
|
|
1747
|
+
const frame = (0, import_remotion20.useCurrentFrame)();
|
|
1748
|
+
const { fps } = (0, import_remotion20.useVideoConfig)();
|
|
1573
1749
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
1574
|
-
const logoP = (0,
|
|
1575
|
-
const nameOpacity = (0,
|
|
1576
|
-
const taglineY = (0,
|
|
1577
|
-
const outroFade = (0,
|
|
1578
|
-
return /* @__PURE__ */ (0,
|
|
1579
|
-
musicTrack ? /* @__PURE__ */ (0,
|
|
1580
|
-
/* @__PURE__ */ (0,
|
|
1581
|
-
/* @__PURE__ */ (0,
|
|
1582
|
-
|
|
1750
|
+
const logoP = (0, import_remotion20.spring)({ frame, fps, config: { damping: 14, stiffness: 120, mass: 0.9 } });
|
|
1751
|
+
const nameOpacity = (0, import_remotion20.interpolate)(frame, [20, 60], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1752
|
+
const taglineY = (0, import_remotion20.interpolate)(frame, [50, 80], [20, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1753
|
+
const outroFade = (0, import_remotion20.interpolate)(frame, [Math.max(0, total - 20), total], [1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1754
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Fill, { style: { backgroundColor, display: "flex", justifyContent: "center", alignItems: "center" }, children: [
|
|
1755
|
+
musicTrack ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_remotion20.Audio, { src: resolveAsset9(musicTrack), volume: 0.7 }) : null,
|
|
1756
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { style: { textAlign: "center", opacity: outroFade }, children: [
|
|
1757
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
1758
|
+
import_remotion20.Img,
|
|
1583
1759
|
{
|
|
1584
1760
|
src: resolveAsset9(logoSrc),
|
|
1585
1761
|
style: { width: 280, height: 280, objectFit: "contain", transform: `scale(${logoP})` }
|
|
1586
1762
|
}
|
|
1587
1763
|
),
|
|
1588
|
-
/* @__PURE__ */ (0,
|
|
1589
|
-
tagline ? /* @__PURE__ */ (0,
|
|
1764
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { style: { marginTop: 24, color: primaryColor, fontSize: 64, fontWeight: 900, opacity: nameOpacity }, children: companyName }),
|
|
1765
|
+
tagline ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
1590
1766
|
"div",
|
|
1591
1767
|
{
|
|
1592
1768
|
style: {
|
|
@@ -1611,17 +1787,17 @@ var IntroSceneComponentMetadata = {
|
|
|
1611
1787
|
};
|
|
1612
1788
|
|
|
1613
1789
|
// src/components/composites/KenBurnsImage.tsx
|
|
1614
|
-
var
|
|
1615
|
-
var
|
|
1616
|
-
var
|
|
1617
|
-
var KenBurnsImagePropsSchema =
|
|
1618
|
-
src:
|
|
1619
|
-
startScale:
|
|
1620
|
-
endScale:
|
|
1621
|
-
panDirection:
|
|
1622
|
-
panAmount:
|
|
1790
|
+
var import_remotion21 = require("remotion");
|
|
1791
|
+
var import_zod30 = require("zod");
|
|
1792
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
1793
|
+
var KenBurnsImagePropsSchema = import_zod30.z.object({
|
|
1794
|
+
src: import_zod30.z.string().min(1),
|
|
1795
|
+
startScale: import_zod30.z.number().min(1).max(2).default(1),
|
|
1796
|
+
endScale: import_zod30.z.number().min(1).max(2).default(1.2),
|
|
1797
|
+
panDirection: import_zod30.z.enum(["none", "left", "right", "up", "down"]).default("none"),
|
|
1798
|
+
panAmount: import_zod30.z.number().min(0).max(100).default(50)
|
|
1623
1799
|
});
|
|
1624
|
-
var resolveAsset10 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
1800
|
+
var resolveAsset10 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion21.staticFile)(staticFileInputFromAssetPath(value));
|
|
1625
1801
|
var KenBurnsImage = ({
|
|
1626
1802
|
src,
|
|
1627
1803
|
startScale,
|
|
@@ -1630,14 +1806,14 @@ var KenBurnsImage = ({
|
|
|
1630
1806
|
panAmount,
|
|
1631
1807
|
__wavesDurationInFrames
|
|
1632
1808
|
}) => {
|
|
1633
|
-
const frame = (0,
|
|
1809
|
+
const frame = (0, import_remotion21.useCurrentFrame)();
|
|
1634
1810
|
const duration = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
1635
|
-
const t = (0,
|
|
1811
|
+
const t = (0, import_remotion21.interpolate)(frame, [0, duration], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1636
1812
|
const scale = startScale + (endScale - startScale) * t;
|
|
1637
1813
|
const dx = panDirection === "left" ? -panAmount * t : panDirection === "right" ? panAmount * t : 0;
|
|
1638
1814
|
const dy = panDirection === "up" ? -panAmount * t : panDirection === "down" ? panAmount * t : 0;
|
|
1639
|
-
return /* @__PURE__ */ (0,
|
|
1640
|
-
|
|
1815
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Fill, { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1816
|
+
import_remotion21.Img,
|
|
1641
1817
|
{
|
|
1642
1818
|
src: resolveAsset10(src),
|
|
1643
1819
|
style: {
|
|
@@ -1658,20 +1834,20 @@ var KenBurnsImageComponentMetadata = {
|
|
|
1658
1834
|
};
|
|
1659
1835
|
|
|
1660
1836
|
// src/components/composites/KineticTypography.tsx
|
|
1661
|
-
var
|
|
1662
|
-
var
|
|
1663
|
-
var
|
|
1664
|
-
var WordSchema =
|
|
1665
|
-
text:
|
|
1666
|
-
emphasis:
|
|
1837
|
+
var import_remotion22 = require("remotion");
|
|
1838
|
+
var import_zod31 = require("zod");
|
|
1839
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
1840
|
+
var WordSchema = import_zod31.z.object({
|
|
1841
|
+
text: import_zod31.z.string().min(1),
|
|
1842
|
+
emphasis: import_zod31.z.enum(["normal", "bold", "giant"]).default("normal")
|
|
1667
1843
|
});
|
|
1668
|
-
var KineticTypographyPropsSchema =
|
|
1669
|
-
words:
|
|
1670
|
-
fontSize:
|
|
1671
|
-
color:
|
|
1672
|
-
fontFamily:
|
|
1673
|
-
timing:
|
|
1674
|
-
transition:
|
|
1844
|
+
var KineticTypographyPropsSchema = import_zod31.z.object({
|
|
1845
|
+
words: import_zod31.z.array(WordSchema).min(1).max(50),
|
|
1846
|
+
fontSize: import_zod31.z.number().min(12).max(140).default(48),
|
|
1847
|
+
color: import_zod31.z.string().default("#FFFFFF"),
|
|
1848
|
+
fontFamily: import_zod31.z.string().default("Inter"),
|
|
1849
|
+
timing: import_zod31.z.array(import_zod31.z.number().int().min(0)).min(1).describe("Frame timing for each word"),
|
|
1850
|
+
transition: import_zod31.z.enum(["fade", "scale", "slideLeft", "slideRight"]).default("scale")
|
|
1675
1851
|
});
|
|
1676
1852
|
var KineticTypography = ({
|
|
1677
1853
|
words,
|
|
@@ -1681,8 +1857,8 @@ var KineticTypography = ({
|
|
|
1681
1857
|
timing,
|
|
1682
1858
|
transition
|
|
1683
1859
|
}) => {
|
|
1684
|
-
const frame = (0,
|
|
1685
|
-
const { fps } = (0,
|
|
1860
|
+
const frame = (0, import_remotion22.useCurrentFrame)();
|
|
1861
|
+
const { fps } = (0, import_remotion22.useVideoConfig)();
|
|
1686
1862
|
const starts = (() => {
|
|
1687
1863
|
if (timing.length >= words.length) return timing.slice(0, words.length);
|
|
1688
1864
|
const last = timing.length ? timing[timing.length - 1] : 0;
|
|
@@ -1695,13 +1871,13 @@ var KineticTypography = ({
|
|
|
1695
1871
|
}
|
|
1696
1872
|
const word = words[activeIndex];
|
|
1697
1873
|
const start = starts[activeIndex] ?? 0;
|
|
1698
|
-
const p = (0,
|
|
1874
|
+
const p = (0, import_remotion22.spring)({ frame: frame - start, fps, config: { damping: 14, stiffness: 120, mass: 0.9 } });
|
|
1699
1875
|
const progress = Math.max(0, Math.min(1, p));
|
|
1700
1876
|
const scaleBase = word.emphasis === "giant" ? 2 : word.emphasis === "bold" ? 1.3 : 1;
|
|
1701
1877
|
const opacity = transition === "fade" ? progress : 1;
|
|
1702
1878
|
const scale = transition === "scale" ? (0.85 + 0.15 * progress) * scaleBase : 1 * scaleBase;
|
|
1703
1879
|
const tx = transition === "slideLeft" ? 40 * (1 - progress) : transition === "slideRight" ? -40 * (1 - progress) : 0;
|
|
1704
|
-
return /* @__PURE__ */ (0,
|
|
1880
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Fill, { style: { display: "flex", justifyContent: "center", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1705
1881
|
"div",
|
|
1706
1882
|
{
|
|
1707
1883
|
style: {
|
|
@@ -1726,17 +1902,17 @@ var KineticTypographyComponentMetadata = {
|
|
|
1726
1902
|
};
|
|
1727
1903
|
|
|
1728
1904
|
// src/components/composites/LineGraph.tsx
|
|
1729
|
-
var
|
|
1730
|
-
var
|
|
1731
|
-
var
|
|
1732
|
-
var PointSchema =
|
|
1733
|
-
var LineGraphPropsSchema =
|
|
1734
|
-
data:
|
|
1735
|
-
color:
|
|
1736
|
-
strokeWidth:
|
|
1737
|
-
showDots:
|
|
1738
|
-
fillArea:
|
|
1739
|
-
animate:
|
|
1905
|
+
var import_remotion23 = require("remotion");
|
|
1906
|
+
var import_zod32 = require("zod");
|
|
1907
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
1908
|
+
var PointSchema = import_zod32.z.object({ x: import_zod32.z.number(), y: import_zod32.z.number() });
|
|
1909
|
+
var LineGraphPropsSchema = import_zod32.z.object({
|
|
1910
|
+
data: import_zod32.z.array(PointSchema).min(2).max(50),
|
|
1911
|
+
color: import_zod32.z.string().default("#00FF00"),
|
|
1912
|
+
strokeWidth: import_zod32.z.number().min(1).max(10).default(3),
|
|
1913
|
+
showDots: import_zod32.z.boolean().default(true),
|
|
1914
|
+
fillArea: import_zod32.z.boolean().default(false),
|
|
1915
|
+
animate: import_zod32.z.enum(["draw", "reveal"]).default("draw")
|
|
1740
1916
|
});
|
|
1741
1917
|
function normalize(data, w, h, pad) {
|
|
1742
1918
|
const xs = data.map((d) => d.x);
|
|
@@ -1762,9 +1938,9 @@ var LineGraph = ({
|
|
|
1762
1938
|
animate,
|
|
1763
1939
|
__wavesDurationInFrames
|
|
1764
1940
|
}) => {
|
|
1765
|
-
const frame = (0,
|
|
1941
|
+
const frame = (0, import_remotion23.useCurrentFrame)();
|
|
1766
1942
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
1767
|
-
const progress = (0,
|
|
1943
|
+
const progress = (0, import_remotion23.interpolate)(frame, [0, total], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1768
1944
|
const w = 1e3;
|
|
1769
1945
|
const h = 520;
|
|
1770
1946
|
const pad = 30;
|
|
@@ -1772,9 +1948,9 @@ var LineGraph = ({
|
|
|
1772
1948
|
const d = toPath(pts);
|
|
1773
1949
|
const dash = 3e3;
|
|
1774
1950
|
const dashOffset = dash * (1 - progress);
|
|
1775
|
-
return /* @__PURE__ */ (0,
|
|
1776
|
-
/* @__PURE__ */ (0,
|
|
1777
|
-
fillArea ? /* @__PURE__ */ (0,
|
|
1951
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Fill, { style: { display: "flex", justifyContent: "center", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("svg", { viewBox: `0 0 ${w} ${h}`, style: { width: "100%", height: "100%" }, children: [
|
|
1952
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("clipPath", { id: "waves-line-reveal", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("rect", { x: "0", y: "0", width: w * progress, height: h }) }) }),
|
|
1953
|
+
fillArea ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
1778
1954
|
"path",
|
|
1779
1955
|
{
|
|
1780
1956
|
d: `${d} L ${pts[pts.length - 1].x} ${h - pad} L ${pts[0].x} ${h - pad} Z`,
|
|
@@ -1783,7 +1959,7 @@ var LineGraph = ({
|
|
|
1783
1959
|
clipPath: animate === "reveal" ? "url(#waves-line-reveal)" : void 0
|
|
1784
1960
|
}
|
|
1785
1961
|
) : null,
|
|
1786
|
-
/* @__PURE__ */ (0,
|
|
1962
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
1787
1963
|
"path",
|
|
1788
1964
|
{
|
|
1789
1965
|
d,
|
|
@@ -1797,7 +1973,7 @@ var LineGraph = ({
|
|
|
1797
1973
|
clipPath: animate === "reveal" ? "url(#waves-line-reveal)" : void 0
|
|
1798
1974
|
}
|
|
1799
1975
|
),
|
|
1800
|
-
showDots ? /* @__PURE__ */ (0,
|
|
1976
|
+
showDots ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("g", { clipPath: animate === "reveal" ? "url(#waves-line-reveal)" : void 0, children: pts.map((p, i) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("circle", { cx: p.x, cy: p.y, r: 6, fill: color }, i)) }) : null
|
|
1801
1977
|
] }) });
|
|
1802
1978
|
};
|
|
1803
1979
|
var LineGraphComponentMetadata = {
|
|
@@ -1808,28 +1984,28 @@ var LineGraphComponentMetadata = {
|
|
|
1808
1984
|
};
|
|
1809
1985
|
|
|
1810
1986
|
// src/components/composites/LogoReveal.tsx
|
|
1811
|
-
var
|
|
1812
|
-
var
|
|
1813
|
-
var
|
|
1814
|
-
var LogoRevealPropsSchema =
|
|
1815
|
-
logoSrc:
|
|
1816
|
-
effect:
|
|
1817
|
-
backgroundColor:
|
|
1818
|
-
soundEffect:
|
|
1987
|
+
var import_remotion24 = require("remotion");
|
|
1988
|
+
var import_zod33 = require("zod");
|
|
1989
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
1990
|
+
var LogoRevealPropsSchema = import_zod33.z.object({
|
|
1991
|
+
logoSrc: import_zod33.z.string().min(1),
|
|
1992
|
+
effect: import_zod33.z.enum(["fade", "scale", "rotate", "slide"]).default("scale"),
|
|
1993
|
+
backgroundColor: import_zod33.z.string().default("#000000"),
|
|
1994
|
+
soundEffect: import_zod33.z.string().optional()
|
|
1819
1995
|
});
|
|
1820
|
-
var resolveAsset11 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
1996
|
+
var resolveAsset11 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion24.staticFile)(staticFileInputFromAssetPath(value));
|
|
1821
1997
|
var LogoReveal = ({ logoSrc, effect, backgroundColor, soundEffect }) => {
|
|
1822
|
-
const frame = (0,
|
|
1823
|
-
const { fps } = (0,
|
|
1824
|
-
const p = (0,
|
|
1998
|
+
const frame = (0, import_remotion24.useCurrentFrame)();
|
|
1999
|
+
const { fps } = (0, import_remotion24.useVideoConfig)();
|
|
2000
|
+
const p = (0, import_remotion24.spring)({ frame, fps, config: { damping: 14, stiffness: 110, mass: 0.9 } });
|
|
1825
2001
|
const opacity = effect === "fade" ? p : Math.min(1, Math.max(0, p));
|
|
1826
2002
|
const scale = effect === "scale" ? p : 1;
|
|
1827
2003
|
const rotate = effect === "rotate" ? (1 - p) * 360 : 0;
|
|
1828
2004
|
const translateY = effect === "slide" ? -200 * (1 - p) : 0;
|
|
1829
|
-
return /* @__PURE__ */ (0,
|
|
1830
|
-
soundEffect ? /* @__PURE__ */ (0,
|
|
1831
|
-
/* @__PURE__ */ (0,
|
|
1832
|
-
|
|
2005
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(Fill, { style: { backgroundColor, display: "flex", justifyContent: "center", alignItems: "center" }, children: [
|
|
2006
|
+
soundEffect ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_remotion24.Audio, { src: resolveAsset11(soundEffect), volume: 1 }) : null,
|
|
2007
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
2008
|
+
import_remotion24.Img,
|
|
1833
2009
|
{
|
|
1834
2010
|
src: resolveAsset11(logoSrc),
|
|
1835
2011
|
style: {
|
|
@@ -1851,32 +2027,32 @@ var LogoRevealComponentMetadata = {
|
|
|
1851
2027
|
};
|
|
1852
2028
|
|
|
1853
2029
|
// src/components/composites/OutroScene.tsx
|
|
1854
|
-
var
|
|
1855
|
-
var
|
|
1856
|
-
var
|
|
1857
|
-
var CtaSchema =
|
|
1858
|
-
var HandleSchema =
|
|
1859
|
-
platform:
|
|
1860
|
-
handle:
|
|
2030
|
+
var import_remotion25 = require("remotion");
|
|
2031
|
+
var import_zod34 = require("zod");
|
|
2032
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
2033
|
+
var CtaSchema = import_zod34.z.object({ text: import_zod34.z.string().min(1), icon: import_zod34.z.string().optional() });
|
|
2034
|
+
var HandleSchema = import_zod34.z.object({
|
|
2035
|
+
platform: import_zod34.z.enum(["twitter", "instagram", "youtube", "linkedin"]),
|
|
2036
|
+
handle: import_zod34.z.string().min(1)
|
|
1861
2037
|
});
|
|
1862
|
-
var OutroScenePropsSchema =
|
|
1863
|
-
logoSrc:
|
|
1864
|
-
message:
|
|
1865
|
-
ctaButtons:
|
|
1866
|
-
socialHandles:
|
|
1867
|
-
backgroundColor:
|
|
2038
|
+
var OutroScenePropsSchema = import_zod34.z.object({
|
|
2039
|
+
logoSrc: import_zod34.z.string().min(1),
|
|
2040
|
+
message: import_zod34.z.string().default("Thank You"),
|
|
2041
|
+
ctaButtons: import_zod34.z.array(CtaSchema).max(3).optional(),
|
|
2042
|
+
socialHandles: import_zod34.z.array(HandleSchema).max(4).optional(),
|
|
2043
|
+
backgroundColor: import_zod34.z.string().default("#000000")
|
|
1868
2044
|
});
|
|
1869
|
-
var resolveAsset12 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
2045
|
+
var resolveAsset12 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion25.staticFile)(staticFileInputFromAssetPath(value));
|
|
1870
2046
|
var OutroScene = ({ logoSrc, message, ctaButtons, socialHandles, backgroundColor }) => {
|
|
1871
|
-
const frame = (0,
|
|
1872
|
-
const { fps } = (0,
|
|
1873
|
-
const logoP = (0,
|
|
1874
|
-
const msgP = (0,
|
|
1875
|
-
const ctaP = (0,
|
|
1876
|
-
return /* @__PURE__ */ (0,
|
|
1877
|
-
/* @__PURE__ */ (0,
|
|
1878
|
-
/* @__PURE__ */ (0,
|
|
1879
|
-
ctaButtons?.length ? /* @__PURE__ */ (0,
|
|
2047
|
+
const frame = (0, import_remotion25.useCurrentFrame)();
|
|
2048
|
+
const { fps } = (0, import_remotion25.useVideoConfig)();
|
|
2049
|
+
const logoP = (0, import_remotion25.spring)({ frame, fps, config: { damping: 14, stiffness: 120, mass: 0.9 } });
|
|
2050
|
+
const msgP = (0, import_remotion25.spring)({ frame: frame - 18, fps, config: { damping: 14, stiffness: 120, mass: 0.9 } });
|
|
2051
|
+
const ctaP = (0, import_remotion25.spring)({ frame: frame - 40, fps, config: { damping: 14, stiffness: 120, mass: 0.9 } });
|
|
2052
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Fill, { style: { backgroundColor, display: "flex", justifyContent: "center", alignItems: "center", padding: 80, boxSizing: "border-box" }, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { style: { textAlign: "center" }, children: [
|
|
2053
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_remotion25.Img, { src: resolveAsset12(logoSrc), style: { width: 220, height: 220, objectFit: "contain", transform: `scale(${logoP})` } }),
|
|
2054
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { style: { marginTop: 24, color: "#FFFFFF", fontSize: 72, fontWeight: 1e3, opacity: msgP }, children: message }),
|
|
2055
|
+
ctaButtons?.length ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { style: { marginTop: 34, display: "flex", gap: 18, justifyContent: "center", opacity: ctaP }, children: ctaButtons.map((b, i) => /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
|
|
1880
2056
|
"div",
|
|
1881
2057
|
{
|
|
1882
2058
|
style: {
|
|
@@ -1894,7 +2070,7 @@ var OutroScene = ({ logoSrc, message, ctaButtons, socialHandles, backgroundColor
|
|
|
1894
2070
|
},
|
|
1895
2071
|
i
|
|
1896
2072
|
)) }) : null,
|
|
1897
|
-
socialHandles?.length ? /* @__PURE__ */ (0,
|
|
2073
|
+
socialHandles?.length ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { style: { marginTop: 50, display: "flex", flexDirection: "column", gap: 10, opacity: ctaP }, children: socialHandles.map((h, i) => /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { style: { color: "rgba(255,255,255,0.85)", fontSize: 26, fontWeight: 800 }, children: [
|
|
1898
2074
|
h.platform,
|
|
1899
2075
|
": ",
|
|
1900
2076
|
h.handle
|
|
@@ -1909,19 +2085,19 @@ var OutroSceneComponentMetadata = {
|
|
|
1909
2085
|
};
|
|
1910
2086
|
|
|
1911
2087
|
// src/components/composites/OutlineText.tsx
|
|
1912
|
-
var
|
|
1913
|
-
var
|
|
1914
|
-
var
|
|
1915
|
-
var OutlineTextPropsSchema =
|
|
1916
|
-
content:
|
|
1917
|
-
fontSize:
|
|
1918
|
-
outlineColor:
|
|
1919
|
-
fillColor:
|
|
1920
|
-
fontFamily:
|
|
1921
|
-
fontWeight:
|
|
1922
|
-
position:
|
|
1923
|
-
animation:
|
|
1924
|
-
strokeWidth:
|
|
2088
|
+
var import_remotion26 = require("remotion");
|
|
2089
|
+
var import_zod35 = require("zod");
|
|
2090
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
2091
|
+
var OutlineTextPropsSchema = import_zod35.z.object({
|
|
2092
|
+
content: import_zod35.z.string().max(50),
|
|
2093
|
+
fontSize: import_zod35.z.number().min(8).max(240).default(96),
|
|
2094
|
+
outlineColor: import_zod35.z.string().default("#FFFFFF"),
|
|
2095
|
+
fillColor: import_zod35.z.string().default("#000000"),
|
|
2096
|
+
fontFamily: import_zod35.z.string().default("Inter"),
|
|
2097
|
+
fontWeight: import_zod35.z.number().int().min(100).max(900).default(800),
|
|
2098
|
+
position: import_zod35.z.enum(["top", "center", "bottom"]).default("center"),
|
|
2099
|
+
animation: import_zod35.z.enum(["draw", "fill"]).default("draw"),
|
|
2100
|
+
strokeWidth: import_zod35.z.number().min(1).max(10).default(3)
|
|
1925
2101
|
});
|
|
1926
2102
|
var positionStyles3 = (position) => {
|
|
1927
2103
|
if (position === "top") return { justifyContent: "center", alignItems: "flex-start", paddingTop: 90 };
|
|
@@ -1939,12 +2115,12 @@ var OutlineText = ({
|
|
|
1939
2115
|
animation,
|
|
1940
2116
|
strokeWidth
|
|
1941
2117
|
}) => {
|
|
1942
|
-
const frame = (0,
|
|
1943
|
-
const t = (0,
|
|
2118
|
+
const frame = (0, import_remotion26.useCurrentFrame)();
|
|
2119
|
+
const t = (0, import_remotion26.interpolate)(frame, [0, 24], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1944
2120
|
const strokeOpacity = animation === "draw" ? t : 1;
|
|
1945
2121
|
const fillOpacity = animation === "fill" ? t : 0;
|
|
1946
|
-
return /* @__PURE__ */ (0,
|
|
1947
|
-
/* @__PURE__ */ (0,
|
|
2122
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Fill, { style: { display: "flex", ...positionStyles3(position) }, children: [
|
|
2123
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
1948
2124
|
"div",
|
|
1949
2125
|
{
|
|
1950
2126
|
style: {
|
|
@@ -1961,7 +2137,7 @@ var OutlineText = ({
|
|
|
1961
2137
|
children: content
|
|
1962
2138
|
}
|
|
1963
2139
|
),
|
|
1964
|
-
/* @__PURE__ */ (0,
|
|
2140
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
1965
2141
|
"div",
|
|
1966
2142
|
{
|
|
1967
2143
|
style: {
|
|
@@ -1988,16 +2164,16 @@ var OutlineTextComponentMetadata = {
|
|
|
1988
2164
|
};
|
|
1989
2165
|
|
|
1990
2166
|
// src/components/composites/ProgressBar.tsx
|
|
1991
|
-
var
|
|
1992
|
-
var
|
|
1993
|
-
var
|
|
1994
|
-
var ProgressBarPropsSchema =
|
|
1995
|
-
label:
|
|
1996
|
-
color:
|
|
1997
|
-
backgroundColor:
|
|
1998
|
-
height:
|
|
1999
|
-
position:
|
|
2000
|
-
showPercentage:
|
|
2167
|
+
var import_remotion27 = require("remotion");
|
|
2168
|
+
var import_zod36 = require("zod");
|
|
2169
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
2170
|
+
var ProgressBarPropsSchema = import_zod36.z.object({
|
|
2171
|
+
label: import_zod36.z.string().optional(),
|
|
2172
|
+
color: import_zod36.z.string().default("#00FF00"),
|
|
2173
|
+
backgroundColor: import_zod36.z.string().default("rgba(255,255,255,0.2)"),
|
|
2174
|
+
height: import_zod36.z.number().min(5).max(50).default(10),
|
|
2175
|
+
position: import_zod36.z.enum(["top", "bottom"]).default("bottom"),
|
|
2176
|
+
showPercentage: import_zod36.z.boolean().default(true)
|
|
2001
2177
|
});
|
|
2002
2178
|
var ProgressBar = ({
|
|
2003
2179
|
label,
|
|
@@ -2008,17 +2184,17 @@ var ProgressBar = ({
|
|
|
2008
2184
|
showPercentage,
|
|
2009
2185
|
__wavesDurationInFrames
|
|
2010
2186
|
}) => {
|
|
2011
|
-
const frame = (0,
|
|
2187
|
+
const frame = (0, import_remotion27.useCurrentFrame)();
|
|
2012
2188
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
2013
|
-
const p = (0,
|
|
2189
|
+
const p = (0, import_remotion27.interpolate)(frame, [0, total], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2014
2190
|
const pct = Math.round(p * 100);
|
|
2015
2191
|
const yStyle = position === "top" ? { top: 50 } : { bottom: 50 };
|
|
2016
|
-
return /* @__PURE__ */ (0,
|
|
2017
|
-
label || showPercentage ? /* @__PURE__ */ (0,
|
|
2018
|
-
/* @__PURE__ */ (0,
|
|
2019
|
-
/* @__PURE__ */ (0,
|
|
2192
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Fill, { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { style: { position: "absolute", left: 80, right: 80, ...yStyle }, children: [
|
|
2193
|
+
label || showPercentage ? /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { style: { display: "flex", justifyContent: "space-between", marginBottom: 10, color: "#FFFFFF", fontWeight: 700 }, children: [
|
|
2194
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { children: label ?? "" }),
|
|
2195
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { children: showPercentage ? `${pct}%` : "" })
|
|
2020
2196
|
] }) : null,
|
|
2021
|
-
/* @__PURE__ */ (0,
|
|
2197
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { style: { width: "100%", height, backgroundColor, borderRadius: 9999, overflow: "hidden" }, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { style: { width: `${pct}%`, height: "100%", backgroundColor: color } }) })
|
|
2022
2198
|
] }) });
|
|
2023
2199
|
};
|
|
2024
2200
|
var ProgressBarComponentMetadata = {
|
|
@@ -2029,16 +2205,16 @@ var ProgressBarComponentMetadata = {
|
|
|
2029
2205
|
};
|
|
2030
2206
|
|
|
2031
2207
|
// src/components/composites/ProgressRing.tsx
|
|
2032
|
-
var
|
|
2033
|
-
var
|
|
2034
|
-
var
|
|
2035
|
-
var ProgressRingPropsSchema =
|
|
2036
|
-
percentage:
|
|
2037
|
-
size:
|
|
2038
|
-
strokeWidth:
|
|
2039
|
-
color:
|
|
2040
|
-
backgroundColor:
|
|
2041
|
-
showLabel:
|
|
2208
|
+
var import_remotion28 = require("remotion");
|
|
2209
|
+
var import_zod37 = require("zod");
|
|
2210
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
2211
|
+
var ProgressRingPropsSchema = import_zod37.z.object({
|
|
2212
|
+
percentage: import_zod37.z.number().min(0).max(100),
|
|
2213
|
+
size: import_zod37.z.number().min(100).max(500).default(200),
|
|
2214
|
+
strokeWidth: import_zod37.z.number().min(5).max(50).default(20),
|
|
2215
|
+
color: import_zod37.z.string().default("#00FF00"),
|
|
2216
|
+
backgroundColor: import_zod37.z.string().default("rgba(255,255,255,0.2)"),
|
|
2217
|
+
showLabel: import_zod37.z.boolean().default(true)
|
|
2042
2218
|
});
|
|
2043
2219
|
var ProgressRing = ({
|
|
2044
2220
|
percentage,
|
|
@@ -2049,17 +2225,17 @@ var ProgressRing = ({
|
|
|
2049
2225
|
showLabel,
|
|
2050
2226
|
__wavesDurationInFrames
|
|
2051
2227
|
}) => {
|
|
2052
|
-
const frame = (0,
|
|
2228
|
+
const frame = (0, import_remotion28.useCurrentFrame)();
|
|
2053
2229
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
2054
|
-
const p = (0,
|
|
2230
|
+
const p = (0, import_remotion28.interpolate)(frame, [0, total], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2055
2231
|
const current = percentage * p;
|
|
2056
2232
|
const r = (size - strokeWidth) / 2;
|
|
2057
2233
|
const c = 2 * Math.PI * r;
|
|
2058
2234
|
const dash = c;
|
|
2059
2235
|
const offset = c - current / 100 * c;
|
|
2060
|
-
return /* @__PURE__ */ (0,
|
|
2061
|
-
/* @__PURE__ */ (0,
|
|
2062
|
-
/* @__PURE__ */ (0,
|
|
2236
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(Fill, { style: { display: "flex", justifyContent: "center", alignItems: "center" }, children: [
|
|
2237
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, children: [
|
|
2238
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
2063
2239
|
"circle",
|
|
2064
2240
|
{
|
|
2065
2241
|
cx: size / 2,
|
|
@@ -2070,7 +2246,7 @@ var ProgressRing = ({
|
|
|
2070
2246
|
fill: "transparent"
|
|
2071
2247
|
}
|
|
2072
2248
|
),
|
|
2073
|
-
/* @__PURE__ */ (0,
|
|
2249
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
2074
2250
|
"circle",
|
|
2075
2251
|
{
|
|
2076
2252
|
cx: size / 2,
|
|
@@ -2086,7 +2262,7 @@ var ProgressRing = ({
|
|
|
2086
2262
|
}
|
|
2087
2263
|
)
|
|
2088
2264
|
] }),
|
|
2089
|
-
showLabel ? /* @__PURE__ */ (0,
|
|
2265
|
+
showLabel ? /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { style: { position: "absolute", color: "#FFFFFF", fontWeight: 800, fontSize: Math.round(size * 0.22) }, children: [
|
|
2090
2266
|
Math.round(current),
|
|
2091
2267
|
"%"
|
|
2092
2268
|
] }) : null
|
|
@@ -2100,14 +2276,15 @@ var ProgressRingComponentMetadata = {
|
|
|
2100
2276
|
};
|
|
2101
2277
|
|
|
2102
2278
|
// src/components/composites/SlideTransition.tsx
|
|
2103
|
-
var
|
|
2104
|
-
var
|
|
2105
|
-
var
|
|
2106
|
-
var
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2279
|
+
var import_react8 = __toESM(require("react"));
|
|
2280
|
+
var import_remotion29 = require("remotion");
|
|
2281
|
+
var import_zod38 = require("zod");
|
|
2282
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
2283
|
+
var SlideTransitionPropsSchema = import_zod38.z.object({
|
|
2284
|
+
durationInFrames: import_zod38.z.number().int().min(10).max(60).default(30),
|
|
2285
|
+
direction: import_zod38.z.enum(["left", "right", "up", "down"]).default("left"),
|
|
2286
|
+
distance: import_zod38.z.number().int().min(1).max(2e3).default(160),
|
|
2287
|
+
phase: import_zod38.z.enum(["in", "out", "inOut"]).default("inOut")
|
|
2111
2288
|
});
|
|
2112
2289
|
function translateFor(direction, delta) {
|
|
2113
2290
|
if (direction === "left") return { x: -delta, y: 0 };
|
|
@@ -2123,29 +2300,30 @@ var SlideTransition = ({
|
|
|
2123
2300
|
children,
|
|
2124
2301
|
__wavesDurationInFrames
|
|
2125
2302
|
}) => {
|
|
2126
|
-
const
|
|
2303
|
+
const layers = import_react8.default.Children.toArray(children);
|
|
2304
|
+
const frame = (0, import_remotion29.useCurrentFrame)();
|
|
2127
2305
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
2128
2306
|
const d = Math.min(durationInFrames, total);
|
|
2129
2307
|
let opacity = 1;
|
|
2130
2308
|
let tx = 0;
|
|
2131
2309
|
let ty = 0;
|
|
2132
2310
|
if (phase === "in" || phase === "inOut") {
|
|
2133
|
-
const t = (0,
|
|
2311
|
+
const t = (0, import_remotion29.interpolate)(frame, [0, d], [1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2134
2312
|
const { x, y } = translateFor(direction, distance * t);
|
|
2135
2313
|
tx += x;
|
|
2136
2314
|
ty += y;
|
|
2137
|
-
opacity *= (0,
|
|
2315
|
+
opacity *= (0, import_remotion29.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2138
2316
|
}
|
|
2139
2317
|
if (phase === "out" || phase === "inOut") {
|
|
2140
2318
|
const start = Math.max(0, total - d);
|
|
2141
|
-
const t = (0,
|
|
2319
|
+
const t = (0, import_remotion29.interpolate)(frame, [start, total], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2142
2320
|
const opposite = direction === "left" ? "right" : direction === "right" ? "left" : direction === "up" ? "down" : "up";
|
|
2143
2321
|
const { x, y } = translateFor(opposite, distance * t);
|
|
2144
2322
|
tx += x;
|
|
2145
2323
|
ty += y;
|
|
2146
|
-
opacity *= (0,
|
|
2324
|
+
opacity *= (0, import_remotion29.interpolate)(frame, [start, total], [1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2147
2325
|
}
|
|
2148
|
-
return /* @__PURE__ */ (0,
|
|
2326
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Fill, { style: { opacity, transform: `translate(${tx}px, ${ty}px)` }, children: layers.map((child, i) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { style: { position: "absolute", inset: 0 }, children: child }, i)) });
|
|
2149
2327
|
};
|
|
2150
2328
|
var SlideTransitionComponentMetadata = {
|
|
2151
2329
|
kind: "composite",
|
|
@@ -2157,16 +2335,15 @@ var SlideTransitionComponentMetadata = {
|
|
|
2157
2335
|
};
|
|
2158
2336
|
|
|
2159
2337
|
// src/components/composites/SplitScreen.tsx
|
|
2160
|
-
var
|
|
2161
|
-
var
|
|
2162
|
-
var
|
|
2163
|
-
var
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
dividerColor: import_zod36.z.string().optional()
|
|
2338
|
+
var import_react9 = __toESM(require("react"));
|
|
2339
|
+
var import_zod39 = require("zod");
|
|
2340
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
2341
|
+
var SplitScreenPropsSchema = import_zod39.z.object({
|
|
2342
|
+
orientation: import_zod39.z.enum(["vertical", "horizontal"]).default("vertical"),
|
|
2343
|
+
split: import_zod39.z.number().min(0.1).max(0.9).default(0.5),
|
|
2344
|
+
gap: import_zod39.z.number().min(0).default(48),
|
|
2345
|
+
padding: import_zod39.z.number().min(0).default(80),
|
|
2346
|
+
dividerColor: import_zod39.z.string().optional()
|
|
2170
2347
|
});
|
|
2171
2348
|
var SplitScreen = ({
|
|
2172
2349
|
orientation,
|
|
@@ -2176,14 +2353,14 @@ var SplitScreen = ({
|
|
|
2176
2353
|
dividerColor,
|
|
2177
2354
|
children
|
|
2178
2355
|
}) => {
|
|
2179
|
-
const items =
|
|
2356
|
+
const items = import_react9.default.Children.toArray(children);
|
|
2180
2357
|
const first = items[0] ?? null;
|
|
2181
2358
|
const second = items[1] ?? null;
|
|
2182
2359
|
const isVertical = orientation === "vertical";
|
|
2183
2360
|
const flexDirection = isVertical ? "row" : "column";
|
|
2184
|
-
return /* @__PURE__ */ (0,
|
|
2185
|
-
/* @__PURE__ */ (0,
|
|
2186
|
-
dividerColor ? /* @__PURE__ */ (0,
|
|
2361
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Fill, { style: { padding, boxSizing: "border-box" }, children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { style: { display: "flex", flexDirection, gap, width: "100%", height: "100%" }, children: [
|
|
2362
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { style: { flex: split, position: "relative" }, children: first }),
|
|
2363
|
+
dividerColor ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
2187
2364
|
"div",
|
|
2188
2365
|
{
|
|
2189
2366
|
style: {
|
|
@@ -2194,7 +2371,7 @@ var SplitScreen = ({
|
|
|
2194
2371
|
}
|
|
2195
2372
|
}
|
|
2196
2373
|
) : null,
|
|
2197
|
-
/* @__PURE__ */ (0,
|
|
2374
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { style: { flex: 1 - split, position: "relative" }, children: second })
|
|
2198
2375
|
] }) });
|
|
2199
2376
|
};
|
|
2200
2377
|
var SplitScreenComponentMetadata = {
|
|
@@ -2208,22 +2385,25 @@ var SplitScreenComponentMetadata = {
|
|
|
2208
2385
|
};
|
|
2209
2386
|
|
|
2210
2387
|
// src/components/composites/SplitText.tsx
|
|
2211
|
-
var
|
|
2212
|
-
var
|
|
2213
|
-
var
|
|
2214
|
-
var SplitTextPropsSchema =
|
|
2215
|
-
content:
|
|
2216
|
-
fontSize:
|
|
2217
|
-
color:
|
|
2218
|
-
fontFamily:
|
|
2219
|
-
position:
|
|
2220
|
-
splitBy:
|
|
2221
|
-
stagger:
|
|
2222
|
-
animation:
|
|
2388
|
+
var import_remotion30 = require("remotion");
|
|
2389
|
+
var import_zod40 = require("zod");
|
|
2390
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
2391
|
+
var SplitTextPropsSchema = import_zod40.z.object({
|
|
2392
|
+
content: import_zod40.z.string().max(200),
|
|
2393
|
+
fontSize: import_zod40.z.number().min(8).max(200).default(48),
|
|
2394
|
+
color: import_zod40.z.string().default("#FFFFFF"),
|
|
2395
|
+
fontFamily: import_zod40.z.string().default("Inter"),
|
|
2396
|
+
position: import_zod40.z.enum(["top", "center", "bottom"]).default("center"),
|
|
2397
|
+
splitBy: import_zod40.z.enum(["word", "letter"]).default("word"),
|
|
2398
|
+
stagger: import_zod40.z.number().int().min(1).max(10).default(3),
|
|
2399
|
+
animation: import_zod40.z.enum(["fade", "slideUp", "slideDown", "scale", "rotate"]).default("slideUp"),
|
|
2400
|
+
maxWidthPct: import_zod40.z.number().min(0.1).max(1).default(0.9),
|
|
2401
|
+
safeInsetPct: import_zod40.z.number().min(0).max(0.25).default(0.06)
|
|
2223
2402
|
});
|
|
2224
|
-
var positionStyles4 = (position) => {
|
|
2225
|
-
|
|
2226
|
-
if (position === "
|
|
2403
|
+
var positionStyles4 = (position, safeInsetPct) => {
|
|
2404
|
+
const inset = `${(safeInsetPct * 100).toFixed(2)}%`;
|
|
2405
|
+
if (position === "top") return { justifyContent: "center", alignItems: "flex-start", paddingTop: inset };
|
|
2406
|
+
if (position === "bottom") return { justifyContent: "center", alignItems: "flex-end", paddingBottom: inset };
|
|
2227
2407
|
return { justifyContent: "center", alignItems: "center" };
|
|
2228
2408
|
};
|
|
2229
2409
|
function getItemStyle(progress, animation) {
|
|
@@ -2250,12 +2430,14 @@ var SplitText = ({
|
|
|
2250
2430
|
position,
|
|
2251
2431
|
splitBy,
|
|
2252
2432
|
stagger,
|
|
2253
|
-
animation
|
|
2433
|
+
animation,
|
|
2434
|
+
maxWidthPct,
|
|
2435
|
+
safeInsetPct
|
|
2254
2436
|
}) => {
|
|
2255
|
-
const frame = (0,
|
|
2256
|
-
const { fps } = (0,
|
|
2437
|
+
const frame = (0, import_remotion30.useCurrentFrame)();
|
|
2438
|
+
const { fps } = (0, import_remotion30.useVideoConfig)();
|
|
2257
2439
|
const items = splitBy === "letter" ? content.split("") : content.trim().split(/\s+/);
|
|
2258
|
-
return /* @__PURE__ */ (0,
|
|
2440
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Fill, { style: { display: "flex", ...positionStyles4(position, safeInsetPct) }, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2259
2441
|
"div",
|
|
2260
2442
|
{
|
|
2261
2443
|
style: {
|
|
@@ -2263,19 +2445,22 @@ var SplitText = ({
|
|
|
2263
2445
|
flexWrap: "wrap",
|
|
2264
2446
|
justifyContent: "center",
|
|
2265
2447
|
gap: splitBy === "letter" ? 0 : 12,
|
|
2448
|
+
maxWidth: `${Math.round(maxWidthPct * 100)}%`,
|
|
2266
2449
|
fontSize,
|
|
2267
2450
|
color,
|
|
2268
2451
|
fontFamily,
|
|
2269
2452
|
fontWeight: 700,
|
|
2270
|
-
textAlign: "center"
|
|
2453
|
+
textAlign: "center",
|
|
2454
|
+
overflowWrap: "anywhere",
|
|
2455
|
+
wordBreak: "break-word"
|
|
2271
2456
|
},
|
|
2272
2457
|
children: items.map((t, i) => {
|
|
2273
|
-
const progress = (0,
|
|
2458
|
+
const progress = (0, import_remotion30.spring)({
|
|
2274
2459
|
frame: frame - i * stagger,
|
|
2275
2460
|
fps,
|
|
2276
2461
|
config: { damping: 14, stiffness: 120, mass: 0.9 }
|
|
2277
2462
|
});
|
|
2278
|
-
return /* @__PURE__ */ (0,
|
|
2463
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2279
2464
|
"span",
|
|
2280
2465
|
{
|
|
2281
2466
|
style: {
|
|
@@ -2303,19 +2488,19 @@ var SplitTextComponentMetadata = {
|
|
|
2303
2488
|
};
|
|
2304
2489
|
|
|
2305
2490
|
// src/components/composites/SubtitleText.tsx
|
|
2306
|
-
var
|
|
2307
|
-
var
|
|
2308
|
-
var
|
|
2309
|
-
var SubtitleTextPropsSchema =
|
|
2310
|
-
text:
|
|
2311
|
-
fontSize:
|
|
2312
|
-
color:
|
|
2313
|
-
backgroundColor:
|
|
2314
|
-
fontFamily:
|
|
2315
|
-
position:
|
|
2316
|
-
maxWidth:
|
|
2317
|
-
padding:
|
|
2318
|
-
highlightWords:
|
|
2491
|
+
var import_remotion31 = require("remotion");
|
|
2492
|
+
var import_zod41 = require("zod");
|
|
2493
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
2494
|
+
var SubtitleTextPropsSchema = import_zod41.z.object({
|
|
2495
|
+
text: import_zod41.z.string().max(200),
|
|
2496
|
+
fontSize: import_zod41.z.number().min(12).max(80).default(36),
|
|
2497
|
+
color: import_zod41.z.string().default("#FFFFFF"),
|
|
2498
|
+
backgroundColor: import_zod41.z.string().default("rgba(0,0,0,0.7)"),
|
|
2499
|
+
fontFamily: import_zod41.z.string().default("Inter"),
|
|
2500
|
+
position: import_zod41.z.enum(["top", "bottom"]).default("bottom"),
|
|
2501
|
+
maxWidth: import_zod41.z.number().min(200).max(1200).default(800),
|
|
2502
|
+
padding: import_zod41.z.number().min(0).max(80).default(20),
|
|
2503
|
+
highlightWords: import_zod41.z.array(import_zod41.z.string()).optional()
|
|
2319
2504
|
});
|
|
2320
2505
|
function normalizeWord(w) {
|
|
2321
2506
|
return w.toLowerCase().replace(/[^a-z0-9]/g, "");
|
|
@@ -2332,15 +2517,15 @@ var SubtitleText = ({
|
|
|
2332
2517
|
highlightWords,
|
|
2333
2518
|
__wavesDurationInFrames
|
|
2334
2519
|
}) => {
|
|
2335
|
-
const frame = (0,
|
|
2520
|
+
const frame = (0, import_remotion31.useCurrentFrame)();
|
|
2336
2521
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
2337
|
-
const inFade = (0,
|
|
2338
|
-
const outFade = (0,
|
|
2522
|
+
const inFade = (0, import_remotion31.interpolate)(frame, [0, 10], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2523
|
+
const outFade = (0, import_remotion31.interpolate)(frame, [Math.max(0, total - 10), total], [1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2339
2524
|
const opacity = inFade * outFade;
|
|
2340
2525
|
const highlights = new Set((highlightWords ?? []).map(normalizeWord));
|
|
2341
2526
|
const tokens = text.split(/\s+/);
|
|
2342
2527
|
const yStyle = position === "top" ? { top: 70 } : { bottom: 90 };
|
|
2343
|
-
return /* @__PURE__ */ (0,
|
|
2528
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Fill, { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { style: { position: "absolute", left: "50%", transform: "translateX(-50%)", maxWidth, width: "100%", ...yStyle }, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
2344
2529
|
"div",
|
|
2345
2530
|
{
|
|
2346
2531
|
style: {
|
|
@@ -2359,7 +2544,7 @@ var SubtitleText = ({
|
|
|
2359
2544
|
children: tokens.map((t, i) => {
|
|
2360
2545
|
const n = normalizeWord(t);
|
|
2361
2546
|
const isHighlighted = highlights.has(n);
|
|
2362
|
-
return /* @__PURE__ */ (0,
|
|
2547
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { style: { color: isHighlighted ? "#FFD60A" : color, marginRight: 8 }, children: t }, i);
|
|
2363
2548
|
})
|
|
2364
2549
|
}
|
|
2365
2550
|
) }) });
|
|
@@ -2372,17 +2557,19 @@ var SubtitleTextComponentMetadata = {
|
|
|
2372
2557
|
};
|
|
2373
2558
|
|
|
2374
2559
|
// src/components/composites/TikTokCaption.tsx
|
|
2375
|
-
var
|
|
2376
|
-
var
|
|
2377
|
-
var
|
|
2378
|
-
var TikTokCaptionPropsSchema =
|
|
2379
|
-
text:
|
|
2380
|
-
fontSize:
|
|
2381
|
-
color:
|
|
2382
|
-
strokeColor:
|
|
2383
|
-
strokeWidth:
|
|
2384
|
-
position:
|
|
2385
|
-
highlightStyle:
|
|
2560
|
+
var import_remotion32 = require("remotion");
|
|
2561
|
+
var import_zod42 = require("zod");
|
|
2562
|
+
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
2563
|
+
var TikTokCaptionPropsSchema = import_zod42.z.object({
|
|
2564
|
+
text: import_zod42.z.string().max(150),
|
|
2565
|
+
fontSize: import_zod42.z.number().min(12).max(120).default(48),
|
|
2566
|
+
color: import_zod42.z.string().default("#FFFFFF"),
|
|
2567
|
+
strokeColor: import_zod42.z.string().default("#000000"),
|
|
2568
|
+
strokeWidth: import_zod42.z.number().min(0).max(10).default(3),
|
|
2569
|
+
position: import_zod42.z.enum(["center", "bottom"]).default("center"),
|
|
2570
|
+
highlightStyle: import_zod42.z.enum(["word", "bounce", "none"]).default("word"),
|
|
2571
|
+
maxWidthPct: import_zod42.z.number().min(0.1).max(1).default(0.92),
|
|
2572
|
+
safeInsetPct: import_zod42.z.number().min(0).max(0.25).default(0.06)
|
|
2386
2573
|
});
|
|
2387
2574
|
var TikTokCaption = ({
|
|
2388
2575
|
text,
|
|
@@ -2392,18 +2579,21 @@ var TikTokCaption = ({
|
|
|
2392
2579
|
strokeWidth,
|
|
2393
2580
|
position,
|
|
2394
2581
|
highlightStyle,
|
|
2582
|
+
maxWidthPct,
|
|
2583
|
+
safeInsetPct,
|
|
2395
2584
|
__wavesDurationInFrames
|
|
2396
2585
|
}) => {
|
|
2397
|
-
const frame = (0,
|
|
2586
|
+
const frame = (0, import_remotion32.useCurrentFrame)();
|
|
2398
2587
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
2399
|
-
const p = (0,
|
|
2588
|
+
const p = (0, import_remotion32.interpolate)(frame, [0, total], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2400
2589
|
const words = text.trim().split(/\s+/);
|
|
2401
2590
|
const idx = highlightStyle === "none" ? -1 : Math.min(words.length - 1, Math.floor(p * words.length));
|
|
2402
|
-
const
|
|
2403
|
-
|
|
2591
|
+
const inset = `${(safeInsetPct * 100).toFixed(2)}%`;
|
|
2592
|
+
const yStyle = position === "bottom" ? { alignItems: "flex-end", paddingBottom: inset } : { alignItems: "center" };
|
|
2593
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Fill, { style: { display: "flex", justifyContent: "center", ...yStyle }, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { style: { textAlign: "center", paddingLeft: inset, paddingRight: inset, maxWidth: `${Math.round(maxWidthPct * 100)}%`, fontWeight: 900, lineHeight: 1.1, overflowWrap: "anywhere", wordBreak: "break-word" }, children: words.map((w, i) => {
|
|
2404
2594
|
const isActive = i === idx && highlightStyle !== "none";
|
|
2405
|
-
const bounce = isActive && highlightStyle === "bounce" ? (0,
|
|
2406
|
-
return /* @__PURE__ */ (0,
|
|
2595
|
+
const bounce = isActive && highlightStyle === "bounce" ? (0, import_remotion32.interpolate)(frame % 18, [0, 9, 18], [1, 1.08, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" }) : 1;
|
|
2596
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
2407
2597
|
"span",
|
|
2408
2598
|
{
|
|
2409
2599
|
style: {
|
|
@@ -2428,20 +2618,20 @@ var TikTokCaptionComponentMetadata = {
|
|
|
2428
2618
|
};
|
|
2429
2619
|
|
|
2430
2620
|
// src/components/composites/ThirdLowerBanner.tsx
|
|
2431
|
-
var
|
|
2432
|
-
var
|
|
2433
|
-
var
|
|
2434
|
-
var ThirdLowerBannerPropsSchema =
|
|
2435
|
-
name:
|
|
2436
|
-
title:
|
|
2437
|
-
backgroundColor:
|
|
2438
|
-
primaryColor:
|
|
2439
|
-
secondaryColor:
|
|
2440
|
-
accentColor:
|
|
2441
|
-
showAvatar:
|
|
2442
|
-
avatarSrc:
|
|
2621
|
+
var import_remotion33 = require("remotion");
|
|
2622
|
+
var import_zod43 = require("zod");
|
|
2623
|
+
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
2624
|
+
var ThirdLowerBannerPropsSchema = import_zod43.z.object({
|
|
2625
|
+
name: import_zod43.z.string().max(50),
|
|
2626
|
+
title: import_zod43.z.string().max(100),
|
|
2627
|
+
backgroundColor: import_zod43.z.string().default("rgba(0,0,0,0.8)"),
|
|
2628
|
+
primaryColor: import_zod43.z.string().default("#FFFFFF"),
|
|
2629
|
+
secondaryColor: import_zod43.z.string().default("#CCCCCC"),
|
|
2630
|
+
accentColor: import_zod43.z.string().default("#FF0000"),
|
|
2631
|
+
showAvatar: import_zod43.z.boolean().default(false),
|
|
2632
|
+
avatarSrc: import_zod43.z.string().optional()
|
|
2443
2633
|
});
|
|
2444
|
-
var resolveAsset13 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
2634
|
+
var resolveAsset13 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion33.staticFile)(staticFileInputFromAssetPath(value));
|
|
2445
2635
|
var ThirdLowerBanner = ({
|
|
2446
2636
|
name,
|
|
2447
2637
|
title,
|
|
@@ -2452,11 +2642,11 @@ var ThirdLowerBanner = ({
|
|
|
2452
2642
|
showAvatar,
|
|
2453
2643
|
avatarSrc
|
|
2454
2644
|
}) => {
|
|
2455
|
-
const frame = (0,
|
|
2456
|
-
const slide = (0,
|
|
2457
|
-
const opacity = (0,
|
|
2645
|
+
const frame = (0, import_remotion33.useCurrentFrame)();
|
|
2646
|
+
const slide = (0, import_remotion33.interpolate)(frame, [0, 18], [-600, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2647
|
+
const opacity = (0, import_remotion33.interpolate)(frame, [0, 10], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2458
2648
|
const avatar = showAvatar && typeof avatarSrc === "string" && avatarSrc.length > 0 ? avatarSrc : null;
|
|
2459
|
-
return /* @__PURE__ */ (0,
|
|
2649
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Fill, { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(
|
|
2460
2650
|
"div",
|
|
2461
2651
|
{
|
|
2462
2652
|
style: {
|
|
@@ -2473,17 +2663,17 @@ var ThirdLowerBanner = ({
|
|
|
2473
2663
|
backgroundColor
|
|
2474
2664
|
},
|
|
2475
2665
|
children: [
|
|
2476
|
-
/* @__PURE__ */ (0,
|
|
2477
|
-
avatar ? /* @__PURE__ */ (0,
|
|
2478
|
-
|
|
2666
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { style: { width: 10, backgroundColor: accentColor } }),
|
|
2667
|
+
avatar ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { style: { width: 160, display: "flex", alignItems: "center", justifyContent: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
2668
|
+
import_remotion33.Img,
|
|
2479
2669
|
{
|
|
2480
2670
|
src: resolveAsset13(avatar),
|
|
2481
2671
|
style: { width: 110, height: 110, borderRadius: 9999, objectFit: "cover" }
|
|
2482
2672
|
}
|
|
2483
2673
|
) }) : null,
|
|
2484
|
-
/* @__PURE__ */ (0,
|
|
2485
|
-
/* @__PURE__ */ (0,
|
|
2486
|
-
/* @__PURE__ */ (0,
|
|
2674
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { style: { padding: "28px 36px", display: "flex", flexDirection: "column", justifyContent: "center" }, children: [
|
|
2675
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { style: { color: primaryColor, fontSize: 54, fontWeight: 800, lineHeight: 1 }, children: name }),
|
|
2676
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { style: { marginTop: 10, color: secondaryColor, fontSize: 28, fontWeight: 600 }, children: title })
|
|
2487
2677
|
] })
|
|
2488
2678
|
]
|
|
2489
2679
|
}
|
|
@@ -2501,22 +2691,25 @@ var ThirdLowerBannerComponentMetadata = {
|
|
|
2501
2691
|
};
|
|
2502
2692
|
|
|
2503
2693
|
// src/components/composites/TypewriterText.tsx
|
|
2504
|
-
var
|
|
2505
|
-
var
|
|
2506
|
-
var
|
|
2507
|
-
var TypewriterTextPropsSchema =
|
|
2508
|
-
content:
|
|
2509
|
-
fontSize:
|
|
2510
|
-
color:
|
|
2511
|
-
fontFamily:
|
|
2512
|
-
position:
|
|
2513
|
-
speed:
|
|
2514
|
-
showCursor:
|
|
2515
|
-
cursorColor:
|
|
2694
|
+
var import_remotion34 = require("remotion");
|
|
2695
|
+
var import_zod44 = require("zod");
|
|
2696
|
+
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
2697
|
+
var TypewriterTextPropsSchema = import_zod44.z.object({
|
|
2698
|
+
content: import_zod44.z.string().max(500),
|
|
2699
|
+
fontSize: import_zod44.z.number().min(8).max(200).default(48),
|
|
2700
|
+
color: import_zod44.z.string().default("#FFFFFF"),
|
|
2701
|
+
fontFamily: import_zod44.z.string().default("Inter"),
|
|
2702
|
+
position: import_zod44.z.enum(["top", "center", "bottom"]).default("center"),
|
|
2703
|
+
speed: import_zod44.z.number().min(0.5).max(5).default(2),
|
|
2704
|
+
showCursor: import_zod44.z.boolean().default(true),
|
|
2705
|
+
cursorColor: import_zod44.z.string().default("#FFFFFF"),
|
|
2706
|
+
maxWidthPct: import_zod44.z.number().min(0.1).max(1).default(0.9),
|
|
2707
|
+
safeInsetPct: import_zod44.z.number().min(0).max(0.25).default(0.06)
|
|
2516
2708
|
});
|
|
2517
|
-
var positionStyles5 = (position) => {
|
|
2518
|
-
|
|
2519
|
-
if (position === "
|
|
2709
|
+
var positionStyles5 = (position, safeInsetPct) => {
|
|
2710
|
+
const inset = `${(safeInsetPct * 100).toFixed(2)}%`;
|
|
2711
|
+
if (position === "top") return { justifyContent: "center", alignItems: "flex-start", paddingTop: inset };
|
|
2712
|
+
if (position === "bottom") return { justifyContent: "center", alignItems: "flex-end", paddingBottom: inset };
|
|
2520
2713
|
return { justifyContent: "center", alignItems: "center" };
|
|
2521
2714
|
};
|
|
2522
2715
|
var TypewriterText = ({
|
|
@@ -2527,17 +2720,19 @@ var TypewriterText = ({
|
|
|
2527
2720
|
position,
|
|
2528
2721
|
speed,
|
|
2529
2722
|
showCursor,
|
|
2530
|
-
cursorColor
|
|
2723
|
+
cursorColor,
|
|
2724
|
+
maxWidthPct,
|
|
2725
|
+
safeInsetPct
|
|
2531
2726
|
}) => {
|
|
2532
|
-
const frame = (0,
|
|
2727
|
+
const frame = (0, import_remotion34.useCurrentFrame)();
|
|
2533
2728
|
const charCount = Math.min(content.length, Math.max(0, Math.floor(frame * speed)));
|
|
2534
2729
|
const shown = content.slice(0, charCount);
|
|
2535
2730
|
const cursorVisible = showCursor && charCount < content.length ? frame % 30 < 15 : false;
|
|
2536
2731
|
const cursorOpacity = cursorVisible ? 1 : 0;
|
|
2537
|
-
const cursorFade = (0,
|
|
2538
|
-
return /* @__PURE__ */ (0,
|
|
2732
|
+
const cursorFade = (0, import_remotion34.interpolate)(frame % 30, [0, 5], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2733
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Fill, { style: { display: "flex", ...positionStyles5(position, safeInsetPct) }, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { style: { fontSize, color, fontFamily, fontWeight: 600, textAlign: "center", whiteSpace: "pre-wrap", maxWidth: `${Math.round(maxWidthPct * 100)}%`, overflowWrap: "anywhere", wordBreak: "break-word" }, children: [
|
|
2539
2734
|
shown,
|
|
2540
|
-
showCursor ? /* @__PURE__ */ (0,
|
|
2735
|
+
showCursor ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { style: { color: cursorColor, opacity: cursorOpacity * cursorFade }, children: "|" }) : null
|
|
2541
2736
|
] }) });
|
|
2542
2737
|
};
|
|
2543
2738
|
var TypewriterTextComponentMetadata = {
|
|
@@ -2552,21 +2747,21 @@ var TypewriterTextComponentMetadata = {
|
|
|
2552
2747
|
};
|
|
2553
2748
|
|
|
2554
2749
|
// src/components/composites/TwitterCard.tsx
|
|
2555
|
-
var
|
|
2556
|
-
var
|
|
2557
|
-
var
|
|
2558
|
-
var TwitterCardPropsSchema =
|
|
2559
|
-
author:
|
|
2560
|
-
handle:
|
|
2561
|
-
avatarSrc:
|
|
2562
|
-
tweet:
|
|
2563
|
-
image:
|
|
2564
|
-
timestamp:
|
|
2565
|
-
verified:
|
|
2750
|
+
var import_remotion35 = require("remotion");
|
|
2751
|
+
var import_zod45 = require("zod");
|
|
2752
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
2753
|
+
var TwitterCardPropsSchema = import_zod45.z.object({
|
|
2754
|
+
author: import_zod45.z.string().min(1),
|
|
2755
|
+
handle: import_zod45.z.string().min(1),
|
|
2756
|
+
avatarSrc: import_zod45.z.string().optional(),
|
|
2757
|
+
tweet: import_zod45.z.string().max(280),
|
|
2758
|
+
image: import_zod45.z.string().optional(),
|
|
2759
|
+
timestamp: import_zod45.z.string().optional(),
|
|
2760
|
+
verified: import_zod45.z.boolean().default(false)
|
|
2566
2761
|
});
|
|
2567
|
-
var resolveAsset14 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
2762
|
+
var resolveAsset14 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion35.staticFile)(staticFileInputFromAssetPath(value));
|
|
2568
2763
|
var TwitterCard = ({ author, handle, avatarSrc, tweet, image, timestamp, verified }) => {
|
|
2569
|
-
return /* @__PURE__ */ (0,
|
|
2764
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Fill, { style: { backgroundColor: "#0B0F14", display: "flex", justifyContent: "center", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
|
|
2570
2765
|
"div",
|
|
2571
2766
|
{
|
|
2572
2767
|
style: {
|
|
@@ -2578,19 +2773,19 @@ var TwitterCard = ({ author, handle, avatarSrc, tweet, image, timestamp, verifie
|
|
|
2578
2773
|
boxShadow: "0 30px 90px rgba(0,0,0,0.35)"
|
|
2579
2774
|
},
|
|
2580
2775
|
children: [
|
|
2581
|
-
/* @__PURE__ */ (0,
|
|
2582
|
-
avatarSrc ? /* @__PURE__ */ (0,
|
|
2583
|
-
/* @__PURE__ */ (0,
|
|
2584
|
-
/* @__PURE__ */ (0,
|
|
2585
|
-
/* @__PURE__ */ (0,
|
|
2586
|
-
verified ? /* @__PURE__ */ (0,
|
|
2776
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { style: { display: "flex", gap: 18, alignItems: "center" }, children: [
|
|
2777
|
+
avatarSrc ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_remotion35.Img, { src: resolveAsset14(avatarSrc), style: { width: 78, height: 78, borderRadius: 9999, objectFit: "cover" } }) : /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { style: { width: 78, height: 78, borderRadius: 9999, backgroundColor: "#E5E7EB" } }),
|
|
2778
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { style: { display: "flex", flexDirection: "column" }, children: [
|
|
2779
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { style: { display: "flex", gap: 10, alignItems: "center" }, children: [
|
|
2780
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { style: { fontSize: 34, fontWeight: 900, color: "#111827" }, children: author }),
|
|
2781
|
+
verified ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { style: { fontSize: 26, color: "#1D9BF0", fontWeight: 900 }, children: "\u2713" }) : null
|
|
2587
2782
|
] }),
|
|
2588
|
-
/* @__PURE__ */ (0,
|
|
2783
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { style: { fontSize: 26, color: "#6B7280", fontWeight: 800 }, children: handle })
|
|
2589
2784
|
] })
|
|
2590
2785
|
] }),
|
|
2591
|
-
/* @__PURE__ */ (0,
|
|
2592
|
-
image ? /* @__PURE__ */ (0,
|
|
2593
|
-
timestamp ? /* @__PURE__ */ (0,
|
|
2786
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { style: { marginTop: 28, fontSize: 36, lineHeight: 1.25, color: "#111827", fontWeight: 700 }, children: tweet }),
|
|
2787
|
+
image ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { style: { marginTop: 28, width: "100%", height: 520, overflow: "hidden", borderRadius: 22, backgroundColor: "#F3F4F6" }, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_remotion35.Img, { src: resolveAsset14(image), style: { width: "100%", height: "100%", objectFit: "cover" } }) }) : null,
|
|
2788
|
+
timestamp ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { style: { marginTop: 22, fontSize: 22, color: "#6B7280", fontWeight: 700 }, children: timestamp }) : null
|
|
2594
2789
|
]
|
|
2595
2790
|
}
|
|
2596
2791
|
) });
|
|
@@ -2603,19 +2798,19 @@ var TwitterCardComponentMetadata = {
|
|
|
2603
2798
|
};
|
|
2604
2799
|
|
|
2605
2800
|
// src/components/composites/Watermark.tsx
|
|
2606
|
-
var
|
|
2607
|
-
var
|
|
2608
|
-
var
|
|
2609
|
-
var WatermarkPropsSchema =
|
|
2610
|
-
type:
|
|
2611
|
-
src:
|
|
2612
|
-
text:
|
|
2613
|
-
position:
|
|
2614
|
-
opacity:
|
|
2615
|
-
size:
|
|
2616
|
-
color:
|
|
2801
|
+
var import_remotion36 = require("remotion");
|
|
2802
|
+
var import_zod46 = require("zod");
|
|
2803
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
2804
|
+
var WatermarkPropsSchema = import_zod46.z.object({
|
|
2805
|
+
type: import_zod46.z.enum(["logo", "text"]).default("logo"),
|
|
2806
|
+
src: import_zod46.z.string().optional(),
|
|
2807
|
+
text: import_zod46.z.string().optional(),
|
|
2808
|
+
position: import_zod46.z.enum(["topLeft", "topRight", "bottomLeft", "bottomRight"]).default("bottomRight"),
|
|
2809
|
+
opacity: import_zod46.z.number().min(0.1).max(1).default(0.5),
|
|
2810
|
+
size: import_zod46.z.number().min(30).max(150).default(60),
|
|
2811
|
+
color: import_zod46.z.string().default("#FFFFFF")
|
|
2617
2812
|
});
|
|
2618
|
-
var resolveAsset15 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
2813
|
+
var resolveAsset15 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion36.staticFile)(staticFileInputFromAssetPath(value));
|
|
2619
2814
|
function posStyle(position) {
|
|
2620
2815
|
const offset = 30;
|
|
2621
2816
|
if (position === "topLeft") return { left: offset, top: offset };
|
|
@@ -2630,8 +2825,8 @@ var Watermark = ({ type, src, text, position, opacity, size, color }) => {
|
|
|
2630
2825
|
opacity,
|
|
2631
2826
|
pointerEvents: "none"
|
|
2632
2827
|
};
|
|
2633
|
-
return /* @__PURE__ */ (0,
|
|
2634
|
-
|
|
2828
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Fill, { children: type === "text" ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { style: { ...style, fontSize: Math.round(size * 0.6), color, fontWeight: 700 }, children: text ?? "" }) : src ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
2829
|
+
import_remotion36.Img,
|
|
2635
2830
|
{
|
|
2636
2831
|
src: resolveAsset15(src),
|
|
2637
2832
|
style: { ...style, width: size, height: size, objectFit: "contain" }
|
|
@@ -2645,19 +2840,20 @@ var WatermarkComponentMetadata = {
|
|
|
2645
2840
|
llmGuidance: "Use subtle opacity (0.3-0.6). bottomRight is standard.",
|
|
2646
2841
|
examples: [
|
|
2647
2842
|
{ type: "text", text: "@depths.ai", position: "bottomRight", opacity: 0.4, size: 60 },
|
|
2648
|
-
{ type: "logo", src: "/assets/logo.
|
|
2843
|
+
{ type: "logo", src: "/assets/logo.svg", position: "topLeft", opacity: 0.5, size: 70 }
|
|
2649
2844
|
]
|
|
2650
2845
|
};
|
|
2651
2846
|
|
|
2652
2847
|
// src/components/composites/WipeTransition.tsx
|
|
2653
|
-
var
|
|
2654
|
-
var
|
|
2655
|
-
var
|
|
2656
|
-
var
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2848
|
+
var import_react10 = __toESM(require("react"));
|
|
2849
|
+
var import_remotion37 = require("remotion");
|
|
2850
|
+
var import_zod47 = require("zod");
|
|
2851
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
2852
|
+
var WipeTransitionPropsSchema = import_zod47.z.object({
|
|
2853
|
+
durationInFrames: import_zod47.z.number().int().min(10).max(60).default(30),
|
|
2854
|
+
direction: import_zod47.z.enum(["left", "right", "up", "down", "diagonal"]).default("right"),
|
|
2855
|
+
softEdge: import_zod47.z.boolean().default(false),
|
|
2856
|
+
phase: import_zod47.z.enum(["in", "out", "inOut"]).default("inOut")
|
|
2661
2857
|
});
|
|
2662
2858
|
function clipFor2(direction, p) {
|
|
2663
2859
|
if (direction === "left") return `inset(0 ${100 * (1 - p)}% 0 0)`;
|
|
@@ -2674,20 +2870,21 @@ var WipeTransition = ({
|
|
|
2674
2870
|
children,
|
|
2675
2871
|
__wavesDurationInFrames
|
|
2676
2872
|
}) => {
|
|
2677
|
-
const
|
|
2873
|
+
const layers = import_react10.default.Children.toArray(children);
|
|
2874
|
+
const frame = (0, import_remotion37.useCurrentFrame)();
|
|
2678
2875
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
2679
2876
|
const d = Math.min(durationInFrames, total);
|
|
2680
2877
|
let clipPath;
|
|
2681
2878
|
if (phase === "in" || phase === "inOut") {
|
|
2682
|
-
const t = (0,
|
|
2879
|
+
const t = (0, import_remotion37.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2683
2880
|
clipPath = clipFor2(direction, t);
|
|
2684
2881
|
}
|
|
2685
2882
|
if (phase === "out" || phase === "inOut") {
|
|
2686
2883
|
const start = Math.max(0, total - d);
|
|
2687
|
-
const t = (0,
|
|
2884
|
+
const t = (0, import_remotion37.interpolate)(frame, [start, total], [1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2688
2885
|
clipPath = clipFor2(direction, t);
|
|
2689
2886
|
}
|
|
2690
|
-
return /* @__PURE__ */ (0,
|
|
2887
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Fill, { style: { clipPath, filter: softEdge ? "blur(0.4px)" : void 0 }, children: layers.map((child, i) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { style: { position: "absolute", inset: 0 }, children: child }, i)) });
|
|
2691
2888
|
};
|
|
2692
2889
|
var WipeTransitionComponentMetadata = {
|
|
2693
2890
|
kind: "composite",
|
|
@@ -2699,18 +2896,18 @@ var WipeTransitionComponentMetadata = {
|
|
|
2699
2896
|
};
|
|
2700
2897
|
|
|
2701
2898
|
// src/components/composites/YouTubeThumbnail.tsx
|
|
2702
|
-
var
|
|
2703
|
-
var
|
|
2704
|
-
var
|
|
2705
|
-
var YouTubeThumbnailPropsSchema =
|
|
2706
|
-
backgroundImage:
|
|
2707
|
-
title:
|
|
2708
|
-
subtitle:
|
|
2709
|
-
thumbnailFace:
|
|
2710
|
-
accentColor:
|
|
2711
|
-
style:
|
|
2899
|
+
var import_remotion38 = require("remotion");
|
|
2900
|
+
var import_zod48 = require("zod");
|
|
2901
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
2902
|
+
var YouTubeThumbnailPropsSchema = import_zod48.z.object({
|
|
2903
|
+
backgroundImage: import_zod48.z.string().min(1),
|
|
2904
|
+
title: import_zod48.z.string().max(60),
|
|
2905
|
+
subtitle: import_zod48.z.string().max(40).optional(),
|
|
2906
|
+
thumbnailFace: import_zod48.z.string().optional(),
|
|
2907
|
+
accentColor: import_zod48.z.string().default("#FF0000"),
|
|
2908
|
+
style: import_zod48.z.enum(["bold", "minimal", "dramatic"]).default("bold")
|
|
2712
2909
|
});
|
|
2713
|
-
var resolveAsset16 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
2910
|
+
var resolveAsset16 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion38.staticFile)(staticFileInputFromAssetPath(value));
|
|
2714
2911
|
var YouTubeThumbnail = ({
|
|
2715
2912
|
backgroundImage,
|
|
2716
2913
|
title,
|
|
@@ -2719,18 +2916,18 @@ var YouTubeThumbnail = ({
|
|
|
2719
2916
|
accentColor,
|
|
2720
2917
|
style
|
|
2721
2918
|
}) => {
|
|
2722
|
-
return /* @__PURE__ */ (0,
|
|
2723
|
-
/* @__PURE__ */ (0,
|
|
2724
|
-
style === "dramatic" ? /* @__PURE__ */ (0,
|
|
2725
|
-
thumbnailFace ? /* @__PURE__ */ (0,
|
|
2726
|
-
|
|
2919
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(Fill, { children: [
|
|
2920
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_remotion38.Img, { src: resolveAsset16(backgroundImage), style: { width: "100%", height: "100%", objectFit: "cover" } }),
|
|
2921
|
+
style === "dramatic" ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { style: { position: "absolute", inset: 0, backgroundColor: "rgba(0,0,0,0.35)" } }) : null,
|
|
2922
|
+
thumbnailFace ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
2923
|
+
import_remotion38.Img,
|
|
2727
2924
|
{
|
|
2728
2925
|
src: resolveAsset16(thumbnailFace),
|
|
2729
2926
|
style: { position: "absolute", right: 60, bottom: 0, width: 520, height: 720, objectFit: "cover" }
|
|
2730
2927
|
}
|
|
2731
2928
|
) : null,
|
|
2732
|
-
/* @__PURE__ */ (0,
|
|
2733
|
-
/* @__PURE__ */ (0,
|
|
2929
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { style: { position: "absolute", left: 70, top: 90, width: 1100 }, children: [
|
|
2930
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
2734
2931
|
"div",
|
|
2735
2932
|
{
|
|
2736
2933
|
style: {
|
|
@@ -2745,9 +2942,9 @@ var YouTubeThumbnail = ({
|
|
|
2745
2942
|
children: title
|
|
2746
2943
|
}
|
|
2747
2944
|
),
|
|
2748
|
-
subtitle ? /* @__PURE__ */ (0,
|
|
2945
|
+
subtitle ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { style: { marginTop: 26, fontSize: 52, fontWeight: 900, color: accentColor, textShadow: "0 10px 30px rgba(0,0,0,0.6)" }, children: subtitle }) : null
|
|
2749
2946
|
] }),
|
|
2750
|
-
style !== "minimal" ? /* @__PURE__ */ (0,
|
|
2947
|
+
style !== "minimal" ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { style: { position: "absolute", left: 70, bottom: 80, width: 260, height: 18, backgroundColor: accentColor, borderRadius: 9999 } }) : null
|
|
2751
2948
|
] });
|
|
2752
2949
|
};
|
|
2753
2950
|
var YouTubeThumbnailComponentMetadata = {
|
|
@@ -2758,37 +2955,39 @@ var YouTubeThumbnailComponentMetadata = {
|
|
|
2758
2955
|
};
|
|
2759
2956
|
|
|
2760
2957
|
// src/components/composites/VideoWithOverlay.tsx
|
|
2761
|
-
var
|
|
2762
|
-
var
|
|
2763
|
-
var
|
|
2764
|
-
var OverlaySchema =
|
|
2765
|
-
type:
|
|
2766
|
-
content:
|
|
2767
|
-
opacity:
|
|
2768
|
-
position:
|
|
2958
|
+
var import_remotion39 = require("remotion");
|
|
2959
|
+
var import_zod49 = require("zod");
|
|
2960
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
2961
|
+
var OverlaySchema = import_zod49.z.object({
|
|
2962
|
+
type: import_zod49.z.enum(["text", "logo", "gradient"]),
|
|
2963
|
+
content: import_zod49.z.string().optional(),
|
|
2964
|
+
opacity: import_zod49.z.number().min(0).max(1).default(0.3),
|
|
2965
|
+
position: import_zod49.z.enum(["top", "bottom", "center", "full"]).default("bottom")
|
|
2769
2966
|
});
|
|
2770
|
-
var VideoWithOverlayPropsSchema =
|
|
2771
|
-
src:
|
|
2967
|
+
var VideoWithOverlayPropsSchema = import_zod49.z.object({
|
|
2968
|
+
src: import_zod49.z.string().min(1),
|
|
2772
2969
|
overlay: OverlaySchema.optional(),
|
|
2773
|
-
volume:
|
|
2774
|
-
playbackRate:
|
|
2970
|
+
volume: import_zod49.z.number().min(0).max(1).default(1),
|
|
2971
|
+
playbackRate: import_zod49.z.number().min(0.5).max(2).default(1)
|
|
2775
2972
|
});
|
|
2776
|
-
var resolveAsset17 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
2973
|
+
var resolveAsset17 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion39.staticFile)(staticFileInputFromAssetPath(value));
|
|
2777
2974
|
var VideoWithOverlay = ({ src, overlay, volume, playbackRate }) => {
|
|
2778
|
-
const frame = (0,
|
|
2779
|
-
const fade = (0,
|
|
2780
|
-
const
|
|
2781
|
-
|
|
2975
|
+
const frame = (0, import_remotion39.useCurrentFrame)();
|
|
2976
|
+
const fade = (0, import_remotion39.interpolate)(frame, [0, 20], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2977
|
+
const overlayFill = { position: "absolute", inset: 0 };
|
|
2978
|
+
const overlayNode = overlay ? overlay.type === "gradient" ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
2979
|
+
"div",
|
|
2782
2980
|
{
|
|
2783
2981
|
style: {
|
|
2982
|
+
...overlayFill,
|
|
2784
2983
|
opacity: overlay.opacity,
|
|
2785
2984
|
background: overlay.position === "top" ? "linear-gradient(rgba(0,0,0,0.85), transparent)" : overlay.position === "bottom" ? "linear-gradient(transparent, rgba(0,0,0,0.85))" : "linear-gradient(rgba(0,0,0,0.6), rgba(0,0,0,0.6))"
|
|
2786
2985
|
}
|
|
2787
2986
|
}
|
|
2788
|
-
) : overlay.type === "logo" && overlay.content ? /* @__PURE__ */ (0,
|
|
2789
|
-
return /* @__PURE__ */ (0,
|
|
2790
|
-
/* @__PURE__ */ (0,
|
|
2791
|
-
|
|
2987
|
+
) : overlay.type === "logo" && overlay.content ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { style: { ...overlayFill, display: "flex", justifyContent: "center", alignItems: "center", opacity: overlay.opacity }, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_remotion39.Img, { src: resolveAsset17(overlay.content), style: { width: 220, height: 220, objectFit: "contain" } }) }) : overlay.type === "text" && overlay.content ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { style: { ...overlayFill, display: "flex", justifyContent: "center", alignItems: "center", opacity: overlay.opacity }, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { style: { color: "#FFFFFF", fontSize: 56, fontWeight: 900, textAlign: "center", padding: "0 80px" }, children: overlay.content }) }) : null : null;
|
|
2988
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Fill, { children: [
|
|
2989
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
2990
|
+
import_remotion39.Video,
|
|
2792
2991
|
{
|
|
2793
2992
|
src: resolveAsset17(src),
|
|
2794
2993
|
style: { width: "100%", height: "100%", objectFit: "cover", opacity: fade },
|
|
@@ -2807,13 +3006,14 @@ var VideoWithOverlayComponentMetadata = {
|
|
|
2807
3006
|
};
|
|
2808
3007
|
|
|
2809
3008
|
// src/components/composites/ZoomTransition.tsx
|
|
2810
|
-
var
|
|
2811
|
-
var
|
|
2812
|
-
var
|
|
2813
|
-
var
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
3009
|
+
var import_react11 = __toESM(require("react"));
|
|
3010
|
+
var import_remotion40 = require("remotion");
|
|
3011
|
+
var import_zod50 = require("zod");
|
|
3012
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
3013
|
+
var ZoomTransitionPropsSchema = import_zod50.z.object({
|
|
3014
|
+
durationInFrames: import_zod50.z.number().int().min(10).max(60).default(30),
|
|
3015
|
+
type: import_zod50.z.enum(["zoomIn", "zoomOut"]).default("zoomIn"),
|
|
3016
|
+
phase: import_zod50.z.enum(["in", "out", "inOut"]).default("inOut")
|
|
2817
3017
|
});
|
|
2818
3018
|
var ZoomTransition = ({
|
|
2819
3019
|
durationInFrames,
|
|
@@ -2822,7 +3022,8 @@ var ZoomTransition = ({
|
|
|
2822
3022
|
children,
|
|
2823
3023
|
__wavesDurationInFrames
|
|
2824
3024
|
}) => {
|
|
2825
|
-
const
|
|
3025
|
+
const layers = import_react11.default.Children.toArray(children);
|
|
3026
|
+
const frame = (0, import_remotion40.useCurrentFrame)();
|
|
2826
3027
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
2827
3028
|
const d = Math.min(durationInFrames, total);
|
|
2828
3029
|
let opacity = 1;
|
|
@@ -2830,17 +3031,17 @@ var ZoomTransition = ({
|
|
|
2830
3031
|
const enterFrom = type === "zoomIn" ? 1.2 : 0.85;
|
|
2831
3032
|
const exitTo = type === "zoomIn" ? 1.25 : 0.75;
|
|
2832
3033
|
if (phase === "in" || phase === "inOut") {
|
|
2833
|
-
const t = (0,
|
|
3034
|
+
const t = (0, import_remotion40.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2834
3035
|
scale *= enterFrom + (1 - enterFrom) * t;
|
|
2835
3036
|
opacity *= t;
|
|
2836
3037
|
}
|
|
2837
3038
|
if (phase === "out" || phase === "inOut") {
|
|
2838
3039
|
const start = Math.max(0, total - d);
|
|
2839
|
-
const t = (0,
|
|
3040
|
+
const t = (0, import_remotion40.interpolate)(frame, [start, total], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2840
3041
|
scale *= 1 + (exitTo - 1) * t;
|
|
2841
3042
|
opacity *= 1 - t;
|
|
2842
3043
|
}
|
|
2843
|
-
return /* @__PURE__ */ (0,
|
|
3044
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Fill, { style: { opacity, transform: `scale(${scale})` }, children: layers.map((child, i) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { style: { position: "absolute", inset: 0 }, children: child }, i)) });
|
|
2844
3045
|
};
|
|
2845
3046
|
var ZoomTransitionComponentMetadata = {
|
|
2846
3047
|
kind: "composite",
|
|
@@ -2869,6 +3070,14 @@ function registerBuiltInComponents() {
|
|
|
2869
3070
|
metadata: BoxComponentMetadata
|
|
2870
3071
|
});
|
|
2871
3072
|
}
|
|
3073
|
+
if (!globalRegistry.has("Frame")) {
|
|
3074
|
+
globalRegistry.register({
|
|
3075
|
+
type: "Frame",
|
|
3076
|
+
component: Frame,
|
|
3077
|
+
propsSchema: FramePropsSchema,
|
|
3078
|
+
metadata: FrameComponentMetadata
|
|
3079
|
+
});
|
|
3080
|
+
}
|
|
2872
3081
|
if (!globalRegistry.has("Stack")) {
|
|
2873
3082
|
globalRegistry.register({
|
|
2874
3083
|
type: "Stack",
|
|
@@ -2885,6 +3094,22 @@ function registerBuiltInComponents() {
|
|
|
2885
3094
|
metadata: GridComponentMetadata
|
|
2886
3095
|
});
|
|
2887
3096
|
}
|
|
3097
|
+
if (!globalRegistry.has("Layers")) {
|
|
3098
|
+
globalRegistry.register({
|
|
3099
|
+
type: "Layers",
|
|
3100
|
+
component: Layers,
|
|
3101
|
+
propsSchema: LayersPropsSchema,
|
|
3102
|
+
metadata: LayersComponentMetadata
|
|
3103
|
+
});
|
|
3104
|
+
}
|
|
3105
|
+
if (!globalRegistry.has("Layer")) {
|
|
3106
|
+
globalRegistry.register({
|
|
3107
|
+
type: "Layer",
|
|
3108
|
+
component: Layer,
|
|
3109
|
+
propsSchema: LayerPropsSchema,
|
|
3110
|
+
metadata: LayerComponentMetadata
|
|
3111
|
+
});
|
|
3112
|
+
}
|
|
2888
3113
|
if (!globalRegistry.has("Image")) {
|
|
2889
3114
|
globalRegistry.register({
|
|
2890
3115
|
type: "Image",
|