@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,21 @@
|
|
|
1
|
+
import type { TimelineElement, CanvasResolution, Keyframe, StageZoomKeyframe } from "../core.types";
|
|
2
|
+
import type { GsapAnimation } from "../parsers/gsapParser";
|
|
3
|
+
export interface SerializeOptions {
|
|
4
|
+
animations?: GsapAnimation[];
|
|
5
|
+
styles?: string;
|
|
6
|
+
generateDefaultAnimations?: boolean;
|
|
7
|
+
resolution?: CanvasResolution;
|
|
8
|
+
compositionId?: string;
|
|
9
|
+
keyframes?: Record<string, Keyframe[]>;
|
|
10
|
+
stageZoomKeyframes?: StageZoomKeyframe[];
|
|
11
|
+
includeScripts?: boolean;
|
|
12
|
+
includeStyles?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function generateHyperframesStyles(elements: TimelineElement[], resolution: CanvasResolution, customStyles?: string): {
|
|
15
|
+
coreCss: string;
|
|
16
|
+
customCss: string;
|
|
17
|
+
googleFontsLink: string;
|
|
18
|
+
};
|
|
19
|
+
export declare function generateGsapTimelineScript(elements: TimelineElement[], totalDuration: number, options?: SerializeOptions): string;
|
|
20
|
+
export declare function generateHyperframesHtml(elements: TimelineElement[], totalDuration: number, options?: SerializeOptions): string;
|
|
21
|
+
//# sourceMappingURL=hyperframes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyperframes.d.ts","sourceRoot":"","sources":["../../src/generators/hyperframes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAOvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAmC3D,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvC,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACzC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA+BD,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,eAAe,EAAE,EAC3B,UAAU,EAAE,gBAAgB,EAC5B,YAAY,CAAC,EAAE,MAAM,GACpB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CA8BjE;AA+CD,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,eAAe,EAAE,EAC3B,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,gBAAqB,GAC7B,MAAM,CA0FR;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,eAAe,EAAE,EAC3B,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,gBAAqB,GAC7B,MAAM,CAgGR"}
|
|
@@ -0,0 +1,572 @@
|
|
|
1
|
+
import { CANVAS_DIMENSIONS, isTextElement, isMediaElement, isCompositionElement, } from "../core.types";
|
|
2
|
+
import { serializeGsapAnimations, keyframesToGsapAnimations } from "../parsers/gsapParser";
|
|
3
|
+
import { GSAP_CDN, BASE_STYLES, ZOOM_CONTAINER_STYLES } from "../templates/constants";
|
|
4
|
+
const GOOGLE_FONTS_BASE = "https://fonts.googleapis.com/css2";
|
|
5
|
+
const FONT_WEIGHTS = {
|
|
6
|
+
Inter: "400;500;600;700;800;900",
|
|
7
|
+
Roboto: "400;500;700;900",
|
|
8
|
+
Montserrat: "400;500;600;700;800;900",
|
|
9
|
+
Poppins: "400;500;600;700;800;900",
|
|
10
|
+
"Bebas Neue": "400",
|
|
11
|
+
Oswald: "400;500;600;700",
|
|
12
|
+
Anton: "400",
|
|
13
|
+
"Playfair Display": "400;500;600;700;800;900",
|
|
14
|
+
Lora: "400;500;600;700",
|
|
15
|
+
Pacifico: "400",
|
|
16
|
+
"Permanent Marker": "400",
|
|
17
|
+
"Fira Code": "400;500;600;700",
|
|
18
|
+
};
|
|
19
|
+
function generateGoogleFontsUrl(fontFamilies) {
|
|
20
|
+
if (fontFamilies.length === 0)
|
|
21
|
+
return null;
|
|
22
|
+
const families = fontFamilies
|
|
23
|
+
.filter((f) => f in FONT_WEIGHTS)
|
|
24
|
+
.map((f) => {
|
|
25
|
+
const weights = FONT_WEIGHTS[f];
|
|
26
|
+
const encodedName = f.replace(/ /g, "+");
|
|
27
|
+
return `family=${encodedName}:wght@${weights}`;
|
|
28
|
+
});
|
|
29
|
+
if (families.length === 0)
|
|
30
|
+
return null;
|
|
31
|
+
return `${GOOGLE_FONTS_BASE}?${families.join("&")}&display=swap`;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Stage Positioning Conventions:
|
|
35
|
+
*
|
|
36
|
+
* 1. All elements are absolutely positioned relative to the #stage container
|
|
37
|
+
* 2. The #stage has position: relative and fixed dimensions (1920x1080 or 1080x1920)
|
|
38
|
+
* 3. Elements start with opacity: 0 and are revealed via GSAP animations
|
|
39
|
+
*
|
|
40
|
+
* Media Elements (video, image):
|
|
41
|
+
* - position: absolute (relative to #stage)
|
|
42
|
+
* - width: 100%, height: 100% (fill the stage)
|
|
43
|
+
* - object-fit: contain (preserve aspect ratio, centered, no cropping)
|
|
44
|
+
* - This ensures media is always visible and centered within the stage
|
|
45
|
+
*
|
|
46
|
+
* Text Elements:
|
|
47
|
+
* - position: absolute, width/height: 100%
|
|
48
|
+
* - Inner div uses flexbox to center content (selected via > div)
|
|
49
|
+
*
|
|
50
|
+
* Audio Elements:
|
|
51
|
+
* - position: absolute (invisible, for timing only)
|
|
52
|
+
*/
|
|
53
|
+
function sortElements(elements) {
|
|
54
|
+
return [...elements].sort((a, b) => {
|
|
55
|
+
if (a.zIndex !== b.zIndex) {
|
|
56
|
+
return (a.zIndex ?? 0) - (b.zIndex ?? 0);
|
|
57
|
+
}
|
|
58
|
+
return a.startTime - b.startTime;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
export function generateHyperframesStyles(elements, resolution, customStyles) {
|
|
62
|
+
const { width, height } = CANVAS_DIMENSIONS[resolution];
|
|
63
|
+
const sortedElements = sortElements(elements);
|
|
64
|
+
const elementStyles = sortedElements.map((el) => generateElementStyles(el)).join("\n");
|
|
65
|
+
// Collect unique font families from text elements
|
|
66
|
+
const usedFonts = new Set();
|
|
67
|
+
for (const el of sortedElements) {
|
|
68
|
+
if (isTextElement(el) && el.fontFamily) {
|
|
69
|
+
usedFonts.add(el.fontFamily);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Always include Inter as the default
|
|
73
|
+
usedFonts.add("Inter");
|
|
74
|
+
const googleFontsUrl = generateGoogleFontsUrl([...usedFonts]);
|
|
75
|
+
const googleFontsLink = googleFontsUrl
|
|
76
|
+
? `<link data-hf-fonts="true" rel="preconnect" href="https://fonts.googleapis.com">
|
|
77
|
+
<link data-hf-fonts="true" rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
78
|
+
<link data-hf-fonts="true" href="${googleFontsUrl}" rel="stylesheet">`
|
|
79
|
+
: "";
|
|
80
|
+
const coreCss = `${BASE_STYLES}
|
|
81
|
+
#stage { position: relative; width: ${width}px; height: ${height}px; overflow: hidden; background: #fff; }
|
|
82
|
+
#stage-zoom-container { ${ZOOM_CONTAINER_STYLES} }
|
|
83
|
+
${elementStyles}`.trim();
|
|
84
|
+
const customCss = customStyles?.trim() ? customStyles.trim() : "";
|
|
85
|
+
return { coreCss, customCss, googleFontsLink };
|
|
86
|
+
}
|
|
87
|
+
function generateElementStyles(element) {
|
|
88
|
+
const baseStyles = "position: absolute;";
|
|
89
|
+
if (isTextElement(element)) {
|
|
90
|
+
const fontSize = element.fontSize ?? 48;
|
|
91
|
+
const fontWeight = element.fontWeight ?? 700;
|
|
92
|
+
const fontFamily = element.fontFamily ?? "Inter";
|
|
93
|
+
const color = element.color ?? "white";
|
|
94
|
+
const textShadow = element.textShadow !== false ? "text-shadow: 2px 2px 4px rgba(0,0,0,0.8);" : "";
|
|
95
|
+
// Text outline using -webkit-text-stroke
|
|
96
|
+
const textOutline = element.textOutline
|
|
97
|
+
? `-webkit-text-stroke: ${element.textOutlineWidth ?? 2}px ${element.textOutlineColor ?? "#000000"}; paint-order: stroke fill;`
|
|
98
|
+
: "";
|
|
99
|
+
// Text highlight using background
|
|
100
|
+
const textHighlight = element.textHighlight
|
|
101
|
+
? `background-color: ${element.textHighlightColor ?? "yellow"}; padding: ${element.textHighlightPadding ?? 4}px ${(element.textHighlightPadding ?? 4) * 1.5}px; border-radius: ${element.textHighlightRadius ?? 4}px; box-decoration-break: clone; -webkit-box-decoration-break: clone;`
|
|
102
|
+
: "";
|
|
103
|
+
return ` #${element.id} { ${baseStyles} width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; pointer-events: none; }
|
|
104
|
+
#${element.id} > div { font-family: '${fontFamily}', sans-serif; font-size: ${fontSize}px; font-weight: ${fontWeight}; color: ${color}; ${textShadow} ${textOutline} ${textHighlight} pointer-events: auto; cursor: grab; white-space: pre-wrap; text-align: center; }`;
|
|
105
|
+
}
|
|
106
|
+
switch (element.type) {
|
|
107
|
+
case "video":
|
|
108
|
+
// Videos fill the stage with standard CSS positioning (0,0 = top-left)
|
|
109
|
+
return ` #${element.id} { ${baseStyles} width: 100%; height: 100%; object-fit: contain; transform-origin: center center; }`;
|
|
110
|
+
case "image":
|
|
111
|
+
// Images use standard CSS positioning (0,0 = top-left)
|
|
112
|
+
return ` #${element.id} { ${baseStyles} max-width: 100%; max-height: 100%; transform-origin: center center; }`;
|
|
113
|
+
case "audio":
|
|
114
|
+
return ` #${element.id} { ${baseStyles} }`;
|
|
115
|
+
case "composition":
|
|
116
|
+
// Compositions use standard CSS positioning (0,0 = top-left)
|
|
117
|
+
return ` #${element.id} { ${baseStyles} width: 100%; height: 100%; position: absolute; }`;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
export function generateGsapTimelineScript(elements, totalDuration, options = {}) {
|
|
121
|
+
const { animations, generateDefaultAnimations = true, resolution = "landscape", keyframes, stageZoomKeyframes, } = options;
|
|
122
|
+
const { width, height } = CANVAS_DIMENSIONS[resolution];
|
|
123
|
+
const sortedElements = sortElements(elements);
|
|
124
|
+
const hasMedia = sortedElements.some((el) => el.type === "video" || el.type === "audio");
|
|
125
|
+
// Convert keyframes to GSAP animations
|
|
126
|
+
let keyframeAnimations = [];
|
|
127
|
+
if (keyframes) {
|
|
128
|
+
for (const element of sortedElements) {
|
|
129
|
+
const elementKeyframes = keyframes[element.id];
|
|
130
|
+
if (elementKeyframes && elementKeyframes.length > 0) {
|
|
131
|
+
const baseScale = isMediaElement(element) || isCompositionElement(element) ? (element.scale ?? 1) : 1;
|
|
132
|
+
const converted = keyframesToGsapAnimations(element.id, elementKeyframes, element.startTime, {
|
|
133
|
+
x: element.x ?? 0,
|
|
134
|
+
y: element.y ?? 0,
|
|
135
|
+
scale: baseScale,
|
|
136
|
+
});
|
|
137
|
+
keyframeAnimations = keyframeAnimations.concat(converted);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Generate zoom keyframes GSAP animations
|
|
142
|
+
const zoomAnimations = generateZoomGsapAnimations(stageZoomKeyframes || [], width, height);
|
|
143
|
+
// Generate initial position/scale set() calls for all elements
|
|
144
|
+
// This must be included regardless of keyframe animations
|
|
145
|
+
const initialPositionSets = generateInitialPositionSets(sortedElements, keyframes);
|
|
146
|
+
// Generate visibility animations for elements without keyframes
|
|
147
|
+
// When using keyframes path, elements without keyframes need explicit visibility
|
|
148
|
+
const visibilityAnimations = generateVisibilityForElementsWithoutKeyframes(sortedElements, keyframes);
|
|
149
|
+
let gsapScript;
|
|
150
|
+
if (animations && animations.length > 0) {
|
|
151
|
+
// Merge provided animations with keyframe animations
|
|
152
|
+
const allAnimations = [...animations, ...keyframeAnimations];
|
|
153
|
+
gsapScript = serializeGsapAnimations(allAnimations, "tl", {
|
|
154
|
+
includeMediaSync: hasMedia,
|
|
155
|
+
});
|
|
156
|
+
// Prepend initial positions and visibility for elements without keyframes, append zoom animations
|
|
157
|
+
const prependAnimations = [initialPositionSets, visibilityAnimations].filter(Boolean).join("\n");
|
|
158
|
+
if (prependAnimations) {
|
|
159
|
+
gsapScript = gsapScript.replace("const tl = gsap.timeline({ paused: true });", `const tl = gsap.timeline({ paused: true });\n${prependAnimations}`);
|
|
160
|
+
}
|
|
161
|
+
if (zoomAnimations) {
|
|
162
|
+
gsapScript += "\n" + zoomAnimations;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
else if (keyframeAnimations.length > 0) {
|
|
166
|
+
// Use only keyframe animations
|
|
167
|
+
gsapScript = serializeGsapAnimations(keyframeAnimations, "tl", {
|
|
168
|
+
includeMediaSync: hasMedia,
|
|
169
|
+
});
|
|
170
|
+
// Prepend initial positions and visibility for elements without keyframes, append zoom animations
|
|
171
|
+
const prependAnimations = [initialPositionSets, visibilityAnimations].filter(Boolean).join("\n");
|
|
172
|
+
if (prependAnimations) {
|
|
173
|
+
gsapScript = gsapScript.replace("const tl = gsap.timeline({ paused: true });", `const tl = gsap.timeline({ paused: true });\n${prependAnimations}`);
|
|
174
|
+
}
|
|
175
|
+
if (zoomAnimations) {
|
|
176
|
+
gsapScript += "\n" + zoomAnimations;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else if (generateDefaultAnimations) {
|
|
180
|
+
gsapScript = generateDefaultGsapAnimations(sortedElements, totalDuration, stageZoomKeyframes, width, height);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
gsapScript = `
|
|
184
|
+
const tl = gsap.timeline({ paused: true });
|
|
185
|
+
${initialPositionSets ? initialPositionSets + "\n" : ""} tl.to({}, { duration: ${totalDuration || 1} });
|
|
186
|
+
`;
|
|
187
|
+
// Append zoom animations
|
|
188
|
+
if (zoomAnimations) {
|
|
189
|
+
gsapScript += "\n" + zoomAnimations;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return gsapScript;
|
|
193
|
+
}
|
|
194
|
+
export function generateHyperframesHtml(elements, totalDuration, options = {}) {
|
|
195
|
+
const { animations, styles, generateDefaultAnimations = true, resolution = "landscape", compositionId = `comp-${Date.now()}`, keyframes, stageZoomKeyframes, includeScripts = false, includeStyles = false, } = options;
|
|
196
|
+
const { width, height } = CANVAS_DIMENSIONS[resolution];
|
|
197
|
+
// Include zoom keyframes in duration calculation
|
|
198
|
+
const maxZoomTime = stageZoomKeyframes && stageZoomKeyframes.length > 0 ? Math.max(...stageZoomKeyframes.map((kf) => kf.time)) : 0;
|
|
199
|
+
const calculatedDuration = elements.length > 0
|
|
200
|
+
? Math.max(...elements.map((el) => el.startTime + el.duration), totalDuration, maxZoomTime)
|
|
201
|
+
: Math.max(totalDuration, maxZoomTime);
|
|
202
|
+
const sortedElements = sortElements(elements);
|
|
203
|
+
const elementsHtml = sortedElements.map((el) => generateElementHtml(el, keyframes?.[el.id])).join("\n ");
|
|
204
|
+
const customStyles = styles || "";
|
|
205
|
+
// Serialize zoom keyframes to data attribute
|
|
206
|
+
const zoomKeyframesAttr = stageZoomKeyframes && stageZoomKeyframes.length > 0
|
|
207
|
+
? ` data-zoom-keyframes='${JSON.stringify(stageZoomKeyframes).replace(/'/g, "'")}'`
|
|
208
|
+
: "";
|
|
209
|
+
const { coreCss, customCss, googleFontsLink } = generateHyperframesStyles(sortedElements, resolution, customStyles);
|
|
210
|
+
const gsapScript = includeScripts
|
|
211
|
+
? generateGsapTimelineScript(sortedElements, totalDuration, {
|
|
212
|
+
animations,
|
|
213
|
+
generateDefaultAnimations,
|
|
214
|
+
resolution,
|
|
215
|
+
keyframes,
|
|
216
|
+
stageZoomKeyframes,
|
|
217
|
+
})
|
|
218
|
+
: "";
|
|
219
|
+
const gsapCdnTag = includeScripts ? ` <script src="${GSAP_CDN}"></script>` : "";
|
|
220
|
+
const gsapScriptTag = includeScripts
|
|
221
|
+
? ` <script>
|
|
222
|
+
${gsapScript}
|
|
223
|
+
</script>`
|
|
224
|
+
: "";
|
|
225
|
+
const styleTags = includeStyles
|
|
226
|
+
? [
|
|
227
|
+
coreCss
|
|
228
|
+
? ` <style data-hf-core="true">
|
|
229
|
+
${coreCss.split("\n").join("\n ")}
|
|
230
|
+
</style>`
|
|
231
|
+
: "",
|
|
232
|
+
customCss
|
|
233
|
+
? ` <style data-hf-custom="true">
|
|
234
|
+
${customCss.split("\n").join("\n ")}
|
|
235
|
+
</style>`
|
|
236
|
+
: "",
|
|
237
|
+
]
|
|
238
|
+
.filter(Boolean)
|
|
239
|
+
.join("\n")
|
|
240
|
+
: "";
|
|
241
|
+
const customStylesAttr = customStyles
|
|
242
|
+
? ` data-custom-styles='${JSON.stringify(customStyles).replace(/'/g, "'")}'`
|
|
243
|
+
: "";
|
|
244
|
+
const resolutionAttr = ` data-resolution="${resolution}"`;
|
|
245
|
+
return `<!DOCTYPE html>
|
|
246
|
+
<html data-composition-id="${compositionId}" data-composition-duration="${calculatedDuration}"${resolutionAttr}${customStylesAttr}>
|
|
247
|
+
<head>
|
|
248
|
+
<meta charset="UTF-8">
|
|
249
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
250
|
+
${includeStyles ? googleFontsLink : ""}
|
|
251
|
+
${gsapCdnTag}
|
|
252
|
+
${styleTags ? ` ${styleTags}` : ""}
|
|
253
|
+
</head>
|
|
254
|
+
<body>
|
|
255
|
+
<div id="stage">
|
|
256
|
+
<div id="stage-zoom-container"${zoomKeyframesAttr}>
|
|
257
|
+
${elementsHtml}
|
|
258
|
+
</div>
|
|
259
|
+
</div>
|
|
260
|
+
${gsapScriptTag}
|
|
261
|
+
</body>
|
|
262
|
+
</html>`;
|
|
263
|
+
}
|
|
264
|
+
function calculateZoomTransform(scale, focusX, focusY, canvasWidth, canvasHeight) {
|
|
265
|
+
const centerX = canvasWidth / 2;
|
|
266
|
+
const centerY = canvasHeight / 2;
|
|
267
|
+
const x = centerX - focusX * scale;
|
|
268
|
+
const y = centerY - focusY * scale;
|
|
269
|
+
return { x, y };
|
|
270
|
+
}
|
|
271
|
+
function generateZoomGsapAnimations(zoomKeyframes, canvasWidth, canvasHeight) {
|
|
272
|
+
if (!zoomKeyframes || zoomKeyframes.length === 0) {
|
|
273
|
+
return "";
|
|
274
|
+
}
|
|
275
|
+
const sortedKeyframes = [...zoomKeyframes].sort((a, b) => a.time - b.time);
|
|
276
|
+
const animations = [];
|
|
277
|
+
animations.push(" // Stage zoom animations");
|
|
278
|
+
for (let i = 0; i < sortedKeyframes.length; i++) {
|
|
279
|
+
const kf = sortedKeyframes[i];
|
|
280
|
+
if (!kf)
|
|
281
|
+
continue;
|
|
282
|
+
const { x, y } = calculateZoomTransform(kf.zoom.scale, kf.zoom.focusX, kf.zoom.focusY, canvasWidth, canvasHeight);
|
|
283
|
+
if (i === 0) {
|
|
284
|
+
animations.push(` tl.set("#stage-zoom-container", { scale: ${kf.zoom.scale}, x: ${x}, y: ${y} }, ${kf.time});`);
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
const prevKf = sortedKeyframes[i - 1];
|
|
288
|
+
if (!prevKf)
|
|
289
|
+
continue;
|
|
290
|
+
const duration = kf.time - prevKf.time;
|
|
291
|
+
const ease = kf.ease ? `, ease: "${kf.ease}"` : "";
|
|
292
|
+
animations.push(` tl.to("#stage-zoom-container", { scale: ${kf.zoom.scale}, x: ${x}, y: ${y}, duration: ${duration}${ease} }, ${prevKf.time});`);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
return animations.join("\n");
|
|
296
|
+
}
|
|
297
|
+
function generateElementHtml(element, keyframes) {
|
|
298
|
+
const baseAttrs = [
|
|
299
|
+
`id="${element.id}"`,
|
|
300
|
+
`data-start="${element.startTime}"`,
|
|
301
|
+
`data-end="${element.startTime + element.duration}"`,
|
|
302
|
+
`data-layer="${element.zIndex}"`,
|
|
303
|
+
`data-name="${element.name}"`,
|
|
304
|
+
];
|
|
305
|
+
// Serialize transform properties (x, y, scale, opacity) if non-default
|
|
306
|
+
if (element.x !== undefined && element.x !== 0) {
|
|
307
|
+
baseAttrs.push(`data-x="${element.x}"`);
|
|
308
|
+
}
|
|
309
|
+
if (element.y !== undefined && element.y !== 0) {
|
|
310
|
+
baseAttrs.push(`data-y="${element.y}"`);
|
|
311
|
+
}
|
|
312
|
+
if (element.scale !== undefined && element.scale !== 1) {
|
|
313
|
+
baseAttrs.push(`data-scale="${element.scale}"`);
|
|
314
|
+
}
|
|
315
|
+
if (element.opacity !== undefined && element.opacity !== 1) {
|
|
316
|
+
baseAttrs.push(`data-opacity="${element.opacity}"`);
|
|
317
|
+
}
|
|
318
|
+
// Serialize keyframes to data attribute if present
|
|
319
|
+
if (keyframes && keyframes.length > 0) {
|
|
320
|
+
const kfJson = JSON.stringify(keyframes);
|
|
321
|
+
baseAttrs.push(`data-keyframes='${kfJson.replace(/'/g, "'")}'`);
|
|
322
|
+
}
|
|
323
|
+
if (isTextElement(element)) {
|
|
324
|
+
const textAttrs = [...baseAttrs, `data-type="text"`];
|
|
325
|
+
if (element.color) {
|
|
326
|
+
textAttrs.push(`data-color="${element.color}"`);
|
|
327
|
+
}
|
|
328
|
+
if (element.fontSize) {
|
|
329
|
+
textAttrs.push(`data-font-size="${element.fontSize}"`);
|
|
330
|
+
}
|
|
331
|
+
if (element.fontWeight) {
|
|
332
|
+
textAttrs.push(`data-font-weight="${element.fontWeight}"`);
|
|
333
|
+
}
|
|
334
|
+
if (element.fontFamily) {
|
|
335
|
+
textAttrs.push(`data-font-family="${element.fontFamily}"`);
|
|
336
|
+
}
|
|
337
|
+
if (element.textShadow === false) {
|
|
338
|
+
textAttrs.push(`data-text-shadow="false"`);
|
|
339
|
+
}
|
|
340
|
+
if (element.textOutline) {
|
|
341
|
+
textAttrs.push(`data-text-outline="true"`);
|
|
342
|
+
if (element.textOutlineColor) {
|
|
343
|
+
textAttrs.push(`data-text-outline-color="${element.textOutlineColor}"`);
|
|
344
|
+
}
|
|
345
|
+
if (element.textOutlineWidth) {
|
|
346
|
+
textAttrs.push(`data-text-outline-width="${element.textOutlineWidth}"`);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
if (element.textHighlight) {
|
|
350
|
+
textAttrs.push(`data-text-highlight="true"`);
|
|
351
|
+
if (element.textHighlightColor) {
|
|
352
|
+
textAttrs.push(`data-text-highlight-color="${element.textHighlightColor}"`);
|
|
353
|
+
}
|
|
354
|
+
if (element.textHighlightPadding) {
|
|
355
|
+
textAttrs.push(`data-text-highlight-padding="${element.textHighlightPadding}"`);
|
|
356
|
+
}
|
|
357
|
+
if (element.textHighlightRadius) {
|
|
358
|
+
textAttrs.push(`data-text-highlight-radius="${element.textHighlightRadius}"`);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
const content = element.content || element.name;
|
|
362
|
+
return `<div ${textAttrs.join(" ")}><div>${content}</div></div>`;
|
|
363
|
+
}
|
|
364
|
+
if (isCompositionElement(element)) {
|
|
365
|
+
const compositionAttrs = [
|
|
366
|
+
...baseAttrs,
|
|
367
|
+
`data-type="composition"`,
|
|
368
|
+
`data-composition-id="${element.compositionId}"`,
|
|
369
|
+
];
|
|
370
|
+
if (element.sourceDuration) {
|
|
371
|
+
compositionAttrs.push(`data-source-duration="${element.sourceDuration}"`);
|
|
372
|
+
}
|
|
373
|
+
if (element.sourceWidth) {
|
|
374
|
+
compositionAttrs.push(`data-source-width="${element.sourceWidth}"`);
|
|
375
|
+
}
|
|
376
|
+
if (element.sourceHeight) {
|
|
377
|
+
compositionAttrs.push(`data-source-height="${element.sourceHeight}"`);
|
|
378
|
+
}
|
|
379
|
+
if (element.variableValues && Object.keys(element.variableValues).length > 0) {
|
|
380
|
+
const varJson = JSON.stringify(element.variableValues);
|
|
381
|
+
compositionAttrs.push(`data-variable-values='${varJson.replace(/'/g, "'")}'`);
|
|
382
|
+
}
|
|
383
|
+
const attrs = compositionAttrs.join(" ");
|
|
384
|
+
// Build iframe src with variable values as query params if present
|
|
385
|
+
// Strip any existing query params first to avoid duplication
|
|
386
|
+
let iframeSrc = element.src.split("?")[0];
|
|
387
|
+
if (element.variableValues && Object.keys(element.variableValues).length > 0) {
|
|
388
|
+
const params = new URLSearchParams();
|
|
389
|
+
for (const [key, value] of Object.entries(element.variableValues)) {
|
|
390
|
+
params.set(key, String(value));
|
|
391
|
+
}
|
|
392
|
+
iframeSrc = `${iframeSrc}?${params.toString()}`;
|
|
393
|
+
}
|
|
394
|
+
// Motion designs are full-screen overlays - always use 100% sizing
|
|
395
|
+
// The motion design HTML handles its own internal positioning
|
|
396
|
+
// Wrap iframe in container with click overlay for selection
|
|
397
|
+
return `<div ${attrs} style="width: 100%; height: 100%;">
|
|
398
|
+
<iframe src="${iframeSrc}" sandbox="allow-scripts allow-same-origin" style="width: 100%; height: 100%; border: none; pointer-events: none;"></iframe>
|
|
399
|
+
<div class="composition-click-overlay" style="position: absolute; inset: 0; cursor: pointer;"></div>
|
|
400
|
+
</div>`;
|
|
401
|
+
}
|
|
402
|
+
if (isMediaElement(element)) {
|
|
403
|
+
if (element.mediaStartTime) {
|
|
404
|
+
baseAttrs.push(`data-media-start="${element.mediaStartTime}"`);
|
|
405
|
+
}
|
|
406
|
+
if (element.sourceDuration) {
|
|
407
|
+
baseAttrs.push(`data-source-duration="${element.sourceDuration}"`);
|
|
408
|
+
}
|
|
409
|
+
if (element.isAroll) {
|
|
410
|
+
baseAttrs.push(`data-aroll="true"`);
|
|
411
|
+
}
|
|
412
|
+
if (element.volume !== undefined && element.volume !== 1) {
|
|
413
|
+
baseAttrs.push(`data-volume="${element.volume}"`);
|
|
414
|
+
}
|
|
415
|
+
if (element.type === "video" && element.hasAudio) {
|
|
416
|
+
baseAttrs.push(`data-has-audio="true"`);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
const attrs = baseAttrs.join(" ");
|
|
420
|
+
switch (element.type) {
|
|
421
|
+
case "video":
|
|
422
|
+
return `<video ${attrs} src="${element.src}" playsinline></video>`;
|
|
423
|
+
case "image":
|
|
424
|
+
return `<img ${attrs} src="${element.src}" alt="${element.name}" />`;
|
|
425
|
+
case "audio":
|
|
426
|
+
return `<audio ${attrs} src="${element.src}"></audio>`;
|
|
427
|
+
default:
|
|
428
|
+
return "";
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* Generate initial position sets for elements.
|
|
433
|
+
*
|
|
434
|
+
* Center-based coordinate system with standard CSS origin:
|
|
435
|
+
* - (0, 0) = top-left corner of the canvas
|
|
436
|
+
* - (960, 540) = center of canvas (landscape 1920x1080)
|
|
437
|
+
* - x/y specifies where the element's CENTER goes (not top-left corner)
|
|
438
|
+
*
|
|
439
|
+
* Note: xPercent: -50, yPercent: -50 is applied once at player init via
|
|
440
|
+
* _initializeElementCentering(), so we only set x, y, scale here.
|
|
441
|
+
* This keeps generated timeline code clean (no repeated xPercent/yPercent).
|
|
442
|
+
*/
|
|
443
|
+
function generateInitialPositionSets(elements, keyframes) {
|
|
444
|
+
const sets = [];
|
|
445
|
+
const timeEpsilon = 0.001;
|
|
446
|
+
for (const el of elements) {
|
|
447
|
+
const elementKeyframes = keyframes?.[el.id];
|
|
448
|
+
const hasBaseKeyframe = elementKeyframes?.some((kf) => Math.abs(kf.time) <= timeEpsilon &&
|
|
449
|
+
(kf.properties.x !== undefined || kf.properties.y !== undefined || kf.properties.scale !== undefined));
|
|
450
|
+
const xVal = el.x ?? 0;
|
|
451
|
+
const yVal = el.y ?? 0;
|
|
452
|
+
const scaleVal = isMediaElement(el) ? (el.scale ?? 1) : 1;
|
|
453
|
+
// Audio elements don't need positioning
|
|
454
|
+
if (el.type === "audio")
|
|
455
|
+
continue;
|
|
456
|
+
// Composition elements (motion designs) are full-screen overlays
|
|
457
|
+
// They don't need x/y/scale positioning - the HTML handles internal layout
|
|
458
|
+
if (isCompositionElement(el))
|
|
459
|
+
continue;
|
|
460
|
+
// Skip if element has a base keyframe that will handle positioning
|
|
461
|
+
if (hasBaseKeyframe) {
|
|
462
|
+
continue;
|
|
463
|
+
}
|
|
464
|
+
// Set position and scale (xPercent/yPercent applied at player init)
|
|
465
|
+
if (scaleVal !== 1) {
|
|
466
|
+
sets.push(` tl.set("#${el.id}", { x: ${xVal}, y: ${yVal}, scale: ${scaleVal} }, 0);`);
|
|
467
|
+
}
|
|
468
|
+
else if (xVal !== 0 || yVal !== 0) {
|
|
469
|
+
sets.push(` tl.set("#${el.id}", { x: ${xVal}, y: ${yVal} }, 0);`);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
return sets.length > 0 ? sets.join("\n") : "";
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Generates visibility bookends for ALL elements to ensure they appear/disappear
|
|
476
|
+
* at the correct times. Elements with keyframes still need visibility bookends
|
|
477
|
+
* because keyframesToGsapAnimations only handles property animations, not visibility.
|
|
478
|
+
*
|
|
479
|
+
* If opacity keyframes exist, the first keyframe defines the base.
|
|
480
|
+
*/
|
|
481
|
+
function generateVisibilityForElementsWithoutKeyframes(elements, keyframes) {
|
|
482
|
+
const animations = [];
|
|
483
|
+
for (const el of elements) {
|
|
484
|
+
const elementKeyframes = keyframes?.[el.id];
|
|
485
|
+
const opacityKeyframes = elementKeyframes?.filter((kf) => kf.properties.opacity !== undefined) || [];
|
|
486
|
+
const start = el.startTime;
|
|
487
|
+
const end = el.startTime + el.duration;
|
|
488
|
+
const safeName = el.name.replace(/[\r\n]+/g, " ");
|
|
489
|
+
animations.push(` // ${safeName} (visibility)`);
|
|
490
|
+
animations.push(` tl.set("#${el.id}", { visibility: "hidden" }, 0);`);
|
|
491
|
+
let elementOpacity = el.opacity ?? 1;
|
|
492
|
+
if (opacityKeyframes.length > 0) {
|
|
493
|
+
const firstOpacityKeyframe = [...opacityKeyframes].sort((a, b) => a.time - b.time)[0];
|
|
494
|
+
if (firstOpacityKeyframe?.properties.opacity !== undefined) {
|
|
495
|
+
elementOpacity = firstOpacityKeyframe.properties.opacity;
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
// Only include opacity in visibility bookend if non-default or has opacity keyframes
|
|
499
|
+
const needsOpacity = elementOpacity !== 1 || opacityKeyframes.length > 0;
|
|
500
|
+
if (needsOpacity) {
|
|
501
|
+
animations.push(` tl.set("#${el.id}", { visibility: "visible", opacity: ${elementOpacity} }, ${start});`);
|
|
502
|
+
}
|
|
503
|
+
else {
|
|
504
|
+
animations.push(` tl.set("#${el.id}", { visibility: "visible" }, ${start});`);
|
|
505
|
+
}
|
|
506
|
+
animations.push(` tl.set("#${el.id}", { visibility: "hidden" }, ${end});`);
|
|
507
|
+
}
|
|
508
|
+
return animations.length > 0 ? animations.join("\n") : "";
|
|
509
|
+
}
|
|
510
|
+
function generateDefaultGsapAnimations(elements, totalDuration, stageZoomKeyframes, canvasWidth, canvasHeight) {
|
|
511
|
+
if (elements.length === 0 && (!stageZoomKeyframes || stageZoomKeyframes.length === 0)) {
|
|
512
|
+
return `
|
|
513
|
+
const tl = gsap.timeline({ paused: true });
|
|
514
|
+
tl.to({}, { duration: ${totalDuration || 1} });
|
|
515
|
+
`;
|
|
516
|
+
}
|
|
517
|
+
const animations = [];
|
|
518
|
+
// First, set initial positions and scales for elements with x/y offsets or scale
|
|
519
|
+
const initialPositionSets = generateInitialPositionSets(elements);
|
|
520
|
+
if (initialPositionSets) {
|
|
521
|
+
animations.push(initialPositionSets);
|
|
522
|
+
}
|
|
523
|
+
for (const el of elements) {
|
|
524
|
+
const start = el.startTime;
|
|
525
|
+
const end = el.startTime + el.duration;
|
|
526
|
+
const safeName = el.name.replace(/[\r\n]+/g, " ");
|
|
527
|
+
const elementOpacity = el.opacity ?? 1;
|
|
528
|
+
animations.push(` // ${safeName}`);
|
|
529
|
+
animations.push(` tl.set("#${el.id}", { visibility: "hidden" }, 0);`);
|
|
530
|
+
// Only include opacity if non-default
|
|
531
|
+
if (elementOpacity !== 1) {
|
|
532
|
+
animations.push(` tl.set("#${el.id}", { visibility: "visible", opacity: ${elementOpacity} }, ${start});`);
|
|
533
|
+
}
|
|
534
|
+
else {
|
|
535
|
+
animations.push(` tl.set("#${el.id}", { visibility: "visible" }, ${start});`);
|
|
536
|
+
}
|
|
537
|
+
animations.push(` tl.set("#${el.id}", { visibility: "hidden" }, ${end});`);
|
|
538
|
+
}
|
|
539
|
+
const mediaElements = elements.filter((el) => el.type === "video" || el.type === "audio");
|
|
540
|
+
const mediaSync = mediaElements.length > 0
|
|
541
|
+
? `
|
|
542
|
+
// Sync media playback
|
|
543
|
+
tl.eventCallback("onUpdate", function() {
|
|
544
|
+
const time = tl.time();
|
|
545
|
+
document.querySelectorAll("video[data-start], audio[data-start]").forEach(function(media) {
|
|
546
|
+
const start = parseFloat(media.dataset.start);
|
|
547
|
+
const end = parseFloat(media.dataset.end) || Infinity;
|
|
548
|
+
const mediaTime = time - start;
|
|
549
|
+
if (time >= start && time < end) {
|
|
550
|
+
if (Math.abs(media.currentTime - mediaTime) > 0.1) {
|
|
551
|
+
media.currentTime = mediaTime;
|
|
552
|
+
}
|
|
553
|
+
if (media.paused && !tl.paused()) {
|
|
554
|
+
media.play().catch(function() {});
|
|
555
|
+
}
|
|
556
|
+
} else if (!media.paused) {
|
|
557
|
+
media.pause();
|
|
558
|
+
}
|
|
559
|
+
});
|
|
560
|
+
});`
|
|
561
|
+
: "";
|
|
562
|
+
// Generate zoom animations if present
|
|
563
|
+
const zoomAnimations = stageZoomKeyframes && stageZoomKeyframes.length > 0 && canvasWidth && canvasHeight
|
|
564
|
+
? "\n" + generateZoomGsapAnimations(stageZoomKeyframes, canvasWidth, canvasHeight)
|
|
565
|
+
: "";
|
|
566
|
+
return `
|
|
567
|
+
const tl = gsap.timeline({ paused: true });
|
|
568
|
+
${animations.join("\n")}
|
|
569
|
+
${mediaSync}${zoomAnimations}
|
|
570
|
+
`;
|
|
571
|
+
}
|
|
572
|
+
//# sourceMappingURL=hyperframes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyperframes.js","sourceRoot":"","sources":["../../src/generators/hyperframes.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEtF,MAAM,iBAAiB,GAAG,mCAAmC,CAAC;AAC9D,MAAM,YAAY,GAA2B;IAC3C,KAAK,EAAE,yBAAyB;IAChC,MAAM,EAAE,iBAAiB;IACzB,UAAU,EAAE,yBAAyB;IACrC,OAAO,EAAE,yBAAyB;IAClC,YAAY,EAAE,KAAK;IACnB,MAAM,EAAE,iBAAiB;IACzB,KAAK,EAAE,KAAK;IACZ,kBAAkB,EAAE,yBAAyB;IAC7C,IAAI,EAAE,iBAAiB;IACvB,QAAQ,EAAE,KAAK;IACf,kBAAkB,EAAE,KAAK;IACzB,WAAW,EAAE,iBAAiB;CAC/B,CAAC;AAEF,SAAS,sBAAsB,CAAC,YAAsB;IACpD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,MAAM,QAAQ,GAAG,YAAY;SAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,YAAY,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzC,OAAO,UAAU,WAAW,SAAS,OAAO,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;IAEL,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,GAAG,iBAAiB,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC;AACnE,CAAC;AAcD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAS,YAAY,CAAC,QAA2B;IAC/C,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1B,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,QAA2B,EAC3B,UAA4B,EAC5B,YAAqB;IAErB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEvF,kDAAkD;IAClD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;QAChC,IAAI,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;YACvC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,sCAAsC;IACtC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,MAAM,cAAc,GAAG,sBAAsB,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAE9D,MAAM,eAAe,GAAG,cAAc;QACpC,CAAC,CAAC;;qCAE+B,cAAc,qBAAqB;QACpE,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,OAAO,GAAG,GAAG,WAAW;sCACM,KAAK,eAAe,MAAM;0BACtC,qBAAqB;EAC7C,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC;IAEvB,MAAM,SAAS,GAAG,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAElE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAwB;IACrD,MAAM,UAAU,GAAG,qBAAqB,CAAC;IAEzC,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC;QAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC;QACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC;QACvC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,EAAE,CAAC;QAEnG,yCAAyC;QACzC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW;YACrC,CAAC,CAAC,wBAAwB,OAAO,CAAC,gBAAgB,IAAI,CAAC,MACnD,OAAO,CAAC,gBAAgB,IAAI,SAC9B,6BAA6B;YAC/B,CAAC,CAAC,EAAE,CAAC;QAEP,kCAAkC;QAClC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa;YACzC,CAAC,CAAC,qBAAqB,OAAO,CAAC,kBAAkB,IAAI,QAAQ,cAAc,OAAO,CAAC,oBAAoB,IAAI,CAAC,MACxG,CAAC,OAAO,CAAC,oBAAoB,IAAI,CAAC,CAAC,GAAG,GACxC,sBACE,OAAO,CAAC,mBAAmB,IAAI,CACjC,uEAAuE;YACzE,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO,QAAQ,OAAO,CAAC,EAAE,MAAM,UAAU;OACtC,OAAO,CAAC,EAAE,0BAA0B,UAAU,6BAA6B,QAAQ,oBAAoB,UAAU,YAAY,KAAK,KAAK,UAAU,IAAI,WAAW,IAAI,aAAa,mFAAmF,CAAC;IAC1Q,CAAC;IAED,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,OAAO;YACV,uEAAuE;YACvE,OAAO,QAAQ,OAAO,CAAC,EAAE,MAAM,UAAU,qFAAqF,CAAC;QACjI,KAAK,OAAO;YACV,uDAAuD;YACvD,OAAO,QAAQ,OAAO,CAAC,EAAE,MAAM,UAAU,wEAAwE,CAAC;QACpH,KAAK,OAAO;YACV,OAAO,QAAQ,OAAO,CAAC,EAAE,MAAM,UAAU,IAAI,CAAC;QAChD,KAAK,aAAa;YAChB,6DAA6D;YAC7D,OAAO,QAAQ,OAAO,CAAC,EAAE,MAAM,UAAU,mDAAmD,CAAC;IACjG,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,QAA2B,EAC3B,aAAqB,EACrB,UAA4B,EAAE;IAE9B,MAAM,EACJ,UAAU,EACV,yBAAyB,GAAG,IAAI,EAChC,UAAU,GAAG,WAAW,EACxB,SAAS,EACT,kBAAkB,GACnB,GAAG,OAAO,CAAC;IAEZ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAE9C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAEzF,uCAAuC;IACvC,IAAI,kBAAkB,GAAoB,EAAE,CAAC;IAC7C,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpD,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtG,MAAM,SAAS,GAAG,yBAAyB,CAAC,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,SAAS,EAAE;oBAC3F,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;oBACjB,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;oBACjB,KAAK,EAAE,SAAS;iBACjB,CAAC,CAAC;gBACH,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,MAAM,cAAc,GAAG,0BAA0B,CAAC,kBAAkB,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAE3F,+DAA+D;IAC/D,0DAA0D;IAC1D,MAAM,mBAAmB,GAAG,2BAA2B,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAEnF,gEAAgE;IAChE,iFAAiF;IACjF,MAAM,oBAAoB,GAAG,6CAA6C,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAEtG,IAAI,UAAkB,CAAC;IACvB,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,qDAAqD;QACrD,MAAM,aAAa,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,kBAAkB,CAAC,CAAC;QAC7D,UAAU,GAAG,uBAAuB,CAAC,aAAa,EAAE,IAAI,EAAE;YACxD,gBAAgB,EAAE,QAAQ;SAC3B,CAAC,CAAC;QACH,kGAAkG;QAClG,MAAM,iBAAiB,GAAG,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjG,IAAI,iBAAiB,EAAE,CAAC;YACtB,UAAU,GAAG,UAAU,CAAC,OAAO,CAC7B,6CAA6C,EAC7C,gDAAgD,iBAAiB,EAAE,CACpE,CAAC;QACJ,CAAC;QACD,IAAI,cAAc,EAAE,CAAC;YACnB,UAAU,IAAI,IAAI,GAAG,cAAc,CAAC;QACtC,CAAC;IACH,CAAC;SAAM,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,+BAA+B;QAC/B,UAAU,GAAG,uBAAuB,CAAC,kBAAkB,EAAE,IAAI,EAAE;YAC7D,gBAAgB,EAAE,QAAQ;SAC3B,CAAC,CAAC;QACH,kGAAkG;QAClG,MAAM,iBAAiB,GAAG,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjG,IAAI,iBAAiB,EAAE,CAAC;YACtB,UAAU,GAAG,UAAU,CAAC,OAAO,CAC7B,6CAA6C,EAC7C,gDAAgD,iBAAiB,EAAE,CACpE,CAAC;QACJ,CAAC;QACD,IAAI,cAAc,EAAE,CAAC;YACnB,UAAU,IAAI,IAAI,GAAG,cAAc,CAAC;QACtC,CAAC;IACH,CAAC;SAAM,IAAI,yBAAyB,EAAE,CAAC;QACrC,UAAU,GAAG,6BAA6B,CAAC,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/G,CAAC;SAAM,CAAC;QACN,UAAU,GAAG;;EAEf,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,6BAA6B,aAAa,IAAI,CAAC;KACjG,CAAC;QACF,yBAAyB;QACzB,IAAI,cAAc,EAAE,CAAC;YACnB,UAAU,IAAI,IAAI,GAAG,cAAc,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,QAA2B,EAC3B,aAAqB,EACrB,UAA4B,EAAE;IAE9B,MAAM,EACJ,UAAU,EACV,MAAM,EACN,yBAAyB,GAAG,IAAI,EAChC,UAAU,GAAG,WAAW,EACxB,aAAa,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,EACpC,SAAS,EACT,kBAAkB,EAClB,cAAc,GAAG,KAAK,EACtB,aAAa,GAAG,KAAK,GACtB,GAAG,OAAO,CAAC;IAEZ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxD,iDAAiD;IACjD,MAAM,WAAW,GACf,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjH,MAAM,kBAAkB,GACtB,QAAQ,CAAC,MAAM,GAAG,CAAC;QACjB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC;QAC3F,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAE3C,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAE9C,MAAM,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAE9G,MAAM,YAAY,GAAG,MAAM,IAAI,EAAE,CAAC;IAElC,6CAA6C;IAC7C,MAAM,iBAAiB,GACrB,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC;QACjD,CAAC,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG;QACvF,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,yBAAyB,CAAC,cAAc,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IAEpH,MAAM,UAAU,GAAG,cAAc;QAC/B,CAAC,CAAC,0BAA0B,CAAC,cAAc,EAAE,aAAa,EAAE;YACxD,UAAU;YACV,yBAAyB;YACzB,UAAU;YACV,SAAS;YACT,kBAAkB;SACnB,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,kBAAkB,QAAQ,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjF,MAAM,aAAa,GAAG,cAAc;QAClC,CAAC,CAAC;EACJ,UAAU;YACA;QACR,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,SAAS,GAAG,aAAa;QAC7B,CAAC,CAAC;YACE,OAAO;gBACL,CAAC,CAAC;MACN,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;WAC7B;gBACD,CAAC,CAAC,EAAE;YACN,SAAS;gBACP,CAAC,CAAC;MACN,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;WAC/B;gBACD,CAAC,CAAC,EAAE;SACP;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,gBAAgB,GAAG,YAAY;QACnC,CAAC,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG;QAChF,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,cAAc,GAAG,qBAAqB,UAAU,GAAG,CAAC;IAE1D,OAAO;6BACoB,aAAa,gCAAgC,kBAAkB,IAAI,cAAc,GAAG,gBAAgB;;;;IAI7H,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;IACpC,UAAU;EACZ,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;;;;oCAIC,iBAAiB;QAC7C,YAAY;;;IAGhB,aAAa;;QAET,CAAC;AACT,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAAa,EACb,MAAc,EACd,MAAc,EACd,WAAmB,EACnB,YAAoB;IAEpB,MAAM,OAAO,GAAG,WAAW,GAAG,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,YAAY,GAAG,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;IACnC,MAAM,CAAC,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;IACnC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,0BAA0B,CACjC,aAAkC,EAClC,WAAmB,EACnB,YAAoB;IAEpB,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,eAAe,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,UAAU,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAEhD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE;YAAE,SAAS;QAClB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,sBAAsB,CACrC,EAAE,CAAC,IAAI,CAAC,KAAK,EACb,EAAE,CAAC,IAAI,CAAC,MAAM,EACd,EAAE,CAAC,IAAI,CAAC,MAAM,EACd,WAAW,EACX,YAAY,CACb,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,UAAU,CAAC,IAAI,CACb,gDAAgD,EAAE,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAClG,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YACvC,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,UAAU,CAAC,IAAI,CACb,+CAA+C,EAAE,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,eAAe,QAAQ,GAAG,IAAI,OAAO,MAAM,CAAC,IAAI,IAAI,CACnI,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAwB,EAAE,SAAsB;IAC3E,MAAM,SAAS,GAAG;QAChB,OAAO,OAAO,CAAC,EAAE,GAAG;QACpB,eAAe,OAAO,CAAC,SAAS,GAAG;QACnC,aAAa,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,GAAG;QACpD,eAAe,OAAO,CAAC,MAAM,GAAG;QAChC,cAAc,OAAO,CAAC,IAAI,GAAG;KAC9B,CAAC;IAEF,uEAAuE;IACvE,IAAI,OAAO,CAAC,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,SAAS,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,SAAS,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QACvD,SAAS,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QAC3D,SAAS,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;IACtD,CAAC;IAED,mDAAmD;IACnD,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACzC,SAAS,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,CAAC,GAAG,SAAS,EAAE,kBAAkB,CAAC,CAAC;QACrD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,SAAS,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,SAAS,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;YACjC,SAAS,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,SAAS,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC3C,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAC7B,SAAS,CAAC,IAAI,CAAC,4BAA4B,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1E,CAAC;YACD,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAC7B,SAAS,CAAC,IAAI,CAAC,4BAA4B,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,SAAS,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC7C,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;gBAC/B,SAAS,CAAC,IAAI,CAAC,8BAA8B,OAAO,CAAC,kBAAkB,GAAG,CAAC,CAAC;YAC9E,CAAC;YACD,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;gBACjC,SAAS,CAAC,IAAI,CAAC,gCAAgC,OAAO,CAAC,oBAAoB,GAAG,CAAC,CAAC;YAClF,CAAC;YACD,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;gBAChC,SAAS,CAAC,IAAI,CAAC,+BAA+B,OAAO,CAAC,mBAAmB,GAAG,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;QAChD,OAAO,QAAQ,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,OAAO,cAAc,CAAC;IACnE,CAAC;IAED,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,MAAM,gBAAgB,GAAG;YACvB,GAAG,SAAS;YACZ,yBAAyB;YACzB,wBAAwB,OAAO,CAAC,aAAa,GAAG;SACjD,CAAC;QACF,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,gBAAgB,CAAC,IAAI,CAAC,yBAAyB,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,gBAAgB,CAAC,IAAI,CAAC,sBAAsB,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,gBAAgB,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACvD,gBAAgB,CAAC,IAAI,CAAC,yBAAyB,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,mEAAmE;QACnE,6DAA6D;QAC7D,IAAI,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7E,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YACrC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;gBAClE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACjC,CAAC;YACD,SAAS,GAAG,GAAG,SAAS,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;QAClD,CAAC;QACD,mEAAmE;QACnE,8DAA8D;QAC9D,4DAA4D;QAC5D,OAAO,QAAQ,KAAK;qBACH,SAAS;;WAEnB,CAAC;IACV,CAAC;IAED,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC,yBAAyB,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzD,SAAS,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACjD,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAElC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,OAAO;YACV,OAAO,UAAU,KAAK,SAAS,OAAO,CAAC,GAAG,wBAAwB,CAAC;QACrE,KAAK,OAAO;YACV,OAAO,QAAQ,KAAK,SAAS,OAAO,CAAC,GAAG,UAAU,OAAO,CAAC,IAAI,MAAM,CAAC;QACvE,KAAK,OAAO;YACV,OAAO,UAAU,KAAK,SAAS,OAAO,CAAC,GAAG,YAAY,CAAC;QACzD;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,2BAA2B,CAAC,QAA2B,EAAE,SAAsC;IACtG,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,WAAW,GAAG,KAAK,CAAC;IAE1B,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,gBAAgB,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,eAAe,GAAG,gBAAgB,EAAE,IAAI,CAC5C,CAAC,EAAE,EAAE,EAAE,CACL,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,WAAW;YAChC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,KAAK,SAAS,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,KAAK,SAAS,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,CAAC,CACxG,CAAC;QAEF,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1D,wCAAwC;QACxC,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO;YAAE,SAAS;QAElC,iEAAiE;QACjE,2EAA2E;QAC3E,IAAI,oBAAoB,CAAC,EAAE,CAAC;YAAE,SAAS;QAEvC,mEAAmE;QACnE,IAAI,eAAe,EAAE,CAAC;YACpB,SAAS;QACX,CAAC;QAED,oEAAoE;QACpE,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,WAAW,IAAI,QAAQ,IAAI,YAAY,QAAQ,SAAS,CAAC,CAAC;QAC3F,CAAC;aAAM,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,WAAW,IAAI,QAAQ,IAAI,SAAS,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,6CAA6C,CACpD,QAA2B,EAC3B,SAAsC;IAEtC,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,gBAAgB,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,gBAAgB,GAAG,gBAAgB,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;QACrG,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC;QAC3B,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC;QAEvC,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAClD,UAAU,CAAC,IAAI,CAAC,UAAU,QAAQ,eAAe,CAAC,CAAC;QACnD,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,kCAAkC,CAAC,CAAC;QAEzE,IAAI,cAAc,GAAG,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC;QACrC,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,oBAAoB,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACtF,IAAI,oBAAoB,EAAE,UAAU,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC3D,cAAc,GAAG,oBAAoB,CAAC,UAAU,CAAC,OAAO,CAAC;YAC3D,CAAC;QACH,CAAC;QACD,qFAAqF;QACrF,MAAM,YAAY,GAAG,cAAc,KAAK,CAAC,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;QACzE,IAAI,YAAY,EAAE,CAAC;YACjB,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,wCAAwC,cAAc,OAAO,KAAK,IAAI,CAAC,CAAC;QAC/G,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,iCAAiC,KAAK,IAAI,CAAC,CAAC;QACnF,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,gCAAgC,GAAG,IAAI,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED,SAAS,6BAA6B,CACpC,QAA2B,EAC3B,aAAqB,EACrB,kBAAwC,EACxC,WAAoB,EACpB,YAAqB;IAErB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACtF,OAAO;;4BAEiB,aAAa,IAAI,CAAC;KACzC,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,iFAAiF;IACjF,MAAM,mBAAmB,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAI,mBAAmB,EAAE,CAAC;QACxB,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC;QAC3B,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC;QAEvC,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC;QACvC,UAAU,CAAC,IAAI,CAAC,UAAU,QAAQ,EAAE,CAAC,CAAC;QACtC,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,kCAAkC,CAAC,CAAC;QACzE,sCAAsC;QACtC,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;YACzB,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,wCAAwC,cAAc,OAAO,KAAK,IAAI,CAAC,CAAC;QAC/G,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,iCAAiC,KAAK,IAAI,CAAC,CAAC;QACnF,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,gCAAgC,GAAG,IAAI,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAC1F,MAAM,SAAS,GACb,aAAa,CAAC,MAAM,GAAG,CAAC;QACtB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;QAmBA;QACF,CAAC,CAAC,EAAE,CAAC;IAET,sCAAsC;IACtC,MAAM,cAAc,GAClB,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,IAAI,YAAY;QAChF,CAAC,CAAC,IAAI,GAAG,0BAA0B,CAAC,kBAAkB,EAAE,WAAW,EAAE,YAAY,CAAC;QAClF,CAAC,CAAC,EAAE,CAAC;IAET,OAAO;;EAEP,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;MACjB,SAAS,GAAG,cAAc;GAC7B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.1.0",
|
|
3
|
+
"buildId": "dev",
|
|
4
|
+
"sha256": "43114410bbf27736b0bf10174ae0ee238d780c1a7920d654fb7fdbbf9a39d36e",
|
|
5
|
+
"artifacts": {
|
|
6
|
+
"iife": "hyperframe.runtime.iife.js",
|
|
7
|
+
"esm": "hyperframe.runtime.mjs"
|
|
8
|
+
},
|
|
9
|
+
"contract": {
|
|
10
|
+
"globals": {
|
|
11
|
+
"player": "__player",
|
|
12
|
+
"playerReady": "__playerReady",
|
|
13
|
+
"renderReady": "__renderReady",
|
|
14
|
+
"timelines": "__timelines",
|
|
15
|
+
"clipManifest": "__clipManifest"
|
|
16
|
+
},
|
|
17
|
+
"messageSources": {
|
|
18
|
+
"parent": "hf-parent",
|
|
19
|
+
"preview": "hf-preview"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|