summaryrefslogtreecommitdiff
path: root/floating-cats.js
blob: 74acea4595f1ebe636ca965acdc18f2eb5298980 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
"use strict";

if (typeof(browser) == "undefined") {
    globalThis.browser = chrome;
}

const cats = [];

function reflectChange(changes, name, proc) {
    if (name in changes
        && "newValue" in changes[name]
        && !Object.is(changes[name].newValue, changes[name].oldValue)) {
        proc(changes[name].newValue);
    }
}

async function main() {
    let enabled = (await browser.storage.sync.get("enabled")).enabled;

    browser.storage.onChanged.addListener(changes => {
        reflectChange(changes, "enabled", newEnabled => {
            enabled = newEnabled;
            cats.forEach(cat => cat.hidden = !enabled);
        });
    });

    let counter = 0;
    function addCat(alt, url) {
        const floatingX = document.createElement("div");
        floatingX.style.setProperty("--floating-cats-floating-delay", `-${50 * counter++}s`);
        floatingX.classList.add("floating-cats-clickthru");
        floatingX.classList.add("floating-cats-floating");
        floatingX.classList.add("floating-cats-floating-x");
        floatingX.hidden = !enabled;
        cats.push(floatingX);
        document.body.appendChild(floatingX);

        const floatingY = document.createElement("img");
        floatingY.classList.add("floating-cats-clickthru");
        floatingY.classList.add("floating-cats-floating-y");
        floatingY.alt = alt;
        floatingY.src = browser.runtime.getURL(url);
        floatingX.appendChild(floatingY);
    }

    addCat("Spinning Marsey", "/marsey3d.webp");
    addCat("Spinning Bob", "/bobvibes.webp");
}

main();