@cueframe/kernel 0.2.53 → 0.2.55
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/ops/compositionOps.shared.d.ts +1 -0
- package/dist/_members/composition/validators/composition.d.ts +144 -0
- package/dist/_members/composition/validators/render.d.ts +72 -0
- package/dist/_members/composition-ops/index.d.ts +27 -0
- package/dist/_members/core/render/compositionAudioAndDepth.d.ts +2 -1
- package/dist/_members/primitives/lib/text/marker.d.ts +2 -0
- package/dist/_members/primitives/lib/text/spec.d.ts +3 -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-6RWIPDJ3.js +76 -0
- package/dist/{chunk-UKKY7HWN.js → chunk-BDFAA747.js} +1 -1
- package/dist/{chunk-2BVKNYRB.js → chunk-BEFSJMFF.js} +1 -1
- package/dist/{chunk-5E4YP44R.js → chunk-E2LKX6C4.js} +1 -1
- package/dist/{chunk-4DM63RTI.js → chunk-EGIVPZCJ.js} +4 -4
- package/dist/{chunk-LPUQTBKU.js → chunk-EYQMFL53.js} +21 -11
- package/dist/{chunk-D5E5XFHK.js → chunk-FHMTAZD4.js} +1 -1
- package/dist/{chunk-G7ZSFSQG.js → chunk-FOST4XYJ.js} +1 -1
- package/dist/{chunk-AONWKKXK.js → chunk-HGCYZMII.js} +1 -1
- package/dist/{chunk-TPKPU4PE.js → chunk-LBJ5LI5V.js} +8 -7
- package/dist/{chunk-P3DYA5NA.js → chunk-NEZHGYZL.js} +8 -8
- package/dist/{chunk-7RGDRDAR.js → chunk-OOL7ZUG7.js} +1 -1
- package/dist/{chunk-CR3G2JQP.js → chunk-PTVTWQ4T.js} +1 -1
- package/dist/{chunk-GAACUQAB.js → chunk-SQ4XTSIN.js} +4 -4
- package/dist/{chunk-RMLGMYEJ.js → chunk-TLOYCCCI.js} +1 -1
- package/dist/{chunk-UFNIB3JL.js → chunk-UFD4EZHM.js} +14 -2
- package/dist/{chunk-C6ONUJIO.js → chunk-UKDBU7HM.js} +5 -5
- package/dist/{chunk-ZIPGDGBR.js → chunk-UMXES6ED.js} +1 -1
- package/dist/{chunk-46DGDPXR.js → chunk-V6GL37RZ.js} +98 -7
- package/dist/{chunk-CJMUTCJW.js → chunk-VDNMCD6S.js} +2 -2
- package/dist/{chunk-ZFW35DLG.js → chunk-VYSBZUXZ.js} +1 -1
- package/dist/{chunk-VTM7NEJC.js → chunk-VZOAELFF.js} +4 -4
- package/dist/{chunk-7AUHC2X7.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 +24 -24
- 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 +3 -3
- package/dist/composition-ops.js +9 -9
- package/dist/composition.js +5 -5
- package/dist/{context-UAS5WJRB.js → context-O2HHUVSA.js} +5 -5
- package/dist/core/render.js +5 -5
- package/dist/core.js +5 -5
- 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 +13 -13
- package/dist/mcp.js +18 -18
- package/dist/primitives/captions.js +118 -47
- package/dist/primitives/effects.js +4 -4
- package/dist/primitives/hero-text.js +2 -2
- package/dist/primitives/layouts.js +3 -3
- package/dist/primitives/lib/index.js +6 -6
- package/dist/primitives/lib/text/marker.js +6 -3
- package/dist/primitives/lib.js +6 -6
- package/dist/primitives/scenes.js +4 -4
- package/dist/primitives/text.js +2 -2
- package/dist/primitives/ui-blocks.js +4 -4
- package/dist/primitives.js +23 -23
- package/dist/render-harness/cardFonts.js +2 -2
- package/dist/render-harness.js +13 -13
- package/package.json +11 -11
- package/dist/chunk-D2EG7J7X.js +0 -31
- package/dist/{chunk-VLJOIUHL.js → chunk-B3GSTQLR.js} +6 -6
- package/dist/{chunk-X34KW2SL.js → chunk-RBWS5XHE.js} +4 -4
- package/dist/{chunk-7SQOXIWR.js → chunk-RL5SO653.js} +3 -3
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { TextMarker } from './spec.js';
|
|
2
|
+
/** Stable, fully closed circle or bounded underline; independent of render frame/order. */
|
|
3
|
+
export declare function pencilMarkerPaths(kind: TextMarker['kind'], seed?: string | number): string[];
|
|
2
4
|
export declare function Marker({ spec, progress }: {
|
|
3
5
|
spec: TextMarker;
|
|
4
6
|
progress: number;
|
package/dist/animate.js
CHANGED
|
@@ -102,7 +102,7 @@ import {
|
|
|
102
102
|
useStage,
|
|
103
103
|
weightsAt,
|
|
104
104
|
worldTransform
|
|
105
|
-
} from "./chunk-
|
|
105
|
+
} from "./chunk-FHMTAZD4.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-
|
|
188
|
+
import "./chunk-OOL7ZUG7.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-
|
|
8
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-E2LKX6C4.js";
|
|
8
|
+
import "../chunk-EGIVPZCJ.js";
|
|
9
9
|
import "../chunk-JOURGVOR.js";
|
|
10
10
|
import "../chunk-7AZLFN26.js";
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-LBJ5LI5V.js";
|
|
12
|
+
import "../chunk-VDNMCD6S.js";
|
|
13
|
+
import "../chunk-UFD4EZHM.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-
|
|
19
|
+
import "../chunk-OOL7ZUG7.js";
|
|
20
20
|
import "../chunk-2ESYSVXG.js";
|
|
21
21
|
export {
|
|
22
22
|
ZERO_USAGE,
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildDirectorContext
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-UMXES6ED.js";
|
|
4
|
+
import "../chunk-LBJ5LI5V.js";
|
|
5
|
+
import "../chunk-VDNMCD6S.js";
|
|
6
|
+
import "../chunk-UFD4EZHM.js";
|
|
7
7
|
import "../chunk-WPZKOVYF.js";
|
|
8
8
|
import "../chunk-B7J5UUUV.js";
|
|
9
9
|
import "../chunk-KYRDKK2D.js";
|
|
10
10
|
import "../chunk-WREYUH2E.js";
|
|
11
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-OOL7ZUG7.js";
|
|
12
12
|
import "../chunk-2ESYSVXG.js";
|
|
13
13
|
export {
|
|
14
14
|
buildDirectorContext
|
package/dist/authoring/tools.js
CHANGED
|
@@ -6,18 +6,18 @@ import {
|
|
|
6
6
|
COMPOSE_ROLE_TOOLS,
|
|
7
7
|
COMPOSE_ROLE_TOOL_NAMES,
|
|
8
8
|
dispatchComposeRoleTool
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-EGIVPZCJ.js";
|
|
10
10
|
import "../chunk-JOURGVOR.js";
|
|
11
11
|
import "../chunk-7AZLFN26.js";
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
12
|
+
import "../chunk-LBJ5LI5V.js";
|
|
13
|
+
import "../chunk-VDNMCD6S.js";
|
|
14
|
+
import "../chunk-UFD4EZHM.js";
|
|
15
15
|
import "../chunk-WPZKOVYF.js";
|
|
16
16
|
import "../chunk-B7J5UUUV.js";
|
|
17
17
|
import "../chunk-KYRDKK2D.js";
|
|
18
18
|
import "../chunk-WREYUH2E.js";
|
|
19
19
|
import "../chunk-7PA7FGLD.js";
|
|
20
|
-
import "../chunk-
|
|
20
|
+
import "../chunk-OOL7ZUG7.js";
|
|
21
21
|
import "../chunk-2ESYSVXG.js";
|
|
22
22
|
export {
|
|
23
23
|
COMPOSE_MOTION_TOOLS,
|
package/dist/authoring.js
CHANGED
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
buildPlannerTools,
|
|
12
12
|
buildToolsFromSchemas,
|
|
13
13
|
extractProviderError
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-E2LKX6C4.js";
|
|
15
15
|
import {
|
|
16
16
|
COMPOSE_MOTION_TOOLS,
|
|
17
17
|
COMPOSE_MOTION_VERIFY_TOOLS,
|
|
@@ -20,14 +20,14 @@ import {
|
|
|
20
20
|
COMPOSE_ROLE_TOOLS,
|
|
21
21
|
COMPOSE_ROLE_TOOL_NAMES,
|
|
22
22
|
dispatchComposeRoleTool
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-EGIVPZCJ.js";
|
|
24
24
|
import {
|
|
25
25
|
AgentFixableCaptureError,
|
|
26
26
|
getExcludedTools
|
|
27
27
|
} from "./chunk-JOURGVOR.js";
|
|
28
28
|
import {
|
|
29
29
|
buildDirectorContext
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-UMXES6ED.js";
|
|
31
31
|
import {
|
|
32
32
|
buildFastModel,
|
|
33
33
|
buildModel,
|
|
@@ -49,16 +49,16 @@ import {
|
|
|
49
49
|
initCodeGenPrompts
|
|
50
50
|
} from "./chunk-Y4HPN4BC.js";
|
|
51
51
|
import "./chunk-7AZLFN26.js";
|
|
52
|
-
import "./chunk-
|
|
53
|
-
import "./chunk-
|
|
54
|
-
import "./chunk-
|
|
52
|
+
import "./chunk-LBJ5LI5V.js";
|
|
53
|
+
import "./chunk-VDNMCD6S.js";
|
|
54
|
+
import "./chunk-UFD4EZHM.js";
|
|
55
55
|
import "./chunk-WPZKOVYF.js";
|
|
56
56
|
import "./chunk-B7J5UUUV.js";
|
|
57
57
|
import "./chunk-KYRDKK2D.js";
|
|
58
|
-
import "./chunk-
|
|
58
|
+
import "./chunk-FOST4XYJ.js";
|
|
59
59
|
import {
|
|
60
60
|
cssLayoutVars
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-TLOYCCCI.js";
|
|
62
62
|
import "./chunk-WREYUH2E.js";
|
|
63
63
|
import "./chunk-ILO4NEZ3.js";
|
|
64
64
|
import "./chunk-E63UEO5C.js";
|
|
@@ -69,7 +69,7 @@ import {
|
|
|
69
69
|
isSceneShotClip
|
|
70
70
|
} from "./chunk-CL5Y6V6K.js";
|
|
71
71
|
import "./chunk-2L7PYYJK.js";
|
|
72
|
-
import "./chunk-
|
|
72
|
+
import "./chunk-OOL7ZUG7.js";
|
|
73
73
|
import "./chunk-2ESYSVXG.js";
|
|
74
74
|
|
|
75
75
|
// ../authoring/src/agent.ts
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SeededPRNG
|
|
3
|
+
} from "./chunk-GULDS3VE.js";
|
|
4
|
+
|
|
5
|
+
// ../execution/primitives/src/lib/text/marker.tsx
|
|
6
|
+
var CLEAN_UNDERLINE = "M 3,82 C 26,90 56,92 97,76";
|
|
7
|
+
var CLEAN_CIRCLE = "M 13,52 C 9,28 35,12 57,13 C 83,14 96,30 93,52 C 90,73 67,88 45,86 C 25,84 8,72 11,52 C 12,45 16,37 21,33";
|
|
8
|
+
function hashSeed(seed) {
|
|
9
|
+
let hash = 2166136261;
|
|
10
|
+
for (const char of String(seed)) {
|
|
11
|
+
hash ^= char.charCodeAt(0);
|
|
12
|
+
hash = Math.imul(hash, 16777619);
|
|
13
|
+
}
|
|
14
|
+
return hash >>> 0 || 1;
|
|
15
|
+
}
|
|
16
|
+
function pencilMarkerPaths(kind, seed = kind) {
|
|
17
|
+
return [0, 1, 2].map((layer) => {
|
|
18
|
+
const random = new SeededPRNG(hashSeed(`${seed}:${kind}:${layer}`));
|
|
19
|
+
if (kind === "underline") {
|
|
20
|
+
const points2 = Array.from({ length: 49 }, (_, index) => {
|
|
21
|
+
const t = index / 48;
|
|
22
|
+
const x = 3 + 94 * t;
|
|
23
|
+
const y = 82 + 8 * Math.sin(Math.PI * t) - 6 * t + (random.next() - 0.5) * 2.8;
|
|
24
|
+
return `${index ? "L" : "M"} ${x.toFixed(2)},${y.toFixed(2)}`;
|
|
25
|
+
});
|
|
26
|
+
return points2.join(" ");
|
|
27
|
+
}
|
|
28
|
+
const points = Array.from({ length: 96 }, (_, index) => {
|
|
29
|
+
const angle = -Math.PI / 2 + index * Math.PI * 2 / 96;
|
|
30
|
+
const jitter = (random.next() - 0.5) * 2.8;
|
|
31
|
+
const x = 52 + Math.cos(angle) * (41 + jitter);
|
|
32
|
+
const y = 50 + Math.sin(angle) * (36 + jitter);
|
|
33
|
+
return `${index ? "L" : "M"} ${x.toFixed(2)},${y.toFixed(2)}`;
|
|
34
|
+
});
|
|
35
|
+
return `${points.join(" ")} Z`;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function Marker({ spec, progress }) {
|
|
39
|
+
const p = Math.max(0, Math.min(1, progress));
|
|
40
|
+
const strokeWidth = spec.strokeWidth ?? 4;
|
|
41
|
+
const pencil = spec.texture === "pencil";
|
|
42
|
+
const grainSeed = hashSeed(spec.seed ?? spec.kind);
|
|
43
|
+
const grainId = `marker-grain-${grainSeed.toString(16)}-${spec.kind}`;
|
|
44
|
+
const paths = pencil ? pencilMarkerPaths(spec.kind, spec.seed ?? spec.kind) : [spec.kind === "underline" ? CLEAN_UNDERLINE : CLEAN_CIRCLE];
|
|
45
|
+
return /* @__PURE__ */ React.createElement(
|
|
46
|
+
"svg",
|
|
47
|
+
{
|
|
48
|
+
viewBox: "0 0 100 100",
|
|
49
|
+
preserveAspectRatio: "none",
|
|
50
|
+
style: { position: "absolute", left: "-7%", top: "-26%", width: "114%", height: "156%", overflow: "visible", pointerEvents: "none" }
|
|
51
|
+
},
|
|
52
|
+
pencil && /* @__PURE__ */ React.createElement("defs", null, /* @__PURE__ */ React.createElement("filter", { id: grainId, x: "0", y: "0", width: "100", height: "100", filterUnits: "userSpaceOnUse", primitiveUnits: "userSpaceOnUse", colorInterpolationFilters: "sRGB" }, /* @__PURE__ */ React.createElement("feTurbulence", { type: "fractalNoise", baseFrequency: "0.65", numOctaves: 2, seed: grainSeed % 1e5, result: "noise" }), /* @__PURE__ */ React.createElement("feColorMatrix", { in: "noise", type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.6 0 0 0 -0.8", result: "grain" }), /* @__PURE__ */ React.createElement("feComposite", { in: "SourceGraphic", in2: "grain", operator: "in" }))),
|
|
53
|
+
paths.map((path, index) => /* @__PURE__ */ React.createElement(
|
|
54
|
+
"path",
|
|
55
|
+
{
|
|
56
|
+
key: index,
|
|
57
|
+
d: path,
|
|
58
|
+
fill: "none",
|
|
59
|
+
stroke: spec.color,
|
|
60
|
+
strokeWidth: pencil ? strokeWidth * [0.72, 0.3, 0.24][index] : strokeWidth,
|
|
61
|
+
strokeOpacity: pencil ? [0.85, 0.45, 0.35][index] : void 0,
|
|
62
|
+
filter: pencil ? `url(#${grainId})` : void 0,
|
|
63
|
+
strokeLinecap: "round",
|
|
64
|
+
strokeLinejoin: "round",
|
|
65
|
+
pathLength: 1,
|
|
66
|
+
strokeDasharray: 1,
|
|
67
|
+
strokeDashoffset: 1 - p
|
|
68
|
+
}
|
|
69
|
+
))
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export {
|
|
74
|
+
pencilMarkerPaths,
|
|
75
|
+
Marker
|
|
76
|
+
};
|
|
@@ -7,13 +7,13 @@ import {
|
|
|
7
7
|
} from "./chunk-7AZLFN26.js";
|
|
8
8
|
import {
|
|
9
9
|
selectAllOverlays
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-LBJ5LI5V.js";
|
|
11
11
|
import {
|
|
12
12
|
ComposePlan
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-VDNMCD6S.js";
|
|
14
14
|
import {
|
|
15
15
|
OverlayClipSource
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-UFD4EZHM.js";
|
|
17
17
|
|
|
18
18
|
// ../authoring/src/tools/toolSets.ts
|
|
19
19
|
var COMPOSE_PLANNER_TOOLS = [
|
|
@@ -63,7 +63,7 @@ var COMPOSE_ROLE_TOOLS = Object.freeze({
|
|
|
63
63
|
schema: z.object({}),
|
|
64
64
|
metadata: { label: "Get Context" },
|
|
65
65
|
handler: async (_args, capabilities) => {
|
|
66
|
-
const { buildDirectorContext } = await import("./context-
|
|
66
|
+
const { buildDirectorContext } = await import("./context-O2HHUVSA.js");
|
|
67
67
|
return buildDirectorContext(capabilities);
|
|
68
68
|
}
|
|
69
69
|
},
|
|
@@ -3,6 +3,14 @@ import {
|
|
|
3
3
|
buildEasedZooms,
|
|
4
4
|
buildPannedCenters
|
|
5
5
|
} from "./chunk-QH3YI3ND.js";
|
|
6
|
+
import {
|
|
7
|
+
flattenCompoundClips,
|
|
8
|
+
hasCompoundClips
|
|
9
|
+
} from "./chunk-IMIUHG2E.js";
|
|
10
|
+
import {
|
|
11
|
+
compositionHasVo,
|
|
12
|
+
roleDefaultGainDb
|
|
13
|
+
} from "./chunk-VZ7TYX6Z.js";
|
|
6
14
|
import {
|
|
7
15
|
DOMINANCE_WEIGHTS,
|
|
8
16
|
ENTER_SEC,
|
|
@@ -21,17 +29,9 @@ import {
|
|
|
21
29
|
segmentShots,
|
|
22
30
|
stabilizeSelectionHysteresis
|
|
23
31
|
} from "./chunk-JPMVNMF3.js";
|
|
24
|
-
import {
|
|
25
|
-
flattenCompoundClips,
|
|
26
|
-
hasCompoundClips
|
|
27
|
-
} from "./chunk-IMIUHG2E.js";
|
|
28
|
-
import {
|
|
29
|
-
compositionHasVo,
|
|
30
|
-
roleDefaultGainDb
|
|
31
|
-
} from "./chunk-VZ7TYX6Z.js";
|
|
32
32
|
import {
|
|
33
33
|
resolveBrandRef
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-TLOYCCCI.js";
|
|
35
35
|
import {
|
|
36
36
|
SHOT_SCALE_TARGET,
|
|
37
37
|
shotScaleZoom
|
|
@@ -64,7 +64,7 @@ import {
|
|
|
64
64
|
bundledFontFaceExists,
|
|
65
65
|
mergedCaptionFaceIssues,
|
|
66
66
|
unrenderableFaceField
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-OOL7ZUG7.js";
|
|
68
68
|
|
|
69
69
|
// ../execution/core/src/render/sceneCaptureIdentity.ts
|
|
70
70
|
var INTENT_FIELDS = [
|
|
@@ -1283,6 +1283,11 @@ function coversLowerPictures(upper, lower, output, effects) {
|
|
|
1283
1283
|
return upperRect.left <= rect.left + epsilon && upperRect.top <= rect.top + epsilon && upperRect.right + epsilon >= rect.right && upperRect.bottom + epsilon >= rect.bottom;
|
|
1284
1284
|
});
|
|
1285
1285
|
}
|
|
1286
|
+
function explicitlyHidesCaptions(clip, effects) {
|
|
1287
|
+
if (!clip || clip.captionVisibility !== "hidden" || clip.mediaType === "image") return false;
|
|
1288
|
+
const region = clip.region;
|
|
1289
|
+
return !!region && region.x === 0 && region.y === 0 && region.w === 1 && region.h === 1 && (clip.opacity ?? 1) === 1 && (clip.scale ?? 1) === 1 && (clip.rotation ?? 0) === 0 && !clip.animate && !clip.cropTrajectory && !clip.cropTrajectoryUrl && !clip.hasCropIntent && !hasClipEffect(clip, effects) && !clip.hasTransition && (!clip.transitionIn || clip.transitionIn === "none");
|
|
1290
|
+
}
|
|
1286
1291
|
function visiblePackedHostWindows(clips, startFrame, endFrame, output, effects = [], hostMode = "packed-only") {
|
|
1287
1292
|
if (endFrame <= startFrame) return [];
|
|
1288
1293
|
const boundaries = /* @__PURE__ */ new Set([startFrame, endFrame]);
|
|
@@ -1318,7 +1323,7 @@ function visiblePackedHostWindows(clips, startFrame, endFrame, output, effects =
|
|
|
1318
1323
|
effects
|
|
1319
1324
|
));
|
|
1320
1325
|
const suppressesCaption = provesOcclusion && !globalEffectActive && pictureRect(top[0], output, effects) !== void 0;
|
|
1321
|
-
const captionVisible = !(suppressesCaption && top[0].captionVisibility === "hidden");
|
|
1326
|
+
const captionVisible = !(top.length === 1 && !globalEffectActive && (suppressesCaption && top[0].captionVisibility === "hidden" || explicitlyHidesCaptions(top[0], effects)));
|
|
1322
1327
|
const candidateHost = (clip) => hostMode === "all-video-candidates" ? clip.mediaType !== "image" : !!clip.packedUrl;
|
|
1323
1328
|
const host = provesOcclusion && candidateHost(top[0]) ? top[0] : void 0;
|
|
1324
1329
|
const unresolvedOverlap = top.length > 1 || top.length === 1 && active.length > 1 && !provesOcclusion;
|
|
@@ -1890,6 +1895,11 @@ function captionVisibilityWindowsForComposition(composition, sourceDimensions) {
|
|
|
1890
1895
|
...item.region ? { region: item.region } : {},
|
|
1891
1896
|
...item.fit ? { fit: item.fit } : {},
|
|
1892
1897
|
...track.kind === "video" && item.captionVisibility ? { captionVisibility: item.captionVisibility } : {},
|
|
1898
|
+
...item.opacity !== void 0 ? { opacity: item.opacity } : {},
|
|
1899
|
+
...item.scale !== void 0 ? { scale: item.scale } : {},
|
|
1900
|
+
...item.rotation !== void 0 ? { rotation: item.rotation } : {},
|
|
1901
|
+
...item.animate !== void 0 ? { animate: item.animate } : {},
|
|
1902
|
+
...spanIndex === 0 && item.transitionIn?.type !== void 0 && item.transitionIn.type !== "cut" && item.transitionIn.type !== "none" ? { hasTransition: true } : {},
|
|
1893
1903
|
...item.source.reframe?.segments.length ? { hasCropIntent: true } : {},
|
|
1894
1904
|
...item.effects?.length ? { hasClipEffects: true } : {}
|
|
1895
1905
|
});
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Composition
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UFD4EZHM.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;
|
|
@@ -508,20 +509,20 @@ function createCompositionOps(get, set) {
|
|
|
508
509
|
const c = item;
|
|
509
510
|
const cs = c.startTime;
|
|
510
511
|
const ce = c.startTime + c.duration;
|
|
511
|
-
if (ce <= start) {
|
|
512
|
+
if (ce <= start + TIMELINE_BOUNDARY_EPSILON_SECONDS) {
|
|
512
513
|
next.push(c);
|
|
513
514
|
continue;
|
|
514
515
|
}
|
|
515
|
-
if (cs >= end) {
|
|
516
|
+
if (cs >= end - TIMELINE_BOUNDARY_EPSILON_SECONDS) {
|
|
516
517
|
next.push({ ...c, startTime: Math.max(0, cs - span) });
|
|
517
518
|
continue;
|
|
518
519
|
}
|
|
519
|
-
if (cs < start) {
|
|
520
|
+
if (cs < start - TIMELINE_BOUNDARY_EPSILON_SECONDS) {
|
|
520
521
|
const leftDuration = start - cs;
|
|
521
522
|
const leftSource = trimSourceFor(c.source, 0, leftDuration, c.duration);
|
|
522
523
|
next.push({ ...c, id: c.id, duration: leftDuration, source: leftSource });
|
|
523
524
|
}
|
|
524
|
-
if (ce > end) {
|
|
525
|
+
if (ce > end + TIMELINE_BOUNDARY_EPSILON_SECONDS) {
|
|
525
526
|
const rightDuration = ce - end;
|
|
526
527
|
const sourceOffsetIntoOriginal = end - cs;
|
|
527
528
|
const rightSource = trimSourceFor(
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
SCENE_SHOT_RESOURCE_DESCRIPTION,
|
|
3
|
-
SCENE_SHOT_RESOURCE_URI,
|
|
4
|
-
sceneShotContract
|
|
5
|
-
} from "./chunk-7AUHC2X7.js";
|
|
6
1
|
import {
|
|
7
2
|
querySchemaShape,
|
|
8
3
|
serializeQuery,
|
|
9
4
|
waitForJob
|
|
10
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-VYSBZUXZ.js";
|
|
11
6
|
import {
|
|
12
7
|
CURATED_TOOLS
|
|
13
8
|
} from "./chunk-4WBSXHQA.js";
|
|
9
|
+
import {
|
|
10
|
+
SCENE_SHOT_RESOURCE_DESCRIPTION,
|
|
11
|
+
SCENE_SHOT_RESOURCE_URI,
|
|
12
|
+
sceneShotContract
|
|
13
|
+
} from "./chunk-ZDE5S3DE.js";
|
|
14
14
|
import {
|
|
15
15
|
GENERATED_OPERATIONS,
|
|
16
16
|
apiErrorFrom,
|
|
@@ -28,10 +28,10 @@ import {
|
|
|
28
28
|
text,
|
|
29
29
|
textWithData,
|
|
30
30
|
withMedia
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-V6GL37RZ.js";
|
|
32
32
|
import {
|
|
33
33
|
CompositionOp
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-VZOAELFF.js";
|
|
35
35
|
|
|
36
36
|
// ../mcp/src/prompts.ts
|
|
37
37
|
var skillListCache = null;
|
|
@@ -41,7 +41,7 @@ var BUNDLED_FONT_FACES = Object.freeze({
|
|
|
41
41
|
},
|
|
42
42
|
"Playfair Display": {
|
|
43
43
|
slug: "playfair-display",
|
|
44
|
-
faces: [{ weight: "400 900", file: "400" }],
|
|
44
|
+
faces: [{ weight: "400 900", file: "400" }, { weight: "400 900", file: "400-italic", style: "italic" }],
|
|
45
45
|
captionDefaults: { base: 600, emphasis: 800 }
|
|
46
46
|
},
|
|
47
47
|
"Bricolage Grotesque": {
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
} from "./chunk-W2245F6G.js";
|
|
25
25
|
import {
|
|
26
26
|
FlexLayout
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-FHMTAZD4.js";
|
|
28
28
|
|
|
29
29
|
// ../execution/primitives/src/layouts/chat-to-preview-layout/index.tsx
|
|
30
30
|
import { Easing, interpolate, useCurrentFrame, useVideoConfig } from "remotion";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
EASING_BY_INTENT
|
|
3
|
-
} from "./chunk-MFHXCHRI.js";
|
|
4
1
|
import {
|
|
5
2
|
FitText
|
|
6
3
|
} from "./chunk-XHGZ2E77.js";
|
|
4
|
+
import {
|
|
5
|
+
EASING_BY_INTENT
|
|
6
|
+
} from "./chunk-MFHXCHRI.js";
|
|
7
7
|
import {
|
|
8
8
|
ACCENT,
|
|
9
9
|
ACCENT_STRONG,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
perspectiveFor,
|
|
27
27
|
resolveCamera,
|
|
28
28
|
useStage
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-FHMTAZD4.js";
|
|
30
30
|
|
|
31
31
|
// ../execution/primitives/src/effects/blur/index.tsx
|
|
32
32
|
import React2 from "react";
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-B7J5UUUV.js";
|
|
4
4
|
import {
|
|
5
5
|
captionFaceIssues
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-OOL7ZUG7.js";
|
|
7
7
|
|
|
8
8
|
// ../composition/src/validators/opaqueId.ts
|
|
9
9
|
import { z } from "zod";
|
|
@@ -170,7 +170,7 @@ var TimelineClip = z2.object({
|
|
|
170
170
|
region: Region.optional(),
|
|
171
171
|
fit: ClipFit.optional(),
|
|
172
172
|
captionVisibility: CaptionVisibility.optional().describe(
|
|
173
|
-
"Video media clip only. Hide native captions while this clip is the
|
|
173
|
+
"Video media clip only. Hide native captions while this clip is topmost and covers the lower picture, or when an opaque, effect-free clip has an explicitly full-frame region, even with fit:contain. Caption words and timings remain stored and resume when another visible clip takes over."
|
|
174
174
|
),
|
|
175
175
|
effects: z2.array(PerClipEffect).optional(),
|
|
176
176
|
transitionIn: Transition.optional(),
|
|
@@ -267,6 +267,9 @@ var CaptionStyle = z2.object({
|
|
|
267
267
|
"Optional caption layout box {x,y,w,h} in normalized output-frame coordinates. Overrides position; text starts at its top edge and wraps/pages within its width and height."
|
|
268
268
|
),
|
|
269
269
|
textTransform: z2.enum(["none", "uppercase", "capitalize"]).optional(),
|
|
270
|
+
letterSpacing: z2.number().min(-5).max(20).optional().describe("Base caption glyph spacing in pixels."),
|
|
271
|
+
wordGapEm: z2.number().min(0).max(2).optional().describe("Gap between caption runs as a multiple of base font size; default 0.35."),
|
|
272
|
+
lineGapEm: z2.number().min(0).max(2).optional().describe("Gap between caption lines as a multiple of base font size; default 0.25."),
|
|
270
273
|
emphasisColor: z2.string().optional(),
|
|
271
274
|
emphasisGradient: z2.string().optional(),
|
|
272
275
|
emphasisScale: z2.number().positive().optional(),
|
|
@@ -287,7 +290,10 @@ var CaptionStyle = z2.object({
|
|
|
287
290
|
emphasisPlateRadius: z2.number().nonnegative().optional(),
|
|
288
291
|
emphasisPlatePadX: z2.number().optional(),
|
|
289
292
|
emphasisPlatePadY: z2.number().optional(),
|
|
293
|
+
emphasisPlateReveal: z2.boolean().optional().describe("Grow a shared emphasis plate as saved words appear while reserving its final layout width."),
|
|
290
294
|
annotationColor: z2.string().optional(),
|
|
295
|
+
annotationStrokeWidth: z2.number().min(0.5).max(12).optional().describe("Annotation stroke width in its 100\xD7100 SVG coordinate system; default 4."),
|
|
296
|
+
annotationTexture: z2.enum(["clean", "pencil"]).optional().describe("Native annotation stroke finish; default clean."),
|
|
291
297
|
maxWidthPercent: z2.number().positive().max(100, "captions style.maxWidthPercent is % of composition width (max 100)").optional()
|
|
292
298
|
});
|
|
293
299
|
var CaptionLayoutStyle = CaptionStyle.pick({
|
|
@@ -299,6 +305,9 @@ var CaptionLayoutStyle = CaptionStyle.pick({
|
|
|
299
305
|
backgroundColor: true,
|
|
300
306
|
plate: true,
|
|
301
307
|
textTransform: true,
|
|
308
|
+
letterSpacing: true,
|
|
309
|
+
wordGapEm: true,
|
|
310
|
+
lineGapEm: true,
|
|
302
311
|
emphasisColor: true,
|
|
303
312
|
emphasisScale: true,
|
|
304
313
|
emphasisFontFamily: true,
|
|
@@ -314,7 +323,10 @@ var CaptionLayoutStyle = CaptionStyle.pick({
|
|
|
314
323
|
emphasisPlateRadius: true,
|
|
315
324
|
emphasisPlatePadX: true,
|
|
316
325
|
emphasisPlatePadY: true,
|
|
326
|
+
emphasisPlateReveal: true,
|
|
317
327
|
annotationColor: true,
|
|
328
|
+
annotationStrokeWidth: true,
|
|
329
|
+
annotationTexture: true,
|
|
318
330
|
entrance: true,
|
|
319
331
|
entranceMs: true,
|
|
320
332
|
entranceStaggerMs: true,
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
frostedGlassWipe,
|
|
3
|
+
spatialPush
|
|
4
|
+
} from "./chunk-QGAWDLYX.js";
|
|
1
5
|
import {
|
|
2
6
|
DashboardPopulate
|
|
3
7
|
} from "./chunk-S5H6GH6M.js";
|
|
@@ -7,10 +11,6 @@ import {
|
|
|
7
11
|
import {
|
|
8
12
|
EASING_BY_INTENT
|
|
9
13
|
} from "./chunk-MFHXCHRI.js";
|
|
10
|
-
import {
|
|
11
|
-
frostedGlassWipe,
|
|
12
|
-
spatialPush
|
|
13
|
-
} from "./chunk-QGAWDLYX.js";
|
|
14
14
|
import {
|
|
15
15
|
ACCENT,
|
|
16
16
|
ACCENT_SOFT,
|
|
@@ -43,7 +43,7 @@ import {
|
|
|
43
43
|
makeDefaultScreenTexture,
|
|
44
44
|
resolveCamera,
|
|
45
45
|
useImageTexture
|
|
46
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-FHMTAZD4.js";
|
|
47
47
|
import {
|
|
48
48
|
DEVICE_GLASS_OPACITY_ENCODED,
|
|
49
49
|
DeviceMesh,
|