UNPKG

@code_monk/falert

Version:
74 lines 5.59 kB
const CDN_BASE = 'https://unpkg.com/@code_monk/falert@latest/dist/'; class Falert { constructor(head, body, type = "notice") { const t = document.createElement('template'); t.innerHTML = Falert.html.trim(); const domNode = t.content.firstChild; domNode.style.zIndex = (Falert.getHighestZindex() + 1).toString(10); // get a new "top" value to push this node down the page let newTop = 35; for (let i of Falert.instances) { newTop += i.offsetHeight; } domNode.style.top = newTop + 'px'; domNode.querySelector('.body').classList.add(type); domNode.addEventListener("animationend", ev => { domNode.classList.remove('flyin'); domNode.classList.add('swaying'); }); domNode.addEventListener('click', ev => { Falert.instances.delete(domNode); domNode.remove(); }); domNode.querySelector('.body h2').innerHTML = head; domNode.querySelector('.body p').innerHTML = body; domNode.classList.add(type); document.body.appendChild(domNode); Falert.instances.add(domNode); Falert.settings.sounds[type].play(); } ; static getHighestZindex() { let z = 0; for (let f of Falert.instances) { let i = Number(f.style.zIndex); if (i > z) { z = i; } } return z; } } Falert.instances = new Set(); Falert.settings = { insertionNode: document.body, audio: { volume: 0.25 }, sounds: {} }; (() => { // preload audio let sounds = { fatal: CDN_BASE + 'assets/sounds/dramatic.mp3', warning: CDN_BASE + 'assets/sounds/concerning.mp3', notice: CDN_BASE + 'assets/sounds/noteworthy.mp3' }; for (const [k, url] of Object.entries(sounds)) { const a = new Audio(); a.addEventListener("error", console.error); a.volume = Falert.settings.audio.volume; a.src = url; Falert.settings.sounds[k] = a; } })(); Falert.html = ` <div class="falert container flyin"> <div class="falert body breathing"> <h2>Alert!</h2> <p>You can't put your finger in the socket</p> </div> </div> `; export { Falert }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFsZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RzL2ZhbGVydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFFBQVEsR0FBRyxrREFBa0QsQ0FBQztBQUVwRSxNQUFNLE1BQU07SUFpQ1gsWUFBWSxJQUFZLEVBQUUsSUFBWSxFQUFFLE9BQWUsUUFBUTtRQUM5RCxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxNQUFNLE9BQU8sR0FBbUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDckQsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFcEUsd0RBQXdEO1FBQ3hELElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixLQUFLLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDL0IsTUFBTSxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUM7U0FDekI7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQzdDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLENB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