diff --git a/packages/studio/src/components/editor/domEditing.test.ts b/packages/studio/src/components/editor/domEditing.test.ts index 4f2090df51..7b3889a575 100644 --- a/packages/studio/src/components/editor/domEditing.test.ts +++ b/packages/studio/src/components/editor/domEditing.test.ts @@ -17,7 +17,7 @@ import { resolveDomEditCapabilities, resolveDomEditSelection, } from "./domEditing"; -import { normalizeTimelineCompositionSource } from "./domEditingDom"; +import { buildElementLabel, normalizeTimelineCompositionSource } from "./domEditingDom"; function createDocument(markup: string): Document { const window = new Window(); @@ -925,6 +925,14 @@ describe("resolveDomEditSelection", () => { ); }); + it("names a repeated section by its authored id, not its runtime instance id", () => { + const document = createDocument(` +
+ `); + + expect(buildElementLabel(document.querySelector("div") as HTMLElement)).toBe("Benefit Fresh"); + }); + it("finds a composition host authored with a ./ path", () => { const document = createDocument(` diff --git a/packages/studio/src/components/editor/domEditingDom.ts b/packages/studio/src/components/editor/domEditingDom.ts index 7ef6628988..e5657d6f17 100644 --- a/packages/studio/src/components/editor/domEditingDom.ts +++ b/packages/studio/src/components/editor/domEditingDom.ts @@ -312,7 +312,8 @@ function getPreferredClassSelector(el: HTMLElement): string | undefined { // fallow-ignore-next-line complexity export function buildElementLabel(el: HTMLElement): string { - const compositionId = el.getAttribute("data-composition-id"); + const compositionId = + el.getAttribute("data-hf-original-composition-id") ?? el.getAttribute("data-composition-id"); if (compositionId && compositionId !== "main") { return humanizeIdentifier(compositionId); } diff --git a/packages/studio/src/player/lib/timelineDOM.test.ts b/packages/studio/src/player/lib/timelineDOM.test.ts index 10738b9407..7143ae7521 100644 --- a/packages/studio/src/player/lib/timelineDOM.test.ts +++ b/packages/studio/src/player/lib/timelineDOM.test.ts @@ -71,6 +71,20 @@ describe("parseTimelineFromDOM — nested master time", () => { }); }); +describe("parseTimelineFromDOM — repeated sections", () => { + it("names each instance by its authored id and keeps them apart", () => { + const doc = makeDoc(` +