{"version":3,"sources":["https://lively-kernel.org/lively4S2/lively4-theresa/src/client/load-swx.js"],"names":["resolveLoaded","whenLoaded","Promise","resolve","mybase","window","location","host","pathname","replace","externalSite","lively4url","match","document","search","protocol","hostname","navigator","lively4chrome","console","log","root","serviceworkerReady","onReady","serviceWorkerMessageHandlers","serviceWorker","onmessage","event","key","message","data","type","messageColors","lively","notify","command","addEventListener","controller","postMessage","register","URL","then","registration","lively4swxregistration","scope","catch","err","ready","Notification","permission","requestPermission"],"mappings":"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","file":"load-swx.js","sourcesContent":["/* Load Lively */\n\nvar resolveLoaded \nexport var whenLoaded = new Promise(resolve => {\n  resolveLoaded = resolve\n})\n\nvar mybase = window.location.host + window.location.pathname.replace(/\\/[^/]+$/, \"\");\nvar externalSite = !lively4url.match(mybase); // I am not somewhere below lively4url\n\nif (document.location.search.match(\"noserviceworker\")) {\n  externalSite = true\n}\n\n// service worker, only works on localhost or HTTPS\nif (window.location.protocol == \"http:\" && window.location.hostname != \"localhost\") {\n  externalSite = true\n}\n\nif ('serviceWorker' in navigator || window.lively4chrome || externalSite) {\n  console.log(\"LOAD Lively4: boot lively4 service worker\");\n  var root = \"\" + lively4url + \"/\";\n  var serviceworkerReady = false;\n\n  var onReady = function() {\n    serviceworkerReady = true;\n    // Lively has all the dependencies\n\n\n    // Workaround because only one function can listen to serviceworker messages\n    window.serviceWorkerMessageHandlers = {};\n\n    if (window.navigator.serviceWorker) {\n      window.navigator.serviceWorker.onmessage = function(event) {\n        for (let key in window.serviceWorkerMessageHandlers) {\n          window.serviceWorkerMessageHandlers[key](event);\n        }\n      }\n\n      // Add listener for serviceWorker messages\n      window.serviceWorkerMessageHandlers['networkNotifications'] = (event) => {\n        const message = event.data;\n\n        // Only handle notifications here\n        if (message.type != 'notification') return;\n\n        let messageColors = {\n          'info': '',\n          'warning': 'yellow',\n          'error': 'red'\n        };\n\n        if ('lively' in window) {\n          lively.notify('ServiceWorker', message.data, 5, null, messageColors[message.command]);\n        }\n      }\n\n      // Add listener for offline/online events\n      // This is currently only used in the ServiceWorker, but the ServiceWorker does not get these events\n      // So we register here and forward the events\n      window.addEventListener('online', () => {\n        navigator.serviceWorker.controller.postMessage({\n          type: 'network',\n          command: 'online'\n        });\n      });\n\n      window.addEventListener('offline', () => {\n        navigator.serviceWorker.controller.postMessage({\n          type: 'network',\n          command: 'offline'\n        });\n      });\n    }\n\n    resolveLoaded()\n\n  };\n\n  if (('serviceWorker' in navigator && navigator.serviceWorker.controller) || window.lively4chrome || externalSite) {\n\n    console.log(\"NO Service worker during migration!!!\")\n    if (window.lively4chrome) {\n      console.log(\"[Livley4] running without service worker\");\n    } else if (externalSite) {\n      console.log(\"[Lively4] load from external site\");\n    } else {\n      console.log(\"[Lively4] Use existing service worker\");\n    }\n    // we don't have to do anything here... the service worker is already there\n    onReady();\n  } else {\n    // the scope of the serviceworker can only be refined to something below it's root... so we have to install it as a file at the content's side. \n    navigator.serviceWorker.register(new URL('swx-loader.js', window.location)).then(function(registration) {\n      console.log(\"SWX registration\", registration)\n      window.lively4swxregistration = registration; // for debugging\n      // Registration was successful\n      console.log('ServiceWorker registration successful with scope: ', registration.scope);\n\n      // so now we have to reload!\n      console.log(\"ok... lets wait for the service worker.\");\n      // console.log(\"Lively4 ServiceWorker installed! Reboot needed! ;-)\")\n      // window.location = window.location\n    }).catch(function(err) {\n      // registration failed\n      console.log('ServiceWorker registration failed: ', err);\n    });\n    navigator.serviceWorker.ready.then(onReady);\n  }\n}\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  if (Notification.permission !== \"granted\")\n    Notification.requestPermission();\n});\n"]}