Download compare.js from Pixelkram/biegen: direct link, hf CLI and curl.
- Browser
- Download file 1.41 kB
-
https://huggingface.co/spaces/Pixelkram/biegen/resolve/main/compare.js
- Command line
-
hf download hf://spaces/Pixelkram/biegen/compare.js
-
curl -L -o compare.js https://huggingface.co/spaces/Pixelkram/biegen/resolve/main/compare.js
1.41 kB
| // The results: every image bent, the same seed without tools under a wipe that follows the pointer. | |
| // Runs as js_on_load of a gr.HTML component. The listeners sit on `element`, so they survive new results. | |
| let sticky = false; | |
| function setCut(card, pct, wiping) { | |
| const frame = card.querySelector(".bc-frame"); | |
| if (!frame) return; | |
| frame.style.setProperty("--cut", pct + "%"); | |
| frame.classList.toggle("bc-wiping", wiping); | |
| } | |
| function reset() { | |
| element.querySelectorAll(".bc-card[data-both]").forEach((c) => setCut(c, sticky ? 100 : 0, false)); | |
| } | |
| element.addEventListener("pointermove", (e) => { | |
| const frame = e.target.closest(".bc-frame"); | |
| if (!frame) return; | |
| const r = frame.getBoundingClientRect(); | |
| const pct = Math.round(100 * Math.min(1, Math.max(0, (e.clientX - r.left) / r.width))); | |
| element.querySelectorAll(".bc-card[data-both]").forEach((c) => setCut(c, pct, true)); | |
| }); | |
| element.addEventListener("pointerout", (e) => { | |
| if (e.target.closest(".bc-frame") && !(e.relatedTarget && e.relatedTarget.closest && e.relatedTarget.closest(".bc-frame"))) reset(); | |
| }); | |
| element.addEventListener("click", (e) => { | |
| const btn = e.target.closest(".bc-toggle"); | |
| if (!btn) return; | |
| sticky = !sticky; | |
| btn.classList.toggle("bc-on", sticky); | |
| btn.textContent = sticky ? "Gebogene Bilder zeigen" : "Alle ohne Eingriff zeigen"; | |
| reset(); | |
| }); | |
| watch("value", () => { sticky = false; reset(); }); | |