1 |
|
2 | !function(win, doc, nav, top, useAtomics, config, libPath, timeout, scripts, sandbox, mainForwardFn, isReady) {
|
3 | function ready() {
|
4 | if (!isReady) {
|
5 | isReady = 1;
|
6 | libPath = (config.lib || "/~partytown/") + (false !== config.debug ? "debug/" : "");
|
7 | scripts = doc.querySelectorAll('script[type="text/partytown"]');
|
8 | if (top != win) {
|
9 | top.dispatchEvent(new CustomEvent("pt1", {
|
10 | detail: win
|
11 | }));
|
12 | } else if (scripts.length) {
|
13 | timeout = setTimeout(fallback, 6e4);
|
14 | doc.addEventListener("pt0", clearFallback);
|
15 | useAtomics && (useAtomics = !win.location.search.includes("forceServiceWorker"));
|
16 | useAtomics ? loadSandbox(1) : nav.serviceWorker ? nav.serviceWorker.register(libPath + "partytown-sw.js" + (useAtomics ? "?isolated" : ""), {
|
17 | scope: libPath
|
18 | }).then((function(swRegistration) {
|
19 | if (swRegistration.active) {
|
20 | loadSandbox();
|
21 | } else if (swRegistration.installing) {
|
22 | swRegistration.installing.addEventListener("statechange", (function(ev) {
|
23 | "activated" == ev.target.state && loadSandbox();
|
24 | }));
|
25 | } else {
|
26 | console.warn(swRegistration);
|
27 | }
|
28 | }), console.error) : fallback();
|
29 | }
|
30 | }
|
31 | }
|
32 | function loadSandbox(isAtomics) {
|
33 | sandbox = doc.createElement(isAtomics ? "script" : "iframe");
|
34 | if (!isAtomics) {
|
35 | sandbox.setAttribute("style", "display:block;width:0;height:0;border:0;visibility:hidden");
|
36 | sandbox.setAttribute("aria-hidden", !0);
|
37 | }
|
38 | sandbox.src = libPath + "partytown-" + (isAtomics ? "atomics.js" : "sandbox-sw.html?" + Date.now());
|
39 | doc.body.appendChild(sandbox);
|
40 | }
|
41 | function fallback(i, script) {
|
42 | console.warn("Partytown script fallback");
|
43 | clearFallback();
|
44 | for (i = 0; i < scripts.length; i++) {
|
45 | script = doc.createElement("script");
|
46 | script.innerHTML = scripts[i].innerHTML;
|
47 | doc.head.appendChild(script);
|
48 | }
|
49 | }
|
50 | function clearFallback() {
|
51 | clearTimeout(timeout);
|
52 | }
|
53 | config = win.partytown || {};
|
54 | top == win && (config.forward || []).map((function(forwardProps) {
|
55 | mainForwardFn = win;
|
56 | forwardProps.split(".").map((function(_, i, forwardPropsArr) {
|
57 | mainForwardFn = mainForwardFn[forwardPropsArr[i]] = i + 1 < forwardPropsArr.length ? "push" == forwardPropsArr[i + 1] ? [] : mainForwardFn[forwardPropsArr[i]] || {} : function() {
|
58 | (win._ptf = win._ptf || []).push(forwardPropsArr, arguments);
|
59 | };
|
60 | }));
|
61 | }));
|
62 | if ("complete" == doc.readyState) {
|
63 | ready();
|
64 | } else {
|
65 | win.addEventListener("DOMContentLoaded", ready);
|
66 | win.addEventListener("load", ready);
|
67 | }
|
68 | }(window, document, navigator, top, top.crossOriginIsolated);
|