diff --git a/packages/core/src/compiler/inlineSubCompositions.test.ts b/packages/core/src/compiler/inlineSubCompositions.test.ts index da71c2afe..6e2470e65 100644 --- a/packages/core/src/compiler/inlineSubCompositions.test.ts +++ b/packages/core/src/compiler/inlineSubCompositions.test.ts @@ -197,6 +197,25 @@ describe("inlineSubCompositions – #ID selector scoping divergence", () => { ); }); + it("propagates data-timeline-locked from inner root to host element", () => { + const lockedSubComp = ` + +
+ Hello +
+`; + + const document = makeHostDocument("captions"); + const host = document.querySelector('[data-composition-src="intro.html"]')!; + + inlineSubCompositions(document, [host], { + resolveHtml: () => lockedSubComp, + parseHtml: (html) => parseHTML(html).document, + }); + + expect(host.hasAttribute("data-timeline-locked")).toBe(true); + }); + it("producer path propagates data-hf-authored-id to host when inner root has id", () => { const document = makeHostDocument("intro"); const host = document.querySelector('[data-composition-src="intro.html"]')!; diff --git a/packages/core/src/compiler/inlineSubCompositions.ts b/packages/core/src/compiler/inlineSubCompositions.ts index 52c278c70..995c7019d 100644 --- a/packages/core/src/compiler/inlineSubCompositions.ts +++ b/packages/core/src/compiler/inlineSubCompositions.ts @@ -302,6 +302,10 @@ export function inlineSubCompositions( ); } + if (innerRoot?.hasAttribute("data-timeline-locked")) { + hostEl.setAttribute("data-timeline-locked", ""); + } + // Copy dimension attributes from inner root to host if missing if (innerRoot) { const innerW = innerRoot.getAttribute("data-width");