1 line
94 KiB
Plaintext
1 line
94 KiB
Plaintext
{"version":3,"sources":["webpack:///./apps/settings/src/components/AppList/AppItem.vue?8853","webpack:///./apps/settings/src/components/AppDetails.vue?a3fd","webpack:///./apps/settings/src/components/AppList/AppItem.vue?fca7","webpack:///./apps/settings/src/components/AppList/AppItem.vue?ebe2","webpack:///./apps/settings/src/components/AppDetails.vue?d0f1","webpack:///./apps/settings/src/components/AppDetails.vue?455a","webpack:///./apps/settings/src/views/Apps.vue?b7c4","webpack:///./apps/settings/src/components/AppList/AppScore.vue?5862","webpack:///apps/settings/src/components/AppList/AppScore.vue","webpack:///./apps/settings/src/components/AppList/AppScore.vue","webpack:///./apps/settings/src/components/AppList/AppScore.vue?099a","webpack:///./apps/settings/src/components/AppManagement.vue?9197","webpack:///apps/settings/src/components/AppManagement.vue","webpack:///./apps/settings/src/components/AppManagement.vue","webpack:///./apps/settings/src/components/SvgFilterMixin.vue?0fa6","webpack:///apps/settings/src/components/SvgFilterMixin.vue","webpack:///./apps/settings/src/components/SvgFilterMixin.vue","webpack:///apps/settings/src/components/AppList/AppItem.vue","webpack:///./apps/settings/src/components/AppList/AppItem.vue?6d51","webpack:///./apps/settings/src/components/AppList/AppItem.vue","webpack:///./apps/settings/src/components/AppList/AppItem.vue?348e","webpack:///./apps/settings/src/components/PrefixMixin.vue?4fe7","webpack:///apps/settings/src/components/PrefixMixin.vue","webpack:///./apps/settings/src/components/PrefixMixin.vue","webpack:///./apps/settings/src/components/AppList.vue?ff65","webpack:///apps/settings/src/components/AppList.vue","webpack:///./apps/settings/src/components/AppList.vue","webpack:///./apps/settings/src/components/AppList.vue?07ac","webpack:///./apps/settings/src/components/AppDetails.vue?0b0a","webpack:///apps/settings/src/components/AppDetails.vue","webpack:///./apps/settings/src/components/AppDetails.vue","webpack:///./apps/settings/src/components/AppDetails.vue?3c66","webpack:///apps/settings/src/views/Apps.vue","webpack:///./apps/settings/src/views/Apps.vue?53fc","webpack:///./apps/settings/src/views/Apps.vue"],"names":["content","module","i","locals","exports","add","default","___CSS_LOADER_API_IMPORT___","push","_h","this","$createElement","_self","_c","staticClass","attrs","scoreImage","_vm","class","selected","isSelected","on","showAppDetails","listView","app","preview","screenshotLoaded","filterId","_v","filterUrl","_e","screenshot","_s","name","summary","version","appstoreData","releases","level","directives","rawName","value","t","expression","modifiers","hasRating","score","error","loading","id","update","installing","$event","stopPropagation","remove","disable","active","canInstall","isCompatible","forceEnableButtonText","forceEnable","enableButtonText","enable","installed","useBundleView","useListView","store","useAppStoreView","n","counter","updateAll","_l","key","category","bundle","bundleToggleText","toggleBundle","bundleApps","search","searchApps","length","apps","staticStyle","previewAsIcon","ratingOverall","a","index","author","licence","canLimitToGroups","prefix","domProps","Array","isArray","groupCheckedAppsData","_i","$$a","$$el","target","$$c","checked","$$v","$$i","concat","slice","setGroupLimit","isLimitedToGroups","groups","appGroups","addGroupLimitation","removeGroupLimitation","asyncFindGroup","slot","dep","internal","appstoreUrl","website","bugs","documentation","user","admin","developer","renderMarkdown","currentApp","loadingList","params","updateCount","settings","cat","ident","displayName","searchQuery","hideAppDetails"],"mappings":"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","file":"vue-7.js?v=b7341b34db849b2d2599","sourcesContent":["// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../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!./AppItem.vue?vue&type=style&index=0&id=67095980&scoped=true&lang=css&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"40ef6940\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../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!./AppDetails.vue?vue&type=style&index=0&id=5c5177a5&scoped=true&lang=css&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"057c3eaa\", content, true, {});","import mod from \"-!../../../../../node_modules/vue-style-loader/index.js!../../../../../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!./AppItem.vue?vue&type=style&index=0&id=67095980&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../../node_modules/vue-style-loader/index.js!../../../../../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!./AppItem.vue?vue&type=style&index=0&id=67095980&scoped=true&lang=css&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"\\n.force[data-v-67095980] {\\n\\tbackground: var(--color-main-background);\\n\\tborder-color: var(--color-error);\\n\\tcolor: var(--color-error);\\n}\\n.force[data-v-67095980]:hover,\\n.force[data-v-67095980]:active {\\n\\tbackground: var(--color-error);\\n\\tborder-color: var(--color-error) !important;\\n\\tcolor: var(--color-main-background);\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import mod from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../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!./AppDetails.vue?vue&type=style&index=0&id=5c5177a5&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../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!./AppDetails.vue?vue&type=style&index=0&id=5c5177a5&scoped=true&lang=css&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"\\n.force[data-v-5c5177a5] {\\n\\tbackground: var(--color-main-background);\\n\\tborder-color: var(--color-error);\\n\\tcolor: var(--color-error);\\n}\\n.force[data-v-5c5177a5]:hover,\\n.force[data-v-5c5177a5]:active {\\n\\tbackground: var(--color-error);\\n\\tborder-color: var(--color-error) !important;\\n\\tcolor: var(--color-main-background);\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Content',{class:{ 'with-app-sidebar': _vm.currentApp},attrs:{\"app-name\":\"settings\",\"content-class\":{ 'icon-loading': _vm.loadingList },\"navigation-class\":{ 'icon-loading': _vm.loading }}},[_c('AppNavigation',[_c('ul',{attrs:{\"id\":\"appscategories\"}},[_c('AppNavigationItem',{attrs:{\"id\":\"app-category-your-apps\",\"to\":{ name: 'apps' },\"exact\":true,\"icon\":\"icon-category-installed\",\"title\":_vm.t('settings', 'Your apps')}}),_vm._v(\" \"),_c('AppNavigationItem',{attrs:{\"id\":\"app-category-enabled\",\"to\":{ name: 'apps-category', params: { category: 'enabled' } },\"icon\":\"icon-category-enabled\",\"title\":_vm.t('settings', 'Active apps')}}),_vm._v(\" \"),_c('AppNavigationItem',{attrs:{\"id\":\"app-category-disabled\",\"to\":{ name: 'apps-category', params: { category: 'disabled' } },\"icon\":\"icon-category-disabled\",\"title\":_vm.t('settings', 'Disabled apps')}}),_vm._v(\" \"),(_vm.updateCount > 0)?_c('AppNavigationItem',{attrs:{\"id\":\"app-category-updates\",\"to\":{ name: 'apps-category', params: { category: 'updates' } },\"icon\":\"icon-download\",\"title\":_vm.t('settings', 'Updates')}},[_c('AppNavigationCounter',{attrs:{\"slot\":\"counter\"},slot:\"counter\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.updateCount)+\"\\n\\t\\t\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),_c('AppNavigationItem',{attrs:{\"id\":\"app-category-your-bundles\",\"to\":{ name: 'apps-category', params: { category: 'app-bundles' } },\"icon\":\"icon-category-app-bundles\",\"title\":_vm.t('settings', 'App bundles')}}),_vm._v(\" \"),_c('AppNavigationSpacer'),_vm._v(\" \"),(_vm.settings.appstoreEnabled)?[_c('AppNavigationItem',{attrs:{\"id\":\"app-category-featured\",\"to\":{ name: 'apps-category', params: { category: 'featured' } },\"icon\":\"icon-favorite\",\"title\":_vm.t('settings', 'Featured apps')}}),_vm._v(\" \"),_vm._l((_vm.categories),function(cat){return _c('AppNavigationItem',{key:'icon-category-' + cat.ident,attrs:{\"icon\":'icon-category-' + cat.ident,\"to\":{\n\t\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\t\tparams: { category: cat.ident },\n\t\t\t\t\t},\"title\":cat.displayName}})})]:_vm._e(),_vm._v(\" \"),_c('AppNavigationItem',{attrs:{\"id\":\"app-developer-docs\",\"href\":\"settings.developerDocumentation\",\"title\":_vm.t('settings', 'Developer documentation') + ' ↗'}})],2)]),_vm._v(\" \"),_c('AppContent',{staticClass:\"app-settings-content\",class:{ 'icon-loading': _vm.loadingList }},[_c('AppList',{attrs:{\"category\":_vm.category,\"app\":_vm.currentApp,\"search\":_vm.searchQuery}})],1),_vm._v(\" \"),(_vm.id && _vm.currentApp)?_c('AppSidebar',{on:{\"close\":_vm.hideAppDetails}},[_c('AppDetails',{attrs:{\"category\":_vm.category,\"app\":_vm.currentApp}})],1):_vm._e()],1)}\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!./AppScore.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!./AppScore.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<img :src=\"scoreImage\" class=\"app-score-image\">\n</template>\n<script>\nimport { imagePath } from '@nextcloud/router'\n\nexport default {\n\tname: 'AppScore',\n\tprops: ['score'],\n\tcomputed: {\n\t\tscoreImage() {\n\t\t\tconst score = Math.round(this.score * 10)\n\t\t\tconst imageName = 'rating/s' + score + '.svg'\n\t\t\treturn imagePath('core', imageName)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./AppScore.vue?vue&type=template&id=3b3081d1&\"\nimport script from \"./AppScore.vue?vue&type=script&lang=js&\"\nexport * from \"./AppScore.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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('img',{staticClass:\"app-score-image\",attrs:{\"src\":_vm.scoreImage}})}\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!./AppManagement.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!./AppManagement.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\nexport default {\n\tcomputed: {\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map(group => { return { id: group, name: group } })\n\t\t},\n\t\tloading() {\n\t\t\tconst self = this\n\t\t\treturn function(id) {\n\t\t\t\treturn self.$store.getters.loading(id)\n\t\t\t}\n\t\t},\n\t\tinstalling() {\n\t\t\treturn this.$store.getters.loading('install')\n\t\t},\n\t\tenableButtonText() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'Download and enable')\n\t\t\t}\n\t\t\treturn t('settings', 'Enable')\n\t\t},\n\t\tforceEnableButtonText() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'Enable untested app')\n\t\t\t}\n\t\t\treturn t('settings', 'Enable untested app')\n\t\t},\n\t\tenableButtonTooltip() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'The app will be downloaded from the app store')\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tforceEnableButtonTooltip() {\n\t\t\tconst base = t('settings', 'This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.')\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn base + ' ' + t('settings', 'The app will be downloaded from the app store')\n\t\t\t}\n\t\t\treturn base\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n\tmethods: {\n\t\tasyncFindGroup(query) {\n\t\t\treturn this.$store.dispatch('getGroups', { search: query, limit: 5, offset: 0 })\n\t\t},\n\t\tisLimitedToGroups(app) {\n\t\t\tif (this.app.groups.length || this.groupCheckedAppsData) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tsetGroupLimit: function() {\n\t\t\tif (!this.groupCheckedAppsData) {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: [] })\n\t\t\t}\n\t\t},\n\t\tcanLimitToGroups(app) {\n\t\t\tif ((app.types && app.types.includes('filesystem'))\n\t\t\t\t\t|| app.types.includes('prelogin')\n\t\t\t\t\t|| app.types.includes('authentication')\n\t\t\t\t\t|| app.types.includes('logging')\n\t\t\t\t\t|| app.types.includes('prevent_group_restriction')) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\taddGroupLimitation(group) {\n\t\t\tconst groups = this.app.groups.concat([]).concat([group.id])\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: groups })\n\t\t},\n\t\tremoveGroupLimitation(group) {\n\t\t\tconst currentGroups = this.app.groups.concat([])\n\t\t\tconst index = currentGroups.indexOf(group.id)\n\t\t\tif (index > -1) {\n\t\t\t\tcurrentGroups.splice(index, 1)\n\t\t\t}\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: currentGroups })\n\t\t},\n\t\tforceEnable(appId) {\n\t\t\tthis.$store.dispatch('forceEnableApp', { appId: appId, groups: [] })\n\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation() })\n\t\t\t\t.catch((error) => { OC.Notification.show(error) })\n\t\t},\n\t\tenable(appId) {\n\t\t\tthis.$store.dispatch('enableApp', { appId: appId, groups: [] })\n\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation() })\n\t\t\t\t.catch((error) => { OC.Notification.show(error) })\n\t\t},\n\t\tdisable(appId) {\n\t\t\tthis.$store.dispatch('disableApp', { appId: appId })\n\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation() })\n\t\t\t\t.catch((error) => { OC.Notification.show(error) })\n\t\t},\n\t\tremove(appId) {\n\t\t\tthis.$store.dispatch('uninstallApp', { appId: appId })\n\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation() })\n\t\t\t\t.catch((error) => { OC.Notification.show(error) })\n\t\t},\n\t\tinstall(appId) {\n\t\t\tthis.$store.dispatch('enableApp', { appId: appId })\n\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation() })\n\t\t\t\t.catch((error) => { OC.Notification.show(error) })\n\t\t},\n\t\tupdate(appId) {\n\t\t\tthis.$store.dispatch('updateApp', { appId: appId })\n\t\t\t\t.then((response) => { OC.Settings.Apps.rebuildNavigation() })\n\t\t\t\t.catch((error) => { OC.Notification.show(error) })\n\t\t},\n\t},\n}\n</script>\n","var render, staticRenderFns\nimport script from \"./AppManagement.vue?vue&type=script&lang=js&\"\nexport * from \"./AppManagement.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","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&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\nexport default {\n\tname: 'SvgFilterMixin',\n\tdata() {\n\t\treturn {\n\t\t\tfilterId: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\tfilterUrl() {\n\t\t\treturn `url(#${this.filterId})`\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.filterId = 'invertIconApps' + Math.floor((Math.random() * 100)) + new Date().getSeconds() + new Date().getMilliseconds()\n\t},\n}\n</script>\n","var render, staticRenderFns\nimport script from \"./SvgFilterMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./SvgFilterMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"section\" :class=\"{ selected: isSelected }\" @click=\"showAppDetails\">\n\t\t<div class=\"app-image app-image-icon\" @click=\"showAppDetails\">\n\t\t\t<div v-if=\"(listView && !app.preview) || (!listView && !screenshotLoaded)\" class=\"icon-settings-dark\" />\n\n\t\t\t<svg v-else-if=\"listView && app.preview\"\n\t\t\t\twidth=\"32\"\n\t\t\t\theight=\"32\"\n\t\t\t\tviewBox=\"0 0 32 32\">\n\t\t\t\t<defs><filter :id=\"filterId\"><feColorMatrix in=\"SourceGraphic\" type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\" /></filter></defs>\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:filter=\"filterUrl\"\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\" width=\"100%\">\n\t\t</div>\n\t\t<div class=\"app-name\" @click=\"showAppDetails\">\n\t\t\t{{ app.name }}\n\t\t</div>\n\t\t<div v-if=\"!listView\" class=\"app-summary\">\n\t\t\t{{ app.summary }}\n\t\t</div>\n\t\t<div v-if=\"listView\" class=\"app-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</div>\n\n\t\t<div class=\"app-level\">\n\t\t\t<span v-if=\"app.level === 300\"\n\t\t\t\tv-tooltip.auto=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\"\n\t\t\t\tclass=\"supported icon-checkmark-color\">\n\t\t\t\t{{ t('settings', 'Supported') }}</span>\n\t\t\t<span v-if=\"app.level === 200\"\n\t\t\t\tv-tooltip.auto=\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\"\n\t\t\t\tclass=\"official icon-checkmark\">\n\t\t\t\t{{ t('settings', 'Featured') }}</span>\n\t\t\t<AppScore v-if=\"hasRating && !listView\" :score=\"app.score\" />\n\t\t</div>\n\n\t\t<div class=\"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=\"loading(app.id)\" class=\"icon icon-loading-small\" />\n\t\t\t<input v-if=\"app.update\"\n\t\t\t\tclass=\"update primary\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"t('settings', 'Update to {update}', {update:app.update})\"\n\t\t\t\t:disabled=\"installing || loading(app.id)\"\n\t\t\t\t@click.stop=\"update(app.id)\">\n\t\t\t<input v-if=\"app.canUnInstall\"\n\t\t\t\tclass=\"uninstall\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"t('settings', 'Remove')\"\n\t\t\t\t:disabled=\"installing || loading(app.id)\"\n\t\t\t\t@click.stop=\"remove(app.id)\">\n\t\t\t<input v-if=\"app.active\"\n\t\t\t\tclass=\"enable\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"t('settings','Disable')\"\n\t\t\t\t:disabled=\"installing || loading(app.id)\"\n\t\t\t\t@click.stop=\"disable(app.id)\">\n\t\t\t<input v-if=\"!app.active && (app.canInstall || app.isCompatible)\"\n\t\t\t\tv-tooltip.auto=\"enableButtonTooltip\"\n\t\t\t\tclass=\"enable\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"enableButtonText\"\n\t\t\t\t:disabled=\"!app.canInstall || installing || loading(app.id)\"\n\t\t\t\t@click.stop=\"enable(app.id)\">\n\t\t\t<input v-else-if=\"!app.active\"\n\t\t\t\tv-tooltip.auto=\"forceEnableButtonTooltip\"\n\t\t\t\tclass=\"enable force\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t:value=\"forceEnableButtonText\"\n\t\t\t\t:disabled=\"installing || loading(app.id)\"\n\t\t\t\t@click.stop=\"forceEnable(app.id)\">\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport AppScore from './AppScore'\nimport AppManagement from '../AppManagement'\nimport SvgFilterMixin from '../SvgFilterMixin'\n\nexport default {\n\tname: 'AppItem',\n\tcomponents: {\n\t\tAppScore,\n\t},\n\tmixins: [AppManagement, SvgFilterMixin],\n\tprops: {\n\t\tapp: {},\n\t\tcategory: {},\n\t\tlistView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\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},\n\twatch: {\n\t\t'$route.params.id': function(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.screenshot) {\n\t\t\tconst image = new Image()\n\t\t\timage.onload = (e) => {\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\tasync showAppDetails(event) {\n\t\t\tif (event.currentTarget.tagName === 'INPUT' || event.currentTarget.tagName === 'A') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.$router.push({\n\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\tparams: { category: this.category, id: this.app.id },\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\t// we already view this app\n\t\t\t}\n\t\t},\n\t\tprefix(prefix, content) {\n\t\t\treturn prefix + '_' + content\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t.force {\n\t\tbackground: var(--color-main-background);\n\t\tborder-color: var(--color-error);\n\t\tcolor: var(--color-error);\n\t}\n\t.force:hover,\n\t.force:active {\n\t\tbackground: var(--color-error);\n\t\tborder-color: var(--color-error) !important;\n\t\tcolor: var(--color-main-background);\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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&\"","import { render, staticRenderFns } from \"./AppItem.vue?vue&type=template&id=67095980&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=67095980&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 \"67095980\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section\",class:{ selected: _vm.isSelected },on:{\"click\":_vm.showAppDetails}},[_c('div',{staticClass:\"app-image app-image-icon\",on:{\"click\":_vm.showAppDetails}},[((_vm.listView && !_vm.app.preview) || (!_vm.listView && !_vm.screenshotLoaded))?_c('div',{staticClass:\"icon-settings-dark\"}):(_vm.listView && _vm.app.preview)?_c('svg',{attrs:{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"0 0 32 32\"}},[_c('defs',[_c('filter',{attrs:{\"id\":_vm.filterId}},[_c('feColorMatrix',{attrs:{\"in\":\"SourceGraphic\",\"type\":\"matrix\",\"values\":\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"}})],1)]),_vm._v(\" \"),_c('image',{staticClass:\"app-icon\",attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"32\",\"height\":\"32\",\"preserveAspectRatio\":\"xMinYMin meet\",\"filter\":_vm.filterUrl,\"xlink:href\":_vm.app.preview}})]):_vm._e(),_vm._v(\" \"),(!_vm.listView && _vm.app.screenshot && _vm.screenshotLoaded)?_c('img',{attrs:{\"src\":_vm.app.screenshot,\"width\":\"100%\"}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"app-name\",on:{\"click\":_vm.showAppDetails}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.name)+\"\\n\\t\")]),_vm._v(\" \"),(!_vm.listView)?_c('div',{staticClass:\"app-summary\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.summary)+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.listView)?_c('div',{staticClass:\"app-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('div',{staticClass:\"app-level\"},[(_vm.app.level === 300)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')),expression:\"t('settings', 'This app is supported via your current Nextcloud subscription.')\",modifiers:{\"auto\":true}}],staticClass:\"supported icon-checkmark-color\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')),expression:\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\",modifiers:{\"auto\":true}}],staticClass:\"official icon-checkmark\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Featured')))]):_vm._e(),_vm._v(\" \"),(_vm.hasRating && !_vm.listView)?_c('AppScore',{attrs:{\"score\":_vm.app.score}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"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.loading(_vm.app.id))?_c('div',{staticClass:\"icon icon-loading-small\"}):_vm._e(),_vm._v(\" \"),(_vm.app.update)?_c('input',{staticClass:\"update primary\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Update to {update}', {update:_vm.app.update}),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();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.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.remove(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings','Disable'),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.disable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.enableButtonTooltip),expression:\"enableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.enable(_vm.app.id)}}}):(!_vm.app.active)?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.forceEnableButtonTooltip),expression:\"forceEnableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable force\",attrs:{\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.forceEnable(_vm.app.id)}}}):_vm._e()])])}\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!./PrefixMixin.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!./PrefixMixin.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\nexport default {\n\tname: 'PrefixMixin',\n\tmethods: {\n\t\tprefix(prefix, content) {\n\t\t\treturn prefix + '_' + content\n\t\t},\n\t},\n}\n</script>\n","var render, staticRenderFns\nimport script from \"./PrefixMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./PrefixMixin.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","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 - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div id=\"app-content-inner\">\n\t\t<div id=\"apps-list\" class=\"apps-list\" :class=\"{installed: (useBundleView || useListView), store: useAppStoreView}\">\n\t\t\t<template v-if=\"useListView\">\n\t\t\t\t<div v-if=\"showUpdateAll\" class=\"counter\">\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<button v-if=\"showUpdateAll\"\n\t\t\t\t\t\tid=\"app-list-update-all\"\n\t\t\t\t\t\tclass=\"primary\"\n\t\t\t\t\t\t@click=\"updateAll\">\n\t\t\t\t\t\t{{ t('settings', 'Update all') }}\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<transition-group name=\"app-list\" tag=\"div\" class=\"apps-list-container\">\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</transition-group>\n\t\t\t</template>\n\t\t\t<transition-group v-if=\"useBundleView\"\n\t\t\t\tname=\"app-list\"\n\t\t\t\ttag=\"div\"\n\t\t\t\tclass=\"apps-list-container\">\n\t\t\t\t<template v-for=\"bundle in bundles\">\n\t\t\t\t\t<div :key=\"bundle.id\" class=\"apps-header\">\n\t\t\t\t\t\t<div class=\"app-image\" />\n\t\t\t\t\t\t<h2>{{ bundle.name }} <input type=\"button\" :value=\"bundleToggleText(bundle.id)\" @click=\"toggleBundle(bundle.id)\"></h2>\n\t\t\t\t\t\t<div class=\"app-version\" />\n\t\t\t\t\t\t<div class=\"app-level\" />\n\t\t\t\t\t\t<div class=\"app-groups\" />\n\t\t\t\t\t\t<div class=\"actions\">\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\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:app=\"app\"\n\t\t\t\t\t\t:category=\"category\" />\n\t\t\t\t</template>\n\t\t\t</transition-group>\n\t\t\t<template v-if=\"useAppStoreView\">\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</template>\n\t\t</div>\n\n\t\t<div id=\"apps-list-search\" class=\"apps-list installed\">\n\t\t\t<div class=\"apps-list-container\">\n\t\t\t\t<template v-if=\"search !== '' && searchApps.length > 0\">\n\t\t\t\t\t<div class=\"section\">\n\t\t\t\t\t\t<div />\n\t\t\t\t\t\t<td colspan=\"5\">\n\t\t\t\t\t\t\t<h2>{{ t('settings', 'Results from other categories') }}</h2>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</div>\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\t\t:list-view=\"true\" />\n\t\t\t\t</template>\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\n\t\t<div id=\"searchresults\" />\n\t</div>\n</template>\n\n<script>\nimport AppItem from './AppList/AppItem'\nimport PrefixMixin from './PrefixMixin'\nimport pLimit from 'p-limit'\n\nexport default {\n\tname: 'AppList',\n\tcomponents: {\n\t\tAppItem,\n\t},\n\tmixins: [PrefixMixin],\n\tprops: ['category', 'app', 'search'],\n\tcomputed: {\n\t\tcounter() {\n\t\t\treturn this.apps.filter(app => app.update).length\n\t\t},\n\t\tloading() {\n\t\t\treturn this.$store.getters.loading('list')\n\t\t},\n\t\thasPendingUpdate() {\n\t\t\treturn this.apps.filter(app => app.update).length > 1\n\t\t},\n\t\tshowUpdateAll() {\n\t\t\treturn this.hasPendingUpdate && ['installed', 'updates'].includes(this.category)\n\t\t},\n\t\tapps() {\n\t\t\tconst apps = this.$store.getters.getAllApps\n\t\t\t\t.filter(app => app.name.toLowerCase().search(this.search.toLowerCase()) !== -1)\n\t\t\t\t.sort(function(a, b) {\n\t\t\t\t\tconst sortStringA = '' + (a.active ? 0 : 1) + (a.update ? 0 : 1) + a.name\n\t\t\t\t\tconst sortStringB = '' + (b.active ? 0 : 1) + (b.update ? 0 : 1) + b.name\n\t\t\t\t\treturn OC.Util.naturalSortCompare(sortStringA, sortStringB)\n\t\t\t\t})\n\n\t\t\tif (this.category === 'installed') {\n\t\t\t\treturn apps.filter(app => app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'enabled') {\n\t\t\t\treturn apps.filter(app => app.active && app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'disabled') {\n\t\t\t\treturn apps.filter(app => !app.active && app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'app-bundles') {\n\t\t\t\treturn apps.filter(app => app.bundles)\n\t\t\t}\n\t\t\tif (this.category === 'updates') {\n\t\t\t\treturn apps.filter(app => app.update)\n\t\t\t}\n\t\t\tif (this.category === 'featured') {\n\t\t\t\treturn apps.filter(app => app.level === 200)\n\t\t\t}\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.getServerData.bundles.filter(bundle => this.bundleApps(bundle.id).length > 0)\n\t\t},\n\t\tbundleApps() {\n\t\t\treturn function(bundle) {\n\t\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t\t.filter(app => {\n\t\t\t\t\t\treturn app.bundleIds !== undefined && app.bundleIds.includes(bundle)\n\t\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\tsearchApps() {\n\t\t\tif (this.search === '') {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t.filter(app => {\n\t\t\t\t\tif (app.name.toLowerCase().search(this.search.toLowerCase()) !== -1) {\n\t\t\t\t\t\treturn (!this.apps.find(_app => _app.id === app.id))\n\t\t\t\t\t}\n\t\t\t\t\treturn false\n\t\t\t\t})\n\t\t},\n\t\tuseAppStoreView() {\n\t\t\treturn !this.useListView && !this.useBundleView\n\t\t},\n\t\tuseListView() {\n\t\t\treturn (this.category === 'installed' || this.category === 'enabled' || this.category === 'disabled' || this.category === 'updates' || this.category === 'featured')\n\t\t},\n\t\tuseBundleView() {\n\t\t\treturn (this.category === 'app-bundles')\n\t\t},\n\t\tallBundlesEnabled() {\n\t\t\tconst self = this\n\t\t\treturn function(id) {\n\t\t\t\treturn self.bundleApps(id).filter(app => !app.active).length === 0\n\t\t\t}\n\t\t},\n\t\tbundleToggleText() {\n\t\t\tconst self = this\n\t\t\treturn function(id) {\n\t\t\t\tif (self.allBundlesEnabled(id)) {\n\t\t\t\t\treturn t('settings', 'Disable all')\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable all')\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\ttoggleBundle(id) {\n\t\t\tif (this.allBundlesEnabled(id)) {\n\t\t\t\treturn this.disableBundle(id)\n\t\t\t}\n\t\t\treturn this.enableBundle(id)\n\t\t},\n\t\tenableBundle(id) {\n\t\t\tconst apps = this.bundleApps(id).map(app => app.id)\n\t\t\tthis.$store.dispatch('enableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tconsole.error(error)\n\t\t\t\t\tOC.Notification.show(error)\n\t\t\t\t})\n\t\t},\n\t\tdisableBundle(id) {\n\t\t\tconst apps = this.bundleApps(id).map(app => app.id)\n\t\t\tthis.$store.dispatch('disableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tOC.Notification.show(error)\n\t\t\t\t})\n\t\t},\n\t\tupdateAll() {\n\t\t\tconst limit = pLimit(1)\n\t\t\tthis.apps\n\t\t\t\t.filter(app => app.update)\n\t\t\t\t.map(app => limit(() => this.$store.dispatch('updateApp', { appId: app.id }))\n\t\t\t\t)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./AppList.vue?vue&type=template&id=59d31110&\"\nimport script from \"./AppList.vue?vue&type=script&lang=js&\"\nexport * from \"./AppList.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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app-content-inner\"}},[_c('div',{staticClass:\"apps-list\",class:{installed: (_vm.useBundleView || _vm.useListView), store: _vm.useAppStoreView},attrs:{\"id\":\"apps-list\"}},[(_vm.useListView)?[(_vm.showUpdateAll)?_c('div',{staticClass:\"counter\"},[_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('button',{staticClass:\"primary\",attrs:{\"id\":\"app-list-update-all\"},on:{\"click\":_vm.updateAll}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Update all'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"apps-list-container\",attrs:{\"name\":\"app-list\",\"tag\":\"div\"}},_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category}})}),1)]:_vm._e(),_vm._v(\" \"),(_vm.useBundleView)?_c('transition-group',{staticClass:\"apps-list-container\",attrs:{\"name\":\"app-list\",\"tag\":\"div\"}},[_vm._l((_vm.bundles),function(bundle){return [_c('div',{key:bundle.id,staticClass:\"apps-header\"},[_c('div',{staticClass:\"app-image\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(bundle.name)+\" \"),_c('input',{attrs:{\"type\":\"button\",\"value\":_vm.bundleToggleText(bundle.id)},on:{\"click\":function($event){return _vm.toggleBundle(bundle.id)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"app-version\"}),_vm._v(\" \"),_c('div',{staticClass:\"app-level\"}),_vm._v(\" \"),_c('div',{staticClass:\"app-groups\"}),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\")])]),_vm._v(\" \"),_vm._l((_vm.bundleApps(bundle.id)),function(app){return _c('AppItem',{key:bundle.id + app.id,attrs:{\"app\":app,\"category\":_vm.category}})})]})],2):_vm._e(),_vm._v(\" \"),(_vm.useAppStoreView)?_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":false}})}):_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"apps-list installed\",attrs:{\"id\":\"apps-list-search\"}},[_c('div',{staticClass:\"apps-list-container\"},[(_vm.search !== '' && _vm.searchApps.length > 0)?[_c('div',{staticClass:\"section\"},[_c('div'),_vm._v(\" \"),_c('td',{attrs:{\"colspan\":\"5\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Results from other categories')))])])]),_vm._v(\" \"),_vm._l((_vm.searchApps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":true}})})]:_vm._e()],2)]),_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(),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"searchresults\"}})])}\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!./AppDetails.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!./AppDetails.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div id=\"app-details-view\" style=\"padding: 20px;\">\n\t\t<h2>\n\t\t\t<div v-if=\"!app.preview\" class=\"icon-settings-dark\" />\n\t\t\t<svg v-if=\"app.previewAsIcon && app.preview\"\n\t\t\t\twidth=\"32\"\n\t\t\t\theight=\"32\"\n\t\t\t\tviewBox=\"0 0 32 32\">\n\t\t\t\t<defs><filter :id=\"filterId\"><feColorMatrix in=\"SourceGraphic\" type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\" /></filter></defs>\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:filter=\"filterUrl\"\n\t\t\t\t\t:xlink:href=\"app.preview\"\n\t\t\t\t\tclass=\"app-icon\" />\n\t\t\t</svg>\n\t\t\t{{ app.name }}\n\t\t</h2>\n\t\t<img v-if=\"screenshotLoaded\" :src=\"app.screenshot\" width=\"100%\">\n\t\t<div v-if=\"app.level === 300 || app.level === 200 || hasRating\" class=\"app-level\">\n\t\t\t<span v-if=\"app.level === 300\"\n\t\t\t\tv-tooltip.auto=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\"\n\t\t\t\tclass=\"supported icon-checkmark-color\">\n\t\t\t\t{{ t('settings', 'Supported') }}</span>\n\t\t\t<span v-if=\"app.level === 200\"\n\t\t\t\tv-tooltip.auto=\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\"\n\t\t\t\tclass=\"official icon-checkmark\">\n\t\t\t\t{{ t('settings', 'Featured') }}</span>\n\t\t\t<AppScore v-if=\"hasRating\" :score=\"app.appstoreData.ratingOverall\" />\n\t\t</div>\n\n\t\t<div v-if=\"author\" class=\"app-author\">\n\t\t\t{{ t('settings', 'by') }}\n\t\t\t<span v-for=\"(a, index) in author\" :key=\"index\">\n\t\t\t\t<a v-if=\"a['@attributes'] && a['@attributes']['homepage']\" :href=\"a['@attributes']['homepage']\">{{ a['@value'] }}</a><span v-else-if=\"a['@value']\">{{ a['@value'] }}</span><span v-else>{{ a }}</span><span v-if=\"index+1 < author.length\">, </span>\n\t\t\t</span>\n\t\t</div>\n\t\t<div v-if=\"licence\" class=\"app-licence\">\n\t\t\t{{ licence }}\n\t\t</div>\n\t\t<div class=\"actions\">\n\t\t\t<div class=\"actions-buttons\">\n\t\t\t\t<input v-if=\"app.update\"\n\t\t\t\t\tclass=\"update primary\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings', 'Update to {version}', {version: app.update})\"\n\t\t\t\t\t:disabled=\"installing || loading(app.id)\"\n\t\t\t\t\t@click=\"update(app.id)\">\n\t\t\t\t<input v-if=\"app.canUnInstall\"\n\t\t\t\t\tclass=\"uninstall\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings', 'Remove')\"\n\t\t\t\t\t:disabled=\"installing || loading(app.id)\"\n\t\t\t\t\t@click=\"remove(app.id)\">\n\t\t\t\t<input v-if=\"app.active\"\n\t\t\t\t\tclass=\"enable\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings','Disable')\"\n\t\t\t\t\t:disabled=\"installing || loading(app.id)\"\n\t\t\t\t\t@click=\"disable(app.id)\">\n\t\t\t\t<input v-if=\"!app.active && (app.canInstall || app.isCompatible)\"\n\t\t\t\t\tv-tooltip.auto=\"enableButtonTooltip\"\n\t\t\t\t\tclass=\"enable primary\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"enableButtonText\"\n\t\t\t\t\t:disabled=\"!app.canInstall || installing || loading(app.id)\"\n\t\t\t\t\t@click=\"enable(app.id)\">\n\t\t\t\t<input v-else-if=\"!app.active\"\n\t\t\t\t\tv-tooltip.auto=\"forceEnableButtonTooltip\"\n\t\t\t\t\tclass=\"enable force\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"forceEnableButtonText\"\n\t\t\t\t\t:disabled=\"installing || loading(app.id)\"\n\t\t\t\t\t@click=\"forceEnable(app.id)\">\n\t\t\t</div>\n\t\t\t<div class=\"app-groups\">\n\t\t\t\t<div v-if=\"app.active && canLimitToGroups(app)\" class=\"groups-enable\">\n\t\t\t\t\t<input :id=\"prefix('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=\"prefix('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<Multiselect v-if=\"isLimitedToGroups(app)\"\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:options-limit=\"5\"\n\t\t\t\t\t\t:placeholder=\"t('settings', 'Limit app usage to groups')\"\n\t\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t\ttrack-by=\"id\"\n\t\t\t\t\t\tclass=\"multiselect-vue\"\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:tag-width=\"60\"\n\t\t\t\t\t\t@select=\"addGroupLimitation\"\n\t\t\t\t\t\t@remove=\"removeGroupLimitation\"\n\t\t\t\t\t\t@search-change=\"asyncFindGroup\">\n\t\t\t\t\t\t<span slot=\"noResult\">{{ t('settings', 'No results') }}</span>\n\t\t\t\t\t</Multiselect>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<ul class=\"app-dependencies\">\n\t\t\t<li v-if=\"app.missingMinOwnCloudVersion\">\n\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</li>\n\t\t\t<li v-if=\"app.missingMaxOwnCloudVersion\">\n\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</li>\n\t\t\t<li v-if=\"!app.canInstall\">\n\t\t\t\t{{ t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:') }}\n\t\t\t\t<ul class=\"missing-dependencies\">\n\t\t\t\t\t<li v-for=\"(dep, index) in app.missingDependencies\" :key=\"index\">\n\t\t\t\t\t\t{{ dep }}\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t</ul>\n\n\t\t<p class=\"documentation\">\n\t\t\t<a v-if=\"!app.internal\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"appstoreUrl\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'View in store') }} ↗</a>\n\n\t\t\t<a v-if=\"app.website\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.website\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Visit website') }} ↗</a>\n\t\t\t<a v-if=\"app.bugs\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.bugs\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Report a bug') }} ↗</a>\n\n\t\t\t<a v-if=\"app.documentation && app.documentation.user\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.user\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'User documentation') }} ↗</a>\n\t\t\t<a v-if=\"app.documentation && app.documentation.admin\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.admin\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Admin documentation') }} ↗</a>\n\t\t\t<a v-if=\"app.documentation && app.documentation.developer\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.developer\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Developer documentation') }} ↗</a>\n\t\t</p>\n\n\t\t<div class=\"app-description\" v-html=\"renderMarkdown\" />\n\t</div>\n</template>\n\n<script>\nimport { Multiselect } from '@nextcloud/vue'\nimport marked from 'marked'\nimport dompurify from 'dompurify'\n\nimport AppScore from './AppList/AppScore'\nimport AppManagement from './AppManagement'\nimport PrefixMixin from './PrefixMixin'\nimport SvgFilterMixin from './SvgFilterMixin'\n\nexport default {\n\tname: 'AppDetails',\n\tcomponents: {\n\t\tMultiselect,\n\t\tAppScore,\n\t},\n\tmixins: [AppManagement, PrefixMixin, SvgFilterMixin],\n\tprops: ['category', 'app'],\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t\tscreenshotLoaded: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tappstoreUrl() {\n\t\t\treturn `https://apps.nextcloud.com/apps/${this.app.id}`\n\t\t},\n\t\tlicence() {\n\t\t\tif (this.app.licence) {\n\t\t\t\treturn t('settings', '{license}-licensed', { license: ('' + this.app.licence).toUpperCase() })\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\n\t\t},\n\t\tauthor() {\n\t\t\tif (typeof this.app.author === 'string') {\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\t'@value': this.app.author,\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t}\n\t\t\tif (this.app.author['@value']) {\n\t\t\t\treturn [this.app.author]\n\t\t\t}\n\t\t\treturn this.app.author\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\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.image = function(href, title, text) {\n\t\t\t\tif (text) {\n\t\t\t\t\treturn text\n\t\t\t\t}\n\t\t\t\treturn title\n\t\t\t}\n\t\t\trenderer.blockquote = function(quote) {\n\t\t\t\treturn quote\n\t\t\t}\n\t\t\treturn dompurify.sanitize(\n\t\t\t\tmarked(this.app.description.trim(), {\n\t\t\t\t\trenderer: renderer,\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'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\tmounted() {\n\t\tif (this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t\tif (this.app.screenshot) {\n\t\t\tconst image = new Image()\n\t\t\timage.onload = (e) => {\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}\n</script>\n\n<style scoped>\n\t.force {\n\t\tbackground: var(--color-main-background);\n\t\tborder-color: var(--color-error);\n\t\tcolor: var(--color-error);\n\t}\n\t.force:hover,\n\t.force:active {\n\t\tbackground: var(--color-error);\n\t\tborder-color: var(--color-error) !important;\n\t\tcolor: var(--color-main-background);\n\t}\n</style>\n","import { render, staticRenderFns } from \"./AppDetails.vue?vue&type=template&id=5c5177a5&scoped=true&\"\nimport script from \"./AppDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./AppDetails.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppDetails.vue?vue&type=style&index=0&id=5c5177a5&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 \"5c5177a5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"padding\":\"20px\"},attrs:{\"id\":\"app-details-view\"}},[_c('h2',[(!_vm.app.preview)?_c('div',{staticClass:\"icon-settings-dark\"}):_vm._e(),_vm._v(\" \"),(_vm.app.previewAsIcon && _vm.app.preview)?_c('svg',{attrs:{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"0 0 32 32\"}},[_c('defs',[_c('filter',{attrs:{\"id\":_vm.filterId}},[_c('feColorMatrix',{attrs:{\"in\":\"SourceGraphic\",\"type\":\"matrix\",\"values\":\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"}})],1)]),_vm._v(\" \"),_c('image',{staticClass:\"app-icon\",attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"32\",\"height\":\"32\",\"preserveAspectRatio\":\"xMinYMin meet\",\"filter\":_vm.filterUrl,\"xlink:href\":_vm.app.preview}})]):_vm._e(),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.name)+\"\\n\\t\")]),_vm._v(\" \"),(_vm.screenshotLoaded)?_c('img',{attrs:{\"src\":_vm.app.screenshot,\"width\":\"100%\"}}):_vm._e(),_vm._v(\" \"),(_vm.app.level === 300 || _vm.app.level === 200 || _vm.hasRating)?_c('div',{staticClass:\"app-level\"},[(_vm.app.level === 300)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')),expression:\"t('settings', 'This app is supported via your current Nextcloud subscription.')\",modifiers:{\"auto\":true}}],staticClass:\"supported icon-checkmark-color\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')),expression:\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\",modifiers:{\"auto\":true}}],staticClass:\"official icon-checkmark\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Featured')))]):_vm._e(),_vm._v(\" \"),(_vm.hasRating)?_c('AppScore',{attrs:{\"score\":_vm.app.appstoreData.ratingOverall}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.author)?_c('div',{staticClass:\"app-author\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'by'))+\"\\n\\t\\t\"),_vm._l((_vm.author),function(a,index){return _c('span',{key:index},[(a['@attributes'] && a['@attributes']['homepage'])?_c('a',{attrs:{\"href\":a['@attributes']['homepage']}},[_vm._v(_vm._s(a['@value']))]):(a['@value'])?_c('span',[_vm._v(_vm._s(a['@value']))]):_c('span',[_vm._v(_vm._s(a))]),(index+1 < _vm.author.length)?_c('span',[_vm._v(\", \")]):_vm._e()])})],2):_vm._e(),_vm._v(\" \"),(_vm.licence)?_c('div',{staticClass:\"app-licence\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.licence)+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[_c('div',{staticClass:\"actions-buttons\"},[(_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.loading(_vm.app.id)},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.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.remove(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings','Disable'),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},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',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.enableButtonTooltip),expression:\"enableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable primary\",attrs:{\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.enable(_vm.app.id)}}}):(!_vm.app.active)?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.forceEnableButtonTooltip),expression:\"forceEnableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable force\",attrs:{\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.forceEnable(_vm.app.id)}}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"app-groups\"},[(_vm.app.active && _vm.canLimitToGroups(_vm.app))?_c('div',{staticClass:\"groups-enable\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.groupCheckedAppsData),expression:\"groupCheckedAppsData\"}],staticClass:\"groups-enable__checkbox checkbox\",attrs:{\"id\":_vm.prefix('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\":_vm.prefix('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(\" \"),(_vm.isLimitedToGroups(_vm.app))?_c('Multiselect',{staticClass:\"multiselect-vue\",attrs:{\"options\":_vm.groups,\"value\":_vm.appGroups,\"options-limit\":5,\"placeholder\":_vm.t('settings', 'Limit app usage to groups'),\"label\":\"name\",\"track-by\":\"id\",\"multiple\":true,\"close-on-select\":false,\"tag-width\":60},on:{\"select\":_vm.addGroupLimitation,\"remove\":_vm.removeGroupLimitation,\"search-change\":_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('ul',{staticClass:\"app-dependencies\"},[(_vm.app.missingMinOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\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\")]):_vm._e(),_vm._v(\" \"),(_vm.app.missingMaxOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\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\")]):_vm._e(),_vm._v(\" \"),(!_vm.app.canInstall)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:'))+\"\\n\\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\"+_vm._s(dep)+\"\\n\\t\\t\\t\\t\")])}),0)]):_vm._e()]),_vm._v(\" \"),_c('p',{staticClass:\"documentation\"},[(!_vm.app.internal)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.appstoreUrl,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'View in store'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.website)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.website,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Visit website'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.bugs)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.bugs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Report a bug'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.user)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.user,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'User documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.admin)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.admin,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Admin documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.developer)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.developer,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Developer documentation'))+\" ↗\")]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"app-description\",domProps:{\"innerHTML\":_vm._s(_vm.renderMarkdown)}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Content app-name=\"settings\"\n\t\t:class=\"{ 'with-app-sidebar': currentApp}\"\n\t\t:content-class=\"{ 'icon-loading': loadingList }\"\n\t\t:navigation-class=\"{ 'icon-loading': loading }\">\n\t\t<AppNavigation>\n\t\t\t<ul id=\"appscategories\">\n\t\t\t\t<AppNavigationItem\n\t\t\t\t\tid=\"app-category-your-apps\"\n\t\t\t\t\t:to=\"{ name: 'apps' }\"\n\t\t\t\t\t:exact=\"true\"\n\t\t\t\t\ticon=\"icon-category-installed\"\n\t\t\t\t\t:title=\"t('settings', 'Your apps')\" />\n\t\t\t\t<AppNavigationItem\n\t\t\t\t\tid=\"app-category-enabled\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'enabled' } }\"\n\t\t\t\t\ticon=\"icon-category-enabled\"\n\t\t\t\t\t:title=\"t('settings', 'Active apps')\" />\n\t\t\t\t<AppNavigationItem\n\t\t\t\t\tid=\"app-category-disabled\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'disabled' } }\"\n\t\t\t\t\ticon=\"icon-category-disabled\"\n\t\t\t\t\t:title=\"t('settings', 'Disabled apps')\" />\n\t\t\t\t<AppNavigationItem\n\t\t\t\t\tv-if=\"updateCount > 0\"\n\t\t\t\t\tid=\"app-category-updates\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'updates' } }\"\n\t\t\t\t\ticon=\"icon-download\"\n\t\t\t\t\t:title=\"t('settings', 'Updates')\">\n\t\t\t\t\t<AppNavigationCounter slot=\"counter\">\n\t\t\t\t\t\t{{ updateCount }}\n\t\t\t\t\t</AppNavigationCounter>\n\t\t\t\t</AppNavigationItem>\n\t\t\t\t<AppNavigationItem\n\t\t\t\t\tid=\"app-category-your-bundles\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'app-bundles' } }\"\n\t\t\t\t\ticon=\"icon-category-app-bundles\"\n\t\t\t\t\t:title=\"t('settings', 'App bundles')\" />\n\n\t\t\t\t<AppNavigationSpacer />\n\n\t\t\t\t<!-- App store categories -->\n\t\t\t\t<template v-if=\"settings.appstoreEnabled\">\n\t\t\t\t\t<AppNavigationItem\n\t\t\t\t\t\tid=\"app-category-featured\"\n\t\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'featured' } }\"\n\t\t\t\t\t\ticon=\"icon-favorite\"\n\t\t\t\t\t\t:title=\"t('settings', 'Featured apps')\" />\n\n\t\t\t\t\t<AppNavigationItem\n\t\t\t\t\t\tv-for=\"cat in categories\"\n\t\t\t\t\t\t:key=\"'icon-category-' + cat.ident\"\n\t\t\t\t\t\t:icon=\"'icon-category-' + cat.ident\"\n\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\t\t\tparams: { category: cat.ident },\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:title=\"cat.displayName\" />\n\t\t\t\t</template>\n\n\t\t\t\t<AppNavigationItem\n\t\t\t\t\tid=\"app-developer-docs\"\n\t\t\t\t\thref=\"settings.developerDocumentation\"\n\t\t\t\t\t:title=\"t('settings', 'Developer documentation') + ' ↗'\" />\n\t\t\t</ul>\n\t\t</AppNavigation>\n\t\t<AppContent class=\"app-settings-content\" :class=\"{ 'icon-loading': loadingList }\">\n\t\t\t<AppList :category=\"category\" :app=\"currentApp\" :search=\"searchQuery\" />\n\t\t</AppContent>\n\t\t<AppSidebar v-if=\"id && currentApp\" @close=\"hideAppDetails\">\n\t\t\t<AppDetails :category=\"category\" :app=\"currentApp\" />\n\t\t</AppSidebar>\n\t</Content>\n</template>\n\n<script>\nimport AppContent from '@nextcloud/vue/dist/Components/AppContent'\nimport AppNavigation from '@nextcloud/vue/dist/Components/AppNavigation'\nimport AppNavigationCounter from '@nextcloud/vue/dist/Components/AppNavigationCounter'\nimport AppNavigationItem from '@nextcloud/vue/dist/Components/AppNavigationItem'\nimport AppNavigationSpacer from '@nextcloud/vue/dist/Components/AppNavigationSpacer'\nimport AppSidebar from '@nextcloud/vue/dist/Components/AppSidebar'\nimport Content from '@nextcloud/vue/dist/Components/Content'\nimport Vue from 'vue'\nimport VueLocalStorage from 'vue-localstorage'\n\nimport AppList from '../components/AppList'\nimport AppDetails from '../components/AppDetails'\n\nVue.use(VueLocalStorage)\n\nexport default {\n\tname: 'Apps',\n\tcomponents: {\n\t\tAppContent,\n\t\tAppDetails,\n\t\tAppList,\n\t\tAppNavigation,\n\t\tAppNavigationCounter,\n\t\tAppNavigationItem,\n\t\tAppNavigationSpacer,\n\t\tAppSidebar,\n\t\tContent,\n\t},\n\tprops: {\n\t\tcategory: {\n\t\t\ttype: String,\n\t\t\tdefault: 'installed',\n\t\t},\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tsearchQuery: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\tloading() {\n\t\t\treturn this.$store.getters.loading('categories')\n\t\t},\n\t\tloadingList() {\n\t\t\treturn this.$store.getters.loading('list')\n\t\t},\n\t\tcurrentApp() {\n\t\t\treturn this.apps.find(app => app.id === this.id)\n\t\t},\n\t\tcategories() {\n\t\t\treturn this.$store.getters.getCategories\n\t\t},\n\t\tapps() {\n\t\t\treturn this.$store.getters.getAllApps\n\t\t},\n\t\tupdateCount() {\n\t\t\treturn this.$store.getters.getUpdateCount\n\t\t},\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\t},\n\twatch: {\n\t\tcategory: function(val, old) {\n\t\t\tthis.setSearch('')\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tthis.$store.dispatch('getCategories')\n\t\tthis.$store.dispatch('getAllApps')\n\t\tthis.$store.dispatch('getGroups', { offset: 0, limit: 5 })\n\t\tthis.$store.commit('setUpdateCount', this.$store.getters.getServerData.updateCount)\n\t},\n\tmounted() {\n\t\t/**\n\t\t * Register search\n\t\t */\n\t\tthis.appSearch = new OCA.Search(this.setSearch, this.resetSearch)\n\t},\n\tmethods: {\n\t\tsetSearch(query) {\n\t\t\tthis.searchQuery = query\n\t\t},\n\t\tresetSearch() {\n\t\t\tthis.setSearch('')\n\t\t},\n\t\thideAppDetails() {\n\t\t\tthis.$router.push({\n\t\t\t\tname: 'apps-category',\n\t\t\t\tparams: { category: this.category },\n\t\t\t})\n\t\t},\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!./Apps.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!./Apps.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Apps.vue?vue&type=template&id=71d5083f&\"\nimport script from \"./Apps.vue?vue&type=script&lang=js&\"\nexport * from \"./Apps.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"],"sourceRoot":""} |