(function () { var deferredPrompt = null; window.addEventListener('beforeinstallprompt', function (e) { e.preventDefault(); deferredPrompt = e; }); window.PwaInstall = { isInstalled: function () { return ( window.matchMedia('(display-mode: standalone)').matches || window.navigator.standalone === true ); }, isIos: function () { return ( /iPad|iPhone|iPod/.test(window.navigator.userAgent) && !window.MSStream ); }, isAndroid: function () { return /Android/.test(window.navigator.userAgent); }, canInstall: function () { return deferredPrompt !== null; }, promptInstall: function () { if (!deferredPrompt) { return Promise.resolve(false); } var prompt = deferredPrompt; deferredPrompt = null; prompt.prompt(); return prompt.userChoice.then(function (choice) { return choice.outcome === 'accepted'; }); }, getHostname: function () { return window.location.hostname; }, isLocalDevHost: function () { var host = window.location.hostname; return host === 'localhost' || host === '127.0.0.1'; }, }; })();