mirror of
https://github.com/nextcloud/server.git
synced 2026-10-25 12:15:44 +01:00
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
1 line
7.4 KiB
Plaintext
1 line
7.4 KiB
Plaintext
{"version":3,"file":"core-unsupported-browser.mjs","sources":["../build/frontend/core/src/views/UnsupportedBrowser.vue","../build/frontend/core/src/unsupported-browser.ts"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport { mdiWeb } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { generateUrl, getRootUrl } from '@nextcloud/router'\nimport { agents } from 'caniuse-lite/dist/unpacker/agents.js'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\nimport { supportedBrowsers } from '../services/BrowsersListService.ts'\nimport browserStorage from '../services/BrowserStorageService.ts'\nimport { logger } from '../utils/logger.ts'\nimport { browserStorageKey } from '../utils/RedirectUnsupportedBrowsers.js'\n\nlogger.debug('Supported browsers', { supportedBrowsers })\n\nconst isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)\n\n// Lowest supported version per browser, restricted to the kind of device in use\nconst lowestVersions = new Map<string, number>()\nfor (const browser of supportedBrowsers) {\n\tif (!browser || isMobileBrowser(browser) !== isMobile) {\n\t\tcontinue\n\t}\n\tconst [id, version] = browser.split(' ') as [string, string]\n\tconst lowest = lowestVersions.get(id)\n\tif (lowest === undefined || lowest > parseFloat(version)) {\n\t\tlowestVersions.set(id, parseFloat(version))\n\t}\n}\n\nconst formattedBrowsersList = [...lowestVersions]\n\t.filter(([id]) => agents[id]?.browser)\n\t.map(([id, version]) => t('core', '{name} version {version} and above', { name: agents[id]!.browser, version }))\n\n/**\n * Remember to allow this browser and continue to the page the user was\n * redirected from, or to the start page.\n */\nfunction forceBrowsing() {\n\tbrowserStorage.setItem(browserStorageKey, 'true')\n\n\tconst redirectUrl = new URLSearchParams(window.location.search).get('redirect_url')\n\tif (redirectUrl) {\n\t\tconst redirectPath = atob(redirectUrl)\n\t\t\t.replace('index.php', '')\n\t\t\t.replace(getRootUrl(), '')\n\t\t\t.replace(/\\/\\//g, '/')\n\n\t\tif (redirectPath.startsWith('/')) {\n\t\t\twindow.location.href = generateUrl(redirectPath)\n\t\t\treturn\n\t\t}\n\t}\n\n\twindow.location.href = generateUrl('/')\n}\n\n/**\n * Detect if the browserslist browser is a mobile one\n *\n * @see https://github.com/browserslist/browserslist#query-composition\n * @param browser - A browserslist browser, e.g. `and_chr 90`\n */\nfunction isMobileBrowser(browser: string): boolean {\n\tbrowser = browser.toLowerCase()\n\treturn browser.includes('and_')\n\t\t|| browser.includes('android')\n\t\t|| browser.includes('ios_')\n\t\t|| browser.includes('mobile')\n\t\t|| browser.includes('_mob')\n\t\t|| browser.includes('samsung')\n}\n</script>\n\n<template>\n\t<div class=\"guest-box\" :class=\"$style.unsupportedBrowser\">\n\t\t<NcEmptyContent :name=\"t('core', 'This browser is not supported')\">\n\t\t\t<template #icon>\n\t\t\t\t<NcIconSvgWrapper :path=\"mdiWeb\" />\n\t\t\t</template>\n\t\t\t<template #action>\n\t\t\t\t<div>\n\t\t\t\t\t<h2>\n\t\t\t\t\t\t{{ t('core', 'Your browser is not supported. Please upgrade to a newer version or a supported one.') }}\n\t\t\t\t\t</h2>\n\t\t\t\t\t<NcButton :class=\"$style.unsupportedBrowser__continue\" variant=\"primary\" @click=\"forceBrowsing\">\n\t\t\t\t\t\t{{ t('core', 'Continue with this unsupported browser') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\n\t\t\t\t<div :class=\"$style.unsupportedBrowser__list\">\n\t\t\t\t\t<h3>{{ t('core', 'Supported versions') }}</h3>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li v-for=\"browser in formattedBrowsersList\" :key=\"browser\">\n\t\t\t\t\t\t\t{{ browser }}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\t</div>\n</template>\n\n<style module lang=\"scss\">\n$spacing: 30px;\n\n.unsupportedBrowser {\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:global(.empty-content) {\n\t\tmargin: 0;\n\t}\n\n\t:global(.empty-content__icon) {\n\t\topacity: 1;\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\n\t\tli {\n\t\t\ttext-align: start;\n\t\t}\n\t}\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateUrl } from '@nextcloud/router'\nimport { createApp } from 'vue'\nimport UnsupportedBrowser from './views/UnsupportedBrowser.vue'\nimport browserStorage from './services/BrowserStorageService.ts'\nimport { browserStorageKey } from './utils/RedirectUnsupportedBrowsers.js'\n\nif (browserStorage.getItem(browserStorageKey) === 'true') {\n\twindow.location.href = generateUrl('/')\n} else {\n\tcreateApp(UnsupportedBrowser).mount('#unsupported-browser')\n}\n"],"names":["logger","supportedBrowsers","isMobile","lowestVersions","browser","isMobileBrowser","id","version","lowest","formattedBrowsersList","agents","t","forceBrowsing","browserStorage","browserStorageKey","redirectUrl","redirectPath","getRootUrl","generateUrl","_createElementBlock","_normalizeClass","$style","_createVNode","_unref","NcEmptyContent","NcIconSvgWrapper","mdiWeb","_createElementVNode","NcButton","_Fragment","_renderList","_openBlock","createApp","UnsupportedBrowser"],"mappings":"8vBAkBAA,EAAO,MAAM,qBAAsB,CAAE,kBAAAC,CAAA,CAAmB,EAExD,MAAMC,EAAW,iEAAiE,KAAK,UAAU,SAAS,EAGpGC,MAAqB,IAC3B,UAAWC,KAAWH,EAAmB,CACxC,GAAI,CAACG,GAAWC,EAAgBD,CAAO,IAAMF,EAC5C,SAED,KAAM,CAACI,EAAIC,CAAO,EAAIH,EAAQ,MAAM,GAAG,EACjCI,EAASL,EAAe,IAAIG,CAAE,GAChCE,IAAW,QAAaA,EAAS,WAAWD,CAAO,IACtDJ,EAAe,IAAIG,EAAI,WAAWC,CAAO,CAAC,CAE5C,CAEA,MAAME,EAAwB,CAAC,GAAGN,CAAc,EAC9C,OAAO,CAAC,CAACG,CAAE,IAAMI,EAAAA,OAAOJ,CAAE,GAAG,OAAO,EACpC,IAAI,CAAC,CAACA,EAAIC,CAAO,IAAMI,EAAE,OAAQ,qCAAsC,CAAE,KAAMD,EAAAA,OAAOJ,CAAE,EAAG,QAAS,QAAAC,CAAA,CAAS,CAAC,EAMhH,SAASK,GAAgB,CACxBC,EAAe,QAAQC,EAAmB,MAAM,EAEhD,MAAMC,EAAc,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAAE,IAAI,cAAc,EAClF,GAAIA,EAAa,CAChB,MAAMC,EAAe,KAAKD,CAAW,EACnC,QAAQ,YAAa,EAAE,EACvB,QAAQE,IAAc,EAAE,EACxB,QAAQ,QAAS,GAAG,EAEtB,GAAID,EAAa,WAAW,GAAG,EAAG,CACjC,OAAO,SAAS,KAAOE,EAAYF,CAAY,EAC/C,MACD,CACD,CAEA,OAAO,SAAS,KAAOE,EAAY,GAAG,CACvC,CAQA,SAASb,EAAgBD,EAA0B,CAClD,OAAAA,EAAUA,EAAQ,YAAA,EACXA,EAAQ,SAAS,MAAM,GAC1BA,EAAQ,SAAS,SAAS,GAC1BA,EAAQ,SAAS,MAAM,GACvBA,EAAQ,SAAS,QAAQ,GACzBA,EAAQ,SAAS,MAAM,GACvBA,EAAQ,SAAS,SAAS,CAC/B,mBAICe,EAyBM,MAAA,CAzBD,MAAKC,EAAA,CAAC,YAAoBC,EAAAA,OAAO,kBAAkB,CAAA,CAAA,GACvDC,EAuBiBC,EAAAC,CAAA,EAAA,CAvBA,KAAMD,EAAAZ,CAAA,EAAC,OAAA,+BAAA,CAAA,GACZ,OACV,IAAmC,CAAnCW,EAAmCC,EAAAE,CAAA,EAAA,CAAhB,KAAMF,EAAAG,CAAA,GAAM,KAAA,EAAA,CAAA,MAAA,CAAA,CAAA,GAErB,SACV,IAOM,CAPNC,EAOM,MAAA,KAAA,CANLA,EAEK,YADDJ,EAAAZ,CAAA,EAAC,OAAA,sFAAA,CAAA,EAAA,CAAA,EAELW,EAEWC,EAAAK,CAAA,EAAA,CAFA,MAAKR,EAAEC,EAAAA,OAAO,4BAA4B,EAAE,QAAQ,UAAW,QAAOT,CAAA,aAChF,IAAyD,KAAtDW,EAAAZ,CAAA,EAAC,OAAA,wCAAA,CAAA,EAAA,CAAA,CAAA,uBAINgB,EAOM,MAAA,CAPA,MAAKP,EAAEC,EAAAA,OAAO,wBAAwB,CAAA,GAC3CM,EAA8C,YAAvCJ,EAAAZ,CAAA,EAAC,OAAA,oBAAA,CAAA,EAAA,CAAA,EACRgB,EAIK,KAAA,KAAA,QAHJR,EAEKU,EAAA,KAAAC,EAFiBP,EAAAd,CAAA,EAAXL,IAAX2B,EAAA,EAAAZ,EAEK,KAAA,CAFyC,IAAKf,CAAA,IAC/CA,CAAO,EAAA,CAAA,yRCxFbS,EAAe,QAAQC,CAAiB,IAAM,OACjD,OAAO,SAAS,KAAOI,EAAY,GAAG,EAEtCc,EAAUC,CAAkB,EAAE,MAAM,sBAAsB"} |