@cueframe/kernel 0.2.52 → 0.2.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_members/composition/fonts/bundledFaces.d.ts +9 -15
- package/dist/_members/composition/fonts/captionFaces.d.ts +2 -3
- package/dist/_members/composition/ops/captionOps.d.ts +11 -0
- package/dist/_members/composition/ops/compositionOps.d.ts +20 -19
- package/dist/_members/composition/ops/compositionOps.shared.d.ts +1 -0
- package/dist/_members/composition/validators/composition.d.ts +724 -0
- package/dist/_members/composition/validators/registry.d.ts +1 -1
- package/dist/_members/composition/validators/render.d.ts +332 -0
- package/dist/_members/composition-ops/index.d.ts +89 -0
- package/dist/_members/core/render/compositionAudioAndDepth.d.ts +3 -2
- package/dist/_members/core/render/index.d.ts +1 -1
- package/dist/_members/core/render/types.d.ts +3 -1
- package/dist/_members/plane/contract.d.ts +1 -1
- package/dist/_members/primitives/captions/Captions.d.ts +18 -1
- package/dist/_members/primitives/captions/index.d.ts +1 -1
- package/dist/_members/primitives/lib/text/spec.d.ts +1 -0
- package/dist/animate.js +2 -2
- package/dist/authoring/build-tools.js +6 -6
- package/dist/authoring/context.js +5 -5
- package/dist/authoring/tools.js +5 -5
- package/dist/authoring.js +9 -9
- package/dist/{chunk-MYBK6DKF.js → chunk-2BVKNYRB.js} +1 -1
- package/dist/{chunk-AVTEPAWI.js → chunk-7RGDRDAR.js} +17 -13
- package/dist/{chunk-7XZW26U2.js → chunk-AONWKKXK.js} +1 -1
- package/dist/{chunk-WZ22ZYXD.js → chunk-C3ARYFN6.js} +4 -4
- package/dist/{chunk-4B4V3HYW.js → chunk-C6ONUJIO.js} +1 -1
- package/dist/{chunk-CZOVEX2D.js → chunk-CR3G2JQP.js} +1 -1
- package/dist/{chunk-2PU2TSUG.js → chunk-D5E5XFHK.js} +1 -1
- package/dist/{chunk-D2EG7J7X.js → chunk-DFB7UFZD.js} +1 -1
- package/dist/{chunk-FSEB4LSU.js → chunk-FYMXVYWS.js} +1 -1
- package/dist/{chunk-6WQHVYJD.js → chunk-G7ZSFSQG.js} +1 -1
- package/dist/{chunk-5ZQLMPDY.js → chunk-GAACUQAB.js} +1 -1
- package/dist/{chunk-3I43W7DP.js → chunk-GZMKTLO3.js} +52 -21
- package/dist/{chunk-QVBUYWW6.js → chunk-Q2FWFTDZ.js} +1 -1
- package/dist/{chunk-MBSQKRDF.js → chunk-QCGT3M7M.js} +2 -2
- package/dist/{chunk-KMDZDH5E.js → chunk-QCJUGKRC.js} +4 -4
- package/dist/{chunk-Z6NY6MCL.js → chunk-RMLGMYEJ.js} +1 -1
- package/dist/{chunk-IHXMBXXL.js → chunk-SIGKJOSF.js} +30 -4
- package/dist/{chunk-5JCLZPMV.js → chunk-T7WKIMTB.js} +63 -44
- package/dist/{chunk-ACURZCPN.js → chunk-UKKY7HWN.js} +1 -1
- package/dist/{chunk-2M65KQNG.js → chunk-V6GL37RZ.js} +394 -54
- package/dist/{chunk-CV3QQUMK.js → chunk-VKZTGD5Z.js} +128 -5
- package/dist/{chunk-JWW54N24.js → chunk-VYSBZUXZ.js} +1 -1
- package/dist/{chunk-3OG2674K.js → chunk-ZDE5S3DE.js} +1 -1
- package/dist/component-runtime/render.js +2 -2
- package/dist/component-runtime.js +3 -3
- package/dist/compose.js +5 -5
- package/dist/composition/fonts.js +1 -1
- package/dist/composition/graphics-plan.js +3 -3
- package/dist/composition/ops.js +4 -4
- package/dist/composition/projection.js +3 -3
- package/dist/composition/validators.js +13 -3
- package/dist/composition-ops.js +8 -8
- package/dist/composition.js +15 -5
- package/dist/{context-2MBCDTCZ.js → context-I7SPXR2Z.js} +5 -5
- package/dist/core/render.js +4 -4
- package/dist/core.js +4 -4
- package/dist/mcp/adapter.js +2 -2
- package/dist/mcp/core.js +1 -1
- package/dist/mcp/scene-shot.js +2 -2
- package/dist/mcp/server.js +12 -12
- package/dist/mcp.js +12 -12
- package/dist/primitives/captions.js +276 -44
- package/dist/primitives/effects.js +3 -3
- package/dist/primitives/layouts.js +3 -3
- package/dist/primitives/lib/text/marker.js +1 -1
- package/dist/primitives/scenes.js +3 -3
- package/dist/primitives.js +5 -5
- package/dist/render-harness/cardFonts.js +2 -2
- package/dist/render-harness.js +7 -7
- package/package.json +10 -10
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Composition
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VKZTGD5Z.js";
|
|
4
4
|
import {
|
|
5
5
|
expandToLinkGroup
|
|
6
6
|
} from "./chunk-KYRDKK2D.js";
|
|
7
7
|
|
|
8
8
|
// ../composition/src/ops/compositionOps.shared.ts
|
|
9
|
+
var TIMELINE_BOUNDARY_EPSILON_SECONDS = 1e-9;
|
|
9
10
|
function findOrCreateTrackByKind(composition, kind) {
|
|
10
11
|
const existing = composition.tracks.find((t) => t.kind === kind);
|
|
11
12
|
if (existing) return existing;
|
|
@@ -67,8 +68,8 @@ function trimSourceFor(source, clipRelStart, clipRelEnd, clipDuration) {
|
|
|
67
68
|
for (let i = 0; i < playable.length; i++) {
|
|
68
69
|
const span = playable[i];
|
|
69
70
|
const length = span.end - span.start;
|
|
70
|
-
if (remaining < length -
|
|
71
|
-
if (Math.abs(remaining - length) <=
|
|
71
|
+
if (remaining < length - TIMELINE_BOUNDARY_EPSILON_SECONDS) return span.start + remaining;
|
|
72
|
+
if (Math.abs(remaining - length) <= TIMELINE_BOUNDARY_EPSILON_SECONDS) {
|
|
72
73
|
return edge === "start" && playable[i + 1] ? playable[i + 1].start : span.end;
|
|
73
74
|
}
|
|
74
75
|
remaining -= length;
|
|
@@ -132,6 +133,56 @@ function pruneSelectionInDraft(draft, removedClipIds) {
|
|
|
132
133
|
draft.selectedOverlayId = patch.selectedOverlayId;
|
|
133
134
|
}
|
|
134
135
|
|
|
136
|
+
// ../composition/src/ops/captionOps.ts
|
|
137
|
+
function createCaptionOps(set) {
|
|
138
|
+
return {
|
|
139
|
+
setCaptionStyle: (style) => {
|
|
140
|
+
set((draft) => {
|
|
141
|
+
const clean = Object.fromEntries(
|
|
142
|
+
Object.entries(style).filter(([, v]) => v !== void 0)
|
|
143
|
+
);
|
|
144
|
+
if (Object.keys(clean).length === 0) return;
|
|
145
|
+
const existing = draft.composition.captions;
|
|
146
|
+
if (existing) {
|
|
147
|
+
existing.style = { ...existing.style ?? {}, ...clean };
|
|
148
|
+
} else {
|
|
149
|
+
draft.composition.captions = { source: "authored", segments: [], style: clean };
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
},
|
|
153
|
+
setCaptionLayouts: (layouts) => {
|
|
154
|
+
set((draft) => {
|
|
155
|
+
if (!draft.composition.captions) throw new Error("setCaptionLayouts requires saved transcript captions");
|
|
156
|
+
if (layouts.length === 0) delete draft.composition.captions.layouts;
|
|
157
|
+
else draft.composition.captions.layouts = layouts;
|
|
158
|
+
});
|
|
159
|
+
},
|
|
160
|
+
setCaptionDepth: (zPlane) => {
|
|
161
|
+
set((draft) => {
|
|
162
|
+
const existing = draft.composition.captions;
|
|
163
|
+
if (!existing) return;
|
|
164
|
+
if (zPlane === "front") {
|
|
165
|
+
delete existing.zPlane;
|
|
166
|
+
} else {
|
|
167
|
+
existing.zPlane = zPlane;
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
},
|
|
171
|
+
setCaptions: (segments, style, derivedFrom) => {
|
|
172
|
+
set((draft) => {
|
|
173
|
+
const existing = draft.composition.captions;
|
|
174
|
+
const mergedStyle = style ? {
|
|
175
|
+
...existing?.style ?? {},
|
|
176
|
+
...Object.fromEntries(Object.entries(style).filter(([, v]) => v !== void 0))
|
|
177
|
+
} : existing?.style;
|
|
178
|
+
const styleField = mergedStyle && Object.keys(mergedStyle).length > 0 ? { style: mergedStyle } : {};
|
|
179
|
+
const depthField = existing?.zPlane ? { zPlane: existing.zPlane } : {};
|
|
180
|
+
draft.composition.captions = derivedFrom ? { source: "derived", from: derivedFrom, segments, ...styleField, ...depthField } : { source: "authored", segments, ...styleField, ...depthField };
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
|
|
135
186
|
// ../composition/src/ops/compositionOps.ts
|
|
136
187
|
function createCompositionOps(get, set) {
|
|
137
188
|
return {
|
|
@@ -447,6 +498,7 @@ function createCompositionOps(get, set) {
|
|
|
447
498
|
if (!Number.isFinite(start) || !Number.isFinite(end) || start >= end) return;
|
|
448
499
|
const span = end - start;
|
|
449
500
|
set((draft) => {
|
|
501
|
+
if (draft.composition.captions) delete draft.composition.captions.layouts;
|
|
450
502
|
for (const track of draft.composition.tracks) {
|
|
451
503
|
const next = [];
|
|
452
504
|
for (const item of track.contents) {
|
|
@@ -457,20 +509,20 @@ function createCompositionOps(get, set) {
|
|
|
457
509
|
const c = item;
|
|
458
510
|
const cs = c.startTime;
|
|
459
511
|
const ce = c.startTime + c.duration;
|
|
460
|
-
if (ce <= start) {
|
|
512
|
+
if (ce <= start + TIMELINE_BOUNDARY_EPSILON_SECONDS) {
|
|
461
513
|
next.push(c);
|
|
462
514
|
continue;
|
|
463
515
|
}
|
|
464
|
-
if (cs >= end) {
|
|
516
|
+
if (cs >= end - TIMELINE_BOUNDARY_EPSILON_SECONDS) {
|
|
465
517
|
next.push({ ...c, startTime: Math.max(0, cs - span) });
|
|
466
518
|
continue;
|
|
467
519
|
}
|
|
468
|
-
if (cs < start) {
|
|
520
|
+
if (cs < start - TIMELINE_BOUNDARY_EPSILON_SECONDS) {
|
|
469
521
|
const leftDuration = start - cs;
|
|
470
522
|
const leftSource = trimSourceFor(c.source, 0, leftDuration, c.duration);
|
|
471
523
|
next.push({ ...c, id: c.id, duration: leftDuration, source: leftSource });
|
|
472
524
|
}
|
|
473
|
-
if (ce > end) {
|
|
525
|
+
if (ce > end + TIMELINE_BOUNDARY_EPSILON_SECONDS) {
|
|
474
526
|
const rightDuration = ce - end;
|
|
475
527
|
const sourceOffsetIntoOriginal = end - cs;
|
|
476
528
|
const rightSource = trimSourceFor(
|
|
@@ -581,6 +633,7 @@ function createCompositionOps(get, set) {
|
|
|
581
633
|
});
|
|
582
634
|
}
|
|
583
635
|
if (draft.composition.captions) {
|
|
636
|
+
delete draft.composition.captions.layouts;
|
|
584
637
|
for (const seg of draft.composition.captions.segments) {
|
|
585
638
|
seg.words = seg.words.flatMap((w) => {
|
|
586
639
|
const r = cutTimedRange(w.startMs, w.endMs, tStart * 1e3, tEnd * 1e3);
|
|
@@ -631,6 +684,7 @@ function createCompositionOps(get, set) {
|
|
|
631
684
|
}
|
|
632
685
|
}
|
|
633
686
|
if (draft.composition.captions) {
|
|
687
|
+
delete draft.composition.captions.layouts;
|
|
634
688
|
for (const segment of draft.composition.captions.segments) {
|
|
635
689
|
for (const word of segment.words) {
|
|
636
690
|
const shifted = shiftTimedRange(word.startMs, word.endMs, insertAt * 1e3, restored * 1e3);
|
|
@@ -667,45 +721,10 @@ function createCompositionOps(get, set) {
|
|
|
667
721
|
}
|
|
668
722
|
});
|
|
669
723
|
},
|
|
670
|
-
|
|
671
|
-
set((draft) => {
|
|
672
|
-
const clean = Object.fromEntries(
|
|
673
|
-
Object.entries(style).filter(([, v]) => v !== void 0)
|
|
674
|
-
);
|
|
675
|
-
if (Object.keys(clean).length === 0) return;
|
|
676
|
-
const existing = draft.composition.captions;
|
|
677
|
-
if (existing) {
|
|
678
|
-
existing.style = { ...existing.style ?? {}, ...clean };
|
|
679
|
-
} else {
|
|
680
|
-
draft.composition.captions = { source: "authored", segments: [], style: clean };
|
|
681
|
-
}
|
|
682
|
-
});
|
|
683
|
-
},
|
|
684
|
-
setCaptionDepth: (zPlane) => {
|
|
685
|
-
set((draft) => {
|
|
686
|
-
const existing = draft.composition.captions;
|
|
687
|
-
if (!existing) return;
|
|
688
|
-
if (zPlane === "front") {
|
|
689
|
-
delete existing.zPlane;
|
|
690
|
-
} else {
|
|
691
|
-
existing.zPlane = zPlane;
|
|
692
|
-
}
|
|
693
|
-
});
|
|
694
|
-
},
|
|
695
|
-
setCaptions: (segments, style, derivedFrom) => {
|
|
696
|
-
set((draft) => {
|
|
697
|
-
const existing = draft.composition.captions;
|
|
698
|
-
const mergedStyle = style ? {
|
|
699
|
-
...existing?.style ?? {},
|
|
700
|
-
...Object.fromEntries(Object.entries(style).filter(([, v]) => v !== void 0))
|
|
701
|
-
} : existing?.style;
|
|
702
|
-
const styleField = mergedStyle && Object.keys(mergedStyle).length > 0 ? { style: mergedStyle } : {};
|
|
703
|
-
const depthField = existing?.zPlane ? { zPlane: existing.zPlane } : {};
|
|
704
|
-
draft.composition.captions = derivedFrom ? { source: "derived", from: derivedFrom, segments, ...styleField, ...depthField } : { source: "authored", segments, ...styleField, ...depthField };
|
|
705
|
-
});
|
|
706
|
-
},
|
|
724
|
+
...createCaptionOps(set),
|
|
707
725
|
ripple: (time, amount) => {
|
|
708
726
|
set((draft) => {
|
|
727
|
+
if (draft.composition.captions) delete draft.composition.captions.layouts;
|
|
709
728
|
for (const track of draft.composition.tracks) {
|
|
710
729
|
for (const item of track.contents) {
|
|
711
730
|
if (!("source" in item)) continue;
|