diff --git a/core/src/utils/RedirectUnsupportedBrowsers.js b/core/src/utils/RedirectUnsupportedBrowsers.js index 04382722c2d2e..16076a9afd34b 100644 --- a/core/src/utils/RedirectUnsupportedBrowsers.js +++ b/core/src/utils/RedirectUnsupportedBrowsers.js @@ -19,12 +19,13 @@ * along with this program. If not, see . */ +import { generateUrl } from '@nextcloud/router' import { supportedBrowsersRegExp } from '../services/BrowsersListService.js' import browserStorage from '../services/BrowserStorageService.js' import logger from '../logger.js' export const browserStorageKey = 'unsupported-browser-ignore' -const redirectPath = '/unsupported' +const redirectPath = generateUrl('/unsupported') const isBrowserOverridden = browserStorage.getItem(browserStorageKey) === 'true' diff --git a/dist/core-unsupported-browser-redirect.js b/dist/core-unsupported-browser-redirect.js index ac591df266157..a3dd43b170da8 100644 --- a/dist/core-unsupported-browser-redirect.js +++ b/dist/core-unsupported-browser-redirect.js @@ -1,3 +1,3 @@ /*! For license information please see core-unsupported-browser-redirect.js.LICENSE.txt */ -!function(){var e,n={25714:function(e,n,r){"use strict";var o,t,i,u=r(81655),l=r(31e3),c=r.n(l),a=r(77727),d=r.n(a),f=(0,u.ZI)({allowHigherVersions:!0,browsers:d()}),s=(c()(d()),(0,r(62556).getBuilder)("core").clearOnLogout().persist().build()),p=r(22200),b=r(17499),h=null===(o=(0,p.getCurrentUser)())?(0,b.IY)().setApp("core").build():(0,b.IY)().setApp("core").setUid(o.uid).build(),v=r(48764).Buffer,w="/unsupported",g="true"===s.getItem("unsupported-browser-ignore");window.TESTING||null!==(t=OC)&&void 0!==t&&null!==(i=t.config)&&void 0!==i&&i.no_unsupported_browser_warning||function(){if(f.test(navigator.userAgent))h.debug("this browser is officially supported ! 🚀");else if(g)h.debug("this browser is NOT supported but has been manually overridden ! ⚠️");else if(-1===window.location.pathname.indexOf(w)){var e=window.location.href.replace(window.location.origin,""),n=v.from(e).toString("base64");history.pushState(null,null,"".concat(w,"?redirect_url=").concat(n)),window.location.reload()}}()},72950:function(){}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,loaded:!1,exports:{}};return n[e].call(i.exports,i,i.exports,o),i.loaded=!0,i.exports}o.m=n,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},e=[],o.O=function(n,r,t,i){if(!r){var u=1/0;for(d=0;d=i)&&Object.keys(o.O).every((function(e){return o.O[e](r[c])}))?r.splice(c--,1):(l=!1,i0&&e[d-1][2]>i;d--)e[d]=e[d-1];e[d]=[r,t,i]},o.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(n,{a:n}),n},o.d=function(e,n){for(var r in n)o.o(n,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},o.j=8876,function(){o.b=document.baseURI||self.location.href;var e={8876:0};o.O.j=function(n){return 0===e[n]};var n=function(n,r){var t,i,u=r[0],l=r[1],c=r[2],a=0;if(u.some((function(n){return 0!==e[n]}))){for(t in l)o.o(l,t)&&(o.m[t]=l[t]);if(c)var d=c(o)}for(n&&n(r);a=i)&&Object.keys(o.O).every((function(e){return o.O[e](r[c])}))?r.splice(c--,1):(l=!1,i0&&e[d-1][2]>i;d--)e[d]=e[d-1];e[d]=[r,t,i]},o.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(n,{a:n}),n},o.d=function(e,n){for(var r in n)o.o(n,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},o.j=8876,function(){o.b=document.baseURI||self.location.href;var e={8876:0};o.O.j=function(n){return 0===e[n]};var n=function(n,r){var t,i,u=r[0],l=r[1],c=r[2],a=0;if(u.some((function(n){return 0!==e[n]}))){for(t in l)o.o(l,t)&&(o.m[t]=l[t]);if(c)var d=c(o)}for(n&&n(r);a 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","/**\n * @copyright 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { getUserAgentRegExp } from 'browserslist-useragent-regexp'\n// eslint-disable-next-line node/no-extraneous-import\nimport browserslist from 'browserslist'\nimport browserslistConfig from '@nextcloud/browserslist-config'\n\n// Generate a regex that matches user agents to detect incompatible browsers\nexport const supportedBrowsersRegExp = getUserAgentRegExp({ allowHigherVersions: true, browsers: browserslistConfig })\nexport const supportedBrowsers = browserslist(browserslistConfig)\n","/**\n * @copyright 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { getBuilder } from '@nextcloud/browser-storage'\n\nexport default getBuilder('core')\n\t.clearOnLogout()\n\t.persist()\n\t.build()\n","/**\n * @copyright 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n */\n\nimport { supportedBrowsersRegExp } from '../services/BrowsersListService.js'\nimport browserStorage from '../services/BrowserStorageService.js'\nimport logger from '../logger.js'\n\nexport const browserStorageKey = 'unsupported-browser-ignore'\nconst redirectPath = '/unsupported'\n\nconst isBrowserOverridden = browserStorage.getItem(browserStorageKey) === 'true'\n\n/**\n * Test the current browser user agent against our official browserslist config\n * and redirect if unsupported\n */\nexport const testSupportedBrowser = function() {\n\tif (supportedBrowsersRegExp.test(navigator.userAgent)) {\n\t\tlogger.debug('this browser is officially supported ! 🚀')\n\t\treturn\n\t}\n\n\t// If incompatible BUT ignored, let's keep going\n\tif (isBrowserOverridden) {\n\t\tlogger.debug('this browser is NOT supported but has been manually overridden ! ⚠️')\n\t\treturn\n\t}\n\n\t// If incompatible, NOT overridden AND NOT already on the warning page,\n\t// redirect to the unsupported warning page\n\tif (window.location.pathname.indexOf(redirectPath) === -1) {\n\t\tconst redirectUrl = window.location.href.replace(window.location.origin, '')\n\t\tconst base64Param = Buffer.from(redirectUrl).toString('base64')\n\t\thistory.pushState(null, null, `${redirectPath}?redirect_url=${base64Param}`)\n\t\twindow.location.reload()\n\t}\n}\n","/**\n * @copyright 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n */\n\nimport { testSupportedBrowser } from './utils/RedirectUnsupportedBrowsers.js'\n\nif (!window.TESTING && !OC?.config?.no_unsupported_browser_warning) {\n\ttestSupportedBrowser()\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 8876;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8876: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(25714); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","supportedBrowsersRegExp","getUserAgentRegExp","allowHigherVersions","browsers","browserslistConfig","browserslist","getBuilder","clearOnLogout","persist","build","getCurrentUser","getLoggerBuilder","setApp","setUid","uid","redirectPath","isBrowserOverridden","browserStorage","window","TESTING","OC","config","no_unsupported_browser_warning","test","navigator","userAgent","logger","debug","location","pathname","indexOf","redirectUrl","href","replace","origin","base64Param","Buffer","from","toString","history","pushState","reload","testSupportedBrowser","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","this","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","self","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","push","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"core-unsupported-browser-redirect.js?v=22e284cc4a754bfd50a8","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/services/BrowsersListService.js","webpack:///nextcloud/core/src/services/BrowserStorageService.js","webpack:///nextcloud/core/src/utils/RedirectUnsupportedBrowsers.js","webpack:///nextcloud/core/src/unsupported-browser-redirect.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","/**\n * @copyright 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { getUserAgentRegExp } from 'browserslist-useragent-regexp'\n// eslint-disable-next-line node/no-extraneous-import\nimport browserslist from 'browserslist'\nimport browserslistConfig from '@nextcloud/browserslist-config'\n\n// Generate a regex that matches user agents to detect incompatible browsers\nexport const supportedBrowsersRegExp = getUserAgentRegExp({ allowHigherVersions: true, browsers: browserslistConfig })\nexport const supportedBrowsers = browserslist(browserslistConfig)\n","/**\n * @copyright 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { getBuilder } from '@nextcloud/browser-storage'\n\nexport default getBuilder('core')\n\t.clearOnLogout()\n\t.persist()\n\t.build()\n","/**\n * @copyright 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n */\n\nimport { generateUrl } from '@nextcloud/router'\nimport { supportedBrowsersRegExp } from '../services/BrowsersListService.js'\nimport browserStorage from '../services/BrowserStorageService.js'\nimport logger from '../logger.js'\n\nexport const browserStorageKey = 'unsupported-browser-ignore'\nconst redirectPath = generateUrl('/unsupported')\n\nconst isBrowserOverridden = browserStorage.getItem(browserStorageKey) === 'true'\n\n/**\n * Test the current browser user agent against our official browserslist config\n * and redirect if unsupported\n */\nexport const testSupportedBrowser = function() {\n\tif (supportedBrowsersRegExp.test(navigator.userAgent)) {\n\t\tlogger.debug('this browser is officially supported ! 🚀')\n\t\treturn\n\t}\n\n\t// If incompatible BUT ignored, let's keep going\n\tif (isBrowserOverridden) {\n\t\tlogger.debug('this browser is NOT supported but has been manually overridden ! ⚠️')\n\t\treturn\n\t}\n\n\t// If incompatible, NOT overridden AND NOT already on the warning page,\n\t// redirect to the unsupported warning page\n\tif (window.location.pathname.indexOf(redirectPath) === -1) {\n\t\tconst redirectUrl = window.location.href.replace(window.location.origin, '')\n\t\tconst base64Param = Buffer.from(redirectUrl).toString('base64')\n\t\thistory.pushState(null, null, `${redirectPath}?redirect_url=${base64Param}`)\n\t\twindow.location.reload()\n\t}\n}\n","/**\n * @copyright 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n */\n\nimport { testSupportedBrowser } from './utils/RedirectUnsupportedBrowsers.js'\n\nif (!window.TESTING && !OC?.config?.no_unsupported_browser_warning) {\n\ttestSupportedBrowser()\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 8876;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8876: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(25714); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","supportedBrowsersRegExp","getUserAgentRegExp","allowHigherVersions","browsers","browserslistConfig","browserslist","getBuilder","clearOnLogout","persist","build","getCurrentUser","getLoggerBuilder","setApp","setUid","uid","redirectPath","generateUrl","isBrowserOverridden","browserStorage","window","TESTING","OC","config","no_unsupported_browser_warning","test","navigator","userAgent","logger","debug","location","pathname","indexOf","redirectUrl","href","replace","origin","base64Param","Buffer","from","toString","history","pushState","reload","testSupportedBrowser","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","this","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","self","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","push","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/core-unsupported-browser.js b/dist/core-unsupported-browser.js index 25dd697c3734c..3ed85384deb2a 100644 --- a/dist/core-unsupported-browser.js +++ b/dist/core-unsupported-browser.js @@ -1,3 +1,3 @@ /*! For license information please see core-unsupported-browser.js.LICENSE.txt */ -!function(){var n,t,e,r={92442:function(n,t,e){"use strict";var r,o=e(79753),i=e(20144),u=e(81655),s=e(31e3),a=e.n(s),c=e(77727),l=e.n(c),d=((0,u.ZI)({allowHigherVersions:!0,browsers:l()}),a()(l())),f=(0,e(62556).getBuilder)("core").clearOnLogout().persist().build(),p=e(22200),v=e(17499),b=null===(r=(0,p.getCurrentUser)())?(0,v.IY)().setApp("core").build():(0,v.IY)().setApp("core").setUid(r.uid).build(),A=(e(48764).Buffer,"unsupported-browser-ignore"),w=(f.getItem(A),e(9944)),m=e(10861),g=e.n(m),y=e(93455),h=e.n(y),_=e(49298),C=e(48764).Buffer;function x(n,t,e,r,o,i,u){try{var s=n[i](u),a=s.value}catch(n){return void e(n)}s.done?t(a):Promise.resolve(a).then(r,o)}function O(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,r=new Array(t);e=o)&&Object.keys(i.O).every((function(n){return i.O[n](e[a])}))?e.splice(a--,1):(s=!1,o0&&n[l-1][2]>o;l--)n[l]=n[l-1];n[l]=[e,r,o]},i.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(t,{a:t}),t},e=Object.getPrototypeOf?function(n){return Object.getPrototypeOf(n)}:function(n){return n.__proto__},i.t=function(n,r){if(1&r&&(n=this(n)),8&r)return n;if("object"==typeof n&&n){if(4&r&&n.__esModule)return n;if(16&r&&"function"==typeof n.then)return n}var o=Object.create(null);i.r(o);var u={};t=t||[null,e({}),e([]),e(e)];for(var s=2&r&&n;"object"==typeof s&&!~t.indexOf(s);s=e(s))Object.getOwnPropertyNames(s).forEach((function(t){u[t]=function(){return n[t]}}));return u.default=function(){return n},i.d(o,u),o},i.d=function(n,t){for(var e in t)i.o(t,e)&&!i.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},i.e=function(){return Promise.resolve()},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),i.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},i.j=9315,function(){i.b=document.baseURI||self.location.href;var n={9315:0};i.O.j=function(t){return 0===n[t]};var t=function(t,e){var r,o,u=e[0],s=e[1],a=e[2],c=0;if(u.some((function(t){return 0!==n[t]}))){for(r in s)i.o(s,r)&&(i.m[r]=s[r]);if(a)var l=a(i)}for(t&&t(e);cn.length)&&(t=n.length);for(var e=0,r=new Array(t);e=o)&&Object.keys(i.O).every((function(n){return i.O[n](e[a])}))?e.splice(a--,1):(s=!1,o0&&n[l-1][2]>o;l--)n[l]=n[l-1];n[l]=[e,r,o]},i.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(t,{a:t}),t},e=Object.getPrototypeOf?function(n){return Object.getPrototypeOf(n)}:function(n){return n.__proto__},i.t=function(n,r){if(1&r&&(n=this(n)),8&r)return n;if("object"==typeof n&&n){if(4&r&&n.__esModule)return n;if(16&r&&"function"==typeof n.then)return n}var o=Object.create(null);i.r(o);var u={};t=t||[null,e({}),e([]),e(e)];for(var s=2&r&&n;"object"==typeof s&&!~t.indexOf(s);s=e(s))Object.getOwnPropertyNames(s).forEach((function(t){u[t]=function(){return n[t]}}));return u.default=function(){return n},i.d(o,u),o},i.d=function(n,t){for(var e in t)i.o(t,e)&&!i.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},i.e=function(){return Promise.resolve()},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),i.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},i.j=9315,function(){i.b=document.baseURI||self.location.href;var n={9315:0};i.O.j=function(t){return 0===n[t]};var t=function(t,e){var r,o,u=e[0],s=e[1],a=e[2],c=0;if(u.some((function(t){return 0!==n[t]}))){for(r in s)i.o(s,r)&&(i.m[r]=s[r]);if(a)var l=a(i)}for(t&&t(e);c 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","/**\n * @copyright 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { getUserAgentRegExp } from 'browserslist-useragent-regexp'\n// eslint-disable-next-line node/no-extraneous-import\nimport browserslist from 'browserslist'\nimport browserslistConfig from '@nextcloud/browserslist-config'\n\n// Generate a regex that matches user agents to detect incompatible browsers\nexport const supportedBrowsersRegExp = getUserAgentRegExp({ allowHigherVersions: true, browsers: browserslistConfig })\nexport const supportedBrowsers = browserslist(browserslistConfig)\n","/**\n * @copyright 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { getBuilder } from '@nextcloud/browser-storage'\n\nexport default getBuilder('core')\n\t.clearOnLogout()\n\t.persist()\n\t.build()\n","/**\n * @copyright 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n */\n\nimport { supportedBrowsersRegExp } from '../services/BrowsersListService.js'\nimport browserStorage from '../services/BrowserStorageService.js'\nimport logger from '../logger.js'\n\nexport const browserStorageKey = 'unsupported-browser-ignore'\nconst redirectPath = '/unsupported'\n\nconst isBrowserOverridden = browserStorage.getItem(browserStorageKey) === 'true'\n\n/**\n * Test the current browser user agent against our official browserslist config\n * and redirect if unsupported\n */\nexport const testSupportedBrowser = function() {\n\tif (supportedBrowsersRegExp.test(navigator.userAgent)) {\n\t\tlogger.debug('this browser is officially supported ! 🚀')\n\t\treturn\n\t}\n\n\t// If incompatible BUT ignored, let's keep going\n\tif (isBrowserOverridden) {\n\t\tlogger.debug('this browser is NOT supported but has been manually overridden ! ⚠️')\n\t\treturn\n\t}\n\n\t// If incompatible, NOT overridden AND NOT already on the warning page,\n\t// redirect to the unsupported warning page\n\tif (window.location.pathname.indexOf(redirectPath) === -1) {\n\t\tconst redirectUrl = window.location.href.replace(window.location.origin, '')\n\t\tconst base64Param = Buffer.from(redirectUrl).toString('base64')\n\t\thistory.pushState(null, null, `${redirectPath}?redirect_url=${base64Param}`)\n\t\twindow.location.reload()\n\t}\n}\n"," \n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnsupportedBrowser.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnsupportedBrowser.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnsupportedBrowser.vue?vue&type=style&index=0&id=5dfe50c8&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnsupportedBrowser.vue?vue&type=style&index=0&id=5dfe50c8&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UnsupportedBrowser.vue?vue&type=template&id=5dfe50c8&scoped=true&\"\nimport script from \"./UnsupportedBrowser.vue?vue&type=script&lang=js&\"\nexport * from \"./UnsupportedBrowser.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UnsupportedBrowser.vue?vue&type=style&index=0&id=5dfe50c8&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5dfe50c8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content-unsupported-browser guest-box\"},[_c('NcEmptyContent',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Web')]},proxy:true},{key:\"action\",fn:function(){return [_c('div',[_c('h2',[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your browser is not supported. Please upgrade to a newer version or a supported one.'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{staticClass:\"content-unsupported-browser__continue\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.forceBrowsing}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Continue with this unsupported browser'))+\"\\n\\t\\t\\t\\t\")])],1),_vm._v(\" \"),_c('ul',{staticClass:\"content-unsupported-browser__list\"},[_c('h3',[_vm._v(_vm._s(_vm.t('core', 'Supported versions')))]),_vm._v(\" \"),_vm._l((_vm.formattedBrowsersList),function(browser){return _c('li',{key:browser},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(browser)+\"\\n\\t\\t\\t\\t\")])})],2)]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'This browser is not supported'))+\"\\n\\t\\t\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n */\n\nimport { generateUrl } from '@nextcloud/router'\nimport Vue from 'vue'\n\nimport { browserStorageKey } from './utils/RedirectUnsupportedBrowsers.js'\nimport browserStorage from './services/BrowserStorageService.js'\nimport UnsupportedBrowser from './views/UnsupportedBrowser.vue'\n\n// If the ignore token is set, redirect\nif (browserStorage.getItem(browserStorageKey) === 'true') {\n\twindow.location = generateUrl('/')\n}\n\nexport default new Vue({\n\tel: '#unsupported-browser',\n\t// eslint-disable-next-line vue/match-component-file-name\n\tname: 'UnsupportedBrowserRoot',\n\trender: h => h(UnsupportedBrowser),\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".content-unsupported-browser[data-v-5dfe50c8]{display:flex;justify-content:center;width:400px;max-width:calc(90vw - 60px);margin:auto;padding:30px}.content-unsupported-browser .empty-content[data-v-5dfe50c8]{margin:0}.content-unsupported-browser .empty-content[data-v-5dfe50c8] .empty-content__icon{opacity:1}.content-unsupported-browser__continue[data-v-5dfe50c8]{display:block;margin:30px auto}.content-unsupported-browser__list[data-v-5dfe50c8]{margin-top:60px;margin-bottom:30px}.content-unsupported-browser__list li[data-v-5dfe50c8]{text-align:left}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/UnsupportedBrowser.vue\"],\"names\":[],\"mappings\":\"AA2KA,8CACC,YAAA,CACA,sBAAA,CACA,WAAA,CACA,2BAAA,CACA,WAAA,CACA,YARS,CAUT,6DACC,QAAA,CACA,kFACC,SAAA,CAIF,wDACC,aAAA,CACA,gBAAA,CAGD,oDACC,eAAA,CACA,kBAxBQ,CAyBR,uDACC,eAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n$spacing: 30px;\\n\\n.content-unsupported-browser {\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\twidth: 400px;\\n\\tmax-width: calc(90vw - 2 * $spacing);\\n\\tmargin: auto;\\n\\tpadding: $spacing;\\n\\n\\t.empty-content {\\n\\t\\tmargin: 0;\\n\\t\\t&::v-deep .empty-content__icon {\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n\\n\\t&__continue {\\n\\t\\tdisplay: block;\\n\\t\\tmargin: $spacing auto;\\n\\t}\\n\\n\\t&__list {\\n\\t\\tmargin-top: 2 * $spacing;\\n\\t\\tmargin-bottom: $spacing;\\n\\t\\tli {\\n\\t\\t\\ttext-align: left;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = function() { return Promise.resolve(); };","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 9315;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t9315: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(92442); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","user","supportedBrowsers","getUserAgentRegExp","allowHigherVersions","browsers","browserslistConfig","browserslist","getBuilder","clearOnLogout","persist","build","getCurrentUser","getLoggerBuilder","setApp","setUid","uid","browserStorageKey","browserStorage","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","scopedSlots","_u","key","fn","proxy","_v","_s","t","attrs","on","forceBrowsing","_l","browser","window","location","generateUrl","Vue","el","name","render","h","UnsupportedBrowser","___CSS_LOADER_EXPORT___","push","module","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","value","mode","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","e","Promise","resolve","g","globalThis","Function","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"core-unsupported-browser.js?v=6ddb115cfbe502ffcbb3","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/create fake namespace object","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/services/BrowsersListService.js","webpack:///nextcloud/core/src/services/BrowserStorageService.js","webpack:///nextcloud/core/src/utils/RedirectUnsupportedBrowsers.js","webpack:///nextcloud/core/src/views/UnsupportedBrowser.vue","webpack:///nextcloud/core/src/views/UnsupportedBrowser.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/UnsupportedBrowser.vue?f8ee","webpack://nextcloud/./core/src/views/UnsupportedBrowser.vue?d53c","webpack:///nextcloud/core/src/views/UnsupportedBrowser.vue?vue&type=template&id=5dfe50c8&scoped=true&","webpack:///nextcloud/core/src/unsupported-browser.js","webpack:///nextcloud/core/src/views/UnsupportedBrowser.vue?vue&type=style&index=0&id=5dfe50c8&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","/**\n * @copyright 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { getUserAgentRegExp } from 'browserslist-useragent-regexp'\n// eslint-disable-next-line node/no-extraneous-import\nimport browserslist from 'browserslist'\nimport browserslistConfig from '@nextcloud/browserslist-config'\n\n// Generate a regex that matches user agents to detect incompatible browsers\nexport const supportedBrowsersRegExp = getUserAgentRegExp({ allowHigherVersions: true, browsers: browserslistConfig })\nexport const supportedBrowsers = browserslist(browserslistConfig)\n","/**\n * @copyright 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { getBuilder } from '@nextcloud/browser-storage'\n\nexport default getBuilder('core')\n\t.clearOnLogout()\n\t.persist()\n\t.build()\n","/**\n * @copyright 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n */\n\nimport { generateUrl } from '@nextcloud/router'\nimport { supportedBrowsersRegExp } from '../services/BrowsersListService.js'\nimport browserStorage from '../services/BrowserStorageService.js'\nimport logger from '../logger.js'\n\nexport const browserStorageKey = 'unsupported-browser-ignore'\nconst redirectPath = generateUrl('/unsupported')\n\nconst isBrowserOverridden = browserStorage.getItem(browserStorageKey) === 'true'\n\n/**\n * Test the current browser user agent against our official browserslist config\n * and redirect if unsupported\n */\nexport const testSupportedBrowser = function() {\n\tif (supportedBrowsersRegExp.test(navigator.userAgent)) {\n\t\tlogger.debug('this browser is officially supported ! 🚀')\n\t\treturn\n\t}\n\n\t// If incompatible BUT ignored, let's keep going\n\tif (isBrowserOverridden) {\n\t\tlogger.debug('this browser is NOT supported but has been manually overridden ! ⚠️')\n\t\treturn\n\t}\n\n\t// If incompatible, NOT overridden AND NOT already on the warning page,\n\t// redirect to the unsupported warning page\n\tif (window.location.pathname.indexOf(redirectPath) === -1) {\n\t\tconst redirectUrl = window.location.href.replace(window.location.origin, '')\n\t\tconst base64Param = Buffer.from(redirectUrl).toString('base64')\n\t\thistory.pushState(null, null, `${redirectPath}?redirect_url=${base64Param}`)\n\t\twindow.location.reload()\n\t}\n}\n"," \n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnsupportedBrowser.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnsupportedBrowser.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnsupportedBrowser.vue?vue&type=style&index=0&id=5dfe50c8&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnsupportedBrowser.vue?vue&type=style&index=0&id=5dfe50c8&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UnsupportedBrowser.vue?vue&type=template&id=5dfe50c8&scoped=true&\"\nimport script from \"./UnsupportedBrowser.vue?vue&type=script&lang=js&\"\nexport * from \"./UnsupportedBrowser.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UnsupportedBrowser.vue?vue&type=style&index=0&id=5dfe50c8&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5dfe50c8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content-unsupported-browser guest-box\"},[_c('NcEmptyContent',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Web')]},proxy:true},{key:\"action\",fn:function(){return [_c('div',[_c('h2',[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your browser is not supported. Please upgrade to a newer version or a supported one.'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{staticClass:\"content-unsupported-browser__continue\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.forceBrowsing}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Continue with this unsupported browser'))+\"\\n\\t\\t\\t\\t\")])],1),_vm._v(\" \"),_c('ul',{staticClass:\"content-unsupported-browser__list\"},[_c('h3',[_vm._v(_vm._s(_vm.t('core', 'Supported versions')))]),_vm._v(\" \"),_vm._l((_vm.formattedBrowsersList),function(browser){return _c('li',{key:browser},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(browser)+\"\\n\\t\\t\\t\\t\")])})],2)]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'This browser is not supported'))+\"\\n\\t\\t\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n */\n\nimport { generateUrl } from '@nextcloud/router'\nimport Vue from 'vue'\n\nimport { browserStorageKey } from './utils/RedirectUnsupportedBrowsers.js'\nimport browserStorage from './services/BrowserStorageService.js'\nimport UnsupportedBrowser from './views/UnsupportedBrowser.vue'\n\n// If the ignore token is set, redirect\nif (browserStorage.getItem(browserStorageKey) === 'true') {\n\twindow.location = generateUrl('/')\n}\n\nexport default new Vue({\n\tel: '#unsupported-browser',\n\t// eslint-disable-next-line vue/match-component-file-name\n\tname: 'UnsupportedBrowserRoot',\n\trender: h => h(UnsupportedBrowser),\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".content-unsupported-browser[data-v-5dfe50c8]{display:flex;justify-content:center;width:400px;max-width:calc(90vw - 60px);margin:auto;padding:30px}.content-unsupported-browser .empty-content[data-v-5dfe50c8]{margin:0}.content-unsupported-browser .empty-content[data-v-5dfe50c8] .empty-content__icon{opacity:1}.content-unsupported-browser__continue[data-v-5dfe50c8]{display:block;margin:30px auto}.content-unsupported-browser__list[data-v-5dfe50c8]{margin-top:60px;margin-bottom:30px}.content-unsupported-browser__list li[data-v-5dfe50c8]{text-align:left}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/UnsupportedBrowser.vue\"],\"names\":[],\"mappings\":\"AA2KA,8CACC,YAAA,CACA,sBAAA,CACA,WAAA,CACA,2BAAA,CACA,WAAA,CACA,YARS,CAUT,6DACC,QAAA,CACA,kFACC,SAAA,CAIF,wDACC,aAAA,CACA,gBAAA,CAGD,oDACC,eAAA,CACA,kBAxBQ,CAyBR,uDACC,eAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n$spacing: 30px;\\n\\n.content-unsupported-browser {\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\twidth: 400px;\\n\\tmax-width: calc(90vw - 2 * $spacing);\\n\\tmargin: auto;\\n\\tpadding: $spacing;\\n\\n\\t.empty-content {\\n\\t\\tmargin: 0;\\n\\t\\t&::v-deep .empty-content__icon {\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n\\n\\t&__continue {\\n\\t\\tdisplay: block;\\n\\t\\tmargin: $spacing auto;\\n\\t}\\n\\n\\t&__list {\\n\\t\\tmargin-top: 2 * $spacing;\\n\\t\\tmargin-bottom: $spacing;\\n\\t\\tli {\\n\\t\\t\\ttext-align: left;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = function() { return Promise.resolve(); };","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 9315;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t9315: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(92442); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","user","supportedBrowsers","getUserAgentRegExp","allowHigherVersions","browsers","browserslistConfig","browserslist","getBuilder","clearOnLogout","persist","build","getCurrentUser","getLoggerBuilder","setApp","setUid","uid","browserStorageKey","generateUrl","browserStorage","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","scopedSlots","_u","key","fn","proxy","_v","_s","t","attrs","on","forceBrowsing","_l","browser","window","location","Vue","el","name","render","h","UnsupportedBrowser","___CSS_LOADER_EXPORT___","push","module","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","value","mode","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","e","Promise","resolve","g","globalThis","Function","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file