MCPcopy Create free account
hub / github.com/heygen-com/hyperframes / injectDurations

Function injectDurations

packages/core/src/compiler/timingCompiler.ts:195–220  ·  view source on GitHub ↗
(html: string, resolutions: ResolvedDuration[])

Source from the content-addressed store, hash-verified

193 * GSAP timeline queries.
194 */
195export function injectDurations(html: string, resolutions: ResolvedDuration[]): string {
196 for (const { id, duration } of resolutions) {
197 // Match the element's opening tag by id
198 const idPattern = new RegExp(`(<[^>]*id=["']${escapeRegex(id)}["'][^>]*>)`, "gi");
199
200 html = html.replace(idPattern, (tag) => {
201 let result = tag;
202
203 // Add data-duration if missing
204 if (!hasAttr(result, "data-duration")) {
205 result = injectAttr(result, "data-duration", String(duration));
206 }
207
208 // Add data-end if missing
209 if (!hasAttr(result, "data-end")) {
210 const startStr = getAttr(result, "data-start");
211 const start = startStr ? parseFloat(startStr) : 0;
212 result = injectAttr(result, "data-end", String(start + duration));
213 }
214
215 return result;
216 });
217 }
218
219 return html;
220}
221
222function escapeRegex(str: string): string {
223 return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");

Callers 4

compileHtmlFileFunction · 0.90
recompileWithResolutionsFunction · 0.90
compileHtmlFunction · 0.90

Calls 4

hasAttrFunction · 0.85
injectAttrFunction · 0.85
getAttrFunction · 0.85
escapeRegexFunction · 0.70

Tested by

no test coverage detected