@hyperframes/core 0.1.0
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/README.md +125 -0
- package/dist/adapters/gsap.d.ts +14 -0
- package/dist/adapters/gsap.d.ts.map +1 -0
- package/dist/adapters/gsap.js +25 -0
- package/dist/adapters/gsap.js.map +1 -0
- package/dist/adapters/index.d.ts +4 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +2 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/types.d.ts +15 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/compiler/htmlBundler.d.ts +16 -0
- package/dist/compiler/htmlBundler.d.ts.map +1 -0
- package/dist/compiler/htmlBundler.js +448 -0
- package/dist/compiler/htmlBundler.js.map +1 -0
- package/dist/compiler/htmlCompiler.d.ts +18 -0
- package/dist/compiler/htmlCompiler.d.ts.map +1 -0
- package/dist/compiler/htmlCompiler.js +65 -0
- package/dist/compiler/htmlCompiler.js.map +1 -0
- package/dist/compiler/index.d.ts +5 -0
- package/dist/compiler/index.d.ts.map +1 -0
- package/dist/compiler/index.js +9 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/compiler/staticGuard.d.ts +8 -0
- package/dist/compiler/staticGuard.d.ts.map +1 -0
- package/dist/compiler/staticGuard.js +26 -0
- package/dist/compiler/staticGuard.js.map +1 -0
- package/dist/compiler/timingCompiler.d.ts +72 -0
- package/dist/compiler/timingCompiler.d.ts.map +1 -0
- package/dist/compiler/timingCompiler.js +191 -0
- package/dist/compiler/timingCompiler.js.map +1 -0
- package/dist/core.types.d.ts +314 -0
- package/dist/core.types.d.ts.map +1 -0
- package/dist/core.types.js +52 -0
- package/dist/core.types.js.map +1 -0
- package/dist/generators/hyperframes.d.ts +21 -0
- package/dist/generators/hyperframes.d.ts.map +1 -0
- package/dist/generators/hyperframes.js +572 -0
- package/dist/generators/hyperframes.js.map +1 -0
- package/dist/hyperframe.manifest.json +22 -0
- package/dist/hyperframe.runtime.iife.js +13 -0
- package/dist/hyperframe.runtime.mjs +13 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/inline-scripts/hyperframe.d.ts +13 -0
- package/dist/inline-scripts/hyperframe.d.ts.map +1 -0
- package/dist/inline-scripts/hyperframe.js +15 -0
- package/dist/inline-scripts/hyperframe.js.map +1 -0
- package/dist/inline-scripts/hyperframesRuntime.engine.d.ts +7 -0
- package/dist/inline-scripts/hyperframesRuntime.engine.d.ts.map +1 -0
- package/dist/inline-scripts/hyperframesRuntime.engine.js +31 -0
- package/dist/inline-scripts/hyperframesRuntime.engine.js.map +1 -0
- package/dist/inline-scripts/parityContract.d.ts +5 -0
- package/dist/inline-scripts/parityContract.d.ts.map +1 -0
- package/dist/inline-scripts/parityContract.js +43 -0
- package/dist/inline-scripts/parityContract.js.map +1 -0
- package/dist/inline-scripts/pickerApi.d.ts +32 -0
- package/dist/inline-scripts/pickerApi.d.ts.map +1 -0
- package/dist/inline-scripts/pickerApi.js +2 -0
- package/dist/inline-scripts/pickerApi.js.map +1 -0
- package/dist/inline-scripts/runtimeContract.d.ts +14 -0
- package/dist/inline-scripts/runtimeContract.d.ts.map +1 -0
- package/dist/inline-scripts/runtimeContract.js +21 -0
- package/dist/inline-scripts/runtimeContract.js.map +1 -0
- package/dist/lint/hyperframeLinter.d.ts +3 -0
- package/dist/lint/hyperframeLinter.d.ts.map +1 -0
- package/dist/lint/hyperframeLinter.js +621 -0
- package/dist/lint/hyperframeLinter.js.map +1 -0
- package/dist/lint/index.d.ts +3 -0
- package/dist/lint/index.d.ts.map +1 -0
- package/dist/lint/index.js +2 -0
- package/dist/lint/index.js.map +1 -0
- package/dist/lint/types.d.ts +21 -0
- package/dist/lint/types.d.ts.map +1 -0
- package/dist/lint/types.js +2 -0
- package/dist/lint/types.js.map +1 -0
- package/dist/parsers/gsapParser.d.ts +50 -0
- package/dist/parsers/gsapParser.d.ts.map +1 -0
- package/dist/parsers/gsapParser.js +411 -0
- package/dist/parsers/gsapParser.js.map +1 -0
- package/dist/parsers/htmlParser.d.ts +29 -0
- package/dist/parsers/htmlParser.d.ts.map +1 -0
- package/dist/parsers/htmlParser.js +726 -0
- package/dist/parsers/htmlParser.js.map +1 -0
- package/dist/templates/base.d.ts +4 -0
- package/dist/templates/base.d.ts.map +1 -0
- package/dist/templates/base.js +20 -0
- package/dist/templates/base.js.map +1 -0
- package/dist/templates/constants.d.ts +7 -0
- package/dist/templates/constants.d.ts.map +1 -0
- package/dist/templates/constants.js +8 -0
- package/dist/templates/constants.js.map +1 -0
- package/docs/common-mistakes.md +73 -0
- package/docs/core.md +532 -0
- package/docs/core_notes.md +61 -0
- package/docs/quickstart-template.html +180 -0
- package/docs/versions/changelog.md +5 -0
- package/docs/versions/v0.1/core.md +326 -0
- package/package.json +83 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timing Compiler
|
|
3
|
+
*
|
|
4
|
+
* Shared, pure HTML compilation that normalizes timing attributes.
|
|
5
|
+
* Works in both Node.js and browser (no dependencies, regex-based).
|
|
6
|
+
*
|
|
7
|
+
* Guarantees every timed element gets:
|
|
8
|
+
* - data-end (computed from data-start + data-duration when possible)
|
|
9
|
+
* - data-has-audio="true" on <video> elements
|
|
10
|
+
*
|
|
11
|
+
* For elements without data-duration (e.g. videos relying on source duration),
|
|
12
|
+
* this compiler identifies them as "unresolved" so the caller can provide
|
|
13
|
+
* durations via an environment-specific resolver (ffprobe, el.duration, etc.)
|
|
14
|
+
* and call injectDurations() to complete the compilation.
|
|
15
|
+
*/
|
|
16
|
+
export interface UnresolvedElement {
|
|
17
|
+
id: string;
|
|
18
|
+
tagName: string;
|
|
19
|
+
src?: string;
|
|
20
|
+
start: number;
|
|
21
|
+
end?: number;
|
|
22
|
+
duration?: number;
|
|
23
|
+
mediaStart: number;
|
|
24
|
+
compositionSrc?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface ResolvedDuration {
|
|
27
|
+
id: string;
|
|
28
|
+
duration: number;
|
|
29
|
+
}
|
|
30
|
+
export interface ResolvedMediaElement {
|
|
31
|
+
id: string;
|
|
32
|
+
tagName: string;
|
|
33
|
+
src?: string;
|
|
34
|
+
start: number;
|
|
35
|
+
duration: number;
|
|
36
|
+
mediaStart: number;
|
|
37
|
+
}
|
|
38
|
+
export interface CompilationResult {
|
|
39
|
+
html: string;
|
|
40
|
+
unresolved: UnresolvedElement[];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Compile timing attributes in HTML.
|
|
44
|
+
*
|
|
45
|
+
* Phase 1 (static): Adds data-end where data-duration exists,
|
|
46
|
+
* adds data-has-audio on videos.
|
|
47
|
+
*
|
|
48
|
+
* Returns the compiled HTML and a list of elements that could not be
|
|
49
|
+
* resolved statically (missing data-duration). The caller should resolve
|
|
50
|
+
* these via ffprobe / el.duration and call injectDurations().
|
|
51
|
+
*/
|
|
52
|
+
export declare function compileTimingAttrs(html: string): CompilationResult;
|
|
53
|
+
/**
|
|
54
|
+
* Inject resolved durations into compiled HTML.
|
|
55
|
+
*
|
|
56
|
+
* For each resolved element, adds data-duration and data-end attributes.
|
|
57
|
+
* Call this after resolving durations via ffprobe, el.duration, or
|
|
58
|
+
* GSAP timeline queries.
|
|
59
|
+
*/
|
|
60
|
+
export declare function injectDurations(html: string, resolutions: ResolvedDuration[]): string;
|
|
61
|
+
/**
|
|
62
|
+
* Extract video/audio elements that already have data-duration set.
|
|
63
|
+
* Used by callers to validate declared durations against actual source durations.
|
|
64
|
+
*/
|
|
65
|
+
export declare function extractResolvedMedia(html: string): ResolvedMediaElement[];
|
|
66
|
+
/**
|
|
67
|
+
* Clamp existing data-duration and data-end on media elements.
|
|
68
|
+
* For each resolution, replaces the declared duration with the clamped value
|
|
69
|
+
* and recomputes data-end accordingly.
|
|
70
|
+
*/
|
|
71
|
+
export declare function clampDurations(html: string, clamps: ResolvedDuration[]): string;
|
|
72
|
+
//# sourceMappingURL=timingCompiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timingCompiler.d.ts","sourceRoot":"","sources":["../../src/compiler/timingCompiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,iBAAiB,EAAE,CAAC;CACjC;AAuDD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAwClE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAyBrF;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,EAAE,CA6BzE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAkB/E"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timing Compiler
|
|
3
|
+
*
|
|
4
|
+
* Shared, pure HTML compilation that normalizes timing attributes.
|
|
5
|
+
* Works in both Node.js and browser (no dependencies, regex-based).
|
|
6
|
+
*
|
|
7
|
+
* Guarantees every timed element gets:
|
|
8
|
+
* - data-end (computed from data-start + data-duration when possible)
|
|
9
|
+
* - data-has-audio="true" on <video> elements
|
|
10
|
+
*
|
|
11
|
+
* For elements without data-duration (e.g. videos relying on source duration),
|
|
12
|
+
* this compiler identifies them as "unresolved" so the caller can provide
|
|
13
|
+
* durations via an environment-specific resolver (ffprobe, el.duration, etc.)
|
|
14
|
+
* and call injectDurations() to complete the compilation.
|
|
15
|
+
*/
|
|
16
|
+
// ── Helpers ──────────────────────────────────────────────────────────────
|
|
17
|
+
function getAttr(tag, attr) {
|
|
18
|
+
const match = tag.match(new RegExp(`${attr}=["']([^"']+)["']`));
|
|
19
|
+
return match ? match[1] ?? null : null;
|
|
20
|
+
}
|
|
21
|
+
function hasAttr(tag, attr) {
|
|
22
|
+
return new RegExp(`${attr}=["']`).test(tag);
|
|
23
|
+
}
|
|
24
|
+
function injectAttr(tag, attr, value) {
|
|
25
|
+
return tag.replace(/>$/, ` ${attr}="${value}">`);
|
|
26
|
+
}
|
|
27
|
+
// ── Core compilation ─────────────────────────────────────────────────────
|
|
28
|
+
function compileTag(tag, isVideo) {
|
|
29
|
+
let result = tag;
|
|
30
|
+
let unresolved = null;
|
|
31
|
+
const id = getAttr(result, "id");
|
|
32
|
+
const startStr = getAttr(result, "data-start");
|
|
33
|
+
const start = startStr !== null ? parseFloat(startStr) : 0;
|
|
34
|
+
const mediaStartStr = getAttr(result, "data-media-start");
|
|
35
|
+
const mediaStart = mediaStartStr ? parseFloat(mediaStartStr) : 0;
|
|
36
|
+
// 1. Compute data-end from data-start + data-duration
|
|
37
|
+
if (!hasAttr(result, "data-end")) {
|
|
38
|
+
const durationStr = getAttr(result, "data-duration");
|
|
39
|
+
if (durationStr !== null) {
|
|
40
|
+
const end = start + parseFloat(durationStr);
|
|
41
|
+
result = injectAttr(result, "data-end", String(end));
|
|
42
|
+
}
|
|
43
|
+
else if (id) {
|
|
44
|
+
// No data-duration: mark as unresolved so caller can provide it
|
|
45
|
+
unresolved = {
|
|
46
|
+
id,
|
|
47
|
+
tagName: isVideo ? "video" : "audio",
|
|
48
|
+
src: getAttr(result, "src") ?? undefined,
|
|
49
|
+
start,
|
|
50
|
+
mediaStart,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// 2. Add data-has-audio="true" to <video> elements
|
|
55
|
+
if (isVideo && !hasAttr(result, "data-has-audio")) {
|
|
56
|
+
result = injectAttr(result, "data-has-audio", "true");
|
|
57
|
+
}
|
|
58
|
+
return { tag: result, unresolved };
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Compile timing attributes in HTML.
|
|
62
|
+
*
|
|
63
|
+
* Phase 1 (static): Adds data-end where data-duration exists,
|
|
64
|
+
* adds data-has-audio on videos.
|
|
65
|
+
*
|
|
66
|
+
* Returns the compiled HTML and a list of elements that could not be
|
|
67
|
+
* resolved statically (missing data-duration). The caller should resolve
|
|
68
|
+
* these via ffprobe / el.duration and call injectDurations().
|
|
69
|
+
*/
|
|
70
|
+
export function compileTimingAttrs(html) {
|
|
71
|
+
const unresolved = [];
|
|
72
|
+
// Process <video ...> tags
|
|
73
|
+
html = html.replace(/<video[^>]*>/gi, (match) => {
|
|
74
|
+
const { tag, unresolved: u } = compileTag(match, true);
|
|
75
|
+
if (u)
|
|
76
|
+
unresolved.push(u);
|
|
77
|
+
return tag;
|
|
78
|
+
});
|
|
79
|
+
// Process <audio ...> tags
|
|
80
|
+
html = html.replace(/<audio[^>]*>/gi, (match) => {
|
|
81
|
+
const { tag, unresolved: u } = compileTag(match, false);
|
|
82
|
+
if (u)
|
|
83
|
+
unresolved.push(u);
|
|
84
|
+
return tag;
|
|
85
|
+
});
|
|
86
|
+
// Identify unresolved timed elements (divs with data-start but no data-end/data-duration)
|
|
87
|
+
// These are typically compositions whose duration depends on GSAP timelines
|
|
88
|
+
html.replace(/<(?:div|section)[^>]*>/gi, (match) => {
|
|
89
|
+
if (!hasAttr(match, "data-start"))
|
|
90
|
+
return match;
|
|
91
|
+
if (hasAttr(match, "data-end") || hasAttr(match, "data-duration"))
|
|
92
|
+
return match;
|
|
93
|
+
const id = getAttr(match, "id");
|
|
94
|
+
const compositionSrc = getAttr(match, "data-composition-src");
|
|
95
|
+
if (id) {
|
|
96
|
+
const startStr = getAttr(match, "data-start");
|
|
97
|
+
unresolved.push({
|
|
98
|
+
id,
|
|
99
|
+
tagName: "div",
|
|
100
|
+
start: startStr ? parseFloat(startStr) : 0,
|
|
101
|
+
mediaStart: 0,
|
|
102
|
+
compositionSrc: compositionSrc ?? undefined,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return match;
|
|
106
|
+
});
|
|
107
|
+
return { html, unresolved };
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Inject resolved durations into compiled HTML.
|
|
111
|
+
*
|
|
112
|
+
* For each resolved element, adds data-duration and data-end attributes.
|
|
113
|
+
* Call this after resolving durations via ffprobe, el.duration, or
|
|
114
|
+
* GSAP timeline queries.
|
|
115
|
+
*/
|
|
116
|
+
export function injectDurations(html, resolutions) {
|
|
117
|
+
for (const { id, duration } of resolutions) {
|
|
118
|
+
// Match the element's opening tag by id
|
|
119
|
+
const idPattern = new RegExp(`(<[^>]*id=["']${escapeRegex(id)}["'][^>]*>)`, "gi");
|
|
120
|
+
html = html.replace(idPattern, (tag) => {
|
|
121
|
+
let result = tag;
|
|
122
|
+
// Add data-duration if missing
|
|
123
|
+
if (!hasAttr(result, "data-duration")) {
|
|
124
|
+
result = injectAttr(result, "data-duration", String(duration));
|
|
125
|
+
}
|
|
126
|
+
// Add data-end if missing
|
|
127
|
+
if (!hasAttr(result, "data-end")) {
|
|
128
|
+
const startStr = getAttr(result, "data-start");
|
|
129
|
+
const start = startStr ? parseFloat(startStr) : 0;
|
|
130
|
+
result = injectAttr(result, "data-end", String(start + duration));
|
|
131
|
+
}
|
|
132
|
+
return result;
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
return html;
|
|
136
|
+
}
|
|
137
|
+
function escapeRegex(str) {
|
|
138
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Extract video/audio elements that already have data-duration set.
|
|
142
|
+
* Used by callers to validate declared durations against actual source durations.
|
|
143
|
+
*/
|
|
144
|
+
export function extractResolvedMedia(html) {
|
|
145
|
+
const resolved = [];
|
|
146
|
+
const mediaRegex = /<(?:video|audio)[^>]*>/gi;
|
|
147
|
+
let match;
|
|
148
|
+
while ((match = mediaRegex.exec(html)) !== null) {
|
|
149
|
+
const tag = match[0];
|
|
150
|
+
const id = getAttr(tag, "id");
|
|
151
|
+
const durationStr = getAttr(tag, "data-duration");
|
|
152
|
+
if (!id || durationStr === null)
|
|
153
|
+
continue;
|
|
154
|
+
const duration = parseFloat(durationStr);
|
|
155
|
+
if (!Number.isFinite(duration) || duration <= 0)
|
|
156
|
+
continue;
|
|
157
|
+
const isVideo = /^<video/i.test(tag);
|
|
158
|
+
const startStr = getAttr(tag, "data-start");
|
|
159
|
+
const mediaStartStr = getAttr(tag, "data-media-start");
|
|
160
|
+
resolved.push({
|
|
161
|
+
id,
|
|
162
|
+
tagName: isVideo ? "video" : "audio",
|
|
163
|
+
src: getAttr(tag, "src") ?? undefined,
|
|
164
|
+
start: startStr !== null ? parseFloat(startStr) : 0,
|
|
165
|
+
duration,
|
|
166
|
+
mediaStart: mediaStartStr ? parseFloat(mediaStartStr) : 0,
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
return resolved;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Clamp existing data-duration and data-end on media elements.
|
|
173
|
+
* For each resolution, replaces the declared duration with the clamped value
|
|
174
|
+
* and recomputes data-end accordingly.
|
|
175
|
+
*/
|
|
176
|
+
export function clampDurations(html, clamps) {
|
|
177
|
+
for (const { id, duration } of clamps) {
|
|
178
|
+
const idPattern = new RegExp(`(<[^>]*id=["']${escapeRegex(id)}["'][^>]*>)`, "gi");
|
|
179
|
+
html = html.replace(idPattern, (tag) => {
|
|
180
|
+
// Replace data-duration value
|
|
181
|
+
tag = tag.replace(/data-duration=["'][^"']*["']/, `data-duration="${duration}"`);
|
|
182
|
+
// Recompute data-end from data-start + clamped duration
|
|
183
|
+
const startStr = getAttr(tag, "data-start");
|
|
184
|
+
const start = startStr ? parseFloat(startStr) : 0;
|
|
185
|
+
tag = tag.replace(/data-end=["'][^"']*["']/, `data-end="${start + duration}"`);
|
|
186
|
+
return tag;
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
return html;
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=timingCompiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timingCompiler.js","sourceRoot":"","sources":["../../src/compiler/timingCompiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
export type ExecutionMode = "planning" | "design" | "execution" | null;
|
|
2
|
+
/** Video orientation / aspect ratio. */
|
|
3
|
+
export type Orientation = "16:9" | "9:16";
|
|
4
|
+
export interface Asset {
|
|
5
|
+
id: string;
|
|
6
|
+
url: string;
|
|
7
|
+
type: string;
|
|
8
|
+
is_reference?: boolean;
|
|
9
|
+
/** Duration in seconds for video/audio assets */
|
|
10
|
+
duration?: number;
|
|
11
|
+
}
|
|
12
|
+
export type TimelineElementType = "video" | "image" | "text" | "audio" | "composition";
|
|
13
|
+
export type MediaElementType = "video" | "image" | "audio";
|
|
14
|
+
export type CanvasResolution = "landscape" | "portrait";
|
|
15
|
+
export declare const CANVAS_DIMENSIONS: {
|
|
16
|
+
readonly landscape: {
|
|
17
|
+
readonly width: 1920;
|
|
18
|
+
readonly height: 1080;
|
|
19
|
+
};
|
|
20
|
+
readonly portrait: {
|
|
21
|
+
readonly width: 1080;
|
|
22
|
+
readonly height: 1920;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export interface TimelineElementBase {
|
|
26
|
+
id: string;
|
|
27
|
+
type: TimelineElementType;
|
|
28
|
+
name: string;
|
|
29
|
+
startTime: number;
|
|
30
|
+
duration: number;
|
|
31
|
+
zIndex: number;
|
|
32
|
+
x?: number;
|
|
33
|
+
y?: number;
|
|
34
|
+
scale?: number;
|
|
35
|
+
opacity?: number;
|
|
36
|
+
}
|
|
37
|
+
export interface TimelineMediaElement extends TimelineElementBase {
|
|
38
|
+
type: MediaElementType;
|
|
39
|
+
src: string;
|
|
40
|
+
mediaStartTime?: number;
|
|
41
|
+
sourceDuration?: number;
|
|
42
|
+
isAroll?: boolean;
|
|
43
|
+
sourceWidth?: number;
|
|
44
|
+
sourceHeight?: number;
|
|
45
|
+
volume?: number;
|
|
46
|
+
hasAudio?: boolean;
|
|
47
|
+
}
|
|
48
|
+
export interface WaveformData {
|
|
49
|
+
peaks: number[];
|
|
50
|
+
duration: number;
|
|
51
|
+
sampleRate?: number;
|
|
52
|
+
}
|
|
53
|
+
export interface TimelineTextElement extends TimelineElementBase {
|
|
54
|
+
type: "text";
|
|
55
|
+
content: string;
|
|
56
|
+
color?: string;
|
|
57
|
+
fontSize?: number;
|
|
58
|
+
textShadow?: boolean;
|
|
59
|
+
fontFamily?: string;
|
|
60
|
+
fontWeight?: number;
|
|
61
|
+
textOutline?: boolean;
|
|
62
|
+
textOutlineColor?: string;
|
|
63
|
+
textOutlineWidth?: number;
|
|
64
|
+
textHighlight?: boolean;
|
|
65
|
+
textHighlightColor?: string;
|
|
66
|
+
textHighlightPadding?: number;
|
|
67
|
+
textHighlightRadius?: number;
|
|
68
|
+
}
|
|
69
|
+
export interface TimelineCompositionElement extends TimelineElementBase {
|
|
70
|
+
type: "composition";
|
|
71
|
+
src: string;
|
|
72
|
+
compositionId: string;
|
|
73
|
+
scale?: number;
|
|
74
|
+
sourceDuration?: number;
|
|
75
|
+
variableValues?: Record<string, string | number | boolean>;
|
|
76
|
+
sourceWidth?: number;
|
|
77
|
+
sourceHeight?: number;
|
|
78
|
+
}
|
|
79
|
+
export type CompositionVariableType = "string" | "number" | "color" | "boolean" | "enum";
|
|
80
|
+
export interface CompositionVariableBase {
|
|
81
|
+
id: string;
|
|
82
|
+
type: CompositionVariableType;
|
|
83
|
+
label: string;
|
|
84
|
+
description?: string;
|
|
85
|
+
}
|
|
86
|
+
export interface StringVariable extends CompositionVariableBase {
|
|
87
|
+
type: "string";
|
|
88
|
+
default: string;
|
|
89
|
+
placeholder?: string;
|
|
90
|
+
maxLength?: number;
|
|
91
|
+
}
|
|
92
|
+
export interface NumberVariable extends CompositionVariableBase {
|
|
93
|
+
type: "number";
|
|
94
|
+
default: number;
|
|
95
|
+
min?: number;
|
|
96
|
+
max?: number;
|
|
97
|
+
step?: number;
|
|
98
|
+
unit?: string;
|
|
99
|
+
}
|
|
100
|
+
export interface ColorVariable extends CompositionVariableBase {
|
|
101
|
+
type: "color";
|
|
102
|
+
default: string;
|
|
103
|
+
}
|
|
104
|
+
export interface BooleanVariable extends CompositionVariableBase {
|
|
105
|
+
type: "boolean";
|
|
106
|
+
default: boolean;
|
|
107
|
+
}
|
|
108
|
+
export interface EnumVariable extends CompositionVariableBase {
|
|
109
|
+
type: "enum";
|
|
110
|
+
default: string;
|
|
111
|
+
options: {
|
|
112
|
+
value: string;
|
|
113
|
+
label: string;
|
|
114
|
+
}[];
|
|
115
|
+
}
|
|
116
|
+
export type CompositionVariable = StringVariable | NumberVariable | ColorVariable | BooleanVariable | EnumVariable;
|
|
117
|
+
export interface CompositionSpec {
|
|
118
|
+
id: string;
|
|
119
|
+
duration: number;
|
|
120
|
+
variables: CompositionVariable[];
|
|
121
|
+
}
|
|
122
|
+
export declare function isStringVariable(v: CompositionVariable): v is StringVariable;
|
|
123
|
+
export declare function isNumberVariable(v: CompositionVariable): v is NumberVariable;
|
|
124
|
+
export declare function isColorVariable(v: CompositionVariable): v is ColorVariable;
|
|
125
|
+
export declare function isBooleanVariable(v: CompositionVariable): v is BooleanVariable;
|
|
126
|
+
export declare function isEnumVariable(v: CompositionVariable): v is EnumVariable;
|
|
127
|
+
export type TimelineElement = TimelineMediaElement | TimelineTextElement | TimelineCompositionElement;
|
|
128
|
+
export declare function isTextElement(el: TimelineElement): el is TimelineTextElement;
|
|
129
|
+
export declare function isMediaElement(el: TimelineElement): el is TimelineMediaElement;
|
|
130
|
+
export declare function isCompositionElement(el: TimelineElement): el is TimelineCompositionElement;
|
|
131
|
+
export interface MediaFile {
|
|
132
|
+
id: string;
|
|
133
|
+
name: string;
|
|
134
|
+
type: TimelineElementType;
|
|
135
|
+
src: string;
|
|
136
|
+
file?: File;
|
|
137
|
+
duration?: number;
|
|
138
|
+
compositionId?: string;
|
|
139
|
+
sourceWidth?: number;
|
|
140
|
+
sourceHeight?: number;
|
|
141
|
+
}
|
|
142
|
+
export declare const TIMELINE_COLORS: Record<TimelineElementType, string>;
|
|
143
|
+
export declare const DEFAULT_DURATIONS: Record<TimelineElementType, number>;
|
|
144
|
+
export interface CompositionAPI {
|
|
145
|
+
id: string;
|
|
146
|
+
duration: number;
|
|
147
|
+
seek(time: number): void;
|
|
148
|
+
getTime(): number;
|
|
149
|
+
getDuration(): number;
|
|
150
|
+
}
|
|
151
|
+
export interface PlayerAPI {
|
|
152
|
+
play(): void;
|
|
153
|
+
pause(): void;
|
|
154
|
+
seek(time: number): void;
|
|
155
|
+
getTime(): number;
|
|
156
|
+
getDuration(): number;
|
|
157
|
+
isPlaying(): boolean;
|
|
158
|
+
getMainTimeline(): unknown;
|
|
159
|
+
getElementBounds(elementId: string): void;
|
|
160
|
+
getElementsAtPoint(x: number, y: number): void;
|
|
161
|
+
setElementPosition(elementId: string, x: number, y: number): void;
|
|
162
|
+
previewElementPosition(elementId: string, x: number, y: number): void;
|
|
163
|
+
setElementKeyframes(elementId: string, keyframes: Array<{
|
|
164
|
+
id: string;
|
|
165
|
+
time: number;
|
|
166
|
+
properties: {
|
|
167
|
+
x?: number;
|
|
168
|
+
y?: number;
|
|
169
|
+
};
|
|
170
|
+
}> | null): void;
|
|
171
|
+
setElementScale(elementId: string, scale: number): void;
|
|
172
|
+
setElementFontSize(elementId: string, fontSize: number): void;
|
|
173
|
+
setElementTextContent(elementId: string, content: string): void;
|
|
174
|
+
setElementTextColor(elementId: string, color: string): void;
|
|
175
|
+
setElementTextShadow(elementId: string, enabled: boolean): void;
|
|
176
|
+
setElementTextFontWeight(elementId: string, weight: number): void;
|
|
177
|
+
setElementTextFontFamily(elementId: string, fontFamily: string): void;
|
|
178
|
+
setElementTextOutline(elementId: string, enabled: boolean, color?: string, width?: number): void;
|
|
179
|
+
setElementTextHighlight(elementId: string, enabled: boolean, color?: string, padding?: number, radius?: number): void;
|
|
180
|
+
setElementVolume(elementId: string, volume: number): void;
|
|
181
|
+
setStageZoom(scale: number, focusX: number, focusY: number): void;
|
|
182
|
+
getStageZoom(): {
|
|
183
|
+
scale: number;
|
|
184
|
+
focusX: number;
|
|
185
|
+
focusY: number;
|
|
186
|
+
};
|
|
187
|
+
setStageZoomKeyframes(keyframes: Array<{
|
|
188
|
+
id: string;
|
|
189
|
+
time: number;
|
|
190
|
+
zoom: {
|
|
191
|
+
scale: number;
|
|
192
|
+
focusX: number;
|
|
193
|
+
focusY: number;
|
|
194
|
+
};
|
|
195
|
+
ease?: string;
|
|
196
|
+
}> | null): void;
|
|
197
|
+
getStageZoomKeyframes(): Array<{
|
|
198
|
+
id: string;
|
|
199
|
+
time: number;
|
|
200
|
+
zoom: {
|
|
201
|
+
scale: number;
|
|
202
|
+
focusX: number;
|
|
203
|
+
focusY: number;
|
|
204
|
+
};
|
|
205
|
+
ease?: string;
|
|
206
|
+
}>;
|
|
207
|
+
addElement(data: AddElementData): boolean;
|
|
208
|
+
removeElement(elementId: string): boolean;
|
|
209
|
+
updateElementTiming(elementId: string, start?: number, end?: number): boolean;
|
|
210
|
+
setElementTiming(elementId: string, startTime: number, duration: number, mediaStartTime?: number): void;
|
|
211
|
+
updateElementSrc(elementId: string, src: string): boolean;
|
|
212
|
+
updateElementLayer(elementId: string, zIndex: number): boolean;
|
|
213
|
+
updateElementBasePosition(elementId: string, x?: number, y?: number, scale?: number): boolean;
|
|
214
|
+
markTimelineDirty(): void;
|
|
215
|
+
isTimelineDirty(): boolean;
|
|
216
|
+
rebuildTimeline(): void;
|
|
217
|
+
ensureTimeline(): void;
|
|
218
|
+
enableRenderMode(): void;
|
|
219
|
+
disableRenderMode(): void;
|
|
220
|
+
renderSeek(time: number): void;
|
|
221
|
+
getElementVisibility(elementId: string): {
|
|
222
|
+
visible: boolean;
|
|
223
|
+
opacity?: number;
|
|
224
|
+
};
|
|
225
|
+
getVisibleElements(): Array<{
|
|
226
|
+
id: string;
|
|
227
|
+
tagName: string;
|
|
228
|
+
start: number;
|
|
229
|
+
end: number;
|
|
230
|
+
}>;
|
|
231
|
+
getRenderState(): {
|
|
232
|
+
time: number;
|
|
233
|
+
duration: number;
|
|
234
|
+
isPlaying: boolean;
|
|
235
|
+
renderMode: boolean;
|
|
236
|
+
timelineDirty: boolean;
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
export interface AddElementData {
|
|
240
|
+
id: string;
|
|
241
|
+
type: "video" | "image" | "text" | "audio" | "composition";
|
|
242
|
+
name?: string;
|
|
243
|
+
src?: string;
|
|
244
|
+
content?: string;
|
|
245
|
+
start: number;
|
|
246
|
+
end: number;
|
|
247
|
+
zIndex?: number;
|
|
248
|
+
x?: number;
|
|
249
|
+
y?: number;
|
|
250
|
+
scale?: number;
|
|
251
|
+
fontSize?: number;
|
|
252
|
+
color?: string;
|
|
253
|
+
textShadow?: boolean;
|
|
254
|
+
fontWeight?: number;
|
|
255
|
+
textOutline?: boolean;
|
|
256
|
+
textOutlineColor?: string;
|
|
257
|
+
textOutlineWidth?: number;
|
|
258
|
+
textHighlight?: boolean;
|
|
259
|
+
textHighlightColor?: string;
|
|
260
|
+
textHighlightPadding?: number;
|
|
261
|
+
textHighlightRadius?: number;
|
|
262
|
+
compositionId?: string;
|
|
263
|
+
sourceWidth?: number;
|
|
264
|
+
sourceHeight?: number;
|
|
265
|
+
isAroll?: boolean;
|
|
266
|
+
}
|
|
267
|
+
export interface ValidationResult {
|
|
268
|
+
valid: boolean;
|
|
269
|
+
errors: string[];
|
|
270
|
+
warnings: string[];
|
|
271
|
+
}
|
|
272
|
+
export interface CompositionAsset {
|
|
273
|
+
id: string;
|
|
274
|
+
name: string;
|
|
275
|
+
type: "composition";
|
|
276
|
+
src: string;
|
|
277
|
+
duration: number;
|
|
278
|
+
compositionId: string;
|
|
279
|
+
thumbnail?: string;
|
|
280
|
+
}
|
|
281
|
+
export interface Keyframe {
|
|
282
|
+
id: string;
|
|
283
|
+
time: number;
|
|
284
|
+
properties: Partial<KeyframeProperties>;
|
|
285
|
+
ease?: string;
|
|
286
|
+
}
|
|
287
|
+
export interface KeyframeProperties {
|
|
288
|
+
x: number;
|
|
289
|
+
y: number;
|
|
290
|
+
opacity: number;
|
|
291
|
+
scale: number;
|
|
292
|
+
scaleX: number;
|
|
293
|
+
scaleY: number;
|
|
294
|
+
rotation: number;
|
|
295
|
+
width: number;
|
|
296
|
+
height: number;
|
|
297
|
+
}
|
|
298
|
+
export interface ElementKeyframes {
|
|
299
|
+
elementId: string;
|
|
300
|
+
keyframes: Keyframe[];
|
|
301
|
+
}
|
|
302
|
+
export interface StageZoom {
|
|
303
|
+
scale: number;
|
|
304
|
+
focusX: number;
|
|
305
|
+
focusY: number;
|
|
306
|
+
}
|
|
307
|
+
export interface StageZoomKeyframe {
|
|
308
|
+
id: string;
|
|
309
|
+
time: number;
|
|
310
|
+
zoom: StageZoom;
|
|
311
|
+
ease?: string;
|
|
312
|
+
}
|
|
313
|
+
export declare function getDefaultStageZoom(resolution: CanvasResolution): StageZoom;
|
|
314
|
+
//# sourceMappingURL=core.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.types.d.ts","sourceRoot":"","sources":["../src/core.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// ── Shared cross-package types ──────────────────────────────────────────────
|
|
2
|
+
export const CANVAS_DIMENSIONS = {
|
|
3
|
+
landscape: { width: 1920, height: 1080 },
|
|
4
|
+
portrait: { width: 1080, height: 1920 },
|
|
5
|
+
};
|
|
6
|
+
export function isStringVariable(v) {
|
|
7
|
+
return v.type === "string";
|
|
8
|
+
}
|
|
9
|
+
export function isNumberVariable(v) {
|
|
10
|
+
return v.type === "number";
|
|
11
|
+
}
|
|
12
|
+
export function isColorVariable(v) {
|
|
13
|
+
return v.type === "color";
|
|
14
|
+
}
|
|
15
|
+
export function isBooleanVariable(v) {
|
|
16
|
+
return v.type === "boolean";
|
|
17
|
+
}
|
|
18
|
+
export function isEnumVariable(v) {
|
|
19
|
+
return v.type === "enum";
|
|
20
|
+
}
|
|
21
|
+
export function isTextElement(el) {
|
|
22
|
+
return el.type === "text";
|
|
23
|
+
}
|
|
24
|
+
export function isMediaElement(el) {
|
|
25
|
+
return el.type === "video" || el.type === "image" || el.type === "audio";
|
|
26
|
+
}
|
|
27
|
+
export function isCompositionElement(el) {
|
|
28
|
+
return el.type === "composition";
|
|
29
|
+
}
|
|
30
|
+
export const TIMELINE_COLORS = {
|
|
31
|
+
video: "#ec4899",
|
|
32
|
+
image: "#3b82f6",
|
|
33
|
+
text: "#06b6d4",
|
|
34
|
+
audio: "#10b981",
|
|
35
|
+
composition: "#f97316",
|
|
36
|
+
};
|
|
37
|
+
export const DEFAULT_DURATIONS = {
|
|
38
|
+
video: 5,
|
|
39
|
+
image: 5,
|
|
40
|
+
text: 2,
|
|
41
|
+
audio: 5,
|
|
42
|
+
composition: 5,
|
|
43
|
+
};
|
|
44
|
+
export function getDefaultStageZoom(resolution) {
|
|
45
|
+
const { width, height } = CANVAS_DIMENSIONS[resolution];
|
|
46
|
+
return {
|
|
47
|
+
scale: 1,
|
|
48
|
+
focusX: width / 2,
|
|
49
|
+
focusY: height / 2,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=core.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.types.js","sourceRoot":"","sources":["../src/core.types.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAuB/E,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACxC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;CAC/B,CAAC;AA+GX,MAAM,UAAU,gBAAgB,CAAC,CAAsB;IACrD,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAsB;IACrD,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAsB;IACpD,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,CAAsB;IACtD,OAAO,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAsB;IACnD,OAAO,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;AAC3B,CAAC;AAID,MAAM,UAAU,aAAa,CAAC,EAAmB;IAC/C,OAAO,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAmB;IAChD,OAAO,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EAAmB;IACtD,OAAO,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC;AACnC,CAAC;AAcD,MAAM,CAAC,MAAM,eAAe,GAAwC;IAClE,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,SAAS;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAwC;IACpE,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,WAAW,EAAE,CAAC;CACf,CAAC;AA+JF,MAAM,UAAU,mBAAmB,CAAC,UAA4B;IAC9D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxD,OAAO;QACL,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,KAAK,GAAG,CAAC;QACjB,MAAM,EAAE,MAAM,GAAG,CAAC;KACnB,CAAC;AACJ,CAAC"}
|