feat: cache shader transition preview frames (#634)

* feat: cache shader transition preview frames

* fix: move shader transition loading to player
This commit is contained in:
Vance Ingalls
2026-05-06 01:25:09 -07:00
committed by GitHub
parent 64457d9fe7
commit a7b308b667
23 changed files with 3475 additions and 243 deletions
+31
View File
@@ -95,6 +95,37 @@ describe("createPickerModule", () => {
expect(api.getCandidatesAtPoint(Infinity, 0)).toEqual([]);
});
it("does not pick through blocking loading overlays", () => {
const picker = createPickerModule({ postMessage: createMockPostMessage() });
picker.installPickerApi();
const scene = document.createElement("div");
scene.id = "scene-title";
scene.textContent = "Scene title";
const overlay = document.createElement("div");
overlay.setAttribute("data-hyper-shader-loading", "");
const overlayLabel = document.createElement("span");
overlayLabel.textContent = "Preparing scene transitions";
overlay.appendChild(overlayLabel);
document.body.appendChild(scene);
document.body.appendChild(overlay);
const originalElementsFromPoint = document.elementsFromPoint;
Object.defineProperty(document, "elementsFromPoint", {
configurable: true,
value: vi.fn(() => [overlayLabel, overlay, scene]),
});
const api = (window as any).__HF_PICKER_API;
try {
expect(api.getCandidatesAtPoint(10, 10)).toEqual([]);
} finally {
Object.defineProperty(document, "elementsFromPoint", {
configurable: true,
value: originalElementsFromPoint,
});
}
});
it("pickAtPoint returns null for invalid coords", () => {
const picker = createPickerModule({ postMessage: createMockPostMessage() });
picker.installPickerApi();