@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/cli.js
CHANGED
|
@@ -242,19 +242,77 @@ var AudioComponentMetadata = {
|
|
|
242
242
|
};
|
|
243
243
|
|
|
244
244
|
// src/components/primitives/Box.tsx
|
|
245
|
+
var import_react = __toESM(require("react"));
|
|
245
246
|
var import_zod4 = require("zod");
|
|
247
|
+
|
|
248
|
+
// src/remotion/Fill.tsx
|
|
246
249
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
250
|
+
var Fill = ({ style, children }) => {
|
|
251
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
252
|
+
"div",
|
|
253
|
+
{
|
|
254
|
+
style: {
|
|
255
|
+
width: "100%",
|
|
256
|
+
height: "100%",
|
|
257
|
+
position: "relative",
|
|
258
|
+
boxSizing: "border-box",
|
|
259
|
+
...style ?? {}
|
|
260
|
+
},
|
|
261
|
+
children
|
|
262
|
+
}
|
|
263
|
+
);
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
// src/components/primitives/Box.tsx
|
|
267
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
247
268
|
var BoxPropsSchema = import_zod4.z.object({
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
width: import_zod4.z.number().positive().optional().describe("Width in pixels (omit for auto)"),
|
|
251
|
-
height: import_zod4.z.number().positive().optional().describe("Height in pixels (omit for auto)"),
|
|
269
|
+
width: import_zod4.z.number().positive().optional().describe("Width in pixels (optional)"),
|
|
270
|
+
height: import_zod4.z.number().positive().optional().describe("Height in pixels (optional)"),
|
|
252
271
|
padding: import_zod4.z.number().min(0).default(0).describe("Padding in pixels"),
|
|
253
|
-
backgroundColor: import_zod4.z.string().optional().describe("CSS color (e.g. #RRGGBB)"),
|
|
272
|
+
backgroundColor: import_zod4.z.string().optional().describe("CSS color (e.g. #RRGGBB, rgba())"),
|
|
254
273
|
borderRadius: import_zod4.z.number().min(0).default(0).describe("Border radius in pixels"),
|
|
255
274
|
opacity: import_zod4.z.number().min(0).max(1).default(1).describe("Opacity 0..1")
|
|
256
275
|
});
|
|
257
|
-
var Box = ({
|
|
276
|
+
var Box = ({ width, height, padding, backgroundColor, borderRadius, opacity, children }) => {
|
|
277
|
+
const layers = import_react.default.Children.toArray(children);
|
|
278
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
279
|
+
Fill,
|
|
280
|
+
{
|
|
281
|
+
style: {
|
|
282
|
+
width,
|
|
283
|
+
height,
|
|
284
|
+
padding,
|
|
285
|
+
backgroundColor,
|
|
286
|
+
borderRadius,
|
|
287
|
+
opacity
|
|
288
|
+
},
|
|
289
|
+
children: layers.map((child, i) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { style: { position: "absolute", inset: 0 }, children: child }, i))
|
|
290
|
+
}
|
|
291
|
+
);
|
|
292
|
+
};
|
|
293
|
+
var BoxComponentMetadata = {
|
|
294
|
+
kind: "primitive",
|
|
295
|
+
category: "layout",
|
|
296
|
+
acceptsChildren: true,
|
|
297
|
+
description: "Flow container for layout and backgrounds (layout-safe)",
|
|
298
|
+
llmGuidance: "Use Box as a container inside Grid/Stack. Box participates in layout flow. For x/y positioning, use Frame."
|
|
299
|
+
};
|
|
300
|
+
|
|
301
|
+
// src/components/primitives/Frame.tsx
|
|
302
|
+
var import_react2 = __toESM(require("react"));
|
|
303
|
+
var import_zod5 = require("zod");
|
|
304
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
305
|
+
var FramePropsSchema = import_zod5.z.object({
|
|
306
|
+
x: import_zod5.z.number().default(0).describe("Left offset in pixels"),
|
|
307
|
+
y: import_zod5.z.number().default(0).describe("Top offset in pixels"),
|
|
308
|
+
width: import_zod5.z.number().positive().optional().describe("Width in pixels (optional)"),
|
|
309
|
+
height: import_zod5.z.number().positive().optional().describe("Height in pixels (optional)"),
|
|
310
|
+
padding: import_zod5.z.number().min(0).default(0).describe("Padding in pixels"),
|
|
311
|
+
backgroundColor: import_zod5.z.string().optional().describe("CSS color (e.g. #RRGGBB, rgba())"),
|
|
312
|
+
borderRadius: import_zod5.z.number().min(0).default(0).describe("Border radius in pixels"),
|
|
313
|
+
opacity: import_zod5.z.number().min(0).max(1).default(1).describe("Opacity 0..1")
|
|
314
|
+
});
|
|
315
|
+
var Frame = ({
|
|
258
316
|
x,
|
|
259
317
|
y,
|
|
260
318
|
width,
|
|
@@ -265,7 +323,8 @@ var Box = ({
|
|
|
265
323
|
opacity,
|
|
266
324
|
children
|
|
267
325
|
}) => {
|
|
268
|
-
|
|
326
|
+
const layers = import_react2.default.Children.toArray(children);
|
|
327
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
269
328
|
"div",
|
|
270
329
|
{
|
|
271
330
|
style: {
|
|
@@ -280,29 +339,28 @@ var Box = ({
|
|
|
280
339
|
opacity,
|
|
281
340
|
boxSizing: "border-box"
|
|
282
341
|
},
|
|
283
|
-
children
|
|
342
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Fill, { children: layers.map((child, i) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { style: { position: "absolute", inset: 0 }, children: child }, i)) })
|
|
284
343
|
}
|
|
285
344
|
);
|
|
286
345
|
};
|
|
287
|
-
var
|
|
346
|
+
var FrameComponentMetadata = {
|
|
288
347
|
kind: "primitive",
|
|
289
348
|
category: "layout",
|
|
290
349
|
acceptsChildren: true,
|
|
291
|
-
description: "
|
|
292
|
-
llmGuidance: "Use
|
|
350
|
+
description: "Absolute-positioned container (x/y placement)",
|
|
351
|
+
llmGuidance: "Use Frame for precise pixel placement (x/y). Use Box for normal layout flow inside Grid/Stack."
|
|
293
352
|
};
|
|
294
353
|
|
|
295
354
|
// src/components/primitives/Grid.tsx
|
|
296
|
-
var
|
|
297
|
-
var
|
|
298
|
-
var
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
justify: import_zod5.z.enum(["start", "center", "end", "stretch"]).default("stretch")
|
|
355
|
+
var import_zod6 = require("zod");
|
|
356
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
357
|
+
var GridPropsSchema = import_zod6.z.object({
|
|
358
|
+
columns: import_zod6.z.number().int().min(1).max(12).default(2),
|
|
359
|
+
rows: import_zod6.z.number().int().min(1).max(12).default(1),
|
|
360
|
+
gap: import_zod6.z.number().min(0).default(24),
|
|
361
|
+
padding: import_zod6.z.number().min(0).default(0),
|
|
362
|
+
align: import_zod6.z.enum(["start", "center", "end", "stretch"]).default("stretch"),
|
|
363
|
+
justify: import_zod6.z.enum(["start", "center", "end", "stretch"]).default("stretch")
|
|
306
364
|
});
|
|
307
365
|
var mapAlign = (a) => {
|
|
308
366
|
if (a === "start") return "start";
|
|
@@ -317,8 +375,8 @@ var mapJustify = (j) => {
|
|
|
317
375
|
return "stretch";
|
|
318
376
|
};
|
|
319
377
|
var Grid = ({ columns, rows, gap, padding, align, justify, children }) => {
|
|
320
|
-
return /* @__PURE__ */ (0,
|
|
321
|
-
|
|
378
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
379
|
+
Fill,
|
|
322
380
|
{
|
|
323
381
|
style: {
|
|
324
382
|
display: "grid",
|
|
@@ -343,19 +401,19 @@ var GridComponentMetadata = {
|
|
|
343
401
|
};
|
|
344
402
|
|
|
345
403
|
// src/components/primitives/Image.tsx
|
|
346
|
-
var
|
|
347
|
-
var
|
|
348
|
-
var
|
|
349
|
-
var ImagePropsSchema =
|
|
350
|
-
src:
|
|
351
|
-
fit:
|
|
352
|
-
borderRadius:
|
|
353
|
-
opacity:
|
|
404
|
+
var import_remotion2 = require("remotion");
|
|
405
|
+
var import_zod7 = require("zod");
|
|
406
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
407
|
+
var ImagePropsSchema = import_zod7.z.object({
|
|
408
|
+
src: import_zod7.z.string().min(1),
|
|
409
|
+
fit: import_zod7.z.enum(["cover", "contain"]).default("cover"),
|
|
410
|
+
borderRadius: import_zod7.z.number().min(0).default(0),
|
|
411
|
+
opacity: import_zod7.z.number().min(0).max(1).default(1)
|
|
354
412
|
});
|
|
355
|
-
var resolveAsset = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
413
|
+
var resolveAsset = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion2.staticFile)(staticFileInputFromAssetPath(value));
|
|
356
414
|
var Image = ({ src, fit, borderRadius, opacity }) => {
|
|
357
|
-
return /* @__PURE__ */ (0,
|
|
358
|
-
|
|
415
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Fill, { style: { opacity }, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
416
|
+
import_remotion2.Img,
|
|
359
417
|
{
|
|
360
418
|
src: resolveAsset(src),
|
|
361
419
|
style: { width: "100%", height: "100%", objectFit: fit, borderRadius }
|
|
@@ -369,32 +427,91 @@ var ImageComponentMetadata = {
|
|
|
369
427
|
llmGuidance: 'Use Image for pictures and backgrounds. Use fit="cover" for full-bleed, fit="contain" to avoid cropping.'
|
|
370
428
|
};
|
|
371
429
|
|
|
430
|
+
// src/components/primitives/Layer.tsx
|
|
431
|
+
var import_react3 = __toESM(require("react"));
|
|
432
|
+
var import_zod8 = require("zod");
|
|
433
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
434
|
+
var LayerPropsSchema = import_zod8.z.object({
|
|
435
|
+
zIndex: import_zod8.z.number().int().default(0).describe("Higher zIndex renders on top"),
|
|
436
|
+
inset: import_zod8.z.number().min(0).default(0).describe("Inset from all sides in pixels"),
|
|
437
|
+
opacity: import_zod8.z.number().min(0).max(1).default(1),
|
|
438
|
+
pointerEvents: import_zod8.z.enum(["none", "auto"]).default("none")
|
|
439
|
+
});
|
|
440
|
+
var Layer = ({ zIndex, inset, opacity, pointerEvents, children }) => {
|
|
441
|
+
const layers = import_react3.default.Children.toArray(children);
|
|
442
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
443
|
+
"div",
|
|
444
|
+
{
|
|
445
|
+
style: {
|
|
446
|
+
position: "absolute",
|
|
447
|
+
left: inset,
|
|
448
|
+
right: inset,
|
|
449
|
+
top: inset,
|
|
450
|
+
bottom: inset,
|
|
451
|
+
zIndex,
|
|
452
|
+
opacity,
|
|
453
|
+
pointerEvents,
|
|
454
|
+
boxSizing: "border-box"
|
|
455
|
+
},
|
|
456
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Fill, { children: layers.map((child, i) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: { position: "absolute", inset: 0 }, children: child }, i)) })
|
|
457
|
+
}
|
|
458
|
+
);
|
|
459
|
+
};
|
|
460
|
+
var LayerComponentMetadata = {
|
|
461
|
+
kind: "primitive",
|
|
462
|
+
category: "layout",
|
|
463
|
+
acceptsChildren: true,
|
|
464
|
+
minChildren: 1,
|
|
465
|
+
description: "One overlay layer with explicit zIndex inside Layers",
|
|
466
|
+
llmGuidance: "Use Layer inside Layers to control stacking. Put exactly one child in a Layer (recommended)."
|
|
467
|
+
};
|
|
468
|
+
|
|
469
|
+
// src/components/primitives/Layers.tsx
|
|
470
|
+
var import_zod9 = require("zod");
|
|
471
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
472
|
+
var LayersPropsSchema = import_zod9.z.object({
|
|
473
|
+
overflow: import_zod9.z.enum(["visible", "hidden"]).default("visible").describe("Clip layers to bounds")
|
|
474
|
+
});
|
|
475
|
+
var Layers = ({ overflow, children }) => {
|
|
476
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Fill, { style: { overflow }, children });
|
|
477
|
+
};
|
|
478
|
+
var LayersComponentMetadata = {
|
|
479
|
+
kind: "primitive",
|
|
480
|
+
category: "layout",
|
|
481
|
+
acceptsChildren: true,
|
|
482
|
+
minChildren: 1,
|
|
483
|
+
description: "Overlay container for stacking children (use Layer for zIndex)",
|
|
484
|
+
llmGuidance: "Use Layers to stack background/content/overlays. Prefer Layer children with explicit zIndex."
|
|
485
|
+
};
|
|
486
|
+
|
|
372
487
|
// src/components/primitives/Scene.tsx
|
|
373
|
-
var
|
|
374
|
-
var
|
|
375
|
-
var
|
|
376
|
-
var
|
|
488
|
+
var import_react4 = __toESM(require("react"));
|
|
489
|
+
var import_remotion3 = require("remotion");
|
|
490
|
+
var import_zod10 = require("zod");
|
|
491
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
492
|
+
var ScenePropsSchema = import_zod10.z.object({
|
|
377
493
|
background: BackgroundSpecSchema
|
|
378
494
|
});
|
|
379
495
|
var resolveAsset2 = (value) => {
|
|
380
|
-
return isRemoteAssetPath(value) ? value : (0,
|
|
496
|
+
return isRemoteAssetPath(value) ? value : (0, import_remotion3.staticFile)(staticFileInputFromAssetPath(value));
|
|
381
497
|
};
|
|
382
498
|
var Scene = ({ background, children }) => {
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
499
|
+
const layers = import_react4.default.Children.toArray(children);
|
|
500
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_remotion3.AbsoluteFill, { children: [
|
|
501
|
+
background.type === "color" ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_remotion3.AbsoluteFill, { style: { backgroundColor: background.value } }) : background.type === "image" ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
502
|
+
import_remotion3.Img,
|
|
386
503
|
{
|
|
387
504
|
src: resolveAsset2(background.value),
|
|
388
505
|
style: { width: "100%", height: "100%", objectFit: "cover" }
|
|
389
506
|
}
|
|
390
|
-
) : /* @__PURE__ */ (0,
|
|
391
|
-
|
|
507
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
508
|
+
import_remotion3.Video,
|
|
392
509
|
{
|
|
393
510
|
src: resolveAsset2(background.value),
|
|
394
511
|
style: { width: "100%", height: "100%", objectFit: "cover" }
|
|
395
512
|
}
|
|
396
513
|
),
|
|
397
|
-
/* @__PURE__ */ (0,
|
|
514
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_remotion3.AbsoluteFill, { children: layers.map((child, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_remotion3.AbsoluteFill, { children: child }, i)) })
|
|
398
515
|
] });
|
|
399
516
|
};
|
|
400
517
|
var SceneComponentMetadata = {
|
|
@@ -406,37 +523,37 @@ var SceneComponentMetadata = {
|
|
|
406
523
|
};
|
|
407
524
|
|
|
408
525
|
// src/components/primitives/Segment.tsx
|
|
409
|
-
var
|
|
410
|
-
var
|
|
411
|
-
var
|
|
412
|
-
var TransitionPropsSchema =
|
|
413
|
-
type:
|
|
414
|
-
durationInFrames:
|
|
415
|
-
props:
|
|
526
|
+
var import_remotion4 = require("remotion");
|
|
527
|
+
var import_zod11 = require("zod");
|
|
528
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
529
|
+
var TransitionPropsSchema = import_zod11.z.object({
|
|
530
|
+
type: import_zod11.z.string().min(1),
|
|
531
|
+
durationInFrames: import_zod11.z.number().int().positive(),
|
|
532
|
+
props: import_zod11.z.record(import_zod11.z.string(), import_zod11.z.unknown()).optional()
|
|
416
533
|
});
|
|
417
|
-
var SegmentPropsSchema =
|
|
534
|
+
var SegmentPropsSchema = import_zod11.z.object({
|
|
418
535
|
enterTransition: TransitionPropsSchema.optional(),
|
|
419
536
|
exitTransition: TransitionPropsSchema.optional()
|
|
420
537
|
});
|
|
421
538
|
function getSlideOptions(raw) {
|
|
422
|
-
const parsed =
|
|
423
|
-
direction:
|
|
424
|
-
distance:
|
|
539
|
+
const parsed = import_zod11.z.object({
|
|
540
|
+
direction: import_zod11.z.enum(["left", "right", "up", "down"]).default("left"),
|
|
541
|
+
distance: import_zod11.z.number().int().min(1).max(2e3).default(80)
|
|
425
542
|
}).safeParse(raw ?? {});
|
|
426
543
|
if (parsed.success) return parsed.data;
|
|
427
544
|
return { direction: "left", distance: 80 };
|
|
428
545
|
}
|
|
429
546
|
function getZoomOptions(raw) {
|
|
430
|
-
const parsed =
|
|
431
|
-
type:
|
|
547
|
+
const parsed = import_zod11.z.object({
|
|
548
|
+
type: import_zod11.z.enum(["zoomIn", "zoomOut"]).default("zoomIn")
|
|
432
549
|
}).safeParse(raw ?? {});
|
|
433
550
|
if (parsed.success) return parsed.data;
|
|
434
551
|
return { type: "zoomIn" };
|
|
435
552
|
}
|
|
436
553
|
function getWipeOptions(raw) {
|
|
437
|
-
const parsed =
|
|
438
|
-
direction:
|
|
439
|
-
softEdge:
|
|
554
|
+
const parsed = import_zod11.z.object({
|
|
555
|
+
direction: import_zod11.z.enum(["left", "right", "up", "down", "diagonal"]).default("right"),
|
|
556
|
+
softEdge: import_zod11.z.boolean().default(false)
|
|
440
557
|
}).safeParse(raw ?? {});
|
|
441
558
|
if (parsed.success) return parsed.data;
|
|
442
559
|
return { direction: "right", softEdge: false };
|
|
@@ -449,18 +566,18 @@ function clipFor(direction, p) {
|
|
|
449
566
|
return `polygon(0 0, ${100 * p}% 0, 0 ${100 * p}%)`;
|
|
450
567
|
}
|
|
451
568
|
function getCircularOptions(raw) {
|
|
452
|
-
const parsed =
|
|
453
|
-
direction:
|
|
454
|
-
center:
|
|
455
|
-
x:
|
|
456
|
-
y:
|
|
569
|
+
const parsed = import_zod11.z.object({
|
|
570
|
+
direction: import_zod11.z.enum(["open", "close"]).default("open"),
|
|
571
|
+
center: import_zod11.z.object({
|
|
572
|
+
x: import_zod11.z.number().min(0).max(1).default(0.5),
|
|
573
|
+
y: import_zod11.z.number().min(0).max(1).default(0.5)
|
|
457
574
|
}).default({ x: 0.5, y: 0.5 })
|
|
458
575
|
}).safeParse(raw ?? {});
|
|
459
576
|
if (parsed.success) return parsed.data;
|
|
460
577
|
return { direction: "open", center: { x: 0.5, y: 0.5 } };
|
|
461
578
|
}
|
|
462
579
|
var Segment = ({ enterTransition, exitTransition, children, __wavesDurationInFrames }) => {
|
|
463
|
-
const frame = (0,
|
|
580
|
+
const frame = (0, import_remotion4.useCurrentFrame)();
|
|
464
581
|
const durationInFrames = __wavesDurationInFrames ?? 0;
|
|
465
582
|
let opacity = 1;
|
|
466
583
|
let translateX = 0;
|
|
@@ -471,35 +588,35 @@ var Segment = ({ enterTransition, exitTransition, children, __wavesDurationInFra
|
|
|
471
588
|
if (enterTransition) {
|
|
472
589
|
const d = enterTransition.durationInFrames;
|
|
473
590
|
if (enterTransition.type === "FadeTransition") {
|
|
474
|
-
opacity *= (0,
|
|
591
|
+
opacity *= (0, import_remotion4.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
475
592
|
}
|
|
476
593
|
if (enterTransition.type === "SlideTransition") {
|
|
477
594
|
const opts = getSlideOptions(enterTransition.props);
|
|
478
|
-
const t = (0,
|
|
595
|
+
const t = (0, import_remotion4.interpolate)(frame, [0, d], [1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
479
596
|
const delta = opts.distance * t;
|
|
480
597
|
if (opts.direction === "left") translateX += -delta;
|
|
481
598
|
if (opts.direction === "right") translateX += delta;
|
|
482
599
|
if (opts.direction === "up") translateY += -delta;
|
|
483
600
|
if (opts.direction === "down") translateY += delta;
|
|
484
|
-
opacity *= (0,
|
|
601
|
+
opacity *= (0, import_remotion4.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
485
602
|
}
|
|
486
603
|
if (enterTransition.type === "ZoomTransition") {
|
|
487
604
|
const opts = getZoomOptions(enterTransition.props);
|
|
488
605
|
const fromScale = opts.type === "zoomIn" ? 1.2 : 0.85;
|
|
489
|
-
const t = (0,
|
|
606
|
+
const t = (0, import_remotion4.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
490
607
|
scale *= fromScale + (1 - fromScale) * t;
|
|
491
608
|
opacity *= t;
|
|
492
609
|
}
|
|
493
610
|
if (enterTransition.type === "WipeTransition") {
|
|
494
611
|
const opts = getWipeOptions(enterTransition.props);
|
|
495
|
-
const t = (0,
|
|
612
|
+
const t = (0, import_remotion4.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
496
613
|
clipPath = clipFor(opts.direction, t);
|
|
497
614
|
filter = opts.softEdge ? "blur(0.4px)" : void 0;
|
|
498
615
|
}
|
|
499
616
|
if (enterTransition.type === "CircularReveal") {
|
|
500
617
|
const opts = getCircularOptions(enterTransition.props);
|
|
501
618
|
const open = opts.direction === "open";
|
|
502
|
-
const t = (0,
|
|
619
|
+
const t = (0, import_remotion4.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
503
620
|
const radiusPct = open ? 150 * t : 150 * (1 - t);
|
|
504
621
|
clipPath = `circle(${radiusPct}% at ${Math.round(opts.center.x * 100)}% ${Math.round(opts.center.y * 100)}%)`;
|
|
505
622
|
}
|
|
@@ -508,41 +625,41 @@ var Segment = ({ enterTransition, exitTransition, children, __wavesDurationInFra
|
|
|
508
625
|
const d = exitTransition.durationInFrames;
|
|
509
626
|
const start = Math.max(0, durationInFrames - d);
|
|
510
627
|
if (exitTransition.type === "FadeTransition") {
|
|
511
|
-
opacity *= (0,
|
|
628
|
+
opacity *= (0, import_remotion4.interpolate)(frame, [start, durationInFrames], [1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
512
629
|
}
|
|
513
630
|
if (exitTransition.type === "SlideTransition") {
|
|
514
631
|
const opts = getSlideOptions(exitTransition.props);
|
|
515
|
-
const t = (0,
|
|
632
|
+
const t = (0, import_remotion4.interpolate)(frame, [start, durationInFrames], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
516
633
|
const delta = opts.distance * t;
|
|
517
634
|
if (opts.direction === "left") translateX += delta;
|
|
518
635
|
if (opts.direction === "right") translateX += -delta;
|
|
519
636
|
if (opts.direction === "up") translateY += delta;
|
|
520
637
|
if (opts.direction === "down") translateY += -delta;
|
|
521
|
-
opacity *= (0,
|
|
638
|
+
opacity *= (0, import_remotion4.interpolate)(frame, [start, durationInFrames], [1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
522
639
|
}
|
|
523
640
|
if (exitTransition.type === "ZoomTransition") {
|
|
524
641
|
const opts = getZoomOptions(exitTransition.props);
|
|
525
642
|
const toScale = opts.type === "zoomIn" ? 1.25 : 0.75;
|
|
526
|
-
const t = (0,
|
|
643
|
+
const t = (0, import_remotion4.interpolate)(frame, [start, durationInFrames], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
527
644
|
scale *= 1 + (toScale - 1) * t;
|
|
528
645
|
opacity *= 1 - t;
|
|
529
646
|
}
|
|
530
647
|
if (exitTransition.type === "WipeTransition") {
|
|
531
648
|
const opts = getWipeOptions(exitTransition.props);
|
|
532
|
-
const t = (0,
|
|
649
|
+
const t = (0, import_remotion4.interpolate)(frame, [start, durationInFrames], [1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
533
650
|
clipPath = clipFor(opts.direction, t);
|
|
534
651
|
filter = opts.softEdge ? "blur(0.4px)" : void 0;
|
|
535
652
|
}
|
|
536
653
|
if (exitTransition.type === "CircularReveal") {
|
|
537
654
|
const opts = getCircularOptions(exitTransition.props);
|
|
538
655
|
const open = opts.direction === "open";
|
|
539
|
-
const t = (0,
|
|
656
|
+
const t = (0, import_remotion4.interpolate)(frame, [start, durationInFrames], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
540
657
|
const radiusPct = open ? 150 * (1 - t) : 150 * t;
|
|
541
658
|
clipPath = `circle(${radiusPct}% at ${Math.round(opts.center.x * 100)}% ${Math.round(opts.center.y * 100)}%)`;
|
|
542
659
|
}
|
|
543
660
|
}
|
|
544
661
|
const transform = `translate(${translateX}px, ${translateY}px) scale(${scale})`;
|
|
545
|
-
return /* @__PURE__ */ (0,
|
|
662
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_remotion4.AbsoluteFill, { style: { opacity, transform, clipPath, filter }, children });
|
|
546
663
|
};
|
|
547
664
|
var SegmentComponentMetadata = {
|
|
548
665
|
kind: "primitive",
|
|
@@ -555,18 +672,18 @@ var SegmentComponentMetadata = {
|
|
|
555
672
|
};
|
|
556
673
|
|
|
557
674
|
// src/components/primitives/Shape.tsx
|
|
558
|
-
var
|
|
559
|
-
var
|
|
560
|
-
var ShapePropsSchema =
|
|
561
|
-
shape:
|
|
562
|
-
x:
|
|
563
|
-
y:
|
|
564
|
-
width:
|
|
565
|
-
height:
|
|
566
|
-
fill:
|
|
567
|
-
strokeColor:
|
|
568
|
-
strokeWidth:
|
|
569
|
-
opacity:
|
|
675
|
+
var import_zod12 = require("zod");
|
|
676
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
677
|
+
var ShapePropsSchema = import_zod12.z.object({
|
|
678
|
+
shape: import_zod12.z.enum(["rect", "circle"]).default("rect"),
|
|
679
|
+
x: import_zod12.z.number().default(0),
|
|
680
|
+
y: import_zod12.z.number().default(0),
|
|
681
|
+
width: import_zod12.z.number().positive().default(100),
|
|
682
|
+
height: import_zod12.z.number().positive().default(100),
|
|
683
|
+
fill: import_zod12.z.string().default("#FFFFFF"),
|
|
684
|
+
strokeColor: import_zod12.z.string().optional(),
|
|
685
|
+
strokeWidth: import_zod12.z.number().min(0).default(0),
|
|
686
|
+
opacity: import_zod12.z.number().min(0).max(1).default(1)
|
|
570
687
|
});
|
|
571
688
|
var Shape = ({
|
|
572
689
|
shape,
|
|
@@ -579,7 +696,7 @@ var Shape = ({
|
|
|
579
696
|
strokeWidth,
|
|
580
697
|
opacity
|
|
581
698
|
}) => {
|
|
582
|
-
return /* @__PURE__ */ (0,
|
|
699
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
583
700
|
"div",
|
|
584
701
|
{
|
|
585
702
|
style: {
|
|
@@ -604,15 +721,14 @@ var ShapeComponentMetadata = {
|
|
|
604
721
|
};
|
|
605
722
|
|
|
606
723
|
// src/components/primitives/Stack.tsx
|
|
607
|
-
var
|
|
608
|
-
var
|
|
609
|
-
var
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
justify: import_zod10.z.enum(["start", "center", "end", "between"]).default("center")
|
|
724
|
+
var import_zod13 = require("zod");
|
|
725
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
726
|
+
var StackPropsSchema = import_zod13.z.object({
|
|
727
|
+
direction: import_zod13.z.enum(["row", "column"]).default("column"),
|
|
728
|
+
gap: import_zod13.z.number().min(0).default(24),
|
|
729
|
+
padding: import_zod13.z.number().min(0).default(0),
|
|
730
|
+
align: import_zod13.z.enum(["start", "center", "end", "stretch"]).default("center"),
|
|
731
|
+
justify: import_zod13.z.enum(["start", "center", "end", "between"]).default("center")
|
|
616
732
|
});
|
|
617
733
|
var mapAlign2 = (a) => {
|
|
618
734
|
if (a === "start") return "flex-start";
|
|
@@ -627,8 +743,8 @@ var mapJustify2 = (j) => {
|
|
|
627
743
|
return "center";
|
|
628
744
|
};
|
|
629
745
|
var Stack = ({ direction, gap, padding, align, justify, children }) => {
|
|
630
|
-
return /* @__PURE__ */ (0,
|
|
631
|
-
|
|
746
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
747
|
+
Fill,
|
|
632
748
|
{
|
|
633
749
|
style: {
|
|
634
750
|
display: "flex",
|
|
@@ -652,17 +768,22 @@ var StackComponentMetadata = {
|
|
|
652
768
|
};
|
|
653
769
|
|
|
654
770
|
// src/components/primitives/Text.tsx
|
|
655
|
-
var
|
|
656
|
-
var
|
|
657
|
-
var
|
|
658
|
-
var TextPropsSchema =
|
|
659
|
-
content:
|
|
660
|
-
fontSize:
|
|
661
|
-
color:
|
|
662
|
-
|
|
663
|
-
|
|
771
|
+
var import_remotion5 = require("remotion");
|
|
772
|
+
var import_zod14 = require("zod");
|
|
773
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
774
|
+
var TextPropsSchema = import_zod14.z.object({
|
|
775
|
+
content: import_zod14.z.string(),
|
|
776
|
+
fontSize: import_zod14.z.number().default(48),
|
|
777
|
+
color: import_zod14.z.string().default("#FFFFFF"),
|
|
778
|
+
fontFamily: import_zod14.z.string().default("Inter"),
|
|
779
|
+
position: import_zod14.z.enum(["top", "center", "bottom", "left", "right"]).default("center"),
|
|
780
|
+
animation: import_zod14.z.enum(["none", "fade", "slide", "zoom"]).default("fade"),
|
|
781
|
+
maxWidthPct: import_zod14.z.number().min(0.1).max(1).default(0.9),
|
|
782
|
+
safeInsetPct: import_zod14.z.number().min(0).max(0.25).default(0.06),
|
|
783
|
+
textAlign: import_zod14.z.enum(["left", "center", "right"]).default("center")
|
|
664
784
|
});
|
|
665
|
-
var getPositionStyles = (position) => {
|
|
785
|
+
var getPositionStyles = (position, safeInsetPct) => {
|
|
786
|
+
const inset = `${(safeInsetPct * 100).toFixed(2)}%`;
|
|
666
787
|
const base = {
|
|
667
788
|
display: "flex",
|
|
668
789
|
justifyContent: "center",
|
|
@@ -670,13 +791,13 @@ var getPositionStyles = (position) => {
|
|
|
670
791
|
};
|
|
671
792
|
switch (position) {
|
|
672
793
|
case "top":
|
|
673
|
-
return { ...base, alignItems: "flex-start", paddingTop:
|
|
794
|
+
return { ...base, alignItems: "flex-start", paddingTop: inset };
|
|
674
795
|
case "bottom":
|
|
675
|
-
return { ...base, alignItems: "flex-end", paddingBottom:
|
|
796
|
+
return { ...base, alignItems: "flex-end", paddingBottom: inset };
|
|
676
797
|
case "left":
|
|
677
|
-
return { ...base, justifyContent: "flex-start", paddingLeft:
|
|
798
|
+
return { ...base, justifyContent: "flex-start", paddingLeft: inset };
|
|
678
799
|
case "right":
|
|
679
|
-
return { ...base, justifyContent: "flex-end", paddingRight:
|
|
800
|
+
return { ...base, justifyContent: "flex-end", paddingRight: inset };
|
|
680
801
|
default:
|
|
681
802
|
return base;
|
|
682
803
|
}
|
|
@@ -685,29 +806,29 @@ var getAnimationStyle = (frame, animation) => {
|
|
|
685
806
|
const animDuration = 30;
|
|
686
807
|
switch (animation) {
|
|
687
808
|
case "fade": {
|
|
688
|
-
const opacity = (0,
|
|
809
|
+
const opacity = (0, import_remotion5.interpolate)(frame, [0, animDuration], [0, 1], {
|
|
689
810
|
extrapolateLeft: "clamp",
|
|
690
811
|
extrapolateRight: "clamp"
|
|
691
812
|
});
|
|
692
813
|
return { opacity };
|
|
693
814
|
}
|
|
694
815
|
case "slide": {
|
|
695
|
-
const translateY = (0,
|
|
816
|
+
const translateY = (0, import_remotion5.interpolate)(frame, [0, animDuration], [50, 0], {
|
|
696
817
|
extrapolateLeft: "clamp",
|
|
697
818
|
extrapolateRight: "clamp"
|
|
698
819
|
});
|
|
699
|
-
const opacity = (0,
|
|
820
|
+
const opacity = (0, import_remotion5.interpolate)(frame, [0, animDuration], [0, 1], {
|
|
700
821
|
extrapolateLeft: "clamp",
|
|
701
822
|
extrapolateRight: "clamp"
|
|
702
823
|
});
|
|
703
824
|
return { transform: `translateY(${translateY}px)`, opacity };
|
|
704
825
|
}
|
|
705
826
|
case "zoom": {
|
|
706
|
-
const scale = (0,
|
|
827
|
+
const scale = (0, import_remotion5.interpolate)(frame, [0, animDuration], [0.8, 1], {
|
|
707
828
|
extrapolateLeft: "clamp",
|
|
708
829
|
extrapolateRight: "clamp"
|
|
709
830
|
});
|
|
710
|
-
const opacity = (0,
|
|
831
|
+
const opacity = (0, import_remotion5.interpolate)(frame, [0, animDuration], [0, 1], {
|
|
711
832
|
extrapolateLeft: "clamp",
|
|
712
833
|
extrapolateRight: "clamp"
|
|
713
834
|
});
|
|
@@ -717,18 +838,32 @@ var getAnimationStyle = (frame, animation) => {
|
|
|
717
838
|
return {};
|
|
718
839
|
}
|
|
719
840
|
};
|
|
720
|
-
var Text = ({
|
|
721
|
-
|
|
722
|
-
|
|
841
|
+
var Text = ({
|
|
842
|
+
content,
|
|
843
|
+
fontSize,
|
|
844
|
+
color,
|
|
845
|
+
fontFamily,
|
|
846
|
+
position,
|
|
847
|
+
animation,
|
|
848
|
+
maxWidthPct,
|
|
849
|
+
safeInsetPct,
|
|
850
|
+
textAlign
|
|
851
|
+
}) => {
|
|
852
|
+
const frame = (0, import_remotion5.useCurrentFrame)();
|
|
853
|
+
const positionStyles6 = getPositionStyles(position, safeInsetPct);
|
|
723
854
|
const animationStyles = getAnimationStyle(frame, animation);
|
|
724
|
-
return /* @__PURE__ */ (0,
|
|
855
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Fill, { style: positionStyles6, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
725
856
|
"div",
|
|
726
857
|
{
|
|
727
858
|
style: {
|
|
728
859
|
fontSize,
|
|
729
860
|
color,
|
|
861
|
+
fontFamily,
|
|
730
862
|
fontWeight: 600,
|
|
731
|
-
textAlign
|
|
863
|
+
textAlign,
|
|
864
|
+
maxWidth: `${Math.round(maxWidthPct * 100)}%`,
|
|
865
|
+
overflowWrap: "anywhere",
|
|
866
|
+
wordBreak: "break-word",
|
|
732
867
|
...animationStyles
|
|
733
868
|
},
|
|
734
869
|
children: content
|
|
@@ -759,20 +894,20 @@ var TextComponentMetadata = {
|
|
|
759
894
|
};
|
|
760
895
|
|
|
761
896
|
// src/components/primitives/Video.tsx
|
|
762
|
-
var
|
|
763
|
-
var
|
|
764
|
-
var
|
|
765
|
-
var VideoPropsSchema =
|
|
766
|
-
src:
|
|
767
|
-
fit:
|
|
768
|
-
borderRadius:
|
|
769
|
-
opacity:
|
|
770
|
-
muted:
|
|
897
|
+
var import_remotion6 = require("remotion");
|
|
898
|
+
var import_zod15 = require("zod");
|
|
899
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
900
|
+
var VideoPropsSchema = import_zod15.z.object({
|
|
901
|
+
src: import_zod15.z.string().min(1),
|
|
902
|
+
fit: import_zod15.z.enum(["cover", "contain"]).default("cover"),
|
|
903
|
+
borderRadius: import_zod15.z.number().min(0).default(0),
|
|
904
|
+
opacity: import_zod15.z.number().min(0).max(1).default(1),
|
|
905
|
+
muted: import_zod15.z.boolean().default(true)
|
|
771
906
|
});
|
|
772
|
-
var resolveAsset3 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
907
|
+
var resolveAsset3 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion6.staticFile)(staticFileInputFromAssetPath(value));
|
|
773
908
|
var Video2 = ({ src, fit, borderRadius, opacity, muted }) => {
|
|
774
|
-
return /* @__PURE__ */ (0,
|
|
775
|
-
|
|
909
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Fill, { style: { opacity }, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
910
|
+
import_remotion6.Video,
|
|
776
911
|
{
|
|
777
912
|
src: resolveAsset3(src),
|
|
778
913
|
muted,
|
|
@@ -788,19 +923,19 @@ var VideoComponentMetadata = {
|
|
|
788
923
|
};
|
|
789
924
|
|
|
790
925
|
// src/components/composites/AnimatedCounter.tsx
|
|
791
|
-
var
|
|
792
|
-
var
|
|
793
|
-
var
|
|
794
|
-
var AnimatedCounterPropsSchema =
|
|
795
|
-
from:
|
|
796
|
-
to:
|
|
797
|
-
fontSize:
|
|
798
|
-
color:
|
|
799
|
-
fontFamily:
|
|
800
|
-
fontWeight:
|
|
801
|
-
icon:
|
|
802
|
-
suffix:
|
|
803
|
-
animationType:
|
|
926
|
+
var import_remotion7 = require("remotion");
|
|
927
|
+
var import_zod16 = require("zod");
|
|
928
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
929
|
+
var AnimatedCounterPropsSchema = import_zod16.z.object({
|
|
930
|
+
from: import_zod16.z.number().default(0),
|
|
931
|
+
to: import_zod16.z.number().default(100),
|
|
932
|
+
fontSize: import_zod16.z.number().min(8).max(300).default(96),
|
|
933
|
+
color: import_zod16.z.string().default("#FFFFFF"),
|
|
934
|
+
fontFamily: import_zod16.z.string().default("Inter"),
|
|
935
|
+
fontWeight: import_zod16.z.number().int().min(100).max(900).default(700),
|
|
936
|
+
icon: import_zod16.z.string().optional(),
|
|
937
|
+
suffix: import_zod16.z.string().optional(),
|
|
938
|
+
animationType: import_zod16.z.enum(["spring", "linear"]).default("spring")
|
|
804
939
|
});
|
|
805
940
|
var AnimatedCounter = ({
|
|
806
941
|
from,
|
|
@@ -814,16 +949,16 @@ var AnimatedCounter = ({
|
|
|
814
949
|
animationType,
|
|
815
950
|
__wavesDurationInFrames
|
|
816
951
|
}) => {
|
|
817
|
-
const frame = (0,
|
|
818
|
-
const { fps } = (0,
|
|
952
|
+
const frame = (0, import_remotion7.useCurrentFrame)();
|
|
953
|
+
const { fps } = (0, import_remotion7.useVideoConfig)();
|
|
819
954
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
820
|
-
const progress = animationType === "spring" ? (0,
|
|
955
|
+
const progress = animationType === "spring" ? (0, import_remotion7.spring)({ frame, fps, config: { damping: 14, stiffness: 110, mass: 0.9 } }) : (0, import_remotion7.interpolate)(frame, [0, total], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
821
956
|
const value = from + (to - from) * Math.max(0, Math.min(1, progress));
|
|
822
957
|
const rounded = Math.round(value);
|
|
823
958
|
const label = `${rounded.toLocaleString()}${suffix ?? ""}`;
|
|
824
|
-
return /* @__PURE__ */ (0,
|
|
825
|
-
icon ? /* @__PURE__ */ (0,
|
|
826
|
-
/* @__PURE__ */ (0,
|
|
959
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Fill, { style: { display: "flex", alignItems: "center", justifyContent: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { textAlign: "center" }, children: [
|
|
960
|
+
icon ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { style: { fontSize: Math.round(fontSize * 0.5), marginBottom: 18 }, children: icon }) : null,
|
|
961
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { style: { fontSize, color, fontFamily, fontWeight, lineHeight: 1 }, children: label })
|
|
827
962
|
] }) });
|
|
828
963
|
};
|
|
829
964
|
var AnimatedCounterComponentMetadata = {
|
|
@@ -838,27 +973,27 @@ var AnimatedCounterComponentMetadata = {
|
|
|
838
973
|
};
|
|
839
974
|
|
|
840
975
|
// src/components/composites/BarChart.tsx
|
|
841
|
-
var
|
|
842
|
-
var
|
|
843
|
-
var
|
|
844
|
-
var BarChartPropsSchema =
|
|
845
|
-
data:
|
|
846
|
-
label:
|
|
847
|
-
value:
|
|
848
|
-
color:
|
|
976
|
+
var import_remotion8 = require("remotion");
|
|
977
|
+
var import_zod17 = require("zod");
|
|
978
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
979
|
+
var BarChartPropsSchema = import_zod17.z.object({
|
|
980
|
+
data: import_zod17.z.array(import_zod17.z.object({
|
|
981
|
+
label: import_zod17.z.string().min(1),
|
|
982
|
+
value: import_zod17.z.number(),
|
|
983
|
+
color: import_zod17.z.string().optional()
|
|
849
984
|
})).min(2).max(8),
|
|
850
|
-
orientation:
|
|
851
|
-
showValues:
|
|
852
|
-
showGrid:
|
|
853
|
-
maxValue:
|
|
985
|
+
orientation: import_zod17.z.enum(["horizontal", "vertical"]).default("vertical"),
|
|
986
|
+
showValues: import_zod17.z.boolean().default(true),
|
|
987
|
+
showGrid: import_zod17.z.boolean().default(false),
|
|
988
|
+
maxValue: import_zod17.z.number().optional()
|
|
854
989
|
});
|
|
855
990
|
var BarChart = ({ data, orientation, showValues, showGrid, maxValue }) => {
|
|
856
|
-
const frame = (0,
|
|
857
|
-
const { fps } = (0,
|
|
991
|
+
const frame = (0, import_remotion8.useCurrentFrame)();
|
|
992
|
+
const { fps } = (0, import_remotion8.useVideoConfig)();
|
|
858
993
|
const max = maxValue ?? Math.max(...data.map((d) => d.value));
|
|
859
|
-
return /* @__PURE__ */ (0,
|
|
860
|
-
showGrid ? /* @__PURE__ */ (0,
|
|
861
|
-
/* @__PURE__ */ (0,
|
|
994
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(Fill, { style: { padding: 90, boxSizing: "border-box" }, children: [
|
|
995
|
+
showGrid ? /* @__PURE__ */ (0, import_jsx_runtime16.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,
|
|
996
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
862
997
|
"div",
|
|
863
998
|
{
|
|
864
999
|
style: {
|
|
@@ -871,13 +1006,13 @@ var BarChart = ({ data, orientation, showValues, showGrid, maxValue }) => {
|
|
|
871
1006
|
justifyContent: "space-between"
|
|
872
1007
|
},
|
|
873
1008
|
children: data.map((d, i) => {
|
|
874
|
-
const p = (0,
|
|
1009
|
+
const p = (0, import_remotion8.spring)({ frame: frame - i * 4, fps, config: { damping: 14, stiffness: 120, mass: 0.9 } });
|
|
875
1010
|
const ratio = max === 0 ? 0 : d.value / max * p;
|
|
876
1011
|
const color = d.color ?? "#0A84FF";
|
|
877
|
-
return /* @__PURE__ */ (0,
|
|
878
|
-
orientation === "vertical" ? /* @__PURE__ */ (0,
|
|
879
|
-
/* @__PURE__ */ (0,
|
|
880
|
-
showValues ? /* @__PURE__ */ (0,
|
|
1012
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { flex: 1, display: "flex", flexDirection: "column", alignItems: "center", gap: 10 }, children: [
|
|
1013
|
+
orientation === "vertical" ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: { width: "100%", flex: 1, display: "flex", alignItems: "flex-end" }, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: { width: "100%", height: `${Math.round(ratio * 100)}%`, backgroundColor: color, borderRadius: 12 } }) }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: { width: "100%", display: "flex", alignItems: "center", gap: 12 }, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: { flex: 1, height: 18, backgroundColor: "rgba(255,255,255,0.15)", borderRadius: 9999, overflow: "hidden" }, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: { width: `${Math.round(ratio * 100)}%`, height: "100%", backgroundColor: color } }) }) }),
|
|
1014
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: { color: "#FFFFFF", fontWeight: 700, fontSize: 22, opacity: 0.9 }, children: d.label }),
|
|
1015
|
+
showValues ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: { color: "#FFFFFF", fontWeight: 800, fontSize: 26 }, children: Math.round(d.value).toLocaleString() }) : null
|
|
881
1016
|
] }, d.label);
|
|
882
1017
|
})
|
|
883
1018
|
}
|
|
@@ -892,31 +1027,31 @@ var BarChartComponentMetadata = {
|
|
|
892
1027
|
};
|
|
893
1028
|
|
|
894
1029
|
// src/components/composites/CardStack.tsx
|
|
895
|
-
var
|
|
896
|
-
var
|
|
897
|
-
var
|
|
898
|
-
var CardSchema =
|
|
899
|
-
title:
|
|
900
|
-
content:
|
|
901
|
-
backgroundColor:
|
|
1030
|
+
var import_remotion9 = require("remotion");
|
|
1031
|
+
var import_zod18 = require("zod");
|
|
1032
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1033
|
+
var CardSchema = import_zod18.z.object({
|
|
1034
|
+
title: import_zod18.z.string().min(1),
|
|
1035
|
+
content: import_zod18.z.string().min(1),
|
|
1036
|
+
backgroundColor: import_zod18.z.string().optional()
|
|
902
1037
|
});
|
|
903
|
-
var CardStackPropsSchema =
|
|
904
|
-
cards:
|
|
905
|
-
transition:
|
|
906
|
-
displayDuration:
|
|
1038
|
+
var CardStackPropsSchema = import_zod18.z.object({
|
|
1039
|
+
cards: import_zod18.z.array(CardSchema).min(2).max(5),
|
|
1040
|
+
transition: import_zod18.z.enum(["flip", "slide", "fade"]).default("flip"),
|
|
1041
|
+
displayDuration: import_zod18.z.number().int().min(30).max(150).default(90)
|
|
907
1042
|
});
|
|
908
1043
|
var CardStack = ({ cards, transition, displayDuration }) => {
|
|
909
|
-
const frame = (0,
|
|
910
|
-
const { fps } = (0,
|
|
1044
|
+
const frame = (0, import_remotion9.useCurrentFrame)();
|
|
1045
|
+
const { fps } = (0, import_remotion9.useVideoConfig)();
|
|
911
1046
|
const index = Math.min(cards.length - 1, Math.floor(frame / displayDuration));
|
|
912
1047
|
const local = frame - index * displayDuration;
|
|
913
|
-
const p = (0,
|
|
1048
|
+
const p = (0, import_remotion9.spring)({ frame: local, fps, config: { damping: 14, stiffness: 120, mass: 0.9 } });
|
|
914
1049
|
const card = cards[index];
|
|
915
1050
|
const bg = card.backgroundColor ?? "rgba(255,255,255,0.1)";
|
|
916
1051
|
const opacity = transition === "fade" ? p : 1;
|
|
917
|
-
const slideX = transition === "slide" ? (0,
|
|
918
|
-
const rotateY = transition === "flip" ? (0,
|
|
919
|
-
return /* @__PURE__ */ (0,
|
|
1052
|
+
const slideX = transition === "slide" ? (0, import_remotion9.interpolate)(p, [0, 1], [80, 0]) : 0;
|
|
1053
|
+
const rotateY = transition === "flip" ? (0, import_remotion9.interpolate)(p, [0, 1], [70, 0]) : 0;
|
|
1054
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Fill, { style: { display: "flex", justifyContent: "center", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
920
1055
|
"div",
|
|
921
1056
|
{
|
|
922
1057
|
style: {
|
|
@@ -933,8 +1068,8 @@ var CardStack = ({ cards, transition, displayDuration }) => {
|
|
|
933
1068
|
opacity
|
|
934
1069
|
},
|
|
935
1070
|
children: [
|
|
936
|
-
/* @__PURE__ */ (0,
|
|
937
|
-
/* @__PURE__ */ (0,
|
|
1071
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { fontSize: 56, fontWeight: 900, marginBottom: 22 }, children: card.title }),
|
|
1072
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { fontSize: 30, fontWeight: 700, opacity: 0.9, lineHeight: 1.3 }, children: card.content })
|
|
938
1073
|
]
|
|
939
1074
|
}
|
|
940
1075
|
) });
|
|
@@ -947,18 +1082,19 @@ var CardStackComponentMetadata = {
|
|
|
947
1082
|
};
|
|
948
1083
|
|
|
949
1084
|
// src/components/composites/CircularReveal.tsx
|
|
950
|
-
var
|
|
951
|
-
var
|
|
952
|
-
var
|
|
953
|
-
var
|
|
954
|
-
|
|
955
|
-
|
|
1085
|
+
var import_react5 = __toESM(require("react"));
|
|
1086
|
+
var import_remotion10 = require("remotion");
|
|
1087
|
+
var import_zod19 = require("zod");
|
|
1088
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1089
|
+
var CenterSchema = import_zod19.z.object({
|
|
1090
|
+
x: import_zod19.z.number().min(0).max(1).default(0.5),
|
|
1091
|
+
y: import_zod19.z.number().min(0).max(1).default(0.5)
|
|
956
1092
|
});
|
|
957
|
-
var CircularRevealPropsSchema =
|
|
958
|
-
durationInFrames:
|
|
959
|
-
direction:
|
|
1093
|
+
var CircularRevealPropsSchema = import_zod19.z.object({
|
|
1094
|
+
durationInFrames: import_zod19.z.number().int().min(10).max(60).default(30),
|
|
1095
|
+
direction: import_zod19.z.enum(["open", "close"]).default("open"),
|
|
960
1096
|
center: CenterSchema.optional(),
|
|
961
|
-
phase:
|
|
1097
|
+
phase: import_zod19.z.enum(["in", "out", "inOut"]).default("inOut")
|
|
962
1098
|
});
|
|
963
1099
|
var CircularReveal = ({
|
|
964
1100
|
durationInFrames,
|
|
@@ -968,22 +1104,23 @@ var CircularReveal = ({
|
|
|
968
1104
|
children,
|
|
969
1105
|
__wavesDurationInFrames
|
|
970
1106
|
}) => {
|
|
971
|
-
const
|
|
1107
|
+
const layers = import_react5.default.Children.toArray(children);
|
|
1108
|
+
const frame = (0, import_remotion10.useCurrentFrame)();
|
|
972
1109
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
973
1110
|
const d = Math.min(durationInFrames, total);
|
|
974
1111
|
const c = center ?? { x: 0.5, y: 0.5 };
|
|
975
1112
|
const open = direction === "open";
|
|
976
1113
|
let radiusPct = open ? 0 : 150;
|
|
977
1114
|
if (phase === "in" || phase === "inOut") {
|
|
978
|
-
const t = (0,
|
|
1115
|
+
const t = (0, import_remotion10.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
979
1116
|
radiusPct = open ? 150 * t : 150 * (1 - t);
|
|
980
1117
|
}
|
|
981
1118
|
if (phase === "out" || phase === "inOut") {
|
|
982
1119
|
const start = Math.max(0, total - d);
|
|
983
|
-
const t = (0,
|
|
1120
|
+
const t = (0, import_remotion10.interpolate)(frame, [start, total], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
984
1121
|
radiusPct = open ? 150 * (1 - t) : 150 * t;
|
|
985
1122
|
}
|
|
986
|
-
return /* @__PURE__ */ (0,
|
|
1123
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.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_runtime18.jsx)("div", { style: { position: "absolute", inset: 0 }, children: child }, i)) });
|
|
987
1124
|
};
|
|
988
1125
|
var CircularRevealComponentMetadata = {
|
|
989
1126
|
kind: "composite",
|
|
@@ -995,21 +1132,21 @@ var CircularRevealComponentMetadata = {
|
|
|
995
1132
|
};
|
|
996
1133
|
|
|
997
1134
|
// src/components/composites/CountUpText.tsx
|
|
998
|
-
var
|
|
999
|
-
var
|
|
1000
|
-
var
|
|
1001
|
-
var CountUpTextPropsSchema =
|
|
1002
|
-
from:
|
|
1003
|
-
to:
|
|
1004
|
-
fontSize:
|
|
1005
|
-
color:
|
|
1006
|
-
fontFamily:
|
|
1007
|
-
fontWeight:
|
|
1008
|
-
position:
|
|
1009
|
-
format:
|
|
1010
|
-
decimals:
|
|
1011
|
-
prefix:
|
|
1012
|
-
suffix:
|
|
1135
|
+
var import_remotion11 = require("remotion");
|
|
1136
|
+
var import_zod20 = require("zod");
|
|
1137
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1138
|
+
var CountUpTextPropsSchema = import_zod20.z.object({
|
|
1139
|
+
from: import_zod20.z.number().default(0),
|
|
1140
|
+
to: import_zod20.z.number().default(100),
|
|
1141
|
+
fontSize: import_zod20.z.number().min(8).max(240).default(72),
|
|
1142
|
+
color: import_zod20.z.string().default("#FFFFFF"),
|
|
1143
|
+
fontFamily: import_zod20.z.string().default("Inter"),
|
|
1144
|
+
fontWeight: import_zod20.z.number().int().min(100).max(900).default(700),
|
|
1145
|
+
position: import_zod20.z.enum(["top", "center", "bottom"]).default("center"),
|
|
1146
|
+
format: import_zod20.z.enum(["integer", "decimal", "currency", "percentage"]).default("integer"),
|
|
1147
|
+
decimals: import_zod20.z.number().int().min(0).max(4).default(0),
|
|
1148
|
+
prefix: import_zod20.z.string().optional(),
|
|
1149
|
+
suffix: import_zod20.z.string().optional()
|
|
1013
1150
|
});
|
|
1014
1151
|
var positionStyles = (position) => {
|
|
1015
1152
|
if (position === "top") return { justifyContent: "center", alignItems: "flex-start", paddingTop: 90 };
|
|
@@ -1036,15 +1173,15 @@ var CountUpText = ({
|
|
|
1036
1173
|
suffix,
|
|
1037
1174
|
__wavesDurationInFrames
|
|
1038
1175
|
}) => {
|
|
1039
|
-
const frame = (0,
|
|
1040
|
-
const { fps } = (0,
|
|
1176
|
+
const frame = (0, import_remotion11.useCurrentFrame)();
|
|
1177
|
+
const { fps } = (0, import_remotion11.useVideoConfig)();
|
|
1041
1178
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
1042
|
-
const p = (0,
|
|
1179
|
+
const p = (0, import_remotion11.spring)({ frame, fps, config: { damping: 14, stiffness: 110, mass: 0.9 } });
|
|
1043
1180
|
const progress = Math.max(0, Math.min(1, p));
|
|
1044
1181
|
const value = from + (to - from) * progress;
|
|
1045
|
-
const fade = (0,
|
|
1182
|
+
const fade = (0, import_remotion11.interpolate)(frame, [0, Math.min(12, total)], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1046
1183
|
const label = `${prefix ?? ""}${formatValue(value, format, decimals)}${suffix ?? ""}`;
|
|
1047
|
-
return /* @__PURE__ */ (0,
|
|
1184
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Fill, { style: { display: "flex", ...positionStyles(position) }, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { style: { fontSize, color, fontFamily, fontWeight, opacity: fade, lineHeight: 1 }, children: label }) });
|
|
1048
1185
|
};
|
|
1049
1186
|
var CountUpTextComponentMetadata = {
|
|
1050
1187
|
kind: "composite",
|
|
@@ -1054,10 +1191,11 @@ var CountUpTextComponentMetadata = {
|
|
|
1054
1191
|
};
|
|
1055
1192
|
|
|
1056
1193
|
// src/components/composites/FadeTransition.tsx
|
|
1057
|
-
var
|
|
1058
|
-
var
|
|
1059
|
-
var
|
|
1060
|
-
var
|
|
1194
|
+
var import_react6 = __toESM(require("react"));
|
|
1195
|
+
var import_remotion12 = require("remotion");
|
|
1196
|
+
var import_zod21 = require("zod");
|
|
1197
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1198
|
+
var EasingSchema = import_zod21.z.enum(["linear", "easeIn", "easeOut", "easeInOut"]);
|
|
1061
1199
|
function ease(t, easing) {
|
|
1062
1200
|
const x = Math.max(0, Math.min(1, t));
|
|
1063
1201
|
if (easing === "linear") return x;
|
|
@@ -1065,10 +1203,10 @@ function ease(t, easing) {
|
|
|
1065
1203
|
if (easing === "easeOut") return 1 - (1 - x) * (1 - x);
|
|
1066
1204
|
return x < 0.5 ? 2 * x * x : 1 - 2 * (1 - x) * (1 - x);
|
|
1067
1205
|
}
|
|
1068
|
-
var FadeTransitionPropsSchema =
|
|
1069
|
-
durationInFrames:
|
|
1206
|
+
var FadeTransitionPropsSchema = import_zod21.z.object({
|
|
1207
|
+
durationInFrames: import_zod21.z.number().int().min(10).max(60).default(30),
|
|
1070
1208
|
easing: EasingSchema.default("easeInOut"),
|
|
1071
|
-
phase:
|
|
1209
|
+
phase: import_zod21.z.enum(["in", "out", "inOut"]).default("inOut")
|
|
1072
1210
|
});
|
|
1073
1211
|
var FadeTransition = ({
|
|
1074
1212
|
durationInFrames,
|
|
@@ -1077,20 +1215,21 @@ var FadeTransition = ({
|
|
|
1077
1215
|
children,
|
|
1078
1216
|
__wavesDurationInFrames
|
|
1079
1217
|
}) => {
|
|
1080
|
-
const
|
|
1218
|
+
const layers = import_react6.default.Children.toArray(children);
|
|
1219
|
+
const frame = (0, import_remotion12.useCurrentFrame)();
|
|
1081
1220
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
1082
1221
|
const d = Math.min(durationInFrames, total);
|
|
1083
1222
|
let opacity = 1;
|
|
1084
1223
|
if (phase === "in" || phase === "inOut") {
|
|
1085
|
-
const t = (0,
|
|
1224
|
+
const t = (0, import_remotion12.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1086
1225
|
opacity *= ease(t, easing);
|
|
1087
1226
|
}
|
|
1088
1227
|
if (phase === "out" || phase === "inOut") {
|
|
1089
1228
|
const start = Math.max(0, total - d);
|
|
1090
|
-
const t = (0,
|
|
1229
|
+
const t = (0, import_remotion12.interpolate)(frame, [start, total], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1091
1230
|
opacity *= 1 - ease(t, easing);
|
|
1092
1231
|
}
|
|
1093
|
-
return /* @__PURE__ */ (0,
|
|
1232
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Fill, { style: { opacity }, children: layers.map((child, i) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { style: { position: "absolute", inset: 0 }, children: child }, i)) });
|
|
1094
1233
|
};
|
|
1095
1234
|
var FadeTransitionComponentMetadata = {
|
|
1096
1235
|
kind: "composite",
|
|
@@ -1102,17 +1241,17 @@ var FadeTransitionComponentMetadata = {
|
|
|
1102
1241
|
};
|
|
1103
1242
|
|
|
1104
1243
|
// src/components/composites/GlitchText.tsx
|
|
1105
|
-
var
|
|
1106
|
-
var
|
|
1107
|
-
var
|
|
1108
|
-
var GlitchTextPropsSchema =
|
|
1109
|
-
content:
|
|
1110
|
-
fontSize:
|
|
1111
|
-
color:
|
|
1112
|
-
fontFamily:
|
|
1113
|
-
position:
|
|
1114
|
-
intensity:
|
|
1115
|
-
glitchDuration:
|
|
1244
|
+
var import_remotion13 = require("remotion");
|
|
1245
|
+
var import_zod22 = require("zod");
|
|
1246
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1247
|
+
var GlitchTextPropsSchema = import_zod22.z.object({
|
|
1248
|
+
content: import_zod22.z.string().max(100),
|
|
1249
|
+
fontSize: import_zod22.z.number().min(8).max(240).default(72),
|
|
1250
|
+
color: import_zod22.z.string().default("#FFFFFF"),
|
|
1251
|
+
fontFamily: import_zod22.z.string().default("monospace"),
|
|
1252
|
+
position: import_zod22.z.enum(["top", "center", "bottom"]).default("center"),
|
|
1253
|
+
intensity: import_zod22.z.number().int().min(1).max(10).default(5),
|
|
1254
|
+
glitchDuration: import_zod22.z.number().int().min(5).max(30).default(10)
|
|
1116
1255
|
});
|
|
1117
1256
|
var positionStyles2 = (position) => {
|
|
1118
1257
|
if (position === "top") return { justifyContent: "center", alignItems: "flex-start", paddingTop: 90 };
|
|
@@ -1132,7 +1271,7 @@ var GlitchText = ({
|
|
|
1132
1271
|
intensity,
|
|
1133
1272
|
glitchDuration
|
|
1134
1273
|
}) => {
|
|
1135
|
-
const frame = (0,
|
|
1274
|
+
const frame = (0, import_remotion13.useCurrentFrame)();
|
|
1136
1275
|
const active = frame < glitchDuration;
|
|
1137
1276
|
const seed = frame + 1;
|
|
1138
1277
|
const jitter = active ? (pseudoRandom(seed) - 0.5) * intensity * 6 : 0;
|
|
@@ -1146,10 +1285,10 @@ var GlitchText = ({
|
|
|
1146
1285
|
textTransform: "uppercase",
|
|
1147
1286
|
textAlign: "center"
|
|
1148
1287
|
};
|
|
1149
|
-
return /* @__PURE__ */ (0,
|
|
1150
|
-
/* @__PURE__ */ (0,
|
|
1151
|
-
/* @__PURE__ */ (0,
|
|
1152
|
-
/* @__PURE__ */ (0,
|
|
1288
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Fill, { style: { display: "flex", ...positionStyles2(position) }, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { style: { position: "relative" }, children: [
|
|
1289
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { style: { ...baseStyle, color, transform: `translate(${jitter}px, ${jitterY}px)` }, children: content }),
|
|
1290
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { style: { ...baseStyle, color: "#FF3B30", transform: `translate(${jitter + 4}px, ${jitterY}px)`, mixBlendMode: "screen", opacity: active ? 0.9 : 0 }, children: content }),
|
|
1291
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { style: { ...baseStyle, color: "#0A84FF", transform: `translate(${jitter - 4}px, ${jitterY}px)`, mixBlendMode: "screen", opacity: active ? 0.9 : 0 }, children: content })
|
|
1153
1292
|
] }) });
|
|
1154
1293
|
};
|
|
1155
1294
|
var GlitchTextComponentMetadata = {
|
|
@@ -1160,17 +1299,16 @@ var GlitchTextComponentMetadata = {
|
|
|
1160
1299
|
};
|
|
1161
1300
|
|
|
1162
1301
|
// src/components/composites/GridLayout.tsx
|
|
1163
|
-
var
|
|
1164
|
-
var
|
|
1165
|
-
var
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
padding: import_zod20.z.number().min(0).max(100).default(40)
|
|
1302
|
+
var import_zod23 = require("zod");
|
|
1303
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1304
|
+
var GridLayoutPropsSchema = import_zod23.z.object({
|
|
1305
|
+
columns: import_zod23.z.number().int().min(1).max(4).default(2),
|
|
1306
|
+
rows: import_zod23.z.number().int().min(1).max(4).default(2),
|
|
1307
|
+
gap: import_zod23.z.number().min(0).max(50).default(20),
|
|
1308
|
+
padding: import_zod23.z.number().min(0).max(100).default(40)
|
|
1171
1309
|
});
|
|
1172
1310
|
var GridLayout = ({ columns, rows, gap, padding, children }) => {
|
|
1173
|
-
return /* @__PURE__ */ (0,
|
|
1311
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Fill, { style: { padding, boxSizing: "border-box" }, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1174
1312
|
"div",
|
|
1175
1313
|
{
|
|
1176
1314
|
style: {
|
|
@@ -1195,23 +1333,23 @@ var GridLayoutComponentMetadata = {
|
|
|
1195
1333
|
};
|
|
1196
1334
|
|
|
1197
1335
|
// src/components/composites/ImageCollage.tsx
|
|
1198
|
-
var
|
|
1199
|
-
var
|
|
1200
|
-
var
|
|
1201
|
-
var ImageCollagePropsSchema =
|
|
1202
|
-
images:
|
|
1203
|
-
layout:
|
|
1204
|
-
stagger:
|
|
1336
|
+
var import_remotion14 = require("remotion");
|
|
1337
|
+
var import_zod24 = require("zod");
|
|
1338
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1339
|
+
var ImageCollagePropsSchema = import_zod24.z.object({
|
|
1340
|
+
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),
|
|
1341
|
+
layout: import_zod24.z.enum(["grid", "stack", "scatter"]).default("grid"),
|
|
1342
|
+
stagger: import_zod24.z.number().int().min(2).max(10).default(5)
|
|
1205
1343
|
});
|
|
1206
|
-
var resolveAsset4 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
1344
|
+
var resolveAsset4 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion14.staticFile)(staticFileInputFromAssetPath(value));
|
|
1207
1345
|
var ImageCollage = ({ images, layout, stagger }) => {
|
|
1208
|
-
const frame = (0,
|
|
1209
|
-
const { fps } = (0,
|
|
1346
|
+
const frame = (0, import_remotion14.useCurrentFrame)();
|
|
1347
|
+
const { fps } = (0, import_remotion14.useVideoConfig)();
|
|
1210
1348
|
const n = images.length;
|
|
1211
1349
|
const cols = Math.ceil(Math.sqrt(n));
|
|
1212
1350
|
const rows = Math.ceil(n / cols);
|
|
1213
1351
|
if (layout === "grid") {
|
|
1214
|
-
return /* @__PURE__ */ (0,
|
|
1352
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Fill, { style: { padding: 80, boxSizing: "border-box" }, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1215
1353
|
"div",
|
|
1216
1354
|
{
|
|
1217
1355
|
style: {
|
|
@@ -1223,21 +1361,21 @@ var ImageCollage = ({ images, layout, stagger }) => {
|
|
|
1223
1361
|
height: "100%"
|
|
1224
1362
|
},
|
|
1225
1363
|
children: images.map((img, i) => {
|
|
1226
|
-
const p = (0,
|
|
1227
|
-
return /* @__PURE__ */ (0,
|
|
1228
|
-
/* @__PURE__ */ (0,
|
|
1229
|
-
img.caption ? /* @__PURE__ */ (0,
|
|
1364
|
+
const p = (0, import_remotion14.spring)({ frame: frame - i * stagger, fps, config: { damping: 14, stiffness: 120, mass: 0.9 } });
|
|
1365
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { style: { position: "relative", overflow: "hidden", borderRadius: 18, opacity: p, transform: `scale(${0.92 + 0.08 * p})` }, children: [
|
|
1366
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_remotion14.Img, { src: resolveAsset4(img.src), style: { width: "100%", height: "100%", objectFit: "cover" } }),
|
|
1367
|
+
img.caption ? /* @__PURE__ */ (0, import_jsx_runtime23.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
|
|
1230
1368
|
] }, i);
|
|
1231
1369
|
})
|
|
1232
1370
|
}
|
|
1233
1371
|
) });
|
|
1234
1372
|
}
|
|
1235
|
-
return /* @__PURE__ */ (0,
|
|
1236
|
-
const p = (0,
|
|
1373
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Fill, { children: images.map((img, i) => {
|
|
1374
|
+
const p = (0, import_remotion14.spring)({ frame: frame - i * stagger, fps, config: { damping: 14, stiffness: 120, mass: 0.9 } });
|
|
1237
1375
|
const baseRotate = layout === "stack" ? (i - (n - 1) / 2) * 4 : i * 17 % 20 - 10;
|
|
1238
1376
|
const baseX = layout === "scatter" ? i * 137 % 300 - 150 : 0;
|
|
1239
1377
|
const baseY = layout === "scatter" ? (i + 3) * 89 % 200 - 100 : 0;
|
|
1240
|
-
return /* @__PURE__ */ (0,
|
|
1378
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1241
1379
|
"div",
|
|
1242
1380
|
{
|
|
1243
1381
|
style: {
|
|
@@ -1252,7 +1390,7 @@ var ImageCollage = ({ images, layout, stagger }) => {
|
|
|
1252
1390
|
overflow: "hidden",
|
|
1253
1391
|
boxShadow: "0 20px 60px rgba(0,0,0,0.35)"
|
|
1254
1392
|
},
|
|
1255
|
-
children: /* @__PURE__ */ (0,
|
|
1393
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_remotion14.Img, { src: resolveAsset4(img.src), style: { width: "100%", height: "100%", objectFit: "cover" } })
|
|
1256
1394
|
},
|
|
1257
1395
|
i
|
|
1258
1396
|
);
|
|
@@ -1266,20 +1404,20 @@ var ImageCollageComponentMetadata = {
|
|
|
1266
1404
|
};
|
|
1267
1405
|
|
|
1268
1406
|
// src/components/composites/ImageReveal.tsx
|
|
1269
|
-
var
|
|
1270
|
-
var
|
|
1271
|
-
var
|
|
1272
|
-
var ImageRevealPropsSchema =
|
|
1273
|
-
src:
|
|
1274
|
-
direction:
|
|
1275
|
-
revealType:
|
|
1407
|
+
var import_remotion15 = require("remotion");
|
|
1408
|
+
var import_zod25 = require("zod");
|
|
1409
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
1410
|
+
var ImageRevealPropsSchema = import_zod25.z.object({
|
|
1411
|
+
src: import_zod25.z.string().min(1),
|
|
1412
|
+
direction: import_zod25.z.enum(["left", "right", "top", "bottom", "center"]).default("left"),
|
|
1413
|
+
revealType: import_zod25.z.enum(["wipe", "expand", "iris"]).default("wipe")
|
|
1276
1414
|
});
|
|
1277
|
-
var resolveAsset5 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
1415
|
+
var resolveAsset5 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion15.staticFile)(staticFileInputFromAssetPath(value));
|
|
1278
1416
|
var ImageReveal = ({ src, direction, revealType, __wavesDurationInFrames }) => {
|
|
1279
|
-
const frame = (0,
|
|
1417
|
+
const frame = (0, import_remotion15.useCurrentFrame)();
|
|
1280
1418
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
1281
1419
|
const d = Math.min(30, total);
|
|
1282
|
-
const p = (0,
|
|
1420
|
+
const p = (0, import_remotion15.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1283
1421
|
let clipPath;
|
|
1284
1422
|
let transform = "none";
|
|
1285
1423
|
let transformOrigin = "center center";
|
|
@@ -1302,8 +1440,8 @@ var ImageReveal = ({ src, direction, revealType, __wavesDurationInFrames }) => {
|
|
|
1302
1440
|
clipPath = `circle(${Math.round(150 * p)}% at 50% 50%)`;
|
|
1303
1441
|
}
|
|
1304
1442
|
const opacity = revealType === "expand" ? p : 1;
|
|
1305
|
-
return /* @__PURE__ */ (0,
|
|
1306
|
-
|
|
1443
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Fill, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1444
|
+
import_remotion15.Img,
|
|
1307
1445
|
{
|
|
1308
1446
|
src: resolveAsset5(src),
|
|
1309
1447
|
style: {
|
|
@@ -1326,27 +1464,27 @@ var ImageRevealComponentMetadata = {
|
|
|
1326
1464
|
};
|
|
1327
1465
|
|
|
1328
1466
|
// src/components/composites/ImageSequence.tsx
|
|
1329
|
-
var
|
|
1330
|
-
var
|
|
1331
|
-
var
|
|
1332
|
-
var ImageSequencePropsSchema =
|
|
1333
|
-
basePath:
|
|
1334
|
-
frameCount:
|
|
1335
|
-
filePattern:
|
|
1336
|
-
fps:
|
|
1467
|
+
var import_remotion16 = require("remotion");
|
|
1468
|
+
var import_zod26 = require("zod");
|
|
1469
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
1470
|
+
var ImageSequencePropsSchema = import_zod26.z.object({
|
|
1471
|
+
basePath: import_zod26.z.string().min(1),
|
|
1472
|
+
frameCount: import_zod26.z.number().int().positive(),
|
|
1473
|
+
filePattern: import_zod26.z.string().default("frame_{frame}.png"),
|
|
1474
|
+
fps: import_zod26.z.number().int().min(1).max(120).default(30)
|
|
1337
1475
|
});
|
|
1338
1476
|
function joinPath(base, file) {
|
|
1339
1477
|
if (base.endsWith("/")) return `${base}${file}`;
|
|
1340
1478
|
return `${base}/${file}`;
|
|
1341
1479
|
}
|
|
1342
|
-
var resolveAsset6 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
1480
|
+
var resolveAsset6 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion16.staticFile)(staticFileInputFromAssetPath(value));
|
|
1343
1481
|
var ImageSequence = ({ basePath, frameCount, filePattern, fps }) => {
|
|
1344
|
-
const frame = (0,
|
|
1345
|
-
const { fps: compFps } = (0,
|
|
1482
|
+
const frame = (0, import_remotion16.useCurrentFrame)();
|
|
1483
|
+
const { fps: compFps } = (0, import_remotion16.useVideoConfig)();
|
|
1346
1484
|
const index = Math.min(frameCount - 1, Math.max(0, Math.floor(frame * fps / compFps)));
|
|
1347
1485
|
const file = filePattern.replace("{frame}", String(index));
|
|
1348
1486
|
const src = joinPath(basePath, file);
|
|
1349
|
-
return /* @__PURE__ */ (0,
|
|
1487
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Fill, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_remotion16.Img, { src: resolveAsset6(src), style: { width: "100%", height: "100%", objectFit: "cover" } }) });
|
|
1350
1488
|
};
|
|
1351
1489
|
var ImageSequenceComponentMetadata = {
|
|
1352
1490
|
kind: "composite",
|
|
@@ -1356,26 +1494,26 @@ var ImageSequenceComponentMetadata = {
|
|
|
1356
1494
|
};
|
|
1357
1495
|
|
|
1358
1496
|
// src/components/composites/ImageWithCaption.tsx
|
|
1359
|
-
var
|
|
1360
|
-
var
|
|
1361
|
-
var
|
|
1362
|
-
var CaptionStyleSchema =
|
|
1363
|
-
fontSize:
|
|
1364
|
-
color:
|
|
1365
|
-
backgroundColor:
|
|
1497
|
+
var import_remotion17 = require("remotion");
|
|
1498
|
+
var import_zod27 = require("zod");
|
|
1499
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
1500
|
+
var CaptionStyleSchema = import_zod27.z.object({
|
|
1501
|
+
fontSize: import_zod27.z.number().min(12).max(80).default(32),
|
|
1502
|
+
color: import_zod27.z.string().default("#FFFFFF"),
|
|
1503
|
+
backgroundColor: import_zod27.z.string().default("rgba(0,0,0,0.7)")
|
|
1366
1504
|
});
|
|
1367
|
-
var ImageWithCaptionPropsSchema =
|
|
1368
|
-
src:
|
|
1369
|
-
caption:
|
|
1370
|
-
captionPosition:
|
|
1505
|
+
var ImageWithCaptionPropsSchema = import_zod27.z.object({
|
|
1506
|
+
src: import_zod27.z.string().min(1),
|
|
1507
|
+
caption: import_zod27.z.string().max(200),
|
|
1508
|
+
captionPosition: import_zod27.z.enum(["top", "bottom", "overlay"]).default("bottom"),
|
|
1371
1509
|
captionStyle: CaptionStyleSchema.optional()
|
|
1372
1510
|
});
|
|
1373
|
-
var resolveAsset7 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
1511
|
+
var resolveAsset7 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion17.staticFile)(staticFileInputFromAssetPath(value));
|
|
1374
1512
|
var ImageWithCaption = ({ src, caption, captionPosition, captionStyle }) => {
|
|
1375
|
-
const frame = (0,
|
|
1376
|
-
const p = (0,
|
|
1513
|
+
const frame = (0, import_remotion17.useCurrentFrame)();
|
|
1514
|
+
const p = (0, import_remotion17.interpolate)(frame, [8, 24], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1377
1515
|
const style = captionStyle ?? { fontSize: 32, color: "#FFFFFF", backgroundColor: "rgba(0,0,0,0.7)" };
|
|
1378
|
-
const captionBox = /* @__PURE__ */ (0,
|
|
1516
|
+
const captionBox = /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
1379
1517
|
"div",
|
|
1380
1518
|
{
|
|
1381
1519
|
style: {
|
|
@@ -1392,15 +1530,15 @@ var ImageWithCaption = ({ src, caption, captionPosition, captionStyle }) => {
|
|
|
1392
1530
|
}
|
|
1393
1531
|
);
|
|
1394
1532
|
if (captionPosition === "top" || captionPosition === "bottom") {
|
|
1395
|
-
return /* @__PURE__ */ (0,
|
|
1533
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(Fill, { style: { display: "flex", flexDirection: "column" }, children: [
|
|
1396
1534
|
captionPosition === "top" ? captionBox : null,
|
|
1397
|
-
/* @__PURE__ */ (0,
|
|
1535
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { style: { flex: 1, position: "relative" }, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_remotion17.Img, { src: resolveAsset7(src), style: { width: "100%", height: "100%", objectFit: "cover" } }) }),
|
|
1398
1536
|
captionPosition === "bottom" ? captionBox : null
|
|
1399
1537
|
] });
|
|
1400
1538
|
}
|
|
1401
|
-
return /* @__PURE__ */ (0,
|
|
1402
|
-
/* @__PURE__ */ (0,
|
|
1403
|
-
/* @__PURE__ */ (0,
|
|
1539
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(Fill, { children: [
|
|
1540
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_remotion17.Img, { src: resolveAsset7(src), style: { width: "100%", height: "100%", objectFit: "cover" } }),
|
|
1541
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { style: { position: "absolute", left: 0, right: 0, bottom: 0 }, children: captionBox })
|
|
1404
1542
|
] });
|
|
1405
1543
|
};
|
|
1406
1544
|
var ImageWithCaptionComponentMetadata = {
|
|
@@ -1411,19 +1549,19 @@ var ImageWithCaptionComponentMetadata = {
|
|
|
1411
1549
|
};
|
|
1412
1550
|
|
|
1413
1551
|
// src/components/composites/InstagramStory.tsx
|
|
1414
|
-
var
|
|
1415
|
-
var
|
|
1416
|
-
var
|
|
1417
|
-
var InstagramStoryPropsSchema =
|
|
1418
|
-
backgroundImage:
|
|
1419
|
-
backgroundColor:
|
|
1420
|
-
profilePic:
|
|
1421
|
-
username:
|
|
1422
|
-
text:
|
|
1423
|
-
sticker:
|
|
1424
|
-
musicTrack:
|
|
1552
|
+
var import_remotion18 = require("remotion");
|
|
1553
|
+
var import_zod28 = require("zod");
|
|
1554
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
1555
|
+
var InstagramStoryPropsSchema = import_zod28.z.object({
|
|
1556
|
+
backgroundImage: import_zod28.z.string().optional(),
|
|
1557
|
+
backgroundColor: import_zod28.z.string().default("#000000"),
|
|
1558
|
+
profilePic: import_zod28.z.string().optional(),
|
|
1559
|
+
username: import_zod28.z.string().optional(),
|
|
1560
|
+
text: import_zod28.z.string().max(100).optional(),
|
|
1561
|
+
sticker: import_zod28.z.enum(["none", "poll", "question", "countdown"]).default("none"),
|
|
1562
|
+
musicTrack: import_zod28.z.string().optional()
|
|
1425
1563
|
});
|
|
1426
|
-
var resolveAsset8 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
1564
|
+
var resolveAsset8 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion18.staticFile)(staticFileInputFromAssetPath(value));
|
|
1427
1565
|
var InstagramStory = ({
|
|
1428
1566
|
backgroundImage,
|
|
1429
1567
|
backgroundColor,
|
|
@@ -1433,17 +1571,17 @@ var InstagramStory = ({
|
|
|
1433
1571
|
sticker,
|
|
1434
1572
|
musicTrack
|
|
1435
1573
|
}) => {
|
|
1436
|
-
const frame = (0,
|
|
1437
|
-
const fade = (0,
|
|
1438
|
-
return /* @__PURE__ */ (0,
|
|
1439
|
-
musicTrack ? /* @__PURE__ */ (0,
|
|
1440
|
-
backgroundImage ? /* @__PURE__ */ (0,
|
|
1441
|
-
/* @__PURE__ */ (0,
|
|
1442
|
-
profilePic || username ? /* @__PURE__ */ (0,
|
|
1443
|
-
profilePic ? /* @__PURE__ */ (0,
|
|
1444
|
-
/* @__PURE__ */ (0,
|
|
1574
|
+
const frame = (0, import_remotion18.useCurrentFrame)();
|
|
1575
|
+
const fade = (0, import_remotion18.interpolate)(frame, [0, 20], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1576
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Fill, { style: { backgroundColor }, children: [
|
|
1577
|
+
musicTrack ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_remotion18.Audio, { src: resolveAsset8(musicTrack), volume: 0.6 }) : null,
|
|
1578
|
+
backgroundImage ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_remotion18.Img, { src: resolveAsset8(backgroundImage), style: { width: "100%", height: "100%", objectFit: "cover", opacity: fade } }) : null,
|
|
1579
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Fill, { style: { padding: 60, boxSizing: "border-box" }, children: [
|
|
1580
|
+
profilePic || username ? /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 18 }, children: [
|
|
1581
|
+
profilePic ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_remotion18.Img, { src: resolveAsset8(profilePic), style: { width: 78, height: 78, borderRadius: 9999, objectFit: "cover" } }) : /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { style: { width: 78, height: 78, borderRadius: 9999, backgroundColor: "rgba(255,255,255,0.2)" } }),
|
|
1582
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { style: { color: "#FFFFFF", fontWeight: 800, fontSize: 34 }, children: username ?? "username" })
|
|
1445
1583
|
] }) : null,
|
|
1446
|
-
text ? /* @__PURE__ */ (0,
|
|
1584
|
+
text ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1447
1585
|
"div",
|
|
1448
1586
|
{
|
|
1449
1587
|
style: {
|
|
@@ -1457,7 +1595,7 @@ var InstagramStory = ({
|
|
|
1457
1595
|
children: text
|
|
1458
1596
|
}
|
|
1459
1597
|
) : null,
|
|
1460
|
-
sticker !== "none" ? /* @__PURE__ */ (0,
|
|
1598
|
+
sticker !== "none" ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1461
1599
|
"div",
|
|
1462
1600
|
{
|
|
1463
1601
|
style: {
|
|
@@ -1486,18 +1624,18 @@ var InstagramStoryComponentMetadata = {
|
|
|
1486
1624
|
};
|
|
1487
1625
|
|
|
1488
1626
|
// src/components/composites/IntroScene.tsx
|
|
1489
|
-
var
|
|
1490
|
-
var
|
|
1491
|
-
var
|
|
1492
|
-
var IntroScenePropsSchema =
|
|
1493
|
-
logoSrc:
|
|
1494
|
-
companyName:
|
|
1495
|
-
tagline:
|
|
1496
|
-
backgroundColor:
|
|
1497
|
-
primaryColor:
|
|
1498
|
-
musicTrack:
|
|
1627
|
+
var import_remotion19 = require("remotion");
|
|
1628
|
+
var import_zod29 = require("zod");
|
|
1629
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
1630
|
+
var IntroScenePropsSchema = import_zod29.z.object({
|
|
1631
|
+
logoSrc: import_zod29.z.string().min(1),
|
|
1632
|
+
companyName: import_zod29.z.string().min(1),
|
|
1633
|
+
tagline: import_zod29.z.string().optional(),
|
|
1634
|
+
backgroundColor: import_zod29.z.string().default("#000000"),
|
|
1635
|
+
primaryColor: import_zod29.z.string().default("#FFFFFF"),
|
|
1636
|
+
musicTrack: import_zod29.z.string().optional()
|
|
1499
1637
|
});
|
|
1500
|
-
var resolveAsset9 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
1638
|
+
var resolveAsset9 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion19.staticFile)(staticFileInputFromAssetPath(value));
|
|
1501
1639
|
var IntroScene = ({
|
|
1502
1640
|
logoSrc,
|
|
1503
1641
|
companyName,
|
|
@@ -1507,25 +1645,25 @@ var IntroScene = ({
|
|
|
1507
1645
|
musicTrack,
|
|
1508
1646
|
__wavesDurationInFrames
|
|
1509
1647
|
}) => {
|
|
1510
|
-
const frame = (0,
|
|
1511
|
-
const { fps } = (0,
|
|
1648
|
+
const frame = (0, import_remotion19.useCurrentFrame)();
|
|
1649
|
+
const { fps } = (0, import_remotion19.useVideoConfig)();
|
|
1512
1650
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
1513
|
-
const logoP = (0,
|
|
1514
|
-
const nameOpacity = (0,
|
|
1515
|
-
const taglineY = (0,
|
|
1516
|
-
const outroFade = (0,
|
|
1517
|
-
return /* @__PURE__ */ (0,
|
|
1518
|
-
musicTrack ? /* @__PURE__ */ (0,
|
|
1519
|
-
/* @__PURE__ */ (0,
|
|
1520
|
-
/* @__PURE__ */ (0,
|
|
1521
|
-
|
|
1651
|
+
const logoP = (0, import_remotion19.spring)({ frame, fps, config: { damping: 14, stiffness: 120, mass: 0.9 } });
|
|
1652
|
+
const nameOpacity = (0, import_remotion19.interpolate)(frame, [20, 60], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1653
|
+
const taglineY = (0, import_remotion19.interpolate)(frame, [50, 80], [20, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1654
|
+
const outroFade = (0, import_remotion19.interpolate)(frame, [Math.max(0, total - 20), total], [1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1655
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Fill, { style: { backgroundColor, display: "flex", justifyContent: "center", alignItems: "center" }, children: [
|
|
1656
|
+
musicTrack ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_remotion19.Audio, { src: resolveAsset9(musicTrack), volume: 0.7 }) : null,
|
|
1657
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { style: { textAlign: "center", opacity: outroFade }, children: [
|
|
1658
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
1659
|
+
import_remotion19.Img,
|
|
1522
1660
|
{
|
|
1523
1661
|
src: resolveAsset9(logoSrc),
|
|
1524
1662
|
style: { width: 280, height: 280, objectFit: "contain", transform: `scale(${logoP})` }
|
|
1525
1663
|
}
|
|
1526
1664
|
),
|
|
1527
|
-
/* @__PURE__ */ (0,
|
|
1528
|
-
tagline ? /* @__PURE__ */ (0,
|
|
1665
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { style: { marginTop: 24, color: primaryColor, fontSize: 64, fontWeight: 900, opacity: nameOpacity }, children: companyName }),
|
|
1666
|
+
tagline ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
1529
1667
|
"div",
|
|
1530
1668
|
{
|
|
1531
1669
|
style: {
|
|
@@ -1550,17 +1688,17 @@ var IntroSceneComponentMetadata = {
|
|
|
1550
1688
|
};
|
|
1551
1689
|
|
|
1552
1690
|
// src/components/composites/KenBurnsImage.tsx
|
|
1553
|
-
var
|
|
1554
|
-
var
|
|
1555
|
-
var
|
|
1556
|
-
var KenBurnsImagePropsSchema =
|
|
1557
|
-
src:
|
|
1558
|
-
startScale:
|
|
1559
|
-
endScale:
|
|
1560
|
-
panDirection:
|
|
1561
|
-
panAmount:
|
|
1691
|
+
var import_remotion20 = require("remotion");
|
|
1692
|
+
var import_zod30 = require("zod");
|
|
1693
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
1694
|
+
var KenBurnsImagePropsSchema = import_zod30.z.object({
|
|
1695
|
+
src: import_zod30.z.string().min(1),
|
|
1696
|
+
startScale: import_zod30.z.number().min(1).max(2).default(1),
|
|
1697
|
+
endScale: import_zod30.z.number().min(1).max(2).default(1.2),
|
|
1698
|
+
panDirection: import_zod30.z.enum(["none", "left", "right", "up", "down"]).default("none"),
|
|
1699
|
+
panAmount: import_zod30.z.number().min(0).max(100).default(50)
|
|
1562
1700
|
});
|
|
1563
|
-
var resolveAsset10 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
1701
|
+
var resolveAsset10 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion20.staticFile)(staticFileInputFromAssetPath(value));
|
|
1564
1702
|
var KenBurnsImage = ({
|
|
1565
1703
|
src,
|
|
1566
1704
|
startScale,
|
|
@@ -1569,14 +1707,14 @@ var KenBurnsImage = ({
|
|
|
1569
1707
|
panAmount,
|
|
1570
1708
|
__wavesDurationInFrames
|
|
1571
1709
|
}) => {
|
|
1572
|
-
const frame = (0,
|
|
1710
|
+
const frame = (0, import_remotion20.useCurrentFrame)();
|
|
1573
1711
|
const duration = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
1574
|
-
const t = (0,
|
|
1712
|
+
const t = (0, import_remotion20.interpolate)(frame, [0, duration], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1575
1713
|
const scale = startScale + (endScale - startScale) * t;
|
|
1576
1714
|
const dx = panDirection === "left" ? -panAmount * t : panDirection === "right" ? panAmount * t : 0;
|
|
1577
1715
|
const dy = panDirection === "up" ? -panAmount * t : panDirection === "down" ? panAmount * t : 0;
|
|
1578
|
-
return /* @__PURE__ */ (0,
|
|
1579
|
-
|
|
1716
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Fill, { children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
1717
|
+
import_remotion20.Img,
|
|
1580
1718
|
{
|
|
1581
1719
|
src: resolveAsset10(src),
|
|
1582
1720
|
style: {
|
|
@@ -1597,20 +1735,20 @@ var KenBurnsImageComponentMetadata = {
|
|
|
1597
1735
|
};
|
|
1598
1736
|
|
|
1599
1737
|
// src/components/composites/KineticTypography.tsx
|
|
1600
|
-
var
|
|
1601
|
-
var
|
|
1602
|
-
var
|
|
1603
|
-
var WordSchema =
|
|
1604
|
-
text:
|
|
1605
|
-
emphasis:
|
|
1738
|
+
var import_remotion21 = require("remotion");
|
|
1739
|
+
var import_zod31 = require("zod");
|
|
1740
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
1741
|
+
var WordSchema = import_zod31.z.object({
|
|
1742
|
+
text: import_zod31.z.string().min(1),
|
|
1743
|
+
emphasis: import_zod31.z.enum(["normal", "bold", "giant"]).default("normal")
|
|
1606
1744
|
});
|
|
1607
|
-
var KineticTypographyPropsSchema =
|
|
1608
|
-
words:
|
|
1609
|
-
fontSize:
|
|
1610
|
-
color:
|
|
1611
|
-
fontFamily:
|
|
1612
|
-
timing:
|
|
1613
|
-
transition:
|
|
1745
|
+
var KineticTypographyPropsSchema = import_zod31.z.object({
|
|
1746
|
+
words: import_zod31.z.array(WordSchema).min(1).max(50),
|
|
1747
|
+
fontSize: import_zod31.z.number().min(12).max(140).default(48),
|
|
1748
|
+
color: import_zod31.z.string().default("#FFFFFF"),
|
|
1749
|
+
fontFamily: import_zod31.z.string().default("Inter"),
|
|
1750
|
+
timing: import_zod31.z.array(import_zod31.z.number().int().min(0)).min(1).describe("Frame timing for each word"),
|
|
1751
|
+
transition: import_zod31.z.enum(["fade", "scale", "slideLeft", "slideRight"]).default("scale")
|
|
1614
1752
|
});
|
|
1615
1753
|
var KineticTypography = ({
|
|
1616
1754
|
words,
|
|
@@ -1620,8 +1758,8 @@ var KineticTypography = ({
|
|
|
1620
1758
|
timing,
|
|
1621
1759
|
transition
|
|
1622
1760
|
}) => {
|
|
1623
|
-
const frame = (0,
|
|
1624
|
-
const { fps } = (0,
|
|
1761
|
+
const frame = (0, import_remotion21.useCurrentFrame)();
|
|
1762
|
+
const { fps } = (0, import_remotion21.useVideoConfig)();
|
|
1625
1763
|
const starts = (() => {
|
|
1626
1764
|
if (timing.length >= words.length) return timing.slice(0, words.length);
|
|
1627
1765
|
const last = timing.length ? timing[timing.length - 1] : 0;
|
|
@@ -1634,13 +1772,13 @@ var KineticTypography = ({
|
|
|
1634
1772
|
}
|
|
1635
1773
|
const word = words[activeIndex];
|
|
1636
1774
|
const start = starts[activeIndex] ?? 0;
|
|
1637
|
-
const p = (0,
|
|
1775
|
+
const p = (0, import_remotion21.spring)({ frame: frame - start, fps, config: { damping: 14, stiffness: 120, mass: 0.9 } });
|
|
1638
1776
|
const progress = Math.max(0, Math.min(1, p));
|
|
1639
1777
|
const scaleBase = word.emphasis === "giant" ? 2 : word.emphasis === "bold" ? 1.3 : 1;
|
|
1640
1778
|
const opacity = transition === "fade" ? progress : 1;
|
|
1641
1779
|
const scale = transition === "scale" ? (0.85 + 0.15 * progress) * scaleBase : 1 * scaleBase;
|
|
1642
1780
|
const tx = transition === "slideLeft" ? 40 * (1 - progress) : transition === "slideRight" ? -40 * (1 - progress) : 0;
|
|
1643
|
-
return /* @__PURE__ */ (0,
|
|
1781
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Fill, { style: { display: "flex", justifyContent: "center", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1644
1782
|
"div",
|
|
1645
1783
|
{
|
|
1646
1784
|
style: {
|
|
@@ -1665,17 +1803,17 @@ var KineticTypographyComponentMetadata = {
|
|
|
1665
1803
|
};
|
|
1666
1804
|
|
|
1667
1805
|
// src/components/composites/LineGraph.tsx
|
|
1668
|
-
var
|
|
1669
|
-
var
|
|
1670
|
-
var
|
|
1671
|
-
var PointSchema =
|
|
1672
|
-
var LineGraphPropsSchema =
|
|
1673
|
-
data:
|
|
1674
|
-
color:
|
|
1675
|
-
strokeWidth:
|
|
1676
|
-
showDots:
|
|
1677
|
-
fillArea:
|
|
1678
|
-
animate:
|
|
1806
|
+
var import_remotion22 = require("remotion");
|
|
1807
|
+
var import_zod32 = require("zod");
|
|
1808
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
1809
|
+
var PointSchema = import_zod32.z.object({ x: import_zod32.z.number(), y: import_zod32.z.number() });
|
|
1810
|
+
var LineGraphPropsSchema = import_zod32.z.object({
|
|
1811
|
+
data: import_zod32.z.array(PointSchema).min(2).max(50),
|
|
1812
|
+
color: import_zod32.z.string().default("#00FF00"),
|
|
1813
|
+
strokeWidth: import_zod32.z.number().min(1).max(10).default(3),
|
|
1814
|
+
showDots: import_zod32.z.boolean().default(true),
|
|
1815
|
+
fillArea: import_zod32.z.boolean().default(false),
|
|
1816
|
+
animate: import_zod32.z.enum(["draw", "reveal"]).default("draw")
|
|
1679
1817
|
});
|
|
1680
1818
|
function normalize(data, w, h, pad) {
|
|
1681
1819
|
const xs = data.map((d) => d.x);
|
|
@@ -1701,9 +1839,9 @@ var LineGraph = ({
|
|
|
1701
1839
|
animate,
|
|
1702
1840
|
__wavesDurationInFrames
|
|
1703
1841
|
}) => {
|
|
1704
|
-
const frame = (0,
|
|
1842
|
+
const frame = (0, import_remotion22.useCurrentFrame)();
|
|
1705
1843
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
1706
|
-
const progress = (0,
|
|
1844
|
+
const progress = (0, import_remotion22.interpolate)(frame, [0, total], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1707
1845
|
const w = 1e3;
|
|
1708
1846
|
const h = 520;
|
|
1709
1847
|
const pad = 30;
|
|
@@ -1711,9 +1849,9 @@ var LineGraph = ({
|
|
|
1711
1849
|
const d = toPath(pts);
|
|
1712
1850
|
const dash = 3e3;
|
|
1713
1851
|
const dashOffset = dash * (1 - progress);
|
|
1714
|
-
return /* @__PURE__ */ (0,
|
|
1715
|
-
/* @__PURE__ */ (0,
|
|
1716
|
-
fillArea ? /* @__PURE__ */ (0,
|
|
1852
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Fill, { style: { display: "flex", justifyContent: "center", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("svg", { viewBox: `0 0 ${w} ${h}`, style: { width: "100%", height: "100%" }, children: [
|
|
1853
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("clipPath", { id: "waves-line-reveal", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("rect", { x: "0", y: "0", width: w * progress, height: h }) }) }),
|
|
1854
|
+
fillArea ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1717
1855
|
"path",
|
|
1718
1856
|
{
|
|
1719
1857
|
d: `${d} L ${pts[pts.length - 1].x} ${h - pad} L ${pts[0].x} ${h - pad} Z`,
|
|
@@ -1722,7 +1860,7 @@ var LineGraph = ({
|
|
|
1722
1860
|
clipPath: animate === "reveal" ? "url(#waves-line-reveal)" : void 0
|
|
1723
1861
|
}
|
|
1724
1862
|
) : null,
|
|
1725
|
-
/* @__PURE__ */ (0,
|
|
1863
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1726
1864
|
"path",
|
|
1727
1865
|
{
|
|
1728
1866
|
d,
|
|
@@ -1736,7 +1874,7 @@ var LineGraph = ({
|
|
|
1736
1874
|
clipPath: animate === "reveal" ? "url(#waves-line-reveal)" : void 0
|
|
1737
1875
|
}
|
|
1738
1876
|
),
|
|
1739
|
-
showDots ? /* @__PURE__ */ (0,
|
|
1877
|
+
showDots ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("g", { clipPath: animate === "reveal" ? "url(#waves-line-reveal)" : void 0, children: pts.map((p, i) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("circle", { cx: p.x, cy: p.y, r: 6, fill: color }, i)) }) : null
|
|
1740
1878
|
] }) });
|
|
1741
1879
|
};
|
|
1742
1880
|
var LineGraphComponentMetadata = {
|
|
@@ -1747,28 +1885,28 @@ var LineGraphComponentMetadata = {
|
|
|
1747
1885
|
};
|
|
1748
1886
|
|
|
1749
1887
|
// src/components/composites/LogoReveal.tsx
|
|
1750
|
-
var
|
|
1751
|
-
var
|
|
1752
|
-
var
|
|
1753
|
-
var LogoRevealPropsSchema =
|
|
1754
|
-
logoSrc:
|
|
1755
|
-
effect:
|
|
1756
|
-
backgroundColor:
|
|
1757
|
-
soundEffect:
|
|
1888
|
+
var import_remotion23 = require("remotion");
|
|
1889
|
+
var import_zod33 = require("zod");
|
|
1890
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
1891
|
+
var LogoRevealPropsSchema = import_zod33.z.object({
|
|
1892
|
+
logoSrc: import_zod33.z.string().min(1),
|
|
1893
|
+
effect: import_zod33.z.enum(["fade", "scale", "rotate", "slide"]).default("scale"),
|
|
1894
|
+
backgroundColor: import_zod33.z.string().default("#000000"),
|
|
1895
|
+
soundEffect: import_zod33.z.string().optional()
|
|
1758
1896
|
});
|
|
1759
|
-
var resolveAsset11 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
1897
|
+
var resolveAsset11 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion23.staticFile)(staticFileInputFromAssetPath(value));
|
|
1760
1898
|
var LogoReveal = ({ logoSrc, effect, backgroundColor, soundEffect }) => {
|
|
1761
|
-
const frame = (0,
|
|
1762
|
-
const { fps } = (0,
|
|
1763
|
-
const p = (0,
|
|
1899
|
+
const frame = (0, import_remotion23.useCurrentFrame)();
|
|
1900
|
+
const { fps } = (0, import_remotion23.useVideoConfig)();
|
|
1901
|
+
const p = (0, import_remotion23.spring)({ frame, fps, config: { damping: 14, stiffness: 110, mass: 0.9 } });
|
|
1764
1902
|
const opacity = effect === "fade" ? p : Math.min(1, Math.max(0, p));
|
|
1765
1903
|
const scale = effect === "scale" ? p : 1;
|
|
1766
1904
|
const rotate = effect === "rotate" ? (1 - p) * 360 : 0;
|
|
1767
1905
|
const translateY = effect === "slide" ? -200 * (1 - p) : 0;
|
|
1768
|
-
return /* @__PURE__ */ (0,
|
|
1769
|
-
soundEffect ? /* @__PURE__ */ (0,
|
|
1770
|
-
/* @__PURE__ */ (0,
|
|
1771
|
-
|
|
1906
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(Fill, { style: { backgroundColor, display: "flex", justifyContent: "center", alignItems: "center" }, children: [
|
|
1907
|
+
soundEffect ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_remotion23.Audio, { src: resolveAsset11(soundEffect), volume: 1 }) : null,
|
|
1908
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
1909
|
+
import_remotion23.Img,
|
|
1772
1910
|
{
|
|
1773
1911
|
src: resolveAsset11(logoSrc),
|
|
1774
1912
|
style: {
|
|
@@ -1790,32 +1928,32 @@ var LogoRevealComponentMetadata = {
|
|
|
1790
1928
|
};
|
|
1791
1929
|
|
|
1792
1930
|
// src/components/composites/OutroScene.tsx
|
|
1793
|
-
var
|
|
1794
|
-
var
|
|
1795
|
-
var
|
|
1796
|
-
var CtaSchema =
|
|
1797
|
-
var HandleSchema =
|
|
1798
|
-
platform:
|
|
1799
|
-
handle:
|
|
1931
|
+
var import_remotion24 = require("remotion");
|
|
1932
|
+
var import_zod34 = require("zod");
|
|
1933
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
1934
|
+
var CtaSchema = import_zod34.z.object({ text: import_zod34.z.string().min(1), icon: import_zod34.z.string().optional() });
|
|
1935
|
+
var HandleSchema = import_zod34.z.object({
|
|
1936
|
+
platform: import_zod34.z.enum(["twitter", "instagram", "youtube", "linkedin"]),
|
|
1937
|
+
handle: import_zod34.z.string().min(1)
|
|
1800
1938
|
});
|
|
1801
|
-
var OutroScenePropsSchema =
|
|
1802
|
-
logoSrc:
|
|
1803
|
-
message:
|
|
1804
|
-
ctaButtons:
|
|
1805
|
-
socialHandles:
|
|
1806
|
-
backgroundColor:
|
|
1939
|
+
var OutroScenePropsSchema = import_zod34.z.object({
|
|
1940
|
+
logoSrc: import_zod34.z.string().min(1),
|
|
1941
|
+
message: import_zod34.z.string().default("Thank You"),
|
|
1942
|
+
ctaButtons: import_zod34.z.array(CtaSchema).max(3).optional(),
|
|
1943
|
+
socialHandles: import_zod34.z.array(HandleSchema).max(4).optional(),
|
|
1944
|
+
backgroundColor: import_zod34.z.string().default("#000000")
|
|
1807
1945
|
});
|
|
1808
|
-
var resolveAsset12 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
1946
|
+
var resolveAsset12 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion24.staticFile)(staticFileInputFromAssetPath(value));
|
|
1809
1947
|
var OutroScene = ({ logoSrc, message, ctaButtons, socialHandles, backgroundColor }) => {
|
|
1810
|
-
const frame = (0,
|
|
1811
|
-
const { fps } = (0,
|
|
1812
|
-
const logoP = (0,
|
|
1813
|
-
const msgP = (0,
|
|
1814
|
-
const ctaP = (0,
|
|
1815
|
-
return /* @__PURE__ */ (0,
|
|
1816
|
-
/* @__PURE__ */ (0,
|
|
1817
|
-
/* @__PURE__ */ (0,
|
|
1818
|
-
ctaButtons?.length ? /* @__PURE__ */ (0,
|
|
1948
|
+
const frame = (0, import_remotion24.useCurrentFrame)();
|
|
1949
|
+
const { fps } = (0, import_remotion24.useVideoConfig)();
|
|
1950
|
+
const logoP = (0, import_remotion24.spring)({ frame, fps, config: { damping: 14, stiffness: 120, mass: 0.9 } });
|
|
1951
|
+
const msgP = (0, import_remotion24.spring)({ frame: frame - 18, fps, config: { damping: 14, stiffness: 120, mass: 0.9 } });
|
|
1952
|
+
const ctaP = (0, import_remotion24.spring)({ frame: frame - 40, fps, config: { damping: 14, stiffness: 120, mass: 0.9 } });
|
|
1953
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Fill, { style: { backgroundColor, display: "flex", justifyContent: "center", alignItems: "center", padding: 80, boxSizing: "border-box" }, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { style: { textAlign: "center" }, children: [
|
|
1954
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_remotion24.Img, { src: resolveAsset12(logoSrc), style: { width: 220, height: 220, objectFit: "contain", transform: `scale(${logoP})` } }),
|
|
1955
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { style: { marginTop: 24, color: "#FFFFFF", fontSize: 72, fontWeight: 1e3, opacity: msgP }, children: message }),
|
|
1956
|
+
ctaButtons?.length ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { style: { marginTop: 34, display: "flex", gap: 18, justifyContent: "center", opacity: ctaP }, children: ctaButtons.map((b, i) => /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
1819
1957
|
"div",
|
|
1820
1958
|
{
|
|
1821
1959
|
style: {
|
|
@@ -1833,7 +1971,7 @@ var OutroScene = ({ logoSrc, message, ctaButtons, socialHandles, backgroundColor
|
|
|
1833
1971
|
},
|
|
1834
1972
|
i
|
|
1835
1973
|
)) }) : null,
|
|
1836
|
-
socialHandles?.length ? /* @__PURE__ */ (0,
|
|
1974
|
+
socialHandles?.length ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { style: { marginTop: 50, display: "flex", flexDirection: "column", gap: 10, opacity: ctaP }, children: socialHandles.map((h, i) => /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { style: { color: "rgba(255,255,255,0.85)", fontSize: 26, fontWeight: 800 }, children: [
|
|
1837
1975
|
h.platform,
|
|
1838
1976
|
": ",
|
|
1839
1977
|
h.handle
|
|
@@ -1848,19 +1986,19 @@ var OutroSceneComponentMetadata = {
|
|
|
1848
1986
|
};
|
|
1849
1987
|
|
|
1850
1988
|
// src/components/composites/OutlineText.tsx
|
|
1851
|
-
var
|
|
1852
|
-
var
|
|
1853
|
-
var
|
|
1854
|
-
var OutlineTextPropsSchema =
|
|
1855
|
-
content:
|
|
1856
|
-
fontSize:
|
|
1857
|
-
outlineColor:
|
|
1858
|
-
fillColor:
|
|
1859
|
-
fontFamily:
|
|
1860
|
-
fontWeight:
|
|
1861
|
-
position:
|
|
1862
|
-
animation:
|
|
1863
|
-
strokeWidth:
|
|
1989
|
+
var import_remotion25 = require("remotion");
|
|
1990
|
+
var import_zod35 = require("zod");
|
|
1991
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
1992
|
+
var OutlineTextPropsSchema = import_zod35.z.object({
|
|
1993
|
+
content: import_zod35.z.string().max(50),
|
|
1994
|
+
fontSize: import_zod35.z.number().min(8).max(240).default(96),
|
|
1995
|
+
outlineColor: import_zod35.z.string().default("#FFFFFF"),
|
|
1996
|
+
fillColor: import_zod35.z.string().default("#000000"),
|
|
1997
|
+
fontFamily: import_zod35.z.string().default("Inter"),
|
|
1998
|
+
fontWeight: import_zod35.z.number().int().min(100).max(900).default(800),
|
|
1999
|
+
position: import_zod35.z.enum(["top", "center", "bottom"]).default("center"),
|
|
2000
|
+
animation: import_zod35.z.enum(["draw", "fill"]).default("draw"),
|
|
2001
|
+
strokeWidth: import_zod35.z.number().min(1).max(10).default(3)
|
|
1864
2002
|
});
|
|
1865
2003
|
var positionStyles3 = (position) => {
|
|
1866
2004
|
if (position === "top") return { justifyContent: "center", alignItems: "flex-start", paddingTop: 90 };
|
|
@@ -1878,12 +2016,12 @@ var OutlineText = ({
|
|
|
1878
2016
|
animation,
|
|
1879
2017
|
strokeWidth
|
|
1880
2018
|
}) => {
|
|
1881
|
-
const frame = (0,
|
|
1882
|
-
const t = (0,
|
|
2019
|
+
const frame = (0, import_remotion25.useCurrentFrame)();
|
|
2020
|
+
const t = (0, import_remotion25.interpolate)(frame, [0, 24], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1883
2021
|
const strokeOpacity = animation === "draw" ? t : 1;
|
|
1884
2022
|
const fillOpacity = animation === "fill" ? t : 0;
|
|
1885
|
-
return /* @__PURE__ */ (0,
|
|
1886
|
-
/* @__PURE__ */ (0,
|
|
2023
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(Fill, { style: { display: "flex", ...positionStyles3(position) }, children: [
|
|
2024
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
1887
2025
|
"div",
|
|
1888
2026
|
{
|
|
1889
2027
|
style: {
|
|
@@ -1900,7 +2038,7 @@ var OutlineText = ({
|
|
|
1900
2038
|
children: content
|
|
1901
2039
|
}
|
|
1902
2040
|
),
|
|
1903
|
-
/* @__PURE__ */ (0,
|
|
2041
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
1904
2042
|
"div",
|
|
1905
2043
|
{
|
|
1906
2044
|
style: {
|
|
@@ -1927,16 +2065,16 @@ var OutlineTextComponentMetadata = {
|
|
|
1927
2065
|
};
|
|
1928
2066
|
|
|
1929
2067
|
// src/components/composites/ProgressBar.tsx
|
|
1930
|
-
var
|
|
1931
|
-
var
|
|
1932
|
-
var
|
|
1933
|
-
var ProgressBarPropsSchema =
|
|
1934
|
-
label:
|
|
1935
|
-
color:
|
|
1936
|
-
backgroundColor:
|
|
1937
|
-
height:
|
|
1938
|
-
position:
|
|
1939
|
-
showPercentage:
|
|
2068
|
+
var import_remotion26 = require("remotion");
|
|
2069
|
+
var import_zod36 = require("zod");
|
|
2070
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
2071
|
+
var ProgressBarPropsSchema = import_zod36.z.object({
|
|
2072
|
+
label: import_zod36.z.string().optional(),
|
|
2073
|
+
color: import_zod36.z.string().default("#00FF00"),
|
|
2074
|
+
backgroundColor: import_zod36.z.string().default("rgba(255,255,255,0.2)"),
|
|
2075
|
+
height: import_zod36.z.number().min(5).max(50).default(10),
|
|
2076
|
+
position: import_zod36.z.enum(["top", "bottom"]).default("bottom"),
|
|
2077
|
+
showPercentage: import_zod36.z.boolean().default(true)
|
|
1940
2078
|
});
|
|
1941
2079
|
var ProgressBar = ({
|
|
1942
2080
|
label,
|
|
@@ -1947,17 +2085,17 @@ var ProgressBar = ({
|
|
|
1947
2085
|
showPercentage,
|
|
1948
2086
|
__wavesDurationInFrames
|
|
1949
2087
|
}) => {
|
|
1950
|
-
const frame = (0,
|
|
2088
|
+
const frame = (0, import_remotion26.useCurrentFrame)();
|
|
1951
2089
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
1952
|
-
const p = (0,
|
|
2090
|
+
const p = (0, import_remotion26.interpolate)(frame, [0, total], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1953
2091
|
const pct = Math.round(p * 100);
|
|
1954
2092
|
const yStyle = position === "top" ? { top: 50 } : { bottom: 50 };
|
|
1955
|
-
return /* @__PURE__ */ (0,
|
|
1956
|
-
label || showPercentage ? /* @__PURE__ */ (0,
|
|
1957
|
-
/* @__PURE__ */ (0,
|
|
1958
|
-
/* @__PURE__ */ (0,
|
|
2093
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Fill, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { style: { position: "absolute", left: 80, right: 80, ...yStyle }, children: [
|
|
2094
|
+
label || showPercentage ? /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { style: { display: "flex", justifyContent: "space-between", marginBottom: 10, color: "#FFFFFF", fontWeight: 700 }, children: [
|
|
2095
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { children: label ?? "" }),
|
|
2096
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { children: showPercentage ? `${pct}%` : "" })
|
|
1959
2097
|
] }) : null,
|
|
1960
|
-
/* @__PURE__ */ (0,
|
|
2098
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { style: { width: "100%", height, backgroundColor, borderRadius: 9999, overflow: "hidden" }, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { style: { width: `${pct}%`, height: "100%", backgroundColor: color } }) })
|
|
1961
2099
|
] }) });
|
|
1962
2100
|
};
|
|
1963
2101
|
var ProgressBarComponentMetadata = {
|
|
@@ -1968,16 +2106,16 @@ var ProgressBarComponentMetadata = {
|
|
|
1968
2106
|
};
|
|
1969
2107
|
|
|
1970
2108
|
// src/components/composites/ProgressRing.tsx
|
|
1971
|
-
var
|
|
1972
|
-
var
|
|
1973
|
-
var
|
|
1974
|
-
var ProgressRingPropsSchema =
|
|
1975
|
-
percentage:
|
|
1976
|
-
size:
|
|
1977
|
-
strokeWidth:
|
|
1978
|
-
color:
|
|
1979
|
-
backgroundColor:
|
|
1980
|
-
showLabel:
|
|
2109
|
+
var import_remotion27 = require("remotion");
|
|
2110
|
+
var import_zod37 = require("zod");
|
|
2111
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
2112
|
+
var ProgressRingPropsSchema = import_zod37.z.object({
|
|
2113
|
+
percentage: import_zod37.z.number().min(0).max(100),
|
|
2114
|
+
size: import_zod37.z.number().min(100).max(500).default(200),
|
|
2115
|
+
strokeWidth: import_zod37.z.number().min(5).max(50).default(20),
|
|
2116
|
+
color: import_zod37.z.string().default("#00FF00"),
|
|
2117
|
+
backgroundColor: import_zod37.z.string().default("rgba(255,255,255,0.2)"),
|
|
2118
|
+
showLabel: import_zod37.z.boolean().default(true)
|
|
1981
2119
|
});
|
|
1982
2120
|
var ProgressRing = ({
|
|
1983
2121
|
percentage,
|
|
@@ -1988,17 +2126,17 @@ var ProgressRing = ({
|
|
|
1988
2126
|
showLabel,
|
|
1989
2127
|
__wavesDurationInFrames
|
|
1990
2128
|
}) => {
|
|
1991
|
-
const frame = (0,
|
|
2129
|
+
const frame = (0, import_remotion27.useCurrentFrame)();
|
|
1992
2130
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
1993
|
-
const p = (0,
|
|
2131
|
+
const p = (0, import_remotion27.interpolate)(frame, [0, total], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
1994
2132
|
const current = percentage * p;
|
|
1995
2133
|
const r = (size - strokeWidth) / 2;
|
|
1996
2134
|
const c = 2 * Math.PI * r;
|
|
1997
2135
|
const dash = c;
|
|
1998
2136
|
const offset = c - current / 100 * c;
|
|
1999
|
-
return /* @__PURE__ */ (0,
|
|
2000
|
-
/* @__PURE__ */ (0,
|
|
2001
|
-
/* @__PURE__ */ (0,
|
|
2137
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Fill, { style: { display: "flex", justifyContent: "center", alignItems: "center" }, children: [
|
|
2138
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, children: [
|
|
2139
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
2002
2140
|
"circle",
|
|
2003
2141
|
{
|
|
2004
2142
|
cx: size / 2,
|
|
@@ -2009,7 +2147,7 @@ var ProgressRing = ({
|
|
|
2009
2147
|
fill: "transparent"
|
|
2010
2148
|
}
|
|
2011
2149
|
),
|
|
2012
|
-
/* @__PURE__ */ (0,
|
|
2150
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
2013
2151
|
"circle",
|
|
2014
2152
|
{
|
|
2015
2153
|
cx: size / 2,
|
|
@@ -2025,7 +2163,7 @@ var ProgressRing = ({
|
|
|
2025
2163
|
}
|
|
2026
2164
|
)
|
|
2027
2165
|
] }),
|
|
2028
|
-
showLabel ? /* @__PURE__ */ (0,
|
|
2166
|
+
showLabel ? /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { style: { position: "absolute", color: "#FFFFFF", fontWeight: 800, fontSize: Math.round(size * 0.22) }, children: [
|
|
2029
2167
|
Math.round(current),
|
|
2030
2168
|
"%"
|
|
2031
2169
|
] }) : null
|
|
@@ -2039,14 +2177,15 @@ var ProgressRingComponentMetadata = {
|
|
|
2039
2177
|
};
|
|
2040
2178
|
|
|
2041
2179
|
// src/components/composites/SlideTransition.tsx
|
|
2042
|
-
var
|
|
2043
|
-
var
|
|
2044
|
-
var
|
|
2045
|
-
var
|
|
2046
|
-
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
|
|
2180
|
+
var import_react7 = __toESM(require("react"));
|
|
2181
|
+
var import_remotion28 = require("remotion");
|
|
2182
|
+
var import_zod38 = require("zod");
|
|
2183
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
2184
|
+
var SlideTransitionPropsSchema = import_zod38.z.object({
|
|
2185
|
+
durationInFrames: import_zod38.z.number().int().min(10).max(60).default(30),
|
|
2186
|
+
direction: import_zod38.z.enum(["left", "right", "up", "down"]).default("left"),
|
|
2187
|
+
distance: import_zod38.z.number().int().min(1).max(2e3).default(160),
|
|
2188
|
+
phase: import_zod38.z.enum(["in", "out", "inOut"]).default("inOut")
|
|
2050
2189
|
});
|
|
2051
2190
|
function translateFor(direction, delta) {
|
|
2052
2191
|
if (direction === "left") return { x: -delta, y: 0 };
|
|
@@ -2062,29 +2201,30 @@ var SlideTransition = ({
|
|
|
2062
2201
|
children,
|
|
2063
2202
|
__wavesDurationInFrames
|
|
2064
2203
|
}) => {
|
|
2065
|
-
const
|
|
2204
|
+
const layers = import_react7.default.Children.toArray(children);
|
|
2205
|
+
const frame = (0, import_remotion28.useCurrentFrame)();
|
|
2066
2206
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
2067
2207
|
const d = Math.min(durationInFrames, total);
|
|
2068
2208
|
let opacity = 1;
|
|
2069
2209
|
let tx = 0;
|
|
2070
2210
|
let ty = 0;
|
|
2071
2211
|
if (phase === "in" || phase === "inOut") {
|
|
2072
|
-
const t = (0,
|
|
2212
|
+
const t = (0, import_remotion28.interpolate)(frame, [0, d], [1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2073
2213
|
const { x, y } = translateFor(direction, distance * t);
|
|
2074
2214
|
tx += x;
|
|
2075
2215
|
ty += y;
|
|
2076
|
-
opacity *= (0,
|
|
2216
|
+
opacity *= (0, import_remotion28.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2077
2217
|
}
|
|
2078
2218
|
if (phase === "out" || phase === "inOut") {
|
|
2079
2219
|
const start = Math.max(0, total - d);
|
|
2080
|
-
const t = (0,
|
|
2220
|
+
const t = (0, import_remotion28.interpolate)(frame, [start, total], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2081
2221
|
const opposite = direction === "left" ? "right" : direction === "right" ? "left" : direction === "up" ? "down" : "up";
|
|
2082
2222
|
const { x, y } = translateFor(opposite, distance * t);
|
|
2083
2223
|
tx += x;
|
|
2084
2224
|
ty += y;
|
|
2085
|
-
opacity *= (0,
|
|
2225
|
+
opacity *= (0, import_remotion28.interpolate)(frame, [start, total], [1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2086
2226
|
}
|
|
2087
|
-
return /* @__PURE__ */ (0,
|
|
2227
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Fill, { style: { opacity, transform: `translate(${tx}px, ${ty}px)` }, children: layers.map((child, i) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { style: { position: "absolute", inset: 0 }, children: child }, i)) });
|
|
2088
2228
|
};
|
|
2089
2229
|
var SlideTransitionComponentMetadata = {
|
|
2090
2230
|
kind: "composite",
|
|
@@ -2096,16 +2236,15 @@ var SlideTransitionComponentMetadata = {
|
|
|
2096
2236
|
};
|
|
2097
2237
|
|
|
2098
2238
|
// src/components/composites/SplitScreen.tsx
|
|
2099
|
-
var
|
|
2100
|
-
var
|
|
2101
|
-
var
|
|
2102
|
-
var
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
dividerColor: import_zod36.z.string().optional()
|
|
2239
|
+
var import_react8 = __toESM(require("react"));
|
|
2240
|
+
var import_zod39 = require("zod");
|
|
2241
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
2242
|
+
var SplitScreenPropsSchema = import_zod39.z.object({
|
|
2243
|
+
orientation: import_zod39.z.enum(["vertical", "horizontal"]).default("vertical"),
|
|
2244
|
+
split: import_zod39.z.number().min(0.1).max(0.9).default(0.5),
|
|
2245
|
+
gap: import_zod39.z.number().min(0).default(48),
|
|
2246
|
+
padding: import_zod39.z.number().min(0).default(80),
|
|
2247
|
+
dividerColor: import_zod39.z.string().optional()
|
|
2109
2248
|
});
|
|
2110
2249
|
var SplitScreen = ({
|
|
2111
2250
|
orientation,
|
|
@@ -2115,14 +2254,14 @@ var SplitScreen = ({
|
|
|
2115
2254
|
dividerColor,
|
|
2116
2255
|
children
|
|
2117
2256
|
}) => {
|
|
2118
|
-
const items =
|
|
2257
|
+
const items = import_react8.default.Children.toArray(children);
|
|
2119
2258
|
const first = items[0] ?? null;
|
|
2120
2259
|
const second = items[1] ?? null;
|
|
2121
2260
|
const isVertical = orientation === "vertical";
|
|
2122
2261
|
const flexDirection = isVertical ? "row" : "column";
|
|
2123
|
-
return /* @__PURE__ */ (0,
|
|
2124
|
-
/* @__PURE__ */ (0,
|
|
2125
|
-
dividerColor ? /* @__PURE__ */ (0,
|
|
2262
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Fill, { style: { padding, boxSizing: "border-box" }, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { style: { display: "flex", flexDirection, gap, width: "100%", height: "100%" }, children: [
|
|
2263
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { style: { flex: split, position: "relative" }, children: first }),
|
|
2264
|
+
dividerColor ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
2126
2265
|
"div",
|
|
2127
2266
|
{
|
|
2128
2267
|
style: {
|
|
@@ -2133,7 +2272,7 @@ var SplitScreen = ({
|
|
|
2133
2272
|
}
|
|
2134
2273
|
}
|
|
2135
2274
|
) : null,
|
|
2136
|
-
/* @__PURE__ */ (0,
|
|
2275
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { style: { flex: 1 - split, position: "relative" }, children: second })
|
|
2137
2276
|
] }) });
|
|
2138
2277
|
};
|
|
2139
2278
|
var SplitScreenComponentMetadata = {
|
|
@@ -2147,22 +2286,25 @@ var SplitScreenComponentMetadata = {
|
|
|
2147
2286
|
};
|
|
2148
2287
|
|
|
2149
2288
|
// src/components/composites/SplitText.tsx
|
|
2150
|
-
var
|
|
2151
|
-
var
|
|
2152
|
-
var
|
|
2153
|
-
var SplitTextPropsSchema =
|
|
2154
|
-
content:
|
|
2155
|
-
fontSize:
|
|
2156
|
-
color:
|
|
2157
|
-
fontFamily:
|
|
2158
|
-
position:
|
|
2159
|
-
splitBy:
|
|
2160
|
-
stagger:
|
|
2161
|
-
animation:
|
|
2289
|
+
var import_remotion29 = require("remotion");
|
|
2290
|
+
var import_zod40 = require("zod");
|
|
2291
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
2292
|
+
var SplitTextPropsSchema = import_zod40.z.object({
|
|
2293
|
+
content: import_zod40.z.string().max(200),
|
|
2294
|
+
fontSize: import_zod40.z.number().min(8).max(200).default(48),
|
|
2295
|
+
color: import_zod40.z.string().default("#FFFFFF"),
|
|
2296
|
+
fontFamily: import_zod40.z.string().default("Inter"),
|
|
2297
|
+
position: import_zod40.z.enum(["top", "center", "bottom"]).default("center"),
|
|
2298
|
+
splitBy: import_zod40.z.enum(["word", "letter"]).default("word"),
|
|
2299
|
+
stagger: import_zod40.z.number().int().min(1).max(10).default(3),
|
|
2300
|
+
animation: import_zod40.z.enum(["fade", "slideUp", "slideDown", "scale", "rotate"]).default("slideUp"),
|
|
2301
|
+
maxWidthPct: import_zod40.z.number().min(0.1).max(1).default(0.9),
|
|
2302
|
+
safeInsetPct: import_zod40.z.number().min(0).max(0.25).default(0.06)
|
|
2162
2303
|
});
|
|
2163
|
-
var positionStyles4 = (position) => {
|
|
2164
|
-
|
|
2165
|
-
if (position === "
|
|
2304
|
+
var positionStyles4 = (position, safeInsetPct) => {
|
|
2305
|
+
const inset = `${(safeInsetPct * 100).toFixed(2)}%`;
|
|
2306
|
+
if (position === "top") return { justifyContent: "center", alignItems: "flex-start", paddingTop: inset };
|
|
2307
|
+
if (position === "bottom") return { justifyContent: "center", alignItems: "flex-end", paddingBottom: inset };
|
|
2166
2308
|
return { justifyContent: "center", alignItems: "center" };
|
|
2167
2309
|
};
|
|
2168
2310
|
function getItemStyle(progress, animation) {
|
|
@@ -2189,12 +2331,14 @@ var SplitText = ({
|
|
|
2189
2331
|
position,
|
|
2190
2332
|
splitBy,
|
|
2191
2333
|
stagger,
|
|
2192
|
-
animation
|
|
2334
|
+
animation,
|
|
2335
|
+
maxWidthPct,
|
|
2336
|
+
safeInsetPct
|
|
2193
2337
|
}) => {
|
|
2194
|
-
const frame = (0,
|
|
2195
|
-
const { fps } = (0,
|
|
2338
|
+
const frame = (0, import_remotion29.useCurrentFrame)();
|
|
2339
|
+
const { fps } = (0, import_remotion29.useVideoConfig)();
|
|
2196
2340
|
const items = splitBy === "letter" ? content.split("") : content.trim().split(/\s+/);
|
|
2197
|
-
return /* @__PURE__ */ (0,
|
|
2341
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Fill, { style: { display: "flex", ...positionStyles4(position, safeInsetPct) }, children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
2198
2342
|
"div",
|
|
2199
2343
|
{
|
|
2200
2344
|
style: {
|
|
@@ -2202,19 +2346,22 @@ var SplitText = ({
|
|
|
2202
2346
|
flexWrap: "wrap",
|
|
2203
2347
|
justifyContent: "center",
|
|
2204
2348
|
gap: splitBy === "letter" ? 0 : 12,
|
|
2349
|
+
maxWidth: `${Math.round(maxWidthPct * 100)}%`,
|
|
2205
2350
|
fontSize,
|
|
2206
2351
|
color,
|
|
2207
2352
|
fontFamily,
|
|
2208
2353
|
fontWeight: 700,
|
|
2209
|
-
textAlign: "center"
|
|
2354
|
+
textAlign: "center",
|
|
2355
|
+
overflowWrap: "anywhere",
|
|
2356
|
+
wordBreak: "break-word"
|
|
2210
2357
|
},
|
|
2211
2358
|
children: items.map((t, i) => {
|
|
2212
|
-
const progress = (0,
|
|
2359
|
+
const progress = (0, import_remotion29.spring)({
|
|
2213
2360
|
frame: frame - i * stagger,
|
|
2214
2361
|
fps,
|
|
2215
2362
|
config: { damping: 14, stiffness: 120, mass: 0.9 }
|
|
2216
2363
|
});
|
|
2217
|
-
return /* @__PURE__ */ (0,
|
|
2364
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
2218
2365
|
"span",
|
|
2219
2366
|
{
|
|
2220
2367
|
style: {
|
|
@@ -2242,19 +2389,19 @@ var SplitTextComponentMetadata = {
|
|
|
2242
2389
|
};
|
|
2243
2390
|
|
|
2244
2391
|
// src/components/composites/SubtitleText.tsx
|
|
2245
|
-
var
|
|
2246
|
-
var
|
|
2247
|
-
var
|
|
2248
|
-
var SubtitleTextPropsSchema =
|
|
2249
|
-
text:
|
|
2250
|
-
fontSize:
|
|
2251
|
-
color:
|
|
2252
|
-
backgroundColor:
|
|
2253
|
-
fontFamily:
|
|
2254
|
-
position:
|
|
2255
|
-
maxWidth:
|
|
2256
|
-
padding:
|
|
2257
|
-
highlightWords:
|
|
2392
|
+
var import_remotion30 = require("remotion");
|
|
2393
|
+
var import_zod41 = require("zod");
|
|
2394
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
2395
|
+
var SubtitleTextPropsSchema = import_zod41.z.object({
|
|
2396
|
+
text: import_zod41.z.string().max(200),
|
|
2397
|
+
fontSize: import_zod41.z.number().min(12).max(80).default(36),
|
|
2398
|
+
color: import_zod41.z.string().default("#FFFFFF"),
|
|
2399
|
+
backgroundColor: import_zod41.z.string().default("rgba(0,0,0,0.7)"),
|
|
2400
|
+
fontFamily: import_zod41.z.string().default("Inter"),
|
|
2401
|
+
position: import_zod41.z.enum(["top", "bottom"]).default("bottom"),
|
|
2402
|
+
maxWidth: import_zod41.z.number().min(200).max(1200).default(800),
|
|
2403
|
+
padding: import_zod41.z.number().min(0).max(80).default(20),
|
|
2404
|
+
highlightWords: import_zod41.z.array(import_zod41.z.string()).optional()
|
|
2258
2405
|
});
|
|
2259
2406
|
function normalizeWord(w) {
|
|
2260
2407
|
return w.toLowerCase().replace(/[^a-z0-9]/g, "");
|
|
@@ -2271,15 +2418,15 @@ var SubtitleText = ({
|
|
|
2271
2418
|
highlightWords,
|
|
2272
2419
|
__wavesDurationInFrames
|
|
2273
2420
|
}) => {
|
|
2274
|
-
const frame = (0,
|
|
2421
|
+
const frame = (0, import_remotion30.useCurrentFrame)();
|
|
2275
2422
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
2276
|
-
const inFade = (0,
|
|
2277
|
-
const outFade = (0,
|
|
2423
|
+
const inFade = (0, import_remotion30.interpolate)(frame, [0, 10], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2424
|
+
const outFade = (0, import_remotion30.interpolate)(frame, [Math.max(0, total - 10), total], [1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2278
2425
|
const opacity = inFade * outFade;
|
|
2279
2426
|
const highlights = new Set((highlightWords ?? []).map(normalizeWord));
|
|
2280
2427
|
const tokens = text.split(/\s+/);
|
|
2281
2428
|
const yStyle = position === "top" ? { top: 70 } : { bottom: 90 };
|
|
2282
|
-
return /* @__PURE__ */ (0,
|
|
2429
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Fill, { children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { style: { position: "absolute", left: "50%", transform: "translateX(-50%)", maxWidth, width: "100%", ...yStyle }, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2283
2430
|
"div",
|
|
2284
2431
|
{
|
|
2285
2432
|
style: {
|
|
@@ -2298,7 +2445,7 @@ var SubtitleText = ({
|
|
|
2298
2445
|
children: tokens.map((t, i) => {
|
|
2299
2446
|
const n = normalizeWord(t);
|
|
2300
2447
|
const isHighlighted = highlights.has(n);
|
|
2301
|
-
return /* @__PURE__ */ (0,
|
|
2448
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { style: { color: isHighlighted ? "#FFD60A" : color, marginRight: 8 }, children: t }, i);
|
|
2302
2449
|
})
|
|
2303
2450
|
}
|
|
2304
2451
|
) }) });
|
|
@@ -2311,17 +2458,19 @@ var SubtitleTextComponentMetadata = {
|
|
|
2311
2458
|
};
|
|
2312
2459
|
|
|
2313
2460
|
// src/components/composites/TikTokCaption.tsx
|
|
2314
|
-
var
|
|
2315
|
-
var
|
|
2316
|
-
var
|
|
2317
|
-
var TikTokCaptionPropsSchema =
|
|
2318
|
-
text:
|
|
2319
|
-
fontSize:
|
|
2320
|
-
color:
|
|
2321
|
-
strokeColor:
|
|
2322
|
-
strokeWidth:
|
|
2323
|
-
position:
|
|
2324
|
-
highlightStyle:
|
|
2461
|
+
var import_remotion31 = require("remotion");
|
|
2462
|
+
var import_zod42 = require("zod");
|
|
2463
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
2464
|
+
var TikTokCaptionPropsSchema = import_zod42.z.object({
|
|
2465
|
+
text: import_zod42.z.string().max(150),
|
|
2466
|
+
fontSize: import_zod42.z.number().min(12).max(120).default(48),
|
|
2467
|
+
color: import_zod42.z.string().default("#FFFFFF"),
|
|
2468
|
+
strokeColor: import_zod42.z.string().default("#000000"),
|
|
2469
|
+
strokeWidth: import_zod42.z.number().min(0).max(10).default(3),
|
|
2470
|
+
position: import_zod42.z.enum(["center", "bottom"]).default("center"),
|
|
2471
|
+
highlightStyle: import_zod42.z.enum(["word", "bounce", "none"]).default("word"),
|
|
2472
|
+
maxWidthPct: import_zod42.z.number().min(0.1).max(1).default(0.92),
|
|
2473
|
+
safeInsetPct: import_zod42.z.number().min(0).max(0.25).default(0.06)
|
|
2325
2474
|
});
|
|
2326
2475
|
var TikTokCaption = ({
|
|
2327
2476
|
text,
|
|
@@ -2331,18 +2480,21 @@ var TikTokCaption = ({
|
|
|
2331
2480
|
strokeWidth,
|
|
2332
2481
|
position,
|
|
2333
2482
|
highlightStyle,
|
|
2483
|
+
maxWidthPct,
|
|
2484
|
+
safeInsetPct,
|
|
2334
2485
|
__wavesDurationInFrames
|
|
2335
2486
|
}) => {
|
|
2336
|
-
const frame = (0,
|
|
2487
|
+
const frame = (0, import_remotion31.useCurrentFrame)();
|
|
2337
2488
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
2338
|
-
const p = (0,
|
|
2489
|
+
const p = (0, import_remotion31.interpolate)(frame, [0, total], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2339
2490
|
const words = text.trim().split(/\s+/);
|
|
2340
2491
|
const idx = highlightStyle === "none" ? -1 : Math.min(words.length - 1, Math.floor(p * words.length));
|
|
2341
|
-
const
|
|
2342
|
-
|
|
2492
|
+
const inset = `${(safeInsetPct * 100).toFixed(2)}%`;
|
|
2493
|
+
const yStyle = position === "bottom" ? { alignItems: "flex-end", paddingBottom: inset } : { alignItems: "center" };
|
|
2494
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Fill, { style: { display: "flex", justifyContent: "center", ...yStyle }, children: /* @__PURE__ */ (0, import_jsx_runtime41.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) => {
|
|
2343
2495
|
const isActive = i === idx && highlightStyle !== "none";
|
|
2344
|
-
const bounce = isActive && highlightStyle === "bounce" ? (0,
|
|
2345
|
-
return /* @__PURE__ */ (0,
|
|
2496
|
+
const bounce = isActive && highlightStyle === "bounce" ? (0, import_remotion31.interpolate)(frame % 18, [0, 9, 18], [1, 1.08, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" }) : 1;
|
|
2497
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
2346
2498
|
"span",
|
|
2347
2499
|
{
|
|
2348
2500
|
style: {
|
|
@@ -2367,20 +2519,20 @@ var TikTokCaptionComponentMetadata = {
|
|
|
2367
2519
|
};
|
|
2368
2520
|
|
|
2369
2521
|
// src/components/composites/ThirdLowerBanner.tsx
|
|
2370
|
-
var
|
|
2371
|
-
var
|
|
2372
|
-
var
|
|
2373
|
-
var ThirdLowerBannerPropsSchema =
|
|
2374
|
-
name:
|
|
2375
|
-
title:
|
|
2376
|
-
backgroundColor:
|
|
2377
|
-
primaryColor:
|
|
2378
|
-
secondaryColor:
|
|
2379
|
-
accentColor:
|
|
2380
|
-
showAvatar:
|
|
2381
|
-
avatarSrc:
|
|
2522
|
+
var import_remotion32 = require("remotion");
|
|
2523
|
+
var import_zod43 = require("zod");
|
|
2524
|
+
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
2525
|
+
var ThirdLowerBannerPropsSchema = import_zod43.z.object({
|
|
2526
|
+
name: import_zod43.z.string().max(50),
|
|
2527
|
+
title: import_zod43.z.string().max(100),
|
|
2528
|
+
backgroundColor: import_zod43.z.string().default("rgba(0,0,0,0.8)"),
|
|
2529
|
+
primaryColor: import_zod43.z.string().default("#FFFFFF"),
|
|
2530
|
+
secondaryColor: import_zod43.z.string().default("#CCCCCC"),
|
|
2531
|
+
accentColor: import_zod43.z.string().default("#FF0000"),
|
|
2532
|
+
showAvatar: import_zod43.z.boolean().default(false),
|
|
2533
|
+
avatarSrc: import_zod43.z.string().optional()
|
|
2382
2534
|
});
|
|
2383
|
-
var resolveAsset13 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
2535
|
+
var resolveAsset13 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion32.staticFile)(staticFileInputFromAssetPath(value));
|
|
2384
2536
|
var ThirdLowerBanner = ({
|
|
2385
2537
|
name,
|
|
2386
2538
|
title,
|
|
@@ -2391,11 +2543,11 @@ var ThirdLowerBanner = ({
|
|
|
2391
2543
|
showAvatar,
|
|
2392
2544
|
avatarSrc
|
|
2393
2545
|
}) => {
|
|
2394
|
-
const frame = (0,
|
|
2395
|
-
const slide = (0,
|
|
2396
|
-
const opacity = (0,
|
|
2546
|
+
const frame = (0, import_remotion32.useCurrentFrame)();
|
|
2547
|
+
const slide = (0, import_remotion32.interpolate)(frame, [0, 18], [-600, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2548
|
+
const opacity = (0, import_remotion32.interpolate)(frame, [0, 10], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2397
2549
|
const avatar = showAvatar && typeof avatarSrc === "string" && avatarSrc.length > 0 ? avatarSrc : null;
|
|
2398
|
-
return /* @__PURE__ */ (0,
|
|
2550
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Fill, { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
2399
2551
|
"div",
|
|
2400
2552
|
{
|
|
2401
2553
|
style: {
|
|
@@ -2412,17 +2564,17 @@ var ThirdLowerBanner = ({
|
|
|
2412
2564
|
backgroundColor
|
|
2413
2565
|
},
|
|
2414
2566
|
children: [
|
|
2415
|
-
/* @__PURE__ */ (0,
|
|
2416
|
-
avatar ? /* @__PURE__ */ (0,
|
|
2417
|
-
|
|
2567
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { style: { width: 10, backgroundColor: accentColor } }),
|
|
2568
|
+
avatar ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { style: { width: 160, display: "flex", alignItems: "center", justifyContent: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
2569
|
+
import_remotion32.Img,
|
|
2418
2570
|
{
|
|
2419
2571
|
src: resolveAsset13(avatar),
|
|
2420
2572
|
style: { width: 110, height: 110, borderRadius: 9999, objectFit: "cover" }
|
|
2421
2573
|
}
|
|
2422
2574
|
) }) : null,
|
|
2423
|
-
/* @__PURE__ */ (0,
|
|
2424
|
-
/* @__PURE__ */ (0,
|
|
2425
|
-
/* @__PURE__ */ (0,
|
|
2575
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { style: { padding: "28px 36px", display: "flex", flexDirection: "column", justifyContent: "center" }, children: [
|
|
2576
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { style: { color: primaryColor, fontSize: 54, fontWeight: 800, lineHeight: 1 }, children: name }),
|
|
2577
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { style: { marginTop: 10, color: secondaryColor, fontSize: 28, fontWeight: 600 }, children: title })
|
|
2426
2578
|
] })
|
|
2427
2579
|
]
|
|
2428
2580
|
}
|
|
@@ -2440,22 +2592,25 @@ var ThirdLowerBannerComponentMetadata = {
|
|
|
2440
2592
|
};
|
|
2441
2593
|
|
|
2442
2594
|
// src/components/composites/TypewriterText.tsx
|
|
2443
|
-
var
|
|
2444
|
-
var
|
|
2445
|
-
var
|
|
2446
|
-
var TypewriterTextPropsSchema =
|
|
2447
|
-
content:
|
|
2448
|
-
fontSize:
|
|
2449
|
-
color:
|
|
2450
|
-
fontFamily:
|
|
2451
|
-
position:
|
|
2452
|
-
speed:
|
|
2453
|
-
showCursor:
|
|
2454
|
-
cursorColor:
|
|
2595
|
+
var import_remotion33 = require("remotion");
|
|
2596
|
+
var import_zod44 = require("zod");
|
|
2597
|
+
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
2598
|
+
var TypewriterTextPropsSchema = import_zod44.z.object({
|
|
2599
|
+
content: import_zod44.z.string().max(500),
|
|
2600
|
+
fontSize: import_zod44.z.number().min(8).max(200).default(48),
|
|
2601
|
+
color: import_zod44.z.string().default("#FFFFFF"),
|
|
2602
|
+
fontFamily: import_zod44.z.string().default("Inter"),
|
|
2603
|
+
position: import_zod44.z.enum(["top", "center", "bottom"]).default("center"),
|
|
2604
|
+
speed: import_zod44.z.number().min(0.5).max(5).default(2),
|
|
2605
|
+
showCursor: import_zod44.z.boolean().default(true),
|
|
2606
|
+
cursorColor: import_zod44.z.string().default("#FFFFFF"),
|
|
2607
|
+
maxWidthPct: import_zod44.z.number().min(0.1).max(1).default(0.9),
|
|
2608
|
+
safeInsetPct: import_zod44.z.number().min(0).max(0.25).default(0.06)
|
|
2455
2609
|
});
|
|
2456
|
-
var positionStyles5 = (position) => {
|
|
2457
|
-
|
|
2458
|
-
if (position === "
|
|
2610
|
+
var positionStyles5 = (position, safeInsetPct) => {
|
|
2611
|
+
const inset = `${(safeInsetPct * 100).toFixed(2)}%`;
|
|
2612
|
+
if (position === "top") return { justifyContent: "center", alignItems: "flex-start", paddingTop: inset };
|
|
2613
|
+
if (position === "bottom") return { justifyContent: "center", alignItems: "flex-end", paddingBottom: inset };
|
|
2459
2614
|
return { justifyContent: "center", alignItems: "center" };
|
|
2460
2615
|
};
|
|
2461
2616
|
var TypewriterText = ({
|
|
@@ -2466,17 +2621,19 @@ var TypewriterText = ({
|
|
|
2466
2621
|
position,
|
|
2467
2622
|
speed,
|
|
2468
2623
|
showCursor,
|
|
2469
|
-
cursorColor
|
|
2624
|
+
cursorColor,
|
|
2625
|
+
maxWidthPct,
|
|
2626
|
+
safeInsetPct
|
|
2470
2627
|
}) => {
|
|
2471
|
-
const frame = (0,
|
|
2628
|
+
const frame = (0, import_remotion33.useCurrentFrame)();
|
|
2472
2629
|
const charCount = Math.min(content.length, Math.max(0, Math.floor(frame * speed)));
|
|
2473
2630
|
const shown = content.slice(0, charCount);
|
|
2474
2631
|
const cursorVisible = showCursor && charCount < content.length ? frame % 30 < 15 : false;
|
|
2475
2632
|
const cursorOpacity = cursorVisible ? 1 : 0;
|
|
2476
|
-
const cursorFade = (0,
|
|
2477
|
-
return /* @__PURE__ */ (0,
|
|
2633
|
+
const cursorFade = (0, import_remotion33.interpolate)(frame % 30, [0, 5], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2634
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Fill, { style: { display: "flex", ...positionStyles5(position, safeInsetPct) }, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { style: { fontSize, color, fontFamily, fontWeight: 600, textAlign: "center", whiteSpace: "pre-wrap", maxWidth: `${Math.round(maxWidthPct * 100)}%`, overflowWrap: "anywhere", wordBreak: "break-word" }, children: [
|
|
2478
2635
|
shown,
|
|
2479
|
-
showCursor ? /* @__PURE__ */ (0,
|
|
2636
|
+
showCursor ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { style: { color: cursorColor, opacity: cursorOpacity * cursorFade }, children: "|" }) : null
|
|
2480
2637
|
] }) });
|
|
2481
2638
|
};
|
|
2482
2639
|
var TypewriterTextComponentMetadata = {
|
|
@@ -2491,21 +2648,21 @@ var TypewriterTextComponentMetadata = {
|
|
|
2491
2648
|
};
|
|
2492
2649
|
|
|
2493
2650
|
// src/components/composites/TwitterCard.tsx
|
|
2494
|
-
var
|
|
2495
|
-
var
|
|
2496
|
-
var
|
|
2497
|
-
var TwitterCardPropsSchema =
|
|
2498
|
-
author:
|
|
2499
|
-
handle:
|
|
2500
|
-
avatarSrc:
|
|
2501
|
-
tweet:
|
|
2502
|
-
image:
|
|
2503
|
-
timestamp:
|
|
2504
|
-
verified:
|
|
2651
|
+
var import_remotion34 = require("remotion");
|
|
2652
|
+
var import_zod45 = require("zod");
|
|
2653
|
+
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
2654
|
+
var TwitterCardPropsSchema = import_zod45.z.object({
|
|
2655
|
+
author: import_zod45.z.string().min(1),
|
|
2656
|
+
handle: import_zod45.z.string().min(1),
|
|
2657
|
+
avatarSrc: import_zod45.z.string().optional(),
|
|
2658
|
+
tweet: import_zod45.z.string().max(280),
|
|
2659
|
+
image: import_zod45.z.string().optional(),
|
|
2660
|
+
timestamp: import_zod45.z.string().optional(),
|
|
2661
|
+
verified: import_zod45.z.boolean().default(false)
|
|
2505
2662
|
});
|
|
2506
|
-
var resolveAsset14 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
2663
|
+
var resolveAsset14 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion34.staticFile)(staticFileInputFromAssetPath(value));
|
|
2507
2664
|
var TwitterCard = ({ author, handle, avatarSrc, tweet, image, timestamp, verified }) => {
|
|
2508
|
-
return /* @__PURE__ */ (0,
|
|
2665
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Fill, { style: { backgroundColor: "#0B0F14", display: "flex", justifyContent: "center", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
2509
2666
|
"div",
|
|
2510
2667
|
{
|
|
2511
2668
|
style: {
|
|
@@ -2517,19 +2674,19 @@ var TwitterCard = ({ author, handle, avatarSrc, tweet, image, timestamp, verifie
|
|
|
2517
2674
|
boxShadow: "0 30px 90px rgba(0,0,0,0.35)"
|
|
2518
2675
|
},
|
|
2519
2676
|
children: [
|
|
2520
|
-
/* @__PURE__ */ (0,
|
|
2521
|
-
avatarSrc ? /* @__PURE__ */ (0,
|
|
2522
|
-
/* @__PURE__ */ (0,
|
|
2523
|
-
/* @__PURE__ */ (0,
|
|
2524
|
-
/* @__PURE__ */ (0,
|
|
2525
|
-
verified ? /* @__PURE__ */ (0,
|
|
2677
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { style: { display: "flex", gap: 18, alignItems: "center" }, children: [
|
|
2678
|
+
avatarSrc ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_remotion34.Img, { src: resolveAsset14(avatarSrc), style: { width: 78, height: 78, borderRadius: 9999, objectFit: "cover" } }) : /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { style: { width: 78, height: 78, borderRadius: 9999, backgroundColor: "#E5E7EB" } }),
|
|
2679
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { style: { display: "flex", flexDirection: "column" }, children: [
|
|
2680
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { style: { display: "flex", gap: 10, alignItems: "center" }, children: [
|
|
2681
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { style: { fontSize: 34, fontWeight: 900, color: "#111827" }, children: author }),
|
|
2682
|
+
verified ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { style: { fontSize: 26, color: "#1D9BF0", fontWeight: 900 }, children: "\u2713" }) : null
|
|
2526
2683
|
] }),
|
|
2527
|
-
/* @__PURE__ */ (0,
|
|
2684
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { style: { fontSize: 26, color: "#6B7280", fontWeight: 800 }, children: handle })
|
|
2528
2685
|
] })
|
|
2529
2686
|
] }),
|
|
2530
|
-
/* @__PURE__ */ (0,
|
|
2531
|
-
image ? /* @__PURE__ */ (0,
|
|
2532
|
-
timestamp ? /* @__PURE__ */ (0,
|
|
2687
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { style: { marginTop: 28, fontSize: 36, lineHeight: 1.25, color: "#111827", fontWeight: 700 }, children: tweet }),
|
|
2688
|
+
image ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { style: { marginTop: 28, width: "100%", height: 520, overflow: "hidden", borderRadius: 22, backgroundColor: "#F3F4F6" }, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_remotion34.Img, { src: resolveAsset14(image), style: { width: "100%", height: "100%", objectFit: "cover" } }) }) : null,
|
|
2689
|
+
timestamp ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { style: { marginTop: 22, fontSize: 22, color: "#6B7280", fontWeight: 700 }, children: timestamp }) : null
|
|
2533
2690
|
]
|
|
2534
2691
|
}
|
|
2535
2692
|
) });
|
|
@@ -2542,19 +2699,19 @@ var TwitterCardComponentMetadata = {
|
|
|
2542
2699
|
};
|
|
2543
2700
|
|
|
2544
2701
|
// src/components/composites/Watermark.tsx
|
|
2545
|
-
var
|
|
2546
|
-
var
|
|
2547
|
-
var
|
|
2548
|
-
var WatermarkPropsSchema =
|
|
2549
|
-
type:
|
|
2550
|
-
src:
|
|
2551
|
-
text:
|
|
2552
|
-
position:
|
|
2553
|
-
opacity:
|
|
2554
|
-
size:
|
|
2555
|
-
color:
|
|
2702
|
+
var import_remotion35 = require("remotion");
|
|
2703
|
+
var import_zod46 = require("zod");
|
|
2704
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
2705
|
+
var WatermarkPropsSchema = import_zod46.z.object({
|
|
2706
|
+
type: import_zod46.z.enum(["logo", "text"]).default("logo"),
|
|
2707
|
+
src: import_zod46.z.string().optional(),
|
|
2708
|
+
text: import_zod46.z.string().optional(),
|
|
2709
|
+
position: import_zod46.z.enum(["topLeft", "topRight", "bottomLeft", "bottomRight"]).default("bottomRight"),
|
|
2710
|
+
opacity: import_zod46.z.number().min(0.1).max(1).default(0.5),
|
|
2711
|
+
size: import_zod46.z.number().min(30).max(150).default(60),
|
|
2712
|
+
color: import_zod46.z.string().default("#FFFFFF")
|
|
2556
2713
|
});
|
|
2557
|
-
var resolveAsset15 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
2714
|
+
var resolveAsset15 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion35.staticFile)(staticFileInputFromAssetPath(value));
|
|
2558
2715
|
function posStyle(position) {
|
|
2559
2716
|
const offset = 30;
|
|
2560
2717
|
if (position === "topLeft") return { left: offset, top: offset };
|
|
@@ -2569,8 +2726,8 @@ var Watermark = ({ type, src, text, position, opacity, size, color }) => {
|
|
|
2569
2726
|
opacity,
|
|
2570
2727
|
pointerEvents: "none"
|
|
2571
2728
|
};
|
|
2572
|
-
return /* @__PURE__ */ (0,
|
|
2573
|
-
|
|
2729
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Fill, { children: type === "text" ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { style: { ...style, fontSize: Math.round(size * 0.6), color, fontWeight: 700 }, children: text ?? "" }) : src ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
2730
|
+
import_remotion35.Img,
|
|
2574
2731
|
{
|
|
2575
2732
|
src: resolveAsset15(src),
|
|
2576
2733
|
style: { ...style, width: size, height: size, objectFit: "contain" }
|
|
@@ -2584,19 +2741,20 @@ var WatermarkComponentMetadata = {
|
|
|
2584
2741
|
llmGuidance: "Use subtle opacity (0.3-0.6). bottomRight is standard.",
|
|
2585
2742
|
examples: [
|
|
2586
2743
|
{ type: "text", text: "@depths.ai", position: "bottomRight", opacity: 0.4, size: 60 },
|
|
2587
|
-
{ type: "logo", src: "/assets/logo.
|
|
2744
|
+
{ type: "logo", src: "/assets/logo.svg", position: "topLeft", opacity: 0.5, size: 70 }
|
|
2588
2745
|
]
|
|
2589
2746
|
};
|
|
2590
2747
|
|
|
2591
2748
|
// src/components/composites/WipeTransition.tsx
|
|
2592
|
-
var
|
|
2593
|
-
var
|
|
2594
|
-
var
|
|
2595
|
-
var
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
|
|
2749
|
+
var import_react9 = __toESM(require("react"));
|
|
2750
|
+
var import_remotion36 = require("remotion");
|
|
2751
|
+
var import_zod47 = require("zod");
|
|
2752
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
2753
|
+
var WipeTransitionPropsSchema = import_zod47.z.object({
|
|
2754
|
+
durationInFrames: import_zod47.z.number().int().min(10).max(60).default(30),
|
|
2755
|
+
direction: import_zod47.z.enum(["left", "right", "up", "down", "diagonal"]).default("right"),
|
|
2756
|
+
softEdge: import_zod47.z.boolean().default(false),
|
|
2757
|
+
phase: import_zod47.z.enum(["in", "out", "inOut"]).default("inOut")
|
|
2600
2758
|
});
|
|
2601
2759
|
function clipFor2(direction, p) {
|
|
2602
2760
|
if (direction === "left") return `inset(0 ${100 * (1 - p)}% 0 0)`;
|
|
@@ -2613,20 +2771,21 @@ var WipeTransition = ({
|
|
|
2613
2771
|
children,
|
|
2614
2772
|
__wavesDurationInFrames
|
|
2615
2773
|
}) => {
|
|
2616
|
-
const
|
|
2774
|
+
const layers = import_react9.default.Children.toArray(children);
|
|
2775
|
+
const frame = (0, import_remotion36.useCurrentFrame)();
|
|
2617
2776
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
2618
2777
|
const d = Math.min(durationInFrames, total);
|
|
2619
2778
|
let clipPath;
|
|
2620
2779
|
if (phase === "in" || phase === "inOut") {
|
|
2621
|
-
const t = (0,
|
|
2780
|
+
const t = (0, import_remotion36.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2622
2781
|
clipPath = clipFor2(direction, t);
|
|
2623
2782
|
}
|
|
2624
2783
|
if (phase === "out" || phase === "inOut") {
|
|
2625
2784
|
const start = Math.max(0, total - d);
|
|
2626
|
-
const t = (0,
|
|
2785
|
+
const t = (0, import_remotion36.interpolate)(frame, [start, total], [1, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2627
2786
|
clipPath = clipFor2(direction, t);
|
|
2628
2787
|
}
|
|
2629
|
-
return /* @__PURE__ */ (0,
|
|
2788
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Fill, { style: { clipPath, filter: softEdge ? "blur(0.4px)" : void 0 }, children: layers.map((child, i) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { style: { position: "absolute", inset: 0 }, children: child }, i)) });
|
|
2630
2789
|
};
|
|
2631
2790
|
var WipeTransitionComponentMetadata = {
|
|
2632
2791
|
kind: "composite",
|
|
@@ -2638,18 +2797,18 @@ var WipeTransitionComponentMetadata = {
|
|
|
2638
2797
|
};
|
|
2639
2798
|
|
|
2640
2799
|
// src/components/composites/YouTubeThumbnail.tsx
|
|
2641
|
-
var
|
|
2642
|
-
var
|
|
2643
|
-
var
|
|
2644
|
-
var YouTubeThumbnailPropsSchema =
|
|
2645
|
-
backgroundImage:
|
|
2646
|
-
title:
|
|
2647
|
-
subtitle:
|
|
2648
|
-
thumbnailFace:
|
|
2649
|
-
accentColor:
|
|
2650
|
-
style:
|
|
2800
|
+
var import_remotion37 = require("remotion");
|
|
2801
|
+
var import_zod48 = require("zod");
|
|
2802
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
2803
|
+
var YouTubeThumbnailPropsSchema = import_zod48.z.object({
|
|
2804
|
+
backgroundImage: import_zod48.z.string().min(1),
|
|
2805
|
+
title: import_zod48.z.string().max(60),
|
|
2806
|
+
subtitle: import_zod48.z.string().max(40).optional(),
|
|
2807
|
+
thumbnailFace: import_zod48.z.string().optional(),
|
|
2808
|
+
accentColor: import_zod48.z.string().default("#FF0000"),
|
|
2809
|
+
style: import_zod48.z.enum(["bold", "minimal", "dramatic"]).default("bold")
|
|
2651
2810
|
});
|
|
2652
|
-
var resolveAsset16 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
2811
|
+
var resolveAsset16 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion37.staticFile)(staticFileInputFromAssetPath(value));
|
|
2653
2812
|
var YouTubeThumbnail = ({
|
|
2654
2813
|
backgroundImage,
|
|
2655
2814
|
title,
|
|
@@ -2658,18 +2817,18 @@ var YouTubeThumbnail = ({
|
|
|
2658
2817
|
accentColor,
|
|
2659
2818
|
style
|
|
2660
2819
|
}) => {
|
|
2661
|
-
return /* @__PURE__ */ (0,
|
|
2662
|
-
/* @__PURE__ */ (0,
|
|
2663
|
-
style === "dramatic" ? /* @__PURE__ */ (0,
|
|
2664
|
-
thumbnailFace ? /* @__PURE__ */ (0,
|
|
2665
|
-
|
|
2820
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(Fill, { children: [
|
|
2821
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_remotion37.Img, { src: resolveAsset16(backgroundImage), style: { width: "100%", height: "100%", objectFit: "cover" } }),
|
|
2822
|
+
style === "dramatic" ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { style: { position: "absolute", inset: 0, backgroundColor: "rgba(0,0,0,0.35)" } }) : null,
|
|
2823
|
+
thumbnailFace ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
2824
|
+
import_remotion37.Img,
|
|
2666
2825
|
{
|
|
2667
2826
|
src: resolveAsset16(thumbnailFace),
|
|
2668
2827
|
style: { position: "absolute", right: 60, bottom: 0, width: 520, height: 720, objectFit: "cover" }
|
|
2669
2828
|
}
|
|
2670
2829
|
) : null,
|
|
2671
|
-
/* @__PURE__ */ (0,
|
|
2672
|
-
/* @__PURE__ */ (0,
|
|
2830
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { style: { position: "absolute", left: 70, top: 90, width: 1100 }, children: [
|
|
2831
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
2673
2832
|
"div",
|
|
2674
2833
|
{
|
|
2675
2834
|
style: {
|
|
@@ -2684,9 +2843,9 @@ var YouTubeThumbnail = ({
|
|
|
2684
2843
|
children: title
|
|
2685
2844
|
}
|
|
2686
2845
|
),
|
|
2687
|
-
subtitle ? /* @__PURE__ */ (0,
|
|
2846
|
+
subtitle ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { style: { marginTop: 26, fontSize: 52, fontWeight: 900, color: accentColor, textShadow: "0 10px 30px rgba(0,0,0,0.6)" }, children: subtitle }) : null
|
|
2688
2847
|
] }),
|
|
2689
|
-
style !== "minimal" ? /* @__PURE__ */ (0,
|
|
2848
|
+
style !== "minimal" ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { style: { position: "absolute", left: 70, bottom: 80, width: 260, height: 18, backgroundColor: accentColor, borderRadius: 9999 } }) : null
|
|
2690
2849
|
] });
|
|
2691
2850
|
};
|
|
2692
2851
|
var YouTubeThumbnailComponentMetadata = {
|
|
@@ -2697,37 +2856,39 @@ var YouTubeThumbnailComponentMetadata = {
|
|
|
2697
2856
|
};
|
|
2698
2857
|
|
|
2699
2858
|
// src/components/composites/VideoWithOverlay.tsx
|
|
2700
|
-
var
|
|
2701
|
-
var
|
|
2702
|
-
var
|
|
2703
|
-
var OverlaySchema =
|
|
2704
|
-
type:
|
|
2705
|
-
content:
|
|
2706
|
-
opacity:
|
|
2707
|
-
position:
|
|
2859
|
+
var import_remotion38 = require("remotion");
|
|
2860
|
+
var import_zod49 = require("zod");
|
|
2861
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
2862
|
+
var OverlaySchema = import_zod49.z.object({
|
|
2863
|
+
type: import_zod49.z.enum(["text", "logo", "gradient"]),
|
|
2864
|
+
content: import_zod49.z.string().optional(),
|
|
2865
|
+
opacity: import_zod49.z.number().min(0).max(1).default(0.3),
|
|
2866
|
+
position: import_zod49.z.enum(["top", "bottom", "center", "full"]).default("bottom")
|
|
2708
2867
|
});
|
|
2709
|
-
var VideoWithOverlayPropsSchema =
|
|
2710
|
-
src:
|
|
2868
|
+
var VideoWithOverlayPropsSchema = import_zod49.z.object({
|
|
2869
|
+
src: import_zod49.z.string().min(1),
|
|
2711
2870
|
overlay: OverlaySchema.optional(),
|
|
2712
|
-
volume:
|
|
2713
|
-
playbackRate:
|
|
2871
|
+
volume: import_zod49.z.number().min(0).max(1).default(1),
|
|
2872
|
+
playbackRate: import_zod49.z.number().min(0.5).max(2).default(1)
|
|
2714
2873
|
});
|
|
2715
|
-
var resolveAsset17 = (value) => isRemoteAssetPath(value) ? value : (0,
|
|
2874
|
+
var resolveAsset17 = (value) => isRemoteAssetPath(value) ? value : (0, import_remotion38.staticFile)(staticFileInputFromAssetPath(value));
|
|
2716
2875
|
var VideoWithOverlay = ({ src, overlay, volume, playbackRate }) => {
|
|
2717
|
-
const frame = (0,
|
|
2718
|
-
const fade = (0,
|
|
2719
|
-
const
|
|
2720
|
-
|
|
2876
|
+
const frame = (0, import_remotion38.useCurrentFrame)();
|
|
2877
|
+
const fade = (0, import_remotion38.interpolate)(frame, [0, 20], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2878
|
+
const overlayFill = { position: "absolute", inset: 0 };
|
|
2879
|
+
const overlayNode = overlay ? overlay.type === "gradient" ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
2880
|
+
"div",
|
|
2721
2881
|
{
|
|
2722
2882
|
style: {
|
|
2883
|
+
...overlayFill,
|
|
2723
2884
|
opacity: overlay.opacity,
|
|
2724
2885
|
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))"
|
|
2725
2886
|
}
|
|
2726
2887
|
}
|
|
2727
|
-
) : overlay.type === "logo" && overlay.content ? /* @__PURE__ */ (0,
|
|
2728
|
-
return /* @__PURE__ */ (0,
|
|
2729
|
-
/* @__PURE__ */ (0,
|
|
2730
|
-
|
|
2888
|
+
) : overlay.type === "logo" && overlay.content ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { style: { ...overlayFill, display: "flex", justifyContent: "center", alignItems: "center", opacity: overlay.opacity }, children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_remotion38.Img, { src: resolveAsset17(overlay.content), style: { width: 220, height: 220, objectFit: "contain" } }) }) : overlay.type === "text" && overlay.content ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { style: { ...overlayFill, display: "flex", justifyContent: "center", alignItems: "center", opacity: overlay.opacity }, children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { style: { color: "#FFFFFF", fontSize: 56, fontWeight: 900, textAlign: "center", padding: "0 80px" }, children: overlay.content }) }) : null : null;
|
|
2889
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(Fill, { children: [
|
|
2890
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
2891
|
+
import_remotion38.Video,
|
|
2731
2892
|
{
|
|
2732
2893
|
src: resolveAsset17(src),
|
|
2733
2894
|
style: { width: "100%", height: "100%", objectFit: "cover", opacity: fade },
|
|
@@ -2746,13 +2907,14 @@ var VideoWithOverlayComponentMetadata = {
|
|
|
2746
2907
|
};
|
|
2747
2908
|
|
|
2748
2909
|
// src/components/composites/ZoomTransition.tsx
|
|
2749
|
-
var
|
|
2750
|
-
var
|
|
2751
|
-
var
|
|
2752
|
-
var
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
|
|
2910
|
+
var import_react10 = __toESM(require("react"));
|
|
2911
|
+
var import_remotion39 = require("remotion");
|
|
2912
|
+
var import_zod50 = require("zod");
|
|
2913
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
2914
|
+
var ZoomTransitionPropsSchema = import_zod50.z.object({
|
|
2915
|
+
durationInFrames: import_zod50.z.number().int().min(10).max(60).default(30),
|
|
2916
|
+
type: import_zod50.z.enum(["zoomIn", "zoomOut"]).default("zoomIn"),
|
|
2917
|
+
phase: import_zod50.z.enum(["in", "out", "inOut"]).default("inOut")
|
|
2756
2918
|
});
|
|
2757
2919
|
var ZoomTransition = ({
|
|
2758
2920
|
durationInFrames,
|
|
@@ -2761,7 +2923,8 @@ var ZoomTransition = ({
|
|
|
2761
2923
|
children,
|
|
2762
2924
|
__wavesDurationInFrames
|
|
2763
2925
|
}) => {
|
|
2764
|
-
const
|
|
2926
|
+
const layers = import_react10.default.Children.toArray(children);
|
|
2927
|
+
const frame = (0, import_remotion39.useCurrentFrame)();
|
|
2765
2928
|
const total = Math.max(1, __wavesDurationInFrames ?? 1);
|
|
2766
2929
|
const d = Math.min(durationInFrames, total);
|
|
2767
2930
|
let opacity = 1;
|
|
@@ -2769,17 +2932,17 @@ var ZoomTransition = ({
|
|
|
2769
2932
|
const enterFrom = type === "zoomIn" ? 1.2 : 0.85;
|
|
2770
2933
|
const exitTo = type === "zoomIn" ? 1.25 : 0.75;
|
|
2771
2934
|
if (phase === "in" || phase === "inOut") {
|
|
2772
|
-
const t = (0,
|
|
2935
|
+
const t = (0, import_remotion39.interpolate)(frame, [0, d], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2773
2936
|
scale *= enterFrom + (1 - enterFrom) * t;
|
|
2774
2937
|
opacity *= t;
|
|
2775
2938
|
}
|
|
2776
2939
|
if (phase === "out" || phase === "inOut") {
|
|
2777
2940
|
const start = Math.max(0, total - d);
|
|
2778
|
-
const t = (0,
|
|
2941
|
+
const t = (0, import_remotion39.interpolate)(frame, [start, total], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
2779
2942
|
scale *= 1 + (exitTo - 1) * t;
|
|
2780
2943
|
opacity *= 1 - t;
|
|
2781
2944
|
}
|
|
2782
|
-
return /* @__PURE__ */ (0,
|
|
2945
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Fill, { style: { opacity, transform: `scale(${scale})` }, children: layers.map((child, i) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { style: { position: "absolute", inset: 0 }, children: child }, i)) });
|
|
2783
2946
|
};
|
|
2784
2947
|
var ZoomTransitionComponentMetadata = {
|
|
2785
2948
|
kind: "composite",
|
|
@@ -2808,6 +2971,14 @@ function registerBuiltInComponents() {
|
|
|
2808
2971
|
metadata: BoxComponentMetadata
|
|
2809
2972
|
});
|
|
2810
2973
|
}
|
|
2974
|
+
if (!globalRegistry.has("Frame")) {
|
|
2975
|
+
globalRegistry.register({
|
|
2976
|
+
type: "Frame",
|
|
2977
|
+
component: Frame,
|
|
2978
|
+
propsSchema: FramePropsSchema,
|
|
2979
|
+
metadata: FrameComponentMetadata
|
|
2980
|
+
});
|
|
2981
|
+
}
|
|
2811
2982
|
if (!globalRegistry.has("Stack")) {
|
|
2812
2983
|
globalRegistry.register({
|
|
2813
2984
|
type: "Stack",
|
|
@@ -2824,6 +2995,22 @@ function registerBuiltInComponents() {
|
|
|
2824
2995
|
metadata: GridComponentMetadata
|
|
2825
2996
|
});
|
|
2826
2997
|
}
|
|
2998
|
+
if (!globalRegistry.has("Layers")) {
|
|
2999
|
+
globalRegistry.register({
|
|
3000
|
+
type: "Layers",
|
|
3001
|
+
component: Layers,
|
|
3002
|
+
propsSchema: LayersPropsSchema,
|
|
3003
|
+
metadata: LayersComponentMetadata
|
|
3004
|
+
});
|
|
3005
|
+
}
|
|
3006
|
+
if (!globalRegistry.has("Layer")) {
|
|
3007
|
+
globalRegistry.register({
|
|
3008
|
+
type: "Layer",
|
|
3009
|
+
component: Layer,
|
|
3010
|
+
propsSchema: LayerPropsSchema,
|
|
3011
|
+
metadata: LayerComponentMetadata
|
|
3012
|
+
});
|
|
3013
|
+
}
|
|
2827
3014
|
if (!globalRegistry.has("Image")) {
|
|
2828
3015
|
globalRegistry.register({
|
|
2829
3016
|
type: "Image",
|
|
@@ -3562,14 +3749,16 @@ var WavesEngine = class {
|
|
|
3562
3749
|
onProgress: () => void 0
|
|
3563
3750
|
});
|
|
3564
3751
|
const compositionId = validatedIR.video.id ?? "main";
|
|
3752
|
+
const inputProps = options.inputProps ?? {};
|
|
3565
3753
|
const composition = await (0, import_renderer.selectComposition)({
|
|
3566
3754
|
serveUrl: bundleLocation,
|
|
3567
3755
|
id: compositionId,
|
|
3568
|
-
inputProps
|
|
3756
|
+
inputProps
|
|
3569
3757
|
});
|
|
3570
3758
|
await (0, import_renderer.renderMedia)({
|
|
3571
3759
|
composition,
|
|
3572
3760
|
serveUrl: bundleLocation,
|
|
3761
|
+
inputProps,
|
|
3573
3762
|
codec: options.codec ?? "h264",
|
|
3574
3763
|
outputLocation: options.outputPath,
|
|
3575
3764
|
crf: options.crf ?? null,
|
|
@@ -3582,6 +3771,70 @@ var WavesEngine = class {
|
|
|
3582
3771
|
await import_promises.default.rm(tmpDir, { recursive: true, force: true });
|
|
3583
3772
|
}
|
|
3584
3773
|
}
|
|
3774
|
+
async renderStills(ir, options) {
|
|
3775
|
+
if (this.registry !== globalRegistry) {
|
|
3776
|
+
throw new WavesRenderError("WavesEngine currently requires using globalRegistry", {
|
|
3777
|
+
hint: "Use `registerBuiltInComponents()` + `globalRegistry` for both validation and rendering."
|
|
3778
|
+
});
|
|
3779
|
+
}
|
|
3780
|
+
const validationResult = this.validator.validate(ir);
|
|
3781
|
+
if (!validationResult.success) {
|
|
3782
|
+
throw new WavesRenderError("IR validation failed", { errors: validationResult.errors });
|
|
3783
|
+
}
|
|
3784
|
+
const validatedIR = validationResult.data;
|
|
3785
|
+
const requiredTypes = collectComponentTypes(validatedIR);
|
|
3786
|
+
for (const type of requiredTypes) {
|
|
3787
|
+
if (!this.registry.has(type)) {
|
|
3788
|
+
throw new WavesRenderError("Unknown component type", { type });
|
|
3789
|
+
}
|
|
3790
|
+
}
|
|
3791
|
+
const rootDir = options.rootDir ?? process.cwd();
|
|
3792
|
+
const tmpDir = await import_promises.default.mkdtemp(import_node_path.default.join(rootDir, ".waves-tmp-"));
|
|
3793
|
+
const entryPoint = import_node_path.default.join(tmpDir, "entry.tsx");
|
|
3794
|
+
try {
|
|
3795
|
+
await import_promises.default.writeFile(entryPoint, generateEntryPoint(validatedIR, options), "utf-8");
|
|
3796
|
+
await import_promises.default.mkdir(options.outputDir, { recursive: true });
|
|
3797
|
+
const bundleLocation = await (0, import_bundler.bundle)({
|
|
3798
|
+
entryPoint,
|
|
3799
|
+
rootDir,
|
|
3800
|
+
publicDir: options.publicDir ?? null,
|
|
3801
|
+
onProgress: () => void 0
|
|
3802
|
+
});
|
|
3803
|
+
const compositionId = validatedIR.video.id ?? "main";
|
|
3804
|
+
const inputProps = options.inputProps ?? {};
|
|
3805
|
+
const composition = await (0, import_renderer.selectComposition)({
|
|
3806
|
+
serveUrl: bundleLocation,
|
|
3807
|
+
id: compositionId,
|
|
3808
|
+
inputProps
|
|
3809
|
+
});
|
|
3810
|
+
const frames = Array.from(new Set(options.frames)).sort((a, b) => a - b);
|
|
3811
|
+
const written = [];
|
|
3812
|
+
for (const frame of frames) {
|
|
3813
|
+
const clamped = Math.max(0, Math.min(composition.durationInFrames - 1, Math.floor(frame)));
|
|
3814
|
+
const imageFormat = options.imageFormat ?? "png";
|
|
3815
|
+
const filename = `${compositionId}-frame-${String(clamped).padStart(6, "0")}.${imageFormat}`;
|
|
3816
|
+
const outPath = import_node_path.default.join(options.outputDir, filename);
|
|
3817
|
+
const stillOptions = {
|
|
3818
|
+
composition,
|
|
3819
|
+
serveUrl: bundleLocation,
|
|
3820
|
+
inputProps,
|
|
3821
|
+
frame: clamped,
|
|
3822
|
+
output: outPath,
|
|
3823
|
+
imageFormat,
|
|
3824
|
+
scale: options.scale ?? 1,
|
|
3825
|
+
overwrite: true,
|
|
3826
|
+
...imageFormat === "jpeg" ? { jpegQuality: options.jpegQuality ?? 80 } : {}
|
|
3827
|
+
};
|
|
3828
|
+
await (0, import_renderer.renderStill)(stillOptions);
|
|
3829
|
+
written.push(outPath);
|
|
3830
|
+
}
|
|
3831
|
+
return written;
|
|
3832
|
+
} catch (error) {
|
|
3833
|
+
throw new WavesRenderError("Rendering failed", { originalError: error });
|
|
3834
|
+
} finally {
|
|
3835
|
+
await import_promises.default.rm(tmpDir, { recursive: true, force: true });
|
|
3836
|
+
}
|
|
3837
|
+
}
|
|
3585
3838
|
};
|
|
3586
3839
|
function collectComponentTypes(ir) {
|
|
3587
3840
|
const types = /* @__PURE__ */ new Set();
|
|
@@ -3616,8 +3869,10 @@ registerBuiltInComponents();
|
|
|
3616
3869
|
const ir = ${JSON.stringify(ir, null, 2)};
|
|
3617
3870
|
const compositionId = ${JSON.stringify(compositionId)};
|
|
3618
3871
|
|
|
3619
|
-
const Root = () => {
|
|
3620
|
-
|
|
3872
|
+
const Root = (props) => {
|
|
3873
|
+
const debugBounds = Boolean(props?.__wavesDebugBounds);
|
|
3874
|
+
const debugLabels = Boolean(props?.__wavesDebugLabels);
|
|
3875
|
+
return <WavesComposition ir={ir} registry={globalRegistry} debug={{ bounds: debugBounds, labels: debugLabels }} />;
|
|
3621
3876
|
};
|
|
3622
3877
|
|
|
3623
3878
|
export const RemotionRoot = () => {
|
|
@@ -3664,7 +3919,7 @@ function parseArgs(argv) {
|
|
|
3664
3919
|
const hasInlineValue = eq >= 0;
|
|
3665
3920
|
const inlineValue = hasInlineValue ? arg.slice(eq + 1) : void 0;
|
|
3666
3921
|
const next = argv[i + 1];
|
|
3667
|
-
const isBoolean = key === "help" || key === "pretty" || key === "includeInternal";
|
|
3922
|
+
const isBoolean = key === "help" || key === "pretty" || key === "includeInternal" || key === "debugBounds" || key === "debugLabels";
|
|
3668
3923
|
if (isBoolean) {
|
|
3669
3924
|
flags[key] = true;
|
|
3670
3925
|
continue;
|
|
@@ -3709,6 +3964,7 @@ Commands:
|
|
|
3709
3964
|
write-ir Write a starter IR JSON file
|
|
3710
3965
|
validate Validate an IR JSON file
|
|
3711
3966
|
render Render MP4 from an IR JSON file
|
|
3967
|
+
stills Render PNG/JPEG/WebP still frames from an IR JSON file
|
|
3712
3968
|
|
|
3713
3969
|
Options:
|
|
3714
3970
|
-h, --help Show help
|
|
@@ -3745,6 +4001,10 @@ async function importRegistrationModules(modules) {
|
|
|
3745
4001
|
function stringifyJSON(value, pretty) {
|
|
3746
4002
|
return JSON.stringify(value, null, pretty ? 2 : 0) + "\n";
|
|
3747
4003
|
}
|
|
4004
|
+
function parseImageFormat(raw) {
|
|
4005
|
+
if (raw === "png" || raw === "jpeg" || raw === "webp") return raw;
|
|
4006
|
+
return null;
|
|
4007
|
+
}
|
|
3748
4008
|
async function main(argv = process.argv.slice(2)) {
|
|
3749
4009
|
const parsed = parseArgs(argv);
|
|
3750
4010
|
if (parsed.flags.version) {
|
|
@@ -4094,15 +4354,19 @@ async function main(argv = process.argv.slice(2)) {
|
|
|
4094
4354
|
const crfRaw = getFlagString(parsed.flags, "crf");
|
|
4095
4355
|
const concurrencyRaw = getFlagString(parsed.flags, "concurrency");
|
|
4096
4356
|
const publicDir = getFlagString(parsed.flags, "publicDir");
|
|
4357
|
+
const debugBounds = Boolean(parsed.flags.debugBounds);
|
|
4358
|
+
const debugLabels = Boolean(parsed.flags.debugLabels);
|
|
4097
4359
|
const crf = crfRaw ? Number(crfRaw) : void 0;
|
|
4098
4360
|
const concurrency = concurrencyRaw ? /^[0-9]+$/.test(concurrencyRaw) ? Number(concurrencyRaw) : concurrencyRaw : void 0;
|
|
4099
4361
|
const engine = new WavesEngine(globalRegistry, new IRValidator(globalRegistry));
|
|
4100
4362
|
try {
|
|
4363
|
+
const inputProps = debugBounds || debugLabels ? { __wavesDebugBounds: debugBounds, __wavesDebugLabels: debugLabels } : void 0;
|
|
4101
4364
|
const opts = { outputPath, registrationModules };
|
|
4102
4365
|
if (publicDir) opts.publicDir = publicDir;
|
|
4103
4366
|
if (codec) opts.codec = codec;
|
|
4104
4367
|
if (Number.isFinite(crf ?? Number.NaN)) opts.crf = crf;
|
|
4105
4368
|
if (concurrency !== void 0) opts.concurrency = concurrency;
|
|
4369
|
+
if (inputProps) opts.inputProps = inputProps;
|
|
4106
4370
|
await engine.render(json, opts);
|
|
4107
4371
|
} catch (err) {
|
|
4108
4372
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -4117,6 +4381,84 @@ async function main(argv = process.argv.slice(2)) {
|
|
|
4117
4381
|
`);
|
|
4118
4382
|
return EXIT_OK;
|
|
4119
4383
|
}
|
|
4384
|
+
if (parsed.command === "stills") {
|
|
4385
|
+
const inputPath = getFlagString(parsed.flags, "in");
|
|
4386
|
+
const outDir = getFlagString(parsed.flags, "outDir") ?? getFlagString(parsed.flags, "out");
|
|
4387
|
+
if (!inputPath) {
|
|
4388
|
+
process.stderr.write("Missing required --in <path>\n");
|
|
4389
|
+
return EXIT_USAGE;
|
|
4390
|
+
}
|
|
4391
|
+
if (!outDir) {
|
|
4392
|
+
process.stderr.write("Missing required --outDir <dir>\n");
|
|
4393
|
+
return EXIT_USAGE;
|
|
4394
|
+
}
|
|
4395
|
+
let raw;
|
|
4396
|
+
try {
|
|
4397
|
+
raw = await import_promises2.default.readFile(inputPath, "utf-8");
|
|
4398
|
+
} catch (err) {
|
|
4399
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
4400
|
+
process.stderr.write(`Failed to read ${inputPath}: ${message}
|
|
4401
|
+
`);
|
|
4402
|
+
return EXIT_IO;
|
|
4403
|
+
}
|
|
4404
|
+
let json;
|
|
4405
|
+
try {
|
|
4406
|
+
json = JSON.parse(raw);
|
|
4407
|
+
} catch (err) {
|
|
4408
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
4409
|
+
process.stderr.write(`Invalid JSON: ${message}
|
|
4410
|
+
`);
|
|
4411
|
+
return EXIT_VALIDATE;
|
|
4412
|
+
}
|
|
4413
|
+
const framesRaw = getFlagString(parsed.flags, "frames") ?? "0";
|
|
4414
|
+
const frames = framesRaw.split(/[,\s]+/g).map((v) => v.trim()).filter(Boolean).map((v) => Number(v)).filter((n) => Number.isFinite(n));
|
|
4415
|
+
if (frames.length === 0) {
|
|
4416
|
+
process.stderr.write('Invalid --frames (expected comma-separated frame numbers, e.g. "0,30,60")\n');
|
|
4417
|
+
return EXIT_USAGE;
|
|
4418
|
+
}
|
|
4419
|
+
const imageFormatRaw = (getFlagString(parsed.flags, "imageFormat") ?? "png").toLowerCase();
|
|
4420
|
+
const imageFormat = parseImageFormat(imageFormatRaw);
|
|
4421
|
+
if (!imageFormat) {
|
|
4422
|
+
process.stderr.write(`Invalid --imageFormat: ${imageFormatRaw} (expected png|jpeg|webp)
|
|
4423
|
+
`);
|
|
4424
|
+
return EXIT_USAGE;
|
|
4425
|
+
}
|
|
4426
|
+
const scaleRaw = getFlagString(parsed.flags, "scale");
|
|
4427
|
+
const jpegQualityRaw = getFlagString(parsed.flags, "jpegQuality");
|
|
4428
|
+
const publicDir = getFlagString(parsed.flags, "publicDir");
|
|
4429
|
+
const debugBounds = Boolean(parsed.flags.debugBounds);
|
|
4430
|
+
const debugLabels = Boolean(parsed.flags.debugLabels);
|
|
4431
|
+
const scale = scaleRaw ? Number(scaleRaw) : void 0;
|
|
4432
|
+
const jpegQuality = jpegQualityRaw ? Number(jpegQualityRaw) : void 0;
|
|
4433
|
+
const engine = new WavesEngine(globalRegistry, new IRValidator(globalRegistry));
|
|
4434
|
+
try {
|
|
4435
|
+
const inputProps = debugBounds || debugLabels ? { __wavesDebugBounds: debugBounds, __wavesDebugLabels: debugLabels } : void 0;
|
|
4436
|
+
const opts = {
|
|
4437
|
+
outputDir: outDir,
|
|
4438
|
+
frames,
|
|
4439
|
+
imageFormat,
|
|
4440
|
+
registrationModules
|
|
4441
|
+
};
|
|
4442
|
+
if (publicDir) opts.publicDir = publicDir;
|
|
4443
|
+
if (Number.isFinite(scale ?? Number.NaN)) opts.scale = scale;
|
|
4444
|
+
if (Number.isFinite(jpegQuality ?? Number.NaN)) opts.jpegQuality = jpegQuality;
|
|
4445
|
+
if (inputProps) opts.inputProps = inputProps;
|
|
4446
|
+
const written = await engine.renderStills(json, opts);
|
|
4447
|
+
for (const p of written) {
|
|
4448
|
+
process.stderr.write(`Wrote ${p}
|
|
4449
|
+
`);
|
|
4450
|
+
}
|
|
4451
|
+
} catch (err) {
|
|
4452
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
4453
|
+
const context = err instanceof WavesRenderError ? err.context : void 0;
|
|
4454
|
+
const payload = context ? stringifyJSON({ error: message, context }, pretty) : null;
|
|
4455
|
+
process.stderr.write(`stills failed: ${message}
|
|
4456
|
+
`);
|
|
4457
|
+
if (payload) process.stderr.write(payload);
|
|
4458
|
+
return EXIT_RENDER;
|
|
4459
|
+
}
|
|
4460
|
+
return EXIT_OK;
|
|
4461
|
+
}
|
|
4120
4462
|
process.stderr.write(`Unknown command: ${parsed.command}
|
|
4121
4463
|
`);
|
|
4122
4464
|
process.stderr.write(`Run: waves --help
|