mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-01 19:42:03 +00:00
fix(core): preserve static methods on classes exposed through scoped window
This commit is contained in:
@@ -146,6 +146,28 @@ body { margin: 0; }
|
||||
expect(variablesByComp["card-1"]).toEqual({ title: "Pro" });
|
||||
});
|
||||
|
||||
it("preserves static methods on classes exposed through window", () => {
|
||||
const { document } = parseHTML(`<div data-composition-id="scene"></div>`);
|
||||
class FakeTexts {
|
||||
static mountChars() {
|
||||
return "ok";
|
||||
}
|
||||
}
|
||||
const fakeWindow: Record<string, unknown> = {
|
||||
document,
|
||||
__timelines: {},
|
||||
Texts: FakeTexts,
|
||||
};
|
||||
const wrapped = wrapScopedCompositionScript(
|
||||
`window.__capturedMountCharsType = typeof window.Texts?.mountChars;`,
|
||||
"scene",
|
||||
);
|
||||
|
||||
new Function("window", wrapped)(fakeWindow);
|
||||
|
||||
expect(fakeWindow.__capturedMountCharsType).toBe("function");
|
||||
});
|
||||
|
||||
it("executes document and GSAP selectors inside the composition root", () => {
|
||||
const { document } = parseHTML(`
|
||||
<div data-composition-id="scene" data-start="intro"><h1 class="title">Scene</h1></div>
|
||||
|
||||
@@ -383,8 +383,7 @@ export function wrapScopedCompositionScript(
|
||||
? new Proxy(window, {
|
||||
get: function(target, prop, receiver) {
|
||||
if (prop === "__timelines") return __hfGetTimelineRegistry();
|
||||
var value = Reflect.get(target, prop, target);
|
||||
return typeof value === "function" ? value.bind(target) : value;
|
||||
return Reflect.get(target, prop, target);
|
||||
},
|
||||
set: function(target, prop, value, receiver) {
|
||||
if (prop === "__timelines") {
|
||||
|
||||
Reference in New Issue
Block a user