0
0
Fork 0
mirror of https://github.com/nextcloud/server.git synced 2025-01-30 22:37:01 +00:00
nextcloud_server/dist/settings-apps-view-4529.js.map
nextcloud-command f8de5a73a7 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-01-25 18:44:50 +00:00

1 line
No EOL
316 KiB
Text

{"version":3,"file":"settings-apps-view-4529.js?v=b3d10d11579d9b714047","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=60659865&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=77df2b64&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=660767cf&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=35d8331c&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/components/AppStoreSidebar/AppDeployOptionsModal.vue?vue&type=style&index=0&id=430fa3a2&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?57b6","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?4b71","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?6f57","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/AppDeployOptionsModal.vue","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue?83c1","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue?0709","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue?4e6f","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?578a","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', 'Manually installed 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, deployOptions = []) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.enableApp(appId, deployOptions)\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\tasync remove(appId, removeData = false) {\n\t\t\ttry {\n\t\t\t\tif (this.app?.app_api) {\n\t\t\t\t\tawait this.appApiStore.uninstallApp(appId, removeData)\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('uninstallApp', { appId, removeData })\n\t\t\t\t}\n\t\t\t\tawait rebuildNavigation()\n\t\t\t} catch (error) {\n\t\t\t\tshowError(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, deployOptions = []) {\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}`), { deployOptions })\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 }).catch(() => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\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 }).catch(() => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\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 }).catch(() => {\n this.setLoading(appId, false);\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 }).catch(() => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\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-60659865]{display:flex;flex-wrap:wrap;align-content:flex-start}.apps-list--move[data-v-60659865]{transition:transform 1s}.apps-list #app-list-update-all[data-v-60659865]{margin-inline-start:10px}.apps-list__toolbar[data-v-60659865]{height:60px;padding:8px;padding-inline-start: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-60659865]{margin-bottom:100px;position:relative}.apps-list__list-container[data-v-60659865]{width:100%}.apps-list__store-container[data-v-60659865]{display:flex;flex-wrap:wrap}.apps-list__bundle-heading[data-v-60659865]{display:flex;align-items:center;margin-block:20px;margin-inline:0 10px}.apps-list__bundle-header[data-v-60659865]{margin-block:0;margin-inline:50px 10px;font-weight:bold;font-size:20px;line-height:30px;color:var(--color-text-light)}#apps-list-search .app-item h2[data-v-60659865]{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,wBAAA,CAGD,qCACC,WAjBe,CAkBf,WAnBgB,CAqBhB,yBApBe,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,iBAAA,CACA,oBAAA,CAGD,2CACC,cAAA,CACA,uBAAA,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-inline-start: 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-inline-start: $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-block: 20px;\\n\\t\\tmargin-inline: 0 10px;\\n\\t}\\n\\n\\t&__bundle-header {\\n\\t\\tmargin-block: 0;\\n\\t\\tmargin-inline: 50px 10px;\\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-77df2b64]{position:relative}.app-item[data-v-77df2b64]:hover{background-color:var(--color-background-dark)}.app-item--list-view[data-v-77df2b64]{--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-77df2b64]{background-color:var(--color-background-dark)}.app-item--list-view>*[data-v-77df2b64]{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-77df2b64]{width:var(--default-clickable-area);height:auto;text-align:end}.app-item--list-view .app-image-icon svg[data-v-77df2b64],.app-item--list-view .app-image-icon .icon-settings-dark[data-v-77df2b64]{margin-top:5px;width:20px;height:20px;opacity:.5;background-size:cover;display:inline-block}.app-item--list-view .app-name[data-v-77df2b64]{padding:0 var(--app-item-padding)}.app-item--list-view .app-name--link[data-v-77df2b64]{height:var(--app-item-height);display:flex;align-items:center}.app-item--list-view .app-name--link[data-v-77df2b64]::after{content:\"\";position:absolute;inset-inline:0;height:var(--app-item-height)}.app-item--list-view .app-actions[data-v-77df2b64]{display:flex;gap:var(--app-item-padding);flex-wrap:wrap;justify-content:end}.app-item--list-view .app-actions .icon-loading-small[data-v-77df2b64]{display:inline-block;top:4px;margin-inline-end:10px}@media only screen and (max-width: 900px){.app-item--list-view .app-version[data-v-77df2b64],.app-item--list-view .app-level[data-v-77df2b64]{display:none}}@media only screen and (max-width: 512px){.app-item--list-view .app-actions[data-v-77df2b64]{display:none}}.app-item--store-view[data-v-77df2b64]{padding:30px}.app-item--store-view .app-image-icon .icon-settings-dark[data-v-77df2b64]{width:100%;height:150px;background-size:45px;opacity:.5}.app-item--store-view .app-image-icon svg[data-v-77df2b64]{position:absolute;bottom:43px;width:64px;height:64px;opacity:.1}.app-item--store-view .app-name[data-v-77df2b64]{margin:5px 0}.app-item--store-view .app-name--link[data-v-77df2b64]::after{content:\"\";position:absolute;inset-block:0;inset-inline:0}.app-item--store-view .app-actions[data-v-77df2b64]{margin:10px 0}@media only screen and (min-width: 1601px){.app-item--store-view[data-v-77df2b64]{width:25%}.app-item--store-view.app-item--with-sidebar[data-v-77df2b64]{width:33%}}@media only screen and (max-width: 1600px){.app-item--store-view[data-v-77df2b64]{width:25%}.app-item--store-view.app-item--with-sidebar[data-v-77df2b64]{width:33%}}@media only screen and (max-width: 1400px){.app-item--store-view[data-v-77df2b64]{width:33%}.app-item--store-view.app-item--with-sidebar[data-v-77df2b64]{width:50%}}@media only screen and (max-width: 900px){.app-item--store-view[data-v-77df2b64]{width:50%}.app-item--store-view.app-item--with-sidebar[data-v-77df2b64]{width:100%}}@media only screen and (max-width: 1024px){.app-item--store-view[data-v-77df2b64]{width:50%}}@media only screen and (max-width: 480px){.app-item--store-view[data-v-77df2b64]{width:100%}}.app-icon[data-v-77df2b64]{filter:var(--background-invert-if-bright)}.app-image[data-v-77df2b64]{position:relative;height:150px;opacity:1;overflow:hidden}.app-image img[data-v-77df2b64]{width:100%}.app-version[data-v-77df2b64]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/css/variables.scss\",\"webpack://./apps/settings/src/components/AppList/AppItem.vue\"],\"names\":[],\"mappings\":\"AAEA;;;EAAA,CCEA,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,cAAA,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,cAAA,CACA,6BAAA,CAGD,mDACC,YAAA,CACA,2BAAA,CACA,cAAA,CACA,mBAAA,CAEA,uEACC,oBAAA,CACA,OAAA,CACA,sBAAA,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,aAAA,CACA,cAAA,CAGD,oDACC,aAAA,CAGD,2CAlCD,uCAmCE,SAAA,CAEA,8DACC,SAAA,CAAA,CAIF,2CA1CD,uCA2CE,SAAA,CAEA,8DACC,SAAA,CAAA,CAIF,2CAlDD,uCAmDE,SAAA,CAEA,8DACC,SAAA,CAAA,CAIF,0CA1DD,uCA2DE,SAAA,CAEA,8DACC,UAAA,CAAA,CAIF,2CAlED,uCAmEE,SAAA,CAAA,CAGD,0CAtED,uCAuEE,UAAA,CAAA,CAKH,2BACC,yCAAA,CAGD,4BACC,iBAAA,CACA,YAAA,CACA,SAAA,CACA,eAAA,CAEA,gCACC,UAAA,CAIF,8BACC,mCAAA\",\"sourcesContent\":[\"@use 'sass:color';\\n\\n/*!\\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 color.adjust($color, $lightness: - $value, $space: hsl);\\n}\\n\\n@function nc-lighten($color, $value) {\\n\\t@return color.adjust($color, $lightness: $value, $space: hsl);\\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: color.mix($color-primary, $color-main-background, 80%) !default;\\n\\n$color-primary-light: color.mix($color-primary, $color-main-background, 10%) !default;\\n$color-primary-light-text: $color-primary !default;\\n$color-primary-light-hover: color.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: color.adjust($color-primary-text, $lightness: -7%, $space: hsl) !default;\\n$color-primary-element: $color-primary !default;\\n$color-primary-element-hover: color.mix($color-primary-element, $color-main-background, 80%) !default;\\n$color-primary-element-light: color.adjust($color-primary-element, $lightness: 15%, $space: hsl) !default;\\n\\n$color-error: #e9322d;\\n$color-error-hover: color.mix($color-error, $color-main-background, 80%) !default;\\n$color-warning: #eca700;\\n$color-warning-hover: color.mix($color-warning, $color-main-background, 80%) !default;\\n$color-success: #46ba61;\\n$color-success-hover: color.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: color.adjust(nc-darken($color-main-background, 70%), $alpha: -0.5, $space: hsl) !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: end;\\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\\tinset-inline: 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-inline-end: 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\\tinset-block: 0;\\n\\t\\t\\tinset-inline: 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-660767cf]{padding:20px}.app-details__actions-manage[data-v-660767cf]{display:flex;align-items:center}.app-details__actions-manage input[data-v-660767cf]{flex:0 1 auto;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-details__authors[data-v-660767cf]{color:var(--color-text-maxcontrast)}.app-details__section[data-v-660767cf]{margin-top:15px}.app-details__section h4[data-v-660767cf]{font-size:16px;font-weight:bold;margin-block-end:5px}.app-details__interact[data-v-660767cf]{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px}.app-details__documentation a[data-v-660767cf]{text-decoration:underline}.app-details__documentation li[data-v-660767cf]{padding-inline-start:20px}.app-details__documentation li[data-v-660767cf]::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-660767cf]{color:var(--color-error);border-color:var(--color-error);background:var(--color-main-background)}.force[data-v-660767cf]:hover,.force[data-v-660767cf]:active{color:var(--color-main-background);border-color:var(--color-error) !important;background:var(--color-error)}.missing-dependencies[data-v-660767cf]{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,kBAAA,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,CAGD,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\\talign-items: center;\\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\\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-35d8331c] a{text-decoration:underline}.settings-markdown[data-v-35d8331c] a::after{content:\"↗\";padding-inline:calc(var(--default-grid-baseline)/2)}.settings-markdown[data-v-35d8331c] 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-35d8331c] p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown[data-v-35d8331c] li{position:relative}.settings-markdown[data-v-35d8331c] ul,.settings-markdown[data-v-35d8331c] ol{padding-inline-start:10px;margin-inline-start:10px}.settings-markdown[data-v-35d8331c] ul li{list-style-type:disc}.settings-markdown[data-v-35d8331c] ul>li>ul>li{list-style-type:circle}.settings-markdown[data-v-35d8331c] ul>li>ul>li ul li{list-style-type:square}.settings-markdown[data-v-35d8331c] blockquote{padding-inline-start:1em;border-inline-start:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-inline: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,yBACC,CAAA,wBACA,CAAA,0CAGD,oBACC,CAAA,gDAGD,sBACC,CAAA,sDAGD,sBACC,CAAA,+CAGD,wBACC,CAAA,0DACA,CAAA,mCACA,CAAA,eACA\",\"sourcesContent\":[\".settings-markdown :deep a{text-decoration:underline}.settings-markdown :deep a::after{content:\\\"↗\\\";padding-inline:calc(var(--default-grid-baseline)/2)}.settings-markdown :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 :deep p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown :deep li{position:relative}.settings-markdown :deep ul,.settings-markdown :deep ol{padding-inline-start:10px;margin-inline-start:10px}.settings-markdown :deep ul li{list-style-type:disc}.settings-markdown :deep ul>li>ul>li{list-style-type:circle}.settings-markdown :deep ul>li>ul>li ul li{list-style-type:square}.settings-markdown :deep blockquote{padding-inline-start:1em;border-inline-start:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-inline:0}\",\"\\n.settings-markdown :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-inline-start: 10px;\\n\\t\\tmargin-inline-start: 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-inline-start: 1em;\\n\\t\\tborder-inline-start: 4px solid var(--color-primary-element);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-inline: 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.deploy-option[data-v-430fa3a2] {\n\tmargin: calc(var(--default-grid-baseline) * 4) 0;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: flex-start;\n&__hint[data-v-430fa3a2] {\n\t\tmargin-top: 4px;\n\t\tfont-size: 0.8em;\n\t\tcolor: var(--color-text-maxcontrast);\n}\n}\n.envs[data-v-430fa3a2] {\n\twidth: 100%;\n\toverflow: auto;\n\theight: 100%;\n\tmax-height: 300px;\nli[data-v-430fa3a2] {\n\t\tmargin: 10px 0;\n}\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue\"],\"names\":[],\"mappings\":\";AAgSA;CACA,gDAAA;CACA,aAAA;CACA,sBAAA;CACA,uBAAA;AAEA;EACA,eAAA;EACA,gBAAA;EACA,oCAAA;AACA;AACA;AAEA;CACA,WAAA;CACA,cAAA;CACA,YAAA;CACA,iBAAA;AAEA;EACA,cAAA;AACA;AACA\",\"sourcesContent\":[\"<!--\\n - SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\\n - SPDX-License-Identifier: AGPL-3.0-or-later\\n-->\\n\\n<template>\\n\\t<NcDialog :open=\\\"show\\\"\\n\\t\\tsize=\\\"normal\\\"\\n\\t\\t:name=\\\"t('settings', 'Advanced deploy options')\\\"\\n\\t\\t@update:open=\\\"$emit('update:show', $event)\\\">\\n\\t\\t<div class=\\\"modal__content\\\">\\n\\t\\t\\t<p class=\\\"deploy-option__hint\\\">\\n\\t\\t\\t\\t{{ configuredDeployOptions === null ? t('settings', 'Edit ExApp deploy options before installation') : t('settings', 'Configured ExApp deploy options. Can be set only during installation') }}.\\n\\t\\t\\t\\t<a v-if=\\\"deployOptionsDocsUrl\\\" :href=\\\"deployOptionsDocsUrl\\\">\\n\\t\\t\\t\\t\\t{{ t('settings', 'Learn more') }}\\n\\t\\t\\t\\t</a>\\n\\t\\t\\t</p>\\n\\t\\t\\t<h3 v-if=\\\"environmentVariables.length > 0 || (configuredDeployOptions !== null && configuredDeployOptions.environment_variables.length > 0)\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Environment variables') }}\\n\\t\\t\\t</h3>\\n\\t\\t\\t<template v-if=\\\"configuredDeployOptions === null\\\">\\n\\t\\t\\t\\t<div v-for=\\\"envVar in environmentVariables\\\"\\n\\t\\t\\t\\t\\t:key=\\\"envVar.envName\\\"\\n\\t\\t\\t\\t\\tclass=\\\"deploy-option\\\">\\n\\t\\t\\t\\t\\t<NcTextField :label=\\\"envVar.displayName\\\" :value.sync=\\\"deployOptions.environment_variables[envVar.envName]\\\" />\\n\\t\\t\\t\\t\\t<p class=\\\"deploy-option__hint\\\">\\n\\t\\t\\t\\t\\t\\t{{ envVar.description }}\\n\\t\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</template>\\n\\t\\t\\t<fieldset v-else-if=\\\"Object.keys(configuredDeployOptions).length > 0\\\"\\n\\t\\t\\t\\tclass=\\\"envs\\\">\\n\\t\\t\\t\\t<legend class=\\\"deploy-option__hint\\\">\\n\\t\\t\\t\\t\\t{{ t('settings', 'ExApp container environment variables') }}\\n\\t\\t\\t\\t</legend>\\n\\t\\t\\t\\t<NcTextField v-for=\\\"(value, key) in configuredDeployOptions.environment_variables\\\"\\n\\t\\t\\t\\t\\t:key=\\\"key\\\"\\n\\t\\t\\t\\t\\t:label=\\\"value.displayName ?? key\\\"\\n\\t\\t\\t\\t\\t:helper-text=\\\"value.description\\\"\\n\\t\\t\\t\\t\\t:value=\\\"value.value\\\"\\n\\t\\t\\t\\t\\treadonly />\\n\\t\\t\\t</fieldset>\\n\\t\\t\\t<template v-else>\\n\\t\\t\\t\\t<p class=\\\"deploy-option__hint\\\">\\n\\t\\t\\t\\t\\t{{ t('settings', 'No environment variables defined') }}\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t</template>\\n\\n\\t\\t\\t<h3>{{ t('settings', 'Mounts') }}</h3>\\n\\t\\t\\t<template v-if=\\\"configuredDeployOptions === null\\\">\\n\\t\\t\\t\\t<p class=\\\"deploy-option__hint\\\">\\n\\t\\t\\t\\t\\t{{ t('settings', 'Define host folder mounts to bind to the ExApp container') }}\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t<NcNoteCard type=\\\"info\\\" :text=\\\"t('settings', 'Must exist on the Deploy daemon host prior to installing the ExApp')\\\" />\\n\\t\\t\\t\\t<div v-for=\\\"mount in deployOptions.mounts\\\"\\n\\t\\t\\t\\t\\t:key=\\\"mount.hostPath\\\"\\n\\t\\t\\t\\t\\tclass=\\\"deploy-option\\\"\\n\\t\\t\\t\\t\\tstyle=\\\"display: flex; align-items: center; justify-content: space-between; flex-direction: row;\\\">\\n\\t\\t\\t\\t\\t<NcTextField :label=\\\"t('settings', 'Host path')\\\" :value.sync=\\\"mount.hostPath\\\" />\\n\\t\\t\\t\\t\\t<NcTextField :label=\\\"t('settings', 'Container path')\\\" :value.sync=\\\"mount.containerPath\\\" />\\n\\t\\t\\t\\t\\t<NcCheckboxRadioSwitch :checked.sync=\\\"mount.readonly\\\">\\n\\t\\t\\t\\t\\t\\t{{ t('settings', 'Read-only') }}\\n\\t\\t\\t\\t\\t</NcCheckboxRadioSwitch>\\n\\t\\t\\t\\t\\t<NcButton :aria-label=\\\"t('settings', 'Remove mount')\\\"\\n\\t\\t\\t\\t\\t\\tstyle=\\\"margin-top: 6px;\\\"\\n\\t\\t\\t\\t\\t\\t@click=\\\"removeMount(mount)\\\">\\n\\t\\t\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t\\t\\t<NcIconSvgWrapper :path=\\\"mdiDelete\\\" />\\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\\t<div v-if=\\\"addingMount\\\" class=\\\"deploy-option\\\">\\n\\t\\t\\t\\t\\t<h4>\\n\\t\\t\\t\\t\\t\\t{{ t('settings', 'New mount') }}\\n\\t\\t\\t\\t\\t</h4>\\n\\t\\t\\t\\t\\t<div style=\\\"display: flex; align-items: center; justify-content: space-between; flex-direction: row;\\\">\\n\\t\\t\\t\\t\\t\\t<NcTextField ref=\\\"newMountHostPath\\\"\\n\\t\\t\\t\\t\\t\\t\\t:label=\\\"t('settings', 'Host path')\\\"\\n\\t\\t\\t\\t\\t\\t\\t:aria-label=\\\"t('settings', 'Enter path to host folder')\\\"\\n\\t\\t\\t\\t\\t\\t\\t:value.sync=\\\"newMountPoint.hostPath\\\" />\\n\\t\\t\\t\\t\\t\\t<NcTextField :label=\\\"t('settings', 'Container path')\\\"\\n\\t\\t\\t\\t\\t\\t\\t:aria-label=\\\"t('settings', 'Enter path to container folder')\\\"\\n\\t\\t\\t\\t\\t\\t\\t:value.sync=\\\"newMountPoint.containerPath\\\" />\\n\\t\\t\\t\\t\\t\\t<NcCheckboxRadioSwitch :checked.sync=\\\"newMountPoint.readonly\\\"\\n\\t\\t\\t\\t\\t\\t\\t:aria-label=\\\"t('settings', 'Toggle read-only mode')\\\">\\n\\t\\t\\t\\t\\t\\t\\t{{ t('settings', 'Read-only') }}\\n\\t\\t\\t\\t\\t\\t</NcCheckboxRadioSwitch>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t<div style=\\\"display: flex; align-items: center; margin-top: 4px;\\\">\\n\\t\\t\\t\\t\\t\\t<NcButton :aria-label=\\\"t('settings', 'Confirm adding new mount')\\\"\\n\\t\\t\\t\\t\\t\\t\\t@click=\\\"addMountPoint\\\">\\n\\t\\t\\t\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t\\t\\t\\t<NcIconSvgWrapper :path=\\\"mdiCheck\\\" />\\n\\t\\t\\t\\t\\t\\t\\t</template>\\n\\t\\t\\t\\t\\t\\t\\t{{ t('settings', 'Confirm') }}\\n\\t\\t\\t\\t\\t\\t</NcButton>\\n\\t\\t\\t\\t\\t\\t<NcButton :aria-label=\\\"t('settings', 'Cancel adding mount')\\\"\\n\\t\\t\\t\\t\\t\\t\\tstyle=\\\"margin-left: 4px;\\\"\\n\\t\\t\\t\\t\\t\\t\\t@click=\\\"cancelAddMountPoint\\\">\\n\\t\\t\\t\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t\\t\\t\\t<NcIconSvgWrapper :path=\\\"mdiClose\\\" />\\n\\t\\t\\t\\t\\t\\t\\t</template>\\n\\t\\t\\t\\t\\t\\t\\t{{ t('settings', 'Cancel') }}\\n\\t\\t\\t\\t\\t\\t</NcButton>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t<NcButton v-if=\\\"!addingMount\\\"\\n\\t\\t\\t\\t\\t:aria-label=\\\"t('settings', 'Add mount')\\\"\\n\\t\\t\\t\\t\\tstyle=\\\"margin-top: 5px;\\\"\\n\\t\\t\\t\\t\\t@click=\\\"startAddingMount\\\">\\n\\t\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t\\t<NcIconSvgWrapper :path=\\\"mdiPlus\\\" />\\n\\t\\t\\t\\t\\t</template>\\n\\t\\t\\t\\t\\t{{ t('settings', 'Add mount') }}\\n\\t\\t\\t\\t</NcButton>\\n\\t\\t\\t</template>\\n\\t\\t\\t<template v-else-if=\\\"configuredDeployOptions.mounts.length > 0\\\">\\n\\t\\t\\t\\t<p class=\\\"deploy-option__hint\\\">\\n\\t\\t\\t\\t\\t{{ t('settings', 'ExApp container mounts') }}\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t<div v-for=\\\"mount in configuredDeployOptions.mounts\\\"\\n\\t\\t\\t\\t\\t:key=\\\"mount.hostPath\\\"\\n\\t\\t\\t\\t\\tclass=\\\"deploy-option\\\"\\n\\t\\t\\t\\t\\tstyle=\\\"display: flex; align-items: center; justify-content: space-between; flex-direction: row;\\\">\\n\\t\\t\\t\\t\\t<NcTextField :label=\\\"t('settings', 'Host path')\\\" :value.sync=\\\"mount.hostPath\\\" readonly />\\n\\t\\t\\t\\t\\t<NcTextField :label=\\\"t('settings', 'Container path')\\\" :value.sync=\\\"mount.containerPath\\\" readonly />\\n\\t\\t\\t\\t\\t<NcCheckboxRadioSwitch :checked.sync=\\\"mount.readonly\\\" disabled>\\n\\t\\t\\t\\t\\t\\t{{ t('settings', 'Read-only') }}\\n\\t\\t\\t\\t\\t</NcCheckboxRadioSwitch>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</template>\\n\\t\\t\\t<p v-else class=\\\"deploy-option__hint\\\">\\n\\t\\t\\t\\t{{ t('settings', 'No mounts defined') }}\\n\\t\\t\\t</p>\\n\\t\\t</div>\\n\\n\\t\\t<template v-if=\\\"!app.active && (app.canInstall || app.isCompatible) && configuredDeployOptions === null\\\" #actions>\\n\\t\\t\\t<NcButton :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=\\\"submitDeployOptions\\\">\\n\\t\\t\\t\\t{{ enableButtonText }}\\n\\t\\t\\t</NcButton>\\n\\t\\t</template>\\n\\t</NcDialog>\\n</template>\\n\\n<script>\\nimport { computed, ref } from 'vue'\\n\\nimport axios from '@nextcloud/axios'\\nimport { generateUrl } from '@nextcloud/router'\\nimport { loadState } from '@nextcloud/initial-state'\\n\\nimport NcDialog from '@nextcloud/vue/dist/Components/NcDialog.js'\\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js'\\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\\n\\nimport { mdiPlus, mdiCheck, mdiClose, mdiDelete } from '@mdi/js'\\n\\nimport { useAppApiStore } from '../../store/app-api-store.ts'\\nimport { useAppsStore } from '../../store/apps-store.ts'\\n\\nimport AppManagement from '../../mixins/AppManagement.js'\\n\\nexport default {\\n\\tname: 'AppDeployOptionsModal',\\n\\tcomponents: {\\n\\t\\tNcDialog,\\n\\t\\tNcTextField,\\n\\t\\tNcButton,\\n\\t\\tNcNoteCard,\\n\\t\\tNcCheckboxRadioSwitch,\\n\\t\\tNcIconSvgWrapper,\\n\\t},\\n\\tmixins: [AppManagement],\\n\\tprops: {\\n\\t\\tapp: {\\n\\t\\t\\ttype: Object,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tshow: {\\n\\t\\t\\ttype: Boolean,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\tsetup(props) {\\n\\t\\t// for AppManagement mixin\\n\\t\\tconst store = useAppsStore()\\n\\t\\tconst appApiStore = useAppApiStore()\\n\\n\\t\\tconst environmentVariables = computed(() => {\\n\\t\\t\\tif (props.app?.releases?.length === 1) {\\n\\t\\t\\t\\treturn props.app?.releases[0]?.environmentVariables || []\\n\\t\\t\\t}\\n\\t\\t\\treturn []\\n\\t\\t})\\n\\n\\t\\tconst deployOptions = ref({\\n\\t\\t\\tenvironment_variables: environmentVariables.value.reduce((acc, envVar) => {\\n\\t\\t\\t\\tacc[envVar.envName] = envVar.default || ''\\n\\t\\t\\t\\treturn acc\\n\\t\\t\\t}, {}),\\n\\t\\t\\tmounts: [],\\n\\t\\t})\\n\\n\\t\\treturn {\\n\\t\\t\\tenvironmentVariables,\\n\\t\\t\\tdeployOptions,\\n\\t\\t\\tstore,\\n\\t\\t\\tappApiStore,\\n\\t\\t\\tmdiPlus,\\n\\t\\t\\tmdiCheck,\\n\\t\\t\\tmdiClose,\\n\\t\\t\\tmdiDelete,\\n\\t\\t}\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\taddingMount: false,\\n\\t\\t\\tnewMountPoint: {\\n\\t\\t\\t\\thostPath: '',\\n\\t\\t\\t\\tcontainerPath: '',\\n\\t\\t\\t\\treadonly: false,\\n\\t\\t\\t},\\n\\t\\t\\taddingPortBinding: false,\\n\\t\\t\\tconfiguredDeployOptions: null,\\n\\t\\t\\tdeployOptionsDocsUrl: loadState('settings', 'deployOptionsDocsUrl', null),\\n\\t\\t}\\n\\t},\\n\\twatch: {\\n\\t\\tshow(newShow) {\\n\\t\\t\\tif (newShow) {\\n\\t\\t\\t\\tthis.fetchExAppDeployOptions()\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tthis.configuredDeployOptions = null\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tstartAddingMount() {\\n\\t\\t\\tthis.addingMount = true\\n\\t\\t\\tthis.$nextTick(() => {\\n\\t\\t\\t\\tthis.$refs.newMountHostPath.focus()\\n\\t\\t\\t})\\n\\t\\t},\\n\\t\\taddMountPoint() {\\n\\t\\t\\tthis.deployOptions.mounts.push(this.newMountPoint)\\n\\t\\t\\tthis.newMountPoint = {\\n\\t\\t\\t\\thostPath: '',\\n\\t\\t\\t\\tcontainerPath: '',\\n\\t\\t\\t\\treadonly: false,\\n\\t\\t\\t}\\n\\t\\t\\tthis.addingMount = false\\n\\t\\t},\\n\\t\\tcancelAddMountPoint() {\\n\\t\\t\\tthis.newMountPoint = {\\n\\t\\t\\t\\thostPath: '',\\n\\t\\t\\t\\tcontainerPath: '',\\n\\t\\t\\t\\treadonly: false,\\n\\t\\t\\t}\\n\\t\\t\\tthis.addingMount = false\\n\\t\\t},\\n\\t\\tremoveMount(mountToRemove) {\\n\\t\\t\\tthis.deployOptions.mounts = this.deployOptions.mounts.filter(mount => mount !== mountToRemove)\\n\\t\\t},\\n\\t\\tasync fetchExAppDeployOptions() {\\n\\t\\t\\treturn axios.get(generateUrl(`/apps/app_api/apps/deploy-options/${this.app.id}`))\\n\\t\\t\\t\\t.then(response => {\\n\\t\\t\\t\\t\\tthis.configuredDeployOptions = response.data\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\t.catch(() => {\\n\\t\\t\\t\\t\\tthis.configuredDeployOptions = null\\n\\t\\t\\t\\t})\\n\\t\\t},\\n\\t\\tsubmitDeployOptions() {\\n\\t\\t\\tthis.enable(this.app.id, this.deployOptions)\\n\\t\\t\\tthis.$emit('update:show', false)\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n.deploy-option {\\n\\tmargin: calc(var(--default-grid-baseline) * 4) 0;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\talign-items: flex-start;\\n\\n\\t&__hint {\\n\\t\\tmargin-top: 4px;\\n\\t\\tfont-size: 0.8em;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\\n.envs {\\n\\twidth: 100%;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\tmax-height: 300px;\\n\\n\\tli {\\n\\t\\tmargin: 10px 0;\\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: end;\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\tinset-inline: 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-inline-end: 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\tinset-block: 0;\n\t\t\tinset-inline: 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=77df2b64&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=77df2b64&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=77df2b64&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=77df2b64&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 \"77df2b64\",\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;\noptions.insert = insertFn.bind(null, \"head\");\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;\noptions.insert = insertFn.bind(null, \"head\");\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 pLimit from 'p-limit'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport AppItem from './AppList/AppItem.vue'\nimport AppManagement from '../mixins/AppManagement'\nimport { useAppApiStore } from '../store/app-api-store'\nimport { useAppsStore } from '../store/apps-store'\n\nexport default {\n\tname: 'AppList',\n\tcomponents: {\n\t\tAppItem,\n\t\tNcButton,\n\t},\n\n\tmixins: [AppManagement],\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\tconst store = useAppsStore()\n\n\t\treturn {\n\t\t\tappApiStore,\n\t\t\tstore,\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\tconst exApps = this.$store.getters.isAppApiEnabled ? this.appApiStore.getAllApps : []\n\t\t\treturn [...this.$store.getters.getAllApps, ...exApps]\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\tapp.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-inline-start: 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-inline-start: $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-block: 20px;\n\t\tmargin-inline: 0 10px;\n\t}\n\n\t&__bundle-header {\n\t\tmargin-block: 0;\n\t\tmargin-inline: 50px 10px;\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=60659865&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=60659865&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=60659865&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=60659865&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 \"60659865\",\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;\noptions.insert = insertFn.bind(null, \"head\");\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;\noptions.insert = insertFn.bind(null, \"head\");\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;\noptions.insert = insertFn.bind(null, \"head\");\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<!-- eslint-disable-next-line vue/no-v-html This is rendered markdown so should be \"safe\" -->\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 :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-inline-start: 10px;\n\t\tmargin-inline-start: 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-inline-start: 1em;\n\t\tborder-inline-start: 4px solid var(--color-primary-element);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-inline: 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=35d8331c&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=35d8331c&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=35d8331c&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=35d8331c&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 \"35d8331c\",\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;\noptions.insert = insertFn.bind(null, \"head\");\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.app?.app_api && (_vm.app.canInstall || _vm.app.isCompatible))?_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Advanced deploy options'),\"type\":\"secondary\"},on:{\"click\":() => _vm.showDeployOptionsModal = true},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiToyBrickPlus}})]},proxy:true}],null,false,2793530332)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Deploy options'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1),_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)]),_vm._v(\" \"),(_vm.app?.app_api)?_c('AppDeployOptionsModal',{attrs:{\"show\":_vm.showDeployOptionsModal,\"app\":_vm.app},on:{\"update:show\":function($event){_vm.showDeployOptionsModal=$event}}}):_vm._e()],1)])\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<template>\n\t<NcDialog :open=\"show\"\n\t\tsize=\"normal\"\n\t\t:name=\"t('settings', 'Advanced deploy options')\"\n\t\t@update:open=\"$emit('update:show', $event)\">\n\t\t<div class=\"modal__content\">\n\t\t\t<p class=\"deploy-option__hint\">\n\t\t\t\t{{ configuredDeployOptions === null ? t('settings', 'Edit ExApp deploy options before installation') : t('settings', 'Configured ExApp deploy options. Can be set only during installation') }}.\n\t\t\t\t<a v-if=\"deployOptionsDocsUrl\" :href=\"deployOptionsDocsUrl\">\n\t\t\t\t\t{{ t('settings', 'Learn more') }}\n\t\t\t\t</a>\n\t\t\t</p>\n\t\t\t<h3 v-if=\"environmentVariables.length > 0 || (configuredDeployOptions !== null && configuredDeployOptions.environment_variables.length > 0)\">\n\t\t\t\t{{ t('settings', 'Environment variables') }}\n\t\t\t</h3>\n\t\t\t<template v-if=\"configuredDeployOptions === null\">\n\t\t\t\t<div v-for=\"envVar in environmentVariables\"\n\t\t\t\t\t:key=\"envVar.envName\"\n\t\t\t\t\tclass=\"deploy-option\">\n\t\t\t\t\t<NcTextField :label=\"envVar.displayName\" :value.sync=\"deployOptions.environment_variables[envVar.envName]\" />\n\t\t\t\t\t<p class=\"deploy-option__hint\">\n\t\t\t\t\t\t{{ envVar.description }}\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<fieldset v-else-if=\"Object.keys(configuredDeployOptions).length > 0\"\n\t\t\t\tclass=\"envs\">\n\t\t\t\t<legend class=\"deploy-option__hint\">\n\t\t\t\t\t{{ t('settings', 'ExApp container environment variables') }}\n\t\t\t\t</legend>\n\t\t\t\t<NcTextField v-for=\"(value, key) in configuredDeployOptions.environment_variables\"\n\t\t\t\t\t:key=\"key\"\n\t\t\t\t\t:label=\"value.displayName ?? key\"\n\t\t\t\t\t:helper-text=\"value.description\"\n\t\t\t\t\t:value=\"value.value\"\n\t\t\t\t\treadonly />\n\t\t\t</fieldset>\n\t\t\t<template v-else>\n\t\t\t\t<p class=\"deploy-option__hint\">\n\t\t\t\t\t{{ t('settings', 'No environment variables defined') }}\n\t\t\t\t</p>\n\t\t\t</template>\n\n\t\t\t<h3>{{ t('settings', 'Mounts') }}</h3>\n\t\t\t<template v-if=\"configuredDeployOptions === null\">\n\t\t\t\t<p class=\"deploy-option__hint\">\n\t\t\t\t\t{{ t('settings', 'Define host folder mounts to bind to the ExApp container') }}\n\t\t\t\t</p>\n\t\t\t\t<NcNoteCard type=\"info\" :text=\"t('settings', 'Must exist on the Deploy daemon host prior to installing the ExApp')\" />\n\t\t\t\t<div v-for=\"mount in deployOptions.mounts\"\n\t\t\t\t\t:key=\"mount.hostPath\"\n\t\t\t\t\tclass=\"deploy-option\"\n\t\t\t\t\tstyle=\"display: flex; align-items: center; justify-content: space-between; flex-direction: row;\">\n\t\t\t\t\t<NcTextField :label=\"t('settings', 'Host path')\" :value.sync=\"mount.hostPath\" />\n\t\t\t\t\t<NcTextField :label=\"t('settings', 'Container path')\" :value.sync=\"mount.containerPath\" />\n\t\t\t\t\t<NcCheckboxRadioSwitch :checked.sync=\"mount.readonly\">\n\t\t\t\t\t\t{{ t('settings', 'Read-only') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcButton :aria-label=\"t('settings', 'Remove mount')\"\n\t\t\t\t\t\tstyle=\"margin-top: 6px;\"\n\t\t\t\t\t\t@click=\"removeMount(mount)\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiDelete\" />\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\t<div v-if=\"addingMount\" class=\"deploy-option\">\n\t\t\t\t\t<h4>\n\t\t\t\t\t\t{{ t('settings', 'New mount') }}\n\t\t\t\t\t</h4>\n\t\t\t\t\t<div style=\"display: flex; align-items: center; justify-content: space-between; flex-direction: row;\">\n\t\t\t\t\t\t<NcTextField ref=\"newMountHostPath\"\n\t\t\t\t\t\t\t:label=\"t('settings', 'Host path')\"\n\t\t\t\t\t\t\t:aria-label=\"t('settings', 'Enter path to host folder')\"\n\t\t\t\t\t\t\t:value.sync=\"newMountPoint.hostPath\" />\n\t\t\t\t\t\t<NcTextField :label=\"t('settings', 'Container path')\"\n\t\t\t\t\t\t\t:aria-label=\"t('settings', 'Enter path to container folder')\"\n\t\t\t\t\t\t\t:value.sync=\"newMountPoint.containerPath\" />\n\t\t\t\t\t\t<NcCheckboxRadioSwitch :checked.sync=\"newMountPoint.readonly\"\n\t\t\t\t\t\t\t:aria-label=\"t('settings', 'Toggle read-only mode')\">\n\t\t\t\t\t\t\t{{ t('settings', 'Read-only') }}\n\t\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style=\"display: flex; align-items: center; margin-top: 4px;\">\n\t\t\t\t\t\t<NcButton :aria-label=\"t('settings', 'Confirm adding new mount')\"\n\t\t\t\t\t\t\t@click=\"addMountPoint\">\n\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiCheck\" />\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t{{ t('settings', 'Confirm') }}\n\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t\t<NcButton :aria-label=\"t('settings', 'Cancel adding mount')\"\n\t\t\t\t\t\t\tstyle=\"margin-left: 4px;\"\n\t\t\t\t\t\t\t@click=\"cancelAddMountPoint\">\n\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiClose\" />\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t{{ t('settings', 'Cancel') }}\n\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<NcButton v-if=\"!addingMount\"\n\t\t\t\t\t:aria-label=\"t('settings', 'Add mount')\"\n\t\t\t\t\tstyle=\"margin-top: 5px;\"\n\t\t\t\t\t@click=\"startAddingMount\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiPlus\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('settings', 'Add mount') }}\n\t\t\t\t</NcButton>\n\t\t\t</template>\n\t\t\t<template v-else-if=\"configuredDeployOptions.mounts.length > 0\">\n\t\t\t\t<p class=\"deploy-option__hint\">\n\t\t\t\t\t{{ t('settings', 'ExApp container mounts') }}\n\t\t\t\t</p>\n\t\t\t\t<div v-for=\"mount in configuredDeployOptions.mounts\"\n\t\t\t\t\t:key=\"mount.hostPath\"\n\t\t\t\t\tclass=\"deploy-option\"\n\t\t\t\t\tstyle=\"display: flex; align-items: center; justify-content: space-between; flex-direction: row;\">\n\t\t\t\t\t<NcTextField :label=\"t('settings', 'Host path')\" :value.sync=\"mount.hostPath\" readonly />\n\t\t\t\t\t<NcTextField :label=\"t('settings', 'Container path')\" :value.sync=\"mount.containerPath\" readonly />\n\t\t\t\t\t<NcCheckboxRadioSwitch :checked.sync=\"mount.readonly\" disabled>\n\t\t\t\t\t\t{{ t('settings', 'Read-only') }}\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<p v-else class=\"deploy-option__hint\">\n\t\t\t\t{{ t('settings', 'No mounts defined') }}\n\t\t\t</p>\n\t\t</div>\n\n\t\t<template v-if=\"!app.active && (app.canInstall || app.isCompatible) && configuredDeployOptions === null\" #actions>\n\t\t\t<NcButton :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=\"submitDeployOptions\">\n\t\t\t\t{{ enableButtonText }}\n\t\t\t</NcButton>\n\t\t</template>\n\t</NcDialog>\n</template>\n\n<script>\nimport { computed, ref } from 'vue'\n\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport NcDialog from '@nextcloud/vue/dist/Components/NcDialog.js'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\n\nimport { mdiPlus, mdiCheck, mdiClose, mdiDelete } from '@mdi/js'\n\nimport { useAppApiStore } from '../../store/app-api-store.ts'\nimport { useAppsStore } from '../../store/apps-store.ts'\n\nimport AppManagement from '../../mixins/AppManagement.js'\n\nexport default {\n\tname: 'AppDeployOptionsModal',\n\tcomponents: {\n\t\tNcDialog,\n\t\tNcTextField,\n\t\tNcButton,\n\t\tNcNoteCard,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcIconSvgWrapper,\n\t},\n\tmixins: [AppManagement],\n\tprops: {\n\t\tapp: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tshow: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tsetup(props) {\n\t\t// for AppManagement mixin\n\t\tconst store = useAppsStore()\n\t\tconst appApiStore = useAppApiStore()\n\n\t\tconst environmentVariables = computed(() => {\n\t\t\tif (props.app?.releases?.length === 1) {\n\t\t\t\treturn props.app?.releases[0]?.environmentVariables || []\n\t\t\t}\n\t\t\treturn []\n\t\t})\n\n\t\tconst deployOptions = ref({\n\t\t\tenvironment_variables: environmentVariables.value.reduce((acc, envVar) => {\n\t\t\t\tacc[envVar.envName] = envVar.default || ''\n\t\t\t\treturn acc\n\t\t\t}, {}),\n\t\t\tmounts: [],\n\t\t})\n\n\t\treturn {\n\t\t\tenvironmentVariables,\n\t\t\tdeployOptions,\n\t\t\tstore,\n\t\t\tappApiStore,\n\t\t\tmdiPlus,\n\t\t\tmdiCheck,\n\t\t\tmdiClose,\n\t\t\tmdiDelete,\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\taddingMount: false,\n\t\t\tnewMountPoint: {\n\t\t\t\thostPath: '',\n\t\t\t\tcontainerPath: '',\n\t\t\t\treadonly: false,\n\t\t\t},\n\t\t\taddingPortBinding: false,\n\t\t\tconfiguredDeployOptions: null,\n\t\t\tdeployOptionsDocsUrl: loadState('settings', 'deployOptionsDocsUrl', null),\n\t\t}\n\t},\n\twatch: {\n\t\tshow(newShow) {\n\t\t\tif (newShow) {\n\t\t\t\tthis.fetchExAppDeployOptions()\n\t\t\t} else {\n\t\t\t\tthis.configuredDeployOptions = null\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tstartAddingMount() {\n\t\t\tthis.addingMount = true\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.newMountHostPath.focus()\n\t\t\t})\n\t\t},\n\t\taddMountPoint() {\n\t\t\tthis.deployOptions.mounts.push(this.newMountPoint)\n\t\t\tthis.newMountPoint = {\n\t\t\t\thostPath: '',\n\t\t\t\tcontainerPath: '',\n\t\t\t\treadonly: false,\n\t\t\t}\n\t\t\tthis.addingMount = false\n\t\t},\n\t\tcancelAddMountPoint() {\n\t\t\tthis.newMountPoint = {\n\t\t\t\thostPath: '',\n\t\t\t\tcontainerPath: '',\n\t\t\t\treadonly: false,\n\t\t\t}\n\t\t\tthis.addingMount = false\n\t\t},\n\t\tremoveMount(mountToRemove) {\n\t\t\tthis.deployOptions.mounts = this.deployOptions.mounts.filter(mount => mount !== mountToRemove)\n\t\t},\n\t\tasync fetchExAppDeployOptions() {\n\t\t\treturn axios.get(generateUrl(`/apps/app_api/apps/deploy-options/${this.app.id}`))\n\t\t\t\t.then(response => {\n\t\t\t\t\tthis.configuredDeployOptions = response.data\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tthis.configuredDeployOptions = null\n\t\t\t\t})\n\t\t},\n\t\tsubmitDeployOptions() {\n\t\t\tthis.enable(this.app.id, this.deployOptions)\n\t\t\tthis.$emit('update:show', false)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n.deploy-option {\n\tmargin: calc(var(--default-grid-baseline) * 4) 0;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: flex-start;\n\n\t&__hint {\n\t\tmargin-top: 4px;\n\t\tfont-size: 0.8em;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n\n.envs {\n\twidth: 100%;\n\toverflow: auto;\n\theight: 100%;\n\tmax-height: 300px;\n\n\tli {\n\t\tmargin: 10px 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!./AppDeployOptionsModal.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!./AppDeployOptionsModal.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/vue-loader/lib/index.js??vue-loader-options!./AppDeployOptionsModal.vue?vue&type=style&index=0&id=430fa3a2&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./AppDeployOptionsModal.vue?vue&type=style&index=0&id=430fa3a2&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDeployOptionsModal.vue?vue&type=template&id=430fa3a2&scoped=true\"\nimport script from \"./AppDeployOptionsModal.vue?vue&type=script&lang=js\"\nexport * from \"./AppDeployOptionsModal.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppDeployOptionsModal.vue?vue&type=style&index=0&id=430fa3a2&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 \"430fa3a2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcDialog',{attrs:{\"open\":_vm.show,\"size\":\"normal\",\"name\":_vm.t('settings', 'Advanced deploy options')},on:{\"update:open\":function($event){return _vm.$emit('update:show', $event)}},scopedSlots:_vm._u([(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible) && _vm.configuredDeployOptions === null)?{key:\"actions\",fn:function(){return [_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.submitDeployOptions.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.enableButtonText)+\"\\n\\t\\t\")])]},proxy:true}:null],null,true)},[_c('div',{staticClass:\"modal__content\"},[_c('p',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.configuredDeployOptions === null ? _vm.t('settings', 'Edit ExApp deploy options before installation') : _vm.t('settings', 'Configured ExApp deploy options. Can be set only during installation'))+\".\\n\\t\\t\\t\"),(_vm.deployOptionsDocsUrl)?_c('a',{attrs:{\"href\":_vm.deployOptionsDocsUrl}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Learn more'))+\"\\n\\t\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.environmentVariables.length > 0 || (_vm.configuredDeployOptions !== null && _vm.configuredDeployOptions.environment_variables.length > 0))?_c('h3',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Environment variables'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.configuredDeployOptions === null)?_vm._l((_vm.environmentVariables),function(envVar){return _c('div',{key:envVar.envName,staticClass:\"deploy-option\"},[_c('NcTextField',{attrs:{\"label\":envVar.displayName,\"value\":_vm.deployOptions.environment_variables[envVar.envName]},on:{\"update:value\":function($event){return _vm.$set(_vm.deployOptions.environment_variables, envVar.envName, $event)}}}),_vm._v(\" \"),_c('p',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(envVar.description)+\"\\n\\t\\t\\t\\t\")])],1)}):(Object.keys(_vm.configuredDeployOptions).length > 0)?_c('fieldset',{staticClass:\"envs\"},[_c('legend',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'ExApp container environment variables'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.configuredDeployOptions.environment_variables),function(value,key){return _c('NcTextField',{key:key,attrs:{\"label\":value.displayName ?? key,\"helper-text\":value.description,\"value\":value.value,\"readonly\":\"\"}})})],2):[_c('p',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'No environment variables defined'))+\"\\n\\t\\t\\t\")])],_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.t('settings', 'Mounts')))]),_vm._v(\" \"),(_vm.configuredDeployOptions === null)?[_c('p',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Define host folder mounts to bind to the ExApp container'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcNoteCard',{attrs:{\"type\":\"info\",\"text\":_vm.t('settings', 'Must exist on the Deploy daemon host prior to installing the ExApp')}}),_vm._v(\" \"),_vm._l((_vm.deployOptions.mounts),function(mount){return _c('div',{key:mount.hostPath,staticClass:\"deploy-option\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"flex-direction\":\"row\"}},[_c('NcTextField',{attrs:{\"label\":_vm.t('settings', 'Host path'),\"value\":mount.hostPath},on:{\"update:value\":function($event){return _vm.$set(mount, \"hostPath\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{attrs:{\"label\":_vm.t('settings', 'Container path'),\"value\":mount.containerPath},on:{\"update:value\":function($event){return _vm.$set(mount, \"containerPath\", $event)}}}),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":mount.readonly},on:{\"update:checked\":function($event){return _vm.$set(mount, \"readonly\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Read-only'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{staticStyle:{\"margin-top\":\"6px\"},attrs:{\"aria-label\":_vm.t('settings', 'Remove mount')},on:{\"click\":function($event){return _vm.removeMount(mount)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiDelete}})]},proxy:true}],null,true)})],1)}),_vm._v(\" \"),(_vm.addingMount)?_c('div',{staticClass:\"deploy-option\"},[_c('h4',[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'New mount'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"flex-direction\":\"row\"}},[_c('NcTextField',{ref:\"newMountHostPath\",attrs:{\"label\":_vm.t('settings', 'Host path'),\"aria-label\":_vm.t('settings', 'Enter path to host folder'),\"value\":_vm.newMountPoint.hostPath},on:{\"update:value\":function($event){return _vm.$set(_vm.newMountPoint, \"hostPath\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{attrs:{\"label\":_vm.t('settings', 'Container path'),\"aria-label\":_vm.t('settings', 'Enter path to container folder'),\"value\":_vm.newMountPoint.containerPath},on:{\"update:value\":function($event){return _vm.$set(_vm.newMountPoint, \"containerPath\", $event)}}}),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.newMountPoint.readonly,\"aria-label\":_vm.t('settings', 'Toggle read-only mode')},on:{\"update:checked\":function($event){return _vm.$set(_vm.newMountPoint, \"readonly\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Read-only'))+\"\\n\\t\\t\\t\\t\\t\")])],1),_vm._v(\" \"),_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"margin-top\":\"4px\"}},[_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Confirm adding new mount')},on:{\"click\":_vm.addMountPoint},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiCheck}})]},proxy:true}],null,false,1018299955)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Confirm'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{staticStyle:{\"margin-left\":\"4px\"},attrs:{\"aria-label\":_vm.t('settings', 'Cancel adding mount')},on:{\"click\":_vm.cancelAddMountPoint},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiClose}})]},proxy:true}],null,false,2764082467)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Cancel'))+\"\\n\\t\\t\\t\\t\\t\")])],1)]):_vm._e(),_vm._v(\" \"),(!_vm.addingMount)?_c('NcButton',{staticStyle:{\"margin-top\":\"5px\"},attrs:{\"aria-label\":_vm.t('settings', 'Add mount')},on:{\"click\":_vm.startAddingMount},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiPlus}})]},proxy:true}],null,false,103601839)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add mount'))+\"\\n\\t\\t\\t\")]):_vm._e()]:(_vm.configuredDeployOptions.mounts.length > 0)?[_c('p',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'ExApp container mounts'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.configuredDeployOptions.mounts),function(mount){return _c('div',{key:mount.hostPath,staticClass:\"deploy-option\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"flex-direction\":\"row\"}},[_c('NcTextField',{attrs:{\"label\":_vm.t('settings', 'Host path'),\"value\":mount.hostPath,\"readonly\":\"\"},on:{\"update:value\":function($event){return _vm.$set(mount, \"hostPath\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{attrs:{\"label\":_vm.t('settings', 'Container path'),\"value\":mount.containerPath,\"readonly\":\"\"},on:{\"update:value\":function($event){return _vm.$set(mount, \"containerPath\", $event)}}}),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":mount.readonly,\"disabled\":\"\"},on:{\"update:checked\":function($event){return _vm.$set(mount, \"readonly\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Read-only'))+\"\\n\\t\\t\\t\\t\")])],1)})]:_c('p',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'No mounts defined'))+\"\\n\\t\\t\")])],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","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 - 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\t<NcButton v-if=\"app?.app_api && (app.canInstall || app.isCompatible)\"\n\t\t\t\t\t\t:aria-label=\"t('settings', 'Advanced deploy options')\"\n\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t@click=\"() => showDeployOptionsModal = true\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiToyBrickPlus\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('settings', 'Deploy options') }}\n\t\t\t\t\t</NcButton>\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\n\t\t\t<AppDeployOptionsModal v-if=\"app?.app_api\"\n\t\t\t\t:show.sync=\"showDeployOptionsModal\"\n\t\t\t\t:app=\"app\" />\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'\nimport AppDeployOptionsModal from './AppDeployOptionsModal.vue'\n\nimport AppManagement from '../../mixins/AppManagement.js'\nimport { mdiBug, mdiFeatureSearch, mdiStar, mdiTextBox, mdiTooltipQuestion, mdiToyBrickPlus } 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\tAppDeployOptionsModal,\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\tmdiToyBrickPlus,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t\tremoveData: false,\n\t\t\tshowDeployOptionsModal: 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\twatch: {\n\t\t'app.id'() {\n\t\t\tthis.removeData = false\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\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\talign-items: center;\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\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","\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=660767cf&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=660767cf&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=660767cf&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=660767cf&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 \"660767cf\",\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;\noptions.insert = insertFn.bind(null, \"head\");\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;\noptions.insert = insertFn.bind(null, \"head\");\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;\noptions.insert = insertFn.bind(null, \"head\");\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;\noptions.insert = insertFn.bind(null, \"head\");\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","deployOptions","arguments","undefined","enableApp","disable","disableApp","remove","removeData","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","NcDialog","NcTextField","NcNoteCard","NcCheckboxRadioSwitch","environmentVariables","environment_variables","reduce","acc","envVar","envName","mounts","mdiPlus","mdiDelete","addingMount","newMountPoint","hostPath","containerPath","readonly","addingPortBinding","configuredDeployOptions","deployOptionsDocsUrl","newShow","fetchExAppDeployOptions","startAddingMount","$nextTick","$refs","newMountHostPath","focus","addMountPoint","cancelAddMountPoint","removeMount","mountToRemove","mount","submitDeployOptions","$emit","apply","$set","keys","NcDateTime","NcSelect","AppDeployOptionsModal","mdiBug","mdiFeatureSearch","mdiTextBox","mdiTooltipQuestion","mdiToyBrickPlus","showDeployOptionsModal","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","click","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":""}