You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nextcloud/dist/settings-apps-view-4529.js.map

1 line
228 KiB
Plaintext

{"version":3,"file":"settings-apps-view-4529.js?v=cf981d1db3fc4b0689be","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/constants/AppsConstants.js","webpack:///nextcloud/apps/settings/src/service/rebuild-navigation.js","webpack:///nextcloud/apps/settings/src/mixins/AppManagement.js","webpack:///nextcloud/apps/settings/src/constants/AppstoreCategoryIcons.ts","webpack:///nextcloud/apps/settings/src/store/apps-store.ts","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=style&index=0&id=73184220&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=style&index=0&id=09f30db0&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppList/AppLevelBadge.vue?vue&type=style&index=0&id=3590dbeb&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue?vue&type=style&index=0&id=618752df&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?vue&type=style&index=0&id=fccce5ae&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?vue&type=style&index=0&id=24864562&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?vue&type=style&index=0&id=2261a93d&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=style&index=0&id=7c5c8e59&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/views/AppStoreSidebar.vue?vue&type=style&index=0&id=31ecb666&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue?vue&type=style&index=0&id=7d015114&prod&scoped=true&lang=css","webpack:///nextcloud/apps/settings/src/views/AppStore.vue?vue&type=style&index=0&id=a75d4530&prod&scoped=true&lang=css","webpack:///nextcloud/apps/settings/src/views/AppStoreNavigation.vue?vue&type=style&index=0&id=d15221f2&prod&scoped=true&lang=css","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?af1e","webpack:///nextcloud/apps/settings/src/components/SvgFilterMixin.vue","webpack:///nextcloud/apps/settings/src/components/SvgFilterMixin.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/SvgFilterMixin.vue?5bcd","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?854e","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?a9a1","webpack:///nextcloud/apps/settings/src/components/AppList/AppLevelBadge.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppLevelBadge.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/components/AppList/AppLevelBadge.vue?d837","webpack://nextcloud/./apps/settings/src/components/AppList/AppLevelBadge.vue?74e8","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/settings/src/components/AppList/AppScore.vue?4d91","webpack://nextcloud/./apps/settings/src/components/AppList/AppScore.vue?26fd","webpack:///nextcloud/apps/settings/src/views/AppStore.vue","webpack:///nextcloud/node_modules/yocto-queue/index.js","webpack:///nextcloud/node_modules/p-limit/index.js","webpack:///nextcloud/apps/settings/src/components/AppList.vue","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/AppList.vue?9f90","webpack://nextcloud/./apps/settings/src/components/AppList.vue?8acf","webpack://nextcloud/./apps/settings/src/components/AppList.vue?ee21","webpack:///nextcloud/apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue","webpack:///nextcloud/apps/settings/src/utils/appDiscoverParser.ts","webpack:///nextcloud/apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue?ee0a","webpack://nextcloud/./apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue?0759","webpack:///nextcloud/apps/settings/src/views/AppStore.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/AppStore.vue?9deb","webpack://nextcloud/./apps/settings/src/views/AppStore.vue?47b2","webpack:///nextcloud/apps/settings/src/views/AppStoreNavigation.vue","webpack:///nextcloud/apps/settings/src/views/AppStoreNavigation.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/AppStoreNavigation.vue?b382","webpack://nextcloud/./apps/settings/src/views/AppStoreNavigation.vue?6e6f","webpack:///nextcloud/apps/settings/src/views/AppStoreSidebar.vue","webpack:///nextcloud/apps/settings/src/components/Markdown.vue","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?c49c","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?26cf","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?d299","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?4cfb","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?311d","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?9ed4","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?b564","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?d4df","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?c0dd","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?d492","webpack:///nextcloud/apps/settings/src/views/AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/settings/src/composables/useAppIcon.ts","webpack://nextcloud/./apps/settings/src/views/AppStoreSidebar.vue?99b3","webpack://nextcloud/./apps/settings/src/views/AppStoreSidebar.vue?5373"],"sourcesContent":["/**\n * @copyright 2022, Julia Kirschenheuter <julia.kirschenheuter@nextcloud.com>\n *\n * @author Julia Kirschenheuter <julia.kirschenheuter@nextcloud.com>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of verification constants, according to Apps */\nexport const APPS_SECTION_ENUM = Object.freeze({\n\tdiscover: t('settings', 'Discover'),\n\tinstalled: t('settings', 'Your apps'),\n\tenabled: t('settings', 'Active apps'),\n\tdisabled: t('settings', 'Disabled apps'),\n\tupdates: t('settings', 'Updates'),\n\t'app-bundles': t('settings', 'App bundles'),\n\tfeatured: t('settings', 'Featured apps'),\n\tsupported: t('settings', 'Supported apps'), // From subscription\n})\n","import axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { emit } from '@nextcloud/event-bus'\n\nexport default () => {\n\treturn axios.get(generateOcsUrl('core/navigation', 2) + '/apps?format=json')\n\t\t.then(({ data }) => {\n\t\t\tif (data.ocs.meta.statuscode !== 200) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\temit('nextcloud:app-menu.refresh', { apps: data.ocs.data })\n\t\t\twindow.dispatchEvent(new Event('resize'))\n\t\t})\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport rebuildNavigation from '../service/rebuild-navigation.js'\n\nexport default {\n\tcomputed: {\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map(group => { return { id: group, name: group } })\n\t\t},\n\t\tinstalling() {\n\t\t\treturn this.$store.getters.loading('install')\n\t\t},\n\t\tisLoading() {\n\t\t\treturn this.app && this.$store.getters.loading(this.app.id)\n\t\t},\n\t\tenableButtonText() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'Download and enable')\n\t\t\t}\n\t\t\treturn t('settings', 'Enable')\n\t\t},\n\t\tforceEnableButtonText() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'Allow untested app')\n\t\t\t}\n\t\t\treturn t('settings', 'Allow untested app')\n\t\t},\n\t\tenableButtonTooltip() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t\tforceEnableButtonTooltip() {\n\t\t\tconst base = t('settings', 'This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.')\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn base + ' ' + t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn base\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tif (this.app && this.app.groups && this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasyncFindGroup(query) {\n\t\t\treturn this.$store.dispatch('getGroups', { search: query, limit: 5, offset: 0 })\n\t\t},\n\t\tisLimitedToGroups(app) {\n\t\t\tif (this.app.groups.length || this.groupCheckedAppsData) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tsetGroupLimit() {\n\t\t\tif (!this.groupCheckedAppsData) {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: [] })\n\t\t\t}\n\t\t},\n\t\tcanLimitToGroups(app) {\n\t\t\tif ((app.types && app.types.includes('filesystem'))\n\t\t\t\t\t|| app.types.includes('prelogin')\n\t\t\t\t\t|| app.types.includes('authentication')\n\t\t\t\t\t|| app.types.includes('logging')\n\t\t\t\t\t|| app.types.includes('prevent_group_restriction')) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\taddGroupLimitation(groupArray) {\n\t\t\tconst group = groupArray.pop()\n\t\t\tconst groups = this.app.groups.concat([]).concat([group.id])\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups })\n\t\t},\n\t\tremoveGroupLimitation(group) {\n\t\t\tconst currentGroups = this.app.groups.concat([])\n\t\t\tconst index = currentGroups.indexOf(group.id)\n\t\t\tif (index > -1) {\n\t\t\t\tcurrentGroups.splice(index, 1)\n\t\t\t}\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: currentGroups })\n\t\t},\n\t\tforceEnable(appId) {\n\t\t\tthis.$store.dispatch('forceEnableApp', { appId, groups: [] })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tenable(appId) {\n\t\t\tthis.$store.dispatch('enableApp', { appId, groups: [] })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tdisable(appId) {\n\t\t\tthis.$store.dispatch('disableApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tremove(appId) {\n\t\t\tthis.$store.dispatch('uninstallApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tinstall(appId) {\n\t\t\tthis.$store.dispatch('enableApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tupdate(appId) {\n\t\t\tthis.$store.dispatch('updateApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2024 Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\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 <http://www.gnu.org/licenses/>.\n *\n */\nimport { mdiAccount, mdiAccountMultiple, mdiArchive, mdiCheck, mdiClipboardFlow, mdiClose, mdiCog, mdiControllerClassic, mdiDownload, mdiFileDocumentEdit, mdiFolder, mdiKey, mdiMagnify, mdiMonitorEye, mdiMultimedia, mdiOfficeBuilding, mdiOpenInApp, mdiSecurity, mdiStar, mdiStarCircleOutline, mdiStarShooting, mdiTools, mdiViewDashboard, } from '@mdi/js';\n/**\n * SVG paths used for appstore category icons\n */\nexport default Object.freeze({\n // system special categories\n discover: mdiStarCircleOutline,\n installed: mdiAccount,\n enabled: mdiCheck,\n disabled: mdiClose,\n bundles: mdiArchive,\n supported: mdiStarShooting,\n featured: mdiStar,\n updates: mdiDownload,\n // generic categories\n auth: mdiKey,\n customization: mdiCog,\n dashboard: mdiViewDashboard,\n files: mdiFolder,\n games: mdiControllerClassic,\n integration: mdiOpenInApp,\n monitoring: mdiMonitorEye,\n multimedia: mdiMultimedia,\n office: mdiFileDocumentEdit,\n organization: mdiOfficeBuilding,\n search: mdiMagnify,\n security: mdiSecurity,\n social: mdiAccountMultiple,\n tools: mdiTools,\n workflow: mdiClipboardFlow,\n});\n","/**\n * @copyright Copyright (c) 2024 Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\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 <http://www.gnu.org/licenses/>.\n *\n */\nimport { showError } from '@nextcloud/dialogs';\nimport { loadState } from '@nextcloud/initial-state';\nimport { translate as t } from '@nextcloud/l10n';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport axios from '@nextcloud/axios';\nimport logger from '../logger';\nimport APPSTORE_CATEGORY_ICONS from '../constants/AppstoreCategoryIcons.ts';\nconst showApiError = () => showError(t('settings', 'An error occurred during the request. Unable to proceed.'));\nexport const useAppsStore = defineStore('settings-apps', {\n state: () => ({\n apps: [],\n categories: [],\n updateCount: loadState('settings', 'appstoreUpdateCount', 0),\n loading: {\n apps: false,\n categories: false,\n },\n loadingList: false,\n gettingCategoriesPromise: null,\n }),\n actions: {\n async loadCategories(force = false) {\n if (this.categories.length > 0 && !force) {\n return;\n }\n try {\n this.loading.categories = true;\n const { data: categories } = await axios.get(generateUrl('settings/apps/categories'));\n for (const category of categories) {\n category.icon = APPSTORE_CATEGORY_ICONS[category.id] ?? '';\n }\n this.$patch({\n categories,\n });\n }\n catch (error) {\n logger.error(error);\n showApiError();\n }\n finally {\n this.loading.categories = false;\n }\n },\n async loadApps(force = false) {\n if (this.apps.length > 0 && !force) {\n return;\n }\n try {\n this.loading.apps = true;\n const { data } = await axios.get(generateUrl('settings/apps/list'));\n this.$patch({\n apps: data.apps,\n });\n }\n catch (error) {\n logger.error(error);\n showApiError();\n }\n finally {\n this.loading.apps = false;\n }\n },\n getCategoryById(categoryId) {\n return this.categories.find(({ id }) => id === categoryId) ?? null;\n },\n getAppById(appId) {\n return this.apps.find(({ id }) => id === appId) ?? null;\n },\n },\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, `.apps-list[data-v-73184220]{display:flex;flex-wrap:wrap;align-content:flex-start}.apps-list--move[data-v-73184220]{transition:transform 1s}.apps-list #app-list-update-all[data-v-73184220]{margin-left:10px}.apps-list__toolbar[data-v-73184220]{height:60px;padding:8px;padding-left:60px;width:100%;background-color:var(--color-main-background);position:sticky;top:0;z-index:1;display:flex;align-items:center}.apps-list--list-view[data-v-73184220]{margin-bottom:100px;position:relative}.apps-list__list-container[data-v-73184220]{width:100%}.apps-list__store-container[data-v-73184220]{display:flex;flex-wrap:wrap}.apps-list__bundle-heading[data-v-73184220]{display:flex;align-items:center;margin:20px 10px 20px 0}.apps-list__bundle-header[data-v-73184220]{margin:0 10px 0 50px;font-weight:bold;font-size:20px;line-height:30px;color:var(--color-text-light)}#apps-list-search .app-item h2[data-v-73184220]{margin-bottom:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList.vue\"],\"names\":[],\"mappings\":\"AAIA,4BACC,YAAA,CACA,cAAA,CACA,wBAAA,CAGA,kCACC,uBAAA,CAGD,iDACC,gBAAA,CAGD,qCACC,WAjBe,CAkBf,WAnBgB,CAqBhB,iBApBe,CAqBf,UAAA,CACA,6CAAA,CACA,eAAA,CACA,KAAA,CACA,SAAA,CACA,YAAA,CACA,kBAAA,CAGD,uCACC,mBAAA,CAEA,iBAAA,CAGD,4CACC,UAAA,CAGD,6CACC,YAAA,CACA,cAAA,CAGD,4CACC,YAAA,CACA,kBAAA,CACA,uBAAA,CAGD,2CACC,oBAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CACA,6BAAA,CAMA,gDACC,eAAA\",\"sourcesContent\":[\"\\n$toolbar-padding: 8px;\\n$toolbar-height: 44px + $toolbar-padding * 2;\\n\\n.apps-list {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\talign-content: flex-start;\\n\\n\\t// For transition group\\n\\t&--move {\\n\\t\\ttransition: transform 1s;\\n\\t}\\n\\n\\t#app-list-update-all {\\n\\t\\tmargin-left: 10px;\\n\\t}\\n\\n\\t&__toolbar {\\n\\t\\theight: $toolbar-height;\\n\\t\\tpadding: $toolbar-padding;\\n\\t\\t// Leave room for app-navigation-toggle\\n\\t\\tpadding-left: $toolbar-height;\\n\\t\\twidth: 100%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tposition: sticky;\\n\\t\\ttop: 0;\\n\\t\\tz-index: 1;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t}\\n\\n\\t&--list-view {\\n\\t\\tmargin-bottom: 100px;\\n\\t\\t// For positioning link overlay on rows\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t&__list-container {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__store-container {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-wrap: wrap;\\n\\t}\\n\\n\\t&__bundle-heading {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tmargin: 20px 10px 20px 0;\\n\\t}\\n\\n\\t&__bundle-header {\\n\\t\\tmargin: 0 10px 0 50px;\\n\\t\\tfont-weight: bold;\\n\\t\\tfont-size: 20px;\\n\\t\\tline-height: 30px;\\n\\t\\tcolor: var(--color-text-light);\\n\\t}\\n}\\n\\n#apps-list-search {\\n\\t.app-item {\\n\\t\\th2 {\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, `.app-item[data-v-09f30db0]{position:relative}.app-item[data-v-09f30db0]:hover{background-color:var(--color-background-dark)}.app-item--list-view[data-v-09f30db0]{--app-item-padding: calc(var(--default-grid-baseline) * 2);--app-item-height: calc(var(--default-clickable-area) + var(--app-item-padding) * 2)}.app-item--list-view.app-item--selected[data-v-09f30db0]{background-color:var(--color-background-dark)}.app-item--list-view>*[data-v-09f30db0]{vertical-align:middle;border-bottom:1px solid var(--color-border);padding:var(--app-item-padding);height:var(--app-item-height)}.app-item--list-view .app-image[data-v-09f30db0]{width:var(--default-clickable-area);height:auto;text-align:right}.app-item--list-view .app-image-icon svg[data-v-09f30db0],.app-item--list-view .app-image-icon .icon-settings-dark[data-v-09f30db0]{margin-top:5px;width:20px;height:20px;opacity:.5;background-size:cover;display:inline-block}.app-item--list-view .app-name[data-v-09f30db0]{padding:0 var(--app-item-padding)}.app-item--list-view .app-name--link[data-v-09f30db0]{height:var(--app-item-height);display:flex;align-items:center}.app-item--list-view .app-name--link[data-v-09f30db0]::after{content:\"\";position:absolute;left:0;right:0;height:var(--app-item-height)}.app-item--list-view .app-actions[data-v-09f30db0]{display:flex;gap:var(--app-item-padding);flex-wrap:wrap;justify-content:end}.app-item--list-view .app-actions .icon-loading-small[data-v-09f30db0]{display:inline-block;top:4px;margin-right:10px}@media only screen and (max-width: 900px){.app-item--list-view .app-version[data-v-09f30db0],.app-item--list-view .app-level[data-v-09f30db0]{display:none}}@media only screen and (max-width: 512px){.app-item--list-view .app-actions[data-v-09f30db0]{display:none}}.app-item--store-view[data-v-09f30db0]{padding:30px}.app-item--store-view .app-image-icon .icon-settings-dark[data-v-09f30db0]{width:100%;height:150px;background-size:45px;opacity:.5}.app-item--store-view .app-image-icon svg[data-v-09f30db0]{position:absolute;bottom:43px;width:64px;height:64px;opacity:.1}.app-item--store-view .app-name[data-v-09f30db0]{margin:5px 0}.app-item--store-view .app-name--link[data-v-09f30db0]::after{content:\"\";position:absolute;top:0;left:0;right:0;bottom:0}.app-item--store-view .app-actions[data-v-09f30db0]{margin:10px 0}@media only screen and (min-width: 1601px){.app-item--store-view[data-v-09f30db0]{width:25%}.app-item--store-view.app-item--with-sidebar[data-v-09f30db0]{width:33%}}@media only screen and (max-width: 1600px){.app-item--store-view[data-v-09f30db0]{width:25%}.app-item--store-view.app-item--with-sidebar[data-v-09f30db0]{width:33%}}@media only screen and (max-width: 1400px){.app-item--store-view[data-v-09f30db0]{width:33%}.app-item--store-view.app-item--with-sidebar[data-v-09f30db0]{width:50%}}@media only screen and (max-width: 900px){.app-item--store-view[data-v-09f30db0]{width:50%}.app-item--store-view.app-item--with-sidebar[data-v-09f30db0]{width:100%}}@media only screen and (max-width: 1024px){.app-item--store-view[data-v-09f30db0]{width:50%}}@media only screen and (max-width: 480px){.app-item--store-view[data-v-09f30db0]{width:100%}}.app-icon[data-v-09f30db0]{filter:var(--background-invert-if-bright)}.app-image[data-v-09f30db0]{position:relative;height:150px;opacity:1;overflow:hidden}.app-image img[data-v-09f30db0]{width:100%}.app-version[data-v-09f30db0]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList/AppItem.vue\"],\"names\":[],\"mappings\":\"AAIA,2BACC,iBAAA,CAEA,iCACC,6CAAA,CAGD,sCACC,0DAAA,CACA,oFAAA,CAEA,yDACC,6CAAA,CAGD,wCACC,qBAAA,CACA,2CAAA,CACA,+BAAA,CACA,6BAAA,CAGD,iDACC,mCAAA,CACA,WAAA,CACA,gBAAA,CAGD,oIAEC,cAAA,CACA,UAAA,CACA,WAAA,CACA,UAAA,CACA,qBAAA,CACA,oBAAA,CAGD,gDACC,iCAAA,CAGD,sDACC,6BAAA,CACA,YAAA,CACA,kBAAA,CAMD,6DACC,UAAA,CACA,iBAAA,CACA,MAAA,CACA,OAAA,CACA,6BAAA,CAGD,mDACC,YAAA,CACA,2BAAA,CACA,cAAA,CACA,mBAAA,CAEA,uEACC,oBAAA,CACA,OAAA,CACA,iBAAA,CAKF,0CACC,oGAEC,YAAA,CAAA,CAKF,0CACC,mDACC,YAAA,CAAA,CAKH,uCACC,YAAA,CAEA,2EACC,UAAA,CACA,YAAA,CACA,oBAAA,CACA,UAAA,CAGD,2DACC,iBAAA,CACA,WAAA,CAEA,UAAA,CACA,WAAA,CACA,UAAA,CAGD,iDACC,YAAA,CAGD,8DACC,UAAA,CACA,iBAAA,CACA,KAAA,CACA,MAAA,CACA,OAAA,CACA,QAAA,CAGD,oDACC,aAAA,CAGD,2CApCD,uCAqCE,SAAA,CAEA,8DACC,SAAA,CAAA,CAIF,2CA5CD,uCA6CE,SAAA,CAEA,8DACC,SAAA,CAAA,CAIF,2CApDD,uCAqDE,SAAA,CAEA,8DACC,SAAA,CAAA,CAIF,0CA5DD,uCA6DE,SAAA,CAEA,8DACC,UAAA,CAAA,CAIF,2CApED,uCAqEE,SAAA,CAAA,CAGD,0CAxED,uCAyEE,UAAA,CAAA,CAKH,2BACC,yCAAA,CAGD,4BACC,iBAAA,CACA,YAAA,CACA,SAAA,CACA,eAAA,CAEA,gCACC,UAAA,CAIF,8BACC,mCAAA\",\"sourcesContent\":[\"\\n@use '../../../../../core/css/variables.scss' as variables;\\n@use 'sass:math';\\n\\n.app-item {\\n\\tposition: relative;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n\\n\\t&--list-view {\\n\\t\\t--app-item-padding: calc(var(--default-grid-baseline) * 2);\\n\\t\\t--app-item-height: calc(var(--default-clickable-area) + var(--app-item-padding) * 2);\\n\\n\\t\\t&.app-item--selected {\\n\\t\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\t}\\n\\n\\t\\t> * {\\n\\t\\t\\tvertical-align: middle;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t\\t\\tpadding: var(--app-item-padding);\\n\\t\\t\\theight: var(--app-item-height);\\n\\t\\t}\\n\\n\\t\\t.app-image {\\n\\t\\t\\twidth: var(--default-clickable-area);\\n\\t\\t\\theight: auto;\\n\\t\\t\\ttext-align: right;\\n\\t\\t}\\n\\n\\t\\t.app-image-icon svg,\\n\\t\\t.app-image-icon .icon-settings-dark {\\n\\t\\t\\tmargin-top: 5px;\\n\\t\\t\\twidth: 20px;\\n\\t\\t\\theight: 20px;\\n\\t\\t\\topacity: .5;\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t}\\n\\n\\t\\t.app-name {\\n\\t\\t\\tpadding: 0 var(--app-item-padding);\\n\\t\\t}\\n\\n\\t\\t.app-name--link {\\n\\t\\t\\theight: var(--app-item-height);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t}\\n\\n\\t\\t// Note: because of Safari bug, we cannot position link overlay relative to the table row\\n\\t\\t// So we need to manually position it relative to the table container and cell\\n\\t\\t// See: https://bugs.webkit.org/show_bug.cgi?id=240961\\n\\t\\t.app-name--link::after {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tleft: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\theight: var(--app-item-height);\\n\\t\\t}\\n\\n\\t\\t.app-actions {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tgap: var(--app-item-padding);\\n\\t\\t\\tflex-wrap: wrap;\\n\\t\\t\\tjustify-content: end;\\n\\n\\t\\t\\t.icon-loading-small {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\ttop: 4px;\\n\\t\\t\\t\\tmargin-right: 10px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t/* hide app version and level on narrower screens */\\n\\t\\t@media only screen and (max-width: 900px) {\\n\\t\\t\\t.app-version,\\n\\t\\t\\t.app-level {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t/* Hide actions on a small screen. Click on app opens fill-screen sidebar with the buttons */\\n\\t\\t@media only screen and (max-width: math.div(variables.$breakpoint-mobile, 2)) {\\n\\t\\t\\t.app-actions {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&--store-view {\\n\\t\\tpadding: 30px;\\n\\n\\t\\t.app-image-icon .icon-settings-dark {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 150px;\\n\\t\\t\\tbackground-size: 45px;\\n\\t\\t\\topacity: 0.5;\\n\\t\\t}\\n\\n\\t\\t.app-image-icon svg {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tbottom: 43px;\\n\\t\\t\\t/* position halfway vertically */\\n\\t\\t\\twidth: 64px;\\n\\t\\t\\theight: 64px;\\n\\t\\t\\topacity: .1;\\n\\t\\t}\\n\\n\\t\\t.app-name {\\n\\t\\t\\tmargin: 5px 0;\\n\\t\\t}\\n\\n\\t\\t.app-name--link::after {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tleft: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tbottom: 0;\\n\\t\\t}\\n\\n\\t\\t.app-actions {\\n\\t\\t\\tmargin: 10px 0;\\n\\t\\t}\\n\\n\\t\\t@media only screen and (min-width: 1601px) {\\n\\t\\t\\twidth: 25%;\\n\\n\\t\\t\\t&.app-item--with-sidebar {\\n\\t\\t\\t\\twidth: 33%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: 1600px) {\\n\\t\\t\\twidth: 25%;\\n\\n\\t\\t\\t&.app-item--with-sidebar {\\n\\t\\t\\t\\twidth: 33%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: 1400px) {\\n\\t\\t\\twidth: 33%;\\n\\n\\t\\t\\t&.app-item--with-sidebar {\\n\\t\\t\\t\\twidth: 50%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: 900px) {\\n\\t\\t\\twidth: 50%;\\n\\n\\t\\t\\t&.app-item--with-sidebar {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: variables.$breakpoint-mobile) {\\n\\t\\t\\twidth: 50%;\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: 480px) {\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t}\\n}\\n\\n.app-icon {\\n\\tfilter: var(--background-invert-if-bright);\\n}\\n\\n.app-image {\\n\\tposition: relative;\\n\\theight: 150px;\\n\\topacity: 1;\\n\\toverflow: hidden;\\n\\n\\timg {\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\\n.app-version {\\n\\tcolor: var(--color-text-maxcontrast);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, `.app-level-badge[data-v-3590dbeb]{color:var(--color-text-maxcontrast);background-color:rgba(0,0,0,0);border:1px solid var(--color-text-maxcontrast);border-radius:var(--border-radius);display:flex;flex-direction:row;gap:6px;padding:3px 6px;width:fit-content}.app-level-badge--supported[data-v-3590dbeb]{border-color:var(--color-success);color:var(--color-success)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList/AppLevelBadge.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,mCAAA,CACA,8BAAA,CACA,8CAAA,CACA,kCAAA,CAEA,YAAA,CACA,kBAAA,CACA,OAAA,CACA,eAAA,CACA,iBAAA,CAEA,6CACC,iCAAA,CACA,0BAAA\",\"sourcesContent\":[\"\\n.app-level-badge {\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tbackground-color: transparent;\\n\\tborder: 1px solid var(--color-text-maxcontrast);\\n\\tborder-radius: var(--border-radius);\\n\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tgap: 6px;\\n\\tpadding: 3px 6px;\\n\\twidth: fit-content;\\n\\n\\t&--supported {\\n\\t\\tborder-color: var(--color-success);\\n\\t\\tcolor: var(--color-success);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, `.app-discover[data-v-618752df]{max-width:1008px;margin-inline:auto;padding-inline:54px;padding-block-end:var(--default-clickable-area, 44px);display:flex;flex-direction:column;gap:var(--default-clickable-area, 44px)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,gBAAA,CACA,kBAAA,CACA,mBAAA,CAEA,qDAAA,CAEA,YAAA,CACA,qBAAA,CACA,uCAAA\",\"sourcesContent\":[\"\\n.app-discover {\\n\\tmax-width: 1008px; /* 900px + 2x 54px padding for the carousel controls */\\n\\tmargin-inline: auto;\\n\\tpadding-inline: 54px;\\n\\t/* Padding required to make last element not bound to the bottom */\\n\\tpadding-block-end: var(--default-clickable-area, 44px);\\n\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: var(--default-clickable-area, 44px);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, `.app-description[data-v-fccce5ae]{padding:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,YAAA\",\"sourcesContent\":[\"\\n.app-description {\\n\\tpadding: 12px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, `.app-details[data-v-24864562]{padding:20px}.app-details__actions-manage[data-v-24864562]{display:flex}.app-details__actions-manage input[data-v-24864562]{flex:0 1 auto;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-details__authors[data-v-24864562]{color:var(--color-text-maxcontrast)}.app-details__section[data-v-24864562]{margin-top:15px}.app-details__section h4[data-v-24864562]{font-size:16px;font-weight:bold;margin-block-end:5px}.app-details__interact[data-v-24864562]{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px}.app-details__documentation a[data-v-24864562]{text-decoration:underline}.app-details__documentation li[data-v-24864562]{padding-inline-start:20px}.app-details__documentation li[data-v-24864562]::before{width:5px;height:5px;border-radius:100%;background-color:var(--color-main-text);content:\"\";float:inline-start;margin-inline-start:-13px;position:relative;top:10px}.force[data-v-24864562]{color:var(--color-error);border-color:var(--color-error);background:var(--color-main-background)}.force[data-v-24864562]:hover,.force[data-v-24864562]:active{color:var(--color-main-background);border-color:var(--color-error) !important;background:var(--color-error)}.missing-dependencies[data-v-24864562]{list-style:initial;list-style-type:initial;list-style-position:inside}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue\"],\"names\":[],\"mappings\":\"AACA,8BACC,YAAA,CAIC,8CAEC,YAAA,CACA,oDACC,aAAA,CACA,WAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CAIH,uCACC,mCAAA,CAGD,uCACC,eAAA,CAEA,0CACC,cAAA,CACA,gBAAA,CACA,oBAAA,CAIF,wCACC,YAAA,CACA,kBAAA,CACA,cAAA,CACA,QAAA,CAIA,+CACC,yBAAA,CAED,gDACC,yBAAA,CAEA,wDACC,SAAA,CACA,UAAA,CACA,kBAAA,CACA,uCAAA,CACA,UAAA,CACA,kBAAA,CACA,yBAAA,CACA,iBAAA,CACA,QAAA,CAMJ,wBACC,wBAAA,CACA,+BAAA,CACA,uCAAA,CAED,6DAEC,kCAAA,CACA,0CAAA,CACA,6BAAA,CAGD,uCACC,kBAAA,CACA,uBAAA,CACA,0BAAA\",\"sourcesContent\":[\"\\n.app-details {\\n\\tpadding: 20px;\\n\\n\\t&__actions {\\n\\t\\t// app management\\n\\t\\t&-manage {\\n\\t\\t\\t// if too many, shrink them and ellipsis\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tinput {\\n\\t\\t\\t\\tflex: 0 1 auto;\\n\\t\\t\\t\\tmin-width: 0;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t&__authors {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&__section {\\n\\t\\tmargin-top: 15px;\\n\\n\\t\\th4 {\\n\\t\\t\\tfont-size: 16px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin-block-end: 5px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__interact {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tflex-wrap: wrap;\\n\\t\\tgap: 12px;\\n\\t}\\n\\n\\t&__documentation {\\n\\t\\ta {\\n\\t\\t\\ttext-decoration: underline;\\n\\t\\t}\\n\\t\\tli {\\n\\t\\t\\tpadding-inline-start: 20px;\\n\\n\\t\\t\\t&::before {\\n\\t\\t\\t\\twidth: 5px;\\n\\t\\t\\t\\theight: 5px;\\n\\t\\t\\t\\tborder-radius: 100%;\\n\\t\\t\\t\\tbackground-color: var(--color-main-text);\\n\\t\\t\\t\\tcontent: \\\"\\\";\\n\\t\\t\\t\\tfloat: inline-start;\\n\\t\\t\\t\\tmargin-inline-start: -13px;\\n\\t\\t\\t\\tposition: relative;\\n\\t\\t\\t\\ttop: 10px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n.force {\\n\\tcolor: var(--color-error);\\n\\tborder-color: var(--color-error);\\n\\tbackground: var(--color-main-background);\\n}\\n.force:hover,\\n.force:active {\\n\\tcolor: var(--color-main-background);\\n\\tborder-color: var(--color-error) !important;\\n\\tbackground: var(--color-error);\\n}\\n\\n.missing-dependencies {\\n\\tlist-style: initial;\\n\\tlist-style-type: initial;\\n\\tlist-style-position: inside;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, `.app-sidebar-tabs__release h2[data-v-2261a93d]{border-bottom:1px solid var(--color-border);font-size:24px}.app-sidebar-tabs__release-text[data-v-2261a93d] h3{font-size:20px}.app-sidebar-tabs__release-text[data-v-2261a93d] h4{font-size:17px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue\"],\"names\":[],\"mappings\":\"AAEC,+CACC,2CAAA,CACA,cAAA,CAKA,oDACC,cAAA,CAED,oDACC,cAAA\",\"sourcesContent\":[\"\\n.app-sidebar-tabs__release {\\n\\th2 {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t\\tfont-size: 24px;\\n\\t}\\n\\n\\t&-text {\\n\\t\\t// Overwrite changelog heading styles\\n\\t\\t:deep(h3) {\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t}\\n\\t\\t:deep(h4) {\\n\\t\\t\\tfont-size: 17px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, `.settings-markdown[data-v-7c5c8e59] h1,.settings-markdown[data-v-7c5c8e59] h2,.settings-markdown[data-v-7c5c8e59] h3,.settings-markdown[data-v-7c5c8e59] h4,.settings-markdown[data-v-7c5c8e59] h5,.settings-markdown[data-v-7c5c8e59] h6{font-weight:600;line-height:120%;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}.settings-markdown[data-v-7c5c8e59] h1{font-size:36px;margin-top:48px}.settings-markdown[data-v-7c5c8e59] h2{font-size:28px;margin-top:48px}.settings-markdown[data-v-7c5c8e59] h3{font-size:24px}.settings-markdown[data-v-7c5c8e59] h4{font-size:21px}.settings-markdown[data-v-7c5c8e59] h5{font-size:17px}.settings-markdown[data-v-7c5c8e59] h6{font-size:var(--default-font-size)}.settings-markdown[data-v-7c5c8e59] pre{white-space:pre;overflow-x:auto;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}.settings-markdown[data-v-7c5c8e59] p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown[data-v-7c5c8e59] li{position:relative}.settings-markdown[data-v-7c5c8e59] ul,.settings-markdown[data-v-7c5c8e59] ol{padding-left:10px;margin-left:10px}.settings-markdown[data-v-7c5c8e59] ul li{list-style-type:disc}.settings-markdown[data-v-7c5c8e59] ul>li>ul>li{list-style-type:circle}.settings-markdown[data-v-7c5c8e59] ul>li>ul>li ul li{list-style-type:square}.settings-markdown[data-v-7c5c8e59] blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Markdown.vue\"],\"names\":[],\"mappings\":\"AAGA,0OAMC,eAAA,CACA,gBAAA,CACA,eAAA,CACA,kBAAA,CACA,4BAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,kCAAA,CAGD,wCACC,eAAA,CACA,eAAA,CACA,6CAAA,CACA,kCAAA,CACA,iBAAA,CACA,iBAAA,CAGD,2CACC,6CAAA,CACA,kCAAA,CACA,iBAAA,CAGD,uCACC,iBAAA,CAGD,8EACC,iBAAA,CACA,gBAAA,CAGD,0CACC,oBAAA,CAGD,gDACC,sBAAA,CAGD,sDACC,sBAAA,CAGD,+CACC,gBAAA,CACA,kDAAA,CACA,mCAAA,CACA,aAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.settings-markdown::v-deep {\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n\\tfont-weight: 600;\\n\\tline-height: 120%;\\n\\tmargin-top: 24px;\\n\\tmargin-bottom: 12px;\\n\\tcolor: var(--color-main-text);\\n}\\n\\nh1 {\\n\\tfont-size: 36px;\\n\\tmargin-top: 48px;\\n}\\n\\nh2 {\\n\\tfont-size: 28px;\\n\\tmargin-top: 48px;\\n}\\n\\nh3 {\\n\\tfont-size: 24px;\\n}\\n\\nh4 {\\n\\tfont-size: 21px;\\n}\\n\\nh5 {\\n\\tfont-size: 17px;\\n}\\n\\nh6 {\\n\\tfont-size: var(--default-font-size);\\n}\\n\\npre {\\n\\twhite-space: pre;\\n\\toverflow-x: auto;\\n\\tbackground-color: var(--color-background-dark);\\n\\tborder-radius: var(--border-radius);\\n\\tpadding: 1em 1.3em;\\n\\tmargin-bottom: 1em;\\n}\\n\\np code {\\n\\tbackground-color: var(--color-background-dark);\\n\\tborder-radius: var(--border-radius);\\n\\tpadding: .1em .3em;\\n}\\n\\nli {\\n\\tposition: relative;\\n}\\n\\nul, ol {\\n\\tpadding-left: 10px;\\n\\tmargin-left: 10px;\\n}\\n\\nul li {\\n\\tlist-style-type: disc;\\n}\\n\\nul > li > ul > li {\\n\\tlist-style-type: circle;\\n}\\n\\nul > li > ul > li ul li {\\n\\tlist-style-type: square;\\n}\\n\\nblockquote {\\n\\tpadding-left: 1em;\\n\\tborder-left: 4px solid var(--color-primary-element);\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tmargin-left: 0;\\n\\tmargin-right: 0;\\n}\\n\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, `.app-sidebar--with-screenshot[data-v-31ecb666] .app-sidebar-header__figure{background-size:cover}.app-sidebar__fallback-icon[data-v-31ecb666]{width:100%;height:100%}.app-sidebar__badges[data-v-31ecb666]{display:flex;flex-direction:row;gap:12px}.app-sidebar__version[data-v-31ecb666]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/AppStoreSidebar.vue\"],\"names\":[],\"mappings\":\"AAIE,2EACC,qBAAA,CAIF,6CAEC,UAAA,CACA,WAAA,CAGD,sCACC,YAAA,CACA,kBAAA,CACA,QAAA,CAGD,uCACC,mCAAA\",\"sourcesContent\":[\"\\n.app-sidebar {\\n\\t// If a screenshot is available it should cover the whole figure\\n\\t&--with-screenshot {\\n\\t\\t:deep(.app-sidebar-header__figure) {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t}\\n\\n\\t&__fallback-icon {\\n\\t\\t// both 100% to center the icon\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t}\\n\\n\\t&__badges {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tgap: 12px;\\n\\t}\\n\\n\\t&__version {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, `\n.app-score__wrapper[data-v-7d015114] {\n\tdisplay: inline-flex;\n\tcolor: var(--color-favorite, #a08b00);\n> *[data-v-7d015114] {\n\t\tvertical-align: text-bottom;\n}\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList/AppScore.vue\"],\"names\":[],\"mappings\":\";AAiFA;CACA,oBAAA;CACA,qCAAA;AAEA;EACA,2BAAA;AACA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n - @author Ferdinand Thiessen <opensource@fthiessen.de>\\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 <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<span role=\\\"img\\\"\\n\\t\\t:aria-label=\\\"title\\\"\\n\\t\\t:title=\\\"title\\\"\\n\\t\\tclass=\\\"app-score__wrapper\\\">\\n\\t\\t<NcIconSvgWrapper v-for=\\\"index in fullStars\\\"\\n\\t\\t\\t:key=\\\"`full-star-${index}`\\\"\\n\\t\\t\\t:path=\\\"mdiStar\\\"\\n\\t\\t\\tinline />\\n\\t\\t<NcIconSvgWrapper v-if=\\\"hasHalfStar\\\" :path=\\\"mdiStarHalfFull\\\" inline />\\n\\t\\t<NcIconSvgWrapper v-for=\\\"index in emptyStars\\\"\\n\\t\\t\\t:key=\\\"`empty-star-${index}`\\\"\\n\\t\\t\\t:path=\\\"mdiStarOutline\\\"\\n\\t\\t\\tinline />\\n\\t</span>\\n</template>\\n<script lang=\\\"ts\\\">\\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js'\\nimport { mdiStar, mdiStarHalfFull, mdiStarOutline } from '@mdi/js'\\nimport { translate as t } from '@nextcloud/l10n'\\nimport { defineComponent } from 'vue'\\n\\nexport default defineComponent({\\n\\tname: 'AppScore',\\n\\tcomponents: {\\n\\t\\tNcIconSvgWrapper,\\n\\t},\\n\\tprops: {\\n\\t\\tscore: {\\n\\t\\t\\ttype: Number,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\tsetup() {\\n\\t\\treturn {\\n\\t\\t\\tmdiStar,\\n\\t\\t\\tmdiStarHalfFull,\\n\\t\\t\\tmdiStarOutline,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\ttitle() {\\n\\t\\t\\tconst appScore = (this.score * 5).toFixed(1)\\n\\t\\t\\treturn t('settings', 'Community rating: {score}/5', { score: appScore })\\n\\t\\t},\\n\\t\\tfullStars() {\\n\\t\\t\\treturn Math.floor(this.score * 5 + 0.25)\\n\\t\\t},\\n\\t\\temptyStars() {\\n\\t\\t\\treturn Math.min(Math.floor((1 - this.score) * 5 + 0.25), 5 - this.fullStars)\\n\\t\\t},\\n\\t\\thasHalfStar() {\\n\\t\\t\\treturn (this.fullStars + this.emptyStars) < 5\\n\\t\\t},\\n\\t},\\n})\\n</script>\\n<style scoped>\\n.app-score__wrapper {\\n\\tdisplay: inline-flex;\\n\\tcolor: var(--color-favorite, #a08b00);\\n\\n\\t> * {\\n\\t\\tvertical-align: text-bottom;\\n\\t}\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, `\n.empty-content__loading[data-v-a75d4530] {\n\theight: 100%;\n}\n.app-settings-content__label[data-v-a75d4530] {\n\tmargin-block-start: var(--app-navigation-padding);\n\tmargin-inline-start: calc(var(--default-clickable-area) + var(--app-navigation-padding) * 2);\n\tmin-height: var(--default-clickable-area);\n\tline-height: var(--default-clickable-area);\n\tvertical-align: center;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/AppStore.vue\"],\"names\":[],\"mappings\":\";AAoFA;CACA,YAAA;AACA;AAEA;CACA,iDAAA;CACA,4FAAA;CACA,yCAAA;CACA,0CAAA;CACA,sBAAA;AACA\",\"sourcesContent\":[\"<!--\\n\\t- @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\\n\\t-\\n\\t- @author Julius Härtl <jus@bitgrid.net>\\n\\t- @author Ferdinand Thiessen <opensource@fthiessen.de>\\n\\t-\\n\\t- @license AGPL-3.0-or-later\\n\\t-\\n\\t- This program is free software: you can redistribute it and/or modify\\n\\t- it under the terms of the GNU Affero General Public License as\\n\\t- published by the Free Software Foundation, either version 3 of the\\n\\t- License, or (at your option) any later version.\\n\\t-\\n\\t- This program is distributed in the hope that it will be useful,\\n\\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n\\t- GNU Affero General Public License for more details.\\n\\t-\\n\\t- You should have received a copy of the GNU Affero General Public License\\n\\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\\n\\t-\\n\\t-->\\n\\n<template>\\n\\t<!-- Apps list -->\\n\\t<NcAppContent class=\\\"app-settings-content\\\"\\n\\t\\t:page-heading=\\\"appStoreLabel\\\">\\n\\t\\t<h2 class=\\\"app-settings-content__label\\\" v-text=\\\"viewLabel\\\" />\\n\\n\\t\\t<AppStoreDiscoverSection v-if=\\\"currentCategory === 'discover'\\\" />\\n\\t\\t<NcEmptyContent v-else-if=\\\"isLoading\\\"\\n\\t\\t\\tclass=\\\"empty-content__loading\\\"\\n\\t\\t\\t:name=\\\"t('settings', 'Loading app list')\\\">\\n\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t<NcLoadingIcon :size=\\\"64\\\" />\\n\\t\\t\\t</template>\\n\\t\\t</NcEmptyContent>\\n\\t\\t<AppList v-else :category=\\\"currentCategory\\\" />\\n\\t</NcAppContent>\\n</template>\\n\\n<script setup lang=\\\"ts\\\">\\nimport { translate as t } from '@nextcloud/l10n'\\nimport { computed, getCurrentInstance, onBeforeMount, watchEffect } from 'vue'\\nimport { useRoute } from 'vue-router/composables'\\n\\nimport { useAppsStore } from '../store/apps-store'\\nimport { APPS_SECTION_ENUM } from '../constants/AppsConstants'\\n\\nimport NcAppContent from '@nextcloud/vue/dist/Components/NcAppContent.js'\\nimport NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'\\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\\nimport AppList from '../components/AppList.vue'\\nimport AppStoreDiscoverSection from '../components/AppStoreDiscover/AppStoreDiscoverSection.vue'\\n\\nconst route = useRoute()\\nconst store = useAppsStore()\\n\\n/**\\n * ID of the current active category, default is `discover`\\n */\\nconst currentCategory = computed(() => route.params?.category ?? 'discover')\\n\\nconst appStoreLabel = t('settings', 'App Store')\\nconst viewLabel = computed(() => APPS_SECTION_ENUM[currentCategory.value] ?? store.getCategoryById(currentCategory.value)?.displayName ?? appStoreLabel)\\n\\nwatchEffect(() => {\\n\\twindow.document.title = `${viewLabel.value} - ${appStoreLabel} - Nextcloud`\\n})\\n\\n// TODO this part should be migrated to pinia\\nconst instance = getCurrentInstance()\\n/** Is the app list loading */\\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\\nconst isLoading = computed(() => (instance?.proxy as any).$store.getters.loading('list'))\\nonBeforeMount(() => {\\n\\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\\n\\t(instance?.proxy as any).$store.dispatch('getCategories', { shouldRefetchCategories: true });\\n\\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\\n\\t(instance?.proxy as any).$store.dispatch('getAllApps')\\n})\\n</script>\\n\\n<style scoped>\\n.empty-content__loading {\\n\\theight: 100%;\\n}\\n\\n.app-settings-content__label {\\n\\tmargin-block-start: var(--app-navigation-padding);\\n\\tmargin-inline-start: calc(var(--default-clickable-area) + var(--app-navigation-padding) * 2);\\n\\tmin-height: var(--default-clickable-area);\\n\\tline-height: var(--default-clickable-area);\\n\\tvertical-align: center;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, `\n/* The categories-loading indicator */\n.categories--loading[data-v-d15221f2] {\n\tflex: 1;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/AppStoreNavigation.vue\"],\"names\":[],\"mappings\":\";AAsIA,qCAAA;AACA;CACA,OAAA;CACA,aAAA;CACA,mBAAA;CACA,uBAAA;AACA\",\"sourcesContent\":[\"<template>\\n\\t<!-- Categories & filters -->\\n\\t<NcAppNavigation :aria-label=\\\"t('settings', 'Apps')\\\">\\n\\t\\t<template #list>\\n\\t\\t\\t<NcAppNavigationItem id=\\\"app-category-discover\\\"\\n\\t\\t\\t\\t:to=\\\"{ name: 'apps-category', params: { category: 'discover'} }\\\"\\n\\t\\t\\t\\t:name=\\\"APPS_SECTION_ENUM.discover\\\">\\n\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t<NcIconSvgWrapper :path=\\\"APPSTORE_CATEGORY_ICONS.discover\\\" />\\n\\t\\t\\t\\t</template>\\n\\t\\t\\t</NcAppNavigationItem>\\n\\t\\t\\t<NcAppNavigationItem id=\\\"app-category-installed\\\"\\n\\t\\t\\t\\t:to=\\\"{ name: 'apps-category', params: { category: 'installed'} }\\\"\\n\\t\\t\\t\\t:name=\\\"APPS_SECTION_ENUM.installed\\\">\\n\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t<NcIconSvgWrapper :path=\\\"APPSTORE_CATEGORY_ICONS.installed\\\" />\\n\\t\\t\\t\\t</template>\\n\\t\\t\\t</NcAppNavigationItem>\\n\\t\\t\\t<NcAppNavigationItem id=\\\"app-category-enabled\\\"\\n\\t\\t\\t\\t:to=\\\"{ name: 'apps-category', params: { category: 'enabled' } }\\\"\\n\\t\\t\\t\\t:name=\\\"APPS_SECTION_ENUM.enabled\\\">\\n\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t<NcIconSvgWrapper :path=\\\"APPSTORE_CATEGORY_ICONS.enabled\\\" />\\n\\t\\t\\t\\t</template>\\n\\t\\t\\t</NcAppNavigationItem>\\n\\t\\t\\t<NcAppNavigationItem id=\\\"app-category-disabled\\\"\\n\\t\\t\\t\\t:to=\\\"{ name: 'apps-category', params: { category: 'disabled' } }\\\"\\n\\t\\t\\t\\t:name=\\\"APPS_SECTION_ENUM.disabled\\\">\\n\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t<NcIconSvgWrapper :path=\\\"APPSTORE_CATEGORY_ICONS.disabled\\\" />\\n\\t\\t\\t\\t</template>\\n\\t\\t\\t</NcAppNavigationItem>\\n\\t\\t\\t<NcAppNavigationItem v-if=\\\"updateCount > 0\\\"\\n\\t\\t\\t\\tid=\\\"app-category-updates\\\"\\n\\t\\t\\t\\t:to=\\\"{ name: 'apps-category', params: { category: 'updates' } }\\\"\\n\\t\\t\\t\\t:name=\\\"APPS_SECTION_ENUM.updates\\\">\\n\\t\\t\\t\\t<template #counter>\\n\\t\\t\\t\\t\\t<NcCounterBubble>{{ updateCount }}</NcCounterBubble>\\n\\t\\t\\t\\t</template>\\n\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t<NcIconSvgWrapper :path=\\\"APPSTORE_CATEGORY_ICONS.updates\\\" />\\n\\t\\t\\t\\t</template>\\n\\t\\t\\t</NcAppNavigationItem>\\n\\t\\t\\t<NcAppNavigationItem id=\\\"app-category-your-bundles\\\"\\n\\t\\t\\t\\t:to=\\\"{ name: 'apps-category', params: { category: 'app-bundles' } }\\\"\\n\\t\\t\\t\\t:name=\\\"APPS_SECTION_ENUM['app-bundles']\\\">\\n\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t<NcIconSvgWrapper :path=\\\"APPSTORE_CATEGORY_ICONS.bundles\\\" />\\n\\t\\t\\t\\t</template>\\n\\t\\t\\t</NcAppNavigationItem>\\n\\n\\t\\t\\t<NcAppNavigationSpacer />\\n\\n\\t\\t\\t<!-- App store categories -->\\n\\t\\t\\t<li v-if=\\\"appstoreEnabled && categoriesLoading\\\" class=\\\"categories--loading\\\">\\n\\t\\t\\t\\t<NcLoadingIcon :size=\\\"20\\\" :aria-label=\\\"t('settings', 'Loading categories')\\\" />\\n\\t\\t\\t</li>\\n\\t\\t\\t<template v-else-if=\\\"appstoreEnabled && !categoriesLoading\\\">\\n\\t\\t\\t\\t<NcAppNavigationItem v-if=\\\"isSubscribed\\\"\\n\\t\\t\\t\\t\\tid=\\\"app-category-supported\\\"\\n\\t\\t\\t\\t\\t:to=\\\"{ name: 'apps-category', params: { category: 'supported' } }\\\"\\n\\t\\t\\t\\t\\t:name=\\\"APPS_SECTION_ENUM.supported\\\">\\n\\t\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t\\t<NcIconSvgWrapper :path=\\\"APPSTORE_CATEGORY_ICONS.supported\\\" />\\n\\t\\t\\t\\t\\t</template>\\n\\t\\t\\t\\t</NcAppNavigationItem>\\n\\t\\t\\t\\t<NcAppNavigationItem id=\\\"app-category-featured\\\"\\n\\t\\t\\t\\t\\t:to=\\\"{ name: 'apps-category', params: { category: 'featured' } }\\\"\\n\\t\\t\\t\\t\\t:name=\\\"APPS_SECTION_ENUM.featured\\\">\\n\\t\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t\\t<NcIconSvgWrapper :path=\\\"APPSTORE_CATEGORY_ICONS.featured\\\" />\\n\\t\\t\\t\\t\\t</template>\\n\\t\\t\\t\\t</NcAppNavigationItem>\\n\\n\\t\\t\\t\\t<NcAppNavigationItem v-for=\\\"category in categories\\\"\\n\\t\\t\\t\\t\\t:id=\\\"`app-category-${category.id}`\\\"\\n\\t\\t\\t\\t\\t:key=\\\"category.id\\\"\\n\\t\\t\\t\\t\\t:name=\\\"category.displayName\\\"\\n\\t\\t\\t\\t\\t:to=\\\"{\\n\\t\\t\\t\\t\\t\\tname: 'apps-category',\\n\\t\\t\\t\\t\\t\\tparams: { category: category.id },\\n\\t\\t\\t\\t\\t}\\\">\\n\\t\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t\\t<NcIconSvgWrapper :path=\\\"category.icon\\\" />\\n\\t\\t\\t\\t\\t</template>\\n\\t\\t\\t\\t</NcAppNavigationItem>\\n\\t\\t\\t</template>\\n\\n\\t\\t\\t<NcAppNavigationItem id=\\\"app-developer-docs\\\"\\n\\t\\t\\t\\t:name=\\\"t('settings', 'Developer documentation ↗')\\\"\\n\\t\\t\\t\\t:href=\\\"developerDocsUrl\\\" />\\n\\t\\t</template>\\n\\t</NcAppNavigation>\\n</template>\\n\\n<script setup lang=\\\"ts\\\">\\nimport { loadState } from '@nextcloud/initial-state'\\nimport { translate as t } from '@nextcloud/l10n'\\nimport { computed, onBeforeMount } from 'vue'\\nimport { APPS_SECTION_ENUM } from '../constants/AppsConstants'\\nimport { useAppsStore } from '../store/apps-store'\\n\\nimport NcAppNavigation from '@nextcloud/vue/dist/Components/NcAppNavigation.js'\\nimport NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js'\\nimport NcAppNavigationSpacer from '@nextcloud/vue/dist/Components/NcAppNavigationSpacer.js'\\nimport NcCounterBubble from '@nextcloud/vue/dist/Components/NcCounterBubble.js'\\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js'\\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\\n\\nimport APPSTORE_CATEGORY_ICONS from '../constants/AppstoreCategoryIcons.ts'\\n\\nconst updateCount = loadState<number>('settings', 'appstoreUpdateCount', 0)\\nconst appstoreEnabled = loadState<boolean>('settings', 'appstoreEnabled', true)\\nconst developerDocsUrl = loadState<string>('settings', 'appstoreDeveloperDocs', '')\\n\\nconst store = useAppsStore()\\nconst categories = computed(() => store.categories)\\nconst categoriesLoading = computed(() => store.loading.categories)\\n\\n/**\\n * Check if the current instance has a support subscription from the Nextcloud GmbH\\n *\\n * For customers of the Nextcloud GmbH the app level will be set to `300` for apps that are supported in their subscription\\n */\\nconst isSubscribed = computed(() => store.apps.find(({ level }) => level === 300) !== undefined)\\n\\n// load categories when component is mounted\\nonBeforeMount(() => {\\n\\tstore.loadCategories()\\n\\tstore.loadApps()\\n})\\n</script>\\n\\n<style scoped>\\n/* The categories-loading indicator */\\n.categories--loading {\\n\\tflex: 1;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.listView ? 'tr' : (_vm.inline ? 'article' : 'li'),{tag:\"component\",staticClass:\"app-item\",class:{\n\t\t'app-item--list-view': _vm.listView,\n\t\t'app-item--store-view': !_vm.listView,\n\t\t'app-item--selected': _vm.isSelected,\n\t\t'app-item--with-sidebar': _vm.withSidebar,\n\t}},[_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-image app-image-icon\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-icon`)}},[((_vm.listView && !_vm.app.preview) || (!_vm.listView && !_vm.screenshotLoaded))?_c('div',{staticClass:\"icon-settings-dark\"}):(_vm.listView && _vm.app.preview)?_c('svg',{attrs:{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"0 0 32 32\"}},[_c('image',{staticClass:\"app-icon\",attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"32\",\"height\":\"32\",\"preserveAspectRatio\":\"xMinYMin meet\",\"xlink:href\":_vm.app.preview}})]):_vm._e(),_vm._v(\" \"),(!_vm.listView && _vm.app.screenshot && _vm.screenshotLoaded)?_c('img',{attrs:{\"src\":_vm.app.screenshot,\"alt\":\"\"}}):_vm._e()]),_vm._v(\" \"),_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-name\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-name`)}},[_c('router-link',{staticClass:\"app-name--link\",attrs:{\"to\":{\n\t\t\t\tname: 'apps-details',\n\t\t\t\tparams: {\n\t\t\t\t\tcategory: _vm.category,\n\t\t\t\t\tid: _vm.app.id\n\t\t\t\t},\n\t\t\t},\"aria-label\":_vm.t('settings', 'Show details for {appName} app', { appName:_vm.app.name })}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.app.name)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(!_vm.listView)?_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-summary\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-version`)}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.summary)+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.listView)?_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-version\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-version`)}},[(_vm.app.version)?_c('span',[_vm._v(_vm._s(_vm.app.version))]):(_vm.app.appstoreData.releases[0].version)?_c('span',[_vm._v(_vm._s(_vm.app.appstoreData.releases[0].version))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-level\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-level`)}},[_c('AppLevelBadge',{attrs:{\"level\":_vm.app.level}}),_vm._v(\" \"),(_vm.hasRating && !_vm.listView)?_c('AppScore',{attrs:{\"score\":_vm.app.score}}):_vm._e()],1),_vm._v(\" \"),(!_vm.inline)?_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-actions\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-actions`)}},[(_vm.app.error)?_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.app.error)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isLoading)?_c('div',{staticClass:\"icon icon-loading-small\"}):_vm._e(),_vm._v(\" \"),(_vm.app.update)?_c('NcButton',{attrs:{\"type\":\"primary\",\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.update(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Update to {update}', {update:_vm.app.update}))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('NcButton',{staticClass:\"uninstall\",attrs:{\"type\":\"tertiary\",\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.remove(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Remove'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('NcButton',{attrs:{\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.disable(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings','Disable'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('NcButton',{attrs:{\"title\":_vm.enableButtonTooltip,\"aria-label\":_vm.enableButtonTooltip,\"type\":\"primary\",\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.enable(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.enableButtonText)+\"\\n\\t\\t\")]):(!_vm.app.active)?_c('NcButton',{attrs:{\"title\":_vm.forceEnableButtonTooltip,\"aria-label\":_vm.forceEnableButtonTooltip,\"type\":\"secondary\",\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.forceEnable(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.forceEnableButtonText)+\"\\n\\t\\t\")]):_vm._e()],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\nexport default {\n\tname: 'SvgFilterMixin',\n\tdata() {\n\t\treturn {\n\t\t\tfilterId: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\tfilterUrl() {\n\t\t\treturn `url(#${this.filterId})`\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.filterId = 'invertIconApps-' + Math.random().toString(36).substring(2)\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgFilterMixin.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!./SvgFilterMixin.vue?vue&type=script&lang=js\"","var render, staticRenderFns\nimport script from \"./SvgFilterMixin.vue?vue&type=script&lang=js\"\nexport * from \"./SvgFilterMixin.vue?vue&type=script&lang=js\"\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 null,\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<component :is=\"listView ? 'tr' : (inline ? 'article' : 'li')\"\n\t\tclass=\"app-item\"\n\t\t:class=\"{\n\t\t\t'app-item--list-view': listView,\n\t\t\t'app-item--store-view': !listView,\n\t\t\t'app-item--selected': isSelected,\n\t\t\t'app-item--with-sidebar': withSidebar,\n\t\t}\">\n\t\t<component :is=\"dataItemTag\"\n\t\t\tclass=\"app-image app-image-icon\"\n\t\t\t:headers=\"getDataItemHeaders(`app-table-col-icon`)\">\n\t\t\t<div v-if=\"(listView && !app.preview) || (!listView && !screenshotLoaded)\" class=\"icon-settings-dark\" />\n\n\t\t\t<svg v-else-if=\"listView && app.preview\"\n\t\t\t\twidth=\"32\"\n\t\t\t\theight=\"32\"\n\t\t\t\tviewBox=\"0 0 32 32\">\n\t\t\t\t<image x=\"0\"\n\t\t\t\t\ty=\"0\"\n\t\t\t\t\twidth=\"32\"\n\t\t\t\t\theight=\"32\"\n\t\t\t\t\tpreserveAspectRatio=\"xMinYMin meet\"\n\t\t\t\t\t:xlink:href=\"app.preview\"\n\t\t\t\t\tclass=\"app-icon\" />\n\t\t\t</svg>\n\n\t\t\t<img v-if=\"!listView && app.screenshot && screenshotLoaded\" :src=\"app.screenshot\" alt=\"\">\n\t\t</component>\n\t\t<component :is=\"dataItemTag\"\n\t\t\tclass=\"app-name\"\n\t\t\t:headers=\"getDataItemHeaders(`app-table-col-name`)\">\n\t\t\t<router-link class=\"app-name--link\"\n\t\t\t\t:to=\"{\n\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tcategory: category,\n\t\t\t\t\t\tid: app.id\n\t\t\t\t\t},\n\t\t\t\t}\"\n\t\t\t\t:aria-label=\"t('settings', 'Show details for {appName} app', { appName:app.name })\">\n\t\t\t\t{{ app.name }}\n\t\t\t</router-link>\n\t\t</component>\n\t\t<component :is=\"dataItemTag\"\n\t\t\tv-if=\"!listView\"\n\t\t\tclass=\"app-summary\"\n\t\t\t:headers=\"getDataItemHeaders(`app-version`)\">\n\t\t\t{{ app.summary }}\n\t\t</component>\n\t\t<component :is=\"dataItemTag\"\n\t\t\tv-if=\"listView\"\n\t\t\tclass=\"app-version\"\n\t\t\t:headers=\"getDataItemHeaders(`app-table-col-version`)\">\n\t\t\t<span v-if=\"app.version\">{{ app.version }}</span>\n\t\t\t<span v-else-if=\"app.appstoreData.releases[0].version\">{{ app.appstoreData.releases[0].version }}</span>\n\t\t</component>\n\n\t\t<component :is=\"dataItemTag\" :headers=\"getDataItemHeaders(`app-table-col-level`)\" class=\"app-level\">\n\t\t\t<AppLevelBadge :level=\"app.level\" />\n\t\t\t<AppScore v-if=\"hasRating && !listView\" :score=\"app.score\" />\n\t\t</component>\n\t\t<component :is=\"dataItemTag\"\n\t\t\tv-if=\"!inline\"\n\t\t\t:headers=\"getDataItemHeaders(`app-table-col-actions`)\"\n\t\t\tclass=\"app-actions\">\n\t\t\t<div v-if=\"app.error\" class=\"warning\">\n\t\t\t\t{{ app.error }}\n\t\t\t</div>\n\t\t\t<div v-if=\"isLoading\" class=\"icon icon-loading-small\" />\n\t\t\t<NcButton v-if=\"app.update\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"update(app.id)\">\n\t\t\t\t{{ t('settings', 'Update to {update}', {update:app.update}) }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"app.canUnInstall\"\n\t\t\t\tclass=\"uninstall\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"remove(app.id)\">\n\t\t\t\t{{ t('settings', 'Remove') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"app.active\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"disable(app.id)\">\n\t\t\t\t{{ t('settings','Disable') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"!app.active && (app.canInstall || app.isCompatible)\"\n\t\t\t\t:title=\"enableButtonTooltip\"\n\t\t\t\t:aria-label=\"enableButtonTooltip\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\t:disabled=\"!app.canInstall || installing || isLoading\"\n\t\t\t\t@click.stop=\"enable(app.id)\">\n\t\t\t\t{{ enableButtonText }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-else-if=\"!app.active\"\n\t\t\t\t:title=\"forceEnableButtonTooltip\"\n\t\t\t\t:aria-label=\"forceEnableButtonTooltip\"\n\t\t\t\ttype=\"secondary\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"forceEnable(app.id)\">\n\t\t\t\t{{ forceEnableButtonText }}\n\t\t\t</NcButton>\n\t\t</component>\n\t</component>\n</template>\n\n<script>\nimport AppScore from './AppScore.vue'\nimport AppLevelBadge from './AppLevelBadge.vue'\nimport AppManagement from '../../mixins/AppManagement.js'\nimport SvgFilterMixin from '../SvgFilterMixin.vue'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\n\nexport default {\n\tname: 'AppItem',\n\tcomponents: {\n\t\tAppLevelBadge,\n\t\tAppScore,\n\t\tNcButton,\n\t},\n\tmixins: [AppManagement, SvgFilterMixin],\n\tprops: {\n\t\tapp: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tcategory: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tlistView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tuseBundleView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\theaders: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tinline: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tisSelected: false,\n\t\t\tscrolled: false,\n\t\t\tscreenshotLoaded: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\n\t\t},\n\t\tdataItemTag() {\n\t\t\treturn this.listView ? 'td' : 'div'\n\t\t},\n\t\twithSidebar() {\n\t\t\treturn !!this.$route.params.id\n\t\t},\n\t},\n\twatch: {\n\t\t'$route.params.id'(id) {\n\t\t\tthis.isSelected = (this.app.id === id)\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.isSelected = (this.app.id === this.$route.params.id)\n\t\tif (this.app.releases && this.app.screenshot) {\n\t\t\tconst image = new Image()\n\t\t\timage.onload = () => {\n\t\t\t\tthis.screenshotLoaded = true\n\t\t\t}\n\t\t\timage.src = this.app.screenshot\n\t\t}\n\t},\n\twatchers: {\n\n\t},\n\tmethods: {\n\t\tprefix(prefix, content) {\n\t\t\treturn prefix + '_' + content\n\t\t},\n\n\t\tgetDataItemHeaders(columnName) {\n\t\t\treturn this.useBundleView ? [this.headers, columnName].join(' ') : null\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n@use '../../../../../core/css/variables.scss' as variables;\n@use 'sass:math';\n\n.app-item {\n\tposition: relative;\n\n\t&:hover {\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&--list-view {\n\t\t--app-item-padding: calc(var(--default-grid-baseline) * 2);\n\t\t--app-item-height: calc(var(--default-clickable-area) + var(--app-item-padding) * 2);\n\n\t\t&.app-item--selected {\n\t\t\tbackground-color: var(--color-background-dark);\n\t\t}\n\n\t\t> * {\n\t\t\tvertical-align: middle;\n\t\t\tborder-bottom: 1px solid var(--color-border);\n\t\t\tpadding: var(--app-item-padding);\n\t\t\theight: var(--app-item-height);\n\t\t}\n\n\t\t.app-image {\n\t\t\twidth: var(--default-clickable-area);\n\t\t\theight: auto;\n\t\t\ttext-align: right;\n\t\t}\n\n\t\t.app-image-icon svg,\n\t\t.app-image-icon .icon-settings-dark {\n\t\t\tmargin-top: 5px;\n\t\t\twidth: 20px;\n\t\t\theight: 20px;\n\t\t\topacity: .5;\n\t\t\tbackground-size: cover;\n\t\t\tdisplay: inline-block;\n\t\t}\n\n\t\t.app-name {\n\t\t\tpadding: 0 var(--app-item-padding);\n\t\t}\n\n\t\t.app-name--link {\n\t\t\theight: var(--app-item-height);\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t}\n\n\t\t// Note: because of Safari bug, we cannot position link overlay relative to the table row\n\t\t// So we need to manually position it relative to the table container and cell\n\t\t// See: https://bugs.webkit.org/show_bug.cgi?id=240961\n\t\t.app-name--link::after {\n\t\t\tcontent: '';\n\t\t\tposition: absolute;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\theight: var(--app-item-height);\n\t\t}\n\n\t\t.app-actions {\n\t\t\tdisplay: flex;\n\t\t\tgap: var(--app-item-padding);\n\t\t\tflex-wrap: wrap;\n\t\t\tjustify-content: end;\n\n\t\t\t.icon-loading-small {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\ttop: 4px;\n\t\t\t\tmargin-right: 10px;\n\t\t\t}\n\t\t}\n\n\t\t/* hide app version and level on narrower screens */\n\t\t@media only screen and (max-width: 900px) {\n\t\t\t.app-version,\n\t\t\t.app-level {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\n\t\t/* Hide actions on a small screen. Click on app opens fill-screen sidebar with the buttons */\n\t\t@media only screen and (max-width: math.div(variables.$breakpoint-mobile, 2)) {\n\t\t\t.app-actions {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t&--store-view {\n\t\tpadding: 30px;\n\n\t\t.app-image-icon .icon-settings-dark {\n\t\t\twidth: 100%;\n\t\t\theight: 150px;\n\t\t\tbackground-size: 45px;\n\t\t\topacity: 0.5;\n\t\t}\n\n\t\t.app-image-icon svg {\n\t\t\tposition: absolute;\n\t\t\tbottom: 43px;\n\t\t\t/* position halfway vertically */\n\t\t\twidth: 64px;\n\t\t\theight: 64px;\n\t\t\topacity: .1;\n\t\t}\n\n\t\t.app-name {\n\t\t\tmargin: 5px 0;\n\t\t}\n\n\t\t.app-name--link::after {\n\t\t\tcontent: '';\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tbottom: 0;\n\t\t}\n\n\t\t.app-actions {\n\t\t\tmargin: 10px 0;\n\t\t}\n\n\t\t@media only screen and (min-width: 1601px) {\n\t\t\twidth: 25%;\n\n\t\t\t&.app-item--with-sidebar {\n\t\t\t\twidth: 33%;\n\t\t\t}\n\t\t}\n\n\t\t@media only screen and (max-width: 1600px) {\n\t\t\twidth: 25%;\n\n\t\t\t&.app-item--with-sidebar {\n\t\t\t\twidth: 33%;\n\t\t\t}\n\t\t}\n\n\t\t@media only screen and (max-width: 1400px) {\n\t\t\twidth: 33%;\n\n\t\t\t&.app-item--with-sidebar {\n\t\t\t\twidth: 50%;\n\t\t\t}\n\t\t}\n\n\t\t@media only screen and (max-width: 900px) {\n\t\t\twidth: 50%;\n\n\t\t\t&.app-item--with-sidebar {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t}\n\n\t\t@media only screen and (max-width: variables.$breakpoint-mobile) {\n\t\t\twidth: 50%;\n\t\t}\n\n\t\t@media only screen and (max-width: 480px) {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n}\n\n.app-icon {\n\tfilter: var(--background-invert-if-bright);\n}\n\n.app-image {\n\tposition: relative;\n\theight: 150px;\n\topacity: 1;\n\toverflow: hidden;\n\n\timg {\n\t\twidth: 100%;\n\t}\n}\n\n.app-version {\n\tcolor: var(--color-text-maxcontrast);\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.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!./AppItem.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!./AppItem.vue?vue&type=style&index=0&id=09f30db0&prod&scoped=true&lang=scss\";\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!./AppItem.vue?vue&type=style&index=0&id=09f30db0&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppItem.vue?vue&type=template&id=09f30db0&scoped=true\"\nimport script from \"./AppItem.vue?vue&type=script&lang=js\"\nexport * from \"./AppItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppItem.vue?vue&type=style&index=0&id=09f30db0&prod&scoped=true&lang=scss\"\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 \"09f30db0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.isSupported || _setup.isFeatured)?_c('span',{staticClass:\"app-level-badge\",class:{ 'app-level-badge--supported': _setup.isSupported },attrs:{\"title\":_setup.badgeTitle}},[_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.badgeIcon,\"size\":20,\"inline\":\"\"}}),_vm._v(\"\\n\\t\"+_vm._s(_setup.badgeText)+\"\\n\")],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"","\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!./AppLevelBadge.vue?vue&type=style&index=0&id=3590dbeb&prod&scoped=true&lang=scss\";\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!./AppLevelBadge.vue?vue&type=style&index=0&id=3590dbeb&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppLevelBadge.vue?vue&type=template&id=3590dbeb&scoped=true\"\nimport script from \"./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppLevelBadge.vue?vue&type=style&index=0&id=3590dbeb&prod&scoped=true&lang=scss\"\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 \"3590dbeb\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"app-score__wrapper\",attrs:{\"role\":\"img\",\"aria-label\":_vm.title,\"title\":_vm.title}},[_vm._l((_vm.fullStars),function(index){return _c('NcIconSvgWrapper',{key:`full-star-${index}`,attrs:{\"path\":_vm.mdiStar,\"inline\":\"\"}})}),_vm._v(\" \"),(_vm.hasHalfStar)?_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiStarHalfFull,\"inline\":\"\"}}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.emptyStars),function(index){return _c('NcIconSvgWrapper',{key:`empty-star-${index}`,attrs:{\"path\":_vm.mdiStarOutline,\"inline\":\"\"}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=ts\"","\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/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=style&index=0&id=7d015114&prod&scoped=true&lang=css\";\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/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=style&index=0&id=7d015114&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppScore.vue?vue&type=template&id=7d015114&scoped=true\"\nimport script from \"./AppScore.vue?vue&type=script&lang=ts\"\nexport * from \"./AppScore.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppScore.vue?vue&type=style&index=0&id=7d015114&prod&scoped=true&lang=css\"\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 \"7d015114\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppContent,{staticClass:\"app-settings-content\",attrs:{\"page-heading\":_setup.appStoreLabel}},[_c('h2',{staticClass:\"app-settings-content__label\",domProps:{\"textContent\":_vm._s(_setup.viewLabel)}}),_vm._v(\" \"),(_setup.currentCategory === 'discover')?_c(_setup.AppStoreDiscoverSection):(_setup.isLoading)?_c(_setup.NcEmptyContent,{staticClass:\"empty-content__loading\",attrs:{\"name\":_setup.t('settings', 'Loading app list')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcLoadingIcon,{attrs:{\"size\":64}})]},proxy:true}])}):_c(_setup.AppList,{attrs:{\"category\":_setup.currentCategory}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\nHow it works:\n`this.#head` is an instance of `Node` which keeps track of its current value and nests another instance of `Node` that keeps the value that comes after it. When a value is provided to `.enqueue()`, the code needs to iterate through `this.#head`, going deeper and deeper to find the last value. However, iterating through every single item is slow. This problem is solved by saving a reference to the last value as `this.#tail` so that it can reference it to add a new value.\n*/\n\nclass Node {\n\tvalue;\n\tnext;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\t}\n}\n\nexport default class Queue {\n\t#head;\n\t#tail;\n\t#size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this.#head) {\n\t\t\tthis.#tail.next = node;\n\t\t\tthis.#tail = node;\n\t\t} else {\n\t\t\tthis.#head = node;\n\t\t\tthis.#tail = node;\n\t\t}\n\n\t\tthis.#size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this.#head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#head = this.#head.next;\n\t\tthis.#size--;\n\t\treturn current.value;\n\t}\n\n\tclear() {\n\t\tthis.#head = undefined;\n\t\tthis.#tail = undefined;\n\t\tthis.#size = 0;\n\t}\n\n\tget size() {\n\t\treturn this.#size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this.#head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n}\n","import Queue from 'yocto-queue';\n\nexport default function pLimit(concurrency) {\n\tif (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tif (queue.size > 0) {\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst run = async (fn, resolve, args) => {\n\t\tactiveCount++;\n\n\t\tconst result = (async () => fn(...args))();\n\n\t\tresolve(result);\n\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\tnext();\n\t};\n\n\tconst enqueue = (fn, resolve, args) => {\n\t\tqueue.enqueue(run.bind(undefined, fn, resolve, args));\n\n\t\t(async () => {\n\t\t\t// This function needs to wait until the next microtask before comparing\n\t\t\t// `activeCount` to `concurrency`, because `activeCount` is updated asynchronously\n\t\t\t// when the run function is dequeued and called. The comparison in the if-statement\n\t\t\t// needs to happen asynchronously as well to get an up-to-date value for `activeCount`.\n\t\t\tawait Promise.resolve();\n\n\t\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\t\tqueue.dequeue()();\n\t\t\t}\n\t\t})();\n\t};\n\n\tconst generator = (fn, ...args) => new Promise(resolve => {\n\t\tenqueue(fn, resolve, args);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount,\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size,\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue: () => {\n\t\t\t\tqueue.clear();\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div id=\"app-content-inner\">\n\t\t<div id=\"apps-list\"\n\t\t\tclass=\"apps-list\"\n\t\t\t:class=\"{\n\t\t\t\t'apps-list--list-view': (useBundleView || useListView),\n\t\t\t\t'apps-list--store-view': useAppStoreView,\n\t\t\t}\">\n\t\t\t<template v-if=\"useListView\">\n\t\t\t\t<div v-if=\"showUpdateAll\" class=\"apps-list__toolbar\">\n\t\t\t\t\t{{ n('settings', '%n app has an update available', '%n apps have an update available', counter) }}\n\t\t\t\t\t<NcButton v-if=\"showUpdateAll\"\n\t\t\t\t\t\tid=\"app-list-update-all\"\n\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\t@click=\"updateAll\">\n\t\t\t\t\t\t{{ n('settings', 'Update', 'Update all', counter) }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\n\t\t\t\t<div v-if=\"!showUpdateAll\" class=\"apps-list__toolbar\">\n\t\t\t\t\t{{ t('settings', 'All apps are up-to-date.') }}\n\t\t\t\t</div>\n\n\t\t\t\t<TransitionGroup name=\"apps-list\" tag=\"table\" class=\"apps-list__list-container\">\n\t\t\t\t\t<tr key=\"app-list-view-header\">\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Icon') }}</span>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Name') }}</span>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Version') }}</span>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Level') }}</span>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Actions') }}</span>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<AppItem v-for=\"app in apps\"\n\t\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\" />\n\t\t\t\t</TransitionGroup>\n\t\t\t</template>\n\n\t\t\t<table v-if=\"useBundleView\"\n\t\t\t\tclass=\"apps-list__list-container\">\n\t\t\t\t<tr key=\"app-list-view-header\">\n\t\t\t\t\t<th id=\"app-table-col-icon\">\n\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Icon') }}</span>\n\t\t\t\t\t</th>\n\t\t\t\t\t<th id=\"app-table-col-name\">\n\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Name') }}</span>\n\t\t\t\t\t</th>\n\t\t\t\t\t<th id=\"app-table-col-version\">\n\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Version') }}</span>\n\t\t\t\t\t</th>\n\t\t\t\t\t<th id=\"app-table-col-level\">\n\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Level') }}</span>\n\t\t\t\t\t</th>\n\t\t\t\t\t<th id=\"app-table-col-actions\">\n\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Actions') }}</span>\n\t\t\t\t\t</th>\n\t\t\t\t</tr>\n\t\t\t\t<template v-for=\"bundle in bundles\">\n\t\t\t\t\t<tr :key=\"bundle.id\">\n\t\t\t\t\t\t<th :id=\"`app-table-rowgroup-${bundle.id}`\" colspan=\"5\" scope=\"rowgroup\">\n\t\t\t\t\t\t\t<div class=\"apps-list__bundle-heading\">\n\t\t\t\t\t\t\t\t<span class=\"apps-list__bundle-header\">\n\t\t\t\t\t\t\t\t\t{{ bundle.name }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<NcButton type=\"secondary\" @click=\"toggleBundle(bundle.id)\">\n\t\t\t\t\t\t\t\t\t{{ t('settings', bundleToggleText(bundle.id)) }}\n\t\t\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<AppItem v-for=\"app in bundleApps(bundle.id)\"\n\t\t\t\t\t\t:key=\"bundle.id + app.id\"\n\t\t\t\t\t\t:use-bundle-view=\"true\"\n\t\t\t\t\t\t:headers=\"`app-table-rowgroup-${bundle.id}`\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\" />\n\t\t\t\t</template>\n\t\t\t</table>\n\t\t\t<ul v-if=\"useAppStoreView\" class=\"apps-list__store-container\">\n\t\t\t\t<AppItem v-for=\"app in apps\"\n\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t:category=\"category\"\n\t\t\t\t\t:list-view=\"false\" />\n\t\t\t</ul>\n\t\t</div>\n\n\t\t<div id=\"apps-list-search\" class=\"apps-list apps-list--list-view\">\n\t\t\t<div class=\"apps-list__list-container\">\n\t\t\t\t<table v-if=\"search !== '' && searchApps.length > 0\" class=\"apps-list__list-container\">\n\t\t\t\t\t<caption class=\"apps-list__bundle-header\">\n\t\t\t\t\t\t{{ t('settings', 'Results from other categories') }}\n\t\t\t\t\t</caption>\n\t\t\t\t\t<tr key=\"app-list-view-header\">\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Icon') }}</span>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Name') }}</span>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Version') }}</span>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Level') }}</span>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Actions') }}</span>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<AppItem v-for=\"app in searchApps\"\n\t\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\" />\n\t\t\t\t</table>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div v-if=\"search !== '' && !loading && searchApps.length === 0 && apps.length === 0\" id=\"apps-list-empty\" class=\"emptycontent emptycontent-search\">\n\t\t\t<div id=\"app-list-empty-icon\" class=\"icon-settings-dark\" />\n\t\t\t<h2>{{ t('settings', 'No apps found for your version') }}</h2>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport AppItem from './AppList/AppItem.vue'\nimport pLimit from 'p-limit'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\n\nexport default {\n\tname: 'AppList',\n\tcomponents: {\n\t\tAppItem,\n\t\tNcButton,\n\t},\n\n\tprops: {\n\t\tcategory: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsearch: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\tcounter() {\n\t\t\treturn this.apps.filter(app => app.update).length\n\t\t},\n\t\tloading() {\n\t\t\treturn this.$store.getters.loading('list')\n\t\t},\n\t\thasPendingUpdate() {\n\t\t\treturn this.apps.filter(app => app.update).length > 0\n\t\t},\n\t\tshowUpdateAll() {\n\t\t\treturn this.hasPendingUpdate && this.useListView\n\t\t},\n\t\tapps() {\n\t\t\tconst apps = this.$store.getters.getAllApps\n\t\t\t\t.filter(app => app.name.toLowerCase().search(this.search.toLowerCase()) !== -1)\n\t\t\t\t.sort(function(a, b) {\n\t\t\t\t\tconst sortStringA = '' + (a.active ? 0 : 1) + (a.update ? 0 : 1) + a.name\n\t\t\t\t\tconst sortStringB = '' + (b.active ? 0 : 1) + (b.update ? 0 : 1) + b.name\n\t\t\t\t\treturn OC.Util.naturalSortCompare(sortStringA, sortStringB)\n\t\t\t\t})\n\n\t\t\tif (this.category === 'installed') {\n\t\t\t\treturn apps.filter(app => app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'enabled') {\n\t\t\t\treturn apps.filter(app => app.active && app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'disabled') {\n\t\t\t\treturn apps.filter(app => !app.active && app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'app-bundles') {\n\t\t\t\treturn apps.filter(app => app.bundles)\n\t\t\t}\n\t\t\tif (this.category === 'updates') {\n\t\t\t\treturn apps.filter(app => app.update)\n\t\t\t}\n\t\t\tif (this.category === 'supported') {\n\t\t\t\t// For customers of the Nextcloud GmbH the app level will be set to `300` for apps that are supported in their subscription\n\t\t\t\treturn apps.filter(app => app.level === 300)\n\t\t\t}\n\t\t\tif (this.category === 'featured') {\n\t\t\t\t// An app level of `200` will be set for apps featured on the app store\n\t\t\t\treturn apps.filter(app => app.level === 200)\n\t\t\t}\n\n\t\t\t// filter app store categories\n\t\t\treturn apps.filter(app => {\n\t\t\t\treturn app.appstore && app.category !== undefined\n\t\t\t\t\t&& (app.category === this.category || app.category.indexOf(this.category) > -1)\n\t\t\t})\n\t\t},\n\t\tbundles() {\n\t\t\treturn this.$store.getters.getAppBundles.filter(bundle => this.bundleApps(bundle.id).length > 0)\n\t\t},\n\t\tbundleApps() {\n\t\t\treturn function(bundle) {\n\t\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t\t.filter(app => {\n\t\t\t\t\t\treturn app.bundleIds !== undefined && app.bundleIds.includes(bundle)\n\t\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\tsearchApps() {\n\t\t\tif (this.search === '') {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t.filter(app => {\n\t\t\t\t\tif (app.name.toLowerCase().search(this.search.toLowerCase()) !== -1) {\n\t\t\t\t\t\treturn (!this.apps.find(_app => _app.id === app.id))\n\t\t\t\t\t}\n\t\t\t\t\treturn false\n\t\t\t\t})\n\t\t},\n\t\tuseAppStoreView() {\n\t\t\treturn !this.useListView && !this.useBundleView\n\t\t},\n\t\tuseListView() {\n\t\t\treturn (this.category === 'installed' || this.category === 'enabled' || this.category === 'disabled' || this.category === 'updates' || this.category === 'featured' || this.category === 'supported')\n\t\t},\n\t\tuseBundleView() {\n\t\t\treturn (this.category === 'app-bundles')\n\t\t},\n\t\tallBundlesEnabled() {\n\t\t\treturn (id) => {\n\t\t\t\treturn this.bundleApps(id).filter(app => !app.active).length === 0\n\t\t\t}\n\t\t},\n\t\tbundleToggleText() {\n\t\t\treturn (id) => {\n\t\t\t\tif (this.allBundlesEnabled(id)) {\n\t\t\t\t\treturn t('settings', 'Disable all')\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Download and enable all')\n\t\t\t}\n\t\t},\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('nextcloud:unified-search.search', this.setSearch)\n\t\tunsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\t},\n\n\tmounted() {\n\t\tsubscribe('nextcloud:unified-search.search', this.setSearch)\n\t\tsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\t},\n\n\tmethods: {\n\t\tsetSearch({ query }) {\n\t\t\tthis.search = query\n\t\t},\n\t\tresetSearch() {\n\t\t\tthis.search = ''\n\t\t},\n\t\ttoggleBundle(id) {\n\t\t\tif (this.allBundlesEnabled(id)) {\n\t\t\t\treturn this.disableBundle(id)\n\t\t\t}\n\t\t\treturn this.enableBundle(id)\n\t\t},\n\t\tenableBundle(id) {\n\t\t\tconst apps = this.bundleApps(id).map(app => app.id)\n\t\t\tthis.$store.dispatch('enableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tconsole.error(error)\n\t\t\t\t\tOC.Notification.show(error)\n\t\t\t\t})\n\t\t},\n\t\tdisableBundle(id) {\n\t\t\tconst apps = this.bundleApps(id).map(app => app.id)\n\t\t\tthis.$store.dispatch('disableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tOC.Notification.show(error)\n\t\t\t\t})\n\t\t},\n\t\tupdateAll() {\n\t\t\tconst limit = pLimit(1)\n\t\t\tthis.apps\n\t\t\t\t.filter(app => app.update)\n\t\t\t\t.map(app => limit(() => this.$store.dispatch('updateApp', { appId: app.id })),\n\t\t\t\t)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$toolbar-padding: 8px;\n$toolbar-height: 44px + $toolbar-padding * 2;\n\n.apps-list {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-content: flex-start;\n\n\t// For transition group\n\t&--move {\n\t\ttransition: transform 1s;\n\t}\n\n\t#app-list-update-all {\n\t\tmargin-left: 10px;\n\t}\n\n\t&__toolbar {\n\t\theight: $toolbar-height;\n\t\tpadding: $toolbar-padding;\n\t\t// Leave room for app-navigation-toggle\n\t\tpadding-left: $toolbar-height;\n\t\twidth: 100%;\n\t\tbackground-color: var(--color-main-background);\n\t\tposition: sticky;\n\t\ttop: 0;\n\t\tz-index: 1;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\n\t&--list-view {\n\t\tmargin-bottom: 100px;\n\t\t// For positioning link overlay on rows\n\t\tposition: relative;\n\t}\n\n\t&__list-container {\n\t\twidth: 100%;\n\t}\n\n\t&__store-container {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t}\n\n\t&__bundle-heading {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tmargin: 20px 10px 20px 0;\n\t}\n\n\t&__bundle-header {\n\t\tmargin: 0 10px 0 50px;\n\t\tfont-weight: bold;\n\t\tfont-size: 20px;\n\t\tline-height: 30px;\n\t\tcolor: var(--color-text-light);\n\t}\n}\n\n#apps-list-search {\n\t.app-item {\n\t\th2 {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.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!./AppList.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!./AppList.vue?vue&type=style&index=0&id=73184220&prod&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!./AppList.vue?vue&type=style&index=0&id=73184220&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppList.vue?vue&type=template&id=73184220&scoped=true\"\nimport script from \"./AppList.vue?vue&type=script&lang=js\"\nexport * from \"./AppList.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppList.vue?vue&type=style&index=0&id=73184220&prod&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 \"73184220\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"app-content-inner\"}},[_c('div',{staticClass:\"apps-list\",class:{\n\t\t\t'apps-list--list-view': (_vm.useBundleView || _vm.useListView),\n\t\t\t'apps-list--store-view': _vm.useAppStoreView,\n\t\t},attrs:{\"id\":\"apps-list\"}},[(_vm.useListView)?[(_vm.showUpdateAll)?_c('div',{staticClass:\"apps-list__toolbar\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.n('settings', '%n app has an update available', '%n apps have an update available', _vm.counter))+\"\\n\\t\\t\\t\\t\"),(_vm.showUpdateAll)?_c('NcButton',{attrs:{\"id\":\"app-list-update-all\",\"type\":\"primary\"},on:{\"click\":_vm.updateAll}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.n('settings', 'Update', 'Update all', _vm.counter))+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.showUpdateAll)?_c('div',{staticClass:\"apps-list__toolbar\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'All apps are up-to-date.'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('TransitionGroup',{staticClass:\"apps-list__list-container\",attrs:{\"name\":\"apps-list\",\"tag\":\"table\"}},[_c('tr',{key:\"app-list-view-header\"},[_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Icon')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Name')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Version')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Level')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Actions')))])])]),_vm._v(\" \"),_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category}})})],2)]:_vm._e(),_vm._v(\" \"),(_vm.useBundleView)?_c('table',{staticClass:\"apps-list__list-container\"},[_c('tr',{key:\"app-list-view-header\"},[_c('th',{attrs:{\"id\":\"app-table-col-icon\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Icon')))])]),_vm._v(\" \"),_c('th',{attrs:{\"id\":\"app-table-col-name\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Name')))])]),_vm._v(\" \"),_c('th',{attrs:{\"id\":\"app-table-col-version\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Version')))])]),_vm._v(\" \"),_c('th',{attrs:{\"id\":\"app-table-col-level\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Level')))])]),_vm._v(\" \"),_c('th',{attrs:{\"id\":\"app-table-col-actions\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Actions')))])])]),_vm._v(\" \"),_vm._l((_vm.bundles),function(bundle){return [_c('tr',{key:bundle.id},[_c('th',{attrs:{\"id\":`app-table-rowgroup-${bundle.id}`,\"colspan\":\"5\",\"scope\":\"rowgroup\"}},[_c('div',{staticClass:\"apps-list__bundle-heading\"},[_c('span',{staticClass:\"apps-list__bundle-header\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(bundle.name)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"secondary\"},on:{\"click\":function($event){return _vm.toggleBundle(bundle.id)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', _vm.bundleToggleText(bundle.id)))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])],1)])]),_vm._v(\" \"),_vm._l((_vm.bundleApps(bundle.id)),function(app){return _c('AppItem',{key:bundle.id + app.id,attrs:{\"use-bundle-view\":true,\"headers\":`app-table-rowgroup-${bundle.id}`,\"app\":app,\"category\":_vm.category}})})]})],2):_vm._e(),_vm._v(\" \"),(_vm.useAppStoreView)?_c('ul',{staticClass:\"apps-list__store-container\"},_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":false}})}),1):_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"apps-list apps-list--list-view\",attrs:{\"id\":\"apps-list-search\"}},[_c('div',{staticClass:\"apps-list__list-container\"},[(_vm.search !== '' && _vm.searchApps.length > 0)?_c('table',{staticClass:\"apps-list__list-container\"},[_c('caption',{staticClass:\"apps-list__bundle-header\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Results from other categories'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('tr',{key:\"app-list-view-header\"},[_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Icon')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Name')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Version')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Level')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Actions')))])])]),_vm._v(\" \"),_vm._l((_vm.searchApps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category}})})],2):_vm._e()])]),_vm._v(\" \"),(_vm.search !== '' && !_vm.loading && _vm.searchApps.length === 0 && _vm.apps.length === 0)?_c('div',{staticClass:\"emptycontent emptycontent-search\",attrs:{\"id\":\"apps-list-empty\"}},[_c('div',{staticClass:\"icon-settings-dark\",attrs:{\"id\":\"app-list-empty-icon\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'No apps found for your version')))])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"app-discover\"},[(_setup.hasError)?_c(_setup.NcEmptyContent,{attrs:{\"name\":_setup.t('settings', 'Nothing to show'),\"description\":_setup.t('settings', 'Could not load section content from app store.')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiEyeOff,\"size\":64}})]},proxy:true}],null,false,638098482)}):(_setup.elements.length === 0)?_c(_setup.NcEmptyContent,{attrs:{\"name\":_setup.t('settings', 'Loading'),\"description\":_setup.t('settings', 'Fetching the latest news…')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcLoadingIcon,{attrs:{\"size\":64}})]},proxy:true}])}):_vm._l((_setup.elements),function(entry,index){return _c(_setup.getComponent(entry.type),_vm._b({key:entry.id ?? index,tag:\"component\"},'component',entry,false))})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2024 Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\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 <http://www.gnu.org/licenses/>.\n *\n */\n/**\n * Helper to transform the JSON API results to proper frontend objects (app discover section elements)\n *\n * @param element The JSON API element to transform\n */\nexport const parseApiResponse = (element) => {\n const appElement = { ...element };\n if (appElement.date) {\n appElement.date = Date.parse(appElement.date);\n }\n if (appElement.expiryDate) {\n appElement.expiryDate = Date.parse(appElement.expiryDate);\n }\n if (appElement.type === 'post') {\n return appElement;\n }\n else if (appElement.type === 'showcase') {\n return appElement;\n }\n else if (appElement.type === 'carousel') {\n return appElement;\n }\n throw new Error(`Invalid argument, app discover element with type ${element.type ?? 'unknown'} is unknown`);\n};\n/**\n * Filter outdated or upcoming elements\n * @param element Element to check\n */\nexport const filterElements = (element) => {\n const now = Date.now();\n // Element not yet published\n if (element.date && element.date > now) {\n return false;\n }\n // Element expired\n if (element.expiryDate && element.expiryDate < now) {\n return false;\n }\n return true;\n};\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreDiscoverSection.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreDiscoverSection.vue?vue&type=script&setup=true&lang=ts\"","\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!./AppStoreDiscoverSection.vue?vue&type=style&index=0&id=618752df&prod&scoped=true&lang=scss\";\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!./AppStoreDiscoverSection.vue?vue&type=style&index=0&id=618752df&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppStoreDiscoverSection.vue?vue&type=template&id=618752df&scoped=true\"\nimport script from \"./AppStoreDiscoverSection.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStoreDiscoverSection.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppStoreDiscoverSection.vue?vue&type=style&index=0&id=618752df&prod&scoped=true&lang=scss\"\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 \"618752df\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStore.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStore.vue?vue&type=script&setup=true&lang=ts\"","\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/vue-loader/lib/index.js??vue-loader-options!./AppStore.vue?vue&type=style&index=0&id=a75d4530&prod&scoped=true&lang=css\";\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/vue-loader/lib/index.js??vue-loader-options!./AppStore.vue?vue&type=style&index=0&id=a75d4530&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppStore.vue?vue&type=template&id=a75d4530&scoped=true\"\nimport script from \"./AppStore.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStore.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppStore.vue?vue&type=style&index=0&id=a75d4530&prod&scoped=true&lang=css\"\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 \"a75d4530\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigation,{attrs:{\"aria-label\":_setup.t('settings', 'Apps')},scopedSlots:_vm._u([{key:\"list\",fn:function(){return [_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-discover\",\"to\":{ name: 'apps-category', params: { category: 'discover'} },\"name\":_setup.APPS_SECTION_ENUM.discover},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.discover}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-installed\",\"to\":{ name: 'apps-category', params: { category: 'installed'} },\"name\":_setup.APPS_SECTION_ENUM.installed},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.installed}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-enabled\",\"to\":{ name: 'apps-category', params: { category: 'enabled' } },\"name\":_setup.APPS_SECTION_ENUM.enabled},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.enabled}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-disabled\",\"to\":{ name: 'apps-category', params: { category: 'disabled' } },\"name\":_setup.APPS_SECTION_ENUM.disabled},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.disabled}})]},proxy:true}])}),_vm._v(\" \"),(_setup.updateCount > 0)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-updates\",\"to\":{ name: 'apps-category', params: { category: 'updates' } },\"name\":_setup.APPS_SECTION_ENUM.updates},scopedSlots:_vm._u([{key:\"counter\",fn:function(){return [_c(_setup.NcCounterBubble,[_vm._v(_vm._s(_setup.updateCount))])]},proxy:true},{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.updates}})]},proxy:true}],null,false,2824895104)}):_vm._e(),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-your-bundles\",\"to\":{ name: 'apps-category', params: { category: 'app-bundles' } },\"name\":_setup.APPS_SECTION_ENUM['app-bundles']},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.bundles}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcAppNavigationSpacer),_vm._v(\" \"),(_setup.appstoreEnabled && _setup.categoriesLoading)?_c('li',{staticClass:\"categories--loading\"},[_c(_setup.NcLoadingIcon,{attrs:{\"size\":20,\"aria-label\":_setup.t('settings', 'Loading categories')}})],1):(_setup.appstoreEnabled && !_setup.categoriesLoading)?[(_setup.isSubscribed)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-supported\",\"to\":{ name: 'apps-category', params: { category: 'supported' } },\"name\":_setup.APPS_SECTION_ENUM.supported},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.supported}})]},proxy:true}],null,false,613663011)}):_vm._e(),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-featured\",\"to\":{ name: 'apps-category', params: { category: 'featured' } },\"name\":_setup.APPS_SECTION_ENUM.featured},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.featured}})]},proxy:true}])}),_vm._v(\" \"),_vm._l((_setup.categories),function(category){return _c(_setup.NcAppNavigationItem,{key:category.id,attrs:{\"id\":`app-category-${category.id}`,\"name\":category.displayName,\"to\":{\n\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\tparams: { category: category.id },\n\t\t\t\t}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":category.icon}})]},proxy:true}],null,true)})})]:_vm._e(),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-developer-docs\",\"name\":_setup.t('settings', 'Developer documentation ↗'),\"href\":_setup.developerDocsUrl}})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreNavigation.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreNavigation.vue?vue&type=script&setup=true&lang=ts\"","\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/vue-loader/lib/index.js??vue-loader-options!./AppStoreNavigation.vue?vue&type=style&index=0&id=d15221f2&prod&scoped=true&lang=css\";\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/vue-loader/lib/index.js??vue-loader-options!./AppStoreNavigation.vue?vue&type=style&index=0&id=d15221f2&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppStoreNavigation.vue?vue&type=template&id=d15221f2&scoped=true\"\nimport script from \"./AppStoreNavigation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStoreNavigation.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppStoreNavigation.vue?vue&type=style&index=0&id=d15221f2&prod&scoped=true&lang=css\"\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 \"d15221f2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.showSidebar)?_c(_setup.NcAppSidebar,{staticClass:\"app-sidebar\",class:{ 'app-sidebar--with-screenshot': _setup.hasScreenshot },attrs:{\"active\":_setup.activeTab,\"background\":_setup.hasScreenshot ? _setup.app.screenshot : undefined,\"compact\":!_setup.hasScreenshot,\"name\":_setup.app.name,\"title\":_setup.app.name,\"subname\":_setup.licenseText,\"subtitle\":_setup.licenseText},on:{\"update:active\":function($event){_setup.activeTab=$event},\"close\":_setup.hideAppDetails},scopedSlots:_vm._u([(!_setup.hasScreenshot)?{key:\"header\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{staticClass:\"app-sidebar__fallback-icon\",attrs:{\"svg\":_setup.appIcon ?? '',\"size\":64}})]},proxy:true}:null,{key:\"description\",fn:function(){return [_c('div',{staticClass:\"app-sidebar__badges\"},[_c(_setup.AppLevelBadge,{attrs:{\"level\":_setup.app.level}}),_vm._v(\" \"),(_setup.hasRating)?_c(_setup.AppScore,{attrs:{\"score\":_setup.rating}}):_vm._e()],1)]},proxy:true}],null,true)},[_vm._v(\" \"),_vm._v(\" \"),_c(_setup.AppDescriptionTab,{attrs:{\"app\":_setup.app}}),_vm._v(\" \"),_c(_setup.AppDetailsTab,{attrs:{\"app\":_setup.app}}),_vm._v(\" \"),_c(_setup.AppReleasesTab,{attrs:{\"app\":_setup.app}})],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"settings-markdown\" v-html=\"renderMarkdown\" />\n</template>\n\n<script>\nimport { marked } from 'marked'\nimport dompurify from 'dompurify'\n\nexport default {\n\tname: 'Markdown',\n\tprops: {\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tminHeading: {\n\t\t\ttype: Number,\n\t\t\tdefault: 1,\n\t\t},\n\t},\n\tcomputed: {\n\t\trenderMarkdown() {\n\t\t\tconst renderer = new marked.Renderer()\n\t\t\trenderer.link = function(href, title, text) {\n\t\t\t\tlet prot\n\t\t\t\ttry {\n\t\t\t\t\tprot = decodeURIComponent(unescape(href))\n\t\t\t\t\t\t.replace(/[^\\w:]/g, '')\n\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\n\t\t\t\tif (prot.indexOf('http:') !== 0 && prot.indexOf('https:') !== 0) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\n\t\t\t\tlet out = '<a href=\"' + href + '\" rel=\"noreferrer noopener\"'\n\t\t\t\tif (title) {\n\t\t\t\t\tout += ' title=\"' + title + '\"'\n\t\t\t\t}\n\t\t\t\tout += '>' + text + '</a>'\n\t\t\t\treturn out\n\t\t\t}\n\t\t\trenderer.heading = (text, level) => {\n\t\t\t\tlevel = Math.min(6, level + (this.minHeading - 1))\n\t\t\t\treturn `<h${level}>${text}</h${level}>`\n\t\t\t}\n\t\t\trenderer.image = function(href, title, text) {\n\t\t\t\tif (text) {\n\t\t\t\t\treturn text\n\t\t\t\t}\n\t\t\t\treturn title\n\t\t\t}\n\t\t\trenderer.blockquote = function(quote) {\n\t\t\t\treturn quote\n\t\t\t}\n\t\t\treturn dompurify.sanitize(\n\t\t\t\tmarked(this.text.trim(), {\n\t\t\t\t\trenderer,\n\t\t\t\t\tgfm: false,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttables: false,\n\t\t\t\t\tbreaks: false,\n\t\t\t\t\tpedantic: false,\n\t\t\t\t\tsanitize: true,\n\t\t\t\t\tsmartLists: true,\n\t\t\t\t\tsmartypants: false,\n\t\t\t\t}),\n\t\t\t\t{\n\t\t\t\t\tSAFE_FOR_JQUERY: true,\n\t\t\t\t\tALLOWED_TAGS: [\n\t\t\t\t\t\t'h1',\n\t\t\t\t\t\t'h2',\n\t\t\t\t\t\t'h3',\n\t\t\t\t\t\t'h4',\n\t\t\t\t\t\t'h5',\n\t\t\t\t\t\t'h6',\n\t\t\t\t\t\t'strong',\n\t\t\t\t\t\t'p',\n\t\t\t\t\t\t'a',\n\t\t\t\t\t\t'ul',\n\t\t\t\t\t\t'ol',\n\t\t\t\t\t\t'li',\n\t\t\t\t\t\t'em',\n\t\t\t\t\t\t'del',\n\t\t\t\t\t\t'blockquote',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.settings-markdown::v-deep {\n\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6 {\n\t\tfont-weight: 600;\n\t\tline-height: 120%;\n\t\tmargin-top: 24px;\n\t\tmargin-bottom: 12px;\n\t\tcolor: var(--color-main-text);\n\t}\n\n\th1 {\n\t\tfont-size: 36px;\n\t\tmargin-top: 48px;\n\t}\n\n\th2 {\n\t\tfont-size: 28px;\n\t\tmargin-top: 48px;\n\t}\n\n\th3 {\n\t\tfont-size: 24px;\n\t}\n\n\th4 {\n\t\tfont-size: 21px;\n\t}\n\n\th5 {\n\t\tfont-size: 17px;\n\t}\n\n\th6 {\n\t\tfont-size: var(--default-font-size);\n\t}\n\n\tpre {\n\t\twhite-space: pre;\n\t\toverflow-x: auto;\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: 1em 1.3em;\n\t\tmargin-bottom: 1em;\n\t}\n\n\tp code {\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: .1em .3em;\n\t}\n\n\tli {\n\t\tposition: relative;\n\t}\n\n\tul, ol {\n\t\tpadding-left: 10px;\n\t\tmargin-left: 10px;\n\t}\n\n\tul li {\n\t\tlist-style-type: disc;\n\t}\n\n\tul > li > ul > li {\n\t\tlist-style-type: circle;\n\t}\n\n\tul > li > ul > li ul li {\n\t\tlist-style-type: square;\n\t}\n\n\tblockquote {\n\t\tpadding-left: 1em;\n\t\tborder-left: 4px solid var(--color-primary-element);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.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!./Markdown.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!./Markdown.vue?vue&type=style&index=0&id=7c5c8e59&prod&scoped=true&lang=scss\";\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!./Markdown.vue?vue&type=style&index=0&id=7c5c8e59&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Markdown.vue?vue&type=template&id=7c5c8e59&scoped=true\"\nimport script from \"./Markdown.vue?vue&type=script&lang=js\"\nexport * from \"./Markdown.vue?vue&type=script&lang=js\"\nimport style0 from \"./Markdown.vue?vue&type=style&index=0&id=7c5c8e59&prod&scoped=true&lang=scss\"\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 \"7c5c8e59\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"settings-markdown\",domProps:{\"innerHTML\":_vm._s(_vm.renderMarkdown)}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSidebarTab,{attrs:{\"id\":\"desc\",\"name\":_setup.t('settings', 'Description'),\"order\":0},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiTextShort}})]},proxy:true}])},[_vm._v(\" \"),_c('div',{staticClass:\"app-description\"},[_c(_setup.Markdown,{attrs:{\"text\":_vm.app.description,\"min-heading\":4}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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!./AppDescriptionTab.vue?vue&type=style&index=0&id=fccce5ae&prod&scoped=true&lang=scss\";\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!./AppDescriptionTab.vue?vue&type=style&index=0&id=fccce5ae&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDescriptionTab.vue?vue&type=template&id=fccce5ae&scoped=true\"\nimport script from \"./AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppDescriptionTab.vue?vue&type=style&index=0&id=fccce5ae&prod&scoped=true&lang=scss\"\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 \"fccce5ae\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSidebarTab',{attrs:{\"id\":\"details\",\"name\":_vm.t('settings', 'Details'),\"order\":1},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiTextBox}})]},proxy:true}])},[_vm._v(\" \"),_c('div',{staticClass:\"app-details\"},[_c('div',{staticClass:\"app-details__actions\"},[(_vm.app.active && _vm.canLimitToGroups(_vm.app))?_c('div',{staticClass:\"app-details__actions-groups\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.groupCheckedAppsData),expression:\"groupCheckedAppsData\"}],staticClass:\"groups-enable__checkbox checkbox\",attrs:{\"id\":`groups_enable_${_vm.app.id}`,\"type\":\"checkbox\"},domProps:{\"value\":_vm.app.id,\"checked\":Array.isArray(_vm.groupCheckedAppsData)?_vm._i(_vm.groupCheckedAppsData,_vm.app.id)>-1:(_vm.groupCheckedAppsData)},on:{\"change\":[function($event){var $$a=_vm.groupCheckedAppsData,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=_vm.app.id,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.groupCheckedAppsData=$$a.concat([$$v]))}else{$$i>-1&&(_vm.groupCheckedAppsData=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.groupCheckedAppsData=$$c}},_vm.setGroupLimit]}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":`groups_enable_${_vm.app.id}`}},[_vm._v(_vm._s(_vm.t('settings', 'Limit to groups')))]),_vm._v(\" \"),_c('input',{staticClass:\"group_select\",attrs:{\"type\":\"hidden\",\"title\":_vm.t('settings', 'All'),\"value\":\"\"}}),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"limitToGroups\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Limit app usage to groups')))])]),_vm._v(\" \"),(_vm.isLimitedToGroups(_vm.app))?_c('NcSelect',{attrs:{\"input-id\":\"limitToGroups\",\"options\":_vm.groups,\"value\":_vm.appGroups,\"limit\":5,\"label\":\"name\",\"multiple\":true,\"close-on-select\":false},on:{\"option:selected\":_vm.addGroupLimitation,\"option:deselected\":_vm.removeGroupLimitation,\"search\":_vm.asyncFindGroup}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])]):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-details__actions-manage\"},[(_vm.app.update)?_c('input',{staticClass:\"update primary\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Update to {version}', { version: _vm.app.update }),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.update(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('input',{staticClass:\"uninstall\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Remove'),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.remove(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings','Disable'),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.disable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('input',{staticClass:\"enable primary\",attrs:{\"title\":_vm.enableButtonTooltip,\"aria-label\":_vm.enableButtonTooltip,\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.enable(_vm.app.id)}}}):(!_vm.app.active && !_vm.app.canInstall)?_c('input',{staticClass:\"enable force\",attrs:{\"title\":_vm.forceEnableButtonTooltip,\"aria-label\":_vm.forceEnableButtonTooltip,\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.forceEnable(_vm.app.id)}}}):_vm._e()])]),_vm._v(\" \"),_c('ul',{staticClass:\"app-details__dependencies\"},[(_vm.app.missingMinOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.missingMaxOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.app.canInstall)?_c('li',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:'))+\"\\n\\t\\t\\t\\t\"),_c('ul',{staticClass:\"missing-dependencies\"},_vm._l((_vm.app.missingDependencies),function(dep,index){return _c('li',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(dep)+\"\\n\\t\\t\\t\\t\\t\")])}),0)]):_vm._e()]),_vm._v(\" \"),(_vm.lastModified)?_c('div',{staticClass:\"app-details__section\"},[_c('h4',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Latest updated'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcDateTime',{attrs:{\"timestamp\":_vm.lastModified}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-details__section\"},[_c('h4',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Author'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('p',{staticClass:\"app-details__authors\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.appAuthors)+\"\\n\\t\\t\\t\")])]),_vm._v(\" \"),_c('div',{staticClass:\"app-details__section\"},[_c('h4',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Categories'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.appCategories)+\"\\n\\t\\t\\t\")])]),_vm._v(\" \"),(_vm.externalResources.length > 0)?_c('div',{staticClass:\"app-details__section\"},[_c('h4',[_vm._v(_vm._s(_vm.t('settings', 'Resources')))]),_vm._v(\" \"),_c('ul',{staticClass:\"app-details__documentation\",attrs:{\"aria-label\":_vm.t('settings', 'Documentation')}},_vm._l((_vm.externalResources),function(resource){return _c('li',{key:resource.id},[_c('a',{staticClass:\"appslink\",attrs:{\"href\":resource.href,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(resource.label)+\" ↗\\n\\t\\t\\t\\t\\t\")])])}),0)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-details__section\"},[_c('h4',[_vm._v(_vm._s(_vm.t('settings', 'Interact')))]),_vm._v(\" \"),_c('div',{staticClass:\"app-details__interact\"},[_c('NcButton',{attrs:{\"disabled\":!_vm.app.bugs,\"href\":_vm.app.bugs ?? '#',\"aria-label\":_vm.t('settings', 'Report a bug'),\"title\":_vm.t('settings', 'Report a bug')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiBug}})]},proxy:true}])}),_vm._v(\" \"),_c('NcButton',{attrs:{\"disabled\":!_vm.app.bugs,\"href\":_vm.app.bugs ?? '#',\"aria-label\":_vm.t('settings', 'Request feature'),\"title\":_vm.t('settings', 'Request feature')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiFeatureSearch}})]},proxy:true}])}),_vm._v(\" \"),(_vm.app.appstoreData?.discussion)?_c('NcButton',{attrs:{\"href\":_vm.app.appstoreData.discussion,\"aria-label\":_vm.t('settings', 'Ask questions or discuss'),\"title\":_vm.t('settings', 'Ask questions or discuss')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiTooltipQuestion}})]},proxy:true}],null,false,1288192462)}):_vm._e(),_vm._v(\" \"),(!_vm.app.internal)?_c('NcButton',{attrs:{\"href\":_vm.rateAppUrl,\"aria-label\":_vm.t('settings', 'Rate the app'),\"title\":_vm.t('settings', 'Rate')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiStar}})]},proxy:true}],null,false,422450625)}):_vm._e()],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<NcAppSidebarTab id=\"details\"\n\t\t:name=\"t('settings', 'Details')\"\n\t\t:order=\"1\">\n\t\t<template #icon>\n\t\t\t<NcIconSvgWrapper :path=\"mdiTextBox\" />\n\t\t</template>\n\t\t<div class=\"app-details\">\n\t\t\t<div class=\"app-details__actions\">\n\t\t\t\t<div v-if=\"app.active && canLimitToGroups(app)\" class=\"app-details__actions-groups\">\n\t\t\t\t\t<input :id=\"`groups_enable_${app.id}`\"\n\t\t\t\t\t\tv-model=\"groupCheckedAppsData\"\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t:value=\"app.id\"\n\t\t\t\t\t\tclass=\"groups-enable__checkbox checkbox\"\n\t\t\t\t\t\t@change=\"setGroupLimit\">\n\t\t\t\t\t<label :for=\"`groups_enable_${app.id}`\">{{ t('settings', 'Limit to groups') }}</label>\n\t\t\t\t\t<input type=\"hidden\"\n\t\t\t\t\t\tclass=\"group_select\"\n\t\t\t\t\t\t:title=\"t('settings', 'All')\"\n\t\t\t\t\t\tvalue=\"\">\n\t\t\t\t\t<br>\n\t\t\t\t\t<label for=\"limitToGroups\">\n\t\t\t\t\t\t<span>{{ t('settings', 'Limit app usage to groups') }}</span>\n\t\t\t\t\t</label>\n\t\t\t\t\t<NcSelect v-if=\"isLimitedToGroups(app)\"\n\t\t\t\t\t\tinput-id=\"limitToGroups\"\n\t\t\t\t\t\t:options=\"groups\"\n\t\t\t\t\t\t:value=\"appGroups\"\n\t\t\t\t\t\t:limit=\"5\"\n\t\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t\t@option:selected=\"addGroupLimitation\"\n\t\t\t\t\t\t@option:deselected=\"removeGroupLimitation\"\n\t\t\t\t\t\t@search=\"asyncFindGroup\">\n\t\t\t\t\t\t<span slot=\"noResult\">{{ t('settings', 'No results') }}</span>\n\t\t\t\t\t</NcSelect>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"app-details__actions-manage\">\n\t\t\t\t\t<input v-if=\"app.update\"\n\t\t\t\t\t\tclass=\"update primary\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t:value=\"t('settings', 'Update to {version}', { version: app.update })\"\n\t\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t\t@click=\"update(app.id)\">\n\t\t\t\t\t<input v-if=\"app.canUnInstall\"\n\t\t\t\t\t\tclass=\"uninstall\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t:value=\"t('settings', 'Remove')\"\n\t\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t\t@click=\"remove(app.id)\">\n\t\t\t\t\t<input v-if=\"app.active\"\n\t\t\t\t\t\tclass=\"enable\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t:value=\"t('settings','Disable')\"\n\t\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t\t@click=\"disable(app.id)\">\n\t\t\t\t\t<input v-if=\"!app.active && (app.canInstall || app.isCompatible)\"\n\t\t\t\t\t\t:title=\"enableButtonTooltip\"\n\t\t\t\t\t\t:aria-label=\"enableButtonTooltip\"\n\t\t\t\t\t\tclass=\"enable primary\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t:value=\"enableButtonText\"\n\t\t\t\t\t\t:disabled=\"!app.canInstall || installing || isLoading\"\n\t\t\t\t\t\t@click=\"enable(app.id)\">\n\t\t\t\t\t<input v-else-if=\"!app.active && !app.canInstall\"\n\t\t\t\t\t\t:title=\"forceEnableButtonTooltip\"\n\t\t\t\t\t\t:aria-label=\"forceEnableButtonTooltip\"\n\t\t\t\t\t\tclass=\"enable force\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t:value=\"forceEnableButtonText\"\n\t\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t\t@click=\"forceEnable(app.id)\">\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<ul class=\"app-details__dependencies\">\n\t\t\t\t<li v-if=\"app.missingMinOwnCloudVersion\">\n\t\t\t\t\t{{ t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.') }}\n\t\t\t\t</li>\n\t\t\t\t<li v-if=\"app.missingMaxOwnCloudVersion\">\n\t\t\t\t\t{{ t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.') }}\n\t\t\t\t</li>\n\t\t\t\t<li v-if=\"!app.canInstall\">\n\t\t\t\t\t{{ t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:') }}\n\t\t\t\t\t<ul class=\"missing-dependencies\">\n\t\t\t\t\t\t<li v-for=\"(dep, index) in app.missingDependencies\" :key=\"index\">\n\t\t\t\t\t\t\t{{ dep }}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t</ul>\n\n\t\t\t<div v-if=\"lastModified\" class=\"app-details__section\">\n\t\t\t\t<h4>\n\t\t\t\t\t{{ t('settings', 'Latest updated') }}\n\t\t\t\t</h4>\n\t\t\t\t<NcDateTime :timestamp=\"lastModified\" />\n\t\t\t</div>\n\n\t\t\t<div class=\"app-details__section\">\n\t\t\t\t<h4>\n\t\t\t\t\t{{ t('settings', 'Author') }}\n\t\t\t\t</h4>\n\t\t\t\t<p class=\"app-details__authors\">\n\t\t\t\t\t{{ appAuthors }}\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t<div class=\"app-details__section\">\n\t\t\t\t<h4>\n\t\t\t\t\t{{ t('settings', 'Categories') }}\n\t\t\t\t</h4>\n\t\t\t\t<p>\n\t\t\t\t\t{{ appCategories }}\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t<div v-if=\"externalResources.length > 0\" class=\"app-details__section\">\n\t\t\t\t<h4>{{ t('settings', 'Resources') }}</h4>\n\t\t\t\t<ul class=\"app-details__documentation\" :aria-label=\"t('settings', 'Documentation')\">\n\t\t\t\t\t<li v-for=\"resource of externalResources\" :key=\"resource.id\">\n\t\t\t\t\t\t<a class=\"appslink\"\n\t\t\t\t\t\t\t:href=\"resource.href\"\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\trel=\"noreferrer noopener\">\n\t\t\t\t\t\t\t{{ resource.label }} ↗\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\n\t\t\t<div class=\"app-details__section\">\n\t\t\t\t<h4>{{ t('settings', 'Interact') }}</h4>\n\t\t\t\t<div class=\"app-details__interact\">\n\t\t\t\t\t<NcButton :disabled=\"!app.bugs\"\n\t\t\t\t\t\t:href=\"app.bugs ?? '#'\"\n\t\t\t\t\t\t:aria-label=\"t('settings', 'Report a bug')\"\n\t\t\t\t\t\t:title=\"t('settings', 'Report a bug')\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiBug\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton :disabled=\"!app.bugs\"\n\t\t\t\t\t\t:href=\"app.bugs ?? '#'\"\n\t\t\t\t\t\t:aria-label=\"t('settings', 'Request feature')\"\n\t\t\t\t\t\t:title=\"t('settings', 'Request feature')\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiFeatureSearch\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton v-if=\"app.appstoreData?.discussion\"\n\t\t\t\t\t\t:href=\"app.appstoreData.discussion\"\n\t\t\t\t\t\t:aria-label=\"t('settings', 'Ask questions or discuss')\"\n\t\t\t\t\t\t:title=\"t('settings', 'Ask questions or discuss')\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiTooltipQuestion\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton v-if=\"!app.internal\"\n\t\t\t\t\t\t:href=\"rateAppUrl\"\n\t\t\t\t\t\t:aria-label=\"t('settings', 'Rate the app')\"\n\t\t\t\t\t\t:title=\"t('settings', 'Rate')\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiStar\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</NcAppSidebarTab>\n</template>\n\n<script>\nimport NcAppSidebarTab from '@nextcloud/vue/dist/Components/NcAppSidebarTab.js'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcDateTime from '@nextcloud/vue/dist/Components/NcDateTime.js'\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\n\nimport AppManagement from '../../mixins/AppManagement.js'\nimport { mdiBug, mdiFeatureSearch, mdiStar, mdiTextBox, mdiTooltipQuestion } from '@mdi/js'\nimport { useAppsStore } from '../../store/apps-store'\n\nexport default {\n\tname: 'AppDetailsTab',\n\n\tcomponents: {\n\t\tNcAppSidebarTab,\n\t\tNcButton,\n\t\tNcDateTime,\n\t\tNcIconSvgWrapper,\n\t\tNcSelect,\n\t},\n\tmixins: [AppManagement],\n\n\tprops: {\n\t\tapp: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst store = useAppsStore()\n\n\t\treturn {\n\t\t\tstore,\n\n\t\t\tmdiBug,\n\t\t\tmdiFeatureSearch,\n\t\t\tmdiStar,\n\t\t\tmdiTextBox,\n\t\t\tmdiTooltipQuestion,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tlastModified() {\n\t\t\treturn (this.app.appstoreData?.releases ?? [])\n\t\t\t\t.map(({ lastModified }) => Date.parse(lastModified))\n\t\t\t\t.sort()\n\t\t\t\t.at(0) ?? null\n\t\t},\n\t\t/**\n\t\t * App authors as comma separated string\n\t\t */\n\t\tappAuthors() {\n\t\t\tconsole.warn(this.app)\n\t\t\tif (!this.app) {\n\t\t\t\treturn ''\n\t\t\t}\n\n\t\t\tconst authorName = (xmlNode) => {\n\t\t\t\tif (xmlNode['@value']) {\n\t\t\t\t\t// Complex node (with email or homepage attribute)\n\t\t\t\t\treturn xmlNode['@value']\n\t\t\t\t}\n\t\t\t\t// Simple text node\n\t\t\t\treturn xmlNode\n\t\t\t}\n\n\t\t\tconst authors = Array.isArray(this.app.author)\n\t\t\t\t? this.app.author.map(authorName)\n\t\t\t\t: [authorName(this.app.author)]\n\n\t\t\treturn authors\n\t\t\t\t.sort((a, b) => a.split(' ').at(-1).localeCompare(b.split(' ').at(-1)))\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\tappstoreUrl() {\n\t\t\treturn `https://apps.nextcloud.com/apps/${this.app.id}`\n\t\t},\n\n\t\t/**\n\t\t * Further external resources (e.g. website)\n\t\t */\n\t\texternalResources() {\n\t\t\tconst resources = []\n\t\t\tif (!this.app.internal) {\n\t\t\t\tresources.push({\n\t\t\t\t\tid: 'appstore',\n\t\t\t\t\thref: this.appstoreUrl,\n\t\t\t\t\tlabel: t('settings', 'View in store'),\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (this.app.website) {\n\t\t\t\tresources.push({\n\t\t\t\t\tid: 'website',\n\t\t\t\t\thref: this.app.website,\n\t\t\t\t\tlabel: t('settings', 'Visit website'),\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (this.app.documentation) {\n\t\t\t\tif (this.app.documentation.user) {\n\t\t\t\t\tresources.push({\n\t\t\t\t\t\tid: 'doc-user',\n\t\t\t\t\t\thref: this.app.documentation.user,\n\t\t\t\t\t\tlabel: t('settings', 'Usage documentation'),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.app.documentation.admin) {\n\t\t\t\t\tresources.push({\n\t\t\t\t\t\tid: 'doc-admin',\n\t\t\t\t\t\thref: this.app.documentation.admin,\n\t\t\t\t\t\tlabel: t('settings', 'Admin documentation'),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.app.documentation.developer) {\n\t\t\t\t\tresources.push({\n\t\t\t\t\t\tid: 'doc-developer',\n\t\t\t\t\t\thref: this.app.documentation.developer,\n\t\t\t\t\t\tlabel: t('settings', 'Developer documentation'),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn resources\n\t\t},\n\n\t\tappCategories() {\n\t\t\treturn [this.app.category].flat()\n\t\t\t\t.map((id) => this.store.getCategoryById(id)?.displayName ?? id)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\trateAppUrl() {\n\t\t\treturn `${this.appstoreUrl}#comments`\n\t\t},\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map(group => { return { id: group, name: group } })\n\t\t},\n\t\tgroups() {\n\t\t\treturn this.$store.getters.getGroups\n\t\t\t\t.filter(group => group.id !== 'disabled')\n\t\t\t\t.sort((a, b) => a.name.localeCompare(b.name))\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.app-details {\n\tpadding: 20px;\n\n\t&__actions {\n\t\t// app management\n\t\t&-manage {\n\t\t\t// if too many, shrink them and ellipsis\n\t\t\tdisplay: flex;\n\t\t\tinput {\n\t\t\t\tflex: 0 1 auto;\n\t\t\t\tmin-width: 0;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\t}\n\t&__authors {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__section {\n\t\tmargin-top: 15px;\n\n\t\th4 {\n\t\t\tfont-size: 16px;\n\t\t\tfont-weight: bold;\n\t\t\tmargin-block-end: 5px;\n\t\t}\n\t}\n\n\t&__interact {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tflex-wrap: wrap;\n\t\tgap: 12px;\n\t}\n\n\t&__documentation {\n\t\ta {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t\tli {\n\t\t\tpadding-inline-start: 20px;\n\n\t\t\t&::before {\n\t\t\t\twidth: 5px;\n\t\t\t\theight: 5px;\n\t\t\t\tborder-radius: 100%;\n\t\t\t\tbackground-color: var(--color-main-text);\n\t\t\t\tcontent: \"\";\n\t\t\t\tfloat: inline-start;\n\t\t\t\tmargin-inline-start: -13px;\n\t\t\t\tposition: relative;\n\t\t\t\ttop: 10px;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.force {\n\tcolor: var(--color-error);\n\tborder-color: var(--color-error);\n\tbackground: var(--color-main-background);\n}\n.force:hover,\n.force:active {\n\tcolor: var(--color-main-background);\n\tborder-color: var(--color-error) !important;\n\tbackground: var(--color-error);\n}\n\n.missing-dependencies {\n\tlist-style: initial;\n\tlist-style-type: initial;\n\tlist-style-position: inside;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetailsTab.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!./AppDetailsTab.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!./AppDetailsTab.vue?vue&type=style&index=0&id=24864562&prod&scoped=true&lang=scss\";\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!./AppDetailsTab.vue?vue&type=style&index=0&id=24864562&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDetailsTab.vue?vue&type=template&id=24864562&scoped=true\"\nimport script from \"./AppDetailsTab.vue?vue&type=script&lang=js\"\nexport * from \"./AppDetailsTab.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppDetailsTab.vue?vue&type=style&index=0&id=24864562&prod&scoped=true&lang=scss\"\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 \"24864562\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppReleasesTab.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppReleasesTab.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.hasChangelog)?_c(_setup.NcAppSidebarTab,{attrs:{\"id\":\"changelog\",\"name\":_setup.t('settings', 'Changelog'),\"order\":2},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiClockFast,\"size\":24}})]},proxy:true}],null,false,1849836872)},[_vm._v(\" \"),_vm._l((_vm.app.releases),function(release){return _c('div',{key:release.version,staticClass:\"app-sidebar-tabs__release\"},[_c('h2',[_vm._v(_vm._s(release.version))]),_vm._v(\" \"),_c(_setup.Markdown,{staticClass:\"app-sidebar-tabs__release-text\",attrs:{\"text\":_setup.createChangelogFromRelease(release)}})],1)})],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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!./AppReleasesTab.vue?vue&type=style&index=0&id=2261a93d&prod&scoped=true&lang=scss\";\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!./AppReleasesTab.vue?vue&type=style&index=0&id=2261a93d&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppReleasesTab.vue?vue&type=template&id=2261a93d&scoped=true\"\nimport script from \"./AppReleasesTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppReleasesTab.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppReleasesTab.vue?vue&type=style&index=0&id=2261a93d&prod&scoped=true&lang=scss\"\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 \"2261a93d\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"","import { mdiCog } from '@mdi/js';\nimport { computed, ref, watchEffect } from 'vue';\nimport AppstoreCategoryIcons from '../constants/AppstoreCategoryIcons.ts';\nimport logger from '../logger.ts';\n/**\n * Get the app icon raw SVG for use with `NcIconSvgWrapper` (do never use without sanitizing)\n * It has a fallback to the categroy icon.\n *\n * @param app The app to get the icon for\n */\nexport function useAppIcon(app) {\n const appIcon = ref(null);\n /**\n * Fallback value if no app icon available\n */\n const categoryIcon = computed(() => {\n const path = [app.value?.category ?? []].flat()\n .map((name) => AppstoreCategoryIcons[name])\n .filter((icon) => !!icon)\n .at(0)\n ?? mdiCog;\n return path ? `<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"${path}\" /></svg>` : null;\n });\n watchEffect(async () => {\n // Note: Only variables until the first `await` will be watched!\n if (!app.value?.preview) {\n appIcon.value = categoryIcon.value;\n }\n else {\n appIcon.value = null;\n // Now try to load the real app icon\n try {\n const response = await window.fetch(app.value.preview);\n const blob = await response.blob();\n const rawSvg = await blob.text();\n appIcon.value = rawSvg.replaceAll(/fill=\"#(fff|ffffff)([a-z0-9]{1,2})?\"/ig, 'fill=\"currentColor\"');\n }\n catch (error) {\n appIcon.value = categoryIcon.value;\n logger.error('Could not load app icon', { error });\n }\n }\n });\n return {\n appIcon,\n };\n}\n","\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!./AppStoreSidebar.vue?vue&type=style&index=0&id=31ecb666&prod&scoped=true&lang=scss\";\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!./AppStoreSidebar.vue?vue&type=style&index=0&id=31ecb666&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppStoreSidebar.vue?vue&type=template&id=31ecb666&scoped=true\"\nimport script from \"./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppStoreSidebar.vue?vue&type=style&index=0&id=31ecb666&prod&scoped=true&lang=scss\"\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 \"31ecb666\",\n null\n \n)\n\nexport default component.exports"],"names":["APPS_SECTION_ENUM","Object","freeze","discover","t","installed","enabled","disabled","updates","featured","supported","axios","get","generateOcsUrl","then","_ref","data","ocs","meta","statuscode","emit","apps","window","dispatchEvent","Event","computed","appGroups","this","app","groups","map","group","id","name","installing","$store","getters","loading","isLoading","enableButtonText","needsDownload","forceEnableButtonText","enableButtonTooltip","forceEnableButtonTooltip","base","groupCheckedAppsData","mounted","length","methods","asyncFindGroup","query","dispatch","search","limit","offset","isLimitedToGroups","setGroupLimit","appId","canLimitToGroups","types","includes","addGroupLimitation","groupArray","pop","concat","removeGroupLimitation","currentGroups","index","indexOf","splice","forceEnable","response","rebuildNavigation","catch","error","showError","enable","disable","remove","install","update","mdiStarCircleOutline","mdiAccount","mdiCheck","mdiClose","bundles","mdiArchive","mdiStarShooting","mdiStar","mdiDownload","auth","mdiKey","customization","mdiCog","dashboard","mdiViewDashboard","files","mdiFolder","games","mdiControllerClassic","integration","mdiOpenInApp","monitoring","mdiMonitorEye","multimedia","mdiMultimedia","office","mdiFileDocumentEdit","organization","mdiOfficeBuilding","mdiMagnify","security","mdiSecurity","social","mdiAccountMultiple","tools","mdiTools","workflow","mdiClipboardFlow","showApiError","useAppsStore","defineStore","state","categories","updateCount","loadState","loadingList","gettingCategoriesPromise","actions","loadCategories","force","arguments","undefined","generateUrl","category","_APPSTORE_CATEGORY_IC","icon","APPSTORE_CATEGORY_ICONS","$patch","logger","loadApps","getCategoryById","categoryId","_this$categories$find","find","getAppById","_this$apps$find","_ref2","___CSS_LOADER_EXPORT___","push","module","filterId","filterUrl","Math","random","toString","substring","components","AppLevelBadge","AppScore","NcButton","mixins","AppManagement","SvgFilterMixin","props","type","required","String","listView","Boolean","default","useBundleView","headers","inline","isSelected","scrolled","screenshotLoaded","hasRating","appstoreData","ratingNumOverall","dataItemTag","withSidebar","$route","params","watch","releases","screenshot","image","Image","onload","src","watchers","prefix","content","getDataItemHeaders","columnName","join","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","tag","staticClass","class","attrs","preview","_e","_v","appName","_s","summary","version","level","score","on","$event","stopPropagation","canUnInstall","active","canInstall","isCompatible","_defineComponent","__name","setup","__props","isSupported","isFeatured","badgeIcon","value","badgeText","badgeTitle","__sfc","NcIconSvgWrapper","_setup","_setupProxy","defineComponent","Number","mdiStarHalfFull","mdiStarOutline","title","appScore","toFixed","fullStars","floor","emptyStars","min","hasHalfStar","_l","key","Node","constructor","_defineProperty","_head","WeakMap","_tail","_size","_Symbol$iterator","Symbol","iterator","Queue","_classPrivateFieldInitSpec","writable","clear","enqueue","_this$size","node","_classPrivateFieldGet","next","_classPrivateFieldSet","dequeue","_this$size3","current","size","pLimit","concurrency","isInteger","POSITIVE_INFINITY","TypeError","queue","activeCount","run","async","fn","resolve","args","result","generator","_len","Array","_key","Promise","bind","defineProperties","pendingCount","clearQueue","AppItem","counter","filter","hasPendingUpdate","showUpdateAll","useListView","getAllApps","toLowerCase","sort","a","b","sortStringA","sortStringB","OC","Util","naturalSortCompare","appstore","getAppBundles","bundle","bundleApps","bundleIds","searchApps","_app","useAppStoreView","allBundlesEnabled","bundleToggleText","beforeDestroy","unsubscribe","setSearch","resetSearch","subscribe","toggleBundle","disableBundle","enableBundle","console","Notification","show","updateAll","n","parseApiResponse","element","_element$type","appElement","date","Date","parse","expiryDate","Error","filterElements","now","PostType","defineAsyncComponent","CarouselType","ShowcaseType","hasError","ref","elements","shuffleArray","array","i","j","onBeforeMount","info","parsedElements","shuffledElements","_a$order","_b$order","order","Infinity","getComponent","render","h","mdiEyeOff","NcEmptyContent","NcLoadingIcon","scopedSlots","_u","proxy","entry","_entry$id","_b","route","useRoute","store","currentCategory","_route$params$categor","_route$params","appStoreLabel","viewLabel","_APPS_SECTION_ENUM$cu","_store$getCategoryByI","displayName","watchEffect","document","instance","getCurrentInstance","shouldRefetchCategories","NcAppContent","AppList","AppStoreDiscoverSection","domProps","appstoreEnabled","developerDocsUrl","categoriesLoading","isSubscribed","NcAppNavigation","NcAppNavigationItem","NcAppNavigationSpacer","NcCounterBubble","text","minHeading","renderMarkdown","renderer","marked","Renderer","link","href","prot","decodeURIComponent","unescape","replace","e","out","heading","blockquote","quote","dompurify","trim","gfm","highlight","tables","breaks","pedantic","sanitize","smartLists","smartypants","SAFE_FOR_JQUERY","ALLOWED_TAGS","mdiTextShort","NcAppSidebarTab","Markdown","description","NcDateTime","NcSelect","mdiBug","mdiFeatureSearch","mdiTextBox","mdiTooltipQuestion","lastModified","_map$sort$at","_this$app$appstoreDat","_this$app$appstoreDat2","at","appAuthors","warn","authorName","xmlNode","isArray","author","split","localeCompare","appstoreUrl","externalResources","resources","internal","label","website","documentation","user","admin","developer","appCategories","flat","_this$store$getCatego","_this$store$getCatego2","rateAppUrl","getGroups","_vm$app$bugs","_vm$app$bugs2","_vm$app$appstoreData","directives","rawName","expression","_i","$$a","$$el","target","$$c","checked","$$v","$$i","slice","slot","missingMinOwnCloudVersion","missingMaxOwnCloudVersion","missingDependencies","dep","resource","bugs","discussion","hasChangelog","_props$app$releases$","_props$app$releases","values","translations","some","changelog","createChangelogFromRelease","release","_release$translations","_release$translations2","_release$translations3","getLanguage","en","mdiClockFast","router","useRouter","_route$params$id","_app$value$appstoreDa","rating","_app$value$appstoreDa2","_app$value$appstoreDa3","_app$value$appstoreDa4","ratingNumRecent","ratingRecent","ratingOverall","showSidebar","appIcon","categoryIcon","_flat$map$filter$at","_app$value$category","_app$value","path","AppstoreCategoryIcons","_app$value2","fetch","blob","rawSvg","replaceAll","useAppIcon","licenseText","license","licence","toUpperCase","activeTab","hasScreenshot","loadScreenshot","_app$value3","onMounted","hideAppDetails","NcAppSidebar","AppDescriptionTab","AppDetailsTab","AppReleasesTab","_setup$appIcon"],"sourceRoot":""}