Skip to content

Commit 5595e38

Browse files
Merge pull request #706 from heygen-com/fix/player-renderseek-setter
2 parents bd7bbae + 711ac22 commit 5595e38

2 files changed

Lines changed: 32 additions & 0 deletions

File tree

packages/core/src/runtime/init.test.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,4 +282,33 @@ describe("initSandboxRuntimeModular", () => {
282282
expect(video.paused).toBe(true);
283283
expect(video.currentTime).toBe(0);
284284
});
285+
286+
it("allows external code to reassign delegated __player methods", () => {
287+
const root = document.createElement("div");
288+
root.setAttribute("data-composition-id", "main");
289+
root.setAttribute("data-root", "true");
290+
root.setAttribute("data-start", "0");
291+
root.setAttribute("data-width", "1920");
292+
root.setAttribute("data-height", "1080");
293+
document.body.appendChild(root);
294+
295+
(window as Window & { __timelines?: Record<string, RuntimeTimelineLike> }).__timelines = {
296+
main: createMockTimeline(10),
297+
};
298+
299+
initSandboxRuntimeModular();
300+
301+
const player = (
302+
window as Window & {
303+
__player?: { renderSeek: (timeSeconds: number) => void };
304+
}
305+
).__player;
306+
expect(player).toBeDefined();
307+
if (!player) return;
308+
309+
const original = player.renderSeek;
310+
expect(() => {
311+
player.renderSeek = (t: number) => original(t);
312+
}).not.toThrow();
313+
});
285314
});

packages/core/src/runtime/init.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1955,6 +1955,9 @@ export function initSandboxRuntimeModular(): void {
19551955
for (const key of delegated) {
19561956
Object.defineProperty(playerApi, key, {
19571957
get: () => player[key],
1958+
set: (v: unknown) => {
1959+
(player as Record<string, unknown>)[key] = v;
1960+
},
19581961
configurable: true,
19591962
});
19601963
}

0 commit comments

Comments
 (0)