1 |
- {"version":3,"file":"settings-apps-view-4529.js?v=613467f5f0d7be9c48d2","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/app-api-store.ts","webpack:///nextcloud/apps/settings/src/store/apps-store.ts","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=style&index=0&id=319cf338&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/AppList/AppDaemonBadge.vue?vue&type=style&index=0&id=4e5b1dd0&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=style&index=0&id=3d65c607&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppList/AppLevelBadge.vue?vue&type=style&index=0&id=5ee601b2&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue?vue&type=style&index=0&id=bb597eea&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue?vue&type=style&index=0&id=10be429c&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?vue&type=style&index=0&id=cf0a1ae6&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?vue&type=style&index=0&id=12264396&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?vue&type=style&index=0&id=9c32407e&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=style&index=0&id=00c6423a&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/views/AppStoreSidebar.vue?vue&type=style&index=0&id=70317c96&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue?vue&type=style&index=0&id=2193f4e0&prod&scoped=true&lang=css","webpack:///nextcloud/apps/settings/src/views/AppStore.vue?vue&type=style&index=0&id=6235de08&prod&scoped=true&lang=css","webpack:///nextcloud/apps/settings/src/views/AppStoreNavigation.vue?vue&type=style&index=0&id=4b956a9f&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?0b3d","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?8473","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?fc42","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?e1e8","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?9ef0","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?c4c9","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?0191","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?e048","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?cd04","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?5e78","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?88c0","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?d492","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue?0e7e","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue?4b28","webpack:///nextcloud/apps/settings/src/components/AppList/AppDaemonBadge.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppDaemonBadge.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/components/AppList/AppDaemonBadge.vue?fb49","webpack://nextcloud/./apps/settings/src/components/AppList/AppDaemonBadge.vue?e75c","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?782c","webpack://nextcloud/./apps/settings/src/views/AppStoreSidebar.vue?5373"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport 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 * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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\tif (this.app?.app_api) {\n\t\t\t\treturn this.app && this?.appApiStore.getLoading('install') === true\n\t\t\t}\n\t\t\treturn this.$store.getters.loading('install')\n\t\t},\n\t\tisLoading() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn this.app && this?.appApiStore.getLoading(this.app.id) === true\n\t\t\t}\n\t\t\treturn this.app && this.$store.getters.loading(this.app.id)\n\t\t},\n\t\tisInitializing() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn this.app && (this.app?.status?.action === 'init' || this.app?.status?.action === 'healthcheck')\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tisDeploying() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn this.app && this.app?.status?.action === 'deploy'\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tisManualInstall() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn this.app?.daemon?.accepts_deploy_id === 'manual-install'\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tupdateButtonText() {\n\t\t\tif (this.app?.app_api && this.app?.daemon?.accepts_deploy_id === 'manual-install') {\n\t\t\t\treturn t('settings', 'manual-install apps cannot be updated')\n\t\t\t}\n\t\t\treturn t('settings', 'Update to {version}', { version: this.app?.update })\n\t\t},\n\t\tenableButtonText() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'deploy') {\n\t\t\t\t\treturn t('settings', '{progress}% Deploying …', { progress: this.app?.status?.deploy ?? 0 })\n\t\t\t\t}\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'init') {\n\t\t\t\t\treturn t('settings', '{progress}% Initializing …', { progress: this.app?.status?.init ?? 0 })\n\t\t\t\t}\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'healthcheck') {\n\t\t\t\t\treturn t('settings', 'Health checking')\n\t\t\t\t}\n\t\t\t\tif (this.app.needsDownload) {\n\t\t\t\t\treturn t('settings', 'Deploy and Enable')\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable')\n\t\t\t} else {\n\t\t\t\tif (this.app.needsDownload) {\n\t\t\t\t\treturn t('settings', 'Download and enable')\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable')\n\t\t\t}\n\t\t},\n\t\tdisableButtonText() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'deploy') {\n\t\t\t\t\treturn t('settings', '{progress}% Deploying …', { progress: this.app?.status?.deploy })\n\t\t\t\t}\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'init') {\n\t\t\t\t\treturn t('settings', '{progress}% Initializing …', { progress: this.app?.status?.init })\n\t\t\t\t}\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'healthcheck') {\n\t\t\t\t\treturn t('settings', 'Health checking')\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn t('settings', 'Disable')\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?.app_api && 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\tdefaultDeployDaemonAccessible() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tif (this.app?.daemon && this.app?.daemon?.accepts_deploy_id === 'manual-install') {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tif (this.app?.daemon?.accepts_deploy_id === 'docker-install'\n\t\t\t\t\t&& this.appApiStore.getDefaultDaemon?.name === this.app?.daemon?.name) {\n\t\t\t\t\treturn this?.appApiStore.getDaemonAccessible === true\n\t\t\t\t}\n\t\t\t\treturn this?.appApiStore.getDaemonAccessible\n\t\t\t}\n\t\t\treturn true\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?.app_api) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn this.app.groups.length || this.groupCheckedAppsData\n\t\t},\n\t\tsetGroupLimit() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn // not supported for app_api apps\n\t\t\t}\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\t\t|| app?.app_api) {\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\tif (this.app?.app_api) {\n\t\t\t\treturn // not supported for app_api apps\n\t\t\t}\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\tif (this.app?.app_api) {\n\t\t\t\treturn // not supported for app_api apps\n\t\t\t}\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\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.forceEnableApp(appId)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('forceEnableApp', { appId, groups: [] })\n\t\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t}\n\t\t},\n\t\tenable(appId) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.enableApp(appId)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId, groups: [] })\n\t\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t}\n\t\t},\n\t\tdisable(appId) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.disableApp(appId)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('disableApp', { appId })\n\t\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t}\n\t\t},\n\t\tremove(appId, removeData = false) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.uninstallApp(appId, removeData)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('appApiApps/uninstallApp', { appId, removeData })\n\t\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t}\n\t\t},\n\t\tinstall(appId) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.enableApp(appId)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId })\n\t\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t}\n\t\t},\n\t\tupdate(appId) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.updateApp(appId)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('updateApp', { appId })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\trebuildNavigation()\n\t\t\t\t\t\tthis.store.updateCount = Math.max(this.store.updateCount - 1, 0)\n\t\t\t\t\t})\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { mdiAccount, mdiAccountMultiple, mdiArchive, mdiCheck, mdiClipboardFlow, mdiClose, mdiCog, mdiControllerClassic, mdiDownload, mdiFileDocumentEdit, mdiFolder, mdiKey, mdiMagnify, mdiMonitorEye, mdiMultimedia, mdiOfficeBuilding, mdiOpenInApp, mdiSecurity, mdiStar, mdiStarCircleOutline, mdiStarShooting, mdiTools, mdiViewColumn, } 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: mdiViewColumn,\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 * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios';\nimport { confirmPassword } from '@nextcloud/password-confirmation';\nimport { showError, showInfo } 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 api from './api';\nimport logger from '../logger';\nimport Vue from 'vue';\nexport const useAppApiStore = defineStore('app-api-apps', {\n state: () => ({\n apps: [],\n updateCount: loadState('settings', 'appstoreExAppUpdateCount', 0),\n loading: {},\n loadingList: false,\n statusUpdater: null,\n daemonAccessible: loadState('settings', 'defaultDaemonConfigAccessible', false),\n defaultDaemon: loadState('settings', 'defaultDaemonConfig', null),\n }),\n getters: {\n getLoading: (state) => (id) => state.loading[id] ?? false,\n getAllApps: (state) => state.apps,\n getUpdateCount: (state) => state.updateCount,\n getDaemonAccessible: (state) => state.daemonAccessible,\n getDefaultDaemon: (state) => state.defaultDaemon,\n getAppStatus: (state) => (appId) => state.apps.find((app) => app.id === appId)?.status || null,\n getStatusUpdater: (state) => state.statusUpdater,\n getInitializingOrDeployingApps: (state) => state.apps.filter((app) => app?.status?.action\n && (app?.status?.action === 'deploy' || app.status.action === 'init' || app.status.action === 'healthcheck')\n && app.status.type !== ''),\n },\n actions: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n appsApiFailure(error) {\n showError(t('settings', 'An error occurred during the request. Unable to proceed.') + '<br>' + error.error.response.data.data.message, { isHTML: true });\n logger.error(error);\n },\n setLoading(id, value) {\n Vue.set(this.loading, id, value);\n },\n setError(appId, error) {\n const appIds = Array.isArray(appId) ? appId : [appId];\n appIds.forEach((_id) => {\n const app = this.apps.find((app) => app.id === _id);\n if (app) {\n app.error = error;\n }\n });\n },\n enableApp(appId) {\n this.setLoading(appId, true);\n this.setLoading('install', true);\n return confirmPassword().then(() => {\n return axios.post(generateUrl(`/apps/app_api/apps/enable/${appId}`))\n .then((response) => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n if (!app.installed) {\n app.installed = true;\n app.needsDownload = false;\n app.daemon = this.defaultDaemon;\n app.status = {\n type: 'install',\n action: 'deploy',\n init: 0,\n deploy: 0,\n };\n }\n app.active = true;\n app.canUnInstall = false;\n app.removable = true;\n app.error = '';\n }\n this.updateAppsStatus();\n return axios.get(generateUrl('apps/files'))\n .then(() => {\n if (response.data.update_required) {\n showInfo(t('settings', 'The app has been enabled but needs to be updated.'), {\n onClick: () => window.location.reload(),\n close: false,\n });\n setTimeout(() => {\n location.reload();\n }, 5000);\n }\n })\n .catch(() => {\n this.setError(appId, t('settings', 'Error: This app cannot be enabled because it makes the server unstable'));\n });\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n this.setError(appId, error.response.data.data.message);\n this.appsApiFailure({ appId, error });\n });\n });\n },\n forceEnableApp(appId) {\n this.setLoading(appId, true);\n this.setLoading('install', true);\n return confirmPassword().then(() => {\n return api.post(generateUrl('/apps/app_api/apps/force'), { appId })\n .then(() => {\n location.reload();\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n this.setError(appId, error.response.data.data.message);\n this.appsApiFailure({ appId, error });\n });\n });\n },\n disableApp(appId) {\n this.setLoading(appId, true);\n return confirmPassword().then(() => {\n return api.get(generateUrl(`apps/app_api/apps/disable/${appId}`))\n .then(() => {\n this.setLoading(appId, false);\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n app.active = false;\n if (app.removable) {\n app.canUnInstall = true;\n }\n }\n return true;\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.appsApiFailure({ appId, error });\n });\n });\n },\n uninstallApp(appId, removeData) {\n this.setLoading(appId, true);\n return confirmPassword().then(() => {\n return api.get(generateUrl(`/apps/app_api/apps/uninstall/${appId}?removeData=${removeData}`))\n .then(() => {\n this.setLoading(appId, false);\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n app.active = false;\n app.needsDownload = true;\n app.installed = false;\n app.canUnInstall = false;\n app.canInstall = true;\n app.daemon = null;\n app.status = {};\n if (app.update !== null) {\n this.updateCount--;\n }\n app.update = undefined;\n }\n return true;\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.appsApiFailure({ appId, error });\n });\n });\n },\n updateApp(appId) {\n this.setLoading(appId, true);\n this.setLoading('install', true);\n return confirmPassword().then(() => {\n return api.get(generateUrl(`/apps/app_api/apps/update/${appId}`))\n .then(() => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n const version = app.update;\n app.update = undefined;\n app.version = version || app.version;\n app.status = {\n type: 'update',\n action: 'deploy',\n init: 0,\n deploy: 0,\n };\n app.error = '';\n }\n this.updateCount--;\n this.updateAppsStatus();\n return true;\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n this.appsApiFailure({ appId, error });\n });\n });\n },\n async fetchAllApps() {\n this.loadingList = true;\n try {\n const response = await api.get(generateUrl('/apps/app_api/apps/list'));\n this.apps = response.data.apps;\n this.loadingList = false;\n return true;\n }\n catch (error) {\n logger.error(error);\n showError(t('settings', 'An error occurred during the request. Unable to proceed.'));\n this.loadingList = false;\n }\n },\n async fetchAppStatus(appId) {\n return api.get(generateUrl(`/apps/app_api/apps/status/${appId}`))\n .then((response) => {\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n app.status = response.data;\n }\n const initializingOrDeployingApps = this.getInitializingOrDeployingApps;\n console.debug('initializingOrDeployingApps after setAppStatus', initializingOrDeployingApps);\n if (initializingOrDeployingApps.length === 0) {\n console.debug('clearing interval');\n clearInterval(this.statusUpdater);\n this.statusUpdater = null;\n }\n if (Object.hasOwn(response.data, 'error')\n && response.data.error !== ''\n && initializingOrDeployingApps.length === 1) {\n clearInterval(this.statusUpdater);\n this.statusUpdater = null;\n }\n })\n .catch((error) => {\n this.appsApiFailure({ appId, error });\n this.apps = this.apps.filter((app) => app.id !== appId);\n this.updateAppsStatus();\n });\n },\n updateAppsStatus() {\n clearInterval(this.statusUpdater);\n const initializingOrDeployingApps = this.getInitializingOrDeployingApps;\n if (initializingOrDeployingApps.length === 0) {\n return;\n }\n this.statusUpdater = setInterval(() => {\n const initializingOrDeployingApps = this.getInitializingOrDeployingApps;\n console.debug('initializingOrDeployingApps', initializingOrDeployingApps);\n initializingOrDeployingApps.forEach(app => {\n this.fetchAppStatus(app.id);\n });\n }, 2000);\n },\n },\n});\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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-319cf338]{display:flex;flex-wrap:wrap;align-content:flex-start}.apps-list--move[data-v-319cf338]{transition:transform 1s}.apps-list #app-list-update-all[data-v-319cf338]{margin-left:10px}.apps-list__toolbar[data-v-319cf338]{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-319cf338]{margin-bottom:100px;position:relative}.apps-list__list-container[data-v-319cf338]{width:100%}.apps-list__store-container[data-v-319cf338]{display:flex;flex-wrap:wrap}.apps-list__bundle-heading[data-v-319cf338]{display:flex;align-items:center;margin:20px 10px 20px 0}.apps-list__bundle-header[data-v-319cf338]{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-319cf338]{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-daemon-badge[data-v-4e5b1dd0]{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}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList/AppDaemonBadge.vue\"],\"names\":[],\"mappings\":\"AACA,mCACC,mCAAA,CACA,8BAAA,CACA,8CAAA,CACA,kCAAA,CAEA,YAAA,CACA,kBAAA,CACA,OAAA,CACA,eAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n.app-daemon-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\"],\"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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */.app-item[data-v-3d65c607]{position:relative}.app-item[data-v-3d65c607]:hover{background-color:var(--color-background-dark)}.app-item--list-view[data-v-3d65c607]{--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-3d65c607]{background-color:var(--color-background-dark)}.app-item--list-view>*[data-v-3d65c607]{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-3d65c607]{width:var(--default-clickable-area);height:auto;text-align:right}.app-item--list-view .app-image-icon svg[data-v-3d65c607],.app-item--list-view .app-image-icon .icon-settings-dark[data-v-3d65c607]{margin-top:5px;width:20px;height:20px;opacity:.5;background-size:cover;display:inline-block}.app-item--list-view .app-name[data-v-3d65c607]{padding:0 var(--app-item-padding)}.app-item--list-view .app-name--link[data-v-3d65c607]{height:var(--app-item-height);display:flex;align-items:center}.app-item--list-view .app-name--link[data-v-3d65c607]::after{content:\"\";position:absolute;left:0;right:0;height:var(--app-item-height)}.app-item--list-view .app-actions[data-v-3d65c607]{display:flex;gap:var(--app-item-padding);flex-wrap:wrap;justify-content:end}.app-item--list-view .app-actions .icon-loading-small[data-v-3d65c607]{display:inline-block;top:4px;margin-right:10px}@media only screen and (max-width: 900px){.app-item--list-view .app-version[data-v-3d65c607],.app-item--list-view .app-level[data-v-3d65c607]{display:none}}@media only screen and (max-width: 512px){.app-item--list-view .app-actions[data-v-3d65c607]{display:none}}.app-item--store-view[data-v-3d65c607]{padding:30px}.app-item--store-view .app-image-icon .icon-settings-dark[data-v-3d65c607]{width:100%;height:150px;background-size:45px;opacity:.5}.app-item--store-view .app-image-icon svg[data-v-3d65c607]{position:absolute;bottom:43px;width:64px;height:64px;opacity:.1}.app-item--store-view .app-name[data-v-3d65c607]{margin:5px 0}.app-item--store-view .app-name--link[data-v-3d65c607]::after{content:\"\";position:absolute;top:0;left:0;right:0;bottom:0}.app-item--store-view .app-actions[data-v-3d65c607]{margin:10px 0}@media only screen and (min-width: 1601px){.app-item--store-view[data-v-3d65c607]{width:25%}.app-item--store-view.app-item--with-sidebar[data-v-3d65c607]{width:33%}}@media only screen and (max-width: 1600px){.app-item--store-view[data-v-3d65c607]{width:25%}.app-item--store-view.app-item--with-sidebar[data-v-3d65c607]{width:33%}}@media only screen and (max-width: 1400px){.app-item--store-view[data-v-3d65c607]{width:33%}.app-item--store-view.app-item--with-sidebar[data-v-3d65c607]{width:50%}}@media only screen and (max-width: 900px){.app-item--store-view[data-v-3d65c607]{width:50%}.app-item--store-view.app-item--with-sidebar[data-v-3d65c607]{width:100%}}@media only screen and (max-width: 1024px){.app-item--store-view[data-v-3d65c607]{width:50%}}@media only screen and (max-width: 480px){.app-item--store-view[data-v-3d65c607]{width:100%}}.app-icon[data-v-3d65c607]{filter:var(--background-invert-if-bright)}.app-image[data-v-3d65c607]{position:relative;height:150px;opacity:1;overflow:hidden}.app-image img[data-v-3d65c607]{width:100%}.app-version[data-v-3d65c607]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/css/variables.scss\",\"webpack://./apps/settings/src/components/AppList/AppItem.vue\"],\"names\":[],\"mappings\":\"AAAA;;;EAAA,CCIA,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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n// SCSS darken/lighten function override\\n@function nc-darken($color, $value) {\\n\\t@return darken($color, $value);\\n}\\n\\n@function nc-lighten($color, $value) {\\n\\t@return lighten($color, $value);\\n}\\n\\n// SCSS variables\\n// DEPRECATED, please use CSS4 vars\\n$color-main-text: #222 !default; // Not #000 for better readability\\n$color-main-background: #fff !default;\\n$color-main-background-translucent: rgba($color-main-background, .97) !default;\\n\\n// used for different active/hover/focus/disabled states\\n$color-background-hover: nc-darken($color-main-background, 4%) !default;\\n$color-background-dark: nc-darken($color-main-background, 7%) !default;\\n$color-background-darker: nc-darken($color-main-background, 14%) !default;\\n\\n$color-placeholder-light: nc-darken($color-main-background, 10%) !default;\\n$color-placeholder-dark: nc-darken($color-main-background, 20%) !default;\\n\\n$color-primary: #0082c9 !default;\\n$color-primary-hover: mix($color-primary, $color-main-background, 80%) !default;\\n\\n$color-primary-light: mix($color-primary, $color-main-background, 10%) !default;\\n$color-primary-light-text: $color-primary !default;\\n$color-primary-light-hover: mix($color-primary-light, $color-main-text, 95%) !default;\\n\\n$color-primary-text: #ffffff !default;\\n// do not use nc-darken/lighten in case of overriding because\\n// primary-text is independent of color-main-text\\n$color-primary-element-text-dark: darken($color-primary-text, 7%) !default;\\n$color-primary-element: $color-primary !default;\\n$color-primary-element-hover: mix($color-primary-element, $color-main-background, 80%) !default;\\n$color-primary-element-light: lighten($color-primary-element, 15%) !default;\\n\\n$color-error: #e9322d;\\n$color-error-hover: mix($color-error, $color-main-background, 80%) !default;\\n$color-warning: #eca700;\\n$color-warning-hover: mix($color-warning, $color-main-background, 80%) !default;\\n$color-success: #46ba61;\\n$color-success-hover: mix($color-success, $color-main-background, 80%) !default;\\n// used for svg\\n$color-white: #fff;\\n$color-black: #000;\\n$color-yellow: #FC0;\\n\\n// rgb(118, 118, 118) / #767676\\n// min. color contrast for normal text on white background according to WCAG AA\\n// (Works as well: color: #000; opacity: 0.57;)\\n$color-text-maxcontrast: nc-lighten($color-main-text, 33%) !default;\\n$color-text-light: $color-main-text !default;\\n$color-text-lighter: $color-text-maxcontrast !default;\\n\\n$image-logo: url('../img/logo/logo.svg?v=1') !default;\\n$image-login-background: url('../img/background.png?v=2') !default;\\n$image-logoheader: url('../img/logo/logo.svg?v=1') !default;\\n$image-favicon: url('../img/logo/logo.svg?v=1') !default;\\n\\n$color-loading-light: #ccc !default;\\n$color-loading-dark: #444 !default;\\n\\n$color-box-shadow: transparentize(nc-darken($color-main-background, 70%), 0.5) !default;\\n\\n// light border like file table or app-content list\\n$color-border: nc-darken($color-main-background, 7%) !default;\\n// darker border like inputs or very visible elements\\n$color-border-dark: nc-darken($color-main-background, 14%) !default;\\n\\n$border-radius: 3px !default;\\n$border-radius-large: 10px !default;\\n// Pill-style button, value is large so big buttons also have correct roundness\\n$border-radius-pill: 100px !default;\\n\\n$font-face: system-ui, -apple-system, \\\"Segoe UI\\\", Roboto, Oxygen-Sans, Cantarell, Ubuntu, \\\"Helvetica Neue\\\", \\\"Noto Sans\\\", \\\"Liberation Sans\\\", Arial, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\", \\\"Noto Color Emoji\\\" !default;\\n$default-font-size: 15px;\\n\\n$default-line-height: 24px;\\n\\n$animation-quick: 100ms;\\n$animation-slow: 300ms;\\n\\n// various structure data\\n$header-height: 50px;\\n$navigation-width: 300px;\\n$sidebar-min-width: 300px;\\n$sidebar-max-width: 500px;\\n$list-min-width: 200px;\\n$list-max-width: 300px;\\n$header-menu-item-height: 44px;\\n$header-menu-profile-item-height: 66px;\\n\\n// mobile. Keep in sync with core/js/js.js\\n$breakpoint-mobile: 1024px;\\n\",\"\\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-5ee601b2]{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-5ee601b2]{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-bb597eea]{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, `.daemon[data-v-10be429c]{padding:20px}.daemon h4[data-v-10be429c]{font-weight:bold;margin:10px auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue\"],\"names\":[],\"mappings\":\"AACA,yBACE,YAAA,CAEA,4BACE,gBAAA,CACA,gBAAA\",\"sourcesContent\":[\"\\n.daemon {\\n padding: 20px;\\n\\n h4 {\\n font-weight: bold;\\n margin: 10px auto;\\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-description[data-v-cf0a1ae6]{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-12264396]{padding:20px}.app-details__actions-manage[data-v-12264396]{display:flex}.app-details__actions-manage input[data-v-12264396]{flex:0 1 auto;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-details__authors[data-v-12264396]{color:var(--color-text-maxcontrast)}.app-details__section[data-v-12264396]{margin-top:15px}.app-details__section h4[data-v-12264396]{font-size:16px;font-weight:bold;margin-block-end:5px}.app-details__interact[data-v-12264396]{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px}.app-details__documentation a[data-v-12264396]{text-decoration:underline}.app-details__documentation li[data-v-12264396]{padding-inline-start:20px}.app-details__documentation li[data-v-12264396]::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-12264396]{color:var(--color-error);border-color:var(--color-error);background:var(--color-main-background)}.force[data-v-12264396]:hover,.force[data-v-12264396]:active{color:var(--color-main-background);border-color:var(--color-error) !important;background:var(--color-error)}.missing-dependencies[data-v-12264396]{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-9c32407e]{border-bottom:1px solid var(--color-border);font-size:24px}.app-sidebar-tabs__release-text[data-v-9c32407e] h3{font-size:20px}.app-sidebar-tabs__release-text[data-v-9c32407e] 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-00c6423a] a{text-decoration:underline}.settings-markdown[data-v-00c6423a] a::after{content:\"↗\";padding-inline:calc(var(--default-grid-baseline)/2)}.settings-markdown[data-v-00c6423a] 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-00c6423a] p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown[data-v-00c6423a] li{position:relative}.settings-markdown[data-v-00c6423a] ul,.settings-markdown[data-v-00c6423a] ol{padding-left:10px;margin-left:10px}.settings-markdown[data-v-00c6423a] ul li{list-style-type:disc}.settings-markdown[data-v-00c6423a] ul>li>ul>li{list-style-type:circle}.settings-markdown[data-v-00c6423a] ul>li>ul>li ul li{list-style-type:square}.settings-markdown[data-v-00c6423a] 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://./Markdown.vue\",\"webpack://./apps/settings/src/components/Markdown.vue\"],\"names\":[],\"mappings\":\"AAAA,sCCEC,yBACC,CAAA,6CACA,WACC,CAAA,mDACA,CAAA,wCAIF,eACC,CAAA,eACA,CAAA,6CACA,CAAA,kCACA,CAAA,iBACA,CAAA,iBACA,CAAA,2CAGD,6CACC,CAAA,kCACA,CAAA,iBACA,CAAA,uCAGD,iBACC,CAAA,8EAGD,iBACC,CAAA,gBACA,CAAA,0CAGD,oBACC,CAAA,gDAGD,sBACC,CAAA,sDAGD,sBACC,CAAA,+CAGD,gBACC,CAAA,kDACA,CAAA,mCACA,CAAA,aACA,CAAA,cACA\",\"sourcesContent\":[\".settings-markdown::v-deep a{text-decoration:underline}.settings-markdown::v-deep a::after{content:\\\"↗\\\";padding-inline:calc(var(--default-grid-baseline)/2)}.settings-markdown::v-deep 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::v-deep p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown::v-deep li{position:relative}.settings-markdown::v-deep ul,.settings-markdown::v-deep ol{padding-left:10px;margin-left:10px}.settings-markdown::v-deep ul li{list-style-type:disc}.settings-markdown::v-deep ul>li>ul>li{list-style-type:circle}.settings-markdown::v-deep ul>li>ul>li ul li{list-style-type:square}.settings-markdown::v-deep blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}\",\"\\n.settings-markdown::v-deep {\\n\\ta {\\n\\t\\ttext-decoration: underline;\\n\\t\\t&::after {\\n\\t\\t\\tcontent: '↗';\\n\\t\\t\\tpadding-inline: calc(var(--default-grid-baseline) / 2);\\n\\t\\t}\\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\"],\"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-70317c96] .app-sidebar-header__figure{background-size:cover}.app-sidebar__fallback-icon[data-v-70317c96]{width:100%;height:100%}.app-sidebar__badges[data-v-70317c96]{display:flex;flex-direction:row;gap:12px}.app-sidebar__version[data-v-70317c96]{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-2193f4e0] {\n\tdisplay: inline-flex;\n\tcolor: var(--color-favorite, #a08b00);\n> *[data-v-2193f4e0] {\n\t\tvertical-align: text-bottom;\n}\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList/AppScore.vue\"],\"names\":[],\"mappings\":\";AA+DA;CACA,oBAAA;CACA,qCAAA;AAEA;EACA,2BAAA;AACA;AACA\",\"sourcesContent\":[\"<!--\\n - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\\n - SPDX-License-Identifier: AGPL-3.0-or-later\\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-6235de08] {\n\theight: 100%;\n}\n.app-settings-content__label[data-v-6235de08] {\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\":\";AA4EA;CACA,YAAA;AACA;AAEA;CACA,iDAAA;CACA,4FAAA;CACA,yCAAA;CACA,0CAAA;CACA,sBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\\n - SPDX-License-Identifier: AGPL-3.0-or-later\\n-->\\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, onBeforeUnmount, 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'\\nimport { useAppApiStore } from '../store/app-api-store.ts'\\n\\nconst route = useRoute()\\nconst store = useAppsStore()\\nconst appApiStore = useAppApiStore()\\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\\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\\n\\tif ((instance?.proxy as any).$store.getters.isAppApiEnabled) {\\n\\t\\tappApiStore.fetchAllApps()\\n\\t\\tappApiStore.updateAppsStatus()\\n\\t}\\n})\\nonBeforeUnmount(() => {\\n\\tclearInterval(appApiStore.getStatusUpdater)\\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-4b956a9f] {\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\":\";AA0IA,qCAAA;AACA;CACA,OAAA;CACA,aAAA;CACA,mBAAA;CACA,uBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\\n - SPDX-License-Identifier: AGPL-3.0-or-later\\n-->\\n<template>\\n\\t<!-- Categories & filters -->\\n\\t<NcAppNavigation :aria-label=\\\"t('settings', 'Apps')\\\">\\n\\t\\t<template #list>\\n\\t\\t\\t<NcAppNavigationItem v-if=\\\"appstoreEnabled\\\"\\n\\t\\t\\t\\tid=\\\"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=\\\"store.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>{{ store.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 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.app?.app_api && _vm.shouldDisplayDefaultIcon)?_c('div',{staticClass:\"icon-settings-dark\"}):(_vm.app.app_api && _vm.shouldDisplayDefaultIcon)?_c('NcIconSvgWrapper',{staticStyle:{\"min-width\":\"auto\",\"min-height\":\"auto\",\"height\":\"100%\"},attrs:{\"path\":_vm.mdiCogOutline,\"size\":_vm.listView ? 24 : 48}}):(_vm.listView && _vm.app.preview && !_vm.app.app_api)?_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()],1),_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 || _vm.isInitializing)?_c('div',{staticClass:\"icon icon-loading-small\"}):_vm._e(),_vm._v(\" \"),(_vm.app.update)?_c('NcButton',{attrs:{\"type\":\"primary\",\"disabled\":_vm.installing || _vm.isLoading || !_vm.defaultDeployDaemonAccessible || _vm.isManualInstall,\"title\":_vm.updateButtonText},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 || _vm.isInitializing || _vm.isDeploying},on:{\"click\":function($event){$event.stopPropagation();return _vm.disable(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.disableButtonText)+\"\\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 || !_vm.defaultDeployDaemonAccessible || _vm.isInitializing || _vm.isDeploying},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 || !_vm.defaultDeployDaemonAccessible},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 - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\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 - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\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=\"!app?.app_api && shouldDisplayDefaultIcon\" class=\"icon-settings-dark\" />\n\t\t\t<NcIconSvgWrapper v-else-if=\"app.app_api && shouldDisplayDefaultIcon\"\n\t\t\t\t:path=\"mdiCogOutline\"\n\t\t\t\t:size=\"listView ? 24 : 48\"\n\t\t\t\tstyle=\"min-width: auto; min-height: auto; height: 100%;\" />\n\n\t\t\t<svg v-else-if=\"listView && app.preview && !app.app_api\"\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 || isInitializing\" 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 || !defaultDeployDaemonAccessible || isManualInstall\"\n\t\t\t\t:title=\"updateButtonText\"\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 || isInitializing || isDeploying\"\n\t\t\t\t@click.stop=\"disable(app.id)\">\n\t\t\t\t{{ disableButtonText }}\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 || !defaultDeployDaemonAccessible || isInitializing || isDeploying\"\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 || !defaultDeployDaemonAccessible\"\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 { useAppsStore } from '../../store/apps-store.js'\n\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'\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js'\nimport { mdiCogOutline } from '@mdi/js'\nimport { useAppApiStore } from '../../store/app-api-store.ts'\n\nexport default {\n\tname: 'AppItem',\n\tcomponents: {\n\t\tAppLevelBadge,\n\t\tAppScore,\n\t\tNcButton,\n\t\tNcIconSvgWrapper,\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\tsetup() {\n\t\tconst store = useAppsStore()\n\t\tconst appApiStore = useAppApiStore()\n\n\t\treturn {\n\t\t\tstore,\n\t\t\tappApiStore,\n\t\t\tmdiCogOutline,\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\tshouldDisplayDefaultIcon() {\n\t\t\treturn (this.listView && !this.app.preview) || (!this.listView && !this.screenshotLoaded)\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=3d65c607&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=3d65c607&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=3d65c607&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=3d65c607&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 \"3d65c607\",\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=5ee601b2&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=5ee601b2&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=5ee601b2&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=5ee601b2&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 \"5ee601b2\",\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=2193f4e0&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=2193f4e0&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=2193f4e0&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=2193f4e0&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 \"2193f4e0\",\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\tpeek() {\n\t\tif (!this.#head) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.#head.value;\n\n\t\t// TODO: Node.js 18.\n\t\t// return this.#head?.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\tvalidateConcurrency(concurrency);\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst resumeNext = () => {\n\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\tqueue.dequeue()();\n\t\t\t// Since `pendingCount` has been decreased by one, increase `activeCount` by one.\n\t\t\tactiveCount++;\n\t\t}\n\t};\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tresumeNext();\n\t};\n\n\tconst run = async (function_, resolve, arguments_) => {\n\t\tconst result = (async () => function_(...arguments_))();\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 = (function_, resolve, arguments_) => {\n\t\t// Queue `internalResolve` instead of the `run` function\n\t\t// to preserve asynchronous context.\n\t\tnew Promise(internalResolve => {\n\t\t\tqueue.enqueue(internalResolve);\n\t\t}).then(\n\t\t\trun.bind(undefined, function_, resolve, arguments_),\n\t\t);\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// after the `internalResolve` 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) {\n\t\t\t\tresumeNext();\n\t\t\t}\n\t\t})();\n\t};\n\n\tconst generator = (function_, ...arguments_) => new Promise(resolve => {\n\t\tenqueue(function_, resolve, arguments_);\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\tconcurrency: {\n\t\t\tget: () => concurrency,\n\n\t\t\tset(newConcurrency) {\n\t\t\t\tvalidateConcurrency(newConcurrency);\n\t\t\t\tconcurrency = newConcurrency;\n\n\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\t// eslint-disable-next-line no-unmodified-loop-condition\n\t\t\t\t\twhile (activeCount < concurrency && queue.size > 0) {\n\t\t\t\t\t\tresumeNext();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n\nfunction validateConcurrency(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","<!--\n - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\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'\nimport { useAppApiStore } from '../store/app-api-store'\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\tsetup() {\n\t\tconst appApiStore = useAppApiStore()\n\t\treturn {\n\t\t\tappApiStore,\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\tif (!this.$store.getters['appApiApps/isAppApiEnabled']) {\n\t\t\t\treturn this.$store.getters.loading('list')\n\t\t\t}\n\t\t\treturn this.$store.getters.loading('list') || this.appApiStore.getLoading('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\t// Exclude ExApps from the list if AppAPI is disabled\n\t\t\tconst exApps = this.$store.getters.isAppApiEnabled ? this.appApiStore.getAllApps : []\n\t\t\tconst apps = [...this.$store.getters.getAllApps, ...exApps]\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(() => {\n\t\t\t\t\tthis.update(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=319cf338&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=319cf338&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=319cf338&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=319cf338&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 \"319cf338\",\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 * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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=bb597eea&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=bb597eea&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=bb597eea&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=bb597eea&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 \"bb597eea\",\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=6235de08&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=6235de08&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=6235de08&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=6235de08&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 \"6235de08\",\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 [(_setup.appstoreEnabled)?_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}],null,false,1397544286)}):_vm._e(),_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.store.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.store.updateCount))])]},proxy:true},{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.updates}})]},proxy:true}],null,false,3001044337)}):_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=4b956a9f&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=4b956a9f&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=4b956a9f&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=4b956a9f&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 \"4b956a9f\",\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.app.app_api && _setup.app.daemon)?_c(_setup.AppDaemonBadge,{attrs:{\"daemon\":_setup.app.daemon}}):_vm._e(),_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}}),_vm._v(\" \"),_c(_setup.AppDeployDaemonTab,{attrs:{\"app\":_setup.app}})],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\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, depth }) => {\n\t\t\t\tdepth = Math.min(6, depth + (this.minHeading - 1))\n\t\t\t\treturn `<h${depth}>${text}</h${depth}>`\n\t\t\t}\n\t\t\trenderer.image = ({ 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 = ({ text }) => {\n\t\t\t\treturn `<blockquote>${text}</blockquote>`\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.settings-markdown::v-deep {\n\ta {\n\t\ttext-decoration: underline;\n\t\t&::after {\n\t\t\tcontent: '↗';\n\t\t\tpadding-inline: calc(var(--default-grid-baseline) / 2);\n\t\t}\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</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=00c6423a&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=00c6423a&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=00c6423a&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=00c6423a&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 \"00c6423a\",\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=cf0a1ae6&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=cf0a1ae6&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=cf0a1ae6&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=cf0a1ae6&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 \"cf0a1ae6\",\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 || _vm.isManualInstall},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.removeData)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.disableButtonText,\"disabled\":_vm.installing || _vm.isLoading || _vm.isInitializing || _vm.isDeploying},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 || !_vm.defaultDeployDaemonAccessible || _vm.isInitializing || _vm.isDeploying},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(\" \"),(!_vm.defaultDeployDaemonAccessible)?_c('p',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Default Deploy daemon is not accessible'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.removeData,\"disabled\":_vm.installing || _vm.isLoading || !_vm.defaultDeployDaemonAccessible},on:{\"update:checked\":_vm.toggleRemoveData}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Delete data on remove'))+\"\\n\\t\\t\\t\")]):_vm._e()],1),_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 && !_vm.app.shipped)?_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 - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\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 || isManualInstall\"\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, removeData)\">\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=\"disableButtonText\"\n\t\t\t\t\t\t:disabled=\"installing || isLoading || isInitializing || isDeploying\"\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 || !defaultDeployDaemonAccessible || isInitializing || isDeploying\"\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\t<p v-if=\"!defaultDeployDaemonAccessible\" class=\"warning\">\n\t\t\t\t\t{{ t('settings', 'Default Deploy daemon is not accessible') }}\n\t\t\t\t</p>\n\t\t\t\t<NcCheckboxRadioSwitch v-if=\"app.canUnInstall\"\n\t\t\t\t\t:checked=\"removeData\"\n\t\t\t\t\t:disabled=\"installing || isLoading || !defaultDeployDaemonAccessible\"\n\t\t\t\t\t@update:checked=\"toggleRemoveData\">\n\t\t\t\t\t{{ t('settings', 'Delete data on remove') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\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 && !app.shipped\" 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'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\n\nimport AppManagement from '../../mixins/AppManagement.js'\nimport { mdiBug, mdiFeatureSearch, mdiStar, mdiTextBox, mdiTooltipQuestion } from '@mdi/js'\nimport { useAppsStore } from '../../store/apps-store'\nimport { useAppApiStore } from '../../store/app-api-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\tNcCheckboxRadioSwitch,\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\t\tconst appApiStore = useAppApiStore()\n\n\t\treturn {\n\t\t\tstore,\n\t\t\tappApiStore,\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\tremoveData: 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\twatch: {\n\t\t'app.id'() {\n\t\t\tthis.removeData = false\n\t\t},\n\t},\n\tmethods: {\n\t\ttoggleRemoveData() {\n\t\t\tthis.removeData = !this.removeData\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=12264396&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=12264396&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=12264396&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=12264396&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 \"12264396\",\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=9c32407e&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=9c32407e&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=9c32407e&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=9c32407e&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 \"9c32407e\",\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!./AppDeployDaemonTab.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!./AppDeployDaemonTab.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.app?.daemon)?_c(_setup.NcAppSidebarTab,{attrs:{\"id\":\"daemon\",\"name\":_vm.t('settings', 'Daemon'),\"order\":3},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiFileChart,\"size\":24}})]},proxy:true}],null,false,1746493066)},[_vm._v(\" \"),_c('div',{staticClass:\"daemon\"},[_c('h4',[_vm._v(_vm._s(_vm.t('settings', 'Deploy Daemon')))]),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(_vm._s(_vm.t('settings', 'Type')))]),_vm._v(\": \"+_vm._s(_vm.app?.daemon.accepts_deploy_id))]),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(_vm._s(_vm.t('settings', 'Name')))]),_vm._v(\": \"+_vm._s(_vm.app?.daemon.name))]),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(_vm._s(_vm.t('settings', 'Display Name')))]),_vm._v(\": \"+_vm._s(_vm.app?.daemon.display_name))]),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(_vm._s(_vm.t('settings', 'GPUs support')))]),_vm._v(\": \"+_vm._s(_setup.gpuSupport))]),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(_vm._s(_vm.t('settings', 'Compute device')))]),_vm._v(\": \"+_vm._s(_vm.app?.daemon?.deploy_config?.computeDevice?.label))])])]):_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!./AppDeployDaemonTab.vue?vue&type=style&index=0&id=10be429c&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!./AppDeployDaemonTab.vue?vue&type=style&index=0&id=10be429c&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDeployDaemonTab.vue?vue&type=template&id=10be429c&scoped=true\"\nimport script from \"./AppDeployDaemonTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppDeployDaemonTab.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppDeployDaemonTab.vue?vue&type=style&index=0&id=10be429c&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 \"10be429c\",\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 (_vm.daemon)?_c('span',{staticClass:\"app-daemon-badge\",attrs:{\"title\":_vm.daemon.name}},[_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiFileChart,\"size\":20,\"inline\":\"\"}}),_vm._v(\"\\n\\t\"+_vm._s(_vm.daemon.display_name)+\"\\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!./AppDaemonBadge.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!./AppDaemonBadge.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!./AppDaemonBadge.vue?vue&type=style&index=0&id=4e5b1dd0&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!./AppDaemonBadge.vue?vue&type=style&index=0&id=4e5b1dd0&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDaemonBadge.vue?vue&type=template&id=4e5b1dd0&scoped=true\"\nimport script from \"./AppDaemonBadge.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppDaemonBadge.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppDaemonBadge.vue?vue&type=style&index=0&id=4e5b1dd0&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 \"4e5b1dd0\",\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, mdiCogOutline } 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 let path;\n if (app.value?.app_api) {\n // Use different default icon for ExApps (AppAPI)\n path = mdiCogOutline;\n }\n else {\n path = [app.value?.category ?? []].flat()\n .map((name) => AppstoreCategoryIcons[name])\n .filter((icon) => !!icon)\n .at(0)\n ?? (!app.value?.app_api ? mdiCog : mdiCogOutline);\n }\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=70317c96&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=70317c96&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=70317c96&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=70317c96&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 \"70317c96\",\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","app_api","appApiStore","getLoading","$store","getters","loading","isLoading","isInitializing","status","action","isDeploying","isManualInstall","daemon","accepts_deploy_id","updateButtonText","version","update","enableButtonText","progress","deploy","init","needsDownload","disableButtonText","forceEnableButtonText","enableButtonTooltip","forceEnableButtonTooltip","base","defaultDeployDaemonAccessible","getDefaultDaemon","getDaemonAccessible","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","forceEnableApp","rebuildNavigation","catch","error","showError","response","enable","enableApp","disable","disableApp","remove","removeData","arguments","undefined","uninstallApp","install","updateApp","store","updateCount","Math","max","mdiStarCircleOutline","mdiAccount","mdiCheck","mdiClose","bundles","mdiArchive","mdiStarShooting","mdiStar","mdiDownload","auth","mdiKey","customization","mdiCog","dashboard","mdiViewColumn","files","mdiFolder","games","mdiControllerClassic","integration","mdiOpenInApp","monitoring","mdiMonitorEye","multimedia","mdiMultimedia","office","mdiFileDocumentEdit","organization","mdiOfficeBuilding","mdiMagnify","security","mdiSecurity","social","mdiAccountMultiple","tools","mdiTools","workflow","mdiClipboardFlow","useAppApiStore","defineStore","state","loadState","loadingList","statusUpdater","daemonAccessible","defaultDaemon","getAllApps","getUpdateCount","getAppStatus","find","getStatusUpdater","getInitializingOrDeployingApps","filter","type","actions","appsApiFailure","message","isHTML","logger","setLoading","value","Vue","setError","Array","isArray","forEach","_id","confirmPassword","post","generateUrl","active","canUnInstall","removable","updateAppsStatus","update_required","showInfo","onClick","location","reload","close","setTimeout","api","canInstall","fetchAllApps","fetchAppStatus","initializingOrDeployingApps","console","debug","clearInterval","hasOwn","setInterval","showApiError","useAppsStore","categories","gettingCategoriesPromise","loadCategories","force","category","icon","APPSTORE_CATEGORY_ICONS","$patch","loadApps","getCategoryById","categoryId","getAppById","_ref2","___CSS_LOADER_EXPORT___","push","module","filterId","filterUrl","random","toString","substring","components","AppLevelBadge","AppScore","NcButton","NcIconSvgWrapper","mixins","AppManagement","SvgFilterMixin","props","required","String","listView","Boolean","default","useBundleView","headers","inline","setup","mdiCogOutline","isSelected","scrolled","screenshotLoaded","hasRating","appstoreData","ratingNumOverall","dataItemTag","withSidebar","$route","params","shouldDisplayDefaultIcon","preview","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","staticStyle","_e","_v","appName","_s","summary","level","score","on","$event","stopPropagation","isCompatible","_defineComponent","__name","__props","isSupported","isFeatured","badgeIcon","badgeText","badgeTitle","__sfc","_setup","_setupProxy","defineComponent","Number","mdiStarHalfFull","mdiStarOutline","title","appScore","toFixed","fullStars","floor","emptyStars","min","hasHalfStar","_l","key","Node","constructor","_defineProperty","_head","WeakMap","_tail","_size","Queue","_classPrivateFieldInitSpec","clear","enqueue","_this$size","node","_classPrivateFieldGet","next","_classPrivateFieldSet","dequeue","_this$size3","current","peek","size","Symbol","iterator","pLimit","concurrency","validateConcurrency","queue","activeCount","resumeNext","run","async","function_","resolve","arguments_","result","generator","_len","_key","Promise","internalResolve","bind","defineProperties","pendingCount","clearQueue","set","newConcurrency","queueMicrotask","isInteger","POSITIVE_INFINITY","TypeError","AppItem","counter","hasPendingUpdate","showUpdateAll","useListView","exApps","isAppApiEnabled","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","Notification","show","updateAll","n","parseApiResponse","element","appElement","date","Date","parse","expiryDate","Error","filterElements","now","PostType","defineAsyncComponent","CarouselType","ShowcaseType","hasError","ref","elements","shuffleArray","array","i","j","onBeforeMount","info","parsedElements","shuffledElements","order","Infinity","getComponent","render","h","mdiEyeOff","NcEmptyContent","NcLoadingIcon","scopedSlots","_u","fn","proxy","entry","_b","route","useRoute","currentCategory","appStoreLabel","viewLabel","displayName","watchEffect","document","instance","getCurrentInstance","shouldRefetchCategories","onBeforeUnmount","NcAppContent","AppList","AppStoreDiscoverSection","domProps","appstoreEnabled","developerDocsUrl","categoriesLoading","isSubscribed","NcAppNavigation","NcAppNavigationItem","NcAppNavigationSpacer","NcCounterBubble","text","minHeading","renderMarkdown","renderer","marked","Renderer","link","prot","href","decodeURIComponent","unescape","replace","e","out","heading","depth","_ref3","blockquote","_ref4","dompurify","trim","gfm","highlight","tables","breaks","pedantic","sanitize","smartLists","smartypants","SAFE_FOR_JQUERY","ALLOWED_TAGS","mdiTextShort","NcAppSidebarTab","Markdown","description","NcDateTime","NcSelect","NcCheckboxRadioSwitch","mdiBug","mdiFeatureSearch","mdiTextBox","mdiTooltipQuestion","lastModified","at","appAuthors","warn","authorName","xmlNode","author","split","localeCompare","appstoreUrl","externalResources","resources","internal","label","website","documentation","user","admin","developer","appCategories","flat","rateAppUrl","getGroups","toggleRemoveData","directives","rawName","expression","_i","$$a","$$el","target","$$c","checked","$$v","$$i","slice","slot","missingMinOwnCloudVersion","missingMaxOwnCloudVersion","missingDependencies","dep","shipped","resource","bugs","discussion","hasChangelog","values","translations","some","changelog","createChangelogFromRelease","release","getLanguage","en","mdiClockFast","gpuSupport","deploy_config","computeDevice","mdiFileChart","display_name","router","useRouter","legacyStore","useStore","exApp","rating","ratingNumRecent","ratingRecent","ratingOverall","showSidebar","appIcon","categoryIcon","path","AppstoreCategoryIcons","fetch","blob","rawSvg","replaceAll","useAppIcon","licenseText","license","licence","toUpperCase","activeTab","hasScreenshot","loadScreenshot","onMounted","hideAppDetails","NcAppSidebar","AppDescriptionTab","AppDetailsTab","AppReleasesTab","AppDeployDaemonTab","AppDaemonBadge"],"sourceRoot":""}
|