@cueframe/kernel 0.2.51 → 0.2.53

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.
Files changed (74) hide show
  1. package/dist/_members/composition/fonts/bundledFaces.d.ts +9 -15
  2. package/dist/_members/composition/fonts/captionFaces.d.ts +2 -3
  3. package/dist/_members/composition/ops/captionOps.d.ts +11 -0
  4. package/dist/_members/composition/ops/compositionOps.d.ts +20 -19
  5. package/dist/_members/composition/validators/composition.d.ts +664 -0
  6. package/dist/_members/composition/validators/registry.d.ts +1 -1
  7. package/dist/_members/composition/validators/render.d.ts +294 -0
  8. package/dist/_members/composition-ops/index.d.ts +86 -0
  9. package/dist/_members/core/render/compositionAudioAndDepth.d.ts +9 -3
  10. package/dist/_members/core/render/compositionRender.d.ts +14 -0
  11. package/dist/_members/core/render/index.d.ts +2 -2
  12. package/dist/_members/core/render/types.d.ts +4 -1
  13. package/dist/_members/plane/contract.d.ts +1 -1
  14. package/dist/_members/primitives/captions/Captions.d.ts +18 -1
  15. package/dist/_members/primitives/captions/index.d.ts +1 -1
  16. package/dist/animate.js +2 -2
  17. package/dist/authoring/build-tools.js +6 -6
  18. package/dist/authoring/context.js +5 -5
  19. package/dist/authoring/tools.js +5 -5
  20. package/dist/authoring.js +9 -9
  21. package/dist/{chunk-MYBK6DKF.js → chunk-2BVKNYRB.js} +1 -1
  22. package/dist/{chunk-2LUAUF46.js → chunk-46DGDPXR.js} +303 -47
  23. package/dist/{chunk-KY3QBG7O.js → chunk-4DM63RTI.js} +4 -4
  24. package/dist/{chunk-IHWC75AN.js → chunk-5E4YP44R.js} +1 -1
  25. package/dist/{chunk-MOUWO53S.js → chunk-7AUHC2X7.js} +1 -1
  26. package/dist/{chunk-AVTEPAWI.js → chunk-7RGDRDAR.js} +17 -13
  27. package/dist/{chunk-7XZW26U2.js → chunk-AONWKKXK.js} +1 -1
  28. package/dist/{chunk-O3SJTX6S.js → chunk-C6ONUJIO.js} +5 -5
  29. package/dist/{chunk-LO3DH776.js → chunk-CJMUTCJW.js} +2 -2
  30. package/dist/{chunk-CZOVEX2D.js → chunk-CR3G2JQP.js} +1 -1
  31. package/dist/{chunk-2PU2TSUG.js → chunk-D5E5XFHK.js} +1 -1
  32. package/dist/{chunk-6WQHVYJD.js → chunk-G7ZSFSQG.js} +1 -1
  33. package/dist/{chunk-7SXY6NFW.js → chunk-GAACUQAB.js} +4 -4
  34. package/dist/{chunk-4CNJGY7P.js → chunk-LPUQTBKU.js} +147 -27
  35. package/dist/{chunk-YKXOAGY3.js → chunk-P3DYA5NA.js} +8 -8
  36. package/dist/{chunk-Z6NY6MCL.js → chunk-RMLGMYEJ.js} +1 -1
  37. package/dist/{chunk-NLXQ7WTH.js → chunk-TPKPU4PE.js} +56 -38
  38. package/dist/{chunk-LZEX2GAY.js → chunk-UFNIB3JL.js} +144 -5
  39. package/dist/{chunk-ACURZCPN.js → chunk-UKKY7HWN.js} +1 -1
  40. package/dist/{chunk-M665ZQYB.js → chunk-VTM7NEJC.js} +38 -6
  41. package/dist/{chunk-FSA3UBVR.js → chunk-ZFW35DLG.js} +1 -1
  42. package/dist/{chunk-OVV35ZS2.js → chunk-ZIPGDGBR.js} +1 -1
  43. package/dist/component-runtime/render.js +2 -2
  44. package/dist/component-runtime.js +3 -3
  45. package/dist/compose.js +23 -23
  46. package/dist/composition/fonts.js +1 -1
  47. package/dist/composition/graphics-plan.js +3 -3
  48. package/dist/composition/ops.js +4 -4
  49. package/dist/composition/projection.js +3 -3
  50. package/dist/composition/validators.js +17 -3
  51. package/dist/composition-ops.js +8 -8
  52. package/dist/composition.js +19 -5
  53. package/dist/{context-AIUJG7R4.js → context-UAS5WJRB.js} +5 -5
  54. package/dist/core/render.js +6 -4
  55. package/dist/core.js +4 -4
  56. package/dist/mcp/adapter.js +2 -2
  57. package/dist/mcp/core.js +1 -1
  58. package/dist/mcp/scene-shot.js +2 -2
  59. package/dist/mcp/server.js +12 -12
  60. package/dist/mcp.js +12 -12
  61. package/dist/primitives/captions.js +195 -32
  62. package/dist/primitives/effects.js +4 -4
  63. package/dist/primitives/hero-text.js +2 -2
  64. package/dist/primitives/layouts.js +3 -3
  65. package/dist/primitives/scenes.js +4 -4
  66. package/dist/primitives/text.js +2 -2
  67. package/dist/primitives/ui-blocks.js +4 -4
  68. package/dist/primitives.js +23 -23
  69. package/dist/render-harness/cardFonts.js +2 -2
  70. package/dist/render-harness.js +12 -12
  71. package/package.json +12 -12
  72. package/dist/{chunk-RL5SO653.js → chunk-7SQOXIWR.js} +3 -3
  73. package/dist/{chunk-B3GSTQLR.js → chunk-VLJOIUHL.js} +6 -6
  74. package/dist/{chunk-RBWS5XHE.js → chunk-X34KW2SL.js} +4 -4
@@ -38,8 +38,8 @@ export declare const PrimitiveRegistryEntry: z.ZodObject<{
38
38
  overlay: "overlay";
39
39
  effect: "effect";
40
40
  text: "text";
41
- transition: "transition";
42
41
  layout: "layout";
42
+ transition: "transition";
43
43
  }>;
44
44
  version: z.ZodString;
45
45
  origin: z.ZodEnum<{
@@ -205,6 +205,7 @@ export declare const RenderSnapshot: z.ZodObject<{
205
205
  h: number;
206
206
  } | undefined;
207
207
  fit?: "contain" | "cover" | undefined;
208
+ captionVisibility?: "visible" | "hidden" | undefined;
208
209
  effects?: {
209
210
  primitiveId: string;
210
211
  params?: Record<string, unknown> | undefined;
@@ -315,6 +316,79 @@ export declare const RenderSnapshot: z.ZodObject<{
315
316
  annotationColor: z.ZodOptional<z.ZodString>;
316
317
  maxWidthPercent: z.ZodOptional<z.ZodNumber>;
317
318
  }, z.core.$strip>>;
319
+ layouts: z.ZodOptional<z.ZodArray<z.ZodObject<{
320
+ segmentIndex: z.ZodNumber;
321
+ wordStartIndex: z.ZodNumber;
322
+ wordEndIndex: z.ZodNumber;
323
+ region: z.ZodObject<{
324
+ x: z.ZodNumber;
325
+ y: z.ZodNumber;
326
+ w: z.ZodNumber;
327
+ h: z.ZodNumber;
328
+ }, z.core.$strip>;
329
+ scale: z.ZodOptional<z.ZodNumber>;
330
+ rotation: z.ZodOptional<z.ZodNumber>;
331
+ style: z.ZodOptional<z.ZodObject<{
332
+ fontFamily: z.ZodOptional<z.ZodString>;
333
+ fontWeight: z.ZodOptional<z.ZodNumber>;
334
+ emphasisFontWeight: z.ZodOptional<z.ZodNumber>;
335
+ emphasisFontStyle: z.ZodOptional<z.ZodEnum<{
336
+ normal: "normal";
337
+ italic: "italic";
338
+ }>>;
339
+ emphasisFontFamily: z.ZodOptional<z.ZodString>;
340
+ fontSize: z.ZodOptional<z.ZodNumber>;
341
+ color: z.ZodOptional<z.ZodString>;
342
+ highlightColor: z.ZodOptional<z.ZodString>;
343
+ backgroundColor: z.ZodOptional<z.ZodString>;
344
+ plate: z.ZodOptional<z.ZodEnum<{
345
+ none: "none";
346
+ glass: "glass";
347
+ solid: "solid";
348
+ }>>;
349
+ textTransform: z.ZodOptional<z.ZodEnum<{
350
+ none: "none";
351
+ uppercase: "uppercase";
352
+ capitalize: "capitalize";
353
+ }>>;
354
+ emphasisColor: z.ZodOptional<z.ZodString>;
355
+ emphasisScale: z.ZodOptional<z.ZodNumber>;
356
+ emphasisTextTransform: z.ZodOptional<z.ZodEnum<{
357
+ none: "none";
358
+ uppercase: "uppercase";
359
+ capitalize: "capitalize";
360
+ }>>;
361
+ emphasisLetterSpacing: z.ZodOptional<z.ZodNumber>;
362
+ entrance: z.ZodOptional<z.ZodEnum<{
363
+ none: "none";
364
+ fade: "fade";
365
+ "word-pop": "word-pop";
366
+ "stagger-up": "stagger-up";
367
+ }>>;
368
+ entranceMs: z.ZodOptional<z.ZodNumber>;
369
+ entranceStaggerMs: z.ZodOptional<z.ZodNumber>;
370
+ exitMs: z.ZodOptional<z.ZodNumber>;
371
+ emphasisPlate: z.ZodOptional<z.ZodBoolean>;
372
+ emphasisPlateColor: z.ZodOptional<z.ZodString>;
373
+ emphasisPlateTextColor: z.ZodOptional<z.ZodString>;
374
+ emphasisPlateAltColor: z.ZodOptional<z.ZodString>;
375
+ emphasisPlateAltTextColor: z.ZodOptional<z.ZodString>;
376
+ emphasisPlateRadius: z.ZodOptional<z.ZodNumber>;
377
+ emphasisPlatePadX: z.ZodOptional<z.ZodNumber>;
378
+ emphasisPlatePadY: z.ZodOptional<z.ZodNumber>;
379
+ annotationColor: z.ZodOptional<z.ZodString>;
380
+ }, z.core.$strict>>;
381
+ holdThroughWordIndex: z.ZodOptional<z.ZodNumber>;
382
+ wordMarks: z.ZodOptional<z.ZodArray<z.ZodObject<{
383
+ wordIndex: z.ZodNumber;
384
+ emphasis: z.ZodOptional<z.ZodBoolean>;
385
+ annotate: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
386
+ circle: "circle";
387
+ underline: "underline";
388
+ }>>>;
389
+ }, z.core.$strict>>>;
390
+ wordSignature: z.ZodString;
391
+ }, z.core.$strict>>>;
318
392
  zPlane: z.ZodOptional<z.ZodEnum<{
319
393
  front: "front";
320
394
  "behind-subject": "behind-subject";
@@ -396,6 +470,79 @@ export declare const RenderSnapshot: z.ZodObject<{
396
470
  annotationColor: z.ZodOptional<z.ZodString>;
397
471
  maxWidthPercent: z.ZodOptional<z.ZodNumber>;
398
472
  }, z.core.$strip>>;
473
+ layouts: z.ZodOptional<z.ZodArray<z.ZodObject<{
474
+ segmentIndex: z.ZodNumber;
475
+ wordStartIndex: z.ZodNumber;
476
+ wordEndIndex: z.ZodNumber;
477
+ region: z.ZodObject<{
478
+ x: z.ZodNumber;
479
+ y: z.ZodNumber;
480
+ w: z.ZodNumber;
481
+ h: z.ZodNumber;
482
+ }, z.core.$strip>;
483
+ scale: z.ZodOptional<z.ZodNumber>;
484
+ rotation: z.ZodOptional<z.ZodNumber>;
485
+ style: z.ZodOptional<z.ZodObject<{
486
+ fontFamily: z.ZodOptional<z.ZodString>;
487
+ fontWeight: z.ZodOptional<z.ZodNumber>;
488
+ emphasisFontWeight: z.ZodOptional<z.ZodNumber>;
489
+ emphasisFontStyle: z.ZodOptional<z.ZodEnum<{
490
+ normal: "normal";
491
+ italic: "italic";
492
+ }>>;
493
+ emphasisFontFamily: z.ZodOptional<z.ZodString>;
494
+ fontSize: z.ZodOptional<z.ZodNumber>;
495
+ color: z.ZodOptional<z.ZodString>;
496
+ highlightColor: z.ZodOptional<z.ZodString>;
497
+ backgroundColor: z.ZodOptional<z.ZodString>;
498
+ plate: z.ZodOptional<z.ZodEnum<{
499
+ none: "none";
500
+ glass: "glass";
501
+ solid: "solid";
502
+ }>>;
503
+ textTransform: z.ZodOptional<z.ZodEnum<{
504
+ none: "none";
505
+ uppercase: "uppercase";
506
+ capitalize: "capitalize";
507
+ }>>;
508
+ emphasisColor: z.ZodOptional<z.ZodString>;
509
+ emphasisScale: z.ZodOptional<z.ZodNumber>;
510
+ emphasisTextTransform: z.ZodOptional<z.ZodEnum<{
511
+ none: "none";
512
+ uppercase: "uppercase";
513
+ capitalize: "capitalize";
514
+ }>>;
515
+ emphasisLetterSpacing: z.ZodOptional<z.ZodNumber>;
516
+ entrance: z.ZodOptional<z.ZodEnum<{
517
+ none: "none";
518
+ fade: "fade";
519
+ "word-pop": "word-pop";
520
+ "stagger-up": "stagger-up";
521
+ }>>;
522
+ entranceMs: z.ZodOptional<z.ZodNumber>;
523
+ entranceStaggerMs: z.ZodOptional<z.ZodNumber>;
524
+ exitMs: z.ZodOptional<z.ZodNumber>;
525
+ emphasisPlate: z.ZodOptional<z.ZodBoolean>;
526
+ emphasisPlateColor: z.ZodOptional<z.ZodString>;
527
+ emphasisPlateTextColor: z.ZodOptional<z.ZodString>;
528
+ emphasisPlateAltColor: z.ZodOptional<z.ZodString>;
529
+ emphasisPlateAltTextColor: z.ZodOptional<z.ZodString>;
530
+ emphasisPlateRadius: z.ZodOptional<z.ZodNumber>;
531
+ emphasisPlatePadX: z.ZodOptional<z.ZodNumber>;
532
+ emphasisPlatePadY: z.ZodOptional<z.ZodNumber>;
533
+ annotationColor: z.ZodOptional<z.ZodString>;
534
+ }, z.core.$strict>>;
535
+ holdThroughWordIndex: z.ZodOptional<z.ZodNumber>;
536
+ wordMarks: z.ZodOptional<z.ZodArray<z.ZodObject<{
537
+ wordIndex: z.ZodNumber;
538
+ emphasis: z.ZodOptional<z.ZodBoolean>;
539
+ annotate: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
540
+ circle: "circle";
541
+ underline: "underline";
542
+ }>>>;
543
+ }, z.core.$strict>>>;
544
+ wordSignature: z.ZodString;
545
+ }, z.core.$strict>>>;
399
546
  zPlane: z.ZodOptional<z.ZodEnum<{
400
547
  front: "front";
401
548
  "behind-subject": "behind-subject";
@@ -1049,6 +1196,7 @@ export declare const RenderJob: z.ZodObject<{
1049
1196
  h: number;
1050
1197
  } | undefined;
1051
1198
  fit?: "contain" | "cover" | undefined;
1199
+ captionVisibility?: "visible" | "hidden" | undefined;
1052
1200
  effects?: {
1053
1201
  primitiveId: string;
1054
1202
  params?: Record<string, unknown> | undefined;
@@ -1159,6 +1307,79 @@ export declare const RenderJob: z.ZodObject<{
1159
1307
  annotationColor: z.ZodOptional<z.ZodString>;
1160
1308
  maxWidthPercent: z.ZodOptional<z.ZodNumber>;
1161
1309
  }, z.core.$strip>>;
1310
+ layouts: z.ZodOptional<z.ZodArray<z.ZodObject<{
1311
+ segmentIndex: z.ZodNumber;
1312
+ wordStartIndex: z.ZodNumber;
1313
+ wordEndIndex: z.ZodNumber;
1314
+ region: z.ZodObject<{
1315
+ x: z.ZodNumber;
1316
+ y: z.ZodNumber;
1317
+ w: z.ZodNumber;
1318
+ h: z.ZodNumber;
1319
+ }, z.core.$strip>;
1320
+ scale: z.ZodOptional<z.ZodNumber>;
1321
+ rotation: z.ZodOptional<z.ZodNumber>;
1322
+ style: z.ZodOptional<z.ZodObject<{
1323
+ fontFamily: z.ZodOptional<z.ZodString>;
1324
+ fontWeight: z.ZodOptional<z.ZodNumber>;
1325
+ emphasisFontWeight: z.ZodOptional<z.ZodNumber>;
1326
+ emphasisFontStyle: z.ZodOptional<z.ZodEnum<{
1327
+ normal: "normal";
1328
+ italic: "italic";
1329
+ }>>;
1330
+ emphasisFontFamily: z.ZodOptional<z.ZodString>;
1331
+ fontSize: z.ZodOptional<z.ZodNumber>;
1332
+ color: z.ZodOptional<z.ZodString>;
1333
+ highlightColor: z.ZodOptional<z.ZodString>;
1334
+ backgroundColor: z.ZodOptional<z.ZodString>;
1335
+ plate: z.ZodOptional<z.ZodEnum<{
1336
+ none: "none";
1337
+ glass: "glass";
1338
+ solid: "solid";
1339
+ }>>;
1340
+ textTransform: z.ZodOptional<z.ZodEnum<{
1341
+ none: "none";
1342
+ uppercase: "uppercase";
1343
+ capitalize: "capitalize";
1344
+ }>>;
1345
+ emphasisColor: z.ZodOptional<z.ZodString>;
1346
+ emphasisScale: z.ZodOptional<z.ZodNumber>;
1347
+ emphasisTextTransform: z.ZodOptional<z.ZodEnum<{
1348
+ none: "none";
1349
+ uppercase: "uppercase";
1350
+ capitalize: "capitalize";
1351
+ }>>;
1352
+ emphasisLetterSpacing: z.ZodOptional<z.ZodNumber>;
1353
+ entrance: z.ZodOptional<z.ZodEnum<{
1354
+ none: "none";
1355
+ fade: "fade";
1356
+ "word-pop": "word-pop";
1357
+ "stagger-up": "stagger-up";
1358
+ }>>;
1359
+ entranceMs: z.ZodOptional<z.ZodNumber>;
1360
+ entranceStaggerMs: z.ZodOptional<z.ZodNumber>;
1361
+ exitMs: z.ZodOptional<z.ZodNumber>;
1362
+ emphasisPlate: z.ZodOptional<z.ZodBoolean>;
1363
+ emphasisPlateColor: z.ZodOptional<z.ZodString>;
1364
+ emphasisPlateTextColor: z.ZodOptional<z.ZodString>;
1365
+ emphasisPlateAltColor: z.ZodOptional<z.ZodString>;
1366
+ emphasisPlateAltTextColor: z.ZodOptional<z.ZodString>;
1367
+ emphasisPlateRadius: z.ZodOptional<z.ZodNumber>;
1368
+ emphasisPlatePadX: z.ZodOptional<z.ZodNumber>;
1369
+ emphasisPlatePadY: z.ZodOptional<z.ZodNumber>;
1370
+ annotationColor: z.ZodOptional<z.ZodString>;
1371
+ }, z.core.$strict>>;
1372
+ holdThroughWordIndex: z.ZodOptional<z.ZodNumber>;
1373
+ wordMarks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1374
+ wordIndex: z.ZodNumber;
1375
+ emphasis: z.ZodOptional<z.ZodBoolean>;
1376
+ annotate: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
1377
+ circle: "circle";
1378
+ underline: "underline";
1379
+ }>>>;
1380
+ }, z.core.$strict>>>;
1381
+ wordSignature: z.ZodString;
1382
+ }, z.core.$strict>>>;
1162
1383
  zPlane: z.ZodOptional<z.ZodEnum<{
1163
1384
  front: "front";
1164
1385
  "behind-subject": "behind-subject";
@@ -1240,6 +1461,79 @@ export declare const RenderJob: z.ZodObject<{
1240
1461
  annotationColor: z.ZodOptional<z.ZodString>;
1241
1462
  maxWidthPercent: z.ZodOptional<z.ZodNumber>;
1242
1463
  }, z.core.$strip>>;
1464
+ layouts: z.ZodOptional<z.ZodArray<z.ZodObject<{
1465
+ segmentIndex: z.ZodNumber;
1466
+ wordStartIndex: z.ZodNumber;
1467
+ wordEndIndex: z.ZodNumber;
1468
+ region: z.ZodObject<{
1469
+ x: z.ZodNumber;
1470
+ y: z.ZodNumber;
1471
+ w: z.ZodNumber;
1472
+ h: z.ZodNumber;
1473
+ }, z.core.$strip>;
1474
+ scale: z.ZodOptional<z.ZodNumber>;
1475
+ rotation: z.ZodOptional<z.ZodNumber>;
1476
+ style: z.ZodOptional<z.ZodObject<{
1477
+ fontFamily: z.ZodOptional<z.ZodString>;
1478
+ fontWeight: z.ZodOptional<z.ZodNumber>;
1479
+ emphasisFontWeight: z.ZodOptional<z.ZodNumber>;
1480
+ emphasisFontStyle: z.ZodOptional<z.ZodEnum<{
1481
+ normal: "normal";
1482
+ italic: "italic";
1483
+ }>>;
1484
+ emphasisFontFamily: z.ZodOptional<z.ZodString>;
1485
+ fontSize: z.ZodOptional<z.ZodNumber>;
1486
+ color: z.ZodOptional<z.ZodString>;
1487
+ highlightColor: z.ZodOptional<z.ZodString>;
1488
+ backgroundColor: z.ZodOptional<z.ZodString>;
1489
+ plate: z.ZodOptional<z.ZodEnum<{
1490
+ none: "none";
1491
+ glass: "glass";
1492
+ solid: "solid";
1493
+ }>>;
1494
+ textTransform: z.ZodOptional<z.ZodEnum<{
1495
+ none: "none";
1496
+ uppercase: "uppercase";
1497
+ capitalize: "capitalize";
1498
+ }>>;
1499
+ emphasisColor: z.ZodOptional<z.ZodString>;
1500
+ emphasisScale: z.ZodOptional<z.ZodNumber>;
1501
+ emphasisTextTransform: z.ZodOptional<z.ZodEnum<{
1502
+ none: "none";
1503
+ uppercase: "uppercase";
1504
+ capitalize: "capitalize";
1505
+ }>>;
1506
+ emphasisLetterSpacing: z.ZodOptional<z.ZodNumber>;
1507
+ entrance: z.ZodOptional<z.ZodEnum<{
1508
+ none: "none";
1509
+ fade: "fade";
1510
+ "word-pop": "word-pop";
1511
+ "stagger-up": "stagger-up";
1512
+ }>>;
1513
+ entranceMs: z.ZodOptional<z.ZodNumber>;
1514
+ entranceStaggerMs: z.ZodOptional<z.ZodNumber>;
1515
+ exitMs: z.ZodOptional<z.ZodNumber>;
1516
+ emphasisPlate: z.ZodOptional<z.ZodBoolean>;
1517
+ emphasisPlateColor: z.ZodOptional<z.ZodString>;
1518
+ emphasisPlateTextColor: z.ZodOptional<z.ZodString>;
1519
+ emphasisPlateAltColor: z.ZodOptional<z.ZodString>;
1520
+ emphasisPlateAltTextColor: z.ZodOptional<z.ZodString>;
1521
+ emphasisPlateRadius: z.ZodOptional<z.ZodNumber>;
1522
+ emphasisPlatePadX: z.ZodOptional<z.ZodNumber>;
1523
+ emphasisPlatePadY: z.ZodOptional<z.ZodNumber>;
1524
+ annotationColor: z.ZodOptional<z.ZodString>;
1525
+ }, z.core.$strict>>;
1526
+ holdThroughWordIndex: z.ZodOptional<z.ZodNumber>;
1527
+ wordMarks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1528
+ wordIndex: z.ZodNumber;
1529
+ emphasis: z.ZodOptional<z.ZodBoolean>;
1530
+ annotate: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
1531
+ circle: "circle";
1532
+ underline: "underline";
1533
+ }>>>;
1534
+ }, z.core.$strict>>>;
1535
+ wordSignature: z.ZodString;
1536
+ }, z.core.$strict>>>;
1243
1537
  zPlane: z.ZodOptional<z.ZodEnum<{
1244
1538
  front: "front";
1245
1539
  "behind-subject": "behind-subject";
@@ -170,6 +170,10 @@ export declare const CompositionOp: z.ZodDiscriminatedUnion<[z.ZodObject<{
170
170
  contain: "contain";
171
171
  cover: "cover";
172
172
  }>>;
173
+ captionVisibility: z.ZodOptional<z.ZodEnum<{
174
+ visible: "visible";
175
+ hidden: "hidden";
176
+ }>>;
173
177
  effects: z.ZodOptional<z.ZodArray<z.ZodObject<{
174
178
  primitiveId: z.ZodString;
175
179
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
@@ -363,6 +367,10 @@ export declare const CompositionOp: z.ZodDiscriminatedUnion<[z.ZodObject<{
363
367
  contain: "contain";
364
368
  cover: "cover";
365
369
  }>>>;
370
+ captionVisibility: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
371
+ visible: "visible";
372
+ hidden: "hidden";
373
+ }>>>;
366
374
  effects: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
367
375
  primitiveId: z.ZodString;
368
376
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
@@ -552,6 +560,10 @@ export declare const CompositionOp: z.ZodDiscriminatedUnion<[z.ZodObject<{
552
560
  contain: "contain";
553
561
  cover: "cover";
554
562
  }>>;
563
+ captionVisibility: z.ZodOptional<z.ZodEnum<{
564
+ visible: "visible";
565
+ hidden: "hidden";
566
+ }>>;
555
567
  effects: z.ZodOptional<z.ZodArray<z.ZodObject<{
556
568
  primitiveId: z.ZodString;
557
569
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
@@ -790,6 +802,80 @@ export declare const CompositionOp: z.ZodDiscriminatedUnion<[z.ZodObject<{
790
802
  annotationColor: z.ZodOptional<z.ZodOptional<z.ZodString>>;
791
803
  maxWidthPercent: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
792
804
  }, z.core.$strip>>;
805
+ }, z.core.$strict>, z.ZodObject<{
806
+ type: z.ZodLiteral<"setCaptionLayouts">;
807
+ layouts: z.ZodArray<z.ZodObject<{
808
+ segmentIndex: z.ZodNumber;
809
+ wordStartIndex: z.ZodNumber;
810
+ wordEndIndex: z.ZodNumber;
811
+ region: z.ZodObject<{
812
+ x: z.ZodNumber;
813
+ y: z.ZodNumber;
814
+ w: z.ZodNumber;
815
+ h: z.ZodNumber;
816
+ }, z.core.$strip>;
817
+ scale: z.ZodOptional<z.ZodNumber>;
818
+ rotation: z.ZodOptional<z.ZodNumber>;
819
+ style: z.ZodOptional<z.ZodObject<{
820
+ fontFamily: z.ZodOptional<z.ZodString>;
821
+ fontWeight: z.ZodOptional<z.ZodNumber>;
822
+ emphasisFontWeight: z.ZodOptional<z.ZodNumber>;
823
+ emphasisFontStyle: z.ZodOptional<z.ZodEnum<{
824
+ normal: "normal";
825
+ italic: "italic";
826
+ }>>;
827
+ emphasisFontFamily: z.ZodOptional<z.ZodString>;
828
+ fontSize: z.ZodOptional<z.ZodNumber>;
829
+ color: z.ZodOptional<z.ZodString>;
830
+ highlightColor: z.ZodOptional<z.ZodString>;
831
+ backgroundColor: z.ZodOptional<z.ZodString>;
832
+ plate: z.ZodOptional<z.ZodEnum<{
833
+ none: "none";
834
+ glass: "glass";
835
+ solid: "solid";
836
+ }>>;
837
+ textTransform: z.ZodOptional<z.ZodEnum<{
838
+ none: "none";
839
+ uppercase: "uppercase";
840
+ capitalize: "capitalize";
841
+ }>>;
842
+ emphasisColor: z.ZodOptional<z.ZodString>;
843
+ emphasisScale: z.ZodOptional<z.ZodNumber>;
844
+ emphasisTextTransform: z.ZodOptional<z.ZodEnum<{
845
+ none: "none";
846
+ uppercase: "uppercase";
847
+ capitalize: "capitalize";
848
+ }>>;
849
+ emphasisLetterSpacing: z.ZodOptional<z.ZodNumber>;
850
+ entrance: z.ZodOptional<z.ZodEnum<{
851
+ none: "none";
852
+ fade: "fade";
853
+ "word-pop": "word-pop";
854
+ "stagger-up": "stagger-up";
855
+ }>>;
856
+ entranceMs: z.ZodOptional<z.ZodNumber>;
857
+ entranceStaggerMs: z.ZodOptional<z.ZodNumber>;
858
+ exitMs: z.ZodOptional<z.ZodNumber>;
859
+ emphasisPlate: z.ZodOptional<z.ZodBoolean>;
860
+ emphasisPlateColor: z.ZodOptional<z.ZodString>;
861
+ emphasisPlateTextColor: z.ZodOptional<z.ZodString>;
862
+ emphasisPlateAltColor: z.ZodOptional<z.ZodString>;
863
+ emphasisPlateAltTextColor: z.ZodOptional<z.ZodString>;
864
+ emphasisPlateRadius: z.ZodOptional<z.ZodNumber>;
865
+ emphasisPlatePadX: z.ZodOptional<z.ZodNumber>;
866
+ emphasisPlatePadY: z.ZodOptional<z.ZodNumber>;
867
+ annotationColor: z.ZodOptional<z.ZodString>;
868
+ }, z.core.$strict>>;
869
+ holdThroughWordIndex: z.ZodOptional<z.ZodNumber>;
870
+ wordMarks: z.ZodOptional<z.ZodArray<z.ZodObject<{
871
+ wordIndex: z.ZodNumber;
872
+ emphasis: z.ZodOptional<z.ZodBoolean>;
873
+ annotate: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
874
+ circle: "circle";
875
+ underline: "underline";
876
+ }>>>;
877
+ }, z.core.$strict>>>;
878
+ }, z.core.$strict>>;
793
879
  }, z.core.$strict>, z.ZodObject<{
794
880
  type: z.ZodLiteral<"applyMotionPreset">;
795
881
  clipId: z.ZodString;
@@ -6,14 +6,20 @@ export declare function bindBehindSubjectHosts(overlays: CompositionOverlay[], c
6
6
  export declare function assertBehindSubjectCaptionCoverage(captionSegments: RenderInput['captionSegments'], clips: readonly CompositionClip[], fps: number, output: {
7
7
  width: number;
8
8
  height: number;
9
- }, effects?: readonly CompositionEffect[]): void;
9
+ }, effects?: readonly CompositionEffect[], captionLayouts?: RenderInput['captionLayouts']): void;
10
+ /** The geometry needed to decide which video picture is visible, without an asset URL. */
11
+ export type VisiblePictureClip = Pick<CompositionClip, 'id' | 'trackId' | 'contentIndex' | 'layerIndex' | 'timelineStartFrames' | 'durationInFrames'> & Partial<Pick<CompositionClip, 'region' | 'fit' | 'sourceWidth' | 'sourceHeight' | 'cropTrajectory' | 'cropTrajectoryUrl' | 'captionVisibility' | 'packedUrl' | 'mediaType'>> & {
12
+ hasClipEffects?: boolean;
13
+ hasCropIntent?: boolean;
14
+ };
10
15
  /** The visible full-frame picture at each interval, following the renderer's zIndex/layer order. */
11
- export declare function visiblePackedHostWindows(clips: readonly CompositionClip[], startFrame: number, endFrame: number, output: {
16
+ export declare function visiblePackedHostWindows(clips: readonly VisiblePictureClip[], startFrame: number, endFrame: number, output: {
12
17
  width: number;
13
18
  height: number;
14
- }, effects?: readonly CompositionEffect[]): Array<{
19
+ }, effects?: readonly CompositionEffect[], hostMode?: 'packed-only' | 'all-video-candidates'): Array<{
15
20
  startFrame: number;
16
21
  endFrame: number;
17
22
  hostClipId?: string;
18
23
  candidateClipIds: string[];
24
+ captionVisible: boolean;
19
25
  }>;
@@ -2,10 +2,24 @@ import type { Composition, Format, TimelineClip as WireClip } from "../../compos
2
2
  import type { RenderInput } from "./types.js";
3
3
  import type { TrajectoryData } from "../../composition/reframe/trajectory.js";
4
4
  import { type PreparedRenderInputLeaseV1, type SceneShotPreparationDependenciesV1 } from "./sceneShotPreparation.js";
5
+ import { visiblePackedHostWindows } from "./compositionAudioAndDepth.js";
5
6
  export { validateComposition } from "./compositionValidation.js";
6
7
  export { assertBehindSubjectCaptionCoverage, visiblePackedHostWindows } from "./compositionAudioAndDepth.js";
7
8
  /** Re-exported from `trackProjection`, where the frame-lattice helpers it belongs with now live. */
8
9
  export { playableSpans, projectMediaPlaybackSpans } from "./trackProjection.js";
10
+ /**
11
+ * Project the saved video timeline into candidate visible-picture windows for fact planning.
12
+ * No source URL or matte binding is created here. A hostClipId names the uniquely visible
13
+ * video candidate; callers must still check that its exact matte exists and is ready.
14
+ */
15
+ export declare function captionVisibilityWindowsForComposition(composition: Composition, sourceDimensions: Record<string, {
16
+ width: number;
17
+ height: number;
18
+ }>): {
19
+ fps: number;
20
+ windows: ReturnType<typeof visiblePackedHostWindows>;
21
+ mediaIdByProjectedClipId: Record<string, string>;
22
+ };
9
23
  export declare function compositionFormatDimensions(format: Format): {
10
24
  width: number;
11
25
  height: number;
@@ -1,4 +1,4 @@
1
- export type { RenderInput, ProjectedVisualIdentity, CompositionClip, CompositionOverlay, CompositionAudioTrack, CompositionEffect, CaptionWord, CaptionStyle, OverlayTemplate, OverlayParams, SceneShotOverlayMarkerV1, SceneShotSealedFontFace, SceneShotSlotBindingV1 } from './types.js';
1
+ export type { RenderInput, ProjectedVisualIdentity, CompositionClip, CompositionOverlay, CompositionAudioTrack, CompositionEffect, CaptionWord, CaptionStyle, CaptionLayout, OverlayTemplate, OverlayParams, SceneShotOverlayMarkerV1, SceneShotSealedFontFace, SceneShotSlotBindingV1 } from './types.js';
2
2
  export { SCENE_SHOT_IMAGE_MIME_TYPES, SCENE_SHOT_PARAM, SCENE_SHOT_PREPARATION_STAGE, assertSceneClipShapes, prepareSceneShotRenderInput, readSceneShotManifest, resolvePinnedSceneFactsV1, sceneSourceResolverForPinnedRows, } from './sceneShotPreparation.js';
3
3
  export type { PreparedRenderInputLeaseV1, ResolvedScenePreparationFactsV1, SceneShotPreparationDependenciesV1, SceneShotPreparationLocator, } from './sceneShotPreparation.js';
4
4
  export type { ResolvedBrandKit } from '../../composition/projection/index.js';
@@ -11,7 +11,7 @@ export type { EmphasisWord } from './emphasis.js';
11
11
  export type { DocNode, TranscriptUtterance } from './captions.js';
12
12
  export { buildEmphasisSet, isEmphasized } from './emphasis.js';
13
13
  export { extractCaptionWordsFromDoc, sliceTranscriptWords, splitIntoSentences } from './captions.js';
14
- export { compositionToRenderInput, referencedMediaIds, assembleRenderInput, assemblePreparedRenderInput, validateComposition, compositionFormatDimensions, playableSpans, projectMediaPlaybackSpans, assertBehindSubjectCaptionCoverage, visiblePackedHostWindows, } from './compositionRender.js';
14
+ export { compositionToRenderInput, referencedMediaIds, assembleRenderInput, assemblePreparedRenderInput, validateComposition, compositionFormatDimensions, captionVisibilityWindowsForComposition, playableSpans, projectMediaPlaybackSpans, assertBehindSubjectCaptionCoverage, visiblePackedHostWindows, } from './compositionRender.js';
15
15
  export { bookendFrames, resolveBookendTimeline, CARD_BOOKEND_DEFAULT_MS, VIDEO_BOOKEND_DEFAULT_MS, } from './bookends.js';
16
16
  export type { BookendTimeline } from './bookends.js';
17
17
  export { DEFAULT_FPS, DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_RENDER_SETTINGS, FORMAT_PRESETS, RESOLUTION_PRESETS, bppToCrf, ensureEven, qualityToCrf, resolutionToOutputSize, } from './exportSettings.js';
@@ -4,7 +4,7 @@ import type { Reframe } from '../../composition/reframe/index.js';
4
4
  import type { SceneBuilderDescriptorV1, SceneExactRateV1, SceneObjectV2, ScenePreparedJson, SealedSceneShotPlanV1 } from '../../composition/scene/index.js';
5
5
  export type { SceneBuilderAllocationDescriptorV1, SceneBuilderDescriptorV1, SceneBuilderPartDescriptorV1, SceneBuilderSlotDescriptorV1, SceneExactRateV1, } from '../../composition/scene/index.js';
6
6
  import type { TrajectoryData } from '../../composition/reframe/trajectory.js';
7
- import type { CaptionWord as WireCaptionWord, CaptionStyle as WireCaptionStyle } from '../../composition/validators/index.js';
7
+ import type { CaptionWord as WireCaptionWord, CaptionStyle as WireCaptionStyle, CaptionLayout as WireCaptionLayout } from '../../composition/validators/index.js';
8
8
  export type OverlayTemplate = 'custom' | 'gif' | 'image' | 'lottie' | (string & {});
9
9
  /**
10
10
  * Stable visual ordering projected from Composition.tracks.
@@ -69,6 +69,7 @@ export interface CompositionClip extends ProjectedVisualIdentity {
69
69
  h: number;
70
70
  };
71
71
  fit?: 'cover' | 'contain';
72
+ captionVisibility?: 'visible' | 'hidden';
72
73
  mediaType?: 'video' | 'audio' | 'image';
73
74
  kenBurns?: 'in' | 'out' | 'pan-l' | 'pan-r' | 'none';
74
75
  reframe?: Reframe;
@@ -156,6 +157,7 @@ export interface CompositionOverlay extends ProjectedVisualIdentity {
156
157
  animate?: CompositionClip['animate'];
157
158
  }
158
159
  export type CaptionWord = WireCaptionWord;
160
+ export type CaptionLayout = WireCaptionLayout;
159
161
  export type CaptionStyle = WireCaptionStyle & Required<Pick<WireCaptionStyle, 'fontFamily' | 'fontSize' | 'fontWeight' | 'color' | 'highlightColor' | 'backgroundColor' | 'position' | 'textTransform'>>;
160
162
  export interface CompositionEffect extends ProjectedVisualIdentity {
161
163
  id: string;
@@ -191,6 +193,7 @@ export interface RenderInput {
191
193
  audioTracks?: CompositionAudioTrack[];
192
194
  effects?: CompositionEffect[];
193
195
  captionSegments?: CaptionWord[][];
196
+ captionLayouts?: CaptionLayout[];
194
197
  captionsBehind?: boolean;
195
198
  captionStyle?: Partial<CaptionStyle>;
196
199
  width: number;
@@ -76,12 +76,12 @@ export declare const PreviewFrameRequest: z.ZodObject<{
76
76
  }, z.core.$strict>;
77
77
  /** Synchronous desktop variant: the mounted persisted document is the only target. */
78
78
  export declare const DesktopPreviewFrameRequest: z.ZodObject<{
79
+ scale: z.ZodOptional<z.ZodNumber>;
79
80
  timestamps: z.ZodArray<z.ZodNumber>;
80
81
  imageFormat: z.ZodOptional<z.ZodEnum<{
81
82
  png: "png";
82
83
  jpeg: "jpeg";
83
84
  }>>;
84
- scale: z.ZodOptional<z.ZodNumber>;
85
85
  jpegQuality: z.ZodOptional<z.ZodNumber>;
86
86
  }, z.core.$strict>;
87
87
  /**
@@ -1,9 +1,26 @@
1
1
  import type { CaptionWord, CaptionStyle } from '../../core/render/index.js';
2
- export declare function Captions({ segments, style: userStyle, region, }: {
2
+ import type { CaptionLayout } from '../../composition/validators/index.js';
3
+ export declare function Captions({ segments, style: userStyle, region, holdUntilMs, scale, rotation, syncWordVisibility, singlePageRequired, layoutLabel, }: {
3
4
  segments: CaptionWord[][];
4
5
  style?: Partial<CaptionStyle>;
5
6
  region?: {
6
7
  y: number;
7
8
  h: number;
8
9
  };
10
+ holdUntilMs?: number;
11
+ scale?: number;
12
+ rotation?: number;
13
+ syncWordVisibility?: boolean;
14
+ singlePageRequired?: boolean;
15
+ layoutLabel?: string;
9
16
  }): import("react").JSX.Element | null;
17
+ /** Draw default transcript words and independently placed native word ranges on the same frame. */
18
+ export declare function CaptionLayoutLayer({ segments, layouts, style, region, }: {
19
+ segments: CaptionWord[][];
20
+ layouts?: CaptionLayout[];
21
+ style?: Partial<CaptionStyle>;
22
+ region?: {
23
+ y: number;
24
+ h: number;
25
+ };
26
+ }): import("react").JSX.Element;
@@ -1,2 +1,2 @@
1
- export { Captions } from './Captions.js';
1
+ export { Captions, CaptionLayoutLayer } from './Captions.js';
2
2
  export type { CaptionWord, CaptionStyle, EmphasisWord } from '../../core/render/index.js';
package/dist/animate.js CHANGED
@@ -102,7 +102,7 @@ import {
102
102
  useStage,
103
103
  weightsAt,
104
104
  worldTransform
105
- } from "./chunk-2PU2TSUG.js";
105
+ } from "./chunk-D5E5XFHK.js";
106
106
  import {
107
107
  DEFAULT_LIGHTING_PROFILE,
108
108
  DEVICE_GLASS_OPACITY_ENCODED,
@@ -185,7 +185,7 @@ import {
185
185
  selectSceneBakeScale
186
186
  } from "./chunk-CL5Y6V6K.js";
187
187
  import "./chunk-2L7PYYJK.js";
188
- import "./chunk-AVTEPAWI.js";
188
+ import "./chunk-7RGDRDAR.js";
189
189
  import "./chunk-2ESYSVXG.js";
190
190
  export {
191
191
  ALLOWED_BAKE_SCALES,
@@ -4,19 +4,19 @@ import {
4
4
  buildPlannerTools,
5
5
  buildToolsFromSchemas,
6
6
  extractProviderError
7
- } from "../chunk-IHWC75AN.js";
8
- import "../chunk-KY3QBG7O.js";
7
+ } from "../chunk-5E4YP44R.js";
8
+ import "../chunk-4DM63RTI.js";
9
9
  import "../chunk-JOURGVOR.js";
10
10
  import "../chunk-7AZLFN26.js";
11
- import "../chunk-NLXQ7WTH.js";
12
- import "../chunk-LO3DH776.js";
13
- import "../chunk-LZEX2GAY.js";
11
+ import "../chunk-TPKPU4PE.js";
12
+ import "../chunk-CJMUTCJW.js";
13
+ import "../chunk-UFNIB3JL.js";
14
14
  import "../chunk-WPZKOVYF.js";
15
15
  import "../chunk-B7J5UUUV.js";
16
16
  import "../chunk-KYRDKK2D.js";
17
17
  import "../chunk-WREYUH2E.js";
18
18
  import "../chunk-7PA7FGLD.js";
19
- import "../chunk-AVTEPAWI.js";
19
+ import "../chunk-7RGDRDAR.js";
20
20
  import "../chunk-2ESYSVXG.js";
21
21
  export {
22
22
  ZERO_USAGE,