screenwright 0.1.28 → 0.1.30

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 (43) hide show
  1. package/dist/src/composition/DemoVideo.d.ts.map +1 -1
  2. package/dist/src/composition/DemoVideo.js +15 -11
  3. package/dist/src/composition/DemoVideo.js.map +1 -1
  4. package/dist/src/composition/SceneSlide.d.ts +17 -0
  5. package/dist/src/composition/SceneSlide.d.ts.map +1 -1
  6. package/dist/src/composition/SceneSlide.js +159 -28
  7. package/dist/src/composition/SceneSlide.js.map +1 -1
  8. package/dist/src/composition/remotion-root.d.ts.map +1 -1
  9. package/dist/src/composition/remotion-root.js +5 -5
  10. package/dist/src/composition/remotion-root.js.map +1 -1
  11. package/dist/src/composition/time-remap.d.ts +17 -6
  12. package/dist/src/composition/time-remap.d.ts.map +1 -1
  13. package/dist/src/composition/time-remap.js +40 -16
  14. package/dist/src/composition/time-remap.js.map +1 -1
  15. package/dist/src/config/config-schema.d.ts +8 -0
  16. package/dist/src/config/config-schema.d.ts.map +1 -1
  17. package/dist/src/config/config-schema.js +3 -1
  18. package/dist/src/config/config-schema.js.map +1 -1
  19. package/dist/src/generator/prompts.d.ts +1 -1
  20. package/dist/src/generator/prompts.d.ts.map +1 -1
  21. package/dist/src/generator/prompts.js +9 -7
  22. package/dist/src/generator/prompts.js.map +1 -1
  23. package/dist/src/index.d.ts +3 -2
  24. package/dist/src/index.d.ts.map +1 -1
  25. package/dist/src/index.js +1 -0
  26. package/dist/src/index.js.map +1 -1
  27. package/dist/src/runtime/action-helpers.d.ts +6 -1
  28. package/dist/src/runtime/action-helpers.d.ts.map +1 -1
  29. package/dist/src/runtime/action-helpers.js +8 -2
  30. package/dist/src/runtime/action-helpers.js.map +1 -1
  31. package/dist/src/timeline/schema.d.ts +54 -0
  32. package/dist/src/timeline/schema.d.ts.map +1 -1
  33. package/dist/src/timeline/schema.js +10 -0
  34. package/dist/src/timeline/schema.js.map +1 -1
  35. package/dist/src/timeline/types.d.ts +11 -0
  36. package/dist/src/timeline/types.d.ts.map +1 -1
  37. package/dist/src/timeline/types.js +3 -1
  38. package/dist/src/timeline/types.js.map +1 -1
  39. package/dist/src/version.d.ts +1 -1
  40. package/dist/src/version.js +1 -1
  41. package/dist/tsconfig.tsbuildinfo +1 -1
  42. package/package.json +1 -1
  43. package/skill/SKILL.md +9 -7
@@ -1 +1 @@
1
- {"version":3,"file":"DemoVideo.d.ts","sourceRoot":"","sources":["../../../src/composition/DemoVideo.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAQjE,UAAU,KAAK;IACb,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAMD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA+ErC,CAAC"}
1
+ {"version":3,"file":"DemoVideo.d.ts","sourceRoot":"","sources":["../../../src/composition/DemoVideo.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAQjE,UAAU,KAAK;IACb,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAyFrC,CAAC"}
@@ -5,21 +5,18 @@ import { NarrationTrack } from './NarrationTrack.js';
5
5
  import { SceneSlide } from './SceneSlide.js';
6
6
  import { precomputeCursorPaths } from './cursor-path.js';
7
7
  import { findClosestFrame } from './frame-lookup.js';
8
- import { SLIDE_DURATION_MS, sourceTimeMs, computeSlideSegments, remapEvents } from './time-remap.js';
9
- function msToFrames(ms, fps) {
10
- return Math.round((ms / 1000) * fps);
11
- }
8
+ import { resolveSlideScenes, sourceTimeMs, computeSlideSegments, remapEvents, msToFrames } from './time-remap.js';
12
9
  export const DemoVideo = ({ timeline, branding }) => {
13
10
  const fps = 30;
14
11
  const frame = useCurrentFrame();
15
12
  const outputTimeMs = (frame / fps) * 1000;
16
13
  const scenes = timeline.events.filter((e) => e.type === 'scene');
17
- const slideDuration = branding ? SLIDE_DURATION_MS : 0;
18
- const timeMs = branding && scenes.length
19
- ? sourceTimeMs(outputTimeMs, scenes, slideDuration)
14
+ const slideScenes = resolveSlideScenes(scenes);
15
+ const timeMs = slideScenes.length > 0
16
+ ? sourceTimeMs(outputTimeMs, slideScenes)
20
17
  : outputTimeMs;
21
- const eventsToUse = branding && scenes.length
22
- ? remapEvents(timeline.events, scenes, slideDuration)
18
+ const eventsToUse = slideScenes.length > 0
19
+ ? remapEvents(timeline.events, slideScenes)
23
20
  : timeline.events;
24
21
  const cursorEvents = precomputeCursorPaths(eventsToUse.filter((e) => e.type === 'cursor_target'));
25
22
  const clickEvents = eventsToUse.filter((e) => e.type === 'action' && e.action === 'click');
@@ -36,12 +33,19 @@ export const DemoVideo = ({ timeline, branding }) => {
36
33
  else {
37
34
  throw new Error('Timeline must have either frameManifest or videoFile');
38
35
  }
39
- const slideSegments = branding ? computeSlideSegments(scenes, slideDuration) : [];
36
+ const slideSegments = computeSlideSegments(scenes);
40
37
  return (_jsxs("div", { style: {
41
38
  position: 'relative',
42
39
  width: timeline.metadata.viewport.width,
43
40
  height: timeline.metadata.viewport.height,
44
41
  overflow: 'hidden',
45
- }, children: [baseLayer, _jsx(CursorOverlay, { cursorEvents: cursorEvents, clickEvents: clickEvents, fps: fps }), _jsx(NarrationTrack, { narrations: narrations, fps: fps }), branding && slideSegments.map(seg => (_jsx(Sequence, { from: msToFrames(seg.slideStartMs, fps), durationInFrames: msToFrames(slideDuration, fps), children: _jsx(SceneSlide, { title: seg.sceneTitle, description: seg.sceneDescription, brandColor: branding.brandColor, textColor: branding.textColor, fontFamily: branding.fontFamily, durationInFrames: msToFrames(slideDuration, fps), fps: fps }) }, seg.sceneTitle)))] }));
42
+ }, children: [baseLayer, _jsx(CursorOverlay, { cursorEvents: cursorEvents, clickEvents: clickEvents, fps: fps }), _jsx(NarrationTrack, { narrations: narrations, fps: fps }), slideSegments.map(seg => {
43
+ const brandColor = seg.slideConfig.brandColor ?? branding?.brandColor ?? '#000000';
44
+ const textColor = seg.slideConfig.textColor ?? branding?.textColor ?? '#FFFFFF';
45
+ const fontFamily = seg.slideConfig.fontFamily ?? branding?.fontFamily;
46
+ const titleFontSize = seg.slideConfig.titleFontSize;
47
+ const animation = seg.slideConfig.animation ?? branding?.animation ?? 'fade';
48
+ return (_jsx(Sequence, { from: msToFrames(seg.slideStartMs, fps), durationInFrames: msToFrames(seg.slideDurationMs, fps), children: _jsx(SceneSlide, { title: seg.sceneTitle, description: seg.sceneDescription, brandColor: brandColor, textColor: textColor, fontFamily: fontFamily, titleFontSize: titleFontSize, animation: animation, durationInFrames: msToFrames(seg.slideDurationMs, fps), fps: fps }) }, `slide-${seg.slideStartMs}`));
49
+ })] }));
46
50
  };
47
51
  //# sourceMappingURL=DemoVideo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DemoVideo.js","sourceRoot":"","sources":["../../../src/composition/DemoVideo.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DemoVideo.js","sourceRoot":"","sources":["../../../src/composition/DemoVideo.tsx"],"names":[],"mappings":"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"}
@@ -1,13 +1,30 @@
1
1
  import React from 'react';
2
+ import type { SlideAnimation } from '../timeline/types.js';
2
3
  interface Props {
3
4
  title: string;
4
5
  description?: string;
5
6
  brandColor: string;
6
7
  textColor: string;
7
8
  fontFamily?: string;
9
+ titleFontSize?: number;
10
+ animation?: SlideAnimation;
8
11
  durationInFrames: number;
9
12
  fps: number;
10
13
  }
14
+ export interface AnimationValues {
15
+ bgOpacity: number;
16
+ contentOpacity: number;
17
+ contentScale: number;
18
+ translateX: number;
19
+ translateY: number;
20
+ clipPath?: string;
21
+ titleOpacity?: number;
22
+ titleTranslateY?: number;
23
+ descOpacity?: number;
24
+ descTranslateY?: number;
25
+ }
26
+ type AnimationStrategy = (frame: number, durationInFrames: number, fps: number, animFrames: number) => AnimationValues;
27
+ export declare const animationStrategies: Record<SlideAnimation, AnimationStrategy>;
11
28
  export declare const SceneSlide: React.FC<Props>;
12
29
  export {};
13
30
  //# sourceMappingURL=SceneSlide.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SceneSlide.d.ts","sourceRoot":"","sources":["../../../src/composition/SceneSlide.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAiBnD,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;CACb;AAMD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAsItC,CAAC"}
1
+ {"version":3,"file":"SceneSlide.d.ts","sourceRoot":"","sources":["../../../src/composition/SceneSlide.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAgB3D,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,KAAK,iBAAiB,GAAG,CACvB,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,MAAM,EACxB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,KACf,eAAe,CAAC;AAsJrB,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAQzE,CAAC;AAMF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAiItC,CAAC"}
@@ -1,15 +1,156 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from 'react';
3
3
  import { delayRender, continueRender, useCurrentFrame, interpolate, spring } from 'remotion';
4
+ function fadeAnimation(frame, durationInFrames, fps, animFrames) {
5
+ const inProgress = spring({ frame, fps, config: { damping: 12 }, durationInFrames: animFrames });
6
+ const inOpacity = interpolate(frame, [0, animFrames], [0, 1], { extrapolateRight: 'clamp' });
7
+ const outStart = durationInFrames - animFrames;
8
+ const outOpacity = interpolate(frame, [outStart, durationInFrames], [1, 0], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' });
9
+ const outScale = interpolate(frame, [outStart, durationInFrames], [1, 0.95], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' });
10
+ const isIn = frame < animFrames;
11
+ const isOut = frame >= outStart;
12
+ return {
13
+ bgOpacity: isOut ? outOpacity : inOpacity,
14
+ contentOpacity: isOut ? outOpacity : inOpacity,
15
+ contentScale: isIn ? interpolate(inProgress, [0, 1], [0.85, 1]) : isOut ? outScale : 1,
16
+ translateX: 0,
17
+ translateY: isIn ? interpolate(inProgress, [0, 1], [20, 0]) : 0,
18
+ };
19
+ }
20
+ function slideUpAnimation(frame, durationInFrames, fps, animFrames) {
21
+ const inProgress = spring({ frame, fps, config: { damping: 14 }, durationInFrames: animFrames });
22
+ const inOpacity = interpolate(frame, [0, animFrames], [0, 1], { extrapolateRight: 'clamp' });
23
+ const outStart = durationInFrames - animFrames;
24
+ const outOpacity = interpolate(frame, [outStart, durationInFrames], [1, 0], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' });
25
+ const isIn = frame < animFrames;
26
+ const isOut = frame >= outStart;
27
+ return {
28
+ bgOpacity: isOut ? outOpacity : inOpacity,
29
+ contentOpacity: isOut ? outOpacity : inOpacity,
30
+ contentScale: 1,
31
+ translateX: 0,
32
+ translateY: isIn
33
+ ? interpolate(inProgress, [0, 1], [800, 0])
34
+ : isOut
35
+ ? interpolate(frame, [outStart, durationInFrames], [0, 200], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' })
36
+ : 0,
37
+ };
38
+ }
39
+ function slideLeftAnimation(frame, durationInFrames, fps, animFrames) {
40
+ const inProgress = spring({ frame, fps, config: { damping: 14 }, durationInFrames: animFrames });
41
+ const inOpacity = interpolate(frame, [0, animFrames], [0, 1], { extrapolateRight: 'clamp' });
42
+ const outStart = durationInFrames - animFrames;
43
+ const outOpacity = interpolate(frame, [outStart, durationInFrames], [1, 0], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' });
44
+ const isIn = frame < animFrames;
45
+ const isOut = frame >= outStart;
46
+ return {
47
+ bgOpacity: isOut ? outOpacity : inOpacity,
48
+ contentOpacity: isOut ? outOpacity : inOpacity,
49
+ contentScale: 1,
50
+ translateX: isIn
51
+ ? interpolate(inProgress, [0, 1], [1280, 0])
52
+ : isOut
53
+ ? interpolate(frame, [outStart, durationInFrames], [0, -1280], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' })
54
+ : 0,
55
+ translateY: 0,
56
+ };
57
+ }
58
+ function zoomAnimation(frame, durationInFrames, fps, animFrames) {
59
+ const inProgress = spring({ frame, fps, config: { damping: 10 }, durationInFrames: animFrames });
60
+ const inOpacity = interpolate(frame, [0, animFrames], [0, 1], { extrapolateRight: 'clamp' });
61
+ const outStart = durationInFrames - animFrames;
62
+ const outOpacity = interpolate(frame, [outStart, durationInFrames], [1, 0], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' });
63
+ const outScale = interpolate(frame, [outStart, durationInFrames], [1, 1.5], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' });
64
+ const isIn = frame < animFrames;
65
+ const isOut = frame >= outStart;
66
+ return {
67
+ bgOpacity: isOut ? outOpacity : inOpacity,
68
+ contentOpacity: isOut ? outOpacity : inOpacity,
69
+ contentScale: isIn ? interpolate(inProgress, [0, 1], [0.3, 1]) : isOut ? outScale : 1,
70
+ translateX: 0,
71
+ translateY: 0,
72
+ };
73
+ }
74
+ function cinematicAnimation(frame, durationInFrames, fps, animFrames) {
75
+ const bgInOpacity = interpolate(frame, [0, animFrames], [0, 1], { extrapolateRight: 'clamp' });
76
+ const titleProgress = spring({ frame, fps, config: { damping: 8, mass: 1.2 }, durationInFrames: animFrames });
77
+ const descDelay = Math.round(animFrames * 0.5);
78
+ const descFrame = Math.max(0, frame - descDelay);
79
+ const descProgress = spring({ frame: descFrame, fps, config: { damping: 12 }, durationInFrames: animFrames });
80
+ const outStart = durationInFrames - animFrames;
81
+ const outOpacity = interpolate(frame, [outStart, durationInFrames], [1, 0], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' });
82
+ const isOut = frame >= outStart;
83
+ return {
84
+ bgOpacity: isOut ? outOpacity : bgInOpacity,
85
+ contentOpacity: 1,
86
+ contentScale: 1,
87
+ translateX: 0,
88
+ translateY: 0,
89
+ titleOpacity: isOut ? outOpacity : interpolate(titleProgress, [0, 1], [0, 1]),
90
+ titleTranslateY: isOut ? 0 : interpolate(titleProgress, [0, 1], [-60, 0]),
91
+ descOpacity: isOut ? outOpacity : interpolate(descProgress, [0, 1], [0, 1]),
92
+ descTranslateY: isOut ? 0 : interpolate(descProgress, [0, 1], [40, 0]),
93
+ };
94
+ }
95
+ function popAnimation(frame, durationInFrames, fps, animFrames) {
96
+ const inProgress = spring({ frame, fps, config: { damping: 6, stiffness: 200 }, durationInFrames: animFrames });
97
+ const inOpacity = interpolate(frame, [0, animFrames], [0, 1], { extrapolateRight: 'clamp' });
98
+ const outStart = durationInFrames - animFrames;
99
+ const outProgress = spring({ frame: Math.max(0, frame - outStart), fps, config: { damping: 10 }, durationInFrames: animFrames });
100
+ const outOpacity = interpolate(frame, [outStart, durationInFrames], [1, 0], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' });
101
+ const isIn = frame < animFrames;
102
+ const isOut = frame >= outStart;
103
+ return {
104
+ bgOpacity: isOut ? outOpacity : inOpacity,
105
+ contentOpacity: isOut ? outOpacity : inOpacity,
106
+ contentScale: isIn
107
+ ? interpolate(inProgress, [0, 1], [0, 1])
108
+ : isOut
109
+ ? interpolate(outProgress, [0, 1], [1, 0.8])
110
+ : 1,
111
+ translateX: 0,
112
+ translateY: 0,
113
+ };
114
+ }
115
+ function wipeAnimation(frame, durationInFrames, _fps, animFrames) {
116
+ const wipeIn = interpolate(frame, [0, animFrames], [100, 0], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' });
117
+ const contentFadeIn = interpolate(frame, [animFrames * 0.5, animFrames], [0, 1], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' });
118
+ const outStart = durationInFrames - animFrames;
119
+ const wipeOut = interpolate(frame, [outStart, durationInFrames], [0, 100], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' });
120
+ const contentFadeOut = interpolate(frame, [outStart, outStart + animFrames * 0.5], [1, 0], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' });
121
+ const isOut = frame >= outStart;
122
+ return {
123
+ bgOpacity: 1,
124
+ contentOpacity: isOut ? contentFadeOut : contentFadeIn,
125
+ contentScale: 1,
126
+ translateX: 0,
127
+ translateY: 0,
128
+ clipPath: `inset(0 ${isOut ? wipeOut : wipeIn}% 0 0)`,
129
+ };
130
+ }
131
+ export const animationStrategies = {
132
+ 'fade': fadeAnimation,
133
+ 'slide-up': slideUpAnimation,
134
+ 'slide-left': slideLeftAnimation,
135
+ 'zoom': zoomAnimation,
136
+ 'cinematic': cinematicAnimation,
137
+ 'pop': popAnimation,
138
+ 'wipe': wipeAnimation,
139
+ };
4
140
  const SYSTEM_FONTS = 'system-ui, -apple-system, sans-serif';
5
141
  const FONT_TIMEOUT_MS = 5000;
6
142
  const ANIM_FRAMES = 12;
7
- export const SceneSlide = ({ title, description, brandColor, textColor, fontFamily, durationInFrames, fps, }) => {
143
+ export const SceneSlide = ({ title, description, brandColor, textColor, fontFamily, titleFontSize = 64, animation = 'fade', durationInFrames, fps, }) => {
8
144
  const frame = useCurrentFrame();
9
145
  const [handle] = useState(() => fontFamily ? delayRender('Loading font') : null);
10
146
  useEffect(() => {
11
147
  if (!fontFamily || !handle)
12
148
  return;
149
+ // Skip network fetch if font is already available (system font or previously loaded)
150
+ if (document.fonts.check(`16px "${fontFamily}"`)) {
151
+ continueRender(handle);
152
+ return;
153
+ }
13
154
  const encoded = encodeURIComponent(fontFamily);
14
155
  const link = document.createElement('link');
15
156
  link.rel = 'stylesheet';
@@ -36,27 +177,9 @@ export const SceneSlide = ({ title, description, brandColor, textColor, fontFami
36
177
  };
37
178
  }, [fontFamily, handle]);
38
179
  const resolvedFont = fontFamily ? `"${fontFamily}", ${SYSTEM_FONTS}` : SYSTEM_FONTS;
39
- // In animation (first ANIM_FRAMES)
40
- const inProgress = spring({ frame, fps, config: { damping: 12 }, durationInFrames: ANIM_FRAMES });
41
- const inOpacity = interpolate(frame, [0, ANIM_FRAMES], [0, 1], { extrapolateRight: 'clamp' });
42
- // Out animation (last ANIM_FRAMES)
43
- const outStart = durationInFrames - ANIM_FRAMES;
44
- const outOpacity = interpolate(frame, [outStart, durationInFrames], [1, 0], {
45
- extrapolateLeft: 'clamp',
46
- extrapolateRight: 'clamp',
47
- });
48
- const outScale = interpolate(frame, [outStart, durationInFrames], [1, 0.95], {
49
- extrapolateLeft: 'clamp',
50
- extrapolateRight: 'clamp',
51
- });
52
- const isInPhase = frame < ANIM_FRAMES;
53
- const isOutPhase = frame >= outStart;
54
- const bgOpacity = isOutPhase ? outOpacity : inOpacity;
55
- const contentScale = isInPhase
56
- ? interpolate(inProgress, [0, 1], [0.85, 1])
57
- : isOutPhase ? outScale : 1;
58
- const contentOpacity = isOutPhase ? outOpacity : inOpacity;
59
- const translateY = isInPhase ? interpolate(inProgress, [0, 1], [20, 0]) : 0;
180
+ const strategy = animationStrategies[animation];
181
+ const v = strategy(frame, durationInFrames, fps, ANIM_FRAMES);
182
+ const isCinematic = animation === 'cinematic';
60
183
  return (_jsx("div", { style: {
61
184
  position: 'absolute',
62
185
  inset: 0,
@@ -65,19 +188,24 @@ export const SceneSlide = ({ title, description, brandColor, textColor, fontFami
65
188
  alignItems: 'center',
66
189
  justifyContent: 'center',
67
190
  backgroundColor: brandColor,
68
- opacity: bgOpacity,
191
+ opacity: v.bgOpacity,
69
192
  fontFamily: resolvedFont,
193
+ ...(v.clipPath ? { clipPath: v.clipPath } : {}),
70
194
  }, children: _jsxs("div", { style: {
71
- transform: `scale(${contentScale}) translateY(${translateY}px)`,
72
- opacity: contentOpacity,
195
+ transform: `scale(${v.contentScale}) translate(${v.translateX}px, ${v.translateY}px)`,
196
+ opacity: isCinematic ? 1 : v.contentOpacity,
73
197
  textAlign: 'center',
74
198
  padding: '0 10%',
75
199
  }, children: [_jsx("h1", { style: {
76
200
  color: textColor,
77
- fontSize: 64,
201
+ fontSize: titleFontSize,
78
202
  fontWeight: 700,
79
203
  margin: 0,
80
204
  lineHeight: 1.2,
205
+ ...(isCinematic ? {
206
+ opacity: v.titleOpacity ?? 1,
207
+ transform: `translateY(${v.titleTranslateY ?? 0}px)`,
208
+ } : {}),
81
209
  }, children: title }), description && (_jsxs(_Fragment, { children: [_jsx("div", { style: {
82
210
  width: 80,
83
211
  height: 4,
@@ -87,11 +215,14 @@ export const SceneSlide = ({ title, description, brandColor, textColor, fontFami
87
215
  borderRadius: 2,
88
216
  } }), _jsx("p", { style: {
89
217
  color: textColor,
90
- fontSize: 28,
218
+ fontSize: Math.round(titleFontSize * 0.44),
91
219
  fontWeight: 400,
92
220
  margin: 0,
93
- opacity: 0.85,
221
+ opacity: isCinematic ? (v.descOpacity ?? 0.85) : 0.85,
94
222
  lineHeight: 1.5,
223
+ ...(isCinematic ? {
224
+ transform: `translateY(${v.descTranslateY ?? 0}px)`,
225
+ } : {}),
95
226
  }, children: description })] }))] }) }));
96
227
  };
97
228
  //# sourceMappingURL=SceneSlide.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SceneSlide.js","sourceRoot":"","sources":["../../../src/composition/SceneSlide.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AA0B7F,MAAM,YAAY,GAAG,sCAAsC,CAAC;AAC5D,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,MAAM,CAAC,MAAM,UAAU,GAAoB,CAAC,EAC1C,KAAK,EACL,WAAW,EACX,UAAU,EACV,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,GAAG,GACJ,EAAE,EAAE;IACH,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEjF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM;YAAE,OAAO;QAEnC,MAAM,OAAO,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,4CAA4C,OAAO,eAAe,CAAC;QAE/E,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,OAAO,CAAC,IAAI,CAAC,SAAS,UAAU,qBAAqB,eAAe,oBAAoB,CAAC,CAAC;YAC1F,cAAc,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC,EAAE,eAAe,CAAC,CAAC;QAEpB,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE;YACjB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC7B,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,cAAc,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE;YAClB,OAAO,CAAC,IAAI,CAAC,wBAAwB,UAAU,mBAAmB,CAAC,CAAC;YACpE,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,cAAc,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC,CAAC;QAEF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAEzB,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,MAAM,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;IAEpF,mCAAmC;IACnC,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,CAAC;IAClG,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC;IAE9F,mCAAmC;IACnC,MAAM,QAAQ,GAAG,gBAAgB,GAAG,WAAW,CAAC;IAChD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QAC1E,eAAe,EAAE,OAAO;QACxB,gBAAgB,EAAE,OAAO;KAC1B,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE;QAC3E,eAAe,EAAE,OAAO;QACxB,gBAAgB,EAAE,OAAO;KAC1B,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,KAAK,GAAG,WAAW,CAAC;IACtC,MAAM,UAAU,GAAG,KAAK,IAAI,QAAQ,CAAC;IAErC,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACtD,MAAM,YAAY,GAAG,SAAS;QAC5B,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5E,OAAO,CACL,cACE,KAAK,EAAE;YACL,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;YACxB,eAAe,EAAE,UAAU;YAC3B,OAAO,EAAE,SAAS;YAClB,UAAU,EAAE,YAAY;SACzB,YAED,eACE,KAAK,EAAE;gBACL,SAAS,EAAE,SAAS,YAAY,gBAAgB,UAAU,KAAK;gBAC/D,OAAO,EAAE,cAAc;gBACvB,SAAS,EAAE,QAAQ;gBACnB,OAAO,EAAE,OAAO;aACjB,aAED,aACE,KAAK,EAAE;wBACL,KAAK,EAAE,SAAS;wBAChB,QAAQ,EAAE,EAAE;wBACZ,UAAU,EAAE,GAAG;wBACf,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,GAAG;qBAChB,YAEA,KAAK,GACH,EACJ,WAAW,IAAI,CACd,8BACE,cACE,KAAK,EAAE;gCACL,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,CAAC;gCACT,eAAe,EAAE,SAAS;gCAC1B,OAAO,EAAE,GAAG;gCACZ,MAAM,EAAE,WAAW;gCACnB,YAAY,EAAE,CAAC;6BAChB,GACD,EACF,YACE,KAAK,EAAE;gCACL,KAAK,EAAE,SAAS;gCAChB,QAAQ,EAAE,EAAE;gCACZ,UAAU,EAAE,GAAG;gCACf,MAAM,EAAE,CAAC;gCACT,OAAO,EAAE,IAAI;gCACb,UAAU,EAAE,GAAG;6BAChB,YAEA,WAAW,GACV,IACH,CACJ,IACG,GACF,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"SceneSlide.js","sourceRoot":"","sources":["../../../src/composition/SceneSlide.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"remotion-root.d.ts","sourceRoot":"","sources":["../../../src/composition/remotion-root.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAyChC,CAAC"}
1
+ {"version":3,"file":"remotion-root.d.ts","sourceRoot":"","sources":["../../../src/composition/remotion-root.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAyChC,CAAC"}
@@ -4,7 +4,7 @@ import { z } from 'zod';
4
4
  import { DemoVideo } from './DemoVideo.js';
5
5
  import { timelineSchema } from '../timeline/schema.js';
6
6
  import { brandingSchema } from '../config/config-schema.js';
7
- import { SLIDE_DURATION_MS } from './time-remap.js';
7
+ import { resolveSlideScenes, totalSlideDurationMs, msToFrames } from './time-remap.js';
8
8
  const propsSchema = z.object({
9
9
  timeline: timelineSchema,
10
10
  branding: brandingSchema.optional(),
@@ -25,10 +25,10 @@ export const RemotionRoot = () => {
25
25
  },
26
26
  }, calculateMetadata: ({ props }) => {
27
27
  const fps = 30;
28
- const sceneCount = props.timeline.events.filter(e => e.type === 'scene').length;
29
- const slideDurationMs = props.branding ? SLIDE_DURATION_MS : 0;
30
- const totalMs = props.timeline.metadata.videoDurationMs + sceneCount * slideDurationMs;
31
- const durationInFrames = Math.max(30, Math.ceil((totalMs / 1000) * fps));
28
+ const scenes = props.timeline.events.filter((e) => e.type === 'scene');
29
+ const slideScenes = resolveSlideScenes(scenes);
30
+ const totalMs = props.timeline.metadata.videoDurationMs + totalSlideDurationMs(slideScenes);
31
+ const durationInFrames = Math.max(30, msToFrames(totalMs, fps));
32
32
  return {
33
33
  durationInFrames,
34
34
  fps,
@@ -1 +1 @@
1
- {"version":3,"file":"remotion-root.js","sourceRoot":"","sources":["../../../src/composition/remotion-root.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,cAAc;IACxB,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAa,GAAG,EAAE;IACzC,OAAO,CACL,4BACE,KAAC,WAAW,IACV,EAAE,EAAC,WAAW,EACd,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,SAAgB,EAAE,CAAC,EACnE,MAAM,EAAE,WAAW,EACnB,gBAAgB,EAAE,GAAG,EACrB,GAAG,EAAE,EAAE,EACP,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,GAAG,EACX,YAAY,EAAE;gBACZ,QAAQ,EAAE;oBACR,OAAO,EAAE,CAAU;oBACnB,QAAQ,EAAE;wBACR,QAAQ,EAAE,EAAE;wBACZ,YAAY,EAAE,EAAE;wBAChB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACpC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;wBACtC,eAAe,EAAE,CAAC;wBAClB,SAAS,EAAE,kBAAkB;qBAC9B;oBACD,MAAM,EAAE,EAAE;iBACX;aACF,EACD,iBAAiB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC/B,MAAM,GAAG,GAAG,EAAE,CAAC;gBACf,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;gBAChF,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/D,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,GAAG,UAAU,GAAG,eAAe,CAAC;gBACvF,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBACzE,OAAO;oBACL,gBAAgB;oBAChB,GAAG;oBACH,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;oBAC7C,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;iBAChD,CAAC;YACJ,CAAC,GACD,GACD,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,YAAY,CAAC,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"remotion-root.js","sourceRoot":"","sources":["../../../src/composition/remotion-root.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEvF,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,cAAc;IACxB,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAa,GAAG,EAAE;IACzC,OAAO,CACL,4BACE,KAAC,WAAW,IACV,EAAE,EAAC,WAAW,EACd,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,SAAgB,EAAE,CAAC,EACnE,MAAM,EAAE,WAAW,EACnB,gBAAgB,EAAE,GAAG,EACrB,GAAG,EAAE,EAAE,EACP,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,GAAG,EACX,YAAY,EAAE;gBACZ,QAAQ,EAAE;oBACR,OAAO,EAAE,CAAU;oBACnB,QAAQ,EAAE;wBACR,QAAQ,EAAE,EAAE;wBACZ,YAAY,EAAE,EAAE;wBAChB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACpC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;wBACtC,eAAe,EAAE,CAAC;wBAClB,SAAS,EAAE,kBAAkB;qBAC9B;oBACD,MAAM,EAAE,EAAE;iBACX;aACF,EACD,iBAAiB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC/B,MAAM,GAAG,GAAG,EAAE,CAAC;gBACf,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAmB,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;gBACxF,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;gBAC5F,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBAChE,OAAO;oBACL,gBAAgB;oBAChB,GAAG;oBACH,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;oBAC7C,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;iBAChD,CAAC;YACJ,CAAC,GACD,GACD,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,YAAY,CAAC,YAAY,CAAC,CAAC"}
@@ -1,26 +1,37 @@
1
- import type { SceneEvent, TimelineEvent } from '../timeline/types.js';
2
- export declare const SLIDE_DURATION_MS = 2000;
1
+ import type { SceneEvent, SceneSlideConfig, TimelineEvent } from '../timeline/types.js';
2
+ export declare const DEFAULT_SLIDE_DURATION_MS = 2000;
3
+ export declare function msToFrames(ms: number, fps: number): number;
4
+ export interface ResolvedSlideScene {
5
+ timestampMs: number;
6
+ slideDurationMs: number;
7
+ }
3
8
  export interface SlideSegment {
4
9
  slideStartMs: number;
5
10
  slideEndMs: number;
11
+ slideDurationMs: number;
6
12
  sceneTitle: string;
7
13
  sceneDescription?: string;
14
+ slideConfig: SceneSlideConfig;
8
15
  }
16
+ /**
17
+ * Filter scenes that have a `slide` field and resolve their duration.
18
+ */
19
+ export declare function resolveSlideScenes(scenes: SceneEvent[]): ResolvedSlideScene[];
9
20
  /**
10
21
  * Compute the output-time intervals where each scene slide is shown.
11
22
  * Each slide is inserted *before* the scene's recorded content.
12
23
  */
13
- export declare function computeSlideSegments(scenes: SceneEvent[], slideDurationMs: number): SlideSegment[];
24
+ export declare function computeSlideSegments(scenes: SceneEvent[]): SlideSegment[];
14
25
  /**
15
26
  * Map an output-time position back to its source-time position.
16
27
  * During a slide, returns the scene's timestamp (freeze-frame).
17
28
  * During video segments, subtracts accumulated slide durations.
18
29
  */
19
- export declare function sourceTimeMs(outputTimeMs: number, scenes: SceneEvent[], slideDurationMs: number): number;
20
- export declare function totalSlideDurationMs(sceneCount: number, slideDurationMs: number): number;
30
+ export declare function sourceTimeMs(outputTimeMs: number, slideScenes: ResolvedSlideScene[]): number;
31
+ export declare function totalSlideDurationMs(slideScenes: ResolvedSlideScene[]): number;
21
32
  /**
22
33
  * Shift every event's timestampMs forward by the accumulated slide
23
34
  * durations that precede it. Returns a new array (no mutation).
24
35
  */
25
- export declare function remapEvents<T extends TimelineEvent>(events: T[], scenes: SceneEvent[], slideDurationMs: number): T[];
36
+ export declare function remapEvents<T extends TimelineEvent>(events: T[], slideScenes: ResolvedSlideScene[]): T[];
26
37
  //# sourceMappingURL=time-remap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"time-remap.d.ts","sourceRoot":"","sources":["../../../src/composition/time-remap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEtE,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,UAAU,EAAE,EACpB,eAAe,EAAE,MAAM,GACtB,YAAY,EAAE,CAehB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,UAAU,EAAE,EACpB,eAAe,EAAE,MAAM,GACtB,MAAM,CAeR;AAED,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,GACtB,MAAM,CAER;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,aAAa,EACjD,MAAM,EAAE,CAAC,EAAE,EACX,MAAM,EAAE,UAAU,EAAE,EACpB,eAAe,EAAE,MAAM,GACtB,CAAC,EAAE,CAYL"}
1
+ {"version":3,"file":"time-remap.d.ts","sourceRoot":"","sources":["../../../src/composition/time-remap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAExF,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,gBAAgB,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,kBAAkB,EAAE,CAO7E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE,CAqBzE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,kBAAkB,EAAE,GAChC,MAAM,CAgBR;AAED,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,kBAAkB,EAAE,GAChC,MAAM,CAMR;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,aAAa,EACjD,MAAM,EAAE,CAAC,EAAE,EACX,WAAW,EAAE,kBAAkB,EAAE,GAChC,CAAC,EAAE,CAaL"}
@@ -1,19 +1,37 @@
1
- export const SLIDE_DURATION_MS = 2000;
1
+ export const DEFAULT_SLIDE_DURATION_MS = 2000;
2
+ export function msToFrames(ms, fps) {
3
+ return Math.round((ms / 1000) * fps);
4
+ }
5
+ /**
6
+ * Filter scenes that have a `slide` field and resolve their duration.
7
+ */
8
+ export function resolveSlideScenes(scenes) {
9
+ return scenes
10
+ .filter(s => s.slide !== undefined)
11
+ .map(s => ({
12
+ timestampMs: s.timestampMs,
13
+ slideDurationMs: s.slide.duration ?? DEFAULT_SLIDE_DURATION_MS,
14
+ }));
15
+ }
2
16
  /**
3
17
  * Compute the output-time intervals where each scene slide is shown.
4
18
  * Each slide is inserted *before* the scene's recorded content.
5
19
  */
6
- export function computeSlideSegments(scenes, slideDurationMs) {
20
+ export function computeSlideSegments(scenes) {
7
21
  const segments = [];
8
22
  let accumulated = 0;
9
23
  for (const scene of scenes) {
24
+ if (!scene.slide)
25
+ continue;
26
+ const slideDurationMs = scene.slide.duration ?? DEFAULT_SLIDE_DURATION_MS;
10
27
  const slideStartMs = scene.timestampMs + accumulated;
11
- const slideEndMs = slideStartMs + slideDurationMs;
12
28
  segments.push({
13
29
  slideStartMs,
14
- slideEndMs,
30
+ slideEndMs: slideStartMs + slideDurationMs,
31
+ slideDurationMs,
15
32
  sceneTitle: scene.title,
16
33
  sceneDescription: scene.description,
34
+ slideConfig: scene.slide,
17
35
  });
18
36
  accumulated += slideDurationMs;
19
37
  }
@@ -24,34 +42,40 @@ export function computeSlideSegments(scenes, slideDurationMs) {
24
42
  * During a slide, returns the scene's timestamp (freeze-frame).
25
43
  * During video segments, subtracts accumulated slide durations.
26
44
  */
27
- export function sourceTimeMs(outputTimeMs, scenes, slideDurationMs) {
45
+ export function sourceTimeMs(outputTimeMs, slideScenes) {
46
+ const sorted = [...slideScenes].sort((a, b) => a.timestampMs - b.timestampMs);
28
47
  let accumulated = 0;
29
- for (const scene of scenes) {
30
- const slideStart = scene.timestampMs + accumulated;
31
- const slideEnd = slideStart + slideDurationMs;
48
+ for (const ss of sorted) {
49
+ const slideStart = ss.timestampMs + accumulated;
50
+ const slideEnd = slideStart + ss.slideDurationMs;
32
51
  if (outputTimeMs < slideStart) {
33
52
  return outputTimeMs - accumulated;
34
53
  }
35
54
  if (outputTimeMs < slideEnd) {
36
- return scene.timestampMs;
55
+ return ss.timestampMs;
37
56
  }
38
- accumulated += slideDurationMs;
57
+ accumulated += ss.slideDurationMs;
39
58
  }
40
59
  return outputTimeMs - accumulated;
41
60
  }
42
- export function totalSlideDurationMs(sceneCount, slideDurationMs) {
43
- return sceneCount * slideDurationMs;
61
+ export function totalSlideDurationMs(slideScenes) {
62
+ let total = 0;
63
+ for (const ss of slideScenes) {
64
+ total += ss.slideDurationMs;
65
+ }
66
+ return total;
44
67
  }
45
68
  /**
46
69
  * Shift every event's timestampMs forward by the accumulated slide
47
70
  * durations that precede it. Returns a new array (no mutation).
48
71
  */
49
- export function remapEvents(events, scenes, slideDurationMs) {
72
+ export function remapEvents(events, slideScenes) {
73
+ const sorted = [...slideScenes].sort((a, b) => a.timestampMs - b.timestampMs);
50
74
  return events.map(event => {
51
75
  let offset = 0;
52
- for (const scene of scenes) {
53
- if (event.timestampMs >= scene.timestampMs) {
54
- offset += slideDurationMs;
76
+ for (const ss of sorted) {
77
+ if (event.timestampMs >= ss.timestampMs) {
78
+ offset += ss.slideDurationMs;
55
79
  }
56
80
  else {
57
81
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"time-remap.js","sourceRoot":"","sources":["../../../src/composition/time-remap.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAStC;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAoB,EACpB,eAAuB;IAEvB,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;QACrD,MAAM,UAAU,GAAG,YAAY,GAAG,eAAe,CAAC;QAClD,QAAQ,CAAC,IAAI,CAAC;YACZ,YAAY;YACZ,UAAU;YACV,UAAU,EAAE,KAAK,CAAC,KAAK;YACvB,gBAAgB,EAAE,KAAK,CAAC,WAAW;SACpC,CAAC,CAAC;QACH,WAAW,IAAI,eAAe,CAAC;IACjC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,YAAoB,EACpB,MAAoB,EACpB,eAAuB;IAEvB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;QACnD,MAAM,QAAQ,GAAG,UAAU,GAAG,eAAe,CAAC;QAE9C,IAAI,YAAY,GAAG,UAAU,EAAE,CAAC;YAC9B,OAAO,YAAY,GAAG,WAAW,CAAC;QACpC,CAAC;QACD,IAAI,YAAY,GAAG,QAAQ,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC,WAAW,CAAC;QAC3B,CAAC;QACD,WAAW,IAAI,eAAe,CAAC;IACjC,CAAC;IACD,OAAO,YAAY,GAAG,WAAW,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,UAAkB,EAClB,eAAuB;IAEvB,OAAO,UAAU,GAAG,eAAe,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,MAAW,EACX,MAAoB,EACpB,eAAuB;IAEvB,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACxB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC3C,MAAM,IAAI,eAAe,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,MAAM;YACR,CAAC;QACH,CAAC;QACD,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,GAAG,MAAM,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"time-remap.js","sourceRoot":"","sources":["../../../src/composition/time-remap.ts"],"names":[],"mappings":"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"}