forked from johnpantini/ppp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
62 lines (49 loc) · 1.6 KB
/
main.js
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
51
52
53
54
55
56
57
58
59
60
61
62
function appendMainScript() {
if (!document.querySelector('[ppp-state]')) {
const script = document.createElement('script');
script.src = 'ppp.js';
script.type = 'module';
script.setAttribute('ppp-state', 'processed');
document.body.append(script);
}
}
window.addEventListener('load', async () => {
const registration = await navigator.serviceWorker.register('ppp-sw.js');
if (navigator.serviceWorker.controller === null) {
await navigator.serviceWorker.ready;
registration.active.postMessage('reclaim');
navigator.serviceWorker.addEventListener('controllerchange', async () => {
appendMainScript();
});
} else {
appendMainScript();
}
});
window.customElements.define(
'ppp-loader',
class extends HTMLElement {
connectedCallback() {
this.attachShadow({ mode: 'open' }).appendChild(
document.getElementById('ppp-loader').content.cloneNode(true)
);
this.setText('Приложение загружается, подождите...');
globalThis.loader = this;
this.input = this.shadowRoot.querySelector('input');
this.onInput = this.onInput.bind(this);
this.input.addEventListener('input', this.onInput);
}
onInput(e) {
localStorage.setItem('ppp-service-machine-url', e.target.value.trim());
}
disconnectedCallback() {
this.input.removeEventListener('input', this.onInput);
}
showInput(text) {
this.input.value = text;
this.input.removeAttribute('hidden');
}
setText(text) {
this.shadowRoot.querySelector('.text').textContent = text;
}
}
);