1
|
{"version":3,"file":"settings-apps-view-4529.js?v=fae0672d276b9d5b5753","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/store/apps-store.ts","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/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/AppStoreSidebar/AppDeployOptionsModal.vue?vue&type=style&index=0&id=430fa3a2&prod&scoped=true&lang=css","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/AppStoreSidebar/AppDeployDaemonTab.vue?vue&type=style&index=0&id=10be429c&prod&scoped=true&lang=scss","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/service/rebuild-navigation.js","webpack:///nextcloud/apps/settings/src/mixins/AppManagement.js","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","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/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/components/AppList/AppItem.vue?vue&type=style&index=0&id=77df2b64&prod&scoped=true&lang=scss","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/views/AppStore.vue?vue&type=style&index=0&id=6235de08&prod&scoped=true&lang=css","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=style&index=0&id=914914ce&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/store/app-api-store.ts","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/AppDetailsTab.vue?vue&type=style&index=0&id=660767cf&prod&scoped=true&lang=scss","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?0bc7","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/constants/AppstoreCategoryIcons.ts","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/constants/AppsConstants.js","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue?vue&type=style&index=0&id=2193f4e0&prod&scoped=true&lang=css"],"sourcesContent":["/**\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, `.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","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","// 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, `.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, `.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","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","/**\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","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","// 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, `.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, `/*!\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-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.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, `.apps-list[data-v-914914ce]{display:flex;flex-wrap:wrap;align-content:flex-start}.apps-list--move[data-v-914914ce]{transition:transform 1s}.apps-list #app-list-update-all[data-v-914914ce]{margin-inline-start:10px}.apps-list__toolbar[data-v-914914ce]{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-914914ce]{margin-bottom:100px;position:relative}.apps-list__list-container[data-v-914914ce]{width:100%}.apps-list__store-container[data-v-914914ce]{display:flex;flex-wrap:wrap}.apps-list__bundle-heading[data-v-914914ce]{display:flex;align-items:center;margin-block:20px;margin-inline:0 10px}.apps-list__bundle-header[data-v-914914ce]{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-914914ce]{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","/**\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","// 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, `.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","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\nexport function limitFunction(function_, option) {\n\tconst {concurrency} = option;\n\tconst limit = pLimit(concurrency);\n\n\treturn (...arguments_) => limit(() => function_(...arguments_));\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 natSortDiff = OC.Util.naturalSortCompare(a, b)\n\t\t\t\t\tif (natSortDiff === 0) {\n\t\t\t\t\t\tconst sortStringA = '' + (a.active ? 0 : 1) + (a.update ? 0 : 1)\n\t\t\t\t\t\tconst sortStringB = '' + (b.active ? 0 : 1) + (b.update ? 0 : 1)\n\t\t\t\t\t\treturn Number(sortStringA) - Number(sortStringB)\n\t\t\t\t\t}\n\t\t\t\t\treturn natSortDiff\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\tthis.update(app.id)\n\t\t\t\t}))\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$toolbar-padding: 8px;\n$toolbar-height: 44px + $toolbar-padding * 2;\n\n.apps-list {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-content: flex-start;\n\n\t// For transition group\n\t&--move {\n\t\ttransition: transform 1s;\n\t}\n\n\t#app-list-update-all {\n\t\tmargin-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=914914ce&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=914914ce&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=914914ce&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=914914ce&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 \"914914ce\",\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","/**\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","// 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","/**\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","// 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"],"names":["showApiError","showError","t","useAppsStore","defineStore","state","apps","categories","updateCount","loadState","loading","loadingList","gettingCategoriesPromise","actions","loadCategories","force","arguments","length","undefined","this","data","axios","get","generateUrl","category","icon","APPSTORE_CATEGORY_ICONS","id","$patch","error","logger","loadApps","getCategoryById","categoryId","find","_ref","getAppById","appId","_ref2","___CSS_LOADER_EXPORT___","push","module","_defineComponent","__name","props","level","setup","__props","isSupported","computed","isFeatured","badgeIcon","value","mdiStarShooting","mdiCheck","badgeText","badgeTitle","__sfc","NcIconSvgWrapper","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","_setup","_setupProxy","staticClass","class","attrs","_v","_s","_e","defineComponent","name","components","score","type","Number","required","mdiStar","mdiStarHalfFull","mdiStarOutline","title","appScore","toFixed","fullStars","Math","floor","emptyStars","min","hasHalfStar","_l","index","key","generateOcsUrl","then","ocs","meta","statuscode","emit","window","dispatchEvent","Event","appGroups","app","groups","map","group","installing","app_api","appApiStore","getLoading","$store","getters","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","methods","asyncFindGroup","query","dispatch","search","limit","offset","isLimitedToGroups","setGroupLimit","canLimitToGroups","types","includes","addGroupLimitation","groupArray","pop","concat","removeGroupLimitation","currentGroups","indexOf","splice","forceEnable","forceEnableApp","rebuildNavigation","catch","response","enable","deployOptions","enableApp","disable","disableApp","remove","removeData","uninstallApp","install","updateApp","store","max","appstoreEnabled","developerDocsUrl","categoriesLoading","isSubscribed","onBeforeMount","APPS_SECTION_ENUM","NcAppNavigation","NcAppNavigationItem","NcAppNavigationSpacer","NcCounterBubble","NcLoadingIcon","scopedSlots","_u","fn","params","discover","proxy","installed","enabled","disabled","updates","bundles","supported","featured","displayName","text","String","default","minHeading","renderMarkdown","renderer","marked","Renderer","link","prot","href","decodeURIComponent","unescape","replace","toLowerCase","e","out","heading","depth","image","_ref3","blockquote","_ref4","dompurify","sanitize","trim","gfm","highlight","tables","breaks","pedantic","smartLists","smartypants","SAFE_FOR_JQUERY","ALLOWED_TAGS","domProps","mdiTextShort","NcAppSidebarTab","Markdown","description","NcDialog","NcTextField","NcButton","NcNoteCard","NcCheckboxRadioSwitch","mixins","AppManagement","Object","show","Boolean","useAppApiStore","environmentVariables","releases","ref","environment_variables","reduce","acc","envVar","envName","mounts","mdiPlus","mdiClose","mdiDelete","addingMount","newMountPoint","hostPath","containerPath","readonly","addingPortBinding","configuredDeployOptions","deployOptionsDocsUrl","watch","newShow","fetchExAppDeployOptions","startAddingMount","$nextTick","$refs","newMountHostPath","focus","addMountPoint","cancelAddMountPoint","removeMount","mountToRemove","filter","mount","submitDeployOptions","$emit","on","$event","active","canInstall","isCompatible","stopPropagation","apply","$set","keys","staticStyle","NcDateTime","NcSelect","AppDeployOptionsModal","mdiBug","mdiFeatureSearch","mdiTextBox","mdiTooltipQuestion","mdiToyBrickPlus","showDeployOptionsModal","lastModified","appstoreData","Date","parse","sort","at","appAuthors","console","warn","authorName","xmlNode","Array","isArray","author","a","b","split","localeCompare","join","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","canUnInstall","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","route","useRoute","router","useRouter","legacyStore","useStore","isAppApiEnabled","exApp","getAllApps","hasRating","ratingNumOverall","rating","ratingNumRecent","ratingRecent","ratingOverall","showSidebar","appIcon","categoryIcon","path","mdiCogOutline","AppstoreCategoryIcons","mdiCog","watchEffect","async","preview","fetch","blob","rawSvg","replaceAll","useAppIcon","licenseText","license","licence","toString","toUpperCase","activeTab","screenshotLoaded","hasScreenshot","screenshot","loadScreenshot","Image","onload","src","onMounted","hideAppDetails","NcAppSidebar","AppScore","AppDescriptionTab","AppDetailsTab","AppReleasesTab","AppDeployDaemonTab","AppLevelBadge","AppDaemonBadge","statusUpdater","daemonAccessible","defaultDaemon","getUpdateCount","getAppStatus","getStatusUpdater","getInitializingOrDeployingApps","appsApiFailure","message","isHTML","setLoading","Vue","setError","forEach","_id","confirmPassword","post","removable","updateAppsStatus","update_required","showInfo","onClick","location","reload","close","setTimeout","api","fetchAllApps","fetchAppStatus","initializingOrDeployingApps","debug","clearInterval","hasOwn","setInterval","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","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","natSortDiff","OC","Util","naturalSortCompare","sortStringA","sortStringB","appstore","getAppBundles","bundle","bundleApps","bundleIds","searchApps","_app","useAppStoreView","useBundleView","allBundlesEnabled","bundleToggleText","beforeDestroy","unsubscribe","setSearch","resetSearch","subscribe","toggleBundle","disableBundle","enableBundle","Notification","updateAll","n","parseApiResponse","element","appElement","date","expiryDate","Error","filterElements","now","PostType","defineAsyncComponent","CarouselType","ShowcaseType","hasError","elements","shuffleArray","array","i","j","random","info","parsedElements","shuffledElements","order","Infinity","getComponent","render","h","mdiEyeOff","NcEmptyContent","entry","_b","tag","currentCategory","appStoreLabel","viewLabel","document","instance","getCurrentInstance","shouldRefetchCategories","onBeforeUnmount","NcAppContent","AppList","AppStoreDiscoverSection","freeze","mdiStarCircleOutline","mdiAccount","mdiArchive","mdiDownload","auth","mdiKey","customization","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","filterId","filterUrl","substring","SvgFilterMixin","listView","headers","inline","isSelected","scrolled","dataItemTag","withSidebar","$route","shouldDisplayDefaultIcon","watchers","prefix","content","getDataItemHeaders","columnName","appName","summary"],"sourceRoot":""}
|