Spaces:
Running on Zero
Running on Zero
Download fallback_bridge.js from broyang/CrowdCounter: direct link, hf CLI and curl.
- Browser
- Download file 2.15 kB
-
https://huggingface.co/spaces/broyang/CrowdCounter/resolve/main/fallback_bridge.js
- Command line
-
hf download hf://spaces/broyang/CrowdCounter/fallback_bridge.js
-
curl -L -o fallback_bridge.js https://huggingface.co/spaces/broyang/CrowdCounter/resolve/main/fallback_bridge.js
2.15 kB
| async (image, receipt, threshold) => { | |
| const unchanged = [{__type__: "update"}, {__type__: "update"}]; | |
| const origin = new URLSearchParams(location.search).get("__labs_parent"); | |
| const allowed = ["https://app.skyebrowse.com", "https://staging.app.skyebrowse.com", "https://dev.app.skyebrowse.com", "http://localhost:8080"]; | |
| if (window.parent === window || !allowed.includes(origin) || !receipt?.ticket || image?.path !== receipt.image) return unchanged; | |
| const requestId = crypto.randomUUID(); | |
| const currentImage = document.querySelector('input[type="file"]'); | |
| return new Promise(resolve => { | |
| const finish = result => { | |
| clearTimeout(timer); | |
| window.removeEventListener("message", receive); | |
| currentImage?.removeEventListener("change", cancel); | |
| document.removeEventListener("click", onClear, true); | |
| resolve(result); | |
| }; | |
| const cancel = () => finish(unchanged); | |
| const onClear = event => { | |
| if (event.target.closest?.('button[aria-label="Remove Image"], table[role="grid"] tbody tr')) cancel(); | |
| }; | |
| const receive = event => { | |
| if (event.source !== window.parent || event.origin !== origin) return; | |
| const data = event.data; | |
| if (data?.type !== "labs:crowd-result" || data.requestId !== requestId) return; | |
| if (data.error) return finish([null, data.error]); | |
| if (!/^data:image\/(png|webp|jpeg);base64,/.test(data.overlay) || !/^[\d,]+ people$/.test(data.count)) return; | |
| finish([{url: data.overlay, path: data.overlay, orig_name: "crowd-count.webp", meta: {_type: "gradio.FileData"}}, data.count]); | |
| }; | |
| const timer = setTimeout(() => finish([null, "Crowd Counter timed out. Please upload the image again."]), 120000); | |
| window.addEventListener("message", receive); | |
| currentImage?.addEventListener("change", cancel, {once: true}); | |
| document.addEventListener("click", onClear, true); | |
| window.parent.postMessage({type: "labs:crowd-fallback", requestId, ticket: receipt.ticket, threshold}, origin); | |
| }); | |
| } | |