@meframe/core 0.4.7 → 0.5.1

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 (50) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/model/CompositionModel.d.ts +6 -0
  6. package/dist/model/CompositionModel.d.ts.map +1 -1
  7. package/dist/model/CompositionModel.js +49 -1
  8. package/dist/model/CompositionModel.js.map +1 -1
  9. package/dist/model/types.d.ts +8 -2
  10. package/dist/model/types.d.ts.map +1 -1
  11. package/dist/model/types.js +4 -0
  12. package/dist/model/types.js.map +1 -1
  13. package/dist/orchestrator/CompositionPlanner.d.ts +1 -0
  14. package/dist/orchestrator/CompositionPlanner.d.ts.map +1 -1
  15. package/dist/orchestrator/CompositionPlanner.js +22 -1
  16. package/dist/orchestrator/CompositionPlanner.js.map +1 -1
  17. package/dist/orchestrator/Orchestrator.d.ts.map +1 -1
  18. package/dist/orchestrator/Orchestrator.js +8 -1
  19. package/dist/orchestrator/Orchestrator.js.map +1 -1
  20. package/dist/stages/compose/LayerRenderer.d.ts.map +1 -1
  21. package/dist/stages/compose/LayerRenderer.js +20 -9
  22. package/dist/stages/compose/LayerRenderer.js.map +1 -1
  23. package/dist/stages/compose/font-system/types.d.ts +1 -1
  24. package/dist/stages/compose/font-system/types.d.ts.map +1 -1
  25. package/dist/stages/compose/instructions.d.ts +1 -1
  26. package/dist/stages/compose/instructions.d.ts.map +1 -1
  27. package/dist/stages/compose/text-layer-animation-time.d.ts +8 -0
  28. package/dist/stages/compose/text-layer-animation-time.d.ts.map +1 -0
  29. package/dist/stages/compose/text-layer-animation-time.js +22 -0
  30. package/dist/stages/compose/text-layer-animation-time.js.map +1 -0
  31. package/dist/stages/compose/text-renderers/basic-text-renderer.js +1 -21
  32. package/dist/stages/compose/text-renderers/basic-text-renderer.js.map +1 -1
  33. package/dist/stages/compose/text-renderers/caption-stagger-entrance-renderer.d.ts +9 -0
  34. package/dist/stages/compose/text-renderers/caption-stagger-entrance-renderer.d.ts.map +1 -0
  35. package/dist/stages/compose/text-renderers/caption-stagger-entrance-renderer.js +188 -0
  36. package/dist/stages/compose/text-renderers/caption-stagger-entrance-renderer.js.map +1 -0
  37. package/dist/stages/compose/text-renderers/word-fancy-renderer.js +1 -1
  38. package/dist/stages/compose/text-utils/caption-layout.d.ts +63 -0
  39. package/dist/stages/compose/text-utils/caption-layout.d.ts.map +1 -0
  40. package/dist/stages/compose/text-utils/caption-layout.js +129 -0
  41. package/dist/stages/compose/text-utils/caption-layout.js.map +1 -0
  42. package/dist/stages/compose/text-utils/index.d.ts +1 -0
  43. package/dist/stages/compose/text-utils/index.d.ts.map +1 -1
  44. package/dist/stages/compose/types.d.ts +3 -1
  45. package/dist/stages/compose/types.d.ts.map +1 -1
  46. package/dist/workers/stages/export/{export.worker.Cw9iPvkh.js → export.worker.Dztm6GuN.js} +218 -28
  47. package/dist/workers/stages/export/export.worker.Dztm6GuN.js.map +1 -0
  48. package/dist/workers/worker-manifest.json +1 -1
  49. package/package.json +1 -1
  50. package/dist/workers/stages/export/export.worker.Cw9iPvkh.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/stages/compose/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/stages/compose/types.ts"],"names":[],"mappings":"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"}
@@ -508,6 +508,23 @@ class WorkerChannel {
508
508
  this.port.onmessage = handler;
509
509
  }
510
510
  }
511
+ function attachmentEntranceRelativeTimeUs(clipRelativeTimeUs, activeRanges) {
512
+ const containing = activeRanges?.find(
513
+ (r) => clipRelativeTimeUs >= r.startUs && clipRelativeTimeUs < r.endUs
514
+ );
515
+ if (!containing) {
516
+ return void 0;
517
+ }
518
+ return Math.max(0, clipRelativeTimeUs - containing.startUs);
519
+ }
520
+ function textAnimationFrameForTextLayer(layer, fallbackFrame, fps) {
521
+ const et = layer.entranceRelativeTimeUs;
522
+ if (et != null && Number.isFinite(et)) {
523
+ const frameDurationUs = 1e6 / fps;
524
+ return Math.floor(et / frameDurationUs);
525
+ }
526
+ return fallbackFrame;
527
+ }
511
528
  function measureTextWidth(ctx, text, fontSize, fontFamily, fontWeight = 400) {
512
529
  ctx.save();
513
530
  ctx.font = `${fontWeight} ${fontSize}px ${fontFamily}`;
@@ -824,7 +841,7 @@ function needsSpaceBetweenWords(locale, text) {
824
841
  }
825
842
  return !["zh-CN", "ja-JP", "ko-KR"].includes(locale);
826
843
  }
827
- function calculateYPosition$3(canvasHeight, totalHeight, globalPosition) {
844
+ function calculateYPosition$4(canvasHeight, totalHeight, globalPosition) {
828
845
  if (!globalPosition) {
829
846
  return canvasHeight / 2 - totalHeight / 2;
830
847
  }
@@ -876,7 +893,7 @@ function renderBasicText(ctx, layer, canvasWidth, canvasHeight, _relativeFrame)
876
893
  ctx.lineJoin = "round";
877
894
  ctx.lineCap = "round";
878
895
  const totalHeight = lines.length * fontSize * lineHeight;
879
- const startY = calculateYPosition$3(canvasHeight, totalHeight, layer.fontConfig?.globalPosition);
896
+ const startY = calculateYPosition$4(canvasHeight, totalHeight, layer.fontConfig?.globalPosition);
880
897
  for (let i = 0; i < lines.length; i++) {
881
898
  const line = lines[i];
882
899
  const y = startY + i * fontSize * lineHeight + fontSize / 2;
@@ -890,22 +907,184 @@ function renderBasicText(ctx, layer, canvasWidth, canvasHeight, _relativeFrame)
890
907
  }
891
908
  ctx.restore();
892
909
  }
893
- function renderTextWithEntrance(ctx, layer, canvasWidth, canvasHeight, relativeFrame) {
910
+ const DEFAULT_DURATION_MS = 800;
911
+ const DEFAULT_STAGGER_MS = 50;
912
+ const SLIDE_BASE_PX = 50;
913
+ const LETTER_SPREAD_BASE_PX = 20;
914
+ const BLUR_START_PX = 10;
915
+ const FONT_REF_PX = 40;
916
+ function easeOutExpo(t) {
917
+ if (t <= 0) return 0;
918
+ if (t >= 1) return 1;
919
+ return 1 - Math.pow(2, -10 * t);
920
+ }
921
+ function calculateYPosition$3(canvasHeight, totalHeight, globalPosition) {
922
+ if (!globalPosition) {
923
+ return canvasHeight / 2 - totalHeight / 2;
924
+ }
925
+ if (globalPosition.top) {
926
+ const topPercent = parseFloat(globalPosition.top) / 100;
927
+ return canvasHeight * topPercent;
928
+ }
929
+ if (globalPosition.bottom) {
930
+ const bottomPercent = parseFloat(globalPosition.bottom) / 100;
931
+ return canvasHeight * (1 - bottomPercent) - totalHeight;
932
+ }
933
+ if (globalPosition.justifyContent === "center" || globalPosition.alignItems === "center") {
934
+ return canvasHeight / 2 - totalHeight / 2;
935
+ }
936
+ return canvasHeight / 2 - totalHeight / 2;
937
+ }
938
+ function charProgress(relativeFrame, fps, charIndex, staggerMs, durationMs) {
939
+ const tMs = relativeFrame / fps * 1e3;
940
+ const startMs = charIndex * staggerMs;
941
+ if (tMs <= startMs) return 0;
942
+ const raw = (tMs - startMs) / durationMs;
943
+ return easeOutExpo(Math.min(1, raw));
944
+ }
945
+ function buildCharSlots(ctx, layer, canvasWidth, canvasHeight) {
894
946
  const fontConfig = layer.fontConfig?.textStyle;
895
- if (!fontConfig) return;
896
- const entrance = springEasing(relativeFrame, {
897
- damping: 200,
898
- mass: 1,
899
- stiffness: 300
900
- });
901
- const opacity = interpolate(entrance, [0, 1], [0, 1]);
902
- const scale = interpolate(entrance, [0, 1], [0.9, 1]);
947
+ if (!fontConfig) return null;
948
+ const fontSize = fontConfig.fontSize;
949
+ const fontFamily = fontConfig.fontFamily;
950
+ const fontWeight = fontConfig.fontWeight;
951
+ const lineHeight = fontConfig.lineHeight || 1.2;
952
+ const maxWidth = canvasWidth * 0.64;
953
+ const text = getLetterCaseText(layer.text, layer.letterCase);
954
+ let lines;
955
+ if (layer.wordTimings && layer.wordTimings.length > 0) {
956
+ const needsSpace = needsSpaceBetweenWords(layer.localeCode || "en-US", text);
957
+ const words = text.split(needsSpace ? /\s+/ : "");
958
+ lines = formEvenLinesWithWords(
959
+ ctx,
960
+ words,
961
+ maxWidth,
962
+ fontSize,
963
+ needsSpace,
964
+ fontFamily,
965
+ fontWeight
966
+ );
967
+ } else {
968
+ lines = wrapText(ctx, text, maxWidth, fontSize, fontFamily, fontWeight);
969
+ }
970
+ const totalHeight = lines.length * fontSize * lineHeight;
971
+ const startY = calculateYPosition$3(canvasHeight, totalHeight, layer.fontConfig?.globalPosition);
972
+ ctx.save();
973
+ ctx.font = `${fontWeight} ${fontSize}px ${fontFamily}`;
974
+ const slots = [];
975
+ let globalIndex = 0;
976
+ for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
977
+ const line = lines[lineIndex];
978
+ const y = startY + lineIndex * fontSize * lineHeight + fontSize / 2;
979
+ const lineWidth = measureTextWidth(ctx, line, fontSize, fontFamily, fontWeight);
980
+ let cx = canvasWidth / 2 - lineWidth / 2;
981
+ for (const ch of Array.from(line)) {
982
+ const cw = measureTextWidth(ctx, ch, fontSize, fontFamily, fontWeight);
983
+ slots.push({
984
+ ch,
985
+ x: cx + cw / 2,
986
+ y,
987
+ globalIndex
988
+ });
989
+ globalIndex++;
990
+ cx += cw;
991
+ }
992
+ }
993
+ ctx.restore();
994
+ return { slots, fontSize, lineHeight };
995
+ }
996
+ function renderCaptionStaggerEntrance(ctx, layer, canvasWidth, canvasHeight, relativeFrame, fps, preset) {
997
+ const built = buildCharSlots(ctx, layer, canvasWidth, canvasHeight);
998
+ if (!built) return;
999
+ const { slots, fontSize } = built;
1000
+ const fontConfig = layer.fontConfig.textStyle;
1001
+ const fontFamily = fontConfig.fontFamily;
1002
+ const fontWeight = fontConfig.fontWeight;
1003
+ const fill = fontConfig.fill;
1004
+ const stroke = fontConfig.stroke;
1005
+ const strokeWidth = fontConfig.strokeWidth || 0;
1006
+ const scalePx = fontSize / FONT_REF_PX;
1007
+ const staggerMs = DEFAULT_STAGGER_MS;
903
1008
  ctx.save();
904
- ctx.globalAlpha = opacity;
905
- ctx.translate(canvasWidth / 2, canvasHeight / 2);
906
- ctx.scale(scale, scale);
907
- ctx.translate(-canvasWidth / 2, -canvasHeight / 2);
908
- renderBasicText(ctx, layer, canvasWidth, canvasHeight);
1009
+ ctx.font = `${fontWeight} ${fontSize}px ${fontFamily}`;
1010
+ ctx.textAlign = "center";
1011
+ ctx.textBaseline = "middle";
1012
+ ctx.lineJoin = "round";
1013
+ ctx.lineCap = "round";
1014
+ const tMsGlobal = relativeFrame / fps * 1e3;
1015
+ for (const slot of slots) {
1016
+ let p;
1017
+ if (preset === "typewriter") {
1018
+ const startMs = slot.globalIndex * staggerMs;
1019
+ p = tMsGlobal >= startMs ? 1 : 0;
1020
+ } else {
1021
+ p = charProgress(relativeFrame, fps, slot.globalIndex, staggerMs, DEFAULT_DURATION_MS);
1022
+ }
1023
+ if (p <= 0 && preset !== "blur") continue;
1024
+ const slidePx = SLIDE_BASE_PX * scalePx;
1025
+ const spreadPx = LETTER_SPREAD_BASE_PX * scalePx;
1026
+ ctx.save();
1027
+ let opacity = p;
1028
+ let tx = 0;
1029
+ let ty = 0;
1030
+ let rot = 0;
1031
+ let sc = 1;
1032
+ let sy = 1;
1033
+ let blurPx = 0;
1034
+ switch (preset) {
1035
+ case "fade":
1036
+ opacity = p;
1037
+ break;
1038
+ case "slideUp":
1039
+ opacity = p;
1040
+ ty = (1 - p) * slidePx;
1041
+ break;
1042
+ case "scale":
1043
+ opacity = p;
1044
+ sc = Math.max(0.04, p);
1045
+ break;
1046
+ case "rotateScale":
1047
+ opacity = p;
1048
+ rot = (1 - p) * 45 * Math.PI / 180;
1049
+ sc = 0.5 + p * 0.5;
1050
+ break;
1051
+ case "blur":
1052
+ opacity = p;
1053
+ blurPx = (1 - p) * BLUR_START_PX;
1054
+ break;
1055
+ case "flip3d":
1056
+ opacity = p;
1057
+ sy = Math.max(0.04, p);
1058
+ sc = 1;
1059
+ break;
1060
+ case "typewriter":
1061
+ opacity = p >= 1 ? 1 : p;
1062
+ break;
1063
+ case "letterSpread":
1064
+ opacity = p;
1065
+ tx = (1 - p) * spreadPx * slot.globalIndex;
1066
+ break;
1067
+ }
1068
+ ctx.globalAlpha = opacity;
1069
+ if (blurPx > 0.01) {
1070
+ ctx.filter = `blur(${blurPx}px)`;
1071
+ }
1072
+ ctx.translate(slot.x + tx, slot.y + ty);
1073
+ ctx.rotate(rot);
1074
+ if (preset === "flip3d") {
1075
+ ctx.scale(1, sy);
1076
+ } else {
1077
+ ctx.scale(sc, sc);
1078
+ }
1079
+ if (stroke && strokeWidth > 0) {
1080
+ ctx.strokeStyle = stroke;
1081
+ ctx.lineWidth = strokeWidth;
1082
+ ctx.strokeText(slot.ch, 0, 0);
1083
+ }
1084
+ ctx.fillStyle = fill;
1085
+ ctx.fillText(slot.ch, 0, 0);
1086
+ ctx.restore();
1087
+ }
909
1088
  ctx.restore();
910
1089
  }
911
1090
  function usToFrame$2(us, fps) {
@@ -1541,6 +1720,7 @@ class LayerRenderer {
1541
1720
  renderTextLayer(layer) {
1542
1721
  const animationType = layer.animation?.type;
1543
1722
  const hasWordTimings = layer.wordTimings && layer.wordTimings.length > 0;
1723
+ const animFrame = textAnimationFrameForTextLayer(layer, this.currentFrame, this.fps);
1544
1724
  const needsWordTimings = ["wordByWord", "characterKTV", "wordByWordFancy"].includes(
1545
1725
  animationType || ""
1546
1726
  );
@@ -1550,24 +1730,32 @@ class LayerRenderer {
1550
1730
  }
1551
1731
  switch (animationType) {
1552
1732
  case "wordByWord":
1553
- renderWordByWord(this.ctx, layer, this.width, this.height, this.currentFrame, this.fps);
1733
+ renderWordByWord(this.ctx, layer, this.width, this.height, animFrame, this.fps);
1554
1734
  break;
1555
1735
  case "characterKTV":
1556
- renderCharacterKTV(this.ctx, layer, this.width, this.height, this.currentFrame, this.fps);
1736
+ renderCharacterKTV(this.ctx, layer, this.width, this.height, animFrame, this.fps);
1557
1737
  break;
1558
1738
  case "wordByWordFancy":
1559
- renderWordByWordFancy(
1739
+ renderWordByWordFancy(this.ctx, layer, this.width, this.height, animFrame, this.fps);
1740
+ break;
1741
+ case "fade":
1742
+ case "slideUp":
1743
+ case "scale":
1744
+ case "rotateScale":
1745
+ case "blur":
1746
+ case "flip3d":
1747
+ case "typewriter":
1748
+ case "letterSpread":
1749
+ renderCaptionStaggerEntrance(
1560
1750
  this.ctx,
1561
1751
  layer,
1562
1752
  this.width,
1563
1753
  this.height,
1564
- this.currentFrame,
1565
- this.fps
1754
+ animFrame,
1755
+ this.fps,
1756
+ animationType
1566
1757
  );
1567
1758
  break;
1568
- case "fade":
1569
- renderTextWithEntrance(this.ctx, layer, this.width, this.height, this.currentFrame);
1570
- break;
1571
1759
  default:
1572
1760
  renderBasicText(this.ctx, layer, this.width, this.height, this.currentFrame);
1573
1761
  break;
@@ -2914,7 +3102,7 @@ function resolveActiveLayers(layers, timestamp) {
2914
3102
  );
2915
3103
  });
2916
3104
  }
2917
- function materializeLayer(layer, frame, imageMap, globalTimeUs) {
3105
+ function materializeLayer(layer, frame, imageMap, globalTimeUs, clipRelativeTimeUs) {
2918
3106
  const baseLayer = {
2919
3107
  id: layer.layerId,
2920
3108
  type: layer.type,
@@ -2937,6 +3125,7 @@ function materializeLayer(layer, frame, imageMap, globalTimeUs) {
2937
3125
  }
2938
3126
  if (layer.type === "text") {
2939
3127
  const payload = layer.payload;
3128
+ const entranceRelativeTimeUs = clipRelativeTimeUs != null ? attachmentEntranceRelativeTimeUs(clipRelativeTimeUs, layer.activeRanges) : void 0;
2940
3129
  return {
2941
3130
  ...baseLayer,
2942
3131
  type: "text",
@@ -2945,7 +3134,8 @@ function materializeLayer(layer, frame, imageMap, globalTimeUs) {
2945
3134
  fontConfig: payload.fontConfig,
2946
3135
  animation: payload.animation,
2947
3136
  wordTimings: payload.wordTimings,
2948
- letterCase: payload.letterCase
3137
+ letterCase: payload.letterCase,
3138
+ entranceRelativeTimeUs
2949
3139
  };
2950
3140
  }
2951
3141
  if (layer.type === "image") {
@@ -3215,7 +3405,7 @@ class ExportWorker {
3215
3405
  if (!activeLayers.length) return null;
3216
3406
  const clipStartUs = instruction.baseConfig.timeline?.clipStartUs ?? 0;
3217
3407
  const globalTimeUs = clipStartUs + clipRelativeTime;
3218
- const layers = activeLayers.map((layer) => materializeLayer(layer, frame, this.imageMap, globalTimeUs)).filter((layer) => layer !== null);
3408
+ const layers = activeLayers.map((layer) => materializeLayer(layer, frame, this.imageMap, globalTimeUs, clipRelativeTime)).filter((layer) => layer !== null);
3219
3409
  if (!layers.length) return null;
3220
3410
  return {
3221
3411
  timeUs: clipRelativeTime,
@@ -3253,4 +3443,4 @@ const export_worker = null;
3253
3443
  export {
3254
3444
  export_worker as default
3255
3445
  };
3256
- //# sourceMappingURL=export.worker.Cw9iPvkh.js.map
3446
+ //# sourceMappingURL=export.worker.Dztm6GuN.js.map