mirror of
https://codeberg.org/vlw/victorwesterlund.com.git
synced 2025-09-13 19:13:42 +02:00
41 lines
No EOL
1.1 KiB
JavaScript
41 lines
No EOL
1.1 KiB
JavaScript
export default class Glitch {
|
|
constructor(target) {
|
|
this.worker = new Worker(this.getWorkerScriptURL());
|
|
this.worker.addEventListener("message", event => this.message(event));
|
|
|
|
this.target = target ? target : document.body;
|
|
}
|
|
|
|
// Update the target CSS background with an image URL
|
|
setVisibleBg(image) {
|
|
this.target.style.setProperty("background-image", `url(${image})`);
|
|
}
|
|
|
|
// Get URL for the dedicated worker
|
|
getWorkerScriptURL() {
|
|
const name = "GlitchWorker.js";
|
|
const url = new URL(import.meta.url);
|
|
|
|
// Replace pathname of this file with worker
|
|
const path = url.pathname.split("/");
|
|
path[path.length - 1] = name;
|
|
|
|
url.pathname = path.join("/");
|
|
return url.toString();
|
|
}
|
|
|
|
// Event handler for messages from worker thread
|
|
message(event) {
|
|
const data = typeof event.data === "object" ? event.data : [event.data];
|
|
|
|
switch(data[0]) {
|
|
case "READY":
|
|
this.worker.postMessage(["START", new URL(location).toString()]);
|
|
break;
|
|
|
|
case "BG_UPDATE":
|
|
this.setVisibleBg(data[1]);
|
|
break;
|
|
}
|
|
}
|
|
} |