1 | const CDN_BASE = 'https://unpkg.com/@code_monk/falert@latest/dist/';
|
2 | class Falert {
|
3 | constructor(head, body, type = "notice") {
|
4 | const t = document.createElement('template');
|
5 | t.innerHTML = Falert.html.trim();
|
6 | const domNode = t.content.firstChild;
|
7 | domNode.style.zIndex = (Falert.getHighestZindex() + 1).toString(10);
|
8 | // get a new "top" value to push this node down the page
|
9 | let newTop = 35;
|
10 | for (let i of Falert.instances) {
|
11 | newTop += i.offsetHeight;
|
12 | }
|
13 | domNode.style.top = newTop + 'px';
|
14 | domNode.querySelector('.body').classList.add(type);
|
15 | domNode.addEventListener("animationend", ev => {
|
16 | domNode.classList.remove('flyin');
|
17 | domNode.classList.add('swaying');
|
18 | });
|
19 | domNode.addEventListener('click', ev => {
|
20 | Falert.instances.delete(domNode);
|
21 | domNode.remove();
|
22 | });
|
23 | domNode.querySelector('.body h2').innerHTML = head;
|
24 | domNode.querySelector('.body p').innerHTML = body;
|
25 | domNode.classList.add(type);
|
26 | document.body.appendChild(domNode);
|
27 | Falert.instances.add(domNode);
|
28 | Falert.settings.sounds[type].play();
|
29 | }
|
30 | ;
|
31 | static getHighestZindex() {
|
32 | let z = 0;
|
33 | for (let f of Falert.instances) {
|
34 | let i = Number(f.style.zIndex);
|
35 | if (i > z) {
|
36 | z = i;
|
37 | }
|
38 | }
|
39 | return z;
|
40 | }
|
41 | }
|
42 | Falert.instances = new Set();
|
43 | Falert.settings = {
|
44 | insertionNode: document.body,
|
45 | audio: {
|
46 | volume: 0.25
|
47 | },
|
48 | sounds: {}
|
49 | };
|
50 | (() => {
|
51 | // preload audio
|
52 | let sounds = {
|
53 | fatal: CDN_BASE + 'assets/sounds/dramatic.mp3',
|
54 | warning: CDN_BASE + 'assets/sounds/concerning.mp3',
|
55 | notice: CDN_BASE + 'assets/sounds/noteworthy.mp3'
|
56 | };
|
57 | for (const [k, url] of Object.entries(sounds)) {
|
58 | const a = new Audio();
|
59 | a.addEventListener("error", console.error);
|
60 | a.volume = Falert.settings.audio.volume;
|
61 | a.src = url;
|
62 | Falert.settings.sounds[k] = a;
|
63 | }
|
64 | })();
|
65 | Falert.html = `
|
66 | <div class="falert container flyin">
|
67 | <div class="falert body breathing">
|
68 | <h2>Alert!</h2>
|
69 | <p>You can't put your finger in the socket</p>
|
70 | </div>
|
71 | </div>
|
72 | `;
|
73 | export { Falert };
|
74 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFsZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RzL2ZhbGVydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFFBQVEsR0FBRyxrREFBa0QsQ0FBQztBQUVwRSxNQUFNLE1BQU07SUFpQ1gsWUFBWSxJQUFZLEVBQUUsSUFBWSxFQUFFLE9BQWUsUUFBUTtRQUM5RCxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxNQUFNLE9BQU8sR0FBbUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDckQsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFcEUsd0RBQXdEO1FBQ3hELElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixLQUFLLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDL0IsTUFBTSxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUM7U0FDekI7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQzdDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLENB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 |
\ | No newline at end of file |